Signed-off-by: Eric Pouech eric.pouech@gmail.com
--- dlls/dbghelp/dbghelp.spec | 4 ++-- dlls/dbghelp/symbol.c | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 2 deletions(-)
diff --git a/dlls/dbghelp/dbghelp.spec b/dlls/dbghelp/dbghelp.spec index e96c2e0d3fd..474c172df67 100644 --- a/dlls/dbghelp/dbghelp.spec +++ b/dlls/dbghelp/dbghelp.spec @@ -77,8 +77,8 @@ @ stdcall SymFromAddrW(ptr int64 ptr ptr) @ stdcall SymFromIndex(long int64 long ptr) @ stdcall SymFromIndexW(long int64 long ptr) -@ stub SymFromInlineContext -@ stub SymFromInlineContextW +@ stdcall SymFromInlineContext(long int64 long ptr ptr) +@ stdcall SymFromInlineContextW(long int64 long ptr ptr) @ stdcall SymFromName(long str ptr) @ stdcall SymFromNameW(long wstr ptr) @ stub SymFromToken diff --git a/dlls/dbghelp/symbol.c b/dlls/dbghelp/symbol.c index 76c92414b89..f6fa5c8ab43 100644 --- a/dlls/dbghelp/symbol.c +++ b/dlls/dbghelp/symbol.c @@ -2503,3 +2503,40 @@ PWSTR WINAPI SymSetHomeDirectoryW(HANDLE hProcess, PCWSTR dir)
return NULL; } + +/****************************************************************** + * SymFromInlineContext (DBGHELP.@) + * + */ +BOOL WINAPI SymFromInlineContext(HANDLE hProcess, DWORD64 addr, ULONG inline_ctx, PDWORD64 disp, PSYMBOL_INFO si) +{ + FIXME("(%p, %#I64x, 0x%x, %p, %p): stub\n", hProcess, addr, inline_ctx, disp, si); + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} + +/****************************************************************** + * SymFromInlineContextW (DBGHELP.@) + * + */ +BOOL WINAPI SymFromInlineContextW(HANDLE hProcess, DWORD64 addr, ULONG inline_ctx, PDWORD64 disp, PSYMBOL_INFOW siW) +{ + PSYMBOL_INFO si; + unsigned len; + BOOL ret; + + TRACE("(%p, %#I64x, 0x%x, %p, %p)\n", hProcess, addr, inline_ctx, disp, siW); + + len = sizeof(*si) + siW->MaxNameLen * sizeof(WCHAR); + si = HeapAlloc(GetProcessHeap(), 0, len); + if (!si) return FALSE; + + si->SizeOfStruct = sizeof(*si); + si->MaxNameLen = siW->MaxNameLen; + if ((ret = SymFromInlineContext(hProcess, addr, inline_ctx, disp, si))) + { + copy_symbolW(siW, si); + } + HeapFree(GetProcessHeap(), 0, si); + return ret; +}