From 7b38af0c4cd9be777adb156972b1db51a21d4f0c Mon Sep 17 00:00:00 2001
From: Biswapriyo Nath <[email protected]>
Date: Mon, 12 Aug 2024 13:20:07 +0000
Subject: [PATCH 3/3] include: Add new DebugSymbols interfaces in dbgeng.h

Signed-off-by: Biswapriyo Nath <[email protected]>
---
 mingw-w64-headers/include/dbgeng.h | 536 +++++++++++++++++++++++++++++
 1 file changed, 536 insertions(+)

diff --git a/mingw-w64-headers/include/dbgeng.h 
b/mingw-w64-headers/include/dbgeng.h
index 5f9b842..cc9ca5d 100644
--- a/mingw-w64-headers/include/dbgeng.h
+++ b/mingw-w64-headers/include/dbgeng.h
@@ -53,8 +53,12 @@ extern "C" {
   
DEFINE_GUID(IID_IDebugOutputCallbacksWide,0x4c7fd663,0xc394,0x4e26,0x8e,0xf1,0x34,0xad,0x5e,0xd3,0x76,0x4c);
   
DEFINE_GUID(IID_IDebugRegisters,0xce289126,0x9e84,0x45a7,0x93,0x7e,0x67,0xbb,0x18,0x69,0x14,0x93);
   
DEFINE_GUID(IID_IDebugSymbolGroup,0xf2528316,0x0f1a,0x4431,0xae,0xed,0x11,0xd0,0x96,0xe1,0xe2,0xab);
+  
DEFINE_GUID(IID_IDebugSymbolGroup2,0x6a7ccc5f,0xfb5e,0x4dcc,0xb4,0x1c,0x6c,0x20,0x30,0x7b,0xcc,0xc7);
   
DEFINE_GUID(IID_IDebugSymbols,0x8c31e98c,0x983a,0x48a5,0x90,0x16,0x6f,0xe5,0xd6,0x67,0xa9,0x50);
   
DEFINE_GUID(IID_IDebugSymbols2,0x3a707211,0xafdd,0x4495,0xad,0x4f,0x56,0xfe,0xcd,0xf8,0x16,0x3f);
+  
DEFINE_GUID(IID_IDebugSymbols3,0xf02fbecc,0x50ac,0x4f36,0x9a,0xd9,0xc9,0x75,0xe8,0xf3,0x2f,0xf8);
+  
DEFINE_GUID(IID_IDebugSymbols4,0xe391bbd8,0x9d8c,0x4418,0x84,0x0b,0xc0,0x06,0x59,0x2a,0x17,0x52);
+  
DEFINE_GUID(IID_IDebugSymbols5,0xc65fa83e,0x1e69,0x475e,0x8e,0x0e,0xb5,0xd7,0x9e,0x9c,0xc1,0x7e);
   
DEFINE_GUID(IID_IDebugSystemObjects,0x6b86fe2c,0x2c4f,0x4f0c,0x9d,0xa2,0x17,0x43,0x11,0xac,0xc3,0x27);
   
DEFINE_GUID(IID_IDebugSystemObjects2,0x0ae9f5ff,0x1852,0x4679,0xb0,0x55,0x49,0x4b,0xee,0x64,0x07,0xee);
   
DEFINE_GUID(IID_IDebugSystemObjects3,0xe9676e2f,0xe286,0x4ea3,0xb0,0xf9,0xdf,0xe5,0xd9,0xfc,0x33,0x0e);
@@ -90,8 +94,12 @@ extern "C" {
   typedef struct IDebugOutputCallbacksWide *PDEBUG_OUTPUT_CALLBACKS_WIDE;
   typedef struct IDebugRegisters *PDEBUG_REGISTERS;
   typedef struct IDebugSymbolGroup *PDEBUG_SYMBOL_GROUP;
+  typedef struct IDebugSymbolGroup2 *PDEBUG_SYMBOL_GROUP2;
   typedef struct IDebugSymbols *PDEBUG_SYMBOLS;
   typedef struct IDebugSymbols2 *PDEBUG_SYMBOLS2;
+  typedef struct IDebugSymbols3 *PDEBUG_SYMBOLS3;
+  typedef struct IDebugSymbols4 *PDEBUG_SYMBOLS4;
+  typedef struct IDebugSymbols5 *PDEBUG_SYMBOLS5;
   typedef struct IDebugSystemObjects *PDEBUG_SYSTEM_OBJECTS;
   typedef struct IDebugSystemObjects2 *PDEBUG_SYSTEM_OBJECTS2;
   typedef struct IDebugSystemObjects3 *PDEBUG_SYSTEM_OBJECTS3;
@@ -101,6 +109,11 @@ extern "C" {
   STDAPI DebugConnect(PCSTR RemoteOptions,REFIID InterfaceId,PVOID *Interface);
   STDAPI DebugCreate(REFIID InterfaceId,PVOID *Interface);
 
+  typedef struct _DEBUG_OFFSET_REGION {
+    ULONG64 Base;
+    ULONG64 Size;
+  } DEBUG_OFFSET_REGION,*PDEBUG_OFFSET_REGION;
+
 #undef INTERFACE
 #define INTERFACE IDebugAdvanced
   DECLARE_INTERFACE_(IDebugAdvanced,IUnknown) {
@@ -2997,6 +3010,62 @@ 
__CRT_UUID_DECL(IDebugRegisters,0xce289126,0x9e84,0x45a7,0x93,0x7e,0x67,0xbb,0x1
 
__CRT_UUID_DECL(IDebugSymbolGroup,0xf2528316,0x0f1a,0x4431,0xae,0xed,0x11,0xd0,0x96,0xe1,0xe2,0xab)
 #endif
 
+#define DEBUG_SYMENT_IS_CODE 0x00000001
+#define DEBUG_SYMENT_IS_DATA 0x00000002
+#define DEBUG_SYMENT_IS_PARAMETER 0x00000004
+#define DEBUG_SYMENT_IS_LOCAL 0x00000008
+#define DEBUG_SYMENT_IS_MANAGED 0x00000010
+#define DEBUG_SYMENT_IS_SYNTHETIC 0x00000020
+
+  typedef struct _DEBUG_SYMBOL_ENTRY {
+    ULONG64 ModuleBase;
+    ULONG64 Offset;
+    ULONG64 Id;
+    ULONG64 Arg64;
+    ULONG Size;
+    ULONG Flags;
+    ULONG TypeId;
+    ULONG NameSize;
+    ULONG Token;
+    ULONG Tag;
+    ULONG Arg32;
+    ULONG Reserved;
+  } DEBUG_SYMBOL_ENTRY,*PDEBUG_SYMBOL_ENTRY;
+
+#undef INTERFACE
+#define INTERFACE IDebugSymbolGroup2
+  DECLARE_INTERFACE_(IDebugSymbolGroup2, IUnknown) {
+    STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    STDMETHOD(GetNumberSymbols)(THIS_ PULONG Number) PURE;
+    STDMETHOD(AddSymbol)(THIS_ PCSTR Name, PULONG Index) PURE;
+    STDMETHOD(RemoveSymbolByName)(THIS_ PCSTR Name) PURE;
+    STDMETHOD(RemoveSymbolByIndex)(THIS_ ULONG Index) PURE;
+    STDMETHOD(GetSymbolName)(THIS_ ULONG Index, PSTR Buffer, ULONG BufferSize, 
PULONG NameSize) PURE;
+    STDMETHOD(GetSymbolParameters)(THIS_ ULONG Start, ULONG Count, 
PDEBUG_SYMBOL_PARAMETERS Params) PURE;
+    STDMETHOD(ExpandSymbol)(THIS_ ULONG Index, WINBOOL Expand) PURE;
+    STDMETHOD(OutputSymbols)(THIS_ ULONG OutputControl, ULONG Flags, ULONG 
Start, ULONG Count) PURE;
+    STDMETHOD(WriteSymbol)(THIS_ ULONG Index, PCSTR Value) PURE;
+    STDMETHOD(OutputAsType)(THIS_ ULONG Index, PCSTR Type) PURE;
+    STDMETHOD(AddSymbolWide)(THIS_ PCWSTR Name, PULONG Index) PURE;
+    STDMETHOD(RemoveSymbolByNameWide)(THIS_ PCWSTR Name) PURE;
+    STDMETHOD(GetSymbolNameWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG 
BufferSize, PULONG NameSize) PURE;
+    STDMETHOD(WriteSymbolWide)(THIS_ ULONG Index, PCWSTR Value) PURE;
+    STDMETHOD(OutputAsTypeWide)(THIS_ ULONG Index, PCWSTR Type) PURE;
+    STDMETHOD(GetSymbolTypeName)(THIS_ ULONG Index, PSTR Buffer, ULONG 
BufferSize, PULONG NameSize) PURE;
+    STDMETHOD(GetSymbolTypeNameWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG 
BufferSize, PULONG NameSize) PURE;
+    STDMETHOD(GetSymbolSize)(THIS_ ULONG Index, PULONG Size) PURE;
+    STDMETHOD(GetSymbolOffset)(THIS_ ULONG Index, PULONG64 Offset) PURE;
+    STDMETHOD(GetSymbolRegister)(THIS_ ULONG Index, PULONG Register) PURE;
+    STDMETHOD(GetSymbolValueText)(THIS_ ULONG Index, PSTR Buffer, ULONG 
BufferSize, PULONG NameSize) PURE;
+    STDMETHOD(GetSymbolValueTextWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG 
BufferSize, PULONG NameSize) PURE;
+    STDMETHOD(GetSymbolEntryInformation)(THIS_ ULONG Index, 
PDEBUG_SYMBOL_ENTRY Entry) PURE;
+  };
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDebugSymbolGroup2,0x6a7ccc5f,0xfb5e,0x4dcc,0xb4,0x1c,0x6c,0x20,0x30,0x7b,0xcc,0xc7)
+#endif
+
 #define DEBUG_MODULE_LOADED 0x00000000
 #define DEBUG_MODULE_UNLOADED 0x00000001
 #define DEBUG_MODULE_USER_MODE 0x00000002
@@ -3184,6 +3253,473 @@ 
__CRT_UUID_DECL(IDebugSymbols,0x8c31e98c,0x983a,0x48a5,0x90,0x16,0x6f,0xe5,0xd6,
 
__CRT_UUID_DECL(IDebugSymbols2,0x3a707211,0xafdd,0x4495,0xad,0x4f,0x56,0xfe,0xcd,0xf8,0x16,0x3f)
 #endif
 
+#define DEBUG_GETMOD_DEFAULT 0x00000000
+#define DEBUG_GETMOD_NO_LOADED_MODULES 0x00000001
+#define DEBUG_GETMOD_NO_UNLOADED_MODULES 0x00000002
+
+#define DEBUG_ADDSYNTHMOD_DEFAULT 0x00000000
+#define DEBUG_ADDSYNTHMOD_ZEROBASE 0x00000001
+
+#define DEBUG_ADDSYNTHSYM_DEFAULT 0x00000000
+
+#define DEBUG_OUTSYM_DEFAULT 0x00000000
+#define DEBUG_OUTSYM_FORCE_OFFSET 0x00000001
+#define DEBUG_OUTSYM_SOURCE_LINE 0x00000002
+#define DEBUG_OUTSYM_ALLOW_DISPLACEMENT 0x00000004
+
+#define DEBUG_GETFNENT_DEFAULT 0x00000000
+#define DEBUG_GETFNENT_RAW_ENTRY_ONLY 0x00000001
+
+  typedef struct _DEBUG_MODULE_AND_ID {
+    ULONG64 ModuleBase;
+    ULONG64 Id;
+  } DEBUG_MODULE_AND_ID,*PDEBUG_MODULE_AND_ID;
+
+#define DEBUG_SOURCE_IS_STATEMENT 0x00000001
+
+#define DEBUG_GSEL_DEFAULT 0x00000000
+#define DEBUG_GSEL_NO_SYMBOL_LOADS 0x00000001
+#define DEBUG_GSEL_ALLOW_LOWER 0x00000002
+#define DEBUG_GSEL_ALLOW_HIGHER 0x00000004
+#define DEBUG_GSEL_NEAREST_ONLY 0x00000008
+#define DEBUG_GSEL_INLINE_CALLSITE 0x00000010
+
+  typedef struct _DEBUG_SYMBOL_SOURCE_ENTRY {
+    ULONG64 ModuleBase;
+    ULONG64 Offset;
+    ULONG64 FileNameId;
+    ULONG64 EngineInternal;
+    ULONG Size;
+    ULONG Flags;
+    ULONG FileNameSize;
+    ULONG StartLine;
+    ULONG EndLine;
+    ULONG StartColumn;
+    ULONG EndColumn;
+    ULONG Reserved;
+  } DEBUG_SYMBOL_SOURCE_ENTRY,*PDEBUG_SYMBOL_SOURCE_ENTRY;
+
+#undef INTERFACE
+#define INTERFACE IDebugSymbols3
+  DECLARE_INTERFACE_(IDebugSymbols3, IUnknown) {
+    STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    STDMETHOD(GetSymbolOptions)(THIS_ PULONG Options) PURE;
+    STDMETHOD(AddSymbolOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(RemoveSymbolOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(SetSymbolOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(GetNameByOffset)(THIS_ ULONG64 Offset, PSTR NameBuffer, ULONG 
NameBufferSize, PULONG NameSize, PULONG64 Displacement) PURE;
+    STDMETHOD(GetOffsetByName)(THIS_ PCSTR Symbol, PULONG64 Offset) PURE;
+    STDMETHOD(GetNearNameByOffset)(THIS_ ULONG64 Offset, LONG Delta, PSTR 
NameBuffer, ULONG NameBufferSize, PULONG NameSize, PULONG64 Displacement) PURE;
+    STDMETHOD(GetLineByOffset)(THIS_ ULONG64 Offset, PULONG Line, PSTR 
FileBuffer, ULONG FileBufferSize, PULONG FileSize, PULONG64 Displacement) PURE;
+    STDMETHOD(GetOffsetByLine)(THIS_ ULONG Line, PCSTR File, PULONG64 Offset) 
PURE;
+    STDMETHOD(GetNumberModules)(THIS_ PULONG Loaded, PULONG Unloaded) PURE;
+    STDMETHOD(GetModuleByIndex)(THIS_ ULONG Index, PULONG64 Base) PURE;
+    STDMETHOD(GetModuleByModuleName)(THIS_ PCSTR Name, ULONG StartIndex, 
PULONG Index, PULONG64 Base) PURE;
+    STDMETHOD(GetModuleByOffset)(THIS_ ULONG64 Offset, ULONG StartIndex, 
PULONG Index, PULONG64 Base) PURE;
+    STDMETHOD(GetModuleNames)(THIS_ ULONG Index, ULONG64 Base, PSTR 
ImageNameBuffer, ULONG ImageNameBufferSize, PULONG ImageNameSize, PSTR 
ModuleNameBuffer, ULONG ModuleNameBufferSize, PULONG ModuleNameSize, PSTR 
LoadedImageNameBuffer, ULONG LoadedImageNameBufferSize, PULONG 
LoadedImageNameSize) PURE;
+    STDMETHOD(GetModuleParameters)(THIS_ ULONG Count, PULONG64 Bases, ULONG 
Start, PDEBUG_MODULE_PARAMETERS Params) PURE;
+    STDMETHOD(GetSymbolModule)(THIS_ PCSTR Symbol, PULONG64 Base) PURE;
+    STDMETHOD(GetTypeName)(THIS_ ULONG64 Module, ULONG TypeId, PSTR 
NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
+    STDMETHOD(GetTypeId)(THIS_ ULONG64 Module, PCSTR Name, PULONG TypeId) PURE;
+    STDMETHOD(GetTypeSize)(THIS_ ULONG64 Module, ULONG TypeId, PULONG Size) 
PURE;
+    STDMETHOD(GetFieldOffset)(THIS_ ULONG64 Module, ULONG TypeId, PCSTR Field, 
PULONG Offset) PURE;
+    STDMETHOD(GetSymbolTypeId)(THIS_ PCSTR Symbol, PULONG TypeId, PULONG64 
Module) PURE;
+    STDMETHOD(GetOffsetTypeId)(THIS_ ULONG64 Offset, PULONG TypeId, PULONG64 
Module) PURE;
+    STDMETHOD(ReadTypedDataVirtual)(THIS_ ULONG64 Offset, ULONG64 Module, 
ULONG TypeId, PVOID Buffer, ULONG BufferSize, PULONG BytesRead) PURE;
+    STDMETHOD(WriteTypedDataVirtual)(THIS_ ULONG64 Offset, ULONG64 Module, 
ULONG TypeId, PVOID Buffer, ULONG BufferSize, PULONG BytesWritten) PURE;
+    STDMETHOD(OutputTypedDataVirtual)(THIS_ ULONG OutputControl, ULONG64 
Offset, ULONG64 Module, ULONG TypeId, ULONG Flags) PURE;
+    STDMETHOD(ReadTypedDataPhysical)(THIS_ ULONG64 Offset, ULONG64 Module, 
ULONG TypeId, PVOID Buffer, ULONG BufferSize, PULONG BytesRead) PURE;
+    STDMETHOD(WriteTypedDataPhysical)(THIS_ ULONG64 Offset, ULONG64 Module, 
ULONG TypeId, PVOID Buffer, ULONG BufferSize, PULONG BytesWritten) PURE;
+    STDMETHOD(OutputTypedDataPhysical)(THIS_ ULONG OutputControl, ULONG64 
Offset, ULONG64 Module, ULONG TypeId, ULONG Flags) PURE;
+    STDMETHOD(GetScope)(THIS_ PULONG64 InstructionOffset, PDEBUG_STACK_FRAME 
ScopeFrame, PVOID ScopeContext, ULONG ScopeContextSize) PURE;
+    STDMETHOD(SetScope)(THIS_ ULONG64 InstructionOffset, PDEBUG_STACK_FRAME 
ScopeFrame, PVOID ScopeContext, ULONG ScopeContextSize) PURE;
+    STDMETHOD(ResetScope)(THIS) PURE;
+    STDMETHOD(GetScopeSymbolGroup)(THIS_ ULONG Flags, PDEBUG_SYMBOL_GROUP 
Update, PDEBUG_SYMBOL_GROUP *Symbols) PURE;
+    STDMETHOD(CreateSymbolGroup)(THIS_ PDEBUG_SYMBOL_GROUP *Group) PURE;
+    STDMETHOD(StartSymbolMatch)(THIS_ PCSTR Pattern, PULONG64 Handle) PURE;
+    STDMETHOD(GetNextSymbolMatch)(THIS_ ULONG64 Handle, PSTR Buffer, ULONG 
BufferSize, PULONG MatchSize, PULONG64 Offset) PURE;
+    STDMETHOD(EndSymbolMatch)(THIS_ ULONG64 Handle) PURE;
+    STDMETHOD(Reload)(THIS_ PCSTR Module) PURE;
+    STDMETHOD(GetSymbolPath)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG 
PathSize) PURE;
+    STDMETHOD(SetSymbolPath)(THIS_ PCSTR Path) PURE;
+    STDMETHOD(AppendSymbolPath)(THIS_ PCSTR Addition) PURE;
+    STDMETHOD(GetImagePath)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG 
PathSize) PURE;
+    STDMETHOD(SetImagePath)(THIS_ PCSTR Path) PURE;
+    STDMETHOD(AppendImagePath)(THIS_ PCSTR Addition) PURE;
+    STDMETHOD(GetSourcePath)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG 
PathSize) PURE;
+    STDMETHOD(GetSourcePathElement)(THIS_ ULONG Index, PSTR Buffer, ULONG 
BufferSize, PULONG ElementSize) PURE;
+    STDMETHOD(SetSourcePath)(THIS_ PCSTR Path) PURE;
+    STDMETHOD(AppendSourcePath)(THIS_ PCSTR Addition) PURE;
+    STDMETHOD(FindSourceFile)(THIS_ ULONG StartElement, PCSTR File, ULONG 
Flags, PULONG FoundElement, PSTR Buffer, ULONG BufferSize, PULONG FoundSize) 
PURE;
+    STDMETHOD(GetSourceFileLineOffsets)(THIS_ PCSTR File, PULONG64 Buffer, 
ULONG BufferLines, PULONG FileLines) PURE;
+    STDMETHOD(GetModuleVersionInformation)(THIS_ ULONG Index, ULONG64 Base, 
PCSTR Item, PVOID Buffer, ULONG BufferSize, PULONG VerInfoSize) PURE;
+    STDMETHOD(GetModuleNameString)(THIS_ ULONG Which, ULONG Index, ULONG64 
Base, PSTR Buffer, ULONG BufferSize, PULONG NameSize) PURE;
+    STDMETHOD(GetConstantName)(THIS_ ULONG64 Module, ULONG TypeId, ULONG64 
Value, PSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
+    STDMETHOD(GetFieldName)(THIS_ ULONG64 Module, ULONG TypeId, ULONG 
FieldIndex, PSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
+    STDMETHOD(GetTypeOptions)(THIS_ PULONG Options) PURE;
+    STDMETHOD(AddTypeOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(RemoveTypeOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(SetTypeOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(GetNameByOffsetWide)(THIS_ ULONG64 Offset, PWSTR NameBuffer, 
ULONG NameBufferSize, PULONG NameSize, PULONG64 Displacement) PURE;
+    STDMETHOD(GetOffsetByNameWide)(THIS_ PCWSTR Symbol, PULONG64 Offset) PURE;
+    STDMETHOD(GetNearNameByOffsetWide)(THIS_ ULONG64 Offset, LONG Delta, PWSTR 
NameBuffer, ULONG NameBufferSize, PULONG NameSize, PULONG64 Displacement) PURE;
+    STDMETHOD(GetLineByOffsetWide)(THIS_ ULONG64 Offset, PULONG Line, PWSTR 
FileBuffer, ULONG FileBufferSize, PULONG FileSize, PULONG64 Displacement) PURE;
+    STDMETHOD(GetOffsetByLineWide)(THIS_ ULONG Line, PCWSTR File, PULONG64 
Offset) PURE;
+    STDMETHOD(GetModuleByModuleNameWide)(THIS_ PCWSTR Name, ULONG StartIndex, 
PULONG Index, PULONG64 Base) PURE;
+    STDMETHOD(GetSymbolModuleWide)(THIS_ PCWSTR Symbol, PULONG64 Base) PURE;
+    STDMETHOD(GetTypeNameWide)(THIS_ ULONG64 Module, ULONG TypeId, PWSTR 
NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
+    STDMETHOD(GetTypeIdWide)(THIS_ ULONG64 Module, PCWSTR Name, PULONG TypeId) 
PURE;
+    STDMETHOD(GetFieldOffsetWide)(THIS_ ULONG64 Module, ULONG TypeId, PCWSTR 
Field, PULONG Offset) PURE;
+    STDMETHOD(GetSymbolTypeIdWide)(THIS_ PCWSTR Symbol, PULONG TypeId, 
PULONG64 Module) PURE;
+    STDMETHOD(GetScopeSymbolGroup2)(THIS_ ULONG Flags, PDEBUG_SYMBOL_GROUP2 
Update, PDEBUG_SYMBOL_GROUP2 *Symbols) PURE;
+    STDMETHOD(CreateSymbolGroup2)(THIS_ PDEBUG_SYMBOL_GROUP2 *Group) PURE;
+    STDMETHOD(StartSymbolMatchWide)(THIS_ PCWSTR Pattern, PULONG64 Handle) 
PURE;
+    STDMETHOD(GetNextSymbolMatchWide)(THIS_ ULONG64 Handle, PWSTR Buffer, 
ULONG BufferSize, PULONG MatchSize, PULONG64 Offset) PURE;
+    STDMETHOD(ReloadWide)(THIS_ PCWSTR Module) PURE;
+    STDMETHOD(GetSymbolPathWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG 
PathSize) PURE;
+    STDMETHOD(SetSymbolPathWide)(THIS_ PCWSTR Path) PURE;
+    STDMETHOD(AppendSymbolPathWide)(THIS_ PCWSTR Addition) PURE;
+    STDMETHOD(GetImagePathWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG 
PathSize) PURE;
+    STDMETHOD(SetImagePathWide)(THIS_ PCWSTR Path) PURE;
+    STDMETHOD(AppendImagePathWide)(THIS_ PCWSTR Addition) PURE;
+    STDMETHOD(GetSourcePathWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG 
PathSize) PURE;
+    STDMETHOD(GetSourcePathElementWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG 
BufferSize, PULONG ElementSize) PURE;
+    STDMETHOD(SetSourcePathWide)(THIS_ PCWSTR Path) PURE;
+    STDMETHOD(AppendSourcePathWide)(THIS_ PCWSTR Addition) PURE;
+    STDMETHOD(FindSourceFileWide)(THIS_ ULONG StartElement, PCWSTR File, ULONG 
Flags, PULONG FoundElement, PWSTR Buffer, ULONG BufferSize, PULONG FoundSize) 
PURE;
+    STDMETHOD(GetSourceFileLineOffsetsWide)(THIS_ PCWSTR File, PULONG64 
Buffer, ULONG BufferLines, PULONG FileLines) PURE;
+    STDMETHOD(GetModuleVersionInformationWide)(THIS_ ULONG Index, ULONG64 
Base, PCWSTR Item, PVOID Buffer, ULONG BufferSize, PULONG VerInfoSize) PURE;
+    STDMETHOD(GetModuleNameStringWide)(THIS_ ULONG Which, ULONG Index, ULONG64 
Base, PWSTR Buffer, ULONG BufferSize, PULONG NameSize) PURE;
+    STDMETHOD(GetConstantNameWide)(THIS_ ULONG64 Module, ULONG TypeId, ULONG64 
Value, PWSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
+    STDMETHOD(GetFieldNameWide)(THIS_ ULONG64 Module, ULONG TypeId, ULONG 
FieldIndex, PWSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
+    STDMETHOD(IsManagedModule)(THIS_ ULONG Index, ULONG64 Base) PURE;
+    STDMETHOD(GetModuleByModuleName2)(THIS_ PCSTR Name, ULONG StartIndex, 
ULONG Flags, PULONG Index, PULONG64 Base) PURE;
+    STDMETHOD(GetModuleByModuleName2Wide)(THIS_ PCWSTR Name, ULONG StartIndex, 
ULONG Flags, PULONG Index, PULONG64 Base) PURE;
+    STDMETHOD(GetModuleByOffset2)(THIS_ ULONG64 Offset, ULONG StartIndex, 
ULONG Flags, PULONG Index, PULONG64 Base) PURE;
+    STDMETHOD(AddSyntheticModule)(THIS_ ULONG64 Base, ULONG Size, PCSTR 
ImagePath, PCSTR ModuleName, ULONG Flags) PURE;
+    STDMETHOD(AddSyntheticModuleWide)(THIS_ ULONG64 Base, ULONG Size, PCWSTR 
ImagePath, PCWSTR ModuleName, ULONG Flags) PURE;
+    STDMETHOD(RemoveSyntheticModule)(THIS_ ULONG64 Base) PURE;
+    STDMETHOD(GetCurrentScopeFrameIndex)(THIS_ PULONG Index) PURE;
+    STDMETHOD(SetScopeFrameByIndex)(THIS_ ULONG Index) PURE;
+    STDMETHOD(SetScopeFromJitDebugInfo)(THIS_ ULONG OutputControl, ULONG64 
InfoOffset) PURE;
+    STDMETHOD(SetScopeFromStoredEvent)(THIS) PURE;
+    STDMETHOD(OutputSymbolByOffset)(THIS_ ULONG OutputControl, ULONG Flags, 
ULONG64 Offset) PURE;
+    STDMETHOD(GetFunctionEntryByOffset)(THIS_ ULONG64 Offset, ULONG Flags, 
PVOID Buffer, ULONG BufferSize, PULONG BufferNeeded) PURE;
+    STDMETHOD(GetFieldTypeAndOffset)(THIS_ ULONG64 Module, ULONG 
ContainerTypeId, PCSTR Field, PULONG FieldTypeId, PULONG Offset) PURE;
+    STDMETHOD(GetFieldTypeAndOffsetWide)(THIS_ ULONG64 Module, ULONG 
ContainerTypeId, PCWSTR Field, PULONG FieldTypeId, PULONG Offset) PURE;
+    STDMETHOD(AddSyntheticSymbol)(THIS_ ULONG64 Offset, ULONG Size, PCSTR 
Name, ULONG Flags, PDEBUG_MODULE_AND_ID Id) PURE;
+    STDMETHOD(AddSyntheticSymbolWide)(THIS_ ULONG64 Offset, ULONG Size, PCWSTR 
Name, ULONG Flags, PDEBUG_MODULE_AND_ID Id) PURE;
+    STDMETHOD(RemoveSyntheticSymbol)(THIS_ PDEBUG_MODULE_AND_ID Id) PURE;
+    STDMETHOD(GetSymbolEntriesByOffset)(THIS_ ULONG64 Offset, ULONG Flags, 
PDEBUG_MODULE_AND_ID Ids, PULONG64 Displacements, ULONG IdsCount, PULONG 
Entries) PURE;
+    STDMETHOD(GetSymbolEntriesByName)(THIS_ PCSTR Symbol, ULONG Flags, 
PDEBUG_MODULE_AND_ID Ids, ULONG IdsCount, PULONG Entries) PURE;
+    STDMETHOD(GetSymbolEntriesByNameWide)(THIS_ PCWSTR Symbol, ULONG Flags, 
PDEBUG_MODULE_AND_ID Ids, ULONG IdsCount, PULONG Entries) PURE;
+    STDMETHOD(GetSymbolEntryByToken)(THIS_ ULONG64 ModuleBase, ULONG Token, 
PDEBUG_MODULE_AND_ID Id) PURE;
+    STDMETHOD(GetSymbolEntryInformation)(THIS_ PDEBUG_MODULE_AND_ID Id, 
PDEBUG_SYMBOL_ENTRY Info) PURE;
+    STDMETHOD(GetSymbolEntryString)(THIS_ PDEBUG_MODULE_AND_ID Id, ULONG 
Which, PSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
+    STDMETHOD(GetSymbolEntryStringWide)(THIS_ PDEBUG_MODULE_AND_ID Id, ULONG 
Which, PWSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
+    STDMETHOD(GetSymbolEntryOffsetRegions)(THIS_ PDEBUG_MODULE_AND_ID Id, 
ULONG Flags, PDEBUG_OFFSET_REGION Regions, ULONG RegionsCount, PULONG 
RegionsAvail) PURE;
+    STDMETHOD(GetSymbolEntryBySymbolEntry)(THIS_ PDEBUG_MODULE_AND_ID FromId, 
ULONG Flags, PDEBUG_MODULE_AND_ID ToId) PURE;
+    STDMETHOD(GetSourceEntriesByOffset)(THIS_ ULONG64 Offset, ULONG Flags, 
PDEBUG_SYMBOL_SOURCE_ENTRY Entries, ULONG EntriesCount, PULONG EntriesAvail) 
PURE;
+    STDMETHOD(GetSourceEntriesByLine)(THIS_ ULONG Line, PCSTR File, ULONG 
Flags, PDEBUG_SYMBOL_SOURCE_ENTRY Entries, ULONG EntriesCount, PULONG 
EntriesAvail) PURE;
+    STDMETHOD(GetSourceEntriesByLineWide)(THIS_ ULONG Line, PCWSTR File, ULONG 
Flags, PDEBUG_SYMBOL_SOURCE_ENTRY Entries, ULONG EntriesCount, PULONG 
EntriesAvail) PURE;
+    STDMETHOD(GetSourceEntryString)(THIS_ PDEBUG_SYMBOL_SOURCE_ENTRY Entry, 
ULONG Which, PSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
+    STDMETHOD(GetSourceEntryStringWide)(THIS_ PDEBUG_SYMBOL_SOURCE_ENTRY 
Entry, ULONG Which, PWSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
+    STDMETHOD(GetSourceEntryOffsetRegions)(THIS_ PDEBUG_SYMBOL_SOURCE_ENTRY 
Entry, ULONG Flags, PDEBUG_OFFSET_REGION Regions, ULONG RegionsCount, PULONG 
RegionsAvail) PURE;
+    STDMETHOD(GetSourceEntryBySourceEntry)(THIS_ PDEBUG_SYMBOL_SOURCE_ENTRY 
FromEntry, ULONG Flags, PDEBUG_SYMBOL_SOURCE_ENTRY ToEntry) PURE;
+  };
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDebugSymbols3,0xf02fbecc,0x50ac,0x4f36,0x9a,0xd9,0xc9,0x75,0xe8,0xf3,0x2f,0xf8)
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDebugSymbols4
+  DECLARE_INTERFACE_(IDebugSymbols4, IUnknown) {
+    STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    STDMETHOD(GetSymbolOptions)(THIS_ PULONG Options) PURE;
+    STDMETHOD(AddSymbolOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(RemoveSymbolOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(SetSymbolOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(GetNameByOffset)(THIS_ ULONG64 Offset, PSTR NameBuffer, ULONG 
NameBufferSize, PULONG NameSize, PULONG64 Displacement) PURE;
+    STDMETHOD(GetOffsetByName)(THIS_ PCSTR Symbol, PULONG64 Offset) PURE;
+    STDMETHOD(GetNearNameByOffset)(THIS_ ULONG64 Offset, LONG Delta, PSTR 
NameBuffer, ULONG NameBufferSize, PULONG NameSize, PULONG64 Displacement) PURE;
+    STDMETHOD(GetLineByOffset)(THIS_ ULONG64 Offset, PULONG Line, PSTR 
FileBuffer, ULONG FileBufferSize, PULONG FileSize, PULONG64 Displacement) PURE;
+    STDMETHOD(GetOffsetByLine)(THIS_ ULONG Line, PCSTR File, PULONG64 Offset) 
PURE;
+    STDMETHOD(GetNumberModules)(THIS_ PULONG Loaded, PULONG Unloaded) PURE;
+    STDMETHOD(GetModuleByIndex)(THIS_ ULONG Index, PULONG64 Base) PURE;
+    STDMETHOD(GetModuleByModuleName)(THIS_ PCSTR Name, ULONG StartIndex, 
PULONG Index, PULONG64 Base) PURE;
+    STDMETHOD(GetModuleByOffset)(THIS_ ULONG64 Offset, ULONG StartIndex, 
PULONG Index, PULONG64 Base) PURE;
+    STDMETHOD(GetModuleNames)(THIS_ ULONG Index, ULONG64 Base, PSTR 
ImageNameBuffer, ULONG ImageNameBufferSize, PULONG ImageNameSize, PSTR 
ModuleNameBuffer, ULONG ModuleNameBufferSize, PULONG ModuleNameSize, PSTR 
LoadedImageNameBuffer, ULONG LoadedImageNameBufferSize, PULONG 
LoadedImageNameSize) PURE;
+    STDMETHOD(GetModuleParameters)(THIS_ ULONG Count, PULONG64 Bases, ULONG 
Start, PDEBUG_MODULE_PARAMETERS Params) PURE;
+    STDMETHOD(GetSymbolModule)(THIS_ PCSTR Symbol, PULONG64 Base) PURE;
+    STDMETHOD(GetTypeName)(THIS_ ULONG64 Module, ULONG TypeId, PSTR 
NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
+    STDMETHOD(GetTypeId)(THIS_ ULONG64 Module, PCSTR Name, PULONG TypeId) PURE;
+    STDMETHOD(GetTypeSize)(THIS_ ULONG64 Module, ULONG TypeId, PULONG Size) 
PURE;
+    STDMETHOD(GetFieldOffset)(THIS_ ULONG64 Module, ULONG TypeId, PCSTR Field, 
PULONG Offset) PURE;
+    STDMETHOD(GetSymbolTypeId)(THIS_ PCSTR Symbol, PULONG TypeId, PULONG64 
Module) PURE;
+    STDMETHOD(GetOffsetTypeId)(THIS_ ULONG64 Offset, PULONG TypeId, PULONG64 
Module) PURE;
+    STDMETHOD(ReadTypedDataVirtual)(THIS_ ULONG64 Offset, ULONG64 Module, 
ULONG TypeId, PVOID Buffer, ULONG BufferSize, PULONG BytesRead) PURE;
+    STDMETHOD(WriteTypedDataVirtual)(THIS_ ULONG64 Offset, ULONG64 Module, 
ULONG TypeId, PVOID Buffer, ULONG BufferSize, PULONG BytesWritten) PURE;
+    STDMETHOD(OutputTypedDataVirtual)(THIS_ ULONG OutputControl, ULONG64 
Offset, ULONG64 Module, ULONG TypeId, ULONG Flags) PURE;
+    STDMETHOD(ReadTypedDataPhysical)(THIS_ ULONG64 Offset, ULONG64 Module, 
ULONG TypeId, PVOID Buffer, ULONG BufferSize, PULONG BytesRead) PURE;
+    STDMETHOD(WriteTypedDataPhysical)(THIS_ ULONG64 Offset, ULONG64 Module, 
ULONG TypeId, PVOID Buffer, ULONG BufferSize, PULONG BytesWritten) PURE;
+    STDMETHOD(OutputTypedDataPhysical)(THIS_ ULONG OutputControl, ULONG64 
Offset, ULONG64 Module, ULONG TypeId, ULONG Flags) PURE;
+    STDMETHOD(GetScope)(THIS_ PULONG64 InstructionOffset, PDEBUG_STACK_FRAME 
ScopeFrame, PVOID ScopeContext, ULONG ScopeContextSize) PURE;
+    STDMETHOD(SetScope)(THIS_ ULONG64 InstructionOffset, PDEBUG_STACK_FRAME 
ScopeFrame, PVOID ScopeContext, ULONG ScopeContextSize) PURE;
+    STDMETHOD(ResetScope)(THIS) PURE;
+    STDMETHOD(GetScopeSymbolGroup)(THIS_ ULONG Flags, PDEBUG_SYMBOL_GROUP 
Update, PDEBUG_SYMBOL_GROUP *Symbols) PURE;
+    STDMETHOD(CreateSymbolGroup)(THIS_ PDEBUG_SYMBOL_GROUP *Group) PURE;
+    STDMETHOD(StartSymbolMatch)(THIS_ PCSTR Pattern, PULONG64 Handle) PURE;
+    STDMETHOD(GetNextSymbolMatch)(THIS_ ULONG64 Handle, PSTR Buffer, ULONG 
BufferSize, PULONG MatchSize, PULONG64 Offset) PURE;
+    STDMETHOD(EndSymbolMatch)(THIS_ ULONG64 Handle) PURE;
+    STDMETHOD(Reload)(THIS_ PCSTR Module) PURE;
+    STDMETHOD(GetSymbolPath)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG 
PathSize) PURE;
+    STDMETHOD(SetSymbolPath)(THIS_ PCSTR Path) PURE;
+    STDMETHOD(AppendSymbolPath)(THIS_ PCSTR Addition) PURE;
+    STDMETHOD(GetImagePath)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG 
PathSize) PURE;
+    STDMETHOD(SetImagePath)(THIS_ PCSTR Path) PURE;
+    STDMETHOD(AppendImagePath)(THIS_ PCSTR Addition) PURE;
+    STDMETHOD(GetSourcePath)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG 
PathSize) PURE;
+    STDMETHOD(GetSourcePathElement)(THIS_ ULONG Index, PSTR Buffer, ULONG 
BufferSize, PULONG ElementSize) PURE;
+    STDMETHOD(SetSourcePath)(THIS_ PCSTR Path) PURE;
+    STDMETHOD(AppendSourcePath)(THIS_ PCSTR Addition) PURE;
+    STDMETHOD(FindSourceFile)(THIS_ ULONG StartElement, PCSTR File, ULONG 
Flags, PULONG FoundElement, PSTR Buffer, ULONG BufferSize, PULONG FoundSize) 
PURE;
+    STDMETHOD(GetSourceFileLineOffsets)(THIS_ PCSTR File, PULONG64 Buffer, 
ULONG BufferLines, PULONG FileLines) PURE;
+    STDMETHOD(GetModuleVersionInformation)(THIS_ ULONG Index, ULONG64 Base, 
PCSTR Item, PVOID Buffer, ULONG BufferSize, PULONG VerInfoSize) PURE;
+    STDMETHOD(GetModuleNameString)(THIS_ ULONG Which, ULONG Index, ULONG64 
Base, PSTR Buffer, ULONG BufferSize, PULONG NameSize) PURE;
+    STDMETHOD(GetConstantName)(THIS_ ULONG64 Module, ULONG TypeId, ULONG64 
Value, PSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
+    STDMETHOD(GetFieldName)(THIS_ ULONG64 Module, ULONG TypeId, ULONG 
FieldIndex, PSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
+    STDMETHOD(GetTypeOptions)(THIS_ PULONG Options) PURE;
+    STDMETHOD(AddTypeOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(RemoveTypeOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(SetTypeOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(GetNameByOffsetWide)(THIS_ ULONG64 Offset, PWSTR NameBuffer, 
ULONG NameBufferSize, PULONG NameSize, PULONG64 Displacement) PURE;
+    STDMETHOD(GetOffsetByNameWide)(THIS_ PCWSTR Symbol, PULONG64 Offset) PURE;
+    STDMETHOD(GetNearNameByOffsetWide)(THIS_ ULONG64 Offset, LONG Delta, PWSTR 
NameBuffer, ULONG NameBufferSize, PULONG NameSize, PULONG64 Displacement) PURE;
+    STDMETHOD(GetLineByOffsetWide)(THIS_ ULONG64 Offset, PULONG Line, PWSTR 
FileBuffer, ULONG FileBufferSize, PULONG FileSize, PULONG64 Displacement) PURE;
+    STDMETHOD(GetOffsetByLineWide)(THIS_ ULONG Line, PCWSTR File, PULONG64 
Offset) PURE;
+    STDMETHOD(GetModuleByModuleNameWide)(THIS_ PCWSTR Name, ULONG StartIndex, 
PULONG Index, PULONG64 Base) PURE;
+    STDMETHOD(GetSymbolModuleWide)(THIS_ PCWSTR Symbol, PULONG64 Base) PURE;
+    STDMETHOD(GetTypeNameWide)(THIS_ ULONG64 Module, ULONG TypeId, PWSTR 
NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
+    STDMETHOD(GetTypeIdWide)(THIS_ ULONG64 Module, PCWSTR Name, PULONG TypeId) 
PURE;
+    STDMETHOD(GetFieldOffsetWide)(THIS_ ULONG64 Module, ULONG TypeId, PCWSTR 
Field, PULONG Offset) PURE;
+    STDMETHOD(GetSymbolTypeIdWide)(THIS_ PCWSTR Symbol, PULONG TypeId, 
PULONG64 Module) PURE;
+    STDMETHOD(GetScopeSymbolGroup2)(THIS_ ULONG Flags, PDEBUG_SYMBOL_GROUP2 
Update, PDEBUG_SYMBOL_GROUP2 *Symbols) PURE;
+    STDMETHOD(CreateSymbolGroup2)(THIS_ PDEBUG_SYMBOL_GROUP2 *Group) PURE;
+    STDMETHOD(StartSymbolMatchWide)(THIS_ PCWSTR Pattern, PULONG64 Handle) 
PURE;
+    STDMETHOD(GetNextSymbolMatchWide)(THIS_ ULONG64 Handle, PWSTR Buffer, 
ULONG BufferSize, PULONG MatchSize, PULONG64 Offset) PURE;
+    STDMETHOD(ReloadWide)(THIS_ PCWSTR Module) PURE;
+    STDMETHOD(GetSymbolPathWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG 
PathSize) PURE;
+    STDMETHOD(SetSymbolPathWide)(THIS_ PCWSTR Path) PURE;
+    STDMETHOD(AppendSymbolPathWide)(THIS_ PCWSTR Addition) PURE;
+    STDMETHOD(GetImagePathWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG 
PathSize) PURE;
+    STDMETHOD(SetImagePathWide)(THIS_ PCWSTR Path) PURE;
+    STDMETHOD(AppendImagePathWide)(THIS_ PCWSTR Addition) PURE;
+    STDMETHOD(GetSourcePathWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG 
PathSize) PURE;
+    STDMETHOD(GetSourcePathElementWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG 
BufferSize, PULONG ElementSize) PURE;
+    STDMETHOD(SetSourcePathWide)(THIS_ PCWSTR Path) PURE;
+    STDMETHOD(AppendSourcePathWide)(THIS_ PCWSTR Addition) PURE;
+    STDMETHOD(FindSourceFileWide)(THIS_ ULONG StartElement, PCWSTR File, ULONG 
Flags, PULONG FoundElement, PWSTR Buffer, ULONG BufferSize, PULONG FoundSize) 
PURE;
+    STDMETHOD(GetSourceFileLineOffsetsWide)(THIS_ PCWSTR File, PULONG64 
Buffer, ULONG BufferLines, PULONG FileLines) PURE;
+    STDMETHOD(GetModuleVersionInformationWide)(THIS_ ULONG Index, ULONG64 
Base, PCWSTR Item, PVOID Buffer, ULONG BufferSize, PULONG VerInfoSize) PURE;
+    STDMETHOD(GetModuleNameStringWide)(THIS_ ULONG Which, ULONG Index, ULONG64 
Base, PWSTR Buffer, ULONG BufferSize, PULONG NameSize) PURE;
+    STDMETHOD(GetConstantNameWide)(THIS_ ULONG64 Module, ULONG TypeId, ULONG64 
Value, PWSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
+    STDMETHOD(GetFieldNameWide)(THIS_ ULONG64 Module, ULONG TypeId, ULONG 
FieldIndex, PWSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
+    STDMETHOD(IsManagedModule)(THIS_ ULONG Index, ULONG64 Base) PURE;
+    STDMETHOD(GetModuleByModuleName2)(THIS_ PCSTR Name, ULONG StartIndex, 
ULONG Flags, PULONG Index, PULONG64 Base) PURE;
+    STDMETHOD(GetModuleByModuleName2Wide)(THIS_ PCWSTR Name, ULONG StartIndex, 
ULONG Flags, PULONG Index, PULONG64 Base) PURE;
+    STDMETHOD(GetModuleByOffset2)(THIS_ ULONG64 Offset, ULONG StartIndex, 
ULONG Flags, PULONG Index, PULONG64 Base) PURE;
+    STDMETHOD(AddSyntheticModule)(THIS_ ULONG64 Base, ULONG Size, PCSTR 
ImagePath, PCSTR ModuleName, ULONG Flags) PURE;
+    STDMETHOD(AddSyntheticModuleWide)(THIS_ ULONG64 Base, ULONG Size, PCWSTR 
ImagePath, PCWSTR ModuleName, ULONG Flags) PURE;
+    STDMETHOD(RemoveSyntheticModule)(THIS_ ULONG64 Base) PURE;
+    STDMETHOD(GetCurrentScopeFrameIndex)(THIS_ PULONG Index) PURE;
+    STDMETHOD(SetScopeFrameByIndex)(THIS_ ULONG Index) PURE;
+    STDMETHOD(SetScopeFromJitDebugInfo)(THIS_ ULONG OutputControl, ULONG64 
InfoOffset) PURE;
+    STDMETHOD(SetScopeFromStoredEvent)(THIS) PURE;
+    STDMETHOD(OutputSymbolByOffset)(THIS_ ULONG OutputControl, ULONG Flags, 
ULONG64 Offset) PURE;
+    STDMETHOD(GetFunctionEntryByOffset)(THIS_ ULONG64 Offset, ULONG Flags, 
PVOID Buffer, ULONG BufferSize, PULONG BufferNeeded) PURE;
+    STDMETHOD(GetFieldTypeAndOffset)(THIS_ ULONG64 Module, ULONG 
ContainerTypeId, PCSTR Field, PULONG FieldTypeId, PULONG Offset) PURE;
+    STDMETHOD(GetFieldTypeAndOffsetWide)(THIS_ ULONG64 Module, ULONG 
ContainerTypeId, PCWSTR Field, PULONG FieldTypeId, PULONG Offset) PURE;
+    STDMETHOD(AddSyntheticSymbol)(THIS_ ULONG64 Offset, ULONG Size, PCSTR 
Name, ULONG Flags, PDEBUG_MODULE_AND_ID Id) PURE;
+    STDMETHOD(AddSyntheticSymbolWide)(THIS_ ULONG64 Offset, ULONG Size, PCWSTR 
Name, ULONG Flags, PDEBUG_MODULE_AND_ID Id) PURE;
+    STDMETHOD(RemoveSyntheticSymbol)(THIS_ PDEBUG_MODULE_AND_ID Id) PURE;
+    STDMETHOD(GetSymbolEntriesByOffset)(THIS_ ULONG64 Offset, ULONG Flags, 
PDEBUG_MODULE_AND_ID Ids, PULONG64 Displacements, ULONG IdsCount, PULONG 
Entries) PURE;
+    STDMETHOD(GetSymbolEntriesByName)(THIS_ PCSTR Symbol, ULONG Flags, 
PDEBUG_MODULE_AND_ID Ids, ULONG IdsCount, PULONG Entries) PURE;
+    STDMETHOD(GetSymbolEntriesByNameWide)(THIS_ PCWSTR Symbol, ULONG Flags, 
PDEBUG_MODULE_AND_ID Ids, ULONG IdsCount, PULONG Entries) PURE;
+    STDMETHOD(GetSymbolEntryByToken)(THIS_ ULONG64 ModuleBase, ULONG Token, 
PDEBUG_MODULE_AND_ID Id) PURE;
+    STDMETHOD(GetSymbolEntryInformation)(THIS_ PDEBUG_MODULE_AND_ID Id, 
PDEBUG_SYMBOL_ENTRY Info) PURE;
+    STDMETHOD(GetSymbolEntryString)(THIS_ PDEBUG_MODULE_AND_ID Id, ULONG 
Which, PSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
+    STDMETHOD(GetSymbolEntryStringWide)(THIS_ PDEBUG_MODULE_AND_ID Id, ULONG 
Which, PWSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
+    STDMETHOD(GetSymbolEntryOffsetRegions)(THIS_ PDEBUG_MODULE_AND_ID Id, 
ULONG Flags, PDEBUG_OFFSET_REGION Regions, ULONG RegionsCount, PULONG 
RegionsAvail) PURE;
+    STDMETHOD(GetSymbolEntryBySymbolEntry)(THIS_ PDEBUG_MODULE_AND_ID FromId, 
ULONG Flags, PDEBUG_MODULE_AND_ID ToId) PURE;
+    STDMETHOD(GetSourceEntriesByOffset)(THIS_ ULONG64 Offset, ULONG Flags, 
PDEBUG_SYMBOL_SOURCE_ENTRY Entries, ULONG EntriesCount, PULONG EntriesAvail) 
PURE;
+    STDMETHOD(GetSourceEntriesByLine)(THIS_ ULONG Line, PCSTR File, ULONG 
Flags, PDEBUG_SYMBOL_SOURCE_ENTRY Entries, ULONG EntriesCount, PULONG 
EntriesAvail) PURE;
+    STDMETHOD(GetSourceEntriesByLineWide)(THIS_ ULONG Line, PCWSTR File, ULONG 
Flags, PDEBUG_SYMBOL_SOURCE_ENTRY Entries, ULONG EntriesCount, PULONG 
EntriesAvail) PURE;
+    STDMETHOD(GetSourceEntryString)(THIS_ PDEBUG_SYMBOL_SOURCE_ENTRY Entry, 
ULONG Which, PSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
+    STDMETHOD(GetSourceEntryStringWide)(THIS_ PDEBUG_SYMBOL_SOURCE_ENTRY 
Entry, ULONG Which, PWSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
+    STDMETHOD(GetSourceEntryOffsetRegions)(THIS_ PDEBUG_SYMBOL_SOURCE_ENTRY 
Entry, ULONG Flags, PDEBUG_OFFSET_REGION Regions, ULONG RegionsCount, PULONG 
RegionsAvail) PURE;
+    STDMETHOD(GetSourceEntryBySourceEntry)(THIS_ PDEBUG_SYMBOL_SOURCE_ENTRY 
FromEntry, ULONG Flags, PDEBUG_SYMBOL_SOURCE_ENTRY ToEntry) PURE;
+    STDMETHOD(GetScopeEx)(THIS_ PULONG64 InstructionOffset, 
PDEBUG_STACK_FRAME_EX ScopeFrame, PVOID ScopeContext, ULONG ScopeContextSize) 
PURE;
+    STDMETHOD(SetScopeEx)(THIS_ ULONG64 InstructionOffset, 
PDEBUG_STACK_FRAME_EX ScopeFrame, PVOID ScopeContext, ULONG ScopeContextSize) 
PURE;
+    STDMETHOD(GetNameByInlineContext)(THIS_ ULONG64 Offset, ULONG 
InlineContext, PSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize, PULONG64 
Displacement) PURE;
+    STDMETHOD(GetNameByInlineContextWide)(THIS_ ULONG64 Offset, ULONG 
InlineContext, PWSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize, 
PULONG64 Displacement) PURE;
+    STDMETHOD(GetLineByInlineContext)(THIS_ ULONG64 Offset, ULONG 
InlineContext, PULONG Line, PSTR FileBuffer, ULONG FileBufferSize, PULONG 
FileSize, PULONG64 Displacement) PURE;
+    STDMETHOD(GetLineByInlineContextWide)(THIS_ ULONG64 Offset, ULONG 
InlineContext, PULONG Line, PWSTR FileBuffer, ULONG FileBufferSize, PULONG 
FileSize, PULONG64 Displacement) PURE;
+    STDMETHOD(OutputSymbolByInlineContext)(THIS_ ULONG OutputControl, ULONG 
Flags, ULONG64 Offset, ULONG InlineContext) PURE;
+  };
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDebugSymbols4,0xe391bbd8,0x9d8c,0x4418,0x84,0x0b,0xc0,0x06,0x59,0x2a,0x17,0x52)
+#endif
+
+#define DEBUG_FRAME_DEFAULT 0
+#define DEBUG_FRAME_IGNORE_INLINE 0x00000001
+
+#undef INTERFACE
+#define INTERFACE IDebugSymbols5
+  DECLARE_INTERFACE_(IDebugSymbols5, IUnknown) {
+    STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    STDMETHOD(GetSymbolOptions)(THIS_ PULONG Options) PURE;
+    STDMETHOD(AddSymbolOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(RemoveSymbolOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(SetSymbolOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(GetNameByOffset)(THIS_ ULONG64 Offset, PSTR NameBuffer, ULONG 
NameBufferSize, PULONG NameSize, PULONG64 Displacement) PURE;
+    STDMETHOD(GetOffsetByName)(THIS_ PCSTR Symbol, PULONG64 Offset) PURE;
+    STDMETHOD(GetNearNameByOffset)(THIS_ ULONG64 Offset, LONG Delta, PSTR 
NameBuffer, ULONG NameBufferSize, PULONG NameSize, PULONG64 Displacement) PURE;
+    STDMETHOD(GetLineByOffset)(THIS_ ULONG64 Offset, PULONG Line, PSTR 
FileBuffer, ULONG FileBufferSize, PULONG FileSize, PULONG64 Displacement) PURE;
+    STDMETHOD(GetOffsetByLine)(THIS_ ULONG Line, PCSTR File, PULONG64 Offset) 
PURE;
+    STDMETHOD(GetNumberModules)(THIS_ PULONG Loaded, PULONG Unloaded) PURE;
+    STDMETHOD(GetModuleByIndex)(THIS_ ULONG Index, PULONG64 Base) PURE;
+    STDMETHOD(GetModuleByModuleName)(THIS_ PCSTR Name, ULONG StartIndex, 
PULONG Index, PULONG64 Base) PURE;
+    STDMETHOD(GetModuleByOffset)(THIS_ ULONG64 Offset, ULONG StartIndex, 
PULONG Index, PULONG64 Base) PURE;
+    STDMETHOD(GetModuleNames)(THIS_ ULONG Index, ULONG64 Base, PSTR 
ImageNameBuffer, ULONG ImageNameBufferSize, PULONG ImageNameSize, PSTR 
ModuleNameBuffer, ULONG ModuleNameBufferSize, PULONG ModuleNameSize, PSTR 
LoadedImageNameBuffer, ULONG LoadedImageNameBufferSize, PULONG 
LoadedImageNameSize) PURE;
+    STDMETHOD(GetModuleParameters)(THIS_ ULONG Count, PULONG64 Bases, ULONG 
Start, PDEBUG_MODULE_PARAMETERS Params) PURE;
+    STDMETHOD(GetSymbolModule)(THIS_ PCSTR Symbol, PULONG64 Base) PURE;
+    STDMETHOD(GetTypeName)(THIS_ ULONG64 Module, ULONG TypeId, PSTR 
NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
+    STDMETHOD(GetTypeId)(THIS_ ULONG64 Module, PCSTR Name, PULONG TypeId) PURE;
+    STDMETHOD(GetTypeSize)(THIS_ ULONG64 Module, ULONG TypeId, PULONG Size) 
PURE;
+    STDMETHOD(GetFieldOffset)(THIS_ ULONG64 Module, ULONG TypeId, PCSTR Field, 
PULONG Offset) PURE;
+    STDMETHOD(GetSymbolTypeId)(THIS_ PCSTR Symbol, PULONG TypeId, PULONG64 
Module) PURE;
+    STDMETHOD(GetOffsetTypeId)(THIS_ ULONG64 Offset, PULONG TypeId, PULONG64 
Module) PURE;
+    STDMETHOD(ReadTypedDataVirtual)(THIS_ ULONG64 Offset, ULONG64 Module, 
ULONG TypeId, PVOID Buffer, ULONG BufferSize, PULONG BytesRead) PURE;
+    STDMETHOD(WriteTypedDataVirtual)(THIS_ ULONG64 Offset, ULONG64 Module, 
ULONG TypeId, PVOID Buffer, ULONG BufferSize, PULONG BytesWritten) PURE;
+    STDMETHOD(OutputTypedDataVirtual)(THIS_ ULONG OutputControl, ULONG64 
Offset, ULONG64 Module, ULONG TypeId, ULONG Flags) PURE;
+    STDMETHOD(ReadTypedDataPhysical)(THIS_ ULONG64 Offset, ULONG64 Module, 
ULONG TypeId, PVOID Buffer, ULONG BufferSize, PULONG BytesRead) PURE;
+    STDMETHOD(WriteTypedDataPhysical)(THIS_ ULONG64 Offset, ULONG64 Module, 
ULONG TypeId, PVOID Buffer, ULONG BufferSize, PULONG BytesWritten) PURE;
+    STDMETHOD(OutputTypedDataPhysical)(THIS_ ULONG OutputControl, ULONG64 
Offset, ULONG64 Module, ULONG TypeId, ULONG Flags) PURE;
+    STDMETHOD(GetScope)(THIS_ PULONG64 InstructionOffset, PDEBUG_STACK_FRAME 
ScopeFrame, PVOID ScopeContext, ULONG ScopeContextSize) PURE;
+    STDMETHOD(SetScope)(THIS_ ULONG64 InstructionOffset, PDEBUG_STACK_FRAME 
ScopeFrame, PVOID ScopeContext, ULONG ScopeContextSize) PURE;
+    STDMETHOD(ResetScope)(THIS) PURE;
+    STDMETHOD(GetScopeSymbolGroup)(THIS_ ULONG Flags, PDEBUG_SYMBOL_GROUP 
Update, PDEBUG_SYMBOL_GROUP *Symbols) PURE;
+    STDMETHOD(CreateSymbolGroup)(THIS_ PDEBUG_SYMBOL_GROUP *Group) PURE;
+    STDMETHOD(StartSymbolMatch)(THIS_ PCSTR Pattern, PULONG64 Handle) PURE;
+    STDMETHOD(GetNextSymbolMatch)(THIS_ ULONG64 Handle, PSTR Buffer, ULONG 
BufferSize, PULONG MatchSize, PULONG64 Offset) PURE;
+    STDMETHOD(EndSymbolMatch)(THIS_ ULONG64 Handle) PURE;
+    STDMETHOD(Reload)(THIS_ PCSTR Module) PURE;
+    STDMETHOD(GetSymbolPath)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG 
PathSize) PURE;
+    STDMETHOD(SetSymbolPath)(THIS_ PCSTR Path) PURE;
+    STDMETHOD(AppendSymbolPath)(THIS_ PCSTR Addition) PURE;
+    STDMETHOD(GetImagePath)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG 
PathSize) PURE;
+    STDMETHOD(SetImagePath)(THIS_ PCSTR Path) PURE;
+    STDMETHOD(AppendImagePath)(THIS_ PCSTR Addition) PURE;
+    STDMETHOD(GetSourcePath)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG 
PathSize) PURE;
+    STDMETHOD(GetSourcePathElement)(THIS_ ULONG Index, PSTR Buffer, ULONG 
BufferSize, PULONG ElementSize) PURE;
+    STDMETHOD(SetSourcePath)(THIS_ PCSTR Path) PURE;
+    STDMETHOD(AppendSourcePath)(THIS_ PCSTR Addition) PURE;
+    STDMETHOD(FindSourceFile)(THIS_ ULONG StartElement, PCSTR File, ULONG 
Flags, PULONG FoundElement, PSTR Buffer, ULONG BufferSize, PULONG FoundSize) 
PURE;
+    STDMETHOD(GetSourceFileLineOffsets)(THIS_ PCSTR File, PULONG64 Buffer, 
ULONG BufferLines, PULONG FileLines) PURE;
+    STDMETHOD(GetModuleVersionInformation)(THIS_ ULONG Index, ULONG64 Base, 
PCSTR Item, PVOID Buffer, ULONG BufferSize, PULONG VerInfoSize) PURE;
+    STDMETHOD(GetModuleNameString)(THIS_ ULONG Which, ULONG Index, ULONG64 
Base, PSTR Buffer, ULONG BufferSize, PULONG NameSize) PURE;
+    STDMETHOD(GetConstantName)(THIS_ ULONG64 Module, ULONG TypeId, ULONG64 
Value, PSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
+    STDMETHOD(GetFieldName)(THIS_ ULONG64 Module, ULONG TypeId, ULONG 
FieldIndex, PSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
+    STDMETHOD(GetTypeOptions)(THIS_ PULONG Options) PURE;
+    STDMETHOD(AddTypeOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(RemoveTypeOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(SetTypeOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(GetNameByOffsetWide)(THIS_ ULONG64 Offset, PWSTR NameBuffer, 
ULONG NameBufferSize, PULONG NameSize, PULONG64 Displacement) PURE;
+    STDMETHOD(GetOffsetByNameWide)(THIS_ PCWSTR Symbol, PULONG64 Offset) PURE;
+    STDMETHOD(GetNearNameByOffsetWide)(THIS_ ULONG64 Offset, LONG Delta, PWSTR 
NameBuffer, ULONG NameBufferSize, PULONG NameSize, PULONG64 Displacement) PURE;
+    STDMETHOD(GetLineByOffsetWide)(THIS_ ULONG64 Offset, PULONG Line, PWSTR 
FileBuffer, ULONG FileBufferSize, PULONG FileSize, PULONG64 Displacement) PURE;
+    STDMETHOD(GetOffsetByLineWide)(THIS_ ULONG Line, PCWSTR File, PULONG64 
Offset) PURE;
+    STDMETHOD(GetModuleByModuleNameWide)(THIS_ PCWSTR Name, ULONG StartIndex, 
PULONG Index, PULONG64 Base) PURE;
+    STDMETHOD(GetSymbolModuleWide)(THIS_ PCWSTR Symbol, PULONG64 Base) PURE;
+    STDMETHOD(GetTypeNameWide)(THIS_ ULONG64 Module, ULONG TypeId, PWSTR 
NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
+    STDMETHOD(GetTypeIdWide)(THIS_ ULONG64 Module, PCWSTR Name, PULONG TypeId) 
PURE;
+    STDMETHOD(GetFieldOffsetWide)(THIS_ ULONG64 Module, ULONG TypeId, PCWSTR 
Field, PULONG Offset) PURE;
+    STDMETHOD(GetSymbolTypeIdWide)(THIS_ PCWSTR Symbol, PULONG TypeId, 
PULONG64 Module) PURE;
+    STDMETHOD(GetScopeSymbolGroup2)(THIS_ ULONG Flags, PDEBUG_SYMBOL_GROUP2 
Update, PDEBUG_SYMBOL_GROUP2 *Symbols) PURE;
+    STDMETHOD(CreateSymbolGroup2)(THIS_ PDEBUG_SYMBOL_GROUP2 *Group) PURE;
+    STDMETHOD(StartSymbolMatchWide)(THIS_ PCWSTR Pattern, PULONG64 Handle) 
PURE;
+    STDMETHOD(GetNextSymbolMatchWide)(THIS_ ULONG64 Handle, PWSTR Buffer, 
ULONG BufferSize, PULONG MatchSize, PULONG64 Offset) PURE;
+    STDMETHOD(ReloadWide)(THIS_ PCWSTR Module) PURE;
+    STDMETHOD(GetSymbolPathWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG 
PathSize) PURE;
+    STDMETHOD(SetSymbolPathWide)(THIS_ PCWSTR Path) PURE;
+    STDMETHOD(AppendSymbolPathWide)(THIS_ PCWSTR Addition) PURE;
+    STDMETHOD(GetImagePathWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG 
PathSize) PURE;
+    STDMETHOD(SetImagePathWide)(THIS_ PCWSTR Path) PURE;
+    STDMETHOD(AppendImagePathWide)(THIS_ PCWSTR Addition) PURE;
+    STDMETHOD(GetSourcePathWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG 
PathSize) PURE;
+    STDMETHOD(GetSourcePathElementWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG 
BufferSize, PULONG ElementSize) PURE;
+    STDMETHOD(SetSourcePathWide)(THIS_ PCWSTR Path) PURE;
+    STDMETHOD(AppendSourcePathWide)(THIS_ PCWSTR Addition) PURE;
+    STDMETHOD(FindSourceFileWide)(THIS_ ULONG StartElement, PCWSTR File, ULONG 
Flags, PULONG FoundElement, PWSTR Buffer, ULONG BufferSize, PULONG FoundSize) 
PURE;
+    STDMETHOD(GetSourceFileLineOffsetsWide)(THIS_ PCWSTR File, PULONG64 
Buffer, ULONG BufferLines, PULONG FileLines) PURE;
+    STDMETHOD(GetModuleVersionInformationWide)(THIS_ ULONG Index, ULONG64 
Base, PCWSTR Item, PVOID Buffer, ULONG BufferSize, PULONG VerInfoSize) PURE;
+    STDMETHOD(GetModuleNameStringWide)(THIS_ ULONG Which, ULONG Index, ULONG64 
Base, PWSTR Buffer, ULONG BufferSize, PULONG NameSize) PURE;
+    STDMETHOD(GetConstantNameWide)(THIS_ ULONG64 Module, ULONG TypeId, ULONG64 
Value, PWSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
+    STDMETHOD(GetFieldNameWide)(THIS_ ULONG64 Module, ULONG TypeId, ULONG 
FieldIndex, PWSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
+    STDMETHOD(IsManagedModule)(THIS_ ULONG Index, ULONG64 Base) PURE;
+    STDMETHOD(GetModuleByModuleName2)(THIS_ PCSTR Name, ULONG StartIndex, 
ULONG Flags, PULONG Index, PULONG64 Base) PURE;
+    STDMETHOD(GetModuleByModuleName2Wide)(THIS_ PCWSTR Name, ULONG StartIndex, 
ULONG Flags, PULONG Index, PULONG64 Base) PURE;
+    STDMETHOD(GetModuleByOffset2)(THIS_ ULONG64 Offset, ULONG StartIndex, 
ULONG Flags, PULONG Index, PULONG64 Base) PURE;
+    STDMETHOD(AddSyntheticModule)(THIS_ ULONG64 Base, ULONG Size, PCSTR 
ImagePath, PCSTR ModuleName, ULONG Flags) PURE;
+    STDMETHOD(AddSyntheticModuleWide)(THIS_ ULONG64 Base, ULONG Size, PCWSTR 
ImagePath, PCWSTR ModuleName, ULONG Flags) PURE;
+    STDMETHOD(RemoveSyntheticModule)(THIS_ ULONG64 Base) PURE;
+    STDMETHOD(GetCurrentScopeFrameIndex)(THIS_ PULONG Index) PURE;
+    STDMETHOD(SetScopeFrameByIndex)(THIS_ ULONG Index) PURE;
+    STDMETHOD(SetScopeFromJitDebugInfo)(THIS_ ULONG OutputControl, ULONG64 
InfoOffset) PURE;
+    STDMETHOD(SetScopeFromStoredEvent)(THIS) PURE;
+    STDMETHOD(OutputSymbolByOffset)(THIS_ ULONG OutputControl, ULONG Flags, 
ULONG64 Offset) PURE;
+    STDMETHOD(GetFunctionEntryByOffset)(THIS_ ULONG64 Offset, ULONG Flags, 
PVOID Buffer, ULONG BufferSize, PULONG BufferNeeded) PURE;
+    STDMETHOD(GetFieldTypeAndOffset)(THIS_ ULONG64 Module, ULONG 
ContainerTypeId, PCSTR Field, PULONG FieldTypeId, PULONG Offset) PURE;
+    STDMETHOD(GetFieldTypeAndOffsetWide)(THIS_ ULONG64 Module, ULONG 
ContainerTypeId, PCWSTR Field, PULONG FieldTypeId, PULONG Offset) PURE;
+    STDMETHOD(AddSyntheticSymbol)(THIS_ ULONG64 Offset, ULONG Size, PCSTR 
Name, ULONG Flags, PDEBUG_MODULE_AND_ID Id) PURE;
+    STDMETHOD(AddSyntheticSymbolWide)(THIS_ ULONG64 Offset, ULONG Size, PCWSTR 
Name, ULONG Flags, PDEBUG_MODULE_AND_ID Id) PURE;
+    STDMETHOD(RemoveSyntheticSymbol)(THIS_ PDEBUG_MODULE_AND_ID Id) PURE;
+    STDMETHOD(GetSymbolEntriesByOffset)(THIS_ ULONG64 Offset, ULONG Flags, 
PDEBUG_MODULE_AND_ID Ids, PULONG64 Displacements, ULONG IdsCount, PULONG 
Entries) PURE;
+    STDMETHOD(GetSymbolEntriesByName)(THIS_ PCSTR Symbol, ULONG Flags, 
PDEBUG_MODULE_AND_ID Ids, ULONG IdsCount, PULONG Entries) PURE;
+    STDMETHOD(GetSymbolEntriesByNameWide)(THIS_ PCWSTR Symbol, ULONG Flags, 
PDEBUG_MODULE_AND_ID Ids, ULONG IdsCount, PULONG Entries) PURE;
+    STDMETHOD(GetSymbolEntryByToken)(THIS_ ULONG64 ModuleBase, ULONG Token, 
PDEBUG_MODULE_AND_ID Id) PURE;
+    STDMETHOD(GetSymbolEntryInformation)(THIS_ PDEBUG_MODULE_AND_ID Id, 
PDEBUG_SYMBOL_ENTRY Info) PURE;
+    STDMETHOD(GetSymbolEntryString)(THIS_ PDEBUG_MODULE_AND_ID Id, ULONG 
Which, PSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
+    STDMETHOD(GetSymbolEntryStringWide)(THIS_ PDEBUG_MODULE_AND_ID Id, ULONG 
Which, PWSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
+    STDMETHOD(GetSymbolEntryOffsetRegions)(THIS_ PDEBUG_MODULE_AND_ID Id, 
ULONG Flags, PDEBUG_OFFSET_REGION Regions, ULONG RegionsCount, PULONG 
RegionsAvail) PURE;
+    STDMETHOD(GetSymbolEntryBySymbolEntry)(THIS_ PDEBUG_MODULE_AND_ID FromId, 
ULONG Flags, PDEBUG_MODULE_AND_ID ToId) PURE;
+    STDMETHOD(GetSourceEntriesByOffset)(THIS_ ULONG64 Offset, ULONG Flags, 
PDEBUG_SYMBOL_SOURCE_ENTRY Entries, ULONG EntriesCount, PULONG EntriesAvail) 
PURE;
+    STDMETHOD(GetSourceEntriesByLine)(THIS_ ULONG Line, PCSTR File, ULONG 
Flags, PDEBUG_SYMBOL_SOURCE_ENTRY Entries, ULONG EntriesCount, PULONG 
EntriesAvail) PURE;
+    STDMETHOD(GetSourceEntriesByLineWide)(THIS_ ULONG Line, PCWSTR File, ULONG 
Flags, PDEBUG_SYMBOL_SOURCE_ENTRY Entries, ULONG EntriesCount, PULONG 
EntriesAvail) PURE;
+    STDMETHOD(GetSourceEntryString)(THIS_ PDEBUG_SYMBOL_SOURCE_ENTRY Entry, 
ULONG Which, PSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
+    STDMETHOD(GetSourceEntryStringWide)(THIS_ PDEBUG_SYMBOL_SOURCE_ENTRY 
Entry, ULONG Which, PWSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
+    STDMETHOD(GetSourceEntryOffsetRegions)(THIS_ PDEBUG_SYMBOL_SOURCE_ENTRY 
Entry, ULONG Flags, PDEBUG_OFFSET_REGION Regions, ULONG RegionsCount, PULONG 
RegionsAvail) PURE;
+    STDMETHOD(GetSourceEntryBySourceEntry)(THIS_ PDEBUG_SYMBOL_SOURCE_ENTRY 
FromEntry, ULONG Flags, PDEBUG_SYMBOL_SOURCE_ENTRY ToEntry) PURE;
+    STDMETHOD(GetScopeEx)(THIS_ PULONG64 InstructionOffset, 
PDEBUG_STACK_FRAME_EX ScopeFrame, PVOID ScopeContext, ULONG ScopeContextSize) 
PURE;
+    STDMETHOD(SetScopeEx)(THIS_ ULONG64 InstructionOffset, 
PDEBUG_STACK_FRAME_EX ScopeFrame, PVOID ScopeContext, ULONG ScopeContextSize) 
PURE;
+    STDMETHOD(GetNameByInlineContext)(THIS_ ULONG64 Offset, ULONG 
InlineContext, PSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize, PULONG64 
Displacement) PURE;
+    STDMETHOD(GetNameByInlineContextWide)(THIS_ ULONG64 Offset, ULONG 
InlineContext, PWSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize, 
PULONG64 Displacement) PURE;
+    STDMETHOD(GetLineByInlineContext)(THIS_ ULONG64 Offset, ULONG 
InlineContext, PULONG Line, PSTR FileBuffer, ULONG FileBufferSize, PULONG 
FileSize, PULONG64 Displacement) PURE;
+    STDMETHOD(GetLineByInlineContextWide)(THIS_ ULONG64 Offset, ULONG 
InlineContext, PULONG Line, PWSTR FileBuffer, ULONG FileBufferSize, PULONG 
FileSize, PULONG64 Displacement) PURE;
+    STDMETHOD(OutputSymbolByInlineContext)(THIS_ ULONG OutputControl, ULONG 
Flags, ULONG64 Offset, ULONG InlineContext) PURE;
+    STDMETHOD(GetCurrentScopeFrameIndexEx)(THIS_ ULONG Flags, PULONG Index) 
PURE;
+    STDMETHOD(SetScopeFrameByIndexEx)(THIS_ ULONG Flags, ULONG Index) PURE;
+  };
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDebugSymbols5,0xc65fa83e,0x1e69,0x475e,0x8e,0x0e,0xb5,0xd7,0x9e,0x9c,0xc1,0x7e)
+#endif
+
 #undef INTERFACE
 #define INTERFACE IDebugSystemObjects
   DECLARE_INTERFACE_(IDebugSystemObjects,IUnknown) {
-- 
2.46.0

_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to