Eric Pouech : dbghelp: Implemented SymSearchW.

Alexandre Julliard julliard at wine.codeweavers.com
Thu May 11 05:56:23 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: c25d3ac7d5e7222ca3be1b6a338030d273c0876c
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=c25d3ac7d5e7222ca3be1b6a338030d273c0876c

Author: Eric Pouech <eric.pouech at wanadoo.fr>
Date:   Wed May 10 21:35:44 2006 +0200

dbghelp: Implemented SymSearchW.

---

 dlls/dbghelp/dbghelp.spec |    2 +-
 dlls/dbghelp/symbol.c     |   35 +++++++++++++++++++++++++++++++++++
 include/dbghelp.h         |    1 +
 3 files changed, 37 insertions(+), 1 deletions(-)

diff --git a/dlls/dbghelp/dbghelp.spec b/dlls/dbghelp/dbghelp.spec
index a59ca40..b15aae7 100644
--- a/dlls/dbghelp/dbghelp.spec
+++ b/dlls/dbghelp/dbghelp.spec
@@ -134,7 +134,7 @@
 @ stdcall SymRegisterFunctionEntryCallback(ptr ptr ptr)
 @ stdcall SymRegisterFunctionEntryCallback64(ptr ptr double)
 @ stdcall SymSearch(long double long long str double ptr ptr long)
-@ stub SymSearchW
+@ stdcall SymSearchW(long double long long wstr double ptr ptr long)
 @ stdcall SymSetContext(long ptr ptr)
 @ stub SymSetHomeDirectory
 @ stub SymSetHomeDirectoryW
diff --git a/dlls/dbghelp/symbol.c b/dlls/dbghelp/symbol.c
index add5be6..a218188 100644
--- a/dlls/dbghelp/symbol.c
+++ b/dlls/dbghelp/symbol.c
@@ -1538,3 +1538,38 @@ BOOL WINAPI SymSearch(HANDLE hProcess, U
 
     return sym_enum(hProcess, BaseOfDll, Mask, &se);
 }
+
+/******************************************************************
+ *		SymSearchW (DBGHELP.@)
+ */
+BOOL WINAPI SymSearchW(HANDLE hProcess, ULONG64 BaseOfDll, DWORD Index,
+                       DWORD SymTag, PCWSTR Mask, DWORD64 Address,
+                       PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback,
+                       PVOID UserContext, DWORD Options)
+{
+    struct sym_enumW    sew;
+    BOOL                ret = FALSE;
+    char*               maskA = NULL;
+
+    TRACE("(%p %s %lu %lu %s %s %p %p %lx)\n",
+          hProcess, wine_dbgstr_longlong(BaseOfDll), Index, SymTag, debugstr_w(Mask), 
+          wine_dbgstr_longlong(Address), EnumSymbolsCallback,
+          UserContext, Options);
+
+    sew.ctx = UserContext;
+    sew.cb = EnumSymbolsCallback;
+    sew.sym_info = (PSYMBOL_INFOW)sew.buffer;
+
+    if (Mask)
+    {
+        unsigned len = WideCharToMultiByte(CP_ACP, 0, Mask, -1, NULL, 0, NULL, NULL);
+        maskA = HeapAlloc(GetProcessHeap(), 0, len);
+        if (!maskA) return FALSE;
+        WideCharToMultiByte(CP_ACP, 0, Mask, -1, maskA, len, NULL, NULL);
+    }
+    ret = SymSearch(hProcess, BaseOfDll, Index, SymTag, maskA, Address,
+                    sym_enumW, &sew, Options);
+    HeapFree(GetProcessHeap(), 0, maskA);
+
+    return ret;
+}
diff --git a/include/dbghelp.h b/include/dbghelp.h
index b8a5c38..27eb7d9 100644
--- a/include/dbghelp.h
+++ b/include/dbghelp.h
@@ -942,6 +942,7 @@ DWORD WINAPI UnDecorateSymbolName(LPCSTR
 BOOL WINAPI SymMatchString(PCSTR, PCSTR, BOOL);
 BOOL WINAPI SymMatchStringW(PCWSTR, PCWSTR, BOOL);
 BOOL WINAPI SymSearch(HANDLE, ULONG64, DWORD, DWORD, PCSTR, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID, DWORD);
+BOOL WINAPI SymSearchW(HANDLE, ULONG64, DWORD, DWORD, PCWSTR, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID, DWORD);
 DWORD WINAPI UnDecorateSymbolName(PCSTR, PSTR, DWORD, DWORD);
 BOOL WINAPI SymGetScope(HANDLE, ULONG64, DWORD, PSYMBOL_INFO);
 BOOL WINAPI SymFromIndex(HANDLE, ULONG64, DWORD, PSYMBOL_INFO);




More information about the wine-cvs mailing list