The information in this article applies to:
SUMMARYWhen loading a DLL with LoadLibrary(), an alternative to calling GetProcAddress() for each of your DLL entry points is to have the DLL initialization function initialize a global structure or array containing the addresses of these DLL entry points, then call a DLL function from your executable which will return the address of this structure or array to your executable. You can then call your DLL functions via the function pointers in this structure or array. MORE INFORMATION
The best place to initialize this structure or array of function pointers
would be in the DLL_PROCESS_ATTACH code of your DLL's main entry point. The
structure or array containing these function pointers must be declared as
either a global variable or as dynamically allocated memory (malloc(),
GlobalAlloc(), etc.) in your DLL in order for the executable to be able to
address this memory properly.
Q90530 Exporting Data From a DLLBe careful not to call these DLL functions via the function pointers after the DLL is unloaded via FreeLibrary(). After FreeLibrary() is called, these function pointer addresses are invalid and calling them will result in an access violation. This technique of returning pointers to DLL entry points is a supported technique and will work on all hardware platforms that Windows NT supports. Additional query words: 3.10 3.50
Keywords : kbDLL kbKernBase kbNTOS310 kbNTOS350 kbNTOS351 kbNTOS400 kbWinOS2000 kbWinOS95 kbDSupport kbGrpKernBase |
Last Reviewed: January 11, 2000 © 2000 Microsoft Corporation. All rights reserved. Terms of Use. |