From 660f396a20d956dc48e7abc658461a7ec5c1fe34 Mon Sep 17 00:00:00 2001
From: Biswapriyo Nath <[email protected]>
Date: Tue, 13 Aug 2024 02:47:10 +0000
Subject: [PATCH 1/5] include: Add new DebugAdvanced interfaces in dbgeng.h

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

diff --git a/mingw-w64-headers/include/dbgeng.h 
b/mingw-w64-headers/include/dbgeng.h
index cc9ca5d..3243de0 100644
--- a/mingw-w64-headers/include/dbgeng.h
+++ b/mingw-w64-headers/include/dbgeng.h
@@ -23,6 +23,9 @@ extern "C" {
 #endif
 
   
DEFINE_GUID(IID_IDebugAdvanced,0xf2df5f53,0x071f,0x47bd,0x9d,0xe6,0x57,0x34,0xc3,0xfe,0xd6,0x89);
+  
DEFINE_GUID(IID_IDebugAdvanced2,0x716d14c9,0x119b,0x4ba5,0xaf,0x1f,0x08,0x90,0xe6,0x72,0x41,0x6a);
+  
DEFINE_GUID(IID_IDebugAdvanced3,0xcba4abb4,0x84c4,0x444d,0x87,0xca,0xa0,0x4e,0x13,0x28,0x67,0x39);
+  
DEFINE_GUID(IID_IDebugAdvanced4,0xd1069067,0x2a65,0x4bf0,0xae,0x97,0x76,0x18,0x4b,0x67,0x85,0x6b);
   
DEFINE_GUID(IID_IDebugBreakpoint,0x5bd9d474,0x5975,0x423a,0xb8,0x8b,0x65,0xa8,0xe7,0x11,0x0e,0x65);
   
DEFINE_GUID(IID_IDebugBreakpoint2,0x1b278d20,0x79f2,0x426e,0xa3,0xf9,0xc1,0xdd,0xf3,0x75,0xd4,0x8e);
   
DEFINE_GUID(IID_IDebugBreakpoint3,0x38f5c249,0xb448,0x43bb,0x98,0x35,0x57,0x9d,0x4e,0xc0,0x22,0x49);
@@ -64,6 +67,9 @@ extern "C" {
   
DEFINE_GUID(IID_IDebugSystemObjects3,0xe9676e2f,0xe286,0x4ea3,0xb0,0xf9,0xdf,0xe5,0xd9,0xfc,0x33,0x0e);
 
   typedef struct IDebugAdvanced *PDEBUG_ADVANCED;
+  typedef struct IDebugAdvanced2 *PDEBUG_ADVANCED2;
+  typedef struct IDebugAdvanced3 *PDEBUG_ADVANCED3;
+  typedef struct IDebugAdvanced4 *PDEBUG_ADVANCED4;
   typedef struct IDebugBreakpoint *PDEBUG_BREAKPOINT;
   typedef struct IDebugBreakpoint2 *PDEBUG_BREAKPOINT2;
   typedef struct IDebugBreakpoint3 *PDEBUG_BREAKPOINT3;
@@ -125,6 +131,198 @@ extern "C" {
   };
 #ifdef __CRT_UUID_DECL
 
__CRT_UUID_DECL(IDebugAdvanced,0xf2df5f53,0x071f,0x47bd,0x9d,0xe6,0x57,0x34,0xc3,0xfe,0xd6,0x89)
+#endif
+
+  typedef struct _DEBUG_READ_USER_MINIDUMP_STREAM {
+    ULONG StreamType;
+    ULONG Flags;
+    ULONG64 Offset;
+    PVOID Buffer;
+    ULONG BufferSize;
+    ULONG BufferUsed;
+  } DEBUG_READ_USER_MINIDUMP_STREAM,*PDEBUG_READ_USER_MINIDUMP_STREAM;
+
+#define DEBUG_GET_TEXT_COMPLETIONS_NO_DOT_COMMANDS 0x00000001
+#define DEBUG_GET_TEXT_COMPLETIONS_NO_EXTENSION_COMMANDS 0x00000002
+#define DEBUG_GET_TEXT_COMPLETIONS_NO_SYMBOLS 0x00000004
+
+  typedef struct _DEBUG_GET_TEXT_COMPLETIONS_IN {
+    ULONG Flags;
+    ULONG MatchCountLimit;
+    ULONG64 Reserved[3];
+  } DEBUG_GET_TEXT_COMPLETIONS_IN,*PDEBUG_GET_TEXT_COMPLETIONS_IN;
+
+#define DEBUG_GET_TEXT_COMPLETIONS_IS_DOT_COMMAND 0x00000001
+#define DEBUG_GET_TEXT_COMPLETIONS_IS_EXTENSION_COMMAND 0x00000002
+#define DEBUG_GET_TEXT_COMPLETIONS_IS_SYMBOL 0x00000004
+
+  typedef struct _DEBUG_GET_TEXT_COMPLETIONS_OUT {
+    ULONG Flags;
+    ULONG ReplaceIndex;
+    ULONG MatchCount;
+    ULONG Reserved1;
+    ULONG64 Reserved2[2];
+  } DEBUG_GET_TEXT_COMPLETIONS_OUT,*PDEBUG_GET_TEXT_COMPLETIONS_OUT;
+
+  typedef struct _DEBUG_CACHED_SYMBOL_INFO {
+    ULONG64 ModBase;
+    ULONG64 Arg1;
+    ULONG64 Arg2;
+    ULONG Id;
+    ULONG Arg3;
+  } DEBUG_CACHED_SYMBOL_INFO,*PDEBUG_CACHED_SYMBOL_INFO;
+
+  typedef struct _PROCESS_NAME_ENTRY {
+    ULONG ProcessId;
+    ULONG NameOffset;
+    ULONG NameSize;
+    ULONG NextEntry;
+  } PROCESS_NAME_ENTRY,*PPROCESS_NAME_ENTRY;
+
+#define DEBUG_REQUEST_SOURCE_PATH_HAS_SOURCE_SERVER 0
+#define DEBUG_REQUEST_TARGET_EXCEPTION_CONTEXT 1
+#define DEBUG_REQUEST_TARGET_EXCEPTION_THREAD 2
+#define DEBUG_REQUEST_TARGET_EXCEPTION_RECORD 3
+#define DEBUG_REQUEST_GET_ADDITIONAL_CREATE_OPTIONS 4
+#define DEBUG_REQUEST_SET_ADDITIONAL_CREATE_OPTIONS 5
+#define DEBUG_REQUEST_GET_WIN32_MAJOR_MINOR_VERSIONS 6
+#define DEBUG_REQUEST_READ_USER_MINIDUMP_STREAM 7
+#define DEBUG_REQUEST_TARGET_CAN_DETACH 8
+#define DEBUG_REQUEST_SET_LOCAL_IMPLICIT_COMMAND_LINE 9
+#define DEBUG_REQUEST_GET_CAPTURED_EVENT_CODE_OFFSET 10
+#define DEBUG_REQUEST_READ_CAPTURED_EVENT_CODE_STREAM 11
+#define DEBUG_REQUEST_EXT_TYPED_DATA_ANSI 12
+#define DEBUG_REQUEST_GET_EXTENSION_SEARCH_PATH_WIDE 13
+#define DEBUG_REQUEST_GET_TEXT_COMPLETIONS_WIDE 14
+#define DEBUG_REQUEST_GET_CACHED_SYMBOL_INFO 15
+#define DEBUG_REQUEST_ADD_CACHED_SYMBOL_INFO 16
+#define DEBUG_REQUEST_REMOVE_CACHED_SYMBOL_INFO 17
+#define DEBUG_REQUEST_GET_TEXT_COMPLETIONS_ANSI 18
+#define DEBUG_REQUEST_CURRENT_OUTPUT_CALLBACKS_ARE_DML_AWARE 19
+#define DEBUG_REQUEST_GET_OFFSET_UNWIND_INFORMATION 20
+#define DEBUG_REQUEST_GET_DUMP_HEADER 21
+#define DEBUG_REQUEST_SET_DUMP_HEADER 22
+#define DEBUG_REQUEST_MIDORI 23
+#define DEBUG_REQUEST_PROCESS_DESCRIPTORS 24
+#define DEBUG_REQUEST_MISC_INFORMATION 25
+#define DEBUG_REQUEST_OPEN_PROCESS_TOKEN 26
+#define DEBUG_REQUEST_OPEN_THREAD_TOKEN 27
+#define DEBUG_REQUEST_DUPLICATE_TOKEN 28
+#define DEBUG_REQUEST_QUERY_INFO_TOKEN 29
+#define DEBUG_REQUEST_CLOSE_TOKEN 30
+#define DEBUG_REQUEST_WOW_PROCESS 31
+#define DEBUG_REQUEST_WOW_MODULE 32
+#define DEBUG_LIVE_USER_NON_INVASIVE 33
+#define DEBUG_REQUEST_RESUME_THREAD 34
+#define DEBUG_REQUEST_INLINE_QUERY 35
+#define DEBUG_REQUEST_TL_INSTRUMENTATION_AWARE 36
+#define DEBUG_REQUEST_GET_INSTRUMENTATION_VERSION 37
+#define DEBUG_REQUEST_GET_MODULE_ARCHITECTURE 38
+#define DEBUG_REQUEST_GET_IMAGE_ARCHITECTURE 39
+#define DEBUG_REQUEST_SET_PARENT_HWND 40
+
+#define DEBUG_SRCFILE_SYMBOL_TOKEN 0
+#define DEBUG_SRCFILE_SYMBOL_TOKEN_SOURCE_COMMAND_WIDE 1
+#define DEBUG_SRCFILE_SYMBOL_CHECKSUMINFO 2
+
+#define DEBUG_SYMINFO_BREAKPOINT_SOURCE_LINE 0
+#define DEBUG_SYMINFO_IMAGEHLP_MODULEW64 1
+#define DEBUG_SYMINFO_GET_SYMBOL_NAME_BY_OFFSET_AND_TAG_WIDE 2
+#define DEBUG_SYMINFO_GET_MODULE_SYMBOL_NAMES_AND_OFFSETS 3
+
+#define DEBUG_SYSOBJINFO_THREAD_BASIC_INFORMATION 0
+#define DEBUG_SYSOBJINFO_THREAD_NAME_WIDE 1
+#define DEBUG_SYSOBJINFO_CURRENT_PROCESS_COOKIE 2
+
+#define DEBUG_TBINFO_EXIT_STATUS 0x00000001
+#define DEBUG_TBINFO_PRIORITY_CLASS 0x00000002
+#define DEBUG_TBINFO_PRIORITY 0x00000004
+#define DEBUG_TBINFO_TIMES 0x00000008
+#define DEBUG_TBINFO_START_OFFSET 0x00000010
+#define DEBUG_TBINFO_AFFINITY 0x00000020
+#define DEBUG_TBINFO_ALL 0x0000003f
+
+  typedef struct _DEBUG_THREAD_BASIC_INFORMATION {
+    ULONG Valid;
+    ULONG ExitStatus;
+    ULONG PriorityClass;
+    ULONG Priority;
+    ULONG64 CreateTime;
+    ULONG64 ExitTime;
+    ULONG64 KernelTime;
+    ULONG64 UserTime;
+    ULONG64 StartOffset;
+    ULONG64 Affinity;
+  } DEBUG_THREAD_BASIC_INFORMATION,*PDEBUG_THREAD_BASIC_INFORMATION;
+
+#undef INTERFACE
+#define INTERFACE IDebugAdvanced2
+  DECLARE_INTERFACE_(IDebugAdvanced2, IUnknown) {
+    STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    STDMETHOD(GetThreadContext)(THIS_ PVOID Context, ULONG ContextSize) PURE;
+    STDMETHOD(SetThreadContext)(THIS_ PVOID Context, ULONG ContextSize) PURE;
+    STDMETHOD(Request)(THIS_ ULONG Request, PVOID InBuffer, ULONG 
InBufferSize, PVOID OutBuffer, ULONG OutBufferSize, PULONG OutSize) PURE;
+    STDMETHOD(GetSourceFileInformation)(THIS_ ULONG Which, PSTR SourceFile, 
ULONG64 Arg64, ULONG Arg32, PVOID Buffer, ULONG BufferSize, PULONG InfoSize) 
PURE;
+    STDMETHOD(FindSourceFileAndToken)(THIS_ ULONG StartElement, ULONG64 
ModAddr, PCSTR File, ULONG Flags, PVOID FileToken, ULONG FileTokenSize, PULONG 
FoundElement, PSTR Buffer, ULONG BufferSize, PULONG FoundSize) PURE;
+    STDMETHOD(GetSymbolInformation)(THIS_ ULONG Which, ULONG64 Arg64, ULONG 
Arg32, PVOID Buffer, ULONG BufferSize, PULONG InfoSize, PSTR StringBuffer, 
ULONG StringBufferSize, PULONG StringSize) PURE;
+    STDMETHOD(GetSystemObjectInformation)(THIS_ ULONG Which, ULONG64 Arg64, 
ULONG Arg32, PVOID Buffer, ULONG BufferSize, PULONG InfoSize) PURE;
+  };
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDebugAdvanced2,0x716d14c9,0x119b,0x4ba5,0xaf,0x1f,0x08,0x90,0xe6,0x72,0x41,0x6a)
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDebugAdvanced3
+  DECLARE_INTERFACE_(IDebugAdvanced3, IUnknown) {
+    STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    STDMETHOD(GetThreadContext)(THIS_ PVOID Context, ULONG ContextSize) PURE;
+    STDMETHOD(SetThreadContext)(THIS_ PVOID Context, ULONG ContextSize) PURE;
+    STDMETHOD(Request)(THIS_ ULONG Request, PVOID InBuffer, ULONG 
InBufferSize, PVOID OutBuffer, ULONG OutBufferSize, PULONG OutSize) PURE;
+    STDMETHOD(GetSourceFileInformation)(THIS_ ULONG Which, PSTR SourceFile, 
ULONG64 Arg64, ULONG Arg32, PVOID Buffer, ULONG BufferSize, PULONG InfoSize) 
PURE;
+    STDMETHOD(FindSourceFileAndToken)(THIS_ ULONG StartElement, ULONG64 
ModAddr, PCSTR File, ULONG Flags, PVOID FileToken, ULONG FileTokenSize, PULONG 
FoundElement, PSTR Buffer, ULONG BufferSize, PULONG FoundSize) PURE;
+    STDMETHOD(GetSymbolInformation)(THIS_ ULONG Which, ULONG64 Arg64, ULONG 
Arg32, PVOID Buffer, ULONG BufferSize, PULONG InfoSize, PSTR StringBuffer, 
ULONG StringBufferSize, PULONG StringSize) PURE;
+    STDMETHOD(GetSystemObjectInformation)(THIS_ ULONG Which, ULONG64 Arg64, 
ULONG Arg32, PVOID Buffer, ULONG BufferSize, PULONG InfoSize) PURE;
+    STDMETHOD(GetSourceFileInformationWide)(THIS_ ULONG Which, PWSTR 
SourceFile, ULONG64 Arg64, ULONG Arg32, PVOID Buffer, ULONG BufferSize, PULONG 
InfoSize) PURE;
+    STDMETHOD(FindSourceFileAndTokenWide)(THIS_ ULONG StartElement, ULONG64 
ModAddr, PCWSTR File, ULONG Flags, PVOID FileToken, ULONG FileTokenSize, PULONG 
FoundElement, PWSTR Buffer, ULONG BufferSize, PULONG FoundSize) PURE;
+    STDMETHOD(GetSymbolInformationWide)(THIS_ ULONG Which, ULONG64 Arg64, 
ULONG Arg32, PVOID Buffer, ULONG BufferSize, PULONG InfoSize, PWSTR 
StringBuffer, ULONG StringBufferSize, PULONG StringSize) PURE;
+  };
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDebugAdvanced3,0xcba4abb4,0x84c4,0x444d,0x87,0xca,0xa0,0x4e,0x13,0x28,0x67,0x39)
+#endif
+
+  typedef struct _SYMBOL_INFO_EX {
+    ULONG SizeOfStruct;
+    ULONG TypeOfInfo;
+    ULONG64 Offset;
+    ULONG Line;
+    ULONG Displacement;
+    ULONG Reserved[4];
+  } SYMBOL_INFO_EX,*PSYMBOL_INFO_EX;
+
+#undef INTERFACE
+#define INTERFACE IDebugAdvanced4
+  DECLARE_INTERFACE_(IDebugAdvanced4, IUnknown) {
+    STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    STDMETHOD(GetThreadContext)(THIS_ PVOID Context, ULONG ContextSize) PURE;
+    STDMETHOD(SetThreadContext)(THIS_ PVOID Context, ULONG ContextSize) PURE;
+    STDMETHOD(Request)(THIS_ ULONG Request, PVOID InBuffer, ULONG 
InBufferSize, PVOID OutBuffer, ULONG OutBufferSize, PULONG OutSize) PURE;
+    STDMETHOD(GetSourceFileInformation)(THIS_ ULONG Which, PSTR SourceFile, 
ULONG64 Arg64, ULONG Arg32, PVOID Buffer, ULONG BufferSize, PULONG InfoSize) 
PURE;
+    STDMETHOD(FindSourceFileAndToken)(THIS_ ULONG StartElement, ULONG64 
ModAddr, PCSTR File, ULONG Flags, PVOID FileToken, ULONG FileTokenSize, PULONG 
FoundElement, PSTR Buffer, ULONG BufferSize, PULONG FoundSize) PURE;
+    STDMETHOD(GetSymbolInformation)(THIS_ ULONG Which, ULONG64 Arg64, ULONG 
Arg32, PVOID Buffer, ULONG BufferSize, PULONG InfoSize, PSTR StringBuffer, 
ULONG StringBufferSize, PULONG StringSize) PURE;
+    STDMETHOD(GetSystemObjectInformation)(THIS_ ULONG Which, ULONG64 Arg64, 
ULONG Arg32, PVOID Buffer, ULONG BufferSize, PULONG InfoSize) PURE;
+    STDMETHOD(GetSourceFileInformationWide)(THIS_ ULONG Which, PWSTR 
SourceFile, ULONG64 Arg64, ULONG Arg32, PVOID Buffer, ULONG BufferSize, PULONG 
InfoSize) PURE;
+    STDMETHOD(FindSourceFileAndTokenWide)(THIS_ ULONG StartElement, ULONG64 
ModAddr, PCWSTR File, ULONG Flags, PVOID FileToken, ULONG FileTokenSize, PULONG 
FoundElement, PWSTR Buffer, ULONG BufferSize, PULONG FoundSize) PURE;
+    STDMETHOD(GetSymbolInformationWide)(THIS_ ULONG Which, ULONG64 Arg64, 
ULONG Arg32, PVOID Buffer, ULONG BufferSize, PULONG InfoSize, PWSTR 
StringBuffer, ULONG StringBufferSize, PULONG StringSize) PURE;
+    STDMETHOD(GetSymbolInformationWideEx)(THIS_ ULONG Which, ULONG64 Arg64, 
ULONG Arg32, PVOID Buffer, ULONG BufferSize, PULONG InfoSize, PWSTR 
StringBuffer, ULONG StringBufferSize, PULONG StringSize, PSYMBOL_INFO_EX 
pInfoEx) PURE;
+  };
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDebugAdvanced4,0xd1069067,0x2a65,0x4bf0,0xae,0x97,0x76,0x18,0x4b,0x67,0x85,0x6b)
 #endif
 
 #define DEBUG_BREAKPOINT_CODE 0
-- 
2.46.0

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

Reply via email to