Module: wine Branch: refs/heads/master Commit: 5c8b22f385b8b87116294cf6f8cdabc5c779d01a URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=5c8b22f385b8b87116294cf6...
Author: Robert Shearman rob@codeweavers.com Date: Tue Jul 25 10:35:49 2006 +0100
dbghelp: Implement SymGetSymFromAddr64.
---
dlls/dbghelp/dbghelp.spec | 2 +- dlls/dbghelp/symbol.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletions(-)
diff --git a/dlls/dbghelp/dbghelp.spec b/dlls/dbghelp/dbghelp.spec index ca688ee..8457a35 100644 --- a/dlls/dbghelp/dbghelp.spec +++ b/dlls/dbghelp/dbghelp.spec @@ -99,7 +99,7 @@ @ stub SymGetSourceVarFromToken @ stub SymGetSourceVarFromTokenW @ stdcall SymGetSymFromAddr(long long ptr ptr) -@ stub SymGetSymFromAddr64 +@ stdcall SymGetSymFromAddr64(long long long ptr ptr) @ stdcall SymGetSymFromName(long str ptr) @ stub SymGetSymFromName64 @ stdcall SymGetSymNext(long ptr) diff --git a/dlls/dbghelp/symbol.c b/dlls/dbghelp/symbol.c index 2d1e4ed..d93bdd2 100644 --- a/dlls/dbghelp/symbol.c +++ b/dlls/dbghelp/symbol.c @@ -1046,6 +1046,34 @@ BOOL WINAPI SymGetSymFromAddr(HANDLE hPr return TRUE; }
+/****************************************************************** + * SymGetSymFromAddr64 (DBGHELP.@) + * + */ +BOOL WINAPI SymGetSymFromAddr64(HANDLE hProcess, DWORD64 Address, + PDWORD64 Displacement, PIMAGEHLP_SYMBOL64 Symbol) +{ + char buffer[sizeof(SYMBOL_INFO) + MAX_SYM_NAME]; + SYMBOL_INFO*si = (SYMBOL_INFO*)buffer; + size_t len; + DWORD64 Displacement64; + + if (Symbol->SizeOfStruct < sizeof(*Symbol)) return FALSE; + si->SizeOfStruct = sizeof(*si); + si->MaxNameLen = MAX_SYM_NAME; + if (!SymFromAddr(hProcess, Address, &Displacement64, si)) + return FALSE; + + if (Displacement) + *Displacement = Displacement64; + Symbol->Address = si->Address; + Symbol->Size = si->Size; + Symbol->Flags = si->Flags; + len = min(Symbol->MaxNameLength, si->MaxNameLen); + lstrcpynA(Symbol->Name, si->Name, len); + return TRUE; +} + static BOOL find_name(struct process* pcs, struct module* module, const char* name, SYMBOL_INFO* symbol) {