ID: Q97785
1.10 1.20 1.30 1.30a 1.30c WINDOWS kbprg
The information in this article applies to:
A Windows version 3.1 application can call a Win32 dynamic-link library (DLL) under Win32s using Universal Thunks.
The following are required components (in addition to the Windows 3.1 application and the Win32 DLL):
The following diagram illustrates how the pieces fit together:
----------- ----------- ---------
| Win32 EXE |-->| Win32 DLL |<->| Win32 |
32-bit | (stub) | | (UT) | | DLL |
----------- ----------- ---------
/|\ /|\
-----------------|--------|-------------------------
| \|/
--------- ------------
| Win 3.1 |<->| 16-bit DLL |
16-bit | app. | | (UT) |
--------- ------------
The load order is as follows: The Windows 3.1 application loads the 16-bit
DLL. The 16-bit DLL checks to see whether the 32-bit side has been
initialized. If it has not been initialized, then the DLL spawns the 32-bit
EXE (stub), which then loads the 32-bit DLL that sets up the Universal
Thunks with the 16-bit DLL. Once all of the components are loaded and
initialized, when the Windows 3.x application calls an entry point in the
16-bit DLL, the 16-bit DLL uses the 32-bit Universal Thunk callback to pass
the data over to the 32-bit side. Once the call has been received on the
32-bit side, the proper Win32 DLL entry point can be called.
Note that the components labeled Win32 DLL (UT) and Win32 DLL in the diagram above can be contained in the same Win32 DLL. Remember that the code in the Win32 DLL (UT) portion isn't supported under Windows NT, so this code must be special-cased if the DLLs are combined.
For more information on Universal Thunks, please see the "Win32s Programmer's Reference" and the documentation for the UTRegister() API.
KBCategory: kbprg KBSubcategory: W32s Additional reference words: 1.10 1.20 1.30 1.30a 1.30c reverse universal thunk rut
Keywords : kbWin32s kbThunk
Version : 1.10 1.20 1.30 1.30a 1.30c
Platform : WINDOWS
Last Reviewed: April 9, 1997