X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c118a47691b0017042d07601a9d9a1eb6cf5f7f7..eea4d01c65f9b29baa1193db762b4c6b8144af24:/src/msw/dlmsw.cpp diff --git a/src/msw/dlmsw.cpp b/src/msw/dlmsw.cpp index ea04a1ae19..cdff7387ab 100644 --- a/src/msw/dlmsw.cpp +++ b/src/msw/dlmsw.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: msw/dlmsw.cpp +// Name: src/msw/dlmsw.cpp // Purpose: Win32-specific part of wxDynamicLibrary and related classes // Author: Vadim Zeitlin // Modified by: @@ -79,16 +79,6 @@ public: wxVersionDLL *verDLL; }; - // the declared type of the first EnumModulesProc() parameter changed in - // recent SDK versions and is no PCSTR instead of old PSTR, we know that - // it's const in version 11 and non-const in version 8 included with VC8 - // (and earlier), suppose that it's only changed in version 11 - #if defined(API_VERSION_NUMBER) && API_VERSION_NUMBER >= 11 - typedef PCSTR NameStr_t; - #else - typedef PSTR NameStr_t; - #endif - // TODO: fix EnumerateLoadedModules() to use EnumerateLoadedModules64() #ifdef __WIN64__ typedef DWORD64 DWORD_32_64; @@ -97,7 +87,7 @@ public: #endif static BOOL CALLBACK - EnumModulesProc(NameStr_t name, DWORD_32_64 base, ULONG size, void *data); + EnumModulesProc(PCSTR name, DWORD_32_64 base, ULONG size, void *data); }; // ============================================================================ @@ -184,7 +174,7 @@ wxString wxVersionDLL::GetFileVersion(const wxString& filename) const /* static */ BOOL CALLBACK -wxDynamicLibraryDetailsCreator::EnumModulesProc(NameStr_t name, +wxDynamicLibraryDetailsCreator::EnumModulesProc(PCSTR name, DWORD_32_64 base, ULONG size, void *data) @@ -280,9 +270,15 @@ wxDynamicLibraryDetailsArray wxDynamicLibrary::ListLoaded() params.dlls = &dlls; params.verDLL = &verDLL; + // Note that the cast of EnumModulesProc is needed because the type of + // PENUMLOADED_MODULES_CALLBACK changed: in old SDK versions its first + // argument was non-const PSTR while now it's PCSTR. By explicitly + // casting to whatever the currently used headers require we ensure + // that the code compilers in any case. if ( !wxDbgHelpDLL::EnumerateLoadedModules ( ::GetCurrentProcess(), + (PENUMLOADED_MODULES_CALLBACK) wxDynamicLibraryDetailsCreator::EnumModulesProc, ¶ms ) ) @@ -296,7 +292,7 @@ wxDynamicLibraryDetailsArray wxDynamicLibrary::ListLoaded() } /* static */ -HMODULE wxDynamicLibrary::MSWGetModuleHandle(const char *name, void *addr) +WXHMODULE wxDynamicLibrary::MSWGetModuleHandle(const char *name, void *addr) { // we want to use GetModuleHandleEx() instead of usual GetModuleHandle() // because the former works correctly for comctl32.dll while the latter