[PATCH 05/14] [DbgHelp]: SymGetModuleInfoW64
Eric Pouech
eric.pouech at wanadoo.fr
Wed May 10 14:35:18 CDT 2006
- implemented SymGetModuleInfoW and SymGetModuleInfoW64
A+
---
dlls/dbghelp/dbghelp.spec | 4 +-
dlls/dbghelp/module.c | 81 +++++++++++++++++++++++++++++++++++++++++++++
include/dbghelp.h | 2 +
3 files changed, 84 insertions(+), 3 deletions(-)
diff --git a/dlls/dbghelp/dbghelp.spec b/dlls/dbghelp/dbghelp.spec
index 1f753db..9ec1802 100644
--- a/dlls/dbghelp/dbghelp.spec
+++ b/dlls/dbghelp/dbghelp.spec
@@ -83,8 +83,8 @@
@ stdcall SymGetModuleBase64(long double)
@ stdcall SymGetModuleInfo(long long ptr)
@ stdcall SymGetModuleInfo64(long double ptr)
-@ stub SymGetModuleInfoW
-@ stub SymGetModuleInfoW64
+@ stdcall SymGetModuleInfoW(long long ptr)
+@ stdcall SymGetModuleInfoW64(long double ptr)
@ stub SymGetOmapBlockBase
@ stdcall SymGetOptions()
@ stub SymGetScope
diff --git a/dlls/dbghelp/module.c b/dlls/dbghelp/module.c
index 6cc6c06..26b847a 100644
--- a/dlls/dbghelp/module.c
+++ b/dlls/dbghelp/module.c
@@ -661,6 +661,39 @@ BOOL WINAPI SymGetModuleInfo(HANDLE hPr
}
/******************************************************************
+ * SymGetModuleInfoW (DBGHELP.@)
+ *
+ */
+BOOL WINAPI SymGetModuleInfoW(HANDLE hProcess, DWORD dwAddr,
+ PIMAGEHLP_MODULEW ModuleInfo)
+{
+ IMAGEHLP_MODULE mi;
+ IMAGEHLP_MODULEW miw;
+
+ if (sizeof(miw) < ModuleInfo->SizeOfStruct) FIXME("Wrong size\n");
+
+ mi.SizeOfStruct = sizeof(mi);
+ if (!SymGetModuleInfo(hProcess, dwAddr, &mi)) return FALSE;
+
+ miw.SizeOfStruct = mi.SizeOfStruct;
+ miw.BaseOfImage = mi.BaseOfImage;
+ miw.ImageSize = mi.ImageSize;
+ miw.TimeDateStamp = mi.TimeDateStamp;
+ miw.CheckSum = mi.CheckSum;
+ miw.NumSyms = mi.NumSyms;
+ miw.SymType = mi.SymType;
+ MultiByteToWideChar(CP_ACP, 0, mi.ModuleName, -1,
+ miw.ModuleName, sizeof(miw.ModuleName) / sizeof(WCHAR));
+ MultiByteToWideChar(CP_ACP, 0, mi.ImageName, -1,
+ miw.ImageName, sizeof(miw.ImageName) / sizeof(WCHAR));
+ MultiByteToWideChar(CP_ACP, 0, mi.LoadedImageName, -1,
+ miw.LoadedImageName, sizeof(miw.LoadedImageName) / sizeof(WCHAR));
+ memcpy(ModuleInfo, &miw, ModuleInfo->SizeOfStruct);
+
+ return TRUE;
+}
+
+/******************************************************************
* SymGetModuleInfo64 (DBGHELP.@)
*
*/
@@ -720,6 +753,54 @@ BOOL WINAPI SymGetModuleInfo64(HANDLE h
return TRUE;
}
+/******************************************************************
+ * SymGetModuleInfoW64 (DBGHELP.@)
+ *
+ */
+BOOL WINAPI SymGetModuleInfoW64(HANDLE hProcess, DWORD64 dwAddr,
+ PIMAGEHLP_MODULEW64 ModuleInfo)
+{
+ IMAGEHLP_MODULE64 mi;
+ IMAGEHLP_MODULEW64 miw;
+
+ if (sizeof(miw) < ModuleInfo->SizeOfStruct) FIXME("Wrong size\n");
+
+ mi.SizeOfStruct = sizeof(mi);
+ if (!SymGetModuleInfo64(hProcess, dwAddr, &mi)) return FALSE;
+
+ miw.SizeOfStruct = mi.SizeOfStruct;
+ miw.BaseOfImage = mi.BaseOfImage;
+ miw.ImageSize = mi.ImageSize;
+ miw.TimeDateStamp = mi.TimeDateStamp;
+ miw.CheckSum = mi.CheckSum;
+ miw.NumSyms = mi.NumSyms;
+ miw.SymType = mi.SymType;
+ MultiByteToWideChar(CP_ACP, 0, mi.ModuleName, -1,
+ miw.ModuleName, sizeof(miw.ModuleName) / sizeof(WCHAR));
+ MultiByteToWideChar(CP_ACP, 0, mi.ImageName, -1,
+ miw.ImageName, sizeof(miw.ImageName) / sizeof(WCHAR));
+ MultiByteToWideChar(CP_ACP, 0, mi.LoadedImageName, -1,
+ miw.LoadedImageName, sizeof(miw.LoadedImageName) / sizeof(WCHAR));
+
+ miw.CVSig = mi.CVSig;
+ MultiByteToWideChar(CP_ACP, 0, mi.CVData, -1,
+ miw.CVData, sizeof(miw.CVData) / sizeof(WCHAR));
+ miw.PdbSig = mi.PdbSig;
+ miw.PdbSig70 = mi.PdbSig70;
+ miw.PdbAge = mi.PdbAge;
+ miw.PdbUnmatched = mi.PdbUnmatched;
+ miw.DbgUnmatched = mi.DbgUnmatched;
+ miw.LineNumbers = mi.LineNumbers;
+ miw.GlobalSymbols = mi.GlobalSymbols;
+ miw.TypeInfo = mi.TypeInfo;
+ miw.SourceIndexed = mi.SourceIndexed;
+ miw.Publics = mi.Publics;
+
+ memcpy(ModuleInfo, &miw, ModuleInfo->SizeOfStruct);
+
+ return TRUE;
+}
+
/***********************************************************************
* SymGetModuleBase (DBGHELP.@)
*/
diff --git a/include/dbghelp.h b/include/dbghelp.h
index 45916c1..b6ceaa8 100644
--- a/include/dbghelp.h
+++ b/include/dbghelp.h
@@ -172,7 +172,7 @@ typedef struct _IMAGEHLP_MODULE64
BOOL Publics;
} IMAGEHLP_MODULE64, *PIMAGEHLP_MODULE64;
-typedef struct _IMAGEHLP_MODULE64W
+typedef struct _IMAGEHLP_MODULEW64
{
DWORD SizeOfStruct;
DWORD64 BaseOfImage;
More information about the wine-patches
mailing list