// Name: src/msw/dlmsw.cpp
// Purpose: Win32-specific part of wxDynamicLibrary and related classes
// Author: Vadim Zeitlin
-// Modified by: Suzumizaki-kimitaka 2013-04-09
+// Modified by:
// Created: 2005-01-10 (partly extracted from common/dynlib.cpp)
// Copyright: (c) 1998-2005 Vadim Zeitlin <vadim@wxwindows.org>
// Licence: wxWindows licence
#include "wx/msw/debughlp.h"
#include "wx/filename.h"
-// defined for TDM's GCC/mingw32
-#ifndef PCTSTR
-#define PCTSTR LPCTSTR
-#endif
-
// ----------------------------------------------------------------------------
// private classes
// ----------------------------------------------------------------------------
wxVersionDLL *verDLL;
};
+ // TODO: fix EnumerateLoadedModules() to use EnumerateLoadedModules64()
+ #ifdef __WIN64__
+ typedef DWORD64 DWORD_32_64;
+ #else
+ typedef DWORD DWORD_32_64;
+ #endif
+
static BOOL CALLBACK
- EnumModulesProc(PCTSTR name, DWORD64 base, ULONG size, PVOID data);
+ EnumModulesProc(PCSTR name, DWORD_32_64 base, ULONG size, void *data);
};
// ============================================================================
#endif // UNICODE/ANSI
#define LOAD_VER_FUNCTION(name) \
- m_pfn ## name = (name ## _t)m_dll.GetSymbol(wxT(#name SUFFIX)); \
+ m_pfn ## name = (name ## _t)m_dll.GetSymbol(wxT(#name SUFFIX)); \
if ( !m_pfn ## name ) \
{ \
m_dll.Unload(); \
/* static */
BOOL CALLBACK
-wxDynamicLibraryDetailsCreator::EnumModulesProc(PCTSTR name,
- DWORD64 base,
+wxDynamicLibraryDetailsCreator::EnumModulesProc(PCSTR name,
+ DWORD_32_64 base,
ULONG size,
- PVOID data)
+ void *data)
{
EnumModulesProcParams *params = (EnumModulesProcParams *)data;
wxDynamicLibraryDetails *details = new wxDynamicLibraryDetails;
// fill in simple properties
-#ifdef UNICODE
details->m_name = name;
-#else
- details->m_name = wxString(name, wxConvLocal);
-#endif
details->m_address = wxUIntToPtr(base);
details->m_length = size;
params.dlls = &dlls;
params.verDLL = &verDLL;
- if ( !wxDbgHelpDLL::EnumerateLoadedModulesT
+ // 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
) )
{
- wxLogLastError(wxT("EnumerateLoadedModulesT"));
+ wxLogLastError(wxT("EnumerateLoadedModules"));
}
}
#endif // wxUSE_DBGHELP