Calling a Win32 DLL from a Win16 App on Win32sLast reviewed: April 7, 1997Article ID: Q97785 |
1.10 1.20 1.30 1.30a 1.30c
WINDOWS
kbprg
The information in this article applies to:
SUMMARYA 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):
MORE INFORMATIONThe 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
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |