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
