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

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

diff --git a/mingw-w64-headers/include/dbgeng.h 
b/mingw-w64-headers/include/dbgeng.h
index e4ebf98..5f9b842 100644
--- a/mingw-w64-headers/include/dbgeng.h
+++ b/mingw-w64-headers/include/dbgeng.h
@@ -25,6 +25,7 @@ extern "C" {
   
DEFINE_GUID(IID_IDebugAdvanced,0xf2df5f53,0x071f,0x47bd,0x9d,0xe6,0x57,0x34,0xc3,0xfe,0xd6,0x89);
   
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);
   
DEFINE_GUID(IID_IDebugClient,0x27fe5639,0x8407,0x4f47,0x83,0x64,0xee,0x11,0x8f,0xb0,0x8a,0xc8);
   
DEFINE_GUID(IID_IDebugClient2,0xedbed635,0x372e,0x4dab,0xbb,0xfe,0xed,0x0d,0x2f,0x63,0xbe,0x81);
   
DEFINE_GUID(IID_IDebugClient3,0xdd492d7f,0x71b8,0x4ad6,0xa8,0xdc,0x1c,0x88,0x74,0x79,0xff,0x91);
@@ -37,6 +38,10 @@ extern "C" {
   
DEFINE_GUID(IID_IDebugControl,0x5182e668,0x105e,0x416e,0xad,0x92,0x24,0xef,0x80,0x04,0x24,0xba);
   
DEFINE_GUID(IID_IDebugControl2,0xd4366723,0x44df,0x4bed,0x8c,0x7e,0x4c,0x05,0x42,0x4f,0x45,0x88);
   
DEFINE_GUID(IID_IDebugControl3,0x7df74a86,0xb03f,0x407f,0x90,0xab,0xa2,0x0d,0xad,0xce,0xad,0x08);
+  
DEFINE_GUID(IID_IDebugControl4,0x94e60ce9,0x9b41,0x4b19,0x9f,0xc0,0x6d,0x9e,0xb3,0x52,0x72,0xb3);
+  
DEFINE_GUID(IID_IDebugControl5,0xb2ffe162,0x2412,0x429f,0x8d,0x1d,0x5b,0xf6,0xdd,0x82,0x46,0x96);
+  
DEFINE_GUID(IID_IDebugControl6,0xbc0d583f,0x126d,0x43a1,0x9c,0xc4,0xa8,0x60,0xab,0x1d,0x53,0x7b);
+  
DEFINE_GUID(IID_IDebugControl7,0xb86fb3b1,0x80d4,0x475b,0xae,0xa3,0xcf,0x06,0x53,0x9c,0xf6,0x3a);
   
DEFINE_GUID(IID_IDebugDataSpaces,0x88f7dfab,0x3ea7,0x4c3a,0xae,0xfb,0xc4,0xe8,0x10,0x61,0x73,0xaa);
   
DEFINE_GUID(IID_IDebugDataSpaces2,0x7a5e852f,0x96e9,0x468f,0xac,0x1b,0x0b,0x3a,0xdd,0xc4,0xa0,0x49);
   
DEFINE_GUID(IID_IDebugDataSpaces3,0x23f79d6c,0x8aaf,0x4f7c,0xa6,0x07,0x99,0x95,0xf5,0x40,0x7e,0x63);
@@ -57,6 +62,7 @@ extern "C" {
   typedef struct IDebugAdvanced *PDEBUG_ADVANCED;
   typedef struct IDebugBreakpoint *PDEBUG_BREAKPOINT;
   typedef struct IDebugBreakpoint2 *PDEBUG_BREAKPOINT2;
+  typedef struct IDebugBreakpoint3 *PDEBUG_BREAKPOINT3;
   typedef struct IDebugClient *PDEBUG_CLIENT;
   typedef struct IDebugClient2 *PDEBUG_CLIENT2;
   typedef struct IDebugClient3 *PDEBUG_CLIENT3;
@@ -69,6 +75,10 @@ extern "C" {
   typedef struct IDebugControl *PDEBUG_CONTROL;
   typedef struct IDebugControl2 *PDEBUG_CONTROL2;
   typedef struct IDebugControl3 *PDEBUG_CONTROL3;
+  typedef struct IDebugControl4 *PDEBUG_CONTROL4;
+  typedef struct IDebugControl5 *PDEBUG_CONTROL5;
+  typedef struct IDebugControl6 *PDEBUG_CONTROL6;
+  typedef struct IDebugControl7 *PDEBUG_CONTROL7;
   typedef struct IDebugDataSpaces *PDEBUG_DATA_SPACES;
   typedef struct IDebugDataSpaces2 *PDEBUG_DATA_SPACES2;
   typedef struct IDebugDataSpaces3 *PDEBUG_DATA_SPACES3;
@@ -201,6 +211,43 @@ 
__CRT_UUID_DECL(IDebugBreakpoint,0x5bd9d474,0x5975,0x423a,0xb8,0x8b,0x65,0xa8,0x
 
__CRT_UUID_DECL(IDebugBreakpoint2,0x1b278d20,0x79f2,0x426e,0xa3,0xf9,0xc1,0xdd,0xf3,0x75,0xd4,0x8e)
 #endif
 
+#undef INTERFACE
+#define INTERFACE IDebugBreakpoint3
+  DECLARE_INTERFACE_(IDebugBreakpoint3, IUnknown) {
+    STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    STDMETHOD(GetId)(THIS_ PULONG Id) PURE;
+    STDMETHOD(GetType)(THIS_ PULONG BreakType, PULONG ProcType) PURE;
+    STDMETHOD(GetAdder)(THIS_ PDEBUG_CLIENT *Adder) PURE;
+    STDMETHOD(GetFlags)(THIS_ PULONG Flags) PURE;
+    STDMETHOD(AddFlags)(THIS_ ULONG Flags) PURE;
+    STDMETHOD(RemoveFlags)(THIS_ ULONG Flags) PURE;
+    STDMETHOD(SetFlags)(THIS_ ULONG Flags) PURE;
+    STDMETHOD(GetOffset)(THIS_ PULONG64 Offset) PURE;
+    STDMETHOD(SetOffset)(THIS_ ULONG64 Offset) PURE;
+    STDMETHOD(GetDataParameters)(THIS_ PULONG Size, PULONG AccessType) PURE;
+    STDMETHOD(SetDataParameters)(THIS_ ULONG Size, ULONG AccessType) PURE;
+    STDMETHOD(GetPassCount)(THIS_ PULONG Count) PURE;
+    STDMETHOD(SetPassCount)(THIS_ ULONG Count) PURE;
+    STDMETHOD(GetCurrentPassCount)(THIS_ PULONG Count) PURE;
+    STDMETHOD(GetMatchThreadId)(THIS_ PULONG Id) PURE;
+    STDMETHOD(SetMatchThreadId)(THIS_ ULONG Thread) PURE;
+    STDMETHOD(GetCommand)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG 
CommandSize) PURE;
+    STDMETHOD(SetCommand)(THIS_ PCSTR Command) PURE;
+    STDMETHOD(GetOffsetExpression)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG 
ExpressionSize) PURE;
+    STDMETHOD(SetOffsetExpression)(THIS_ PCSTR Expression) PURE;
+    STDMETHOD(GetParameters)(THIS_ PDEBUG_BREAKPOINT_PARAMETERS Params) PURE;
+    STDMETHOD(GetCommandWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG 
CommandSize) PURE;
+    STDMETHOD(SetCommandWide)(THIS_ PCWSTR Command) PURE;
+    STDMETHOD(GetOffsetExpressionWide)(THIS_ PWSTR Buffer, ULONG BufferSize, 
PULONG ExpressionSize) PURE;
+    STDMETHOD(SetOffsetExpressionWide)(THIS_ PCWSTR Expression) PURE;
+    STDMETHOD(GetGuid)(THIS_ LPGUID Guid) PURE;
+  };
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDebugBreakpoint3,0x38f5c249,0xb448,0x43bb,0x98,0x35,0x57,0x9d,0x4e,0xc0,0x22,0x49)
+#endif
+
 #define DEBUG_ATTACH_KERNEL_CONNECTION 0x00000000
 #define DEBUG_ATTACH_LOCAL_KERNEL 0x00000001
 #define DEBUG_ATTACH_EXDI_DRIVER 0x00000002
@@ -1138,6 +1185,23 @@ 
__CRT_UUID_DECL(IDebugClient9,0x2c24cd5b,0x4d9e,0x4df4,0x8a,0x70,0x3d,0x37,0x44,
     ULONG FrameNumber;
   } DEBUG_STACK_FRAME,*PDEBUG_STACK_FRAME;
 
+#define DBG_FRAME_DEFAULT 0
+#define DBG_FRAME_IGNORE_INLINE 0xffffffff
+
+  typedef struct _DEBUG_STACK_FRAME_EX {
+    ULONG64 InstructionOffset;
+    ULONG64 ReturnOffset;
+    ULONG64 FrameOffset;
+    ULONG64 StackOffset;
+    ULONG64 FuncTableEntry;
+    ULONG64 Params[4];
+    ULONG64 Reserved[6];
+    WINBOOL Virtual;
+    ULONG FrameNumber;
+    ULONG InlineFrameContext;
+    ULONG Reserved1;
+  } DEBUG_STACK_FRAME_EX,*PDEBUG_STACK_FRAME_EX;
+
 #define DEBUG_STACK_ARGUMENTS 0x00000001
 #define DEBUG_STACK_FUNCTION_INFO 0x00000002
 #define DEBUG_STACK_SOURCE_LINE 0x00000004
@@ -1648,6 +1712,736 @@ 
__CRT_UUID_DECL(IDebugControl2,0xd4366723,0x44df,0x4bed,0x8c,0x7e,0x4c,0x05,0x42
 
__CRT_UUID_DECL(IDebugControl3,0x7df74a86,0xb03f,0x407f,0x90,0xab,0xa2,0x0d,0xad,0xce,0xad,0x08)
 #endif
 
+#undef INTERFACE
+#define INTERFACE IDebugControl4
+  DECLARE_INTERFACE_(IDebugControl4, IUnknown) {
+    STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    STDMETHOD(GetInterrupt)(THIS) PURE;
+    STDMETHOD(SetInterrupt)(THIS_ ULONG Flags) PURE;
+    STDMETHOD(GetInterruptTimeout)(THIS_ PULONG Seconds) PURE;
+    STDMETHOD(SetInterruptTimeout)(THIS_ ULONG Seconds) PURE;
+    STDMETHOD(GetLogFile)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG 
FileSize, PBOOL Append) PURE;
+    STDMETHOD(OpenLogFile)(THIS_ PCSTR File, WINBOOL Append) PURE;
+    STDMETHOD(CloseLogFile)(THIS) PURE;
+    STDMETHOD(GetLogMask)(THIS_ PULONG Mask) PURE;
+    STDMETHOD(SetLogMask)(THIS_ ULONG Mask) PURE;
+    STDMETHOD(Input)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG InputSize) 
PURE;
+    STDMETHOD(ReturnInput)(THIS_ PCSTR Buffer) PURE;
+    STDMETHODV(Output)(THIS_ ULONG Mask, PCSTR Format, ...) PURE;
+    STDMETHOD(OutputVaList)(THIS_ ULONG Mask, PCSTR Format, va_list Args) PURE;
+    STDMETHODV(ControlledOutput)(THIS_ ULONG OutputControl, ULONG Mask, PCSTR 
Format, ...) PURE;
+    STDMETHOD(ControlledOutputVaList)(THIS_ ULONG OutputControl, ULONG Mask, 
PCSTR Format, va_list Args) PURE;
+    STDMETHODV(OutputPrompt)(THIS_ ULONG OutputControl, PCSTR Format, ...) 
PURE;
+    STDMETHOD(OutputPromptVaList)(THIS_ ULONG OutputControl, PCSTR Format, 
va_list Args) PURE;
+    STDMETHOD(GetPromptText)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG 
TextSize) PURE;
+    STDMETHOD(OutputCurrentState)(THIS_ ULONG OutputControl, ULONG Flags) PURE;
+    STDMETHOD(OutputVersionInformation)(THIS_ ULONG OutputControl) PURE;
+    STDMETHOD(GetNotifyEventHandle)(THIS_ PULONG64 Handle) PURE;
+    STDMETHOD(SetNotifyEventHandle)(THIS_ ULONG64 Handle) PURE;
+    STDMETHOD(Assemble)(THIS_ ULONG64 Offset, PCSTR Instr, PULONG64 EndOffset) 
PURE;
+    STDMETHOD(Disassemble)(THIS_ ULONG64 Offset, ULONG Flags, PSTR Buffer, 
ULONG BufferSize, PULONG DisassemblySize, PULONG64 EndOffset) PURE;
+    STDMETHOD(GetDisassembleEffectiveOffset)(THIS_ PULONG64 Offset) PURE;
+    STDMETHOD(OutputDisassembly)(THIS_ ULONG OutputControl, ULONG64 Offset, 
ULONG Flags, PULONG64 EndOffset) PURE;
+    STDMETHOD(OutputDisassemblyLines)(THIS_ ULONG OutputControl, ULONG 
PreviousLines, ULONG TotalLines, ULONG64 Offset, ULONG Flags, PULONG 
OffsetLine, PULONG64 StartOffset, PULONG64 EndOffset, PULONG64 LineOffsets) 
PURE;
+    STDMETHOD(GetNearInstruction)(THIS_ ULONG64 Offset, LONG Delta, PULONG64 
NearOffset) PURE;
+    STDMETHOD(GetStackTrace)(THIS_ ULONG64 FrameOffset, ULONG64 StackOffset, 
ULONG64 InstructionOffset, PDEBUG_STACK_FRAME Frames, ULONG FramesSize, PULONG 
FramesFilled) PURE;
+    STDMETHOD(GetReturnOffset)(THIS_ PULONG64 Offset) PURE;
+    STDMETHOD(OutputStackTrace)(THIS_ ULONG OutputControl, PDEBUG_STACK_FRAME 
Frames, ULONG FramesSize, ULONG Flags) PURE;
+    STDMETHOD(GetDebuggeeType)(THIS_ PULONG Class, PULONG Qualifier) PURE;
+    STDMETHOD(GetActualProcessorType)(THIS_ PULONG Type) PURE;
+    STDMETHOD(GetExecutingProcessorType)(THIS_ PULONG Type) PURE;
+    STDMETHOD(GetNumberPossibleExecutingProcessorTypes)(THIS_ PULONG Number) 
PURE;
+    STDMETHOD(GetPossibleExecutingProcessorTypes)(THIS_ ULONG Start, ULONG 
Count, PULONG Types) PURE;
+    STDMETHOD(GetNumberProcessors)(THIS_ PULONG Number) PURE;
+    STDMETHOD(GetSystemVersion)(THIS_ PULONG PlatformId, PULONG Major, PULONG 
Minor, PSTR ServicePackString, ULONG ServicePackStringSize, PULONG 
ServicePackStringUsed, PULONG ServicePackNumber, PSTR BuildString, ULONG 
BuildStringSize, PULONG BuildStringUsed) PURE;
+    STDMETHOD(GetPageSize)(THIS_ PULONG Size) PURE;
+    STDMETHOD(IsPointer64Bit)(THIS) PURE;
+    STDMETHOD(ReadBugCheckData)(THIS_ PULONG Code, PULONG64 Arg1, PULONG64 
Arg2, PULONG64 Arg3, PULONG64 Arg4) PURE;
+    STDMETHOD(GetNumberSupportedProcessorTypes)(THIS_ PULONG Number) PURE;
+    STDMETHOD(GetSupportedProcessorTypes)(THIS_ ULONG Start, ULONG Count, 
PULONG Types) PURE;
+    STDMETHOD(GetProcessorTypeNames)(THIS_ ULONG Type, PSTR FullNameBuffer, 
ULONG FullNameBufferSize, PULONG FullNameSize, PSTR AbbrevNameBuffer, ULONG 
AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
+    STDMETHOD(GetEffectiveProcessorType)(THIS_ PULONG Type) PURE;
+    STDMETHOD(SetEffectiveProcessorType)(THIS_ ULONG Type) PURE;
+    STDMETHOD(GetExecutionStatus)(THIS_ PULONG Status) PURE;
+    STDMETHOD(SetExecutionStatus)(THIS_ ULONG Status) PURE;
+    STDMETHOD(GetCodeLevel)(THIS_ PULONG Level) PURE;
+    STDMETHOD(SetCodeLevel)(THIS_ ULONG Level) PURE;
+    STDMETHOD(GetEngineOptions)(THIS_ PULONG Options) PURE;
+    STDMETHOD(AddEngineOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(RemoveEngineOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(SetEngineOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(GetSystemErrorControl)(THIS_ PULONG OutputLevel, PULONG 
BreakLevel) PURE;
+    STDMETHOD(SetSystemErrorControl)(THIS_ ULONG OutputLevel, ULONG 
BreakLevel) PURE;
+    STDMETHOD(GetTextMacro)(THIS_ ULONG Slot, PSTR Buffer, ULONG BufferSize, 
PULONG MacroSize) PURE;
+    STDMETHOD(SetTextMacro)(THIS_ ULONG Slot, PCSTR Macro) PURE;
+    STDMETHOD(GetRadix)(THIS_ PULONG Radix) PURE;
+    STDMETHOD(SetRadix)(THIS_ ULONG Radix) PURE;
+    STDMETHOD(Evaluate)(THIS_ PCSTR Expression, ULONG DesiredType, 
PDEBUG_VALUE Value, PULONG RemainderIndex) PURE;
+    STDMETHOD(CoerceValue)(THIS_ PDEBUG_VALUE In, ULONG OutType, PDEBUG_VALUE 
Out) PURE;
+    STDMETHOD(CoerceValues)(THIS_ ULONG Count, PDEBUG_VALUE In, PULONG 
OutTypes, PDEBUG_VALUE Out) PURE;
+    STDMETHOD(Execute)(THIS_ ULONG OutputControl, PCSTR Command, ULONG Flags) 
PURE;
+    STDMETHOD(ExecuteCommandFile)(THIS_ ULONG OutputControl, PCSTR 
CommandFile, ULONG Flags) PURE;
+    STDMETHOD(GetNumberBreakpoints)(THIS_ PULONG Number) PURE;
+    STDMETHOD(GetBreakpointByIndex)(THIS_ ULONG Index, PDEBUG_BREAKPOINT *Bp) 
PURE;
+    STDMETHOD(GetBreakpointById)(THIS_ ULONG Id, PDEBUG_BREAKPOINT *Bp) PURE;
+    STDMETHOD(GetBreakpointParameters)(THIS_ ULONG Count, PULONG Ids, ULONG 
Start, PDEBUG_BREAKPOINT_PARAMETERS Params) PURE;
+    STDMETHOD(AddBreakpoint)(THIS_ ULONG Type, ULONG DesiredId, 
PDEBUG_BREAKPOINT *Bp) PURE;
+    STDMETHOD(RemoveBreakpoint)(THIS_ PDEBUG_BREAKPOINT Bp) PURE;
+    STDMETHOD(AddExtension)(THIS_ PCSTR Path, ULONG Flags, PULONG64 Handle) 
PURE;
+    STDMETHOD(RemoveExtension)(THIS_ ULONG64 Handle) PURE;
+    STDMETHOD(GetExtensionByPath)(THIS_ PCSTR Path, PULONG64 Handle) PURE;
+    STDMETHOD(CallExtension)(THIS_ ULONG64 Handle, PCSTR Function, PCSTR 
Arguments) PURE;
+    STDMETHOD(GetExtensionFunction)(THIS_ ULONG64 Handle, PCSTR FuncName, 
FARPROC *Function) PURE;
+    STDMETHOD(GetWindbgExtensionApis32)(THIS_ PWINDBG_EXTENSION_APIS32 Api) 
PURE;
+    STDMETHOD(GetWindbgExtensionApis64)(THIS_ PWINDBG_EXTENSION_APIS64 Api) 
PURE;
+    STDMETHOD(GetNumberEventFilters)(THIS_ PULONG SpecificEvents, PULONG 
SpecificExceptions, PULONG ArbitraryExceptions) PURE;
+    STDMETHOD(GetEventFilterText)(THIS_ ULONG Index, PSTR Buffer, ULONG 
BufferSize, PULONG TextSize) PURE;
+    STDMETHOD(GetEventFilterCommand)(THIS_ ULONG Index, PSTR Buffer, ULONG 
BufferSize, PULONG CommandSize) PURE;
+    STDMETHOD(SetEventFilterCommand)(THIS_ ULONG Index, PCSTR Command) PURE;
+    STDMETHOD(GetSpecificFilterParameters)(THIS_ ULONG Start, ULONG Count, 
PDEBUG_SPECIFIC_FILTER_PARAMETERS Params) PURE;
+    STDMETHOD(SetSpecificFilterParameters)(THIS_ ULONG Start, ULONG Count, 
PDEBUG_SPECIFIC_FILTER_PARAMETERS Params) PURE;
+    STDMETHOD(GetSpecificFilterArgument)(THIS_ ULONG Index, PSTR Buffer, ULONG 
BufferSize, PULONG ArgumentSize) PURE;
+    STDMETHOD(SetSpecificFilterArgument)(THIS_ ULONG Index, PCSTR Argument) 
PURE;
+    STDMETHOD(GetExceptionFilterParameters)(THIS_ ULONG Count, PULONG Codes, 
ULONG Start, PDEBUG_EXCEPTION_FILTER_PARAMETERS Params) PURE;
+    STDMETHOD(SetExceptionFilterParameters)(THIS_ ULONG Count, 
PDEBUG_EXCEPTION_FILTER_PARAMETERS Params) PURE;
+    STDMETHOD(GetExceptionFilterSecondCommand)(THIS_ ULONG Index, PSTR Buffer, 
ULONG BufferSize, PULONG CommandSize) PURE;
+    STDMETHOD(SetExceptionFilterSecondCommand)(THIS_ ULONG Index, PCSTR 
Command) PURE;
+    STDMETHOD(WaitForEvent)(THIS_ ULONG Flags, ULONG Timeout) PURE;
+    STDMETHOD(GetLastEventInformation)(THIS_ PULONG Type, PULONG ProcessId, 
PULONG ThreadId, PVOID ExtraInformation, ULONG ExtraInformationSize, PULONG 
ExtraInformationUsed, PSTR Description, ULONG DescriptionSize, PULONG 
DescriptionUsed) PURE;
+    STDMETHOD(GetCurrentTimeDate)(THIS_ PULONG TimeDate) PURE;
+    STDMETHOD(GetCurrentSystemUpTime)(THIS_ PULONG UpTime) PURE;
+    STDMETHOD(GetDumpFormatFlags)(THIS_ PULONG FormatFlags) PURE;
+    STDMETHOD(GetNumberTextReplacements)(THIS_ PULONG NumRepl) PURE;
+    STDMETHOD(GetTextReplacement)(THIS_ PCSTR SrcText, ULONG Index, PSTR 
SrcBuffer, ULONG SrcBufferSize, PULONG SrcSize, PSTR DstBuffer, ULONG 
DstBufferSize, PULONG DstSize) PURE;
+    STDMETHOD(SetTextReplacement)(THIS_ PCSTR SrcText, PCSTR DstText) PURE;
+    STDMETHOD(RemoveTextReplacements)(THIS) PURE;
+    STDMETHOD(OutputTextReplacements)(THIS_ ULONG OutputControl, ULONG Flags) 
PURE;
+    STDMETHOD(GetAssemblyOptions)(THIS_ PULONG Options) PURE;
+    STDMETHOD(AddAssemblyOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(RemoveAssemblyOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(SetAssemblyOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(GetExpressionSyntax)(THIS_ PULONG Flags) PURE;
+    STDMETHOD(SetExpressionSyntax)(THIS_ ULONG Flags) PURE;
+    STDMETHOD(SetExpressionSyntaxByName)(THIS_ PCSTR AbbrevName) PURE;
+    STDMETHOD(GetNumberExpressionSyntaxes)(THIS_ PULONG Number) PURE;
+    STDMETHOD(GetExpressionSyntaxNames)(THIS_ ULONG Index, PSTR 
FullNameBuffer, ULONG FullNameBufferSize, PULONG FullNameSize, PSTR 
AbbrevNameBuffer, ULONG AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
+    STDMETHOD(GetNumberEvents)(THIS_ PULONG Events) PURE;
+    STDMETHOD(GetEventIndexDescription)(THIS_ ULONG Index, ULONG Which, PSTR 
Buffer, ULONG BufferSize, PULONG DescSize) PURE;
+    STDMETHOD(GetCurrentEventIndex)(THIS_ PULONG Index) PURE;
+    STDMETHOD(SetNextEventIndex)(THIS_ ULONG Relation, ULONG Value, PULONG 
NextIndex) PURE;
+    STDMETHOD(GetLogFileWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG 
FileSize, PBOOL Append) PURE;
+    STDMETHOD(OpenLogFileWide)(THIS_ PCWSTR File, WINBOOL Append) PURE;
+    STDMETHOD(InputWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG 
InputSize) PURE;
+    STDMETHOD(ReturnInputWide)(THIS_ PCWSTR Buffer) PURE;
+    STDMETHODV(OutputWide)(THIS_ ULONG Mask, PCWSTR Format, ...) PURE;
+    STDMETHOD(OutputVaListWide)(THIS_ ULONG Mask, PCWSTR Format, va_list Args) 
PURE;
+    STDMETHODV(ControlledOutputWide)(THIS_ ULONG OutputControl, ULONG Mask, 
PCWSTR Format, ...) PURE;
+    STDMETHOD(ControlledOutputVaListWide)(THIS_ ULONG OutputControl, ULONG 
Mask, PCWSTR Format, va_list Args) PURE;
+    STDMETHODV(OutputPromptWide)(THIS_ ULONG OutputControl, PCWSTR Format, 
...) PURE;
+    STDMETHOD(OutputPromptVaListWide)(THIS_ ULONG OutputControl, PCWSTR 
Format, va_list Args) PURE;
+    STDMETHOD(GetPromptTextWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG 
TextSize) PURE;
+    STDMETHOD(AssembleWide)(THIS_ ULONG64 Offset, PCWSTR Instr, PULONG64 
EndOffset) PURE;
+    STDMETHOD(DisassembleWide)(THIS_ ULONG64 Offset, ULONG Flags, PWSTR 
Buffer, ULONG BufferSize, PULONG DisassemblySize, PULONG64 EndOffset) PURE;
+    STDMETHOD(GetProcessorTypeNamesWide)(THIS_ ULONG Type, PWSTR 
FullNameBuffer, ULONG FullNameBufferSize, PULONG FullNameSize, PWSTR 
AbbrevNameBuffer, ULONG AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
+    STDMETHOD(GetTextMacroWide)(THIS_ ULONG Slot, PWSTR Buffer, ULONG 
BufferSize, PULONG MacroSize) PURE;
+    STDMETHOD(SetTextMacroWide)(THIS_ ULONG Slot, PCWSTR Macro) PURE;
+    STDMETHOD(EvaluateWide)(THIS_ PCWSTR Expression, ULONG DesiredType, 
PDEBUG_VALUE Value, PULONG RemainderIndex) PURE;
+    STDMETHOD(ExecuteWide)(THIS_ ULONG OutputControl, PCWSTR Command, ULONG 
Flags) PURE;
+    STDMETHOD(ExecuteCommandFileWide)(THIS_ ULONG OutputControl, PCWSTR 
CommandFile, ULONG Flags) PURE;
+    STDMETHOD(GetBreakpointByIndex2)(THIS_ ULONG Index, PDEBUG_BREAKPOINT2 
*Bp) PURE;
+    STDMETHOD(GetBreakpointById2)(THIS_ ULONG Id, PDEBUG_BREAKPOINT2 *Bp) PURE;
+    STDMETHOD(AddBreakpoint2)(THIS_ ULONG Type, ULONG DesiredId, 
PDEBUG_BREAKPOINT2 *Bp) PURE;
+    STDMETHOD(RemoveBreakpoint2)(THIS_ PDEBUG_BREAKPOINT2 Bp) PURE;
+    STDMETHOD(AddExtensionWide)(THIS_ PCWSTR Path, ULONG Flags, PULONG64 
Handle) PURE;
+    STDMETHOD(GetExtensionByPathWide)(THIS_ PCWSTR Path, PULONG64 Handle) PURE;
+    STDMETHOD(CallExtensionWide)(THIS_ ULONG64 Handle, PCWSTR Function, PCWSTR 
Arguments) PURE;
+    STDMETHOD(GetExtensionFunctionWide)(THIS_ ULONG64 Handle, PCWSTR FuncName, 
FARPROC *Function) PURE;
+    STDMETHOD(GetEventFilterTextWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG 
BufferSize, PULONG TextSize) PURE;
+    STDMETHOD(GetEventFilterCommandWide)(THIS_ ULONG Index, PWSTR Buffer, 
ULONG BufferSize, PULONG CommandSize) PURE;
+    STDMETHOD(SetEventFilterCommandWide)(THIS_ ULONG Index, PCWSTR Command) 
PURE;
+    STDMETHOD(GetSpecificFilterArgumentWide)(THIS_ ULONG Index, PWSTR Buffer, 
ULONG BufferSize, PULONG ArgumentSize) PURE;
+    STDMETHOD(SetSpecificFilterArgumentWide)(THIS_ ULONG Index, PCWSTR 
Argument) PURE;
+    STDMETHOD(GetExceptionFilterSecondCommandWide)(THIS_ ULONG Index, PWSTR 
Buffer, ULONG BufferSize, PULONG CommandSize) PURE;
+    STDMETHOD(SetExceptionFilterSecondCommandWide)(THIS_ ULONG Index, PCWSTR 
Command) PURE;
+    STDMETHOD(GetLastEventInformationWide)(THIS_ PULONG Type, PULONG 
ProcessId, PULONG ThreadId, PVOID ExtraInformation, ULONG ExtraInformationSize, 
PULONG ExtraInformationUsed, PWSTR Description, ULONG DescriptionSize, PULONG 
DescriptionUsed) PURE;
+    STDMETHOD(GetTextReplacementWide)(THIS_ PCWSTR SrcText, ULONG Index, PWSTR 
SrcBuffer, ULONG SrcBufferSize, PULONG SrcSize, PWSTR DstBuffer, ULONG 
DstBufferSize, PULONG DstSize) PURE;
+    STDMETHOD(SetTextReplacementWide)(THIS_ PCWSTR SrcText, PCWSTR DstText) 
PURE;
+    STDMETHOD(SetExpressionSyntaxByNameWide)(THIS_ PCWSTR AbbrevName) PURE;
+    STDMETHOD(GetExpressionSyntaxNamesWide)(THIS_ ULONG Index, PWSTR 
FullNameBuffer, ULONG FullNameBufferSize, PULONG FullNameSize, PWSTR 
AbbrevNameBuffer, ULONG AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
+    STDMETHOD(GetEventIndexDescriptionWide)(THIS_ ULONG Index, ULONG Which, 
PWSTR Buffer, ULONG BufferSize, PULONG DescSize) PURE;
+    STDMETHOD(GetLogFile2)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG 
FileSize, PULONG Flags) PURE;
+    STDMETHOD(OpenLogFile2)(THIS_ PCSTR File, ULONG Flags) PURE;
+    STDMETHOD(GetLogFile2Wide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG 
FileSize, PULONG Flags) PURE;
+    STDMETHOD(OpenLogFile2Wide)(THIS_ PCWSTR File, ULONG Flags) PURE;
+    STDMETHOD(GetSystemVersionValues)(THIS_ PULONG PlatformId, PULONG 
Win32Major, PULONG Win32Minor, PULONG KdMajor, PULONG KdMinor) PURE;
+    STDMETHOD(GetSystemVersionString)(THIS_ ULONG Which, PSTR Buffer, ULONG 
BufferSize, PULONG StringSize) PURE;
+    STDMETHOD(GetSystemVersionStringWide)(THIS_ ULONG Which, PWSTR Buffer, 
ULONG BufferSize, PULONG StringSize) PURE;
+    STDMETHOD(GetContextStackTrace)(THIS_ PVOID StartContext, ULONG 
StartContextSize, PDEBUG_STACK_FRAME Frames, ULONG FramesSize, PVOID 
FrameContexts, ULONG FrameContextsSize, ULONG FrameContextsEntrySize, PULONG 
FramesFilled) PURE;
+    STDMETHOD(OutputContextStackTrace)(THIS_ ULONG OutputControl, 
PDEBUG_STACK_FRAME Frames, ULONG FramesSize, PVOID FrameContexts, ULONG 
FrameContextsSize, ULONG FrameContextsEntrySize, ULONG Flags) PURE;
+    STDMETHOD(GetStoredEventInformation)(THIS_ PULONG Type, PULONG ProcessId, 
PULONG ThreadId, PVOID Context, ULONG ContextSize, PULONG ContextUsed, PVOID 
ExtraInformation, ULONG ExtraInformationSize, PULONG ExtraInformationUsed) PURE;
+    STDMETHOD(GetManagedStatus)(THIS_ PULONG Flags, ULONG WhichString, PSTR 
String, ULONG StringSize, PULONG StringNeeded) PURE;
+    STDMETHOD(GetManagedStatusWide)(THIS_ PULONG Flags, ULONG WhichString, 
PWSTR String, ULONG StringSize, PULONG StringNeeded) PURE;
+    STDMETHOD(ResetManagedStatus)(THIS_ ULONG Flags) PURE;
+  };
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDebugControl4,0x94e60ce9,0x9b41,0x4b19,0x9f,0xc0,0x6d,0x9e,0xb3,0x52,0x72,0xb3)
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDebugControl5
+  DECLARE_INTERFACE_(IDebugControl5, IUnknown) {
+    STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    STDMETHOD(GetInterrupt)(THIS) PURE;
+    STDMETHOD(SetInterrupt)(THIS_ ULONG Flags) PURE;
+    STDMETHOD(GetInterruptTimeout)(THIS_ PULONG Seconds) PURE;
+    STDMETHOD(SetInterruptTimeout)(THIS_ ULONG Seconds) PURE;
+    STDMETHOD(GetLogFile)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG 
FileSize, PBOOL Append) PURE;
+    STDMETHOD(OpenLogFile)(THIS_ PCSTR File, WINBOOL Append) PURE;
+    STDMETHOD(CloseLogFile)(THIS) PURE;
+    STDMETHOD(GetLogMask)(THIS_ PULONG Mask) PURE;
+    STDMETHOD(SetLogMask)(THIS_ ULONG Mask) PURE;
+    STDMETHOD(Input)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG InputSize) 
PURE;
+    STDMETHOD(ReturnInput)(THIS_ PCSTR Buffer) PURE;
+    STDMETHODV(Output)(THIS_ ULONG Mask, PCSTR Format, ...) PURE;
+    STDMETHOD(OutputVaList)(THIS_ ULONG Mask, PCSTR Format, va_list Args) PURE;
+    STDMETHODV(ControlledOutput)(THIS_ ULONG OutputControl, ULONG Mask, PCSTR 
Format, ...) PURE;
+    STDMETHOD(ControlledOutputVaList)(THIS_ ULONG OutputControl, ULONG Mask, 
PCSTR Format, va_list Args) PURE;
+    STDMETHODV(OutputPrompt)(THIS_ ULONG OutputControl, PCSTR Format, ...) 
PURE;
+    STDMETHOD(OutputPromptVaList)(THIS_ ULONG OutputControl, PCSTR Format, 
va_list Args) PURE;
+    STDMETHOD(GetPromptText)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG 
TextSize) PURE;
+    STDMETHOD(OutputCurrentState)(THIS_ ULONG OutputControl, ULONG Flags) PURE;
+    STDMETHOD(OutputVersionInformation)(THIS_ ULONG OutputControl) PURE;
+    STDMETHOD(GetNotifyEventHandle)(THIS_ PULONG64 Handle) PURE;
+    STDMETHOD(SetNotifyEventHandle)(THIS_ ULONG64 Handle) PURE;
+    STDMETHOD(Assemble)(THIS_ ULONG64 Offset, PCSTR Instr, PULONG64 EndOffset) 
PURE;
+    STDMETHOD(Disassemble)(THIS_ ULONG64 Offset, ULONG Flags, PSTR Buffer, 
ULONG BufferSize, PULONG DisassemblySize, PULONG64 EndOffset) PURE;
+    STDMETHOD(GetDisassembleEffectiveOffset)(THIS_ PULONG64 Offset) PURE;
+    STDMETHOD(OutputDisassembly)(THIS_ ULONG OutputControl, ULONG64 Offset, 
ULONG Flags, PULONG64 EndOffset) PURE;
+    STDMETHOD(OutputDisassemblyLines)(THIS_ ULONG OutputControl, ULONG 
PreviousLines, ULONG TotalLines, ULONG64 Offset, ULONG Flags, PULONG 
OffsetLine, PULONG64 StartOffset, PULONG64 EndOffset, PULONG64 LineOffsets) 
PURE;
+    STDMETHOD(GetNearInstruction)(THIS_ ULONG64 Offset, LONG Delta, PULONG64 
NearOffset) PURE;
+    STDMETHOD(GetStackTrace)(THIS_ ULONG64 FrameOffset, ULONG64 StackOffset, 
ULONG64 InstructionOffset, PDEBUG_STACK_FRAME Frames, ULONG FramesSize, PULONG 
FramesFilled) PURE;
+    STDMETHOD(GetReturnOffset)(THIS_ PULONG64 Offset) PURE;
+    STDMETHOD(OutputStackTrace)(THIS_ ULONG OutputControl, PDEBUG_STACK_FRAME 
Frames, ULONG FramesSize, ULONG Flags) PURE;
+    STDMETHOD(GetDebuggeeType)(THIS_ PULONG Class, PULONG Qualifier) PURE;
+    STDMETHOD(GetActualProcessorType)(THIS_ PULONG Type) PURE;
+    STDMETHOD(GetExecutingProcessorType)(THIS_ PULONG Type) PURE;
+    STDMETHOD(GetNumberPossibleExecutingProcessorTypes)(THIS_ PULONG Number) 
PURE;
+    STDMETHOD(GetPossibleExecutingProcessorTypes)(THIS_ ULONG Start, ULONG 
Count, PULONG Types) PURE;
+    STDMETHOD(GetNumberProcessors)(THIS_ PULONG Number) PURE;
+    STDMETHOD(GetSystemVersion)(THIS_ PULONG PlatformId, PULONG Major, PULONG 
Minor, PSTR ServicePackString, ULONG ServicePackStringSize, PULONG 
ServicePackStringUsed, PULONG ServicePackNumber, PSTR BuildString, ULONG 
BuildStringSize, PULONG BuildStringUsed) PURE;
+    STDMETHOD(GetPageSize)(THIS_ PULONG Size) PURE;
+    STDMETHOD(IsPointer64Bit)(THIS) PURE;
+    STDMETHOD(ReadBugCheckData)(THIS_ PULONG Code, PULONG64 Arg1, PULONG64 
Arg2, PULONG64 Arg3, PULONG64 Arg4) PURE;
+    STDMETHOD(GetNumberSupportedProcessorTypes)(THIS_ PULONG Number) PURE;
+    STDMETHOD(GetSupportedProcessorTypes)(THIS_ ULONG Start, ULONG Count, 
PULONG Types) PURE;
+    STDMETHOD(GetProcessorTypeNames)(THIS_ ULONG Type, PSTR FullNameBuffer, 
ULONG FullNameBufferSize, PULONG FullNameSize, PSTR AbbrevNameBuffer, ULONG 
AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
+    STDMETHOD(GetEffectiveProcessorType)(THIS_ PULONG Type) PURE;
+    STDMETHOD(SetEffectiveProcessorType)(THIS_ ULONG Type) PURE;
+    STDMETHOD(GetExecutionStatus)(THIS_ PULONG Status) PURE;
+    STDMETHOD(SetExecutionStatus)(THIS_ ULONG Status) PURE;
+    STDMETHOD(GetCodeLevel)(THIS_ PULONG Level) PURE;
+    STDMETHOD(SetCodeLevel)(THIS_ ULONG Level) PURE;
+    STDMETHOD(GetEngineOptions)(THIS_ PULONG Options) PURE;
+    STDMETHOD(AddEngineOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(RemoveEngineOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(SetEngineOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(GetSystemErrorControl)(THIS_ PULONG OutputLevel, PULONG 
BreakLevel) PURE;
+    STDMETHOD(SetSystemErrorControl)(THIS_ ULONG OutputLevel, ULONG 
BreakLevel) PURE;
+    STDMETHOD(GetTextMacro)(THIS_ ULONG Slot, PSTR Buffer, ULONG BufferSize, 
PULONG MacroSize) PURE;
+    STDMETHOD(SetTextMacro)(THIS_ ULONG Slot, PCSTR Macro) PURE;
+    STDMETHOD(GetRadix)(THIS_ PULONG Radix) PURE;
+    STDMETHOD(SetRadix)(THIS_ ULONG Radix) PURE;
+    STDMETHOD(Evaluate)(THIS_ PCSTR Expression, ULONG DesiredType, 
PDEBUG_VALUE Value, PULONG RemainderIndex) PURE;
+    STDMETHOD(CoerceValue)(THIS_ PDEBUG_VALUE In, ULONG OutType, PDEBUG_VALUE 
Out) PURE;
+    STDMETHOD(CoerceValues)(THIS_ ULONG Count, PDEBUG_VALUE In, PULONG 
OutTypes, PDEBUG_VALUE Out) PURE;
+    STDMETHOD(Execute)(THIS_ ULONG OutputControl, PCSTR Command, ULONG Flags) 
PURE;
+    STDMETHOD(ExecuteCommandFile)(THIS_ ULONG OutputControl, PCSTR 
CommandFile, ULONG Flags) PURE;
+    STDMETHOD(GetNumberBreakpoints)(THIS_ PULONG Number) PURE;
+    STDMETHOD(GetBreakpointByIndex)(THIS_ ULONG Index, PDEBUG_BREAKPOINT *Bp) 
PURE;
+    STDMETHOD(GetBreakpointById)(THIS_ ULONG Id, PDEBUG_BREAKPOINT *Bp) PURE;
+    STDMETHOD(GetBreakpointParameters)(THIS_ ULONG Count, PULONG Ids, ULONG 
Start, PDEBUG_BREAKPOINT_PARAMETERS Params) PURE;
+    STDMETHOD(AddBreakpoint)(THIS_ ULONG Type, ULONG DesiredId, 
PDEBUG_BREAKPOINT *Bp) PURE;
+    STDMETHOD(RemoveBreakpoint)(THIS_ PDEBUG_BREAKPOINT Bp) PURE;
+    STDMETHOD(AddExtension)(THIS_ PCSTR Path, ULONG Flags, PULONG64 Handle) 
PURE;
+    STDMETHOD(RemoveExtension)(THIS_ ULONG64 Handle) PURE;
+    STDMETHOD(GetExtensionByPath)(THIS_ PCSTR Path, PULONG64 Handle) PURE;
+    STDMETHOD(CallExtension)(THIS_ ULONG64 Handle, PCSTR Function, PCSTR 
Arguments) PURE;
+    STDMETHOD(GetExtensionFunction)(THIS_ ULONG64 Handle, PCSTR FuncName, 
FARPROC *Function) PURE;
+    STDMETHOD(GetWindbgExtensionApis32)(THIS_ PWINDBG_EXTENSION_APIS32 Api) 
PURE;
+    STDMETHOD(GetWindbgExtensionApis64)(THIS_ PWINDBG_EXTENSION_APIS64 Api) 
PURE;
+    STDMETHOD(GetNumberEventFilters)(THIS_ PULONG SpecificEvents, PULONG 
SpecificExceptions, PULONG ArbitraryExceptions) PURE;
+    STDMETHOD(GetEventFilterText)(THIS_ ULONG Index, PSTR Buffer, ULONG 
BufferSize, PULONG TextSize) PURE;
+    STDMETHOD(GetEventFilterCommand)(THIS_ ULONG Index, PSTR Buffer, ULONG 
BufferSize, PULONG CommandSize) PURE;
+    STDMETHOD(SetEventFilterCommand)(THIS_ ULONG Index, PCSTR Command) PURE;
+    STDMETHOD(GetSpecificFilterParameters)(THIS_ ULONG Start, ULONG Count, 
PDEBUG_SPECIFIC_FILTER_PARAMETERS Params) PURE;
+    STDMETHOD(SetSpecificFilterParameters)(THIS_ ULONG Start, ULONG Count, 
PDEBUG_SPECIFIC_FILTER_PARAMETERS Params) PURE;
+    STDMETHOD(GetSpecificFilterArgument)(THIS_ ULONG Index, PSTR Buffer, ULONG 
BufferSize, PULONG ArgumentSize) PURE;
+    STDMETHOD(SetSpecificFilterArgument)(THIS_ ULONG Index, PCSTR Argument) 
PURE;
+    STDMETHOD(GetExceptionFilterParameters)(THIS_ ULONG Count, PULONG Codes, 
ULONG Start, PDEBUG_EXCEPTION_FILTER_PARAMETERS Params) PURE;
+    STDMETHOD(SetExceptionFilterParameters)(THIS_ ULONG Count, 
PDEBUG_EXCEPTION_FILTER_PARAMETERS Params) PURE;
+    STDMETHOD(GetExceptionFilterSecondCommand)(THIS_ ULONG Index, PSTR Buffer, 
ULONG BufferSize, PULONG CommandSize) PURE;
+    STDMETHOD(SetExceptionFilterSecondCommand)(THIS_ ULONG Index, PCSTR 
Command) PURE;
+    STDMETHOD(WaitForEvent)(THIS_ ULONG Flags, ULONG Timeout) PURE;
+    STDMETHOD(GetLastEventInformation)(THIS_ PULONG Type, PULONG ProcessId, 
PULONG ThreadId, PVOID ExtraInformation, ULONG ExtraInformationSize, PULONG 
ExtraInformationUsed, PSTR Description, ULONG DescriptionSize, PULONG 
DescriptionUsed) PURE;
+    STDMETHOD(GetCurrentTimeDate)(THIS_ PULONG TimeDate) PURE;
+    STDMETHOD(GetCurrentSystemUpTime)(THIS_ PULONG UpTime) PURE;
+    STDMETHOD(GetDumpFormatFlags)(THIS_ PULONG FormatFlags) PURE;
+    STDMETHOD(GetNumberTextReplacements)(THIS_ PULONG NumRepl) PURE;
+    STDMETHOD(GetTextReplacement)(THIS_ PCSTR SrcText, ULONG Index, PSTR 
SrcBuffer, ULONG SrcBufferSize, PULONG SrcSize, PSTR DstBuffer, ULONG 
DstBufferSize, PULONG DstSize) PURE;
+    STDMETHOD(SetTextReplacement)(THIS_ PCSTR SrcText, PCSTR DstText) PURE;
+    STDMETHOD(RemoveTextReplacements)(THIS) PURE;
+    STDMETHOD(OutputTextReplacements)(THIS_ ULONG OutputControl, ULONG Flags) 
PURE;
+    STDMETHOD(GetAssemblyOptions)(THIS_ PULONG Options) PURE;
+    STDMETHOD(AddAssemblyOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(RemoveAssemblyOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(SetAssemblyOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(GetExpressionSyntax)(THIS_ PULONG Flags) PURE;
+    STDMETHOD(SetExpressionSyntax)(THIS_ ULONG Flags) PURE;
+    STDMETHOD(SetExpressionSyntaxByName)(THIS_ PCSTR AbbrevName) PURE;
+    STDMETHOD(GetNumberExpressionSyntaxes)(THIS_ PULONG Number) PURE;
+    STDMETHOD(GetExpressionSyntaxNames)(THIS_ ULONG Index, PSTR 
FullNameBuffer, ULONG FullNameBufferSize, PULONG FullNameSize, PSTR 
AbbrevNameBuffer, ULONG AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
+    STDMETHOD(GetNumberEvents)(THIS_ PULONG Events) PURE;
+    STDMETHOD(GetEventIndexDescription)(THIS_ ULONG Index, ULONG Which, PSTR 
Buffer, ULONG BufferSize, PULONG DescSize) PURE;
+    STDMETHOD(GetCurrentEventIndex)(THIS_ PULONG Index) PURE;
+    STDMETHOD(SetNextEventIndex)(THIS_ ULONG Relation, ULONG Value, PULONG 
NextIndex) PURE;
+    STDMETHOD(GetLogFileWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG 
FileSize, PBOOL Append) PURE;
+    STDMETHOD(OpenLogFileWide)(THIS_ PCWSTR File, WINBOOL Append) PURE;
+    STDMETHOD(InputWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG 
InputSize) PURE;
+    STDMETHOD(ReturnInputWide)(THIS_ PCWSTR Buffer) PURE;
+    STDMETHODV(OutputWide)(THIS_ ULONG Mask, PCWSTR Format, ...) PURE;
+    STDMETHOD(OutputVaListWide)(THIS_ ULONG Mask, PCWSTR Format, va_list Args) 
PURE;
+    STDMETHODV(ControlledOutputWide)(THIS_ ULONG OutputControl, ULONG Mask, 
PCWSTR Format, ...) PURE;
+    STDMETHOD(ControlledOutputVaListWide)(THIS_ ULONG OutputControl, ULONG 
Mask, PCWSTR Format, va_list Args) PURE;
+    STDMETHODV(OutputPromptWide)(THIS_ ULONG OutputControl, PCWSTR Format, 
...) PURE;
+    STDMETHOD(OutputPromptVaListWide)(THIS_ ULONG OutputControl, PCWSTR 
Format, va_list Args) PURE;
+    STDMETHOD(GetPromptTextWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG 
TextSize) PURE;
+    STDMETHOD(AssembleWide)(THIS_ ULONG64 Offset, PCWSTR Instr, PULONG64 
EndOffset) PURE;
+    STDMETHOD(DisassembleWide)(THIS_ ULONG64 Offset, ULONG Flags, PWSTR 
Buffer, ULONG BufferSize, PULONG DisassemblySize, PULONG64 EndOffset) PURE;
+    STDMETHOD(GetProcessorTypeNamesWide)(THIS_ ULONG Type, PWSTR 
FullNameBuffer, ULONG FullNameBufferSize, PULONG FullNameSize, PWSTR 
AbbrevNameBuffer, ULONG AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
+    STDMETHOD(GetTextMacroWide)(THIS_ ULONG Slot, PWSTR Buffer, ULONG 
BufferSize, PULONG MacroSize) PURE;
+    STDMETHOD(SetTextMacroWide)(THIS_ ULONG Slot, PCWSTR Macro) PURE;
+    STDMETHOD(EvaluateWide)(THIS_ PCWSTR Expression, ULONG DesiredType, 
PDEBUG_VALUE Value, PULONG RemainderIndex) PURE;
+    STDMETHOD(ExecuteWide)(THIS_ ULONG OutputControl, PCWSTR Command, ULONG 
Flags) PURE;
+    STDMETHOD(ExecuteCommandFileWide)(THIS_ ULONG OutputControl, PCWSTR 
CommandFile, ULONG Flags) PURE;
+    STDMETHOD(GetBreakpointByIndex2)(THIS_ ULONG Index, PDEBUG_BREAKPOINT2 
*Bp) PURE;
+    STDMETHOD(GetBreakpointById2)(THIS_ ULONG Id, PDEBUG_BREAKPOINT2 *Bp) PURE;
+    STDMETHOD(AddBreakpoint2)(THIS_ ULONG Type, ULONG DesiredId, 
PDEBUG_BREAKPOINT2 *Bp) PURE;
+    STDMETHOD(RemoveBreakpoint2)(THIS_ PDEBUG_BREAKPOINT2 Bp) PURE;
+    STDMETHOD(AddExtensionWide)(THIS_ PCWSTR Path, ULONG Flags, PULONG64 
Handle) PURE;
+    STDMETHOD(GetExtensionByPathWide)(THIS_ PCWSTR Path, PULONG64 Handle) PURE;
+    STDMETHOD(CallExtensionWide)(THIS_ ULONG64 Handle, PCWSTR Function, PCWSTR 
Arguments) PURE;
+    STDMETHOD(GetExtensionFunctionWide)(THIS_ ULONG64 Handle, PCWSTR FuncName, 
FARPROC *Function) PURE;
+    STDMETHOD(GetEventFilterTextWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG 
BufferSize, PULONG TextSize) PURE;
+    STDMETHOD(GetEventFilterCommandWide)(THIS_ ULONG Index, PWSTR Buffer, 
ULONG BufferSize, PULONG CommandSize) PURE;
+    STDMETHOD(SetEventFilterCommandWide)(THIS_ ULONG Index, PCWSTR Command) 
PURE;
+    STDMETHOD(GetSpecificFilterArgumentWide)(THIS_ ULONG Index, PWSTR Buffer, 
ULONG BufferSize, PULONG ArgumentSize) PURE;
+    STDMETHOD(SetSpecificFilterArgumentWide)(THIS_ ULONG Index, PCWSTR 
Argument) PURE;
+    STDMETHOD(GetExceptionFilterSecondCommandWide)(THIS_ ULONG Index, PWSTR 
Buffer, ULONG BufferSize, PULONG CommandSize) PURE;
+    STDMETHOD(SetExceptionFilterSecondCommandWide)(THIS_ ULONG Index, PCWSTR 
Command) PURE;
+    STDMETHOD(GetLastEventInformationWide)(THIS_ PULONG Type, PULONG 
ProcessId, PULONG ThreadId, PVOID ExtraInformation, ULONG ExtraInformationSize, 
PULONG ExtraInformationUsed, PWSTR Description, ULONG DescriptionSize, PULONG 
DescriptionUsed) PURE;
+    STDMETHOD(GetTextReplacementWide)(THIS_ PCWSTR SrcText, ULONG Index, PWSTR 
SrcBuffer, ULONG SrcBufferSize, PULONG SrcSize, PWSTR DstBuffer, ULONG 
DstBufferSize, PULONG DstSize) PURE;
+    STDMETHOD(SetTextReplacementWide)(THIS_ PCWSTR SrcText, PCWSTR DstText) 
PURE;
+    STDMETHOD(SetExpressionSyntaxByNameWide)(THIS_ PCWSTR AbbrevName) PURE;
+    STDMETHOD(GetExpressionSyntaxNamesWide)(THIS_ ULONG Index, PWSTR 
FullNameBuffer, ULONG FullNameBufferSize, PULONG FullNameSize, PWSTR 
AbbrevNameBuffer, ULONG AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
+    STDMETHOD(GetEventIndexDescriptionWide)(THIS_ ULONG Index, ULONG Which, 
PWSTR Buffer, ULONG BufferSize, PULONG DescSize) PURE;
+    STDMETHOD(GetLogFile2)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG 
FileSize, PULONG Flags) PURE;
+    STDMETHOD(OpenLogFile2)(THIS_ PCSTR File, ULONG Flags) PURE;
+    STDMETHOD(GetLogFile2Wide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG 
FileSize, PULONG Flags) PURE;
+    STDMETHOD(OpenLogFile2Wide)(THIS_ PCWSTR File, ULONG Flags) PURE;
+    STDMETHOD(GetSystemVersionValues)(THIS_ PULONG PlatformId, PULONG 
Win32Major, PULONG Win32Minor, PULONG KdMajor, PULONG KdMinor) PURE;
+    STDMETHOD(GetSystemVersionString)(THIS_ ULONG Which, PSTR Buffer, ULONG 
BufferSize, PULONG StringSize) PURE;
+    STDMETHOD(GetSystemVersionStringWide)(THIS_ ULONG Which, PWSTR Buffer, 
ULONG BufferSize, PULONG StringSize) PURE;
+    STDMETHOD(GetContextStackTrace)(THIS_ PVOID StartContext, ULONG 
StartContextSize, PDEBUG_STACK_FRAME Frames, ULONG FramesSize, PVOID 
FrameContexts, ULONG FrameContextsSize, ULONG FrameContextsEntrySize, PULONG 
FramesFilled) PURE;
+    STDMETHOD(OutputContextStackTrace)(THIS_ ULONG OutputControl, 
PDEBUG_STACK_FRAME Frames, ULONG FramesSize, PVOID FrameContexts, ULONG 
FrameContextsSize, ULONG FrameContextsEntrySize, ULONG Flags) PURE;
+    STDMETHOD(GetStoredEventInformation)(THIS_ PULONG Type, PULONG ProcessId, 
PULONG ThreadId, PVOID Context, ULONG ContextSize, PULONG ContextUsed, PVOID 
ExtraInformation, ULONG ExtraInformationSize, PULONG ExtraInformationUsed) PURE;
+    STDMETHOD(GetManagedStatus)(THIS_ PULONG Flags, ULONG WhichString, PSTR 
String, ULONG StringSize, PULONG StringNeeded) PURE;
+    STDMETHOD(GetManagedStatusWide)(THIS_ PULONG Flags, ULONG WhichString, 
PWSTR String, ULONG StringSize, PULONG StringNeeded) PURE;
+    STDMETHOD(ResetManagedStatus)(THIS_ ULONG Flags) PURE;
+    STDMETHOD(GetStackTraceEx)(THIS_ ULONG64 FrameOffset, ULONG64 StackOffset, 
ULONG64 InstructionOffset, PDEBUG_STACK_FRAME_EX Frames, ULONG FramesSize, 
PULONG FramesFilled) PURE;
+    STDMETHOD(OutputStackTraceEx)(THIS_ ULONG OutputControl, 
PDEBUG_STACK_FRAME_EX Frames, ULONG FramesSize, ULONG Flags) PURE;
+    STDMETHOD(GetContextStackTraceEx)(THIS_ PVOID StartContext, ULONG 
StartContextSize, PDEBUG_STACK_FRAME_EX Frames, ULONG FramesSize, PVOID 
FrameContexts, ULONG FrameContextsSize, ULONG FrameContextsEntrySize, PULONG 
FramesFilled) PURE;
+    STDMETHOD(OutputContextStackTraceEx)(THIS_ ULONG OutputControl, 
PDEBUG_STACK_FRAME_EX Frames, ULONG FramesSize, PVOID FrameContexts, ULONG 
FrameContextsSize, ULONG FrameContextsEntrySize, ULONG Flags) PURE;
+    STDMETHOD(GetBreakpointByGuid)(THIS_ LPGUID Guid, PDEBUG_BREAKPOINT3 *Bp) 
PURE;
+  };
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDebugControl5,0xb2ffe162,0x2412,0x429f,0x8d,0x1d,0x5b,0xf6,0xdd,0x82,0x46,0x96)
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDebugControl6
+  DECLARE_INTERFACE_(IDebugControl6, IUnknown) {
+    STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    STDMETHOD(GetInterrupt)(THIS) PURE;
+    STDMETHOD(SetInterrupt)(THIS_ ULONG Flags) PURE;
+    STDMETHOD(GetInterruptTimeout)(THIS_ PULONG Seconds) PURE;
+    STDMETHOD(SetInterruptTimeout)(THIS_ ULONG Seconds) PURE;
+    STDMETHOD(GetLogFile)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG 
FileSize, PBOOL Append) PURE;
+    STDMETHOD(OpenLogFile)(THIS_ PCSTR File, WINBOOL Append) PURE;
+    STDMETHOD(CloseLogFile)(THIS) PURE;
+    STDMETHOD(GetLogMask)(THIS_ PULONG Mask) PURE;
+    STDMETHOD(SetLogMask)(THIS_ ULONG Mask) PURE;
+    STDMETHOD(Input)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG InputSize) 
PURE;
+    STDMETHOD(ReturnInput)(THIS_ PCSTR Buffer) PURE;
+    STDMETHODV(Output)(THIS_ ULONG Mask, PCSTR Format, ...) PURE;
+    STDMETHOD(OutputVaList)(THIS_ ULONG Mask, PCSTR Format, va_list Args) PURE;
+    STDMETHODV(ControlledOutput)(THIS_ ULONG OutputControl, ULONG Mask, PCSTR 
Format, ...) PURE;
+    STDMETHOD(ControlledOutputVaList)(THIS_ ULONG OutputControl, ULONG Mask, 
PCSTR Format, va_list Args) PURE;
+    STDMETHODV(OutputPrompt)(THIS_ ULONG OutputControl, PCSTR Format, ...) 
PURE;
+    STDMETHOD(OutputPromptVaList)(THIS_ ULONG OutputControl, PCSTR Format, 
va_list Args) PURE;
+    STDMETHOD(GetPromptText)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG 
TextSize) PURE;
+    STDMETHOD(OutputCurrentState)(THIS_ ULONG OutputControl, ULONG Flags) PURE;
+    STDMETHOD(OutputVersionInformation)(THIS_ ULONG OutputControl) PURE;
+    STDMETHOD(GetNotifyEventHandle)(THIS_ PULONG64 Handle) PURE;
+    STDMETHOD(SetNotifyEventHandle)(THIS_ ULONG64 Handle) PURE;
+    STDMETHOD(Assemble)(THIS_ ULONG64 Offset, PCSTR Instr, PULONG64 EndOffset) 
PURE;
+    STDMETHOD(Disassemble)(THIS_ ULONG64 Offset, ULONG Flags, PSTR Buffer, 
ULONG BufferSize, PULONG DisassemblySize, PULONG64 EndOffset) PURE;
+    STDMETHOD(GetDisassembleEffectiveOffset)(THIS_ PULONG64 Offset) PURE;
+    STDMETHOD(OutputDisassembly)(THIS_ ULONG OutputControl, ULONG64 Offset, 
ULONG Flags, PULONG64 EndOffset) PURE;
+    STDMETHOD(OutputDisassemblyLines)(THIS_ ULONG OutputControl, ULONG 
PreviousLines, ULONG TotalLines, ULONG64 Offset, ULONG Flags, PULONG 
OffsetLine, PULONG64 StartOffset, PULONG64 EndOffset, PULONG64 LineOffsets) 
PURE;
+    STDMETHOD(GetNearInstruction)(THIS_ ULONG64 Offset, LONG Delta, PULONG64 
NearOffset) PURE;
+    STDMETHOD(GetStackTrace)(THIS_ ULONG64 FrameOffset, ULONG64 StackOffset, 
ULONG64 InstructionOffset, PDEBUG_STACK_FRAME Frames, ULONG FramesSize, PULONG 
FramesFilled) PURE;
+    STDMETHOD(GetReturnOffset)(THIS_ PULONG64 Offset) PURE;
+    STDMETHOD(OutputStackTrace)(THIS_ ULONG OutputControl, PDEBUG_STACK_FRAME 
Frames, ULONG FramesSize, ULONG Flags) PURE;
+    STDMETHOD(GetDebuggeeType)(THIS_ PULONG Class, PULONG Qualifier) PURE;
+    STDMETHOD(GetActualProcessorType)(THIS_ PULONG Type) PURE;
+    STDMETHOD(GetExecutingProcessorType)(THIS_ PULONG Type) PURE;
+    STDMETHOD(GetNumberPossibleExecutingProcessorTypes)(THIS_ PULONG Number) 
PURE;
+    STDMETHOD(GetPossibleExecutingProcessorTypes)(THIS_ ULONG Start, ULONG 
Count, PULONG Types) PURE;
+    STDMETHOD(GetNumberProcessors)(THIS_ PULONG Number) PURE;
+    STDMETHOD(GetSystemVersion)(THIS_ PULONG PlatformId, PULONG Major, PULONG 
Minor, PSTR ServicePackString, ULONG ServicePackStringSize, PULONG 
ServicePackStringUsed, PULONG ServicePackNumber, PSTR BuildString, ULONG 
BuildStringSize, PULONG BuildStringUsed) PURE;
+    STDMETHOD(GetPageSize)(THIS_ PULONG Size) PURE;
+    STDMETHOD(IsPointer64Bit)(THIS) PURE;
+    STDMETHOD(ReadBugCheckData)(THIS_ PULONG Code, PULONG64 Arg1, PULONG64 
Arg2, PULONG64 Arg3, PULONG64 Arg4) PURE;
+    STDMETHOD(GetNumberSupportedProcessorTypes)(THIS_ PULONG Number) PURE;
+    STDMETHOD(GetSupportedProcessorTypes)(THIS_ ULONG Start, ULONG Count, 
PULONG Types) PURE;
+    STDMETHOD(GetProcessorTypeNames)(THIS_ ULONG Type, PSTR FullNameBuffer, 
ULONG FullNameBufferSize, PULONG FullNameSize, PSTR AbbrevNameBuffer, ULONG 
AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
+    STDMETHOD(GetEffectiveProcessorType)(THIS_ PULONG Type) PURE;
+    STDMETHOD(SetEffectiveProcessorType)(THIS_ ULONG Type) PURE;
+    STDMETHOD(GetExecutionStatus)(THIS_ PULONG Status) PURE;
+    STDMETHOD(SetExecutionStatus)(THIS_ ULONG Status) PURE;
+    STDMETHOD(GetCodeLevel)(THIS_ PULONG Level) PURE;
+    STDMETHOD(SetCodeLevel)(THIS_ ULONG Level) PURE;
+    STDMETHOD(GetEngineOptions)(THIS_ PULONG Options) PURE;
+    STDMETHOD(AddEngineOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(RemoveEngineOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(SetEngineOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(GetSystemErrorControl)(THIS_ PULONG OutputLevel, PULONG 
BreakLevel) PURE;
+    STDMETHOD(SetSystemErrorControl)(THIS_ ULONG OutputLevel, ULONG 
BreakLevel) PURE;
+    STDMETHOD(GetTextMacro)(THIS_ ULONG Slot, PSTR Buffer, ULONG BufferSize, 
PULONG MacroSize) PURE;
+    STDMETHOD(SetTextMacro)(THIS_ ULONG Slot, PCSTR Macro) PURE;
+    STDMETHOD(GetRadix)(THIS_ PULONG Radix) PURE;
+    STDMETHOD(SetRadix)(THIS_ ULONG Radix) PURE;
+    STDMETHOD(Evaluate)(THIS_ PCSTR Expression, ULONG DesiredType, 
PDEBUG_VALUE Value, PULONG RemainderIndex) PURE;
+    STDMETHOD(CoerceValue)(THIS_ PDEBUG_VALUE In, ULONG OutType, PDEBUG_VALUE 
Out) PURE;
+    STDMETHOD(CoerceValues)(THIS_ ULONG Count, PDEBUG_VALUE In, PULONG 
OutTypes, PDEBUG_VALUE Out) PURE;
+    STDMETHOD(Execute)(THIS_ ULONG OutputControl, PCSTR Command, ULONG Flags) 
PURE;
+    STDMETHOD(ExecuteCommandFile)(THIS_ ULONG OutputControl, PCSTR 
CommandFile, ULONG Flags) PURE;
+    STDMETHOD(GetNumberBreakpoints)(THIS_ PULONG Number) PURE;
+    STDMETHOD(GetBreakpointByIndex)(THIS_ ULONG Index, PDEBUG_BREAKPOINT *Bp) 
PURE;
+    STDMETHOD(GetBreakpointById)(THIS_ ULONG Id, PDEBUG_BREAKPOINT *Bp) PURE;
+    STDMETHOD(GetBreakpointParameters)(THIS_ ULONG Count, PULONG Ids, ULONG 
Start, PDEBUG_BREAKPOINT_PARAMETERS Params) PURE;
+    STDMETHOD(AddBreakpoint)(THIS_ ULONG Type, ULONG DesiredId, 
PDEBUG_BREAKPOINT *Bp) PURE;
+    STDMETHOD(RemoveBreakpoint)(THIS_ PDEBUG_BREAKPOINT Bp) PURE;
+    STDMETHOD(AddExtension)(THIS_ PCSTR Path, ULONG Flags, PULONG64 Handle) 
PURE;
+    STDMETHOD(RemoveExtension)(THIS_ ULONG64 Handle) PURE;
+    STDMETHOD(GetExtensionByPath)(THIS_ PCSTR Path, PULONG64 Handle) PURE;
+    STDMETHOD(CallExtension)(THIS_ ULONG64 Handle, PCSTR Function, PCSTR 
Arguments) PURE;
+    STDMETHOD(GetExtensionFunction)(THIS_ ULONG64 Handle, PCSTR FuncName, 
FARPROC *Function) PURE;
+    STDMETHOD(GetWindbgExtensionApis32)(THIS_ PWINDBG_EXTENSION_APIS32 Api) 
PURE;
+    STDMETHOD(GetWindbgExtensionApis64)(THIS_ PWINDBG_EXTENSION_APIS64 Api) 
PURE;
+    STDMETHOD(GetNumberEventFilters)(THIS_ PULONG SpecificEvents, PULONG 
SpecificExceptions, PULONG ArbitraryExceptions) PURE;
+    STDMETHOD(GetEventFilterText)(THIS_ ULONG Index, PSTR Buffer, ULONG 
BufferSize, PULONG TextSize) PURE;
+    STDMETHOD(GetEventFilterCommand)(THIS_ ULONG Index, PSTR Buffer, ULONG 
BufferSize, PULONG CommandSize) PURE;
+    STDMETHOD(SetEventFilterCommand)(THIS_ ULONG Index, PCSTR Command) PURE;
+    STDMETHOD(GetSpecificFilterParameters)(THIS_ ULONG Start, ULONG Count, 
PDEBUG_SPECIFIC_FILTER_PARAMETERS Params) PURE;
+    STDMETHOD(SetSpecificFilterParameters)(THIS_ ULONG Start, ULONG Count, 
PDEBUG_SPECIFIC_FILTER_PARAMETERS Params) PURE;
+    STDMETHOD(GetSpecificFilterArgument)(THIS_ ULONG Index, PSTR Buffer, ULONG 
BufferSize, PULONG ArgumentSize) PURE;
+    STDMETHOD(SetSpecificFilterArgument)(THIS_ ULONG Index, PCSTR Argument) 
PURE;
+    STDMETHOD(GetExceptionFilterParameters)(THIS_ ULONG Count, PULONG Codes, 
ULONG Start, PDEBUG_EXCEPTION_FILTER_PARAMETERS Params) PURE;
+    STDMETHOD(SetExceptionFilterParameters)(THIS_ ULONG Count, 
PDEBUG_EXCEPTION_FILTER_PARAMETERS Params) PURE;
+    STDMETHOD(GetExceptionFilterSecondCommand)(THIS_ ULONG Index, PSTR Buffer, 
ULONG BufferSize, PULONG CommandSize) PURE;
+    STDMETHOD(SetExceptionFilterSecondCommand)(THIS_ ULONG Index, PCSTR 
Command) PURE;
+    STDMETHOD(WaitForEvent)(THIS_ ULONG Flags, ULONG Timeout) PURE;
+    STDMETHOD(GetLastEventInformation)(THIS_ PULONG Type, PULONG ProcessId, 
PULONG ThreadId, PVOID ExtraInformation, ULONG ExtraInformationSize, PULONG 
ExtraInformationUsed, PSTR Description, ULONG DescriptionSize, PULONG 
DescriptionUsed) PURE;
+    STDMETHOD(GetCurrentTimeDate)(THIS_ PULONG TimeDate) PURE;
+    STDMETHOD(GetCurrentSystemUpTime)(THIS_ PULONG UpTime) PURE;
+    STDMETHOD(GetDumpFormatFlags)(THIS_ PULONG FormatFlags) PURE;
+    STDMETHOD(GetNumberTextReplacements)(THIS_ PULONG NumRepl) PURE;
+    STDMETHOD(GetTextReplacement)(THIS_ PCSTR SrcText, ULONG Index, PSTR 
SrcBuffer, ULONG SrcBufferSize, PULONG SrcSize, PSTR DstBuffer, ULONG 
DstBufferSize, PULONG DstSize) PURE;
+    STDMETHOD(SetTextReplacement)(THIS_ PCSTR SrcText, PCSTR DstText) PURE;
+    STDMETHOD(RemoveTextReplacements)(THIS) PURE;
+    STDMETHOD(OutputTextReplacements)(THIS_ ULONG OutputControl, ULONG Flags) 
PURE;
+    STDMETHOD(GetAssemblyOptions)(THIS_ PULONG Options) PURE;
+    STDMETHOD(AddAssemblyOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(RemoveAssemblyOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(SetAssemblyOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(GetExpressionSyntax)(THIS_ PULONG Flags) PURE;
+    STDMETHOD(SetExpressionSyntax)(THIS_ ULONG Flags) PURE;
+    STDMETHOD(SetExpressionSyntaxByName)(THIS_ PCSTR AbbrevName) PURE;
+    STDMETHOD(GetNumberExpressionSyntaxes)(THIS_ PULONG Number) PURE;
+    STDMETHOD(GetExpressionSyntaxNames)(THIS_ ULONG Index, PSTR 
FullNameBuffer, ULONG FullNameBufferSize, PULONG FullNameSize, PSTR 
AbbrevNameBuffer, ULONG AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
+    STDMETHOD(GetNumberEvents)(THIS_ PULONG Events) PURE;
+    STDMETHOD(GetEventIndexDescription)(THIS_ ULONG Index, ULONG Which, PSTR 
Buffer, ULONG BufferSize, PULONG DescSize) PURE;
+    STDMETHOD(GetCurrentEventIndex)(THIS_ PULONG Index) PURE;
+    STDMETHOD(SetNextEventIndex)(THIS_ ULONG Relation, ULONG Value, PULONG 
NextIndex) PURE;
+    STDMETHOD(GetLogFileWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG 
FileSize, PBOOL Append) PURE;
+    STDMETHOD(OpenLogFileWide)(THIS_ PCWSTR File, WINBOOL Append) PURE;
+    STDMETHOD(InputWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG 
InputSize) PURE;
+    STDMETHOD(ReturnInputWide)(THIS_ PCWSTR Buffer) PURE;
+    STDMETHODV(OutputWide)(THIS_ ULONG Mask, PCWSTR Format, ...) PURE;
+    STDMETHOD(OutputVaListWide)(THIS_ ULONG Mask, PCWSTR Format, va_list Args) 
PURE;
+    STDMETHODV(ControlledOutputWide)(THIS_ ULONG OutputControl, ULONG Mask, 
PCWSTR Format, ...) PURE;
+    STDMETHOD(ControlledOutputVaListWide)(THIS_ ULONG OutputControl, ULONG 
Mask, PCWSTR Format, va_list Args) PURE;
+    STDMETHODV(OutputPromptWide)(THIS_ ULONG OutputControl, PCWSTR Format, 
...) PURE;
+    STDMETHOD(OutputPromptVaListWide)(THIS_ ULONG OutputControl, PCWSTR 
Format, va_list Args) PURE;
+    STDMETHOD(GetPromptTextWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG 
TextSize) PURE;
+    STDMETHOD(AssembleWide)(THIS_ ULONG64 Offset, PCWSTR Instr, PULONG64 
EndOffset) PURE;
+    STDMETHOD(DisassembleWide)(THIS_ ULONG64 Offset, ULONG Flags, PWSTR 
Buffer, ULONG BufferSize, PULONG DisassemblySize, PULONG64 EndOffset) PURE;
+    STDMETHOD(GetProcessorTypeNamesWide)(THIS_ ULONG Type, PWSTR 
FullNameBuffer, ULONG FullNameBufferSize, PULONG FullNameSize, PWSTR 
AbbrevNameBuffer, ULONG AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
+    STDMETHOD(GetTextMacroWide)(THIS_ ULONG Slot, PWSTR Buffer, ULONG 
BufferSize, PULONG MacroSize) PURE;
+    STDMETHOD(SetTextMacroWide)(THIS_ ULONG Slot, PCWSTR Macro) PURE;
+    STDMETHOD(EvaluateWide)(THIS_ PCWSTR Expression, ULONG DesiredType, 
PDEBUG_VALUE Value, PULONG RemainderIndex) PURE;
+    STDMETHOD(ExecuteWide)(THIS_ ULONG OutputControl, PCWSTR Command, ULONG 
Flags) PURE;
+    STDMETHOD(ExecuteCommandFileWide)(THIS_ ULONG OutputControl, PCWSTR 
CommandFile, ULONG Flags) PURE;
+    STDMETHOD(GetBreakpointByIndex2)(THIS_ ULONG Index, PDEBUG_BREAKPOINT2 
*Bp) PURE;
+    STDMETHOD(GetBreakpointById2)(THIS_ ULONG Id, PDEBUG_BREAKPOINT2 *Bp) PURE;
+    STDMETHOD(AddBreakpoint2)(THIS_ ULONG Type, ULONG DesiredId, 
PDEBUG_BREAKPOINT2 *Bp) PURE;
+    STDMETHOD(RemoveBreakpoint2)(THIS_ PDEBUG_BREAKPOINT2 Bp) PURE;
+    STDMETHOD(AddExtensionWide)(THIS_ PCWSTR Path, ULONG Flags, PULONG64 
Handle) PURE;
+    STDMETHOD(GetExtensionByPathWide)(THIS_ PCWSTR Path, PULONG64 Handle) PURE;
+    STDMETHOD(CallExtensionWide)(THIS_ ULONG64 Handle, PCWSTR Function, PCWSTR 
Arguments) PURE;
+    STDMETHOD(GetExtensionFunctionWide)(THIS_ ULONG64 Handle, PCWSTR FuncName, 
FARPROC *Function) PURE;
+    STDMETHOD(GetEventFilterTextWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG 
BufferSize, PULONG TextSize) PURE;
+    STDMETHOD(GetEventFilterCommandWide)(THIS_ ULONG Index, PWSTR Buffer, 
ULONG BufferSize, PULONG CommandSize) PURE;
+    STDMETHOD(SetEventFilterCommandWide)(THIS_ ULONG Index, PCWSTR Command) 
PURE;
+    STDMETHOD(GetSpecificFilterArgumentWide)(THIS_ ULONG Index, PWSTR Buffer, 
ULONG BufferSize, PULONG ArgumentSize) PURE;
+    STDMETHOD(SetSpecificFilterArgumentWide)(THIS_ ULONG Index, PCWSTR 
Argument) PURE;
+    STDMETHOD(GetExceptionFilterSecondCommandWide)(THIS_ ULONG Index, PWSTR 
Buffer, ULONG BufferSize, PULONG CommandSize) PURE;
+    STDMETHOD(SetExceptionFilterSecondCommandWide)(THIS_ ULONG Index, PCWSTR 
Command) PURE;
+    STDMETHOD(GetLastEventInformationWide)(THIS_ PULONG Type, PULONG 
ProcessId, PULONG ThreadId, PVOID ExtraInformation, ULONG ExtraInformationSize, 
PULONG ExtraInformationUsed, PWSTR Description, ULONG DescriptionSize, PULONG 
DescriptionUsed) PURE;
+    STDMETHOD(GetTextReplacementWide)(THIS_ PCWSTR SrcText, ULONG Index, PWSTR 
SrcBuffer, ULONG SrcBufferSize, PULONG SrcSize, PWSTR DstBuffer, ULONG 
DstBufferSize, PULONG DstSize) PURE;
+    STDMETHOD(SetTextReplacementWide)(THIS_ PCWSTR SrcText, PCWSTR DstText) 
PURE;
+    STDMETHOD(SetExpressionSyntaxByNameWide)(THIS_ PCWSTR AbbrevName) PURE;
+    STDMETHOD(GetExpressionSyntaxNamesWide)(THIS_ ULONG Index, PWSTR 
FullNameBuffer, ULONG FullNameBufferSize, PULONG FullNameSize, PWSTR 
AbbrevNameBuffer, ULONG AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
+    STDMETHOD(GetEventIndexDescriptionWide)(THIS_ ULONG Index, ULONG Which, 
PWSTR Buffer, ULONG BufferSize, PULONG DescSize) PURE;
+    STDMETHOD(GetLogFile2)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG 
FileSize, PULONG Flags) PURE;
+    STDMETHOD(OpenLogFile2)(THIS_ PCSTR File, ULONG Flags) PURE;
+    STDMETHOD(GetLogFile2Wide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG 
FileSize, PULONG Flags) PURE;
+    STDMETHOD(OpenLogFile2Wide)(THIS_ PCWSTR File, ULONG Flags) PURE;
+    STDMETHOD(GetSystemVersionValues)(THIS_ PULONG PlatformId, PULONG 
Win32Major, PULONG Win32Minor, PULONG KdMajor, PULONG KdMinor) PURE;
+    STDMETHOD(GetSystemVersionString)(THIS_ ULONG Which, PSTR Buffer, ULONG 
BufferSize, PULONG StringSize) PURE;
+    STDMETHOD(GetSystemVersionStringWide)(THIS_ ULONG Which, PWSTR Buffer, 
ULONG BufferSize, PULONG StringSize) PURE;
+    STDMETHOD(GetContextStackTrace)(THIS_ PVOID StartContext, ULONG 
StartContextSize, PDEBUG_STACK_FRAME Frames, ULONG FramesSize, PVOID 
FrameContexts, ULONG FrameContextsSize, ULONG FrameContextsEntrySize, PULONG 
FramesFilled) PURE;
+    STDMETHOD(OutputContextStackTrace)(THIS_ ULONG OutputControl, 
PDEBUG_STACK_FRAME Frames, ULONG FramesSize, PVOID FrameContexts, ULONG 
FrameContextsSize, ULONG FrameContextsEntrySize, ULONG Flags) PURE;
+    STDMETHOD(GetStoredEventInformation)(THIS_ PULONG Type, PULONG ProcessId, 
PULONG ThreadId, PVOID Context, ULONG ContextSize, PULONG ContextUsed, PVOID 
ExtraInformation, ULONG ExtraInformationSize, PULONG ExtraInformationUsed) PURE;
+    STDMETHOD(GetManagedStatus)(THIS_ PULONG Flags, ULONG WhichString, PSTR 
String, ULONG StringSize, PULONG StringNeeded) PURE;
+    STDMETHOD(GetManagedStatusWide)(THIS_ PULONG Flags, ULONG WhichString, 
PWSTR String, ULONG StringSize, PULONG StringNeeded) PURE;
+    STDMETHOD(ResetManagedStatus)(THIS_ ULONG Flags) PURE;
+    STDMETHOD(GetStackTraceEx)(THIS_ ULONG64 FrameOffset, ULONG64 StackOffset, 
ULONG64 InstructionOffset, PDEBUG_STACK_FRAME_EX Frames, ULONG FramesSize, 
PULONG FramesFilled) PURE;
+    STDMETHOD(OutputStackTraceEx)(THIS_ ULONG OutputControl, 
PDEBUG_STACK_FRAME_EX Frames, ULONG FramesSize, ULONG Flags) PURE;
+    STDMETHOD(GetContextStackTraceEx)(THIS_ PVOID StartContext, ULONG 
StartContextSize, PDEBUG_STACK_FRAME_EX Frames, ULONG FramesSize, PVOID 
FrameContexts, ULONG FrameContextsSize, ULONG FrameContextsEntrySize, PULONG 
FramesFilled) PURE;
+    STDMETHOD(OutputContextStackTraceEx)(THIS_ ULONG OutputControl, 
PDEBUG_STACK_FRAME_EX Frames, ULONG FramesSize, PVOID FrameContexts, ULONG 
FrameContextsSize, ULONG FrameContextsEntrySize, ULONG Flags) PURE;
+    STDMETHOD(GetBreakpointByGuid)(THIS_ LPGUID Guid, PDEBUG_BREAKPOINT3 *Bp) 
PURE;
+    STDMETHOD(GetExecutionStatusEx)(THIS_ PULONG Status) PURE;
+    STDMETHOD(GetSynchronizationStatus)(THIS_ PULONG SendsAttempted, PULONG 
SecondsSinceLastResponse) PURE;
+  };
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDebugControl6,0xbc0d583f,0x126d,0x43a1,0x9c,0xc4,0xa8,0x60,0xab,0x1d,0x53,0x7b)
+#endif
+
+#define DEBUG_EXEC_FLAGS_NONBLOCK 0x00000001
+
+#undef INTERFACE
+#define INTERFACE IDebugControl7
+  DECLARE_INTERFACE_(IDebugControl7, IUnknown) {
+    STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
+    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG, Release)(THIS) PURE;
+    STDMETHOD(GetInterrupt)(THIS) PURE;
+    STDMETHOD(SetInterrupt)(THIS_ ULONG Flags) PURE;
+    STDMETHOD(GetInterruptTimeout)(THIS_ PULONG Seconds) PURE;
+    STDMETHOD(SetInterruptTimeout)(THIS_ ULONG Seconds) PURE;
+    STDMETHOD(GetLogFile)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG 
FileSize, PBOOL Append) PURE;
+    STDMETHOD(OpenLogFile)(THIS_ PCSTR File, WINBOOL Append) PURE;
+    STDMETHOD(CloseLogFile)(THIS) PURE;
+    STDMETHOD(GetLogMask)(THIS_ PULONG Mask) PURE;
+    STDMETHOD(SetLogMask)(THIS_ ULONG Mask) PURE;
+    STDMETHOD(Input)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG InputSize) 
PURE;
+    STDMETHOD(ReturnInput)(THIS_ PCSTR Buffer) PURE;
+    STDMETHODV(Output)(THIS_ ULONG Mask, PCSTR Format, ...) PURE;
+    STDMETHOD(OutputVaList)(THIS_ ULONG Mask, PCSTR Format, va_list Args) PURE;
+    STDMETHODV(ControlledOutput)(THIS_ ULONG OutputControl, ULONG Mask, PCSTR 
Format, ...) PURE;
+    STDMETHOD(ControlledOutputVaList)(THIS_ ULONG OutputControl, ULONG Mask, 
PCSTR Format, va_list Args) PURE;
+    STDMETHODV(OutputPrompt)(THIS_ ULONG OutputControl, PCSTR Format, ...) 
PURE;
+    STDMETHOD(OutputPromptVaList)(THIS_ ULONG OutputControl, PCSTR Format, 
va_list Args) PURE;
+    STDMETHOD(GetPromptText)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG 
TextSize) PURE;
+    STDMETHOD(OutputCurrentState)(THIS_ ULONG OutputControl, ULONG Flags) PURE;
+    STDMETHOD(OutputVersionInformation)(THIS_ ULONG OutputControl) PURE;
+    STDMETHOD(GetNotifyEventHandle)(THIS_ PULONG64 Handle) PURE;
+    STDMETHOD(SetNotifyEventHandle)(THIS_ ULONG64 Handle) PURE;
+    STDMETHOD(Assemble)(THIS_ ULONG64 Offset, PCSTR Instr, PULONG64 EndOffset) 
PURE;
+    STDMETHOD(Disassemble)(THIS_ ULONG64 Offset, ULONG Flags, PSTR Buffer, 
ULONG BufferSize, PULONG DisassemblySize, PULONG64 EndOffset) PURE;
+    STDMETHOD(GetDisassembleEffectiveOffset)(THIS_ PULONG64 Offset) PURE;
+    STDMETHOD(OutputDisassembly)(THIS_ ULONG OutputControl, ULONG64 Offset, 
ULONG Flags, PULONG64 EndOffset) PURE;
+    STDMETHOD(OutputDisassemblyLines)(THIS_ ULONG OutputControl, ULONG 
PreviousLines, ULONG TotalLines, ULONG64 Offset, ULONG Flags, PULONG 
OffsetLine, PULONG64 StartOffset, PULONG64 EndOffset, PULONG64 LineOffsets) 
PURE;
+    STDMETHOD(GetNearInstruction)(THIS_ ULONG64 Offset, LONG Delta, PULONG64 
NearOffset) PURE;
+    STDMETHOD(GetStackTrace)(THIS_ ULONG64 FrameOffset, ULONG64 StackOffset, 
ULONG64 InstructionOffset, PDEBUG_STACK_FRAME Frames, ULONG FramesSize, PULONG 
FramesFilled) PURE;
+    STDMETHOD(GetReturnOffset)(THIS_ PULONG64 Offset) PURE;
+    STDMETHOD(OutputStackTrace)(THIS_ ULONG OutputControl, PDEBUG_STACK_FRAME 
Frames, ULONG FramesSize, ULONG Flags) PURE;
+    STDMETHOD(GetDebuggeeType)(THIS_ PULONG Class, PULONG Qualifier) PURE;
+    STDMETHOD(GetActualProcessorType)(THIS_ PULONG Type) PURE;
+    STDMETHOD(GetExecutingProcessorType)(THIS_ PULONG Type) PURE;
+    STDMETHOD(GetNumberPossibleExecutingProcessorTypes)(THIS_ PULONG Number) 
PURE;
+    STDMETHOD(GetPossibleExecutingProcessorTypes)(THIS_ ULONG Start, ULONG 
Count, PULONG Types) PURE;
+    STDMETHOD(GetNumberProcessors)(THIS_ PULONG Number) PURE;
+    STDMETHOD(GetSystemVersion)(THIS_ PULONG PlatformId, PULONG Major, PULONG 
Minor, PSTR ServicePackString, ULONG ServicePackStringSize, PULONG 
ServicePackStringUsed, PULONG ServicePackNumber, PSTR BuildString, ULONG 
BuildStringSize, PULONG BuildStringUsed) PURE;
+    STDMETHOD(GetPageSize)(THIS_ PULONG Size) PURE;
+    STDMETHOD(IsPointer64Bit)(THIS) PURE;
+    STDMETHOD(ReadBugCheckData)(THIS_ PULONG Code, PULONG64 Arg1, PULONG64 
Arg2, PULONG64 Arg3, PULONG64 Arg4) PURE;
+    STDMETHOD(GetNumberSupportedProcessorTypes)(THIS_ PULONG Number) PURE;
+    STDMETHOD(GetSupportedProcessorTypes)(THIS_ ULONG Start, ULONG Count, 
PULONG Types) PURE;
+    STDMETHOD(GetProcessorTypeNames)(THIS_ ULONG Type, PSTR FullNameBuffer, 
ULONG FullNameBufferSize, PULONG FullNameSize, PSTR AbbrevNameBuffer, ULONG 
AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
+    STDMETHOD(GetEffectiveProcessorType)(THIS_ PULONG Type) PURE;
+    STDMETHOD(SetEffectiveProcessorType)(THIS_ ULONG Type) PURE;
+    STDMETHOD(GetExecutionStatus)(THIS_ PULONG Status) PURE;
+    STDMETHOD(SetExecutionStatus)(THIS_ ULONG Status) PURE;
+    STDMETHOD(GetCodeLevel)(THIS_ PULONG Level) PURE;
+    STDMETHOD(SetCodeLevel)(THIS_ ULONG Level) PURE;
+    STDMETHOD(GetEngineOptions)(THIS_ PULONG Options) PURE;
+    STDMETHOD(AddEngineOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(RemoveEngineOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(SetEngineOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(GetSystemErrorControl)(THIS_ PULONG OutputLevel, PULONG 
BreakLevel) PURE;
+    STDMETHOD(SetSystemErrorControl)(THIS_ ULONG OutputLevel, ULONG 
BreakLevel) PURE;
+    STDMETHOD(GetTextMacro)(THIS_ ULONG Slot, PSTR Buffer, ULONG BufferSize, 
PULONG MacroSize) PURE;
+    STDMETHOD(SetTextMacro)(THIS_ ULONG Slot, PCSTR Macro) PURE;
+    STDMETHOD(GetRadix)(THIS_ PULONG Radix) PURE;
+    STDMETHOD(SetRadix)(THIS_ ULONG Radix) PURE;
+    STDMETHOD(Evaluate)(THIS_ PCSTR Expression, ULONG DesiredType, 
PDEBUG_VALUE Value, PULONG RemainderIndex) PURE;
+    STDMETHOD(CoerceValue)(THIS_ PDEBUG_VALUE In, ULONG OutType, PDEBUG_VALUE 
Out) PURE;
+    STDMETHOD(CoerceValues)(THIS_ ULONG Count, PDEBUG_VALUE In, PULONG 
OutTypes, PDEBUG_VALUE Out) PURE;
+    STDMETHOD(Execute)(THIS_ ULONG OutputControl, PCSTR Command, ULONG Flags) 
PURE;
+    STDMETHOD(ExecuteCommandFile)(THIS_ ULONG OutputControl, PCSTR 
CommandFile, ULONG Flags) PURE;
+    STDMETHOD(GetNumberBreakpoints)(THIS_ PULONG Number) PURE;
+    STDMETHOD(GetBreakpointByIndex)(THIS_ ULONG Index, PDEBUG_BREAKPOINT *Bp) 
PURE;
+    STDMETHOD(GetBreakpointById)(THIS_ ULONG Id, PDEBUG_BREAKPOINT *Bp) PURE;
+    STDMETHOD(GetBreakpointParameters)(THIS_ ULONG Count, PULONG Ids, ULONG 
Start, PDEBUG_BREAKPOINT_PARAMETERS Params) PURE;
+    STDMETHOD(AddBreakpoint)(THIS_ ULONG Type, ULONG DesiredId, 
PDEBUG_BREAKPOINT *Bp) PURE;
+    STDMETHOD(RemoveBreakpoint)(THIS_ PDEBUG_BREAKPOINT Bp) PURE;
+    STDMETHOD(AddExtension)(THIS_ PCSTR Path, ULONG Flags, PULONG64 Handle) 
PURE;
+    STDMETHOD(RemoveExtension)(THIS_ ULONG64 Handle) PURE;
+    STDMETHOD(GetExtensionByPath)(THIS_ PCSTR Path, PULONG64 Handle) PURE;
+    STDMETHOD(CallExtension)(THIS_ ULONG64 Handle, PCSTR Function, PCSTR 
Arguments) PURE;
+    STDMETHOD(GetExtensionFunction)(THIS_ ULONG64 Handle, PCSTR FuncName, 
FARPROC *Function) PURE;
+    STDMETHOD(GetWindbgExtensionApis32)(THIS_ PWINDBG_EXTENSION_APIS32 Api) 
PURE;
+    STDMETHOD(GetWindbgExtensionApis64)(THIS_ PWINDBG_EXTENSION_APIS64 Api) 
PURE;
+    STDMETHOD(GetNumberEventFilters)(THIS_ PULONG SpecificEvents, PULONG 
SpecificExceptions, PULONG ArbitraryExceptions) PURE;
+    STDMETHOD(GetEventFilterText)(THIS_ ULONG Index, PSTR Buffer, ULONG 
BufferSize, PULONG TextSize) PURE;
+    STDMETHOD(GetEventFilterCommand)(THIS_ ULONG Index, PSTR Buffer, ULONG 
BufferSize, PULONG CommandSize) PURE;
+    STDMETHOD(SetEventFilterCommand)(THIS_ ULONG Index, PCSTR Command) PURE;
+    STDMETHOD(GetSpecificFilterParameters)(THIS_ ULONG Start, ULONG Count, 
PDEBUG_SPECIFIC_FILTER_PARAMETERS Params) PURE;
+    STDMETHOD(SetSpecificFilterParameters)(THIS_ ULONG Start, ULONG Count, 
PDEBUG_SPECIFIC_FILTER_PARAMETERS Params) PURE;
+    STDMETHOD(GetSpecificFilterArgument)(THIS_ ULONG Index, PSTR Buffer, ULONG 
BufferSize, PULONG ArgumentSize) PURE;
+    STDMETHOD(SetSpecificFilterArgument)(THIS_ ULONG Index, PCSTR Argument) 
PURE;
+    STDMETHOD(GetExceptionFilterParameters)(THIS_ ULONG Count, PULONG Codes, 
ULONG Start, PDEBUG_EXCEPTION_FILTER_PARAMETERS Params) PURE;
+    STDMETHOD(SetExceptionFilterParameters)(THIS_ ULONG Count, 
PDEBUG_EXCEPTION_FILTER_PARAMETERS Params) PURE;
+    STDMETHOD(GetExceptionFilterSecondCommand)(THIS_ ULONG Index, PSTR Buffer, 
ULONG BufferSize, PULONG CommandSize) PURE;
+    STDMETHOD(SetExceptionFilterSecondCommand)(THIS_ ULONG Index, PCSTR 
Command) PURE;
+    STDMETHOD(WaitForEvent)(THIS_ ULONG Flags, ULONG Timeout) PURE;
+    STDMETHOD(GetLastEventInformation)(THIS_ PULONG Type, PULONG ProcessId, 
PULONG ThreadId, PVOID ExtraInformation, ULONG ExtraInformationSize, PULONG 
ExtraInformationUsed, PSTR Description, ULONG DescriptionSize, PULONG 
DescriptionUsed) PURE;
+    STDMETHOD(GetCurrentTimeDate)(THIS_ PULONG TimeDate) PURE;
+    STDMETHOD(GetCurrentSystemUpTime)(THIS_ PULONG UpTime) PURE;
+    STDMETHOD(GetDumpFormatFlags)(THIS_ PULONG FormatFlags) PURE;
+    STDMETHOD(GetNumberTextReplacements)(THIS_ PULONG NumRepl) PURE;
+    STDMETHOD(GetTextReplacement)(THIS_ PCSTR SrcText, ULONG Index, PSTR 
SrcBuffer, ULONG SrcBufferSize, PULONG SrcSize, PSTR DstBuffer, ULONG 
DstBufferSize, PULONG DstSize) PURE;
+    STDMETHOD(SetTextReplacement)(THIS_ PCSTR SrcText, PCSTR DstText) PURE;
+    STDMETHOD(RemoveTextReplacements)(THIS) PURE;
+    STDMETHOD(OutputTextReplacements)(THIS_ ULONG OutputControl, ULONG Flags) 
PURE;
+    STDMETHOD(GetAssemblyOptions)(THIS_ PULONG Options) PURE;
+    STDMETHOD(AddAssemblyOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(RemoveAssemblyOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(SetAssemblyOptions)(THIS_ ULONG Options) PURE;
+    STDMETHOD(GetExpressionSyntax)(THIS_ PULONG Flags) PURE;
+    STDMETHOD(SetExpressionSyntax)(THIS_ ULONG Flags) PURE;
+    STDMETHOD(SetExpressionSyntaxByName)(THIS_ PCSTR AbbrevName) PURE;
+    STDMETHOD(GetNumberExpressionSyntaxes)(THIS_ PULONG Number) PURE;
+    STDMETHOD(GetExpressionSyntaxNames)(THIS_ ULONG Index, PSTR 
FullNameBuffer, ULONG FullNameBufferSize, PULONG FullNameSize, PSTR 
AbbrevNameBuffer, ULONG AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
+    STDMETHOD(GetNumberEvents)(THIS_ PULONG Events) PURE;
+    STDMETHOD(GetEventIndexDescription)(THIS_ ULONG Index, ULONG Which, PSTR 
Buffer, ULONG BufferSize, PULONG DescSize) PURE;
+    STDMETHOD(GetCurrentEventIndex)(THIS_ PULONG Index) PURE;
+    STDMETHOD(SetNextEventIndex)(THIS_ ULONG Relation, ULONG Value, PULONG 
NextIndex) PURE;
+    STDMETHOD(GetLogFileWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG 
FileSize, PBOOL Append) PURE;
+    STDMETHOD(OpenLogFileWide)(THIS_ PCWSTR File, WINBOOL Append) PURE;
+    STDMETHOD(InputWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG 
InputSize) PURE;
+    STDMETHOD(ReturnInputWide)(THIS_ PCWSTR Buffer) PURE;
+    STDMETHODV(OutputWide)(THIS_ ULONG Mask, PCWSTR Format, ...) PURE;
+    STDMETHOD(OutputVaListWide)(THIS_ ULONG Mask, PCWSTR Format, va_list Args) 
PURE;
+    STDMETHODV(ControlledOutputWide)(THIS_ ULONG OutputControl, ULONG Mask, 
PCWSTR Format, ...) PURE;
+    STDMETHOD(ControlledOutputVaListWide)(THIS_ ULONG OutputControl, ULONG 
Mask, PCWSTR Format, va_list Args) PURE;
+    STDMETHODV(OutputPromptWide)(THIS_ ULONG OutputControl, PCWSTR Format, 
...) PURE;
+    STDMETHOD(OutputPromptVaListWide)(THIS_ ULONG OutputControl, PCWSTR 
Format, va_list Args) PURE;
+    STDMETHOD(GetPromptTextWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG 
TextSize) PURE;
+    STDMETHOD(AssembleWide)(THIS_ ULONG64 Offset, PCWSTR Instr, PULONG64 
EndOffset) PURE;
+    STDMETHOD(DisassembleWide)(THIS_ ULONG64 Offset, ULONG Flags, PWSTR 
Buffer, ULONG BufferSize, PULONG DisassemblySize, PULONG64 EndOffset) PURE;
+    STDMETHOD(GetProcessorTypeNamesWide)(THIS_ ULONG Type, PWSTR 
FullNameBuffer, ULONG FullNameBufferSize, PULONG FullNameSize, PWSTR 
AbbrevNameBuffer, ULONG AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
+    STDMETHOD(GetTextMacroWide)(THIS_ ULONG Slot, PWSTR Buffer, ULONG 
BufferSize, PULONG MacroSize) PURE;
+    STDMETHOD(SetTextMacroWide)(THIS_ ULONG Slot, PCWSTR Macro) PURE;
+    STDMETHOD(EvaluateWide)(THIS_ PCWSTR Expression, ULONG DesiredType, 
PDEBUG_VALUE Value, PULONG RemainderIndex) PURE;
+    STDMETHOD(ExecuteWide)(THIS_ ULONG OutputControl, PCWSTR Command, ULONG 
Flags) PURE;
+    STDMETHOD(ExecuteCommandFileWide)(THIS_ ULONG OutputControl, PCWSTR 
CommandFile, ULONG Flags) PURE;
+    STDMETHOD(GetBreakpointByIndex2)(THIS_ ULONG Index, PDEBUG_BREAKPOINT2 
*Bp) PURE;
+    STDMETHOD(GetBreakpointById2)(THIS_ ULONG Id, PDEBUG_BREAKPOINT2 *Bp) PURE;
+    STDMETHOD(AddBreakpoint2)(THIS_ ULONG Type, ULONG DesiredId, 
PDEBUG_BREAKPOINT2 *Bp) PURE;
+    STDMETHOD(RemoveBreakpoint2)(THIS_ PDEBUG_BREAKPOINT2 Bp) PURE;
+    STDMETHOD(AddExtensionWide)(THIS_ PCWSTR Path, ULONG Flags, PULONG64 
Handle) PURE;
+    STDMETHOD(GetExtensionByPathWide)(THIS_ PCWSTR Path, PULONG64 Handle) PURE;
+    STDMETHOD(CallExtensionWide)(THIS_ ULONG64 Handle, PCWSTR Function, PCWSTR 
Arguments) PURE;
+    STDMETHOD(GetExtensionFunctionWide)(THIS_ ULONG64 Handle, PCWSTR FuncName, 
FARPROC *Function) PURE;
+    STDMETHOD(GetEventFilterTextWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG 
BufferSize, PULONG TextSize) PURE;
+    STDMETHOD(GetEventFilterCommandWide)(THIS_ ULONG Index, PWSTR Buffer, 
ULONG BufferSize, PULONG CommandSize) PURE;
+    STDMETHOD(SetEventFilterCommandWide)(THIS_ ULONG Index, PCWSTR Command) 
PURE;
+    STDMETHOD(GetSpecificFilterArgumentWide)(THIS_ ULONG Index, PWSTR Buffer, 
ULONG BufferSize, PULONG ArgumentSize) PURE;
+    STDMETHOD(SetSpecificFilterArgumentWide)(THIS_ ULONG Index, PCWSTR 
Argument) PURE;
+    STDMETHOD(GetExceptionFilterSecondCommandWide)(THIS_ ULONG Index, PWSTR 
Buffer, ULONG BufferSize, PULONG CommandSize) PURE;
+    STDMETHOD(SetExceptionFilterSecondCommandWide)(THIS_ ULONG Index, PCWSTR 
Command) PURE;
+    STDMETHOD(GetLastEventInformationWide)(THIS_ PULONG Type, PULONG 
ProcessId, PULONG ThreadId, PVOID ExtraInformation, ULONG ExtraInformationSize, 
PULONG ExtraInformationUsed, PWSTR Description, ULONG DescriptionSize, PULONG 
DescriptionUsed) PURE;
+    STDMETHOD(GetTextReplacementWide)(THIS_ PCWSTR SrcText, ULONG Index, PWSTR 
SrcBuffer, ULONG SrcBufferSize, PULONG SrcSize, PWSTR DstBuffer, ULONG 
DstBufferSize, PULONG DstSize) PURE;
+    STDMETHOD(SetTextReplacementWide)(THIS_ PCWSTR SrcText, PCWSTR DstText) 
PURE;
+    STDMETHOD(SetExpressionSyntaxByNameWide)(THIS_ PCWSTR AbbrevName) PURE;
+    STDMETHOD(GetExpressionSyntaxNamesWide)(THIS_ ULONG Index, PWSTR 
FullNameBuffer, ULONG FullNameBufferSize, PULONG FullNameSize, PWSTR 
AbbrevNameBuffer, ULONG AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
+    STDMETHOD(GetEventIndexDescriptionWide)(THIS_ ULONG Index, ULONG Which, 
PWSTR Buffer, ULONG BufferSize, PULONG DescSize) PURE;
+    STDMETHOD(GetLogFile2)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG 
FileSize, PULONG Flags) PURE;
+    STDMETHOD(OpenLogFile2)(THIS_ PCSTR File, ULONG Flags) PURE;
+    STDMETHOD(GetLogFile2Wide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG 
FileSize, PULONG Flags) PURE;
+    STDMETHOD(OpenLogFile2Wide)(THIS_ PCWSTR File, ULONG Flags) PURE;
+    STDMETHOD(GetSystemVersionValues)(THIS_ PULONG PlatformId, PULONG 
Win32Major, PULONG Win32Minor, PULONG KdMajor, PULONG KdMinor) PURE;
+    STDMETHOD(GetSystemVersionString)(THIS_ ULONG Which, PSTR Buffer, ULONG 
BufferSize, PULONG StringSize) PURE;
+    STDMETHOD(GetSystemVersionStringWide)(THIS_ ULONG Which, PWSTR Buffer, 
ULONG BufferSize, PULONG StringSize) PURE;
+    STDMETHOD(GetContextStackTrace)(THIS_ PVOID StartContext, ULONG 
StartContextSize, PDEBUG_STACK_FRAME Frames, ULONG FramesSize, PVOID 
FrameContexts, ULONG FrameContextsSize, ULONG FrameContextsEntrySize, PULONG 
FramesFilled) PURE;
+    STDMETHOD(OutputContextStackTrace)(THIS_ ULONG OutputControl, 
PDEBUG_STACK_FRAME Frames, ULONG FramesSize, PVOID FrameContexts, ULONG 
FrameContextsSize, ULONG FrameContextsEntrySize, ULONG Flags) PURE;
+    STDMETHOD(GetStoredEventInformation)(THIS_ PULONG Type, PULONG ProcessId, 
PULONG ThreadId, PVOID Context, ULONG ContextSize, PULONG ContextUsed, PVOID 
ExtraInformation, ULONG ExtraInformationSize, PULONG ExtraInformationUsed) PURE;
+    STDMETHOD(GetManagedStatus)(THIS_ PULONG Flags, ULONG WhichString, PSTR 
String, ULONG StringSize, PULONG StringNeeded) PURE;
+    STDMETHOD(GetManagedStatusWide)(THIS_ PULONG Flags, ULONG WhichString, 
PWSTR String, ULONG StringSize, PULONG StringNeeded) PURE;
+    STDMETHOD(ResetManagedStatus)(THIS_ ULONG Flags) PURE;
+    STDMETHOD(GetStackTraceEx)(THIS_ ULONG64 FrameOffset, ULONG64 StackOffset, 
ULONG64 InstructionOffset, PDEBUG_STACK_FRAME_EX Frames, ULONG FramesSize, 
PULONG FramesFilled) PURE;
+    STDMETHOD(OutputStackTraceEx)(THIS_ ULONG OutputControl, 
PDEBUG_STACK_FRAME_EX Frames, ULONG FramesSize, ULONG Flags) PURE;
+    STDMETHOD(GetContextStackTraceEx)(THIS_ PVOID StartContext, ULONG 
StartContextSize, PDEBUG_STACK_FRAME_EX Frames, ULONG FramesSize, PVOID 
FrameContexts, ULONG FrameContextsSize, ULONG FrameContextsEntrySize, PULONG 
FramesFilled) PURE;
+    STDMETHOD(OutputContextStackTraceEx)(THIS_ ULONG OutputControl, 
PDEBUG_STACK_FRAME_EX Frames, ULONG FramesSize, PVOID FrameContexts, ULONG 
FrameContextsSize, ULONG FrameContextsEntrySize, ULONG Flags) PURE;
+    STDMETHOD(GetBreakpointByGuid)(THIS_ LPGUID Guid, PDEBUG_BREAKPOINT3 *Bp) 
PURE;
+    STDMETHOD(GetExecutionStatusEx)(THIS_ PULONG Status) PURE;
+    STDMETHOD(GetSynchronizationStatus)(THIS_ PULONG SendsAttempted, PULONG 
SecondsSinceLastResponse) PURE;
+    STDMETHOD(GetDebuggeeType2)(THIS_ ULONG Flags, PULONG Class, PULONG 
Qualifier) PURE;
+  };
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IDebugControl7,0xb86fb3b1,0x80d4,0x475b,0xae,0xa3,0xcf,0x06,0x53,0x9c,0xf6,0x3a)
+#endif
+
 #define DEBUG_DATA_SPACE_VIRTUAL 0
 #define DEBUG_DATA_SPACE_PHYSICAL 1
 #define DEBUG_DATA_SPACE_CONTROL 2
-- 
2.46.0

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

Reply via email to