[PATCH] dbgeng: Update stub to IDebugSymbols3.

Nikolay Sivov nsivov at codeweavers.com
Fri Apr 12 10:01:29 CDT 2019


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 dlls/dbgeng/dbgeng.c | 795 +++++++++++++++++++++++++++++++++++++++----
 1 file changed, 733 insertions(+), 62 deletions(-)

diff --git a/dlls/dbgeng/dbgeng.c b/dlls/dbgeng/dbgeng.c
index f9faef06dd..c54d13f6cd 100644
--- a/dlls/dbgeng/dbgeng.c
+++ b/dlls/dbgeng/dbgeng.c
@@ -46,7 +46,7 @@ struct debug_client
 {
     IDebugClient IDebugClient_iface;
     IDebugDataSpaces IDebugDataSpaces_iface;
-    IDebugSymbols IDebugSymbols_iface;
+    IDebugSymbols3 IDebugSymbols3_iface;
     IDebugControl2 IDebugControl2_iface;
     LONG refcount;
     ULONG engine_options;
@@ -64,9 +64,9 @@ static struct debug_client *impl_from_IDebugDataSpaces(IDebugDataSpaces *iface)
     return CONTAINING_RECORD(iface, struct debug_client, IDebugDataSpaces_iface);
 }
 
-static struct debug_client *impl_from_IDebugSymbols(IDebugSymbols *iface)
+static struct debug_client *impl_from_IDebugSymbols3(IDebugSymbols3 *iface)
 {
-    return CONTAINING_RECORD(iface, struct debug_client, IDebugSymbols_iface);
+    return CONTAINING_RECORD(iface, struct debug_client, IDebugSymbols3_iface);
 }
 
 static struct debug_client *impl_from_IDebugControl2(IDebugControl2 *iface)
@@ -89,9 +89,11 @@ static HRESULT STDMETHODCALLTYPE debugclient_QueryInterface(IDebugClient *iface,
     {
         *obj = &debug_client->IDebugDataSpaces_iface;
     }
-    else if (IsEqualIID(riid, &IID_IDebugSymbols))
+    else if (IsEqualIID(riid, &IID_IDebugSymbols)
+             || IsEqualIID(riid, &IID_IDebugSymbols2)
+             || IsEqualIID(riid, &IID_IDebugSymbols3))
     {
-        *obj = &debug_client->IDebugSymbols_iface;
+        *obj = &debug_client->IDebugSymbols3_iface;
     }
     else if (IsEqualIID(riid, &IID_IDebugControl2)
             || IsEqualIID(riid, &IID_IDebugControl))
@@ -766,56 +768,56 @@ static const IDebugDataSpacesVtbl debugdataspacesvtbl =
     debugdataspaces_ReadProcessorSystemData,
 };
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_QueryInterface(IDebugSymbols *iface, REFIID riid, void **obj)
+static HRESULT STDMETHODCALLTYPE debugsymbols_QueryInterface(IDebugSymbols3 *iface, REFIID riid, void **obj)
 {
-    struct debug_client *debug_client = impl_from_IDebugSymbols(iface);
+    struct debug_client *debug_client = impl_from_IDebugSymbols3(iface);
     IUnknown *unk = (IUnknown *)&debug_client->IDebugClient_iface;
     return IUnknown_QueryInterface(unk, riid, obj);
 }
 
-static ULONG STDMETHODCALLTYPE debugsymbols_AddRef(IDebugSymbols *iface)
+static ULONG STDMETHODCALLTYPE debugsymbols_AddRef(IDebugSymbols3 *iface)
 {
-    struct debug_client *debug_client = impl_from_IDebugSymbols(iface);
+    struct debug_client *debug_client = impl_from_IDebugSymbols3(iface);
     IUnknown *unk = (IUnknown *)&debug_client->IDebugClient_iface;
     return IUnknown_AddRef(unk);
 }
 
