Getting Resources from 16-Bit DLLs Under Win32s

Last reviewed: November 2, 1995
Article ID: Q105761
The information in this article applies to:
  • Microsoft Win32s versions 1.0, 1.1, and 1.2

A Win32-based application running under Win32s can load a 16-bit dynamic- link library (DLL) using LoadLibrary() and free it with FreeLibrary(). This behavior is allowed primarily so that GetProcAddress() can be called for printer driver application programming interfaces (APIs).

Calling FindResource() with the handle that LoadLibrary() returns to the DLL that it just loaded results in an access violation. However, the Win32-based application can use the following APIs with this handle

   LoadBitmap
   LoadCursor
   LoadIcon

because this results in USER.EXE (16-bit) making calls to KERNEL.EXE.

If you go through a Universal Thunk to get raw resource data from the 16-bit DLL, it is necessary to convert the resource to 32-bit format, because the resource format is different from the 16-bit format. The 32-bit format is described in the Software Development Kit (SDK) file DOC\SDK\FILEFRMT\RESFMT.TXT.

To determine whether a DLL is a 32-bit or 16-bit DLL, check the DLL header. The DWORD at offset 0x3C indicates where to look for the PE signature. Compare the 4 bytes there to 0x00004550 to determine whether this is a Win32 DLL.


Additional reference words: 1.00 1.10 1.20
KBCategory: kbprg
KBSubcategory: W32s


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: November 2, 1995
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.