Select the product you need help with
Jak volání 16bitový kód z 32bitové kódu v systému Windows 95, Windows 98 a Windows MEID článku: 155763 - Produkty, které se vztahují k tomuto článku. Na této stránceSouhrnJako vývojář můžete přístup funkce poskytované dynamická knihovna 16 bitů (DLL) z aplikace Win32. To platí zejména při nemáte zdrojový kód pro DLL, že port k Win32. Tento článek pojednává o mechanismus, podle kterého dll 32bitová volání 16bitových dll. Mechanismus je volána thunk a metoda implementována v části Microsoft Windows 95, Windows 98 a Windows ME se nazývá nestrukturované thunk. Následující část popisuje tři hlavní kroky účastní vytváření plochý thunk:
Další informacePlochý thunk se skládá z 32bitové a 16bitové DLL, které spolupracují. Aplikace typu Win32 volání DLL 32bitové a 32bitové DLL volá exportovaná funkce v DLL 16 bitů. Vrátí funkce v DLL 16bitového vrátí zpět do 32bitové DLL, které zase vrátí zpět do aplikace typu Win32. 32Bitové a 16bitové dll práci voláním jádrech 95 32bitové verze systému Windows a 16bitové zpracovávat všechny podrobnosti nižší úrovně, které je nutné provést přechod z 32bitového do 16bitového kódu a zpět. Navrhování nových plochý thunk zahrnuje vytvoření skriptu thunk (.thk soubor). Tento skript je zkompilován s kompilátorem jádro souboru sestavení jazyk, který je potom sestaven dvakrát; jednou s každou dva příznaky - DIS_32 a - DIS_16. Umožňuje vytvořit objekt 16bitové a 32bitové moduly. Tyto moduly objektu jsou propojeny v DLL 32bitové a 16bitové, respektive. Následující diagram shrnuje soubory zahrnuté v budově dll:
+------------+
| 32to16.thk |
+------------+
|
+------------+
| 32to16.asm |
+------------+
/ \
-DIS_32 / \ -DIS_16
/ \
+-----------+ +-----------+
| 32THK.obj | | 16THK.obj |
+-----------+ +-----------+
/ \
+-------+ +-------+ +-------+
| APP32 | -> | DLL32 | -- THUNK -- | DLL16 |
+-------+ +-------+ +-------+
Nástroje potřebné k tvorbě Flat Thunks
Vytváření skriptů jádroPotřebujete vytvořit skript, který lze použít k vytvoření thunk kompilátorem jádro. Thunk skript je textový soubor obsahující definice typu prototypy funkce funkcí, které chcete volat prostřednictvím thunks a specifikace směr parametry pro jednotlivé funkce. Například některé funkce vyžadují vstupní a výstupní parametry, zatímco jiné pouze může vyžadovat vstupní parametry. Skripty thunk použít speciální syntaxi popsat, zda jsou parametry vstupní, výstupní, nebo vstup i výstup.Thunk skriptu pro 32-> 16 thunks začíná následující příkaz: enablemapdirect3216 = true; Kompilátor jádro očekává, že je 32bitové straně thunk deklarován jako __stdcall a 16bitové straně je __far __pascal. (Deklarace WINAPI činnostem to na obou stranách.) __Cdecl a __fastcall konvence volání nejsou podporovány kompilátorem jádro. Upozorňujeme však, kompilátor jádro __far, __pascal nebo __stdcall klíčová slova skutečně nepřijímá; jejich předpokládá. Následující příklad ukazuje thunk skriptu pro funkci nemá žádné parametry: C language: void WINAPI MyThunk16(void); C++ language: extern "C" void WINAPI MyThunk16(); Následující skript thunk používá složitější typy parametrů jako například struktur. Tento příklad také ukazuje, jak určit vstupní a výstupní parametry. Pomocí kompilátoru jádroKompilátor využití jádro je následující:thunk.exe/možnosti <inputfile>-o <outputfile> Na příkazovém řádku následující příkaz ukazuje, jak kompilovat 32-> 16 thunk skriptu. Tento řádek trvá thunk skript s názvem 32to16.thk a vytvoří soubor sestavení jazyk s názvem 32to16.asm. thunk -t thk 32to16.thk -o 32to16.asm "-T thk" možnost informuje kompilátor jádro k předponu funkce thunk v sestavení jazyk souboru s "thk_" Tato předpona se používá při propojování více skriptů thunk do dvojice dll a je užitečné při vytváření dvojici dll, které obsahují obě 32-> 16 a 16-> 32 thunks. Každý skript thunk by měl mít jedinečnou předponu. Vytváření DLL 32bitové
Vytváření 16bitové DLL
OdkazyInformace o ladění plochý thunks naleznete v následujícím článku databáze Microsoft Knowledge Base: 133722
(http://support.microsoft.com/kb/133722/EN-US/
)
Jak Debug Flat Thunks VlastnostiID článku: 155763 - Poslední aktualizace: 11. července 2005 - Revize: 2.3 Informace v tomto článku jsou určeny pro produkt:
Strojově přeložený článek Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum. Projděte si také anglickou verzi článku:155763
(http://support.microsoft.com/kb/155763/en-us/
)
|




Zpět nahoru