-static ULONG STDMETHODCALLTYPE debugsymbols_Release(IDebugSymbols *iface)
+static ULONG STDMETHODCALLTYPE debugsymbols_Release(IDebugSymbols3 *iface)
 {
-    struct debug_client *debug_client = impl_from_IDebugSymbols(iface);
+    struct debug_client *debug_client = impl_from_IDebugSymbols3(iface);
     IUnknown *unk = (IUnknown *)&debug_client->IDebugClient_iface;
     return IUnknown_Release(unk);
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolOptions(IDebugSymbols *iface, ULONG *options)
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolOptions(IDebugSymbols3 *iface, ULONG *options)
 {
     FIXME("%p, %p stub.\n", iface, options);
 
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_AddSymbolOptions(IDebugSymbols *iface, ULONG options)
+static HRESULT STDMETHODCALLTYPE debugsymbols_AddSymbolOptions(IDebugSymbols3 *iface, ULONG options)
 {
     FIXME("%p, %#x stub.\n", iface, options);
 
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_RemoveSymbolOptions(IDebugSymbols *iface, ULONG options)
+static HRESULT STDMETHODCALLTYPE debugsymbols_RemoveSymbolOptions(IDebugSymbols3 *iface, ULONG options)
 {
     FIXME("%p, %#x stub.\n", iface, options);
 
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_SetSymbolOptions(IDebugSymbols *iface, ULONG options)
+static HRESULT STDMETHODCALLTYPE debugsymbols_SetSymbolOptions(IDebugSymbols3 *iface, ULONG options)
 {
     FIXME("%p, %#x stub.\n", iface, options);
 
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_GetNameByOffset(IDebugSymbols *iface, ULONG64 offset, char *buffer,
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetNameByOffset(IDebugSymbols3 *iface, ULONG64 offset, char *buffer,
         ULONG buffer_size, ULONG *name_size, ULONG64 *displacement)
 {
     FIXME("%p, %s, %p, %u, %p, %p stub.\n", iface, wine_dbgstr_longlong(offset), buffer, buffer_size,
@@ -824,7 +826,7 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_GetNameByOffset(IDebugSymbols *ifa
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_GetOffsetByName(IDebugSymbols *iface, const char *symbol,
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetOffsetByName(IDebugSymbols3 *iface, const char *symbol,
         ULONG64 *offset)
 {
     FIXME("%p, %s, %p stub.\n", iface, debugstr_a(symbol), offset);
@@ -832,7 +834,7 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_GetOffsetByName(IDebugSymbols *ifa
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_GetNearNameByOffset(IDebugSymbols *iface, ULONG64 offset, LONG delta,
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetNearNameByOffset(IDebugSymbols3 *iface, ULONG64 offset, LONG delta,
         char *buffer, ULONG buffer_size, ULONG *name_size, ULONG64 *displacement)
 {
     FIXME("%p, %s, %d, %p, %u, %p, %p stub.\n", iface, wine_dbgstr_longlong(offset), delta, buffer, buffer_size,
@@ -841,7 +843,7 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_GetNearNameByOffset(IDebugSymbols
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_GetLineByOffset(IDebugSymbols *iface, ULONG64 offset, ULONG *line,
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetLineByOffset(IDebugSymbols3 *iface, ULONG64 offset, ULONG *line,
         char *buffer, ULONG buffer_size, ULONG *file_size, ULONG64 *displacement)
 {
     FIXME("%p, %s, %p, %p, %u, %p, %p stub.\n", iface, wine_dbgstr_longlong(offset), line, buffer, buffer_size,
@@ -850,7 +852,7 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_GetLineByOffset(IDebugSymbols *ifa
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_GetOffsetByLine(IDebugSymbols *iface, ULONG line, const char *file,
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetOffsetByLine(IDebugSymbols3 *iface, ULONG line, const char *file,
         ULONG64 *offset)
 {
     FIXME("%p, %u, %s, %p stub.\n", iface, line, debugstr_a(file), offset);
@@ -858,21 +860,21 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_GetOffsetByLine(IDebugSymbols *ifa
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_GetNumberModules(IDebugSymbols *iface, ULONG *loaded, ULONG *unloaded)
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetNumberModules(IDebugSymbols3 *iface, ULONG *loaded, ULONG *unloaded)
 {
     FIXME("%p, %p, %p stub.\n", iface, loaded, unloaded);
 
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleByIndex(IDebugSymbols *iface, ULONG index, ULONG64 *base)
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleByIndex(IDebugSymbols3 *iface, ULONG index, ULONG64 *base)
 {
     FIXME("%p, %u, %p stub.\n", iface, index, base);
 
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleByModuleName(IDebugSymbols *iface, const char *name,
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleByModuleName(IDebugSymbols3 *iface, const char *name,
         ULONG start_index, ULONG *index, ULONG64 *base)
 {
     FIXME("%p, %s, %u, %p, %p stub.\n", iface, debugstr_a(name), start_index, index, base);
@@ -880,7 +882,7 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleByModuleName(IDebugSymbol
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleByOffset(IDebugSymbols *iface, ULONG64 offset,
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleByOffset(IDebugSymbols3 *iface, ULONG64 offset,
         ULONG start_index, ULONG *index, ULONG64 *base)
 {
     FIXME("%p, %s, %u, %p, %p stub.\n", iface, wine_dbgstr_longlong(offset), start_index, index, base);
@@ -888,7 +890,7 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleByOffset(IDebugSymbols *i
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleNames(IDebugSymbols *iface, ULONG index, ULONG64 base,
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleNames(IDebugSymbols3 *iface, ULONG index, ULONG64 base,
         char *image_name, ULONG image_name_buffer_size, ULONG *image_name_size, char *module_name,
         ULONG module_name_buffer_size, ULONG *module_name_size, char *loaded_image_name,
         ULONG loaded_image_name_buffer_size, ULONG *loaded_image_size)
@@ -900,7 +902,7 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleNames(IDebugSymbols *ifac
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleParameters(IDebugSymbols *iface, ULONG count, ULONG64 *bases,
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleParameters(IDebugSymbols3 *iface, ULONG count, ULONG64 *bases,
         ULONG start, DEBUG_MODULE_PARAMETERS *parameters)
 {
     FIXME("%p, %u, %p, %u, %p stub.\n", iface, count, bases, start, parameters);
@@ -908,14 +910,14 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleParameters(IDebugSymbols
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolModule(IDebugSymbols *iface, const char *symbol, ULONG64 *base)
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolModule(IDebugSymbols3 *iface, const char *symbol, ULONG64 *base)
 {
     FIXME("%p, %s, %p stub.\n", iface, debugstr_a(symbol), base);
 
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_GetTypeName(IDebugSymbols *iface, ULONG64 base, ULONG type_id,
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetTypeName(IDebugSymbols3 *iface, ULONG64 base, ULONG type_id,
         char *buffer, ULONG buffer_size, ULONG *name_size)
 {
     FIXME("%p, %s, %u, %p, %u, %p stub.\n", iface, wine_dbgstr_longlong(base), type_id, buffer,
@@ -924,7 +926,7 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_GetTypeName(IDebugSymbols *iface,
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_GetTypeId(IDebugSymbols *iface, ULONG64 base, const char *name,
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetTypeId(IDebugSymbols3 *iface, ULONG64 base, const char *name,
         ULONG *type_id)
 {
     FIXME("%p, %s, %s, %p stub.\n", iface, wine_dbgstr_longlong(base), debugstr_a(name), type_id);
@@ -932,7 +934,7 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_GetTypeId(IDebugSymbols *iface, UL
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_GetTypeSize(IDebugSymbols *iface, ULONG64 base, ULONG type_id,
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetTypeSize(IDebugSymbols3 *iface, ULONG64 base, ULONG type_id,
         ULONG *size)
 {
     FIXME("%p, %s, %u, %p stub.\n", iface, wine_dbgstr_longlong(base), type_id, size);
@@ -940,7 +942,7 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_GetTypeSize(IDebugSymbols *iface,
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_GetFieldOffset(IDebugSymbols *iface, ULONG64 base, ULONG type_id,
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetFieldOffset(IDebugSymbols3 *iface, ULONG64 base, ULONG type_id,
         const char *field, ULONG *offset)
 {
     FIXME("%p, %s, %u, %s, %p stub.\n", iface, wine_dbgstr_longlong(base), type_id, debugstr_a(field), offset);
@@ -948,7 +950,7 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_GetFieldOffset(IDebugSymbols *ifac
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolTypeId(IDebugSymbols *iface, const char *symbol, ULONG *type_id,
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolTypeId(IDebugSymbols3 *iface, const char *symbol, ULONG *type_id,
         ULONG64 *base)
 {
     FIXME("%p, %s, %p, %p stub.\n", iface, debugstr_a(symbol), type_id, base);
@@ -956,7 +958,7 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolTypeId(IDebugSymbols *ifa
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_GetOffsetTypeId(IDebugSymbols *iface, ULONG64 offset, ULONG *type_id,
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetOffsetTypeId(IDebugSymbols3 *iface, ULONG64 offset, ULONG *type_id,
         ULONG64 *base)
 {
     FIXME("%p, %s, %p, %p stub.\n", iface, wine_dbgstr_longlong(offset), type_id, base);
@@ -964,7 +966,7 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_GetOffsetTypeId(IDebugSymbols *ifa
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_ReadTypedDataVirtual(IDebugSymbols *iface, ULONG64 offset, ULONG64 base,
+static HRESULT STDMETHODCALLTYPE debugsymbols_ReadTypedDataVirtual(IDebugSymbols3 *iface, ULONG64 offset, ULONG64 base,
         ULONG type_id, void *buffer, ULONG buffer_size, ULONG *read_len)
 {
     FIXME("%p, %s, %s, %u, %p, %u, %p stub.\n", iface, wine_dbgstr_longlong(offset), wine_dbgstr_longlong(base),
@@ -973,7 +975,7 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_ReadTypedDataVirtual(IDebugSymbols
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_WriteTypedDataVirtual(IDebugSymbols *iface, ULONG64 offset, ULONG64 base,
+static HRESULT STDMETHODCALLTYPE debugsymbols_WriteTypedDataVirtual(IDebugSymbols3 *iface, ULONG64 offset, ULONG64 base,
         ULONG type_id, void *buffer, ULONG buffer_size, ULONG *written)
 {
     FIXME("%p, %s, %s, %u, %p, %u, %p stub.\n", iface, wine_dbgstr_longlong(offset), wine_dbgstr_longlong(base),
@@ -982,7 +984,7 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_WriteTypedDataVirtual(IDebugSymbol
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_OutputTypedDataVirtual(IDebugSymbols *iface, ULONG output_control,
+static HRESULT STDMETHODCALLTYPE debugsymbols_OutputTypedDataVirtual(IDebugSymbols3 *iface, ULONG output_control,
         ULONG64 offset, ULONG64 base, ULONG type_id, ULONG flags)
 {
     FIXME("%p, %#x, %s, %s, %u, %#x stub.\n", iface, output_control, wine_dbgstr_longlong(offset),
@@ -991,7 +993,7 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_OutputTypedDataVirtual(IDebugSymbo
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_ReadTypedDataPhysical(IDebugSymbols *iface, ULONG64 offset, ULONG64 base,
+static HRESULT STDMETHODCALLTYPE debugsymbols_ReadTypedDataPhysical(IDebugSymbols3 *iface, ULONG64 offset, ULONG64 base,
         ULONG type_id, void *buffer, ULONG buffer_size, ULONG *read_len)
 {
     FIXME("%p, %s, %s, %u, %p, %u, %p stub.\n", iface, wine_dbgstr_longlong(offset), wine_dbgstr_longlong(base),
@@ -1000,7 +1002,7 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_ReadTypedDataPhysical(IDebugSymbol
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_WriteTypedDataPhysical(IDebugSymbols *iface, ULONG64 offset,
+static HRESULT STDMETHODCALLTYPE debugsymbols_WriteTypedDataPhysical(IDebugSymbols3 *iface, ULONG64 offset,
         ULONG64 base, ULONG type_id, void *buffer, ULONG buffer_size, ULONG *written)
 {
     FIXME("%p, %s, %s, %u, %p, %u, %p stub.\n", iface, wine_dbgstr_longlong(offset), wine_dbgstr_longlong(base),
@@ -1009,7 +1011,7 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_WriteTypedDataPhysical(IDebugSymbo
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_OutputTypedDataPhysical(IDebugSymbols *iface, ULONG output_control,
+static HRESULT STDMETHODCALLTYPE debugsymbols_OutputTypedDataPhysical(IDebugSymbols3 *iface, ULONG output_control,
         ULONG64 offset, ULONG64 base, ULONG type_id, ULONG flags)
 {
     FIXME("%p, %#x, %s, %s, %u, %#x stub.\n", iface, output_control, wine_dbgstr_longlong(offset),
@@ -1018,7 +1020,7 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_OutputTypedDataPhysical(IDebugSymb
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_GetScope(IDebugSymbols *iface, ULONG64 *instr_offset,
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetScope(IDebugSymbols3 *iface, ULONG64 *instr_offset,
         DEBUG_STACK_FRAME *frame, void *scope_context, ULONG scope_context_size)
 {
     FIXME("%p, %p, %p, %p, %u stub.\n", iface, instr_offset, frame, scope_context, scope_context_size);
@@ -1026,7 +1028,7 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_GetScope(IDebugSymbols *iface, ULO
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_SetScope(IDebugSymbols *iface, ULONG64 instr_offset,
+static HRESULT STDMETHODCALLTYPE debugsymbols_SetScope(IDebugSymbols3 *iface, ULONG64 instr_offset,
         DEBUG_STACK_FRAME *frame, void *scope_context, ULONG scope_context_size)
 {
     FIXME("%p, %s, %p, %p, %u stub.\n", iface, wine_dbgstr_longlong(instr_offset), frame, scope_context,
@@ -1035,14 +1037,14 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_SetScope(IDebugSymbols *iface, ULO
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_ResetScope(IDebugSymbols *iface)
+static HRESULT STDMETHODCALLTYPE debugsymbols_ResetScope(IDebugSymbols3 *iface)
 {
     FIXME("%p stub.\n", iface);
 
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_GetScopeSymbolGroup(IDebugSymbols *iface, ULONG flags,
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetScopeSymbolGroup(IDebugSymbols3 *iface, ULONG flags,
         IDebugSymbolGroup *update, IDebugSymbolGroup **symbols)
 {
     FIXME("%p, %#x, %p, %p stub.\n", iface, flags, update, symbols);
@@ -1050,14 +1052,14 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_GetScopeSymbolGroup(IDebugSymbols
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_CreateSymbolGroup(IDebugSymbols *iface, IDebugSymbolGroup **group)
+static HRESULT STDMETHODCALLTYPE debugsymbols_CreateSymbolGroup(IDebugSymbols3 *iface, IDebugSymbolGroup **group)
 {
     FIXME("%p, %p stub.\n", iface, group);
 
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_StartSymbolMatch(IDebugSymbols *iface, const char *pattern,
+static HRESULT STDMETHODCALLTYPE debugsymbols_StartSymbolMatch(IDebugSymbols3 *iface, const char *pattern,
         ULONG64 *handle)
 {
     FIXME("%p, %s, %p stub.\n", iface, pattern, handle);
@@ -1065,7 +1067,7 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_StartSymbolMatch(IDebugSymbols *if
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_GetNextSymbolMatch(IDebugSymbols *iface, ULONG64 handle, char *buffer,
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetNextSymbolMatch(IDebugSymbols3 *iface, ULONG64 handle, char *buffer,
         ULONG buffer_size, ULONG *match_size, ULONG64 *offset)
 {
     FIXME("%p, %s, %p, %u, %p, %p stub.\n", iface, wine_dbgstr_longlong(handle), buffer, buffer_size, match_size, offset);
@@ -1073,21 +1075,21 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_GetNextSymbolMatch(IDebugSymbols *
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_EndSymbolMatch(IDebugSymbols *iface, ULONG64 handle)
+static HRESULT STDMETHODCALLTYPE debugsymbols_EndSymbolMatch(IDebugSymbols3 *iface, ULONG64 handle)
 {
     FIXME("%p, %s stub.\n", iface, wine_dbgstr_longlong(handle));
 
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_Reload(IDebugSymbols *iface, const char *path)
+static HRESULT STDMETHODCALLTYPE debugsymbols_Reload(IDebugSymbols3 *iface, const char *path)
 {
     FIXME("%p, %s stub.\n", iface, debugstr_a(path));
 
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolPath(IDebugSymbols *iface, char *buffer, ULONG buffer_size,
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolPath(IDebugSymbols3 *iface, char *buffer, ULONG buffer_size,
         ULONG *path_size)
 {
     FIXME("%p, %p, %u, %p stub.\n", iface, buffer, buffer_size, path_size);
@@ -1095,21 +1097,21 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolPath(IDebugSymbols *iface
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_SetSymbolPath(IDebugSymbols *iface, const char *path)
+static HRESULT STDMETHODCALLTYPE debugsymbols_SetSymbolPath(IDebugSymbols3 *iface, const char *path)
 {
     FIXME("%p, %s stub.\n", iface, debugstr_a(path));
 
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_AppendSymbolPath(IDebugSymbols *iface, const char *path)
+static HRESULT STDMETHODCALLTYPE debugsymbols_AppendSymbolPath(IDebugSymbols3 *iface, const char *path)
 {
     FIXME("%p, %s stub.\n", iface, debugstr_a(path));
 
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_GetImagePath(IDebugSymbols *iface, char *buffer, ULONG buffer_size,
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetImagePath(IDebugSymbols3 *iface, char *buffer, ULONG buffer_size,
         ULONG *path_size)
 {
     FIXME("%p, %p, %u, %p stub.\n", iface, buffer, buffer_size, path_size);
@@ -1117,21 +1119,21 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_GetImagePath(IDebugSymbols *iface,
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_SetImagePath(IDebugSymbols *iface, const char *path)
+static HRESULT STDMETHODCALLTYPE debugsymbols_SetImagePath(IDebugSymbols3 *iface, const char *path)
 {
     FIXME("%p, %s stub.\n", iface, debugstr_a(path));
 
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_AppendImagePath(IDebugSymbols *iface, const char *path)
+static HRESULT STDMETHODCALLTYPE debugsymbols_AppendImagePath(IDebugSymbols3 *iface, const char *path)
 {
     FIXME("%p, %s stub.\n", iface, debugstr_a(path));
 
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourcePath(IDebugSymbols *iface, char *buffer, ULONG buffer_size,
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourcePath(IDebugSymbols3 *iface, char *buffer, ULONG buffer_size,
         ULONG *path_size)
 {
     FIXME("%p, %p, %u, %p stub.\n", iface, buffer, buffer_size, path_size);
@@ -1139,7 +1141,7 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourcePath(IDebugSymbols *iface
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourcePathElement(IDebugSymbols *iface, ULONG index, char *buffer,
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourcePathElement(IDebugSymbols3 *iface, ULONG index, char *buffer,
         ULONG buffer_size, ULONG *element_size)
 {
     FIXME("%p, %u, %p, %u, %p stub.\n", iface, index, buffer, buffer_size, element_size);
@@ -1147,21 +1149,21 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourcePathElement(IDebugSymbols
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_SetSourcePath(IDebugSymbols *iface, const char *path)
+static HRESULT STDMETHODCALLTYPE debugsymbols_SetSourcePath(IDebugSymbols3 *iface, const char *path)
 {
     FIXME("%p, %s stub.\n", iface, debugstr_a(path));
 
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_AppendSourcePath(IDebugSymbols *iface, const char *path)
+static HRESULT STDMETHODCALLTYPE debugsymbols_AppendSourcePath(IDebugSymbols3 *iface, const char *path)
 {
     FIXME("%p, %s stub.\n", iface, debugstr_a(path));
 
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_FindSourceFile(IDebugSymbols *iface, ULONG start, const char *file,
+static HRESULT STDMETHODCALLTYPE debugsymbols_FindSourceFile(IDebugSymbols3 *iface, ULONG start, const char *file,
         ULONG flags, ULONG *found_element, char *buffer, ULONG buffer_size, ULONG *found_size)
 {
     FIXME("%p, %u, %s, %#x, %p, %p, %u, %p stub.\n", iface, start, debugstr_a(file), flags, found_element, buffer,
@@ -1170,7 +1172,7 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_FindSourceFile(IDebugSymbols *ifac
     return E_NOTIMPL;
 }
 
-static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourceFileLineOffsets(IDebugSymbols *iface, const char *file,
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourceFileLineOffsets(IDebugSymbols3 *iface, const char *file,
         ULONG64 *buffer, ULONG buffer_lines, ULONG *file_lines)
 {
     FIXME("%p, %s, %p, %u, %p stub.\n", iface, debugstr_a(file), buffer, buffer_lines, file_lines);
@@ -1178,7 +1180,600 @@ static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourceFileLineOffsets(IDebugSym
     return E_NOTIMPL;
 }
 
-static const IDebugSymbolsVtbl debugsymbolsvtbl =
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleVersionInformation(IDebugSymbols3 *iface, ULONG index,
+        ULONG64 base, const char *item, void *buffer, ULONG buffer_size, ULONG *info_size)
+{
+    FIXME("%p, %u, %s, %s, %p, %u, %p stub.\n", iface, index, wine_dbgstr_longlong(base), debugstr_a(item), buffer,
+            buffer_size, info_size);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleNameString(IDebugSymbols3 *iface, ULONG which, ULONG index,
+        ULONG64 base, char *buffer, ULONG buffer_size, ULONG *name_size)
+{
+    FIXME("%p, %u, %u, %s, %p, %u, %p stub.\n", iface, which, index, wine_dbgstr_longlong(base), buffer, buffer_size,
+            name_size);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetConstantName(IDebugSymbols3 *iface, ULONG64 module, ULONG type_id,
+        ULONG64 value, char *buffer, ULONG buffer_size, ULONG *name_size)
+{
+    FIXME("%p, %s, %u, %s, %p, %u, %p stub.\n", iface, wine_dbgstr_longlong(module), type_id,
+            wine_dbgstr_longlong(value), buffer, buffer_size, name_size);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetFieldName(IDebugSymbols3 *iface, ULONG64 module, ULONG type_id,
+        ULONG field_index, char *buffer, ULONG buffer_size, ULONG *name_size)
+{
+    FIXME("%p, %s, %u, %u, %p, %u, %p stub.\n", iface, wine_dbgstr_longlong(module), type_id, field_index, buffer,
+            buffer_size, name_size);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetTypeOptions(IDebugSymbols3 *iface, ULONG *options)
+{
+    FIXME("%p, %p stub.\n", iface, options);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_AddTypeOptions(IDebugSymbols3 *iface, ULONG options)
+{
+    FIXME("%p, %#x stub.\n", iface, options);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_RemoveTypeOptions(IDebugSymbols3 *iface, ULONG options)
+{
+    FIXME("%p, %#x stub.\n", iface, options);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_SetTypeOptions(IDebugSymbols3 *iface, ULONG options)
+{
+    FIXME("%p, %#x stub.\n", iface, options);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetNameByOffsetWide(IDebugSymbols3 *iface, ULONG64 offset, WCHAR *buffer,
+        ULONG buffer_size, ULONG *name_size, ULONG64 *displacement)
+{
+    FIXME("%p, %s, %p, %u, %p, %p stub.\n", iface, wine_dbgstr_longlong(offset), buffer, buffer_size, name_size,
+            displacement);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetOffsetByNameWide(IDebugSymbols3 *iface, const WCHAR *symbol,
+        ULONG64 *offset)
+{
+    FIXME("%p, %s, %p stub.\n", iface, debugstr_w(symbol), offset);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetNearNameByOffsetWide(IDebugSymbols3 *iface, ULONG64 offset,
+        LONG delta, WCHAR *buffer, ULONG buffer_size, ULONG *name_size, ULONG64 *displacement)
+{
+    FIXME("%p, %s, %d, %p, %u, %p, %p stub.\n", iface, wine_dbgstr_longlong(offset), delta, buffer, buffer_size,
+            name_size, displacement);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetLineByOffsetWide(IDebugSymbols3 *iface, ULONG64 offset, ULONG *line,
+        WCHAR *buffer, ULONG buffer_size, ULONG *file_size, ULONG64 *displacement)
+{
+    FIXME("%p, %s, %p, %p, %u, %p, %p stub.\n", iface, wine_dbgstr_longlong(offset), line, buffer, buffer_size,
+            file_size, displacement);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetOffsetByLineWide(IDebugSymbols3 *iface, ULONG line, const WCHAR *file,
+        ULONG64 *offset)
+{
+    FIXME("%p, %u, %s, %p stub.\n", iface, line, debugstr_w(file), offset);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleByModuleNameWide(IDebugSymbols3 *iface, const WCHAR *name,
+        ULONG start_index, ULONG *index, ULONG64 *base)
+{
+    FIXME("%p, %s, %u, %p, %p stub.\n", iface, debugstr_w(name), start_index, index, base);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolModuleWide(IDebugSymbols3 *iface, const WCHAR *symbol,
+        ULONG64 *base)
+{
+    FIXME("%p, %s, %p stub.\n", iface, debugstr_w(symbol), base);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetTypeNameWide(IDebugSymbols3 *iface, ULONG64 module, ULONG type_id,
+        WCHAR *buffer, ULONG buffer_size, ULONG *name_size)
+{
+    FIXME("%p, %s, %u, %p, %u, %p stub.\n", iface, wine_dbgstr_longlong(module), type_id, buffer, buffer_size,
+            name_size);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetTypeIdWide(IDebugSymbols3 *iface, ULONG64 module, const WCHAR *name,
+        ULONG *type_id)
+{
+    FIXME("%p, %s, %s, %p stub.\n", iface, wine_dbgstr_longlong(module), debugstr_w(name), type_id);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetFieldOffsetWide(IDebugSymbols3 *iface, ULONG64 module, ULONG type_id,
+        const WCHAR *field, ULONG *offset)
+{
+    FIXME("%p, %s, %u, %s, %p stub.\n", iface, wine_dbgstr_longlong(module), type_id, debugstr_w(field), offset);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolTypeIdWide(IDebugSymbols3 *iface, const WCHAR *symbol,
+        ULONG *type_id, ULONG64 *module)
+{
+    FIXME("%p, %s, %p, %p stub.\n", iface, debugstr_w(symbol), type_id, module);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetScopeSymbolGroup2(IDebugSymbols3 *iface, ULONG flags,
+        PDEBUG_SYMBOL_GROUP2 update, PDEBUG_SYMBOL_GROUP2 *symbols)
+{
+    FIXME("%p, %#x, %p, %p stub.\n", iface, flags, update, symbols);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_CreateSymbolGroup2(IDebugSymbols3 *iface, PDEBUG_SYMBOL_GROUP2 *group)
+{
+    FIXME("%p, %p stub.\n", iface, group);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_StartSymbolMatchWide(IDebugSymbols3 *iface, const WCHAR *pattern,
+        ULONG64 *handle)
+{
+    FIXME("%p, %s, %p stub.\n", iface, debugstr_w(pattern), handle);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetNextSymbolMatchWide(IDebugSymbols3 *iface, ULONG64 handle,
+        WCHAR *buffer, ULONG buffer_size, ULONG *match_size, ULONG64 *offset)
+{
+    FIXME("%p, %s, %p, %u, %p, %p stub.\n", iface, wine_dbgstr_longlong(handle), buffer, buffer_size, match_size, offset);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_ReloadWide(IDebugSymbols3 *iface, const WCHAR *module)
+{
+    FIXME("%p, %s stub.\n", iface, debugstr_w(module));
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolPathWide(IDebugSymbols3 *iface, WCHAR *buffer, ULONG buffer_size,
+        ULONG *path_size)
+{
+    FIXME("%p, %p, %u, %p stub.\n", iface, buffer, buffer_size, path_size);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_SetSymbolPathWide(IDebugSymbols3 *iface, const WCHAR *path)
+{
+    FIXME("%p, %s stub.\n", iface, debugstr_w(path));
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_AppendSymbolPathWide(IDebugSymbols3 *iface, const WCHAR *addition)
+{
+    FIXME("%p, %s stub.\n", iface, debugstr_w(addition));
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetImagePathWide(IDebugSymbols3 *iface, WCHAR *buffer, ULONG buffer_size,
+        ULONG *path_size)
+{
+    FIXME("%p, %p, %u, %p stub.\n", iface, buffer, buffer_size, path_size);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_SetImagePathWide(IDebugSymbols3 *iface, const WCHAR *path)
+{
+    FIXME("%p, %s stub.\n", iface, debugstr_w(path));
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_AppendImagePathWide(IDebugSymbols3 *iface, const WCHAR *addition)
+{
+    FIXME("%p, %s stub.\n", iface, debugstr_w(addition));
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourcePathWide(IDebugSymbols3 *iface, WCHAR *buffer, ULONG buffer_size,
+        ULONG *path_size)
+{
+    FIXME("%p, %p, %u, %p stub.\n", iface, buffer, buffer_size, path_size);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourcePathElementWide(IDebugSymbols3 *iface, ULONG index,
+        WCHAR *buffer, ULONG buffer_size, ULONG *element_size)
+{
+    FIXME("%p, %u, %p, %u, %p stub.\n", iface, index, buffer, buffer_size, element_size);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_SetSourcePathWide(IDebugSymbols3 *iface, const WCHAR *path)
+{
+    FIXME("%p, %s stub.\n", iface, debugstr_w(path));
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_AppendSourcePathWide(IDebugSymbols3 *iface, const WCHAR *addition)
+{
+    FIXME("%p, %s stub.\n", iface, debugstr_w(addition));
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_FindSourceFileWide(IDebugSymbols3 *iface, ULONG start_element,
+        const WCHAR *file, ULONG flags, ULONG *found_element, WCHAR *buffer, ULONG buffer_size, ULONG *found_size)
+{
+    FIXME("%p, %u, %s, %#x, %p, %p, %u, %p stub.\n", iface, start_element, debugstr_w(file), flags, found_element,
+            buffer, buffer_size, found_size);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourceFileLineOffsetsWide(IDebugSymbols3 *iface, const WCHAR *file,
+        ULONG64 *buffer, ULONG buffer_lines, ULONG *file_lines)
+{
+    FIXME("%p, %s, %p, %u, %p stub.\n", iface, debugstr_w(file), buffer, buffer_lines, file_lines);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleVersionInformationWide(IDebugSymbols3 *iface, ULONG index,
+        ULONG64 base, const WCHAR *item, void *buffer, ULONG buffer_size, ULONG *version_info_size)
+{
+    FIXME("%p, %u, %s, %s, %p, %u, %p stub.\n", iface, index, wine_dbgstr_longlong(base), debugstr_w(item), buffer,
+            buffer_size, version_info_size);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleNameStringWide(IDebugSymbols3 *iface, ULONG which, ULONG index,
+        ULONG64 base, WCHAR *buffer, ULONG buffer_size, ULONG *name_size)
+{
+    FIXME("%p, %u, %u, %s, %p, %u, %p stub.\n", iface, which, index, wine_dbgstr_longlong(base), buffer, buffer_size,
+            name_size);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetConstantNameWide(IDebugSymbols3 *iface, ULONG64 module, ULONG type_id,
+        ULONG64 value, WCHAR *buffer, ULONG buffer_size, ULONG *name_size)
+{
+    FIXME("%p, %s, %u, %s, %p, %u, %p stub.\n", iface, wine_dbgstr_longlong(module), type_id,
+            wine_dbgstr_longlong(value), buffer, buffer_size, name_size);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetFieldNameWide(IDebugSymbols3 *iface, ULONG64 module, ULONG type_id,
+        ULONG field_index, WCHAR *buffer, ULONG buffer_size, ULONG *name_size)
+{
+    FIXME("%p, %s, %u, %u, %p, %u, %p stub.\n", iface, wine_dbgstr_longlong(module), type_id, field_index, buffer,
+            buffer_size, name_size);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_IsManagedModule(IDebugSymbols3 *iface, ULONG index, ULONG64 base)
+{
+    FIXME("%p, %u, %s stub.\n", iface, index, wine_dbgstr_longlong(base));
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleByModuleName2(IDebugSymbols3 *iface, const char *name,
+        ULONG start_index, ULONG flags, ULONG *index, ULONG64 *base)
+{
+    FIXME("%p, %s, %u, %#x, %p, %p stub.\n", iface, debugstr_a(name), start_index, flags, index, base);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleByModuleName2Wide(IDebugSymbols3 *iface, const WCHAR *name,
+        ULONG start_index, ULONG flags, ULONG *index, ULONG64 *base)
+{
+    FIXME("%p, %s, %u, %#x, %p, %p stub.\n", iface, debugstr_w(name), start_index, flags, index, base);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetModuleByOffset2(IDebugSymbols3 *iface, ULONG64 offset,
+        ULONG start_index, ULONG flags, ULONG *index, ULONG64 *base)
+{
+    FIXME("%p, %s, %u, %#x, %p, %p stub.\n", iface, wine_dbgstr_longlong(offset), start_index, flags, index, base);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_AddSyntheticModule(IDebugSymbols3 *iface, ULONG64 base, ULONG size,
+        const char *image_path, const char *module_name, ULONG flags)
+{
+    FIXME("%p, %s, %u, %s, %s, %#x stub.\n", iface, wine_dbgstr_longlong(base), size, debugstr_a(image_path),
+            debugstr_a(module_name), flags);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_AddSyntheticModuleWide(IDebugSymbols3 *iface, ULONG64 base, ULONG size,
+        const WCHAR *image_path, const WCHAR *module_name, ULONG flags)
+{
+    FIXME("%p, %s, %u, %s, %s, %#x stub.\n", iface, wine_dbgstr_longlong(base), size, debugstr_w(image_path),
+            debugstr_w(module_name), flags);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_RemoveSyntheticModule(IDebugSymbols3 *iface, ULONG64 base)
+{
+    FIXME("%p, %s stub.\n", iface, wine_dbgstr_longlong(base));
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetCurrentScopeFrameIndex(IDebugSymbols3 *iface, ULONG *index)
+{
+    FIXME("%p, %p stub.\n", iface, index);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_SetScopeFrameByIndex(IDebugSymbols3 *iface, ULONG index)
+{
+    FIXME("%p, %u stub.\n", iface, index);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_SetScopeFromJitDebugInfo(IDebugSymbols3 *iface, ULONG output_control,
+        ULONG64 info_offset)
+{
+    FIXME("%p, %u, %s stub.\n", iface, output_control, wine_dbgstr_longlong(info_offset));
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_SetScopeFromStoredEvent(IDebugSymbols3 *iface)
+{
+    FIXME("%p stub.\n", iface);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_OutputSymbolByOffset(IDebugSymbols3 *iface, ULONG output_control,
+        ULONG flags, ULONG64 offset)
+{
+    FIXME("%p, %u, %#x, %s stub.\n", iface, output_control, flags, wine_dbgstr_longlong(offset));
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetFunctionEntryByOffset(IDebugSymbols3 *iface, ULONG64 offset,
+        ULONG flags, void *buffer, ULONG buffer_size, ULONG *needed_size)
+{
+    FIXME("%p, %s, %#x, %p, %u, %p stub.\n", iface, wine_dbgstr_longlong(offset), flags, buffer, buffer_size,
+            needed_size);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetFieldTypeAndOffset(IDebugSymbols3 *iface, ULONG64 module,
+        ULONG container_type_id, const char *field, ULONG *field_type_id, ULONG *offset)
+{
+    FIXME("%p, %s, %u, %s, %p, %p stub.\n", iface, wine_dbgstr_longlong(module), container_type_id, debugstr_a(field),
+            field_type_id, offset);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetFieldTypeAndOffsetWide(IDebugSymbols3 *iface, ULONG64 module,
+        ULONG container_type_id, const WCHAR *field, ULONG *field_type_id, ULONG *offset)
+{
+    FIXME("%p, %s, %u, %s, %p, %p stub.\n", iface, wine_dbgstr_longlong(module), container_type_id, debugstr_w(field),
+            field_type_id, offset);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_AddSyntheticSymbol(IDebugSymbols3 *iface, ULONG64 offset, ULONG size,
+        const char *name, ULONG flags, DEBUG_MODULE_AND_ID *id)
+{
+    FIXME("%p, %s, %u, %s, %#x, %p stub.\n", iface, wine_dbgstr_longlong(offset), size, debugstr_a(name), flags, id);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_AddSyntheticSymbolWide(IDebugSymbols3 *iface, ULONG64 offset, ULONG size,
+        const WCHAR *name, ULONG flags, DEBUG_MODULE_AND_ID *id)
+{
+    FIXME("%p, %s, %u, %s, %#x, %p stub.\n", iface, wine_dbgstr_longlong(offset), size, debugstr_w(name), flags, id);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_RemoveSyntheticSymbol(IDebugSymbols3 *iface, DEBUG_MODULE_AND_ID *id)
+{
+    FIXME("%p, %p stub.\n", iface, id);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolEntriesByOffset(IDebugSymbols3 *iface, ULONG64 offset,
+        ULONG flags, DEBUG_MODULE_AND_ID *ids, LONG64 *displacements, ULONG count, ULONG *entries)
+{
+    FIXME("%p, %s, %#x, %p, %p, %u, %p stub.\n", iface, wine_dbgstr_longlong(offset), flags, ids, displacements, count,
+            entries);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolEntriesByName(IDebugSymbols3 *iface, const char *symbol,
+        ULONG flags, DEBUG_MODULE_AND_ID *ids, ULONG count, ULONG *entries)
+{
+    FIXME("%p, %s, %#x, %p, %u, %p stub.\n", iface, debugstr_a(symbol), flags, ids, count, entries);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolEntriesByNameWide(IDebugSymbols3 *iface, const WCHAR *symbol,
+        ULONG flags, DEBUG_MODULE_AND_ID *ids, ULONG count, ULONG *entries)
+{
+    FIXME("%p, %s, %#x, %p, %u, %p stub.\n", iface, debugstr_w(symbol), flags, ids, count, entries);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolEntryByToken(IDebugSymbols3 *iface, ULONG64 base, ULONG token,
+        DEBUG_MODULE_AND_ID *id)
+{
+    FIXME("%p, %s, %p stub.\n", iface, wine_dbgstr_longlong(base), id);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolEntryInformation(IDebugSymbols3 *iface, DEBUG_MODULE_AND_ID *id,
+        DEBUG_SYMBOL_ENTRY *info)
+{
+    FIXME("%p, %p, %p stub.\n", iface, id, info);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolEntryString(IDebugSymbols3 *iface, DEBUG_MODULE_AND_ID *id,
+        ULONG which, char *buffer, ULONG buffer_size, ULONG *string_size)
+{
+    FIXME("%p, %p, %u, %p, %u, %p stub.\n", iface, id, which, buffer, buffer_size, string_size);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolEntryStringWide(IDebugSymbols3 *iface, DEBUG_MODULE_AND_ID *id,
+        ULONG which, WCHAR *buffer, ULONG buffer_size, ULONG *string_size)
+{
+    FIXME("%p, %p, %u, %p, %u, %p stub.\n", iface, id, which, buffer, buffer_size, string_size);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolEntryOffsetRegions(IDebugSymbols3 *iface, DEBUG_MODULE_AND_ID *id,
+        ULONG flags, DEBUG_OFFSET_REGION *regions, ULONG regions_count, ULONG *regions_avail)
+{
+    FIXME("%p, %p, %#x, %p, %u, %p stub.\n", iface, id, flags, regions, regions_count, regions_avail);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetSymbolEntryBySymbolEntry(IDebugSymbols3 *iface,
+        DEBUG_MODULE_AND_ID *from_id, ULONG flags, DEBUG_MODULE_AND_ID *to_id)
+{
+    FIXME("%p, %p, %#x, %p stub.\n", iface, from_id, flags, to_id);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourceEntriesByOffset(IDebugSymbols3 *iface, ULONG64 offset,
+        ULONG flags, DEBUG_SYMBOL_SOURCE_ENTRY *entries, ULONG count, ULONG *entries_avail)
+{
+    FIXME("%p, %s, %#x, %p, %u, %p stub.\n", iface, wine_dbgstr_longlong(offset), flags, entries, count, entries_avail);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourceEntriesByLine(IDebugSymbols3 *iface, ULONG line,
+        const char *file, ULONG flags, DEBUG_SYMBOL_SOURCE_ENTRY *entries, ULONG count, ULONG *entries_avail)
+{
+    FIXME("%p, %s, %#x, %p, %u, %p stub.\n", iface, debugstr_a(file), flags, entries, count, entries_avail);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourceEntriesByLineWide(IDebugSymbols3 *iface, ULONG line,
+        const WCHAR *file, ULONG flags, DEBUG_SYMBOL_SOURCE_ENTRY *entries, ULONG count, ULONG *entries_avail)
+{
+    FIXME("%p, %s, %#x, %p, %u, %p stub.\n", iface, debugstr_w(file), flags, entries, count, entries_avail);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourceEntryString(IDebugSymbols3 *iface,
+        DEBUG_SYMBOL_SOURCE_ENTRY *entry, ULONG which, char *buffer, ULONG buffer_size, ULONG *string_size)
+{
+    FIXME("%p, %p, %u, %p, %u, %p stub.\n", iface, entry, which, buffer, buffer_size, string_size);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourceEntryStringWide(IDebugSymbols3 *iface,
+        DEBUG_SYMBOL_SOURCE_ENTRY *entry, ULONG which, WCHAR *buffer, ULONG buffer_size, ULONG *string_size)
+{
+    FIXME("%p, %p, %u, %p, %u, %p stub.\n", iface, entry, which, buffer, buffer_size, string_size);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourceEntryOffsetRegions(IDebugSymbols3 *iface,
+        DEBUG_SYMBOL_SOURCE_ENTRY *entry, ULONG flags, DEBUG_OFFSET_REGION *regions, ULONG count, ULONG *regions_avail)
+{
+    FIXME("%p, %p, %#x, %p, %u, %p stub.\n", iface, entry, flags, regions, count, regions_avail);
+
+    return E_NOTIMPL;
+}
+
+static HRESULT STDMETHODCALLTYPE debugsymbols_GetSourceEntryBySourceEntry(IDebugSymbols3 *iface,
+        DEBUG_SYMBOL_SOURCE_ENTRY *from_entry, ULONG flags, DEBUG_SYMBOL_SOURCE_ENTRY *to_entry)
+{
+    FIXME("%p, %p, %#x, %p stub.\n", iface, from_entry, flags, to_entry);
+
+    return E_NOTIMPL;
+}
+
+static const IDebugSymbols3Vtbl debugsymbolsvtbl =
 {
     debugsymbols_QueryInterface,
     debugsymbols_AddRef,
@@ -1232,6 +1827,82 @@ static const IDebugSymbolsVtbl debugsymbolsvtbl =
     debugsymbols_AppendSourcePath,
     debugsymbols_FindSourceFile,
     debugsymbols_GetSourceFileLineOffsets,
+    /* IDebugSymbols2 */
+    debugsymbols_GetModuleVersionInformation,
+    debugsymbols_GetModuleNameString,
+    debugsymbols_GetConstantName,
+    debugsymbols_GetFieldName,
+    debugsymbols_GetTypeOptions,
+    debugsymbols_AddTypeOptions,
+    debugsymbols_RemoveTypeOptions,
+    debugsymbols_SetTypeOptions,
+    /* IDebugSymbols3 */
+    debugsymbols_GetNameByOffsetWide,
+    debugsymbols_GetOffsetByNameWide,
+    debugsymbols_GetNearNameByOffsetWide,
+    debugsymbols_GetLineByOffsetWide,
+    debugsymbols_GetOffsetByLineWide,
+    debugsymbols_GetModuleByModuleNameWide,
+    debugsymbols_GetSymbolModuleWide,
+    debugsymbols_GetTypeNameWide,
+    debugsymbols_GetTypeIdWide,
+    debugsymbols_GetFieldOffsetWide,
+    debugsymbols_GetSymbolTypeIdWide,
+    debugsymbols_GetScopeSymbolGroup2,
+    debugsymbols_CreateSymbolGroup2,
+    debugsymbols_StartSymbolMatchWide,
+    debugsymbols_GetNextSymbolMatchWide,
+    debugsymbols_ReloadWide,
+    debugsymbols_GetSymbolPathWide,
+    debugsymbols_SetSymbolPathWide,
+    debugsymbols_AppendSymbolPathWide,
+    debugsymbols_GetImagePathWide,
+    debugsymbols_SetImagePathWide,
+    debugsymbols_AppendImagePathWide,
+    debugsymbols_GetSourcePathWide,
+    debugsymbols_GetSourcePathElementWide,
+    debugsymbols_SetSourcePathWide,
+    debugsymbols_AppendSourcePathWide,
+    debugsymbols_FindSourceFileWide,
+    debugsymbols_GetSourceFileLineOffsetsWide,
+    debugsymbols_GetModuleVersionInformationWide,
+    debugsymbols_GetModuleNameStringWide,
+    debugsymbols_GetConstantNameWide,
+    debugsymbols_GetFieldNameWide,
+    debugsymbols_IsManagedModule,
+    debugsymbols_GetModuleByModuleName2,
+    debugsymbols_GetModuleByModuleName2Wide,
+    debugsymbols_GetModuleByOffset2,
+    debugsymbols_AddSyntheticModule,
+    debugsymbols_AddSyntheticModuleWide,
+    debugsymbols_RemoveSyntheticModule,
+    debugsymbols_GetCurrentScopeFrameIndex,
+    debugsymbols_SetScopeFrameByIndex,
+    debugsymbols_SetScopeFromJitDebugInfo,
+    debugsymbols_SetScopeFromStoredEvent,
+    debugsymbols_OutputSymbolByOffset,
+    debugsymbols_GetFunctionEntryByOffset,
+    debugsymbols_GetFieldTypeAndOffset,
+    debugsymbols_GetFieldTypeAndOffsetWide,
+    debugsymbols_AddSyntheticSymbol,
+    debugsymbols_AddSyntheticSymbolWide,
+    debugsymbols_RemoveSyntheticSymbol,
+    debugsymbols_GetSymbolEntriesByOffset,
+    debugsymbols_GetSymbolEntriesByName,
+    debugsymbols_GetSymbolEntriesByNameWide,
+    debugsymbols_GetSymbolEntryByToken,
+    debugsymbols_GetSymbolEntryInformation,
+    debugsymbols_GetSymbolEntryString,
+    debugsymbols_GetSymbolEntryStringWide,
+    debugsymbols_GetSymbolEntryOffsetRegions,
+    debugsymbols_GetSymbolEntryBySymbolEntry,
+    debugsymbols_GetSourceEntriesByOffset,
+    debugsymbols_GetSourceEntriesByLine,
+    debugsymbols_GetSourceEntriesByLineWide,
+    debugsymbols_GetSourceEntryString,
+    debugsymbols_GetSourceEntryStringWide,
+    debugsymbols_GetSourceEntryOffsetRegions,
+    debugsymbols_GetSourceEntryBySourceEntry,
 };
 
 static HRESULT STDMETHODCALLTYPE debugcontrol_QueryInterface(IDebugControl2 *iface, REFIID riid, void **obj)
@@ -2191,7 +2862,7 @@ HRESULT WINAPI DebugCreate(REFIID riid, void **obj)
 
     debug_client->IDebugClient_iface.lpVtbl = &debugclientvtbl;
     debug_client->IDebugDataSpaces_iface.lpVtbl = &debugdataspacesvtbl;
-    debug_client->IDebugSymbols_iface.lpVtbl = &debugsymbolsvtbl;
+    debug_client->IDebugSymbols3_iface.lpVtbl = &debugsymbolsvtbl;
     debug_client->IDebugControl2_iface.lpVtbl = &debugcontrolvtbl;
     debug_client->refcount = 1;
     list_init(&debug_client->targets);
-- 
2.20.1




More information about the wine-devel mailing list