zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

dbgeng.h (313875B) - Raw


      1 /**
      2  * This file has no copyright assigned and is placed in the Public Domain.
      3  * This file is part of the mingw-w64 runtime package.
      4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
      5  */
      6 #ifndef __DBGENG_H__
      7 #define __DBGENG_H__
      8 
      9 #include <stdarg.h>
     10 #include <objbase.h>
     11 
     12 #ifndef _WDBGEXTS_
     13 typedef struct _WINDBG_EXTENSION_APIS32 *PWINDBG_EXTENSION_APIS32;
     14 typedef struct _WINDBG_EXTENSION_APIS64 *PWINDBG_EXTENSION_APIS64;
     15 #endif
     16 
     17 #ifndef _CRASHLIB_
     18 typedef struct _MEMORY_BASIC_INFORMATION64 *PMEMORY_BASIC_INFORMATION64;
     19 #endif
     20 
     21 #ifdef __cplusplus
     22 extern "C" {
     23 #endif
     24 
     25   DEFINE_GUID(IID_IDebugAdvanced,0xf2df5f53,0x071f,0x47bd,0x9d,0xe6,0x57,0x34,0xc3,0xfe,0xd6,0x89);
     26   DEFINE_GUID(IID_IDebugAdvanced2,0x716d14c9,0x119b,0x4ba5,0xaf,0x1f,0x08,0x90,0xe6,0x72,0x41,0x6a);
     27   DEFINE_GUID(IID_IDebugAdvanced3,0xcba4abb4,0x84c4,0x444d,0x87,0xca,0xa0,0x4e,0x13,0x28,0x67,0x39);
     28   DEFINE_GUID(IID_IDebugAdvanced4,0xd1069067,0x2a65,0x4bf0,0xae,0x97,0x76,0x18,0x4b,0x67,0x85,0x6b);
     29   DEFINE_GUID(IID_IDebugBreakpoint,0x5bd9d474,0x5975,0x423a,0xb8,0x8b,0x65,0xa8,0xe7,0x11,0x0e,0x65);
     30   DEFINE_GUID(IID_IDebugBreakpoint2,0x1b278d20,0x79f2,0x426e,0xa3,0xf9,0xc1,0xdd,0xf3,0x75,0xd4,0x8e);
     31   DEFINE_GUID(IID_IDebugBreakpoint3,0x38f5c249,0xb448,0x43bb,0x98,0x35,0x57,0x9d,0x4e,0xc0,0x22,0x49);
     32   DEFINE_GUID(IID_IDebugClient,0x27fe5639,0x8407,0x4f47,0x83,0x64,0xee,0x11,0x8f,0xb0,0x8a,0xc8);
     33   DEFINE_GUID(IID_IDebugClient2,0xedbed635,0x372e,0x4dab,0xbb,0xfe,0xed,0x0d,0x2f,0x63,0xbe,0x81);
     34   DEFINE_GUID(IID_IDebugClient3,0xdd492d7f,0x71b8,0x4ad6,0xa8,0xdc,0x1c,0x88,0x74,0x79,0xff,0x91);
     35   DEFINE_GUID(IID_IDebugClient4,0xca83c3de,0x5089,0x4cf8,0x93,0xc8,0xd8,0x92,0x38,0x7f,0x2a,0x5e);
     36   DEFINE_GUID(IID_IDebugClient5,0xe3acb9d7,0x7ec2,0x4f0c,0xa0,0xda,0xe8,0x1e,0x0c,0xbb,0xe6,0x28);
     37   DEFINE_GUID(IID_IDebugClient6,0xfd28b4c5,0xc498,0x4686,0xa2,0x8e,0x62,0xca,0xd2,0x15,0x4e,0xb3);
     38   DEFINE_GUID(IID_IDebugClient7,0x13586be3,0x542e,0x481e,0xb1,0xf2,0x84,0x97,0xba,0x74,0xf9,0xa9);
     39   DEFINE_GUID(IID_IDebugClient8,0xcec43add,0x6375,0x469e,0x83,0xd5,0x41,0x4e,0x40,0x33,0xc1,0x9a);
     40   DEFINE_GUID(IID_IDebugClient9,0x2c24cd5b,0x4d9e,0x4df4,0x8a,0x70,0x3d,0x37,0x44,0x0d,0x11,0x9f);
     41   DEFINE_GUID(IID_IDebugPlmClient,0xa02b66c4,0xaea3,0x4234,0xa9,0xf7,0xfe,0x4c,0x38,0x3d,0x4e,0x29);
     42   DEFINE_GUID(IID_IDebugPlmClient2,0x597c980d,0xe7bd,0x4309,0x96,0x2c,0x9d,0x9b,0x69,0xa7,0x37,0x2c);
     43   DEFINE_GUID(IID_IDebugPlmClient3,0xcdf48669,0x901f,0x4791,0xb8,0x68,0x7d,0x2c,0xb3,0xa2,0xd7,0xfc);
     44   DEFINE_GUID(IID_IDebugOutputStream,0x7782d8f2,0x2b85,0x4059,0xab,0x88,0x28,0xce,0xdd,0xca,0x1c,0x80);
     45   DEFINE_GUID(IID_IDebugControl,0x5182e668,0x105e,0x416e,0xad,0x92,0x24,0xef,0x80,0x04,0x24,0xba);
     46   DEFINE_GUID(IID_IDebugControl2,0xd4366723,0x44df,0x4bed,0x8c,0x7e,0x4c,0x05,0x42,0x4f,0x45,0x88);
     47   DEFINE_GUID(IID_IDebugControl3,0x7df74a86,0xb03f,0x407f,0x90,0xab,0xa2,0x0d,0xad,0xce,0xad,0x08);
     48   DEFINE_GUID(IID_IDebugControl4,0x94e60ce9,0x9b41,0x4b19,0x9f,0xc0,0x6d,0x9e,0xb3,0x52,0x72,0xb3);
     49   DEFINE_GUID(IID_IDebugControl5,0xb2ffe162,0x2412,0x429f,0x8d,0x1d,0x5b,0xf6,0xdd,0x82,0x46,0x96);
     50   DEFINE_GUID(IID_IDebugControl6,0xbc0d583f,0x126d,0x43a1,0x9c,0xc4,0xa8,0x60,0xab,0x1d,0x53,0x7b);
     51   DEFINE_GUID(IID_IDebugControl7,0xb86fb3b1,0x80d4,0x475b,0xae,0xa3,0xcf,0x06,0x53,0x9c,0xf6,0x3a);
     52   DEFINE_GUID(IID_IDebugDataSpaces,0x88f7dfab,0x3ea7,0x4c3a,0xae,0xfb,0xc4,0xe8,0x10,0x61,0x73,0xaa);
     53   DEFINE_GUID(IID_IDebugDataSpaces2,0x7a5e852f,0x96e9,0x468f,0xac,0x1b,0x0b,0x3a,0xdd,0xc4,0xa0,0x49);
     54   DEFINE_GUID(IID_IDebugDataSpaces3,0x23f79d6c,0x8aaf,0x4f7c,0xa6,0x07,0x99,0x95,0xf5,0x40,0x7e,0x63);
     55   DEFINE_GUID(IID_IDebugDataSpaces4,0xd98ada1f,0x29e9,0x4ef5,0xa6,0xc0,0xe5,0x33,0x49,0x88,0x32,0x12);
     56   DEFINE_GUID(IID_IDebugEventCallbacks,0x337be28b,0x5036,0x4d72,0xb6,0xbf,0xc4,0x5f,0xbb,0x9f,0x2e,0xaa);
     57   DEFINE_GUID(IID_IDebugEventCallbacksWide,0x0690e046,0x9c23,0x45ac,0xa0,0x4f,0x98,0x7a,0xc2,0x9a,0xd0,0xd3);
     58   DEFINE_GUID(IID_IDebugEventContextCallbacks,0x61a4905b,0x23f9,0x4247,0xb3,0xc5,0x53,0xd0,0x87,0x52,0x9a,0xb7);
     59   DEFINE_GUID(IID_IDebugInputCallbacks,0x9f50e42c,0xf136,0x499e,0x9a,0x97,0x73,0x03,0x6c,0x94,0xed,0x2d);
     60   DEFINE_GUID(IID_IDebugOutputCallbacks,0x4bf58045,0xd654,0x4c40,0xb0,0xaf,0x68,0x30,0x90,0xf3,0x56,0xdc);
     61   DEFINE_GUID(IID_IDebugOutputCallbacksWide,0x4c7fd663,0xc394,0x4e26,0x8e,0xf1,0x34,0xad,0x5e,0xd3,0x76,0x4c);
     62   DEFINE_GUID(IID_IDebugRegisters,0xce289126,0x9e84,0x45a7,0x93,0x7e,0x67,0xbb,0x18,0x69,0x14,0x93);
     63   DEFINE_GUID(IID_IDebugRegisters2,0x1656afa9,0x19c6,0x4e3a,0x97,0xe7,0x5d,0xc9,0x16,0x0c,0xf9,0xc4);
     64   DEFINE_GUID(IID_IDebugSymbolGroup,0xf2528316,0x0f1a,0x4431,0xae,0xed,0x11,0xd0,0x96,0xe1,0xe2,0xab);
     65   DEFINE_GUID(IID_IDebugSymbolGroup2,0x6a7ccc5f,0xfb5e,0x4dcc,0xb4,0x1c,0x6c,0x20,0x30,0x7b,0xcc,0xc7);
     66   DEFINE_GUID(IID_IDebugSymbols,0x8c31e98c,0x983a,0x48a5,0x90,0x16,0x6f,0xe5,0xd6,0x67,0xa9,0x50);
     67   DEFINE_GUID(IID_IDebugSymbols2,0x3a707211,0xafdd,0x4495,0xad,0x4f,0x56,0xfe,0xcd,0xf8,0x16,0x3f);
     68   DEFINE_GUID(IID_IDebugSymbols3,0xf02fbecc,0x50ac,0x4f36,0x9a,0xd9,0xc9,0x75,0xe8,0xf3,0x2f,0xf8);
     69   DEFINE_GUID(IID_IDebugSymbols4,0xe391bbd8,0x9d8c,0x4418,0x84,0x0b,0xc0,0x06,0x59,0x2a,0x17,0x52);
     70   DEFINE_GUID(IID_IDebugSymbols5,0xc65fa83e,0x1e69,0x475e,0x8e,0x0e,0xb5,0xd7,0x9e,0x9c,0xc1,0x7e);
     71   DEFINE_GUID(IID_IDebugSystemObjects,0x6b86fe2c,0x2c4f,0x4f0c,0x9d,0xa2,0x17,0x43,0x11,0xac,0xc3,0x27);
     72   DEFINE_GUID(IID_IDebugSystemObjects2,0x0ae9f5ff,0x1852,0x4679,0xb0,0x55,0x49,0x4b,0xee,0x64,0x07,0xee);
     73   DEFINE_GUID(IID_IDebugSystemObjects3,0xe9676e2f,0xe286,0x4ea3,0xb0,0xf9,0xdf,0xe5,0xd9,0xfc,0x33,0x0e);
     74   DEFINE_GUID(IID_IDebugSystemObjects4,0x489468e6,0x7d0f,0x4af5,0x87,0xab,0x25,0x20,0x74,0x54,0xd5,0x53);
     75 
     76   typedef struct IDebugAdvanced *PDEBUG_ADVANCED;
     77   typedef struct IDebugAdvanced2 *PDEBUG_ADVANCED2;
     78   typedef struct IDebugAdvanced3 *PDEBUG_ADVANCED3;
     79   typedef struct IDebugAdvanced4 *PDEBUG_ADVANCED4;
     80   typedef struct IDebugBreakpoint *PDEBUG_BREAKPOINT;
     81   typedef struct IDebugBreakpoint2 *PDEBUG_BREAKPOINT2;
     82   typedef struct IDebugBreakpoint3 *PDEBUG_BREAKPOINT3;
     83   typedef struct IDebugClient *PDEBUG_CLIENT;
     84   typedef struct IDebugClient2 *PDEBUG_CLIENT2;
     85   typedef struct IDebugClient3 *PDEBUG_CLIENT3;
     86   typedef struct IDebugClient4 *PDEBUG_CLIENT4;
     87   typedef struct IDebugClient5 *PDEBUG_CLIENT5;
     88   typedef struct IDebugClient6 *PDEBUG_CLIENT6;
     89   typedef struct IDebugClient7 *PDEBUG_CLIENT7;
     90   typedef struct IDebugClient8 *PDEBUG_CLIENT8;
     91   typedef struct IDebugClient9 *PDEBUG_CLIENT9;
     92   typedef struct IDebugPlmClient *PIDEBUG_PLMCLIENT;
     93   typedef struct IDebugPlmClient2 *PIDEBUG_PLMCLIENT2;
     94   typedef struct IDebugPlmClient3 *PIDEBUG_PLMCLIENT3;
     95   typedef struct IDebugOutputStream *PDEBUG_OUTPUT_STREAM;
     96   typedef struct IDebugControl *PDEBUG_CONTROL;
     97   typedef struct IDebugControl2 *PDEBUG_CONTROL2;
     98   typedef struct IDebugControl3 *PDEBUG_CONTROL3;
     99   typedef struct IDebugControl4 *PDEBUG_CONTROL4;
    100   typedef struct IDebugControl5 *PDEBUG_CONTROL5;
    101   typedef struct IDebugControl6 *PDEBUG_CONTROL6;
    102   typedef struct IDebugControl7 *PDEBUG_CONTROL7;
    103   typedef struct IDebugDataSpaces *PDEBUG_DATA_SPACES;
    104   typedef struct IDebugDataSpaces2 *PDEBUG_DATA_SPACES2;
    105   typedef struct IDebugDataSpaces3 *PDEBUG_DATA_SPACES3;
    106   typedef struct IDebugDataSpaces4 *PDEBUG_DATA_SPACES4;
    107   typedef struct IDebugEventCallbacks *PDEBUG_EVENT_CALLBACKS;
    108   typedef struct IDebugEventCallbacksWide *PDEBUG_EVENT_CALLBACKS_WIDE;
    109   typedef struct IDebugEventContextCallbacks *PDEBUG_EVENT_CONTEXT_CALLBACKS;
    110   typedef struct IDebugInputCallbacks *PDEBUG_INPUT_CALLBACKS;
    111   typedef struct IDebugOutputCallbacks *PDEBUG_OUTPUT_CALLBACKS;
    112   typedef struct IDebugOutputCallbacksWide *PDEBUG_OUTPUT_CALLBACKS_WIDE;
    113   typedef struct IDebugRegisters *PDEBUG_REGISTERS;
    114   typedef struct IDebugRegisters2 *PDEBUG_REGISTERS2;
    115   typedef struct IDebugSymbolGroup *PDEBUG_SYMBOL_GROUP;
    116   typedef struct IDebugSymbolGroup2 *PDEBUG_SYMBOL_GROUP2;
    117   typedef struct IDebugSymbols *PDEBUG_SYMBOLS;
    118   typedef struct IDebugSymbols2 *PDEBUG_SYMBOLS2;
    119   typedef struct IDebugSymbols3 *PDEBUG_SYMBOLS3;
    120   typedef struct IDebugSymbols4 *PDEBUG_SYMBOLS4;
    121   typedef struct IDebugSymbols5 *PDEBUG_SYMBOLS5;
    122   typedef struct IDebugSystemObjects *PDEBUG_SYSTEM_OBJECTS;
    123   typedef struct IDebugSystemObjects2 *PDEBUG_SYSTEM_OBJECTS2;
    124   typedef struct IDebugSystemObjects3 *PDEBUG_SYSTEM_OBJECTS3;
    125   typedef struct IDebugSystemObjects4 *PDEBUG_SYSTEM_OBJECTS4;
    126 
    127 #define DEBUG_EXTEND64(Addr) ((ULONG64)(LONG64)(LONG)(Addr))
    128 
    129   STDAPI DebugConnect(PCSTR RemoteOptions,REFIID InterfaceId,PVOID *Interface);
    130   STDAPI DebugCreate(REFIID InterfaceId,PVOID *Interface);
    131 
    132   typedef struct _DEBUG_OFFSET_REGION {
    133     ULONG64 Base;
    134     ULONG64 Size;
    135   } DEBUG_OFFSET_REGION,*PDEBUG_OFFSET_REGION;
    136 
    137 #undef INTERFACE
    138 #define INTERFACE IDebugAdvanced
    139   DECLARE_INTERFACE_(IDebugAdvanced,IUnknown) {
    140     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE;
    141     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    142     STDMETHOD_(ULONG,Release)(THIS) PURE;
    143     STDMETHOD(GetThreadContext)(THIS_ PVOID Context,ULONG ContextSize) PURE;
    144     STDMETHOD(SetThreadContext)(THIS_ PVOID Context,ULONG ContextSize) PURE;
    145   };
    146 #ifdef __CRT_UUID_DECL
    147 __CRT_UUID_DECL(IDebugAdvanced,0xf2df5f53,0x071f,0x47bd,0x9d,0xe6,0x57,0x34,0xc3,0xfe,0xd6,0x89)
    148 #endif
    149 
    150   typedef struct _DEBUG_READ_USER_MINIDUMP_STREAM {
    151     ULONG StreamType;
    152     ULONG Flags;
    153     ULONG64 Offset;
    154     PVOID Buffer;
    155     ULONG BufferSize;
    156     ULONG BufferUsed;
    157   } DEBUG_READ_USER_MINIDUMP_STREAM,*PDEBUG_READ_USER_MINIDUMP_STREAM;
    158 
    159 #define DEBUG_GET_TEXT_COMPLETIONS_NO_DOT_COMMANDS 0x00000001
    160 #define DEBUG_GET_TEXT_COMPLETIONS_NO_EXTENSION_COMMANDS 0x00000002
    161 #define DEBUG_GET_TEXT_COMPLETIONS_NO_SYMBOLS 0x00000004
    162 
    163   typedef struct _DEBUG_GET_TEXT_COMPLETIONS_IN {
    164     ULONG Flags;
    165     ULONG MatchCountLimit;
    166     ULONG64 Reserved[3];
    167   } DEBUG_GET_TEXT_COMPLETIONS_IN,*PDEBUG_GET_TEXT_COMPLETIONS_IN;
    168 
    169 #define DEBUG_GET_TEXT_COMPLETIONS_IS_DOT_COMMAND 0x00000001
    170 #define DEBUG_GET_TEXT_COMPLETIONS_IS_EXTENSION_COMMAND 0x00000002
    171 #define DEBUG_GET_TEXT_COMPLETIONS_IS_SYMBOL 0x00000004
    172 
    173   typedef struct _DEBUG_GET_TEXT_COMPLETIONS_OUT {
    174     ULONG Flags;
    175     ULONG ReplaceIndex;
    176     ULONG MatchCount;
    177     ULONG Reserved1;
    178     ULONG64 Reserved2[2];
    179   } DEBUG_GET_TEXT_COMPLETIONS_OUT,*PDEBUG_GET_TEXT_COMPLETIONS_OUT;
    180 
    181   typedef struct _DEBUG_CACHED_SYMBOL_INFO {
    182     ULONG64 ModBase;
    183     ULONG64 Arg1;
    184     ULONG64 Arg2;
    185     ULONG Id;
    186     ULONG Arg3;
    187   } DEBUG_CACHED_SYMBOL_INFO,*PDEBUG_CACHED_SYMBOL_INFO;
    188 
    189   typedef struct _PROCESS_NAME_ENTRY {
    190     ULONG ProcessId;
    191     ULONG NameOffset;
    192     ULONG NameSize;
    193     ULONG NextEntry;
    194   } PROCESS_NAME_ENTRY,*PPROCESS_NAME_ENTRY;
    195 
    196 #define DEBUG_REQUEST_SOURCE_PATH_HAS_SOURCE_SERVER 0
    197 #define DEBUG_REQUEST_TARGET_EXCEPTION_CONTEXT 1
    198 #define DEBUG_REQUEST_TARGET_EXCEPTION_THREAD 2
    199 #define DEBUG_REQUEST_TARGET_EXCEPTION_RECORD 3
    200 #define DEBUG_REQUEST_GET_ADDITIONAL_CREATE_OPTIONS 4
    201 #define DEBUG_REQUEST_SET_ADDITIONAL_CREATE_OPTIONS 5
    202 #define DEBUG_REQUEST_GET_WIN32_MAJOR_MINOR_VERSIONS 6
    203 #define DEBUG_REQUEST_READ_USER_MINIDUMP_STREAM 7
    204 #define DEBUG_REQUEST_TARGET_CAN_DETACH 8
    205 #define DEBUG_REQUEST_SET_LOCAL_IMPLICIT_COMMAND_LINE 9
    206 #define DEBUG_REQUEST_GET_CAPTURED_EVENT_CODE_OFFSET 10
    207 #define DEBUG_REQUEST_READ_CAPTURED_EVENT_CODE_STREAM 11
    208 #define DEBUG_REQUEST_EXT_TYPED_DATA_ANSI 12
    209 #define DEBUG_REQUEST_GET_EXTENSION_SEARCH_PATH_WIDE 13
    210 #define DEBUG_REQUEST_GET_TEXT_COMPLETIONS_WIDE 14
    211 #define DEBUG_REQUEST_GET_CACHED_SYMBOL_INFO 15
    212 #define DEBUG_REQUEST_ADD_CACHED_SYMBOL_INFO 16
    213 #define DEBUG_REQUEST_REMOVE_CACHED_SYMBOL_INFO 17
    214 #define DEBUG_REQUEST_GET_TEXT_COMPLETIONS_ANSI 18
    215 #define DEBUG_REQUEST_CURRENT_OUTPUT_CALLBACKS_ARE_DML_AWARE 19
    216 #define DEBUG_REQUEST_GET_OFFSET_UNWIND_INFORMATION 20
    217 #define DEBUG_REQUEST_GET_DUMP_HEADER 21
    218 #define DEBUG_REQUEST_SET_DUMP_HEADER 22
    219 #define DEBUG_REQUEST_MIDORI 23
    220 #define DEBUG_REQUEST_PROCESS_DESCRIPTORS 24
    221 #define DEBUG_REQUEST_MISC_INFORMATION 25
    222 #define DEBUG_REQUEST_OPEN_PROCESS_TOKEN 26
    223 #define DEBUG_REQUEST_OPEN_THREAD_TOKEN 27
    224 #define DEBUG_REQUEST_DUPLICATE_TOKEN 28
    225 #define DEBUG_REQUEST_QUERY_INFO_TOKEN 29
    226 #define DEBUG_REQUEST_CLOSE_TOKEN 30
    227 #define DEBUG_REQUEST_WOW_PROCESS 31
    228 #define DEBUG_REQUEST_WOW_MODULE 32
    229 #define DEBUG_LIVE_USER_NON_INVASIVE 33
    230 #define DEBUG_REQUEST_RESUME_THREAD 34
    231 #define DEBUG_REQUEST_INLINE_QUERY 35
    232 #define DEBUG_REQUEST_TL_INSTRUMENTATION_AWARE 36
    233 #define DEBUG_REQUEST_GET_INSTRUMENTATION_VERSION 37
    234 #define DEBUG_REQUEST_GET_MODULE_ARCHITECTURE 38
    235 #define DEBUG_REQUEST_GET_IMAGE_ARCHITECTURE 39
    236 #define DEBUG_REQUEST_SET_PARENT_HWND 40
    237 
    238 #define DEBUG_SRCFILE_SYMBOL_TOKEN 0
    239 #define DEBUG_SRCFILE_SYMBOL_TOKEN_SOURCE_COMMAND_WIDE 1
    240 #define DEBUG_SRCFILE_SYMBOL_CHECKSUMINFO 2
    241 
    242 #define DEBUG_SYMINFO_BREAKPOINT_SOURCE_LINE 0
    243 #define DEBUG_SYMINFO_IMAGEHLP_MODULEW64 1
    244 #define DEBUG_SYMINFO_GET_SYMBOL_NAME_BY_OFFSET_AND_TAG_WIDE 2
    245 #define DEBUG_SYMINFO_GET_MODULE_SYMBOL_NAMES_AND_OFFSETS 3
    246 
    247 #define DEBUG_SYSOBJINFO_THREAD_BASIC_INFORMATION 0
    248 #define DEBUG_SYSOBJINFO_THREAD_NAME_WIDE 1
    249 #define DEBUG_SYSOBJINFO_CURRENT_PROCESS_COOKIE 2
    250 
    251 #define DEBUG_TBINFO_EXIT_STATUS 0x00000001
    252 #define DEBUG_TBINFO_PRIORITY_CLASS 0x00000002
    253 #define DEBUG_TBINFO_PRIORITY 0x00000004
    254 #define DEBUG_TBINFO_TIMES 0x00000008
    255 #define DEBUG_TBINFO_START_OFFSET 0x00000010
    256 #define DEBUG_TBINFO_AFFINITY 0x00000020
    257 #define DEBUG_TBINFO_ALL 0x0000003f
    258 
    259   typedef struct _DEBUG_THREAD_BASIC_INFORMATION {
    260     ULONG Valid;
    261     ULONG ExitStatus;
    262     ULONG PriorityClass;
    263     ULONG Priority;
    264     ULONG64 CreateTime;
    265     ULONG64 ExitTime;
    266     ULONG64 KernelTime;
    267     ULONG64 UserTime;
    268     ULONG64 StartOffset;
    269     ULONG64 Affinity;
    270   } DEBUG_THREAD_BASIC_INFORMATION,*PDEBUG_THREAD_BASIC_INFORMATION;
    271 
    272 #undef INTERFACE
    273 #define INTERFACE IDebugAdvanced2
    274   DECLARE_INTERFACE_(IDebugAdvanced2, IUnknown) {
    275     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
    276     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    277     STDMETHOD_(ULONG, Release)(THIS) PURE;
    278     STDMETHOD(GetThreadContext)(THIS_ PVOID Context, ULONG ContextSize) PURE;
    279     STDMETHOD(SetThreadContext)(THIS_ PVOID Context, ULONG ContextSize) PURE;
    280     STDMETHOD(Request)(THIS_ ULONG Request, PVOID InBuffer, ULONG InBufferSize, PVOID OutBuffer, ULONG OutBufferSize, PULONG OutSize) PURE;
    281     STDMETHOD(GetSourceFileInformation)(THIS_ ULONG Which, PSTR SourceFile, ULONG64 Arg64, ULONG Arg32, PVOID Buffer, ULONG BufferSize, PULONG InfoSize) PURE;
    282     STDMETHOD(FindSourceFileAndToken)(THIS_ ULONG StartElement, ULONG64 ModAddr, PCSTR File, ULONG Flags, PVOID FileToken, ULONG FileTokenSize, PULONG FoundElement, PSTR Buffer, ULONG BufferSize, PULONG FoundSize) PURE;
    283     STDMETHOD(GetSymbolInformation)(THIS_ ULONG Which, ULONG64 Arg64, ULONG Arg32, PVOID Buffer, ULONG BufferSize, PULONG InfoSize, PSTR StringBuffer, ULONG StringBufferSize, PULONG StringSize) PURE;
    284     STDMETHOD(GetSystemObjectInformation)(THIS_ ULONG Which, ULONG64 Arg64, ULONG Arg32, PVOID Buffer, ULONG BufferSize, PULONG InfoSize) PURE;
    285   };
    286 #ifdef __CRT_UUID_DECL
    287 __CRT_UUID_DECL(IDebugAdvanced2,0x716d14c9,0x119b,0x4ba5,0xaf,0x1f,0x08,0x90,0xe6,0x72,0x41,0x6a)
    288 #endif
    289 
    290 #undef INTERFACE
    291 #define INTERFACE IDebugAdvanced3
    292   DECLARE_INTERFACE_(IDebugAdvanced3, IUnknown) {
    293     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
    294     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    295     STDMETHOD_(ULONG, Release)(THIS) PURE;
    296     STDMETHOD(GetThreadContext)(THIS_ PVOID Context, ULONG ContextSize) PURE;
    297     STDMETHOD(SetThreadContext)(THIS_ PVOID Context, ULONG ContextSize) PURE;
    298     STDMETHOD(Request)(THIS_ ULONG Request, PVOID InBuffer, ULONG InBufferSize, PVOID OutBuffer, ULONG OutBufferSize, PULONG OutSize) PURE;
    299     STDMETHOD(GetSourceFileInformation)(THIS_ ULONG Which, PSTR SourceFile, ULONG64 Arg64, ULONG Arg32, PVOID Buffer, ULONG BufferSize, PULONG InfoSize) PURE;
    300     STDMETHOD(FindSourceFileAndToken)(THIS_ ULONG StartElement, ULONG64 ModAddr, PCSTR File, ULONG Flags, PVOID FileToken, ULONG FileTokenSize, PULONG FoundElement, PSTR Buffer, ULONG BufferSize, PULONG FoundSize) PURE;
    301     STDMETHOD(GetSymbolInformation)(THIS_ ULONG Which, ULONG64 Arg64, ULONG Arg32, PVOID Buffer, ULONG BufferSize, PULONG InfoSize, PSTR StringBuffer, ULONG StringBufferSize, PULONG StringSize) PURE;
    302     STDMETHOD(GetSystemObjectInformation)(THIS_ ULONG Which, ULONG64 Arg64, ULONG Arg32, PVOID Buffer, ULONG BufferSize, PULONG InfoSize) PURE;
    303     STDMETHOD(GetSourceFileInformationWide)(THIS_ ULONG Which, PWSTR SourceFile, ULONG64 Arg64, ULONG Arg32, PVOID Buffer, ULONG BufferSize, PULONG InfoSize) PURE;
    304     STDMETHOD(FindSourceFileAndTokenWide)(THIS_ ULONG StartElement, ULONG64 ModAddr, PCWSTR File, ULONG Flags, PVOID FileToken, ULONG FileTokenSize, PULONG FoundElement, PWSTR Buffer, ULONG BufferSize, PULONG FoundSize) PURE;
    305     STDMETHOD(GetSymbolInformationWide)(THIS_ ULONG Which, ULONG64 Arg64, ULONG Arg32, PVOID Buffer, ULONG BufferSize, PULONG InfoSize, PWSTR StringBuffer, ULONG StringBufferSize, PULONG StringSize) PURE;
    306   };
    307 #ifdef __CRT_UUID_DECL
    308 __CRT_UUID_DECL(IDebugAdvanced3,0xcba4abb4,0x84c4,0x444d,0x87,0xca,0xa0,0x4e,0x13,0x28,0x67,0x39)
    309 #endif
    310 
    311   typedef struct _SYMBOL_INFO_EX {
    312     ULONG SizeOfStruct;
    313     ULONG TypeOfInfo;
    314     ULONG64 Offset;
    315     ULONG Line;
    316     ULONG Displacement;
    317     ULONG Reserved[4];
    318   } SYMBOL_INFO_EX,*PSYMBOL_INFO_EX;
    319 
    320 #undef INTERFACE
    321 #define INTERFACE IDebugAdvanced4
    322   DECLARE_INTERFACE_(IDebugAdvanced4, IUnknown) {
    323     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
    324     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    325     STDMETHOD_(ULONG, Release)(THIS) PURE;
    326     STDMETHOD(GetThreadContext)(THIS_ PVOID Context, ULONG ContextSize) PURE;
    327     STDMETHOD(SetThreadContext)(THIS_ PVOID Context, ULONG ContextSize) PURE;
    328     STDMETHOD(Request)(THIS_ ULONG Request, PVOID InBuffer, ULONG InBufferSize, PVOID OutBuffer, ULONG OutBufferSize, PULONG OutSize) PURE;
    329     STDMETHOD(GetSourceFileInformation)(THIS_ ULONG Which, PSTR SourceFile, ULONG64 Arg64, ULONG Arg32, PVOID Buffer, ULONG BufferSize, PULONG InfoSize) PURE;
    330     STDMETHOD(FindSourceFileAndToken)(THIS_ ULONG StartElement, ULONG64 ModAddr, PCSTR File, ULONG Flags, PVOID FileToken, ULONG FileTokenSize, PULONG FoundElement, PSTR Buffer, ULONG BufferSize, PULONG FoundSize) PURE;
    331     STDMETHOD(GetSymbolInformation)(THIS_ ULONG Which, ULONG64 Arg64, ULONG Arg32, PVOID Buffer, ULONG BufferSize, PULONG InfoSize, PSTR StringBuffer, ULONG StringBufferSize, PULONG StringSize) PURE;
    332     STDMETHOD(GetSystemObjectInformation)(THIS_ ULONG Which, ULONG64 Arg64, ULONG Arg32, PVOID Buffer, ULONG BufferSize, PULONG InfoSize) PURE;
    333     STDMETHOD(GetSourceFileInformationWide)(THIS_ ULONG Which, PWSTR SourceFile, ULONG64 Arg64, ULONG Arg32, PVOID Buffer, ULONG BufferSize, PULONG InfoSize) PURE;
    334     STDMETHOD(FindSourceFileAndTokenWide)(THIS_ ULONG StartElement, ULONG64 ModAddr, PCWSTR File, ULONG Flags, PVOID FileToken, ULONG FileTokenSize, PULONG FoundElement, PWSTR Buffer, ULONG BufferSize, PULONG FoundSize) PURE;
    335     STDMETHOD(GetSymbolInformationWide)(THIS_ ULONG Which, ULONG64 Arg64, ULONG Arg32, PVOID Buffer, ULONG BufferSize, PULONG InfoSize, PWSTR StringBuffer, ULONG StringBufferSize, PULONG StringSize) PURE;
    336     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;
    337   };
    338 #ifdef __CRT_UUID_DECL
    339 __CRT_UUID_DECL(IDebugAdvanced4,0xd1069067,0x2a65,0x4bf0,0xae,0x97,0x76,0x18,0x4b,0x67,0x85,0x6b)
    340 #endif
    341 
    342 #define DEBUG_BREAKPOINT_CODE 0
    343 #define DEBUG_BREAKPOINT_DATA 1
    344 
    345 #define DEBUG_BREAKPOINT_GO_ONLY 0x00000001
    346 #define DEBUG_BREAKPOINT_DEFERRED 0x00000002
    347 #define DEBUG_BREAKPOINT_ENABLED 0x00000004
    348 #define DEBUG_BREAKPOINT_ADDER_ONLY 0x00000008
    349 #define DEBUG_BREAKPOINT_ONE_SHOT 0x00000010
    350 
    351 #define DEBUG_BREAK_READ 0x00000001
    352 #define DEBUG_BREAK_WRITE 0x00000002
    353 #define DEBUG_BREAK_EXECUTE 0x00000004
    354 #define DEBUG_BREAK_IO 0x00000008
    355 
    356   typedef struct _DEBUG_BREAKPOINT_PARAMETERS {
    357     ULONG64 Offset;
    358     ULONG Id;
    359     ULONG BreakType;
    360     ULONG ProcType;
    361     ULONG Flags;
    362     ULONG DataSize;
    363     ULONG DataAccessType;
    364     ULONG PassCount;
    365     ULONG CurrentPassCount;
    366     ULONG MatchThread;
    367     ULONG CommandSize;
    368     ULONG OffsetExpressionSize;
    369   } DEBUG_BREAKPOINT_PARAMETERS,*PDEBUG_BREAKPOINT_PARAMETERS;
    370 
    371 #undef INTERFACE
    372 #define INTERFACE IDebugBreakpoint
    373   DECLARE_INTERFACE_(IDebugBreakpoint,IUnknown) {
    374     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE;
    375     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    376     STDMETHOD_(ULONG,Release)(THIS) PURE;
    377     STDMETHOD(GetId)(THIS_ PULONG Id) PURE;
    378     STDMETHOD(GetType)(THIS_ PULONG BreakType,PULONG ProcType) PURE;
    379     STDMETHOD(GetAdder)(THIS_ PDEBUG_CLIENT *Adder) PURE;
    380     STDMETHOD(GetFlags)(THIS_ PULONG Flags) PURE;
    381     STDMETHOD(AddFlags)(THIS_ ULONG Flags) PURE;
    382     STDMETHOD(RemoveFlags)(THIS_ ULONG Flags) PURE;
    383     STDMETHOD(SetFlags)(THIS_ ULONG Flags) PURE;
    384     STDMETHOD(GetOffset)(THIS_ PULONG64 Offset) PURE;
    385     STDMETHOD(SetOffset)(THIS_ ULONG64 Offset) PURE;
    386     STDMETHOD(GetDataParameters)(THIS_ PULONG Size,PULONG AccessType) PURE;
    387     STDMETHOD(SetDataParameters)(THIS_ ULONG Size,ULONG AccessType) PURE;
    388     STDMETHOD(GetPassCount)(THIS_ PULONG Count) PURE;
    389     STDMETHOD(SetPassCount)(THIS_ ULONG Count) PURE;
    390     STDMETHOD(GetCurrentPassCount)(THIS_ PULONG Count) PURE;
    391     STDMETHOD(GetMatchThreadId)(THIS_ PULONG Id) PURE;
    392     STDMETHOD(SetMatchThreadId)(THIS_ ULONG Thread) PURE;
    393     STDMETHOD(GetCommand)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG CommandSize) PURE;
    394     STDMETHOD(SetCommand)(THIS_ PCSTR Command) PURE;
    395     STDMETHOD(GetOffsetExpression)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG ExpressionSize) PURE;
    396     STDMETHOD(SetOffsetExpression)(THIS_ PCSTR Expression) PURE;
    397     STDMETHOD(GetParameters)(THIS_ PDEBUG_BREAKPOINT_PARAMETERS Params) PURE;
    398   };
    399 #ifdef __CRT_UUID_DECL
    400 __CRT_UUID_DECL(IDebugBreakpoint,0x5bd9d474,0x5975,0x423a,0xb8,0x8b,0x65,0xa8,0xe7,0x11,0x0e,0x65)
    401 #endif
    402 
    403 #undef INTERFACE
    404 #define INTERFACE IDebugBreakpoint2
    405   DECLARE_INTERFACE_(IDebugBreakpoint2, IUnknown) {
    406     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
    407     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    408     STDMETHOD_(ULONG, Release)(THIS) PURE;
    409     STDMETHOD(GetId)(THIS_ PULONG Id) PURE;
    410     STDMETHOD(GetType)(THIS_ PULONG BreakType, PULONG ProcType) PURE;
    411     STDMETHOD(GetAdder)(THIS_ PDEBUG_CLIENT *Adder) PURE;
    412     STDMETHOD(GetFlags)(THIS_ PULONG Flags) PURE;
    413     STDMETHOD(AddFlags)(THIS_ ULONG Flags) PURE;
    414     STDMETHOD(RemoveFlags)(THIS_ ULONG Flags) PURE;
    415     STDMETHOD(SetFlags)(THIS_ ULONG Flags) PURE;
    416     STDMETHOD(GetOffset)(THIS_ PULONG64 Offset) PURE;
    417     STDMETHOD(SetOffset)(THIS_ ULONG64 Offset) PURE;
    418     STDMETHOD(GetDataParameters)(THIS_ PULONG Size, PULONG AccessType) PURE;
    419     STDMETHOD(SetDataParameters)(THIS_ ULONG Size, ULONG AccessType) PURE;
    420     STDMETHOD(GetPassCount)(THIS_ PULONG Count) PURE;
    421     STDMETHOD(SetPassCount)(THIS_ ULONG Count) PURE;
    422     STDMETHOD(GetCurrentPassCount)(THIS_ PULONG Count) PURE;
    423     STDMETHOD(GetMatchThreadId)(THIS_ PULONG Id) PURE;
    424     STDMETHOD(SetMatchThreadId)(THIS_ ULONG Thread) PURE;
    425     STDMETHOD(GetCommand)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG CommandSize) PURE;
    426     STDMETHOD(SetCommand)(THIS_ PCSTR Command) PURE;
    427     STDMETHOD(GetOffsetExpression)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG ExpressionSize) PURE;
    428     STDMETHOD(SetOffsetExpression)(THIS_ PCSTR Expression) PURE;
    429     STDMETHOD(GetParameters)(THIS_ PDEBUG_BREAKPOINT_PARAMETERS Params) PURE;
    430     STDMETHOD(GetCommandWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG CommandSize) PURE;
    431     STDMETHOD(SetCommandWide)(THIS_ PCWSTR Command) PURE;
    432     STDMETHOD(GetOffsetExpressionWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG ExpressionSize) PURE;
    433     STDMETHOD(SetOffsetExpressionWide)(THIS_ PCWSTR Expression) PURE;
    434   };
    435 #ifdef __CRT_UUID_DECL
    436 __CRT_UUID_DECL(IDebugBreakpoint2,0x1b278d20,0x79f2,0x426e,0xa3,0xf9,0xc1,0xdd,0xf3,0x75,0xd4,0x8e)
    437 #endif
    438 
    439 #undef INTERFACE
    440 #define INTERFACE IDebugBreakpoint3
    441   DECLARE_INTERFACE_(IDebugBreakpoint3, IUnknown) {
    442     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
    443     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    444     STDMETHOD_(ULONG, Release)(THIS) PURE;
    445     STDMETHOD(GetId)(THIS_ PULONG Id) PURE;
    446     STDMETHOD(GetType)(THIS_ PULONG BreakType, PULONG ProcType) PURE;
    447     STDMETHOD(GetAdder)(THIS_ PDEBUG_CLIENT *Adder) PURE;
    448     STDMETHOD(GetFlags)(THIS_ PULONG Flags) PURE;
    449     STDMETHOD(AddFlags)(THIS_ ULONG Flags) PURE;
    450     STDMETHOD(RemoveFlags)(THIS_ ULONG Flags) PURE;
    451     STDMETHOD(SetFlags)(THIS_ ULONG Flags) PURE;
    452     STDMETHOD(GetOffset)(THIS_ PULONG64 Offset) PURE;
    453     STDMETHOD(SetOffset)(THIS_ ULONG64 Offset) PURE;
    454     STDMETHOD(GetDataParameters)(THIS_ PULONG Size, PULONG AccessType) PURE;
    455     STDMETHOD(SetDataParameters)(THIS_ ULONG Size, ULONG AccessType) PURE;
    456     STDMETHOD(GetPassCount)(THIS_ PULONG Count) PURE;
    457     STDMETHOD(SetPassCount)(THIS_ ULONG Count) PURE;
    458     STDMETHOD(GetCurrentPassCount)(THIS_ PULONG Count) PURE;
    459     STDMETHOD(GetMatchThreadId)(THIS_ PULONG Id) PURE;
    460     STDMETHOD(SetMatchThreadId)(THIS_ ULONG Thread) PURE;
    461     STDMETHOD(GetCommand)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG CommandSize) PURE;
    462     STDMETHOD(SetCommand)(THIS_ PCSTR Command) PURE;
    463     STDMETHOD(GetOffsetExpression)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG ExpressionSize) PURE;
    464     STDMETHOD(SetOffsetExpression)(THIS_ PCSTR Expression) PURE;
    465     STDMETHOD(GetParameters)(THIS_ PDEBUG_BREAKPOINT_PARAMETERS Params) PURE;
    466     STDMETHOD(GetCommandWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG CommandSize) PURE;
    467     STDMETHOD(SetCommandWide)(THIS_ PCWSTR Command) PURE;
    468     STDMETHOD(GetOffsetExpressionWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG ExpressionSize) PURE;
    469     STDMETHOD(SetOffsetExpressionWide)(THIS_ PCWSTR Expression) PURE;
    470     STDMETHOD(GetGuid)(THIS_ LPGUID Guid) PURE;
    471   };
    472 #ifdef __CRT_UUID_DECL
    473 __CRT_UUID_DECL(IDebugBreakpoint3,0x38f5c249,0xb448,0x43bb,0x98,0x35,0x57,0x9d,0x4e,0xc0,0x22,0x49)
    474 #endif
    475 
    476 #define DEBUG_ATTACH_KERNEL_CONNECTION 0x00000000
    477 #define DEBUG_ATTACH_LOCAL_KERNEL 0x00000001
    478 #define DEBUG_ATTACH_EXDI_DRIVER 0x00000002
    479 
    480 #define DEBUG_GET_PROC_DEFAULT 0x00000000
    481 #define DEBUG_GET_PROC_FULL_MATCH 0x00000001
    482 #define DEBUG_GET_PROC_ONLY_MATCH 0x00000002
    483 
    484 #define DEBUG_PROC_DESC_DEFAULT 0x00000000
    485 #define DEBUG_PROC_DESC_NO_PATHS 0x00000001
    486 #define DEBUG_PROC_DESC_NO_SERVICES 0x00000002
    487 #define DEBUG_PROC_DESC_NO_MTS_PACKAGES 0x00000004
    488 #define DEBUG_PROC_DESC_NO_COMMAND_LINE 0x00000008
    489 
    490 #define DEBUG_ATTACH_DEFAULT 0x00000000
    491 #define DEBUG_ATTACH_NONINVASIVE 0x00000001
    492 #define DEBUG_ATTACH_EXISTING 0x00000002
    493 #define DEBUG_ATTACH_NONINVASIVE_NO_SUSPEND 0x00000004
    494 #define DEBUG_ATTACH_INVASIVE_NO_INITIAL_BREAK 0x00000008
    495 #define DEBUG_ATTACH_INVASIVE_RESUME_PROCESS 0x00000010
    496 
    497 #define DEBUG_CREATE_PROCESS_NO_DEBUG_HEAP CREATE_UNICODE_ENVIRONMENT
    498 #define DEBUG_CREATE_PROCESS_THROUGH_RTL STACK_SIZE_PARAM_IS_A_RESERVATION
    499 
    500 #define DEBUG_PROCESS_DETACH_ON_EXIT 0x00000001
    501 #define DEBUG_PROCESS_ONLY_THIS_PROCESS 0x00000002
    502 
    503 #define DEBUG_CONNECT_SESSION_DEFAULT 0x00000000
    504 #define DEBUG_CONNECT_SESSION_NO_VERSION 0x00000001
    505 #define DEBUG_CONNECT_SESSION_NO_ANNOUNCE 0x00000002
    506 
    507 #define DEBUG_SERVERS_DEBUGGER 0x00000001
    508 #define DEBUG_SERVERS_PROCESS 0x00000002
    509 #define DEBUG_SERVERS_ALL 0x00000003
    510 
    511 #define DEBUG_END_PASSIVE 0x00000000
    512 #define DEBUG_END_ACTIVE_TERMINATE 0x00000001
    513 #define DEBUG_END_ACTIVE_DETACH 0x00000002
    514 #define DEBUG_END_REENTRANT 0x00000003
    515 #define DEBUG_END_DISCONNECT 0x00000004
    516 
    517 #define DEBUG_OUTPUT_NORMAL 0x00000001
    518 #define DEBUG_OUTPUT_ERROR 0x00000002
    519 #define DEBUG_OUTPUT_WARNING 0x00000004
    520 #define DEBUG_OUTPUT_VERBOSE 0x00000008
    521 #define DEBUG_OUTPUT_PROMPT 0x00000010
    522 #define DEBUG_OUTPUT_PROMPT_REGISTERS 0x00000020
    523 #define DEBUG_OUTPUT_EXTENSION_WARNING 0x00000040
    524 #define DEBUG_OUTPUT_DEBUGGEE 0x00000080
    525 #define DEBUG_OUTPUT_DEBUGGEE_PROMPT 0x00000100
    526 #define DEBUG_OUTPUT_SYMBOLS 0x00000200
    527 
    528 #define DEBUG_OUTPUT_IDENTITY_DEFAULT 0x00000000
    529 
    530 #define DEBUG_IOUTPUT_KD_PROTOCOL 0x80000000
    531 #define DEBUG_IOUTPUT_REMOTING 0x40000000
    532 #define DEBUG_IOUTPUT_BREAKPOINT 0x20000000
    533 #define DEBUG_IOUTPUT_EVENT 0x10000000
    534 
    535 #undef INTERFACE
    536 #define INTERFACE IDebugClient
    537   DECLARE_INTERFACE_(IDebugClient,IUnknown) {
    538     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE;
    539     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    540     STDMETHOD_(ULONG,Release)(THIS) PURE;
    541     STDMETHOD(AttachKernel)(THIS_ ULONG Flags,PCSTR ConnectOptions) PURE;
    542     STDMETHOD(GetKernelConnectionOptions)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG OptionsSize) PURE;
    543     STDMETHOD(SetKernelConnectionOptions)(THIS_ PCSTR Options) PURE;
    544     STDMETHOD(StartProcessServer)(THIS_ ULONG Flags,PCSTR Options,PVOID Reserved) PURE;
    545     STDMETHOD(ConnectProcessServer)(THIS_ PCSTR RemoteOptions,PULONG64 Server) PURE;
    546     STDMETHOD(DisconnectProcessServer)(THIS_ ULONG64 Server) PURE;
    547     STDMETHOD(GetRunningProcessSystemIds)(THIS_ ULONG64 Server,PULONG Ids,ULONG Count,PULONG ActualCount) PURE;
    548     STDMETHOD(GetRunningProcessSystemIdByExecutableName)(THIS_ ULONG64 Server,PCSTR ExeName,ULONG Flags,PULONG Id) PURE;
    549     STDMETHOD(GetRunningProcessDescription)(THIS_ ULONG64 Server,ULONG SystemId,ULONG Flags,PSTR ExeName,ULONG ExeNameSize,PULONG ActualExeNameSize,PSTR Description,ULONG DescriptionSize,PULONG ActualDescriptionSize) PURE;
    550     STDMETHOD(AttachProcess)(THIS_ ULONG64 Server,ULONG ProcessId,ULONG AttachFlags) PURE;
    551     STDMETHOD(CreateProcess)(THIS_ ULONG64 Server,PSTR CommandLine,ULONG CreateFlags) PURE;
    552     STDMETHOD(CreateProcessAndAttach)(THIS_ ULONG64 Server,PSTR CommandLine,ULONG CreateFlags,ULONG ProcessId,ULONG AttachFlags) PURE;
    553     STDMETHOD(GetProcessOptions)(THIS_ PULONG Options) PURE;
    554     STDMETHOD(AddProcessOptions)(THIS_ ULONG Options) PURE;
    555     STDMETHOD(RemoveProcessOptions)(THIS_ ULONG Options) PURE;
    556     STDMETHOD(SetProcessOptions)(THIS_ ULONG Options) PURE;
    557     STDMETHOD(OpenDumpFile)(THIS_ PCSTR DumpFile) PURE;
    558     STDMETHOD(WriteDumpFile)(THIS_ PCSTR DumpFile,ULONG Qualifier) PURE;
    559     STDMETHOD(ConnectSession)(THIS_ ULONG Flags,ULONG HistoryLimit) PURE;
    560     STDMETHOD(StartServer)(THIS_ PCSTR Options) PURE;
    561     STDMETHOD(OutputServers)(THIS_ ULONG OutputControl,PCSTR Machine,ULONG Flags) PURE;
    562     STDMETHOD(TerminateProcesses)(THIS) PURE;
    563     STDMETHOD(DetachProcesses)(THIS) PURE;
    564     STDMETHOD(EndSession)(THIS_ ULONG Flags) PURE;
    565     STDMETHOD(GetExitCode)(THIS_ PULONG Code) PURE;
    566     STDMETHOD(DispatchCallbacks)(THIS_ ULONG Timeout) PURE;
    567     STDMETHOD(ExitDispatch)(THIS_ PDEBUG_CLIENT Client) PURE;
    568     STDMETHOD(CreateClient)(THIS_ PDEBUG_CLIENT *Client) PURE;
    569     STDMETHOD(GetInputCallbacks)(THIS_ PDEBUG_INPUT_CALLBACKS *Callbacks) PURE;
    570     STDMETHOD(SetInputCallbacks)(THIS_ PDEBUG_INPUT_CALLBACKS Callbacks) PURE;
    571     STDMETHOD(GetOutputCallbacks)(THIS_ PDEBUG_OUTPUT_CALLBACKS *Callbacks) PURE;
    572     STDMETHOD(SetOutputCallbacks)(THIS_ PDEBUG_OUTPUT_CALLBACKS Callbacks) PURE;
    573     STDMETHOD(GetOutputMask)(THIS_ PULONG Mask) PURE;
    574     STDMETHOD(SetOutputMask)(THIS_ ULONG Mask) PURE;
    575     STDMETHOD(GetOtherOutputMask)(THIS_ PDEBUG_CLIENT Client,PULONG Mask) PURE;
    576     STDMETHOD(SetOtherOutputMask)(THIS_ PDEBUG_CLIENT Client,ULONG Mask) PURE;
    577     STDMETHOD(GetOutputWidth)(THIS_ PULONG Columns) PURE;
    578     STDMETHOD(SetOutputWidth)(THIS_ ULONG Columns) PURE;
    579     STDMETHOD(GetOutputLinePrefix)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG PrefixSize) PURE;
    580     STDMETHOD(SetOutputLinePrefix)(THIS_ PCSTR Prefix) PURE;
    581     STDMETHOD(GetIdentity)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG IdentitySize) PURE;
    582     STDMETHOD(OutputIdentity)(THIS_ ULONG OutputControl,ULONG Flags,PCSTR Format) PURE;
    583     STDMETHOD(GetEventCallbacks)(THIS_ PDEBUG_EVENT_CALLBACKS *Callbacks) PURE;
    584     STDMETHOD(SetEventCallbacks)(THIS_ PDEBUG_EVENT_CALLBACKS Callbacks) PURE;
    585     STDMETHOD(FlushCallbacks)(THIS) PURE;
    586   };
    587 #ifdef __CRT_UUID_DECL
    588 __CRT_UUID_DECL(IDebugClient,0x27fe5639,0x8407,0x4f47,0x83,0x64,0xee,0x11,0x8f,0xb0,0x8a,0xc8)
    589 #endif
    590 
    591 #define DEBUG_FORMAT_DEFAULT 0x00000000
    592 #define DEBUG_FORMAT_WRITE_CAB 0x20000000
    593 #define DEBUG_FORMAT_CAB_SECONDARY_FILES 0x40000000
    594 #define DEBUG_FORMAT_NO_OVERWRITE 0x80000000
    595 #define DEBUG_FORMAT_USER_SMALL_FULL_MEMORY 0x00000001
    596 #define DEBUG_FORMAT_USER_SMALL_HANDLE_DATA 0x00000002
    597 #define DEBUG_FORMAT_USER_SMALL_UNLOADED_MODULES 0x00000004
    598 #define DEBUG_FORMAT_USER_SMALL_INDIRECT_MEMORY 0x00000008
    599 #define DEBUG_FORMAT_USER_SMALL_DATA_SEGMENTS 0x00000010
    600 #define DEBUG_FORMAT_USER_SMALL_FILTER_MEMORY 0x00000020
    601 #define DEBUG_FORMAT_USER_SMALL_FILTER_PATHS 0x00000040
    602 #define DEBUG_FORMAT_USER_SMALL_PROCESS_THREAD_DATA 0x00000080
    603 #define DEBUG_FORMAT_USER_SMALL_PRIVATE_READ_WRITE_MEMORY 0x00000100
    604 
    605 #define DEBUG_DUMP_FILE_BASE 0xffffffff
    606 #define DEBUG_DUMP_FILE_PAGE_FILE_DUMP 0x00000000
    607 #define DEBUG_DUMP_FILE_LOAD_FAILED_INDEX 0xffffffff
    608 
    609 #undef INTERFACE
    610 #define INTERFACE IDebugClient2
    611   DECLARE_INTERFACE_(IDebugClient2,IUnknown) {
    612     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE;
    613     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    614     STDMETHOD_(ULONG,Release)(THIS) PURE;
    615     STDMETHOD(AttachKernel)(THIS_ ULONG Flags,PCSTR ConnectOptions) PURE;
    616     STDMETHOD(GetKernelConnectionOptions)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG OptionsSize) PURE;
    617     STDMETHOD(SetKernelConnectionOptions)(THIS_ PCSTR Options) PURE;
    618     STDMETHOD(StartProcessServer)(THIS_ ULONG Flags,PCSTR Options,PVOID Reserved) PURE;
    619     STDMETHOD(ConnectProcessServer)(THIS_ PCSTR RemoteOptions,PULONG64 Server) PURE;
    620     STDMETHOD(DisconnectProcessServer)(THIS_ ULONG64 Server) PURE;
    621     STDMETHOD(GetRunningProcessSystemIds)(THIS_ ULONG64 Server,PULONG Ids,ULONG Count,PULONG ActualCount) PURE;
    622     STDMETHOD(GetRunningProcessSystemIdByExecutableName)(THIS_ ULONG64 Server,PCSTR ExeName,ULONG Flags,PULONG Id) PURE;
    623     STDMETHOD(GetRunningProcessDescription)(THIS_ ULONG64 Server,ULONG SystemId,ULONG Flags,PSTR ExeName,ULONG ExeNameSize,PULONG ActualExeNameSize,PSTR Description,ULONG DescriptionSize,PULONG ActualDescriptionSize) PURE;
    624     STDMETHOD(AttachProcess)(THIS_ ULONG64 Server,ULONG ProcessId,ULONG AttachFlags) PURE;
    625     STDMETHOD(CreateProcess)(THIS_ ULONG64 Server,PSTR CommandLine,ULONG CreateFlags) PURE;
    626     STDMETHOD(CreateProcessAndAttach)(THIS_ ULONG64 Server,PSTR CommandLine,ULONG CreateFlags,ULONG ProcessId,ULONG AttachFlags) PURE;
    627     STDMETHOD(GetProcessOptions)(THIS_ PULONG Options) PURE;
    628     STDMETHOD(AddProcessOptions)(THIS_ ULONG Options) PURE;
    629     STDMETHOD(RemoveProcessOptions)(THIS_ ULONG Options) PURE;
    630     STDMETHOD(SetProcessOptions)(THIS_ ULONG Options) PURE;
    631     STDMETHOD(OpenDumpFile)(THIS_ PCSTR DumpFile) PURE;
    632     STDMETHOD(WriteDumpFile)(THIS_ PCSTR DumpFile,ULONG Qualifier) PURE;
    633     STDMETHOD(ConnectSession)(THIS_ ULONG Flags,ULONG HistoryLimit) PURE;
    634     STDMETHOD(StartServer)(THIS_ PCSTR Options) PURE;
    635     STDMETHOD(OutputServers)(THIS_ ULONG OutputControl,PCSTR Machine,ULONG Flags) PURE;
    636     STDMETHOD(TerminateProcesses)(THIS) PURE;
    637     STDMETHOD(DetachProcesses)(THIS) PURE;
    638     STDMETHOD(EndSession)(THIS_ ULONG Flags) PURE;
    639     STDMETHOD(GetExitCode)(THIS_ PULONG Code) PURE;
    640     STDMETHOD(DispatchCallbacks)(THIS_ ULONG Timeout) PURE;
    641     STDMETHOD(ExitDispatch)(THIS_ PDEBUG_CLIENT Client) PURE;
    642     STDMETHOD(CreateClient)(THIS_ PDEBUG_CLIENT *Client) PURE;
    643     STDMETHOD(GetInputCallbacks)(THIS_ PDEBUG_INPUT_CALLBACKS *Callbacks) PURE;
    644     STDMETHOD(SetInputCallbacks)(THIS_ PDEBUG_INPUT_CALLBACKS Callbacks) PURE;
    645     STDMETHOD(GetOutputCallbacks)(THIS_ PDEBUG_OUTPUT_CALLBACKS *Callbacks) PURE;
    646     STDMETHOD(SetOutputCallbacks)(THIS_ PDEBUG_OUTPUT_CALLBACKS Callbacks) PURE;
    647     STDMETHOD(GetOutputMask)(THIS_ PULONG Mask) PURE;
    648     STDMETHOD(SetOutputMask)(THIS_ ULONG Mask) PURE;
    649     STDMETHOD(GetOtherOutputMask)(THIS_ PDEBUG_CLIENT Client,PULONG Mask) PURE;
    650     STDMETHOD(SetOtherOutputMask)(THIS_ PDEBUG_CLIENT Client,ULONG Mask) PURE;
    651     STDMETHOD(GetOutputWidth)(THIS_ PULONG Columns) PURE;
    652     STDMETHOD(SetOutputWidth)(THIS_ ULONG Columns) PURE;
    653     STDMETHOD(GetOutputLinePrefix)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG PrefixSize) PURE;
    654     STDMETHOD(SetOutputLinePrefix)(THIS_ PCSTR Prefix) PURE;
    655     STDMETHOD(GetIdentity)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG IdentitySize) PURE;
    656     STDMETHOD(OutputIdentity)(THIS_ ULONG OutputControl,ULONG Flags,PCSTR Format) PURE;
    657     STDMETHOD(GetEventCallbacks)(THIS_ PDEBUG_EVENT_CALLBACKS *Callbacks) PURE;
    658     STDMETHOD(SetEventCallbacks)(THIS_ PDEBUG_EVENT_CALLBACKS Callbacks) PURE;
    659     STDMETHOD(FlushCallbacks)(THIS) PURE;
    660     STDMETHOD(WriteDumpFile2)(THIS_ PCSTR DumpFile,ULONG Qualifier,ULONG FormatFlags,PCSTR Comment) PURE;
    661     STDMETHOD(AddDumpInformationFile)(THIS_ PCSTR InfoFile,ULONG Type) PURE;
    662     STDMETHOD(EndProcessServer)(THIS_ ULONG64 Server) PURE;
    663     STDMETHOD(WaitForProcessServerEnd)(THIS_ ULONG Timeout) PURE;
    664     STDMETHOD(IsKernelDebuggerEnabled)(THIS) PURE;
    665     STDMETHOD(TerminateCurrentProcess)(THIS) PURE;
    666     STDMETHOD(DetachCurrentProcess)(THIS) PURE;
    667     STDMETHOD(AbandonCurrentProcess)(THIS) PURE;
    668   };
    669 #ifdef __CRT_UUID_DECL
    670 __CRT_UUID_DECL(IDebugClient2,0xedbed635,0x372e,0x4dab,0xbb,0xfe,0xed,0x0d,0x2f,0x63,0xbe,0x81)
    671 #endif
    672 
    673 #undef INTERFACE
    674 #define INTERFACE IDebugClient3
    675   DECLARE_INTERFACE_(IDebugClient3,IUnknown) {
    676     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE;
    677     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    678     STDMETHOD_(ULONG,Release)(THIS) PURE;
    679     STDMETHOD(AttachKernel)(THIS_
    680       ULONG Flags,PCSTR ConnectOptions) PURE;
    681     STDMETHOD(GetKernelConnectionOptions)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG OptionsSize) PURE;
    682     STDMETHOD(SetKernelConnectionOptions)(THIS_ PCSTR Options) PURE;
    683     STDMETHOD(StartProcessServer)(THIS_ ULONG Flags,PCSTR Options,PVOID Reserved) PURE;
    684     STDMETHOD(ConnectProcessServer)(THIS_ PCSTR RemoteOptions,PULONG64 Server) PURE;
    685     STDMETHOD(DisconnectProcessServer)(THIS_ ULONG64 Server) PURE;
    686     STDMETHOD(GetRunningProcessSystemIds)(THIS_ ULONG64 Server,PULONG Ids,ULONG Count,PULONG ActualCount) PURE;
    687     STDMETHOD(GetRunningProcessSystemIdByExecutableName)(THIS_ ULONG64 Server,PCSTR ExeName,ULONG Flags,PULONG Id) PURE;
    688     STDMETHOD(GetRunningProcessDescription)(THIS_ ULONG64 Server,ULONG SystemId,ULONG Flags,PSTR ExeName,ULONG ExeNameSize,PULONG ActualExeNameSize,PSTR Description,ULONG DescriptionSize,PULONG ActualDescriptionSize) PURE;
    689     STDMETHOD(AttachProcess)(THIS_ ULONG64 Server,ULONG ProcessId,ULONG AttachFlags) PURE;
    690     STDMETHOD(CreateProcess)(THIS_ ULONG64 Server,PSTR CommandLine,ULONG CreateFlags) PURE;
    691     STDMETHOD(CreateProcessAndAttach)(THIS_ ULONG64 Server,PSTR CommandLine,ULONG CreateFlags,ULONG ProcessId,ULONG AttachFlags) PURE;
    692     STDMETHOD(GetProcessOptions)(THIS_ PULONG Options) PURE;
    693     STDMETHOD(AddProcessOptions)(THIS_ ULONG Options) PURE;
    694     STDMETHOD(RemoveProcessOptions)(THIS_ ULONG Options) PURE;
    695     STDMETHOD(SetProcessOptions)(THIS_ ULONG Options) PURE;
    696     STDMETHOD(OpenDumpFile)(THIS_ PCSTR DumpFile) PURE;
    697     STDMETHOD(WriteDumpFile)(THIS_ PCSTR DumpFile,ULONG Qualifier) PURE;
    698     STDMETHOD(ConnectSession)(THIS_ ULONG Flags,ULONG HistoryLimit) PURE;
    699     STDMETHOD(StartServer)(THIS_ PCSTR Options) PURE;
    700     STDMETHOD(OutputServers)(THIS_ ULONG OutputControl,PCSTR Machine,ULONG Flags) PURE;
    701     STDMETHOD(TerminateProcesses)(THIS) PURE;
    702     STDMETHOD(DetachProcesses)(THIS) PURE;
    703     STDMETHOD(EndSession)(THIS_ ULONG Flags) PURE;
    704     STDMETHOD(GetExitCode)(THIS_ PULONG Code) PURE;
    705     STDMETHOD(DispatchCallbacks)(THIS_ ULONG Timeout) PURE;
    706     STDMETHOD(ExitDispatch)(THIS_ PDEBUG_CLIENT Client) PURE;
    707     STDMETHOD(CreateClient)(THIS_ PDEBUG_CLIENT *Client) PURE;
    708     STDMETHOD(GetInputCallbacks)(THIS_ PDEBUG_INPUT_CALLBACKS *Callbacks) PURE;
    709     STDMETHOD(SetInputCallbacks)(THIS_ PDEBUG_INPUT_CALLBACKS Callbacks) PURE;
    710     STDMETHOD(GetOutputCallbacks)(THIS_ PDEBUG_OUTPUT_CALLBACKS *Callbacks) PURE;
    711     STDMETHOD(SetOutputCallbacks)(THIS_ PDEBUG_OUTPUT_CALLBACKS Callbacks) PURE;
    712     STDMETHOD(GetOutputMask)(THIS_ PULONG Mask) PURE;
    713     STDMETHOD(SetOutputMask)(THIS_ ULONG Mask) PURE;
    714     STDMETHOD(GetOtherOutputMask)(THIS_ PDEBUG_CLIENT Client,PULONG Mask) PURE;
    715     STDMETHOD(SetOtherOutputMask)(THIS_ PDEBUG_CLIENT Client,ULONG Mask) PURE;
    716     STDMETHOD(GetOutputWidth)(THIS_ PULONG Columns) PURE;
    717     STDMETHOD(SetOutputWidth)(THIS_ ULONG Columns) PURE;
    718     STDMETHOD(GetOutputLinePrefix)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG PrefixSize) PURE;
    719     STDMETHOD(SetOutputLinePrefix)(THIS_ PCSTR Prefix) PURE;
    720     STDMETHOD(GetIdentity)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG IdentitySize) PURE;
    721     STDMETHOD(OutputIdentity)(THIS_ ULONG OutputControl,ULONG Flags,PCSTR Format) PURE;
    722     STDMETHOD(GetEventCallbacks)(THIS_ PDEBUG_EVENT_CALLBACKS *Callbacks) PURE;
    723     STDMETHOD(SetEventCallbacks)(THIS_ PDEBUG_EVENT_CALLBACKS Callbacks) PURE;
    724     STDMETHOD(FlushCallbacks)(THIS) PURE;
    725     STDMETHOD(WriteDumpFile2)(THIS_ PCSTR DumpFile,ULONG Qualifier,ULONG FormatFlags,PCSTR Comment) PURE;
    726     STDMETHOD(AddDumpInformationFile)(THIS_ PCSTR InfoFile,ULONG Type) PURE;
    727     STDMETHOD(EndProcessServer)(THIS_ ULONG64 Server) PURE;
    728     STDMETHOD(WaitForProcessServerEnd)(THIS_ ULONG Timeout) PURE;
    729     STDMETHOD(IsKernelDebuggerEnabled)(THIS) PURE;
    730     STDMETHOD(TerminateCurrentProcess)(THIS) PURE;
    731     STDMETHOD(DetachCurrentProcess)(THIS) PURE;
    732     STDMETHOD(AbandonCurrentProcess)(THIS) PURE;
    733     STDMETHOD(GetRunningProcessSystemIdByExecutableNameWide)(THIS_ ULONG64 Server,PCWSTR ExeName,ULONG Flags,PULONG Id) PURE;
    734     STDMETHOD(GetRunningProcessDescriptionWide)(THIS_ ULONG64 Server,ULONG SystemId,ULONG Flags,PWSTR ExeName,ULONG ExeNameSize,PULONG ActualExeNameSize,PWSTR Description,ULONG DescriptionSize,PULONG ActualDescriptionSize) PURE;
    735     STDMETHOD(CreateProcessWide)(THIS_ ULONG64 Server,PWSTR CommandLine,ULONG CreateFlags) PURE;
    736     STDMETHOD(CreateProcessAndAttachWide)(THIS_ ULONG64 Server,PWSTR CommandLine,ULONG CreateFlags,ULONG ProcessId,ULONG AttachFlags) PURE;
    737   };
    738 #ifdef __CRT_UUID_DECL
    739 __CRT_UUID_DECL(IDebugClient3,0xdd492d7f,0x71b8,0x4ad6,0xa8,0xdc,0x1c,0x88,0x74,0x79,0xff,0x91)
    740 #endif
    741 
    742 #undef INTERFACE
    743 #define INTERFACE IDebugClient4
    744   DECLARE_INTERFACE_(IDebugClient4,IUnknown) {
    745     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE;
    746     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    747     STDMETHOD_(ULONG,Release)(THIS) PURE;
    748     STDMETHOD(AttachKernel)(THIS_ ULONG Flags,PCSTR ConnectOptions) PURE;
    749     STDMETHOD(GetKernelConnectionOptions)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG OptionsSize) PURE;
    750     STDMETHOD(SetKernelConnectionOptions)(THIS_ PCSTR Options) PURE;
    751     STDMETHOD(StartProcessServer)(THIS_ ULONG Flags,PCSTR Options,PVOID Reserved) PURE;
    752     STDMETHOD(ConnectProcessServer)(THIS_ PCSTR RemoteOptions,PULONG64 Server) PURE;
    753     STDMETHOD(DisconnectProcessServer)(THIS_ ULONG64 Server) PURE;
    754     STDMETHOD(GetRunningProcessSystemIds)(THIS_ ULONG64 Server,PULONG Ids,ULONG Count,PULONG ActualCount) PURE;
    755     STDMETHOD(GetRunningProcessSystemIdByExecutableName)(THIS_ ULONG64 Server,PCSTR ExeName,ULONG Flags,PULONG Id) PURE;
    756     STDMETHOD(GetRunningProcessDescription)(THIS_ ULONG64 Server,ULONG SystemId,ULONG Flags,PSTR ExeName,ULONG ExeNameSize,PULONG ActualExeNameSize,PSTR Description,ULONG DescriptionSize,PULONG ActualDescriptionSize) PURE;
    757     STDMETHOD(AttachProcess)(THIS_ ULONG64 Server,ULONG ProcessId,ULONG AttachFlags) PURE;
    758     STDMETHOD(CreateProcess)(THIS_ ULONG64 Server,PSTR CommandLine,ULONG CreateFlags) PURE;
    759     STDMETHOD(CreateProcessAndAttach)(THIS_ ULONG64 Server,PSTR CommandLine,ULONG CreateFlags,ULONG ProcessId,ULONG AttachFlags) PURE;
    760     STDMETHOD(GetProcessOptions)(THIS_ PULONG Options) PURE;
    761     STDMETHOD(AddProcessOptions)(THIS_ ULONG Options) PURE;
    762     STDMETHOD(RemoveProcessOptions)(THIS_ ULONG Options) PURE;
    763     STDMETHOD(SetProcessOptions)(THIS_ ULONG Options) PURE;
    764     STDMETHOD(OpenDumpFile)(THIS_ PCSTR DumpFile) PURE;
    765     STDMETHOD(WriteDumpFile)(THIS_ PCSTR DumpFile,ULONG Qualifier) PURE;
    766     STDMETHOD(ConnectSession)(THIS_ ULONG Flags,ULONG HistoryLimit) PURE;
    767     STDMETHOD(StartServer)(THIS_ PCSTR Options) PURE;
    768     STDMETHOD(OutputServers)(THIS_ ULONG OutputControl,PCSTR Machine,ULONG Flags) PURE;
    769     STDMETHOD(TerminateProcesses)(THIS) PURE;
    770     STDMETHOD(DetachProcesses)(THIS) PURE;
    771     STDMETHOD(EndSession)(THIS_ ULONG Flags) PURE;
    772     STDMETHOD(GetExitCode)(THIS_ PULONG Code) PURE;
    773     STDMETHOD(DispatchCallbacks)(THIS_ ULONG Timeout) PURE;
    774     STDMETHOD(ExitDispatch)(THIS_ PDEBUG_CLIENT Client) PURE;
    775     STDMETHOD(CreateClient)(THIS_ PDEBUG_CLIENT *Client) PURE;
    776     STDMETHOD(GetInputCallbacks)(THIS_ PDEBUG_INPUT_CALLBACKS *Callbacks) PURE;
    777     STDMETHOD(SetInputCallbacks)(THIS_ PDEBUG_INPUT_CALLBACKS Callbacks) PURE;
    778     STDMETHOD(GetOutputCallbacks)(THIS_ PDEBUG_OUTPUT_CALLBACKS *Callbacks) PURE;
    779     STDMETHOD(SetOutputCallbacks)(THIS_ PDEBUG_OUTPUT_CALLBACKS Callbacks) PURE;
    780     STDMETHOD(GetOutputMask)(THIS_ PULONG Mask) PURE;
    781     STDMETHOD(SetOutputMask)(THIS_ ULONG Mask) PURE;
    782     STDMETHOD(GetOtherOutputMask)(THIS_ PDEBUG_CLIENT Client,PULONG Mask) PURE;
    783     STDMETHOD(SetOtherOutputMask)(THIS_ PDEBUG_CLIENT Client,ULONG Mask) PURE;
    784     STDMETHOD(GetOutputWidth)(THIS_ PULONG Columns) PURE;
    785     STDMETHOD(SetOutputWidth)(THIS_ ULONG Columns) PURE;
    786     STDMETHOD(GetOutputLinePrefix)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG PrefixSize) PURE;
    787     STDMETHOD(SetOutputLinePrefix)(THIS_ PCSTR Prefix) PURE;
    788     STDMETHOD(GetIdentity)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG IdentitySize) PURE;
    789     STDMETHOD(OutputIdentity)(THIS_ ULONG OutputControl,ULONG Flags,PCSTR Format) PURE;
    790     STDMETHOD(GetEventCallbacks)(THIS_ PDEBUG_EVENT_CALLBACKS *Callbacks) PURE;
    791     STDMETHOD(SetEventCallbacks)(THIS_ PDEBUG_EVENT_CALLBACKS Callbacks) PURE;
    792     STDMETHOD(FlushCallbacks)(THIS) PURE;
    793     STDMETHOD(WriteDumpFile2)(THIS_ PCSTR DumpFile,ULONG Qualifier,ULONG FormatFlags,PCSTR Comment) PURE;
    794     STDMETHOD(AddDumpInformationFile)(THIS_ PCSTR InfoFile,ULONG Type) PURE;
    795     STDMETHOD(EndProcessServer)(THIS_ ULONG64 Server) PURE;
    796     STDMETHOD(WaitForProcessServerEnd)(THIS_ ULONG Timeout) PURE;
    797     STDMETHOD(IsKernelDebuggerEnabled)(THIS) PURE;
    798     STDMETHOD(TerminateCurrentProcess)(THIS) PURE;
    799     STDMETHOD(DetachCurrentProcess)(THIS) PURE;
    800     STDMETHOD(AbandonCurrentProcess)(THIS) PURE;
    801     STDMETHOD(GetRunningProcessSystemIdByExecutableNameWide)(THIS_ ULONG64 Server,PCWSTR ExeName,ULONG Flags,PULONG Id) PURE;
    802     STDMETHOD(GetRunningProcessDescriptionWide)(THIS_ ULONG64 Server,ULONG SystemId,ULONG Flags,PWSTR ExeName,ULONG ExeNameSize,PULONG ActualExeNameSize,PWSTR Description,ULONG DescriptionSize,PULONG ActualDescriptionSize) PURE;
    803     STDMETHOD(CreateProcessWide)(THIS_ ULONG64 Server,PWSTR CommandLine,ULONG CreateFlags) PURE;
    804     STDMETHOD(CreateProcessAndAttachWide)(THIS_ ULONG64 Server,PWSTR CommandLine,ULONG CreateFlags,ULONG ProcessId,ULONG AttachFlags) PURE;
    805     STDMETHOD(OpenDumpFileWide)(THIS_ PCWSTR FileName,ULONG64 FileHandle) PURE;
    806     STDMETHOD(WriteDumpFileWide)(THIS_ PCWSTR FileName,ULONG64 FileHandle,ULONG Qualifier,ULONG FormatFlags,PCWSTR Comment) PURE;
    807     STDMETHOD(AddDumpInformationFileWide)(THIS_ PCWSTR FileName,ULONG64 FileHandle,ULONG Type) PURE;
    808     STDMETHOD(GetNumberDumpFiles)(THIS_ PULONG Number) PURE;
    809     STDMETHOD(GetDumpFile)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG NameSize,PULONG64 Handle,PULONG Type) PURE;
    810     STDMETHOD(GetDumpFileWide)(THIS_ ULONG Index,PWSTR Buffer,ULONG BufferSize,PULONG NameSize,PULONG64 Handle,PULONG Type) PURE;
    811   };
    812 #ifdef __CRT_UUID_DECL
    813 __CRT_UUID_DECL(IDebugClient4,0xca83c3de,0x5089,0x4cf8,0x93,0xc8,0xd8,0x92,0x38,0x7f,0x2a,0x5e)
    814 #endif
    815 
    816 #undef INTERFACE
    817 #define INTERFACE IDebugClient5
    818   DECLARE_INTERFACE_(IDebugClient5, IUnknown) {
    819     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
    820     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    821     STDMETHOD_(ULONG, Release)(THIS) PURE;
    822     STDMETHOD(AttachKernel)(THIS_ ULONG Flags, PCSTR ConnectOptions) PURE;
    823     STDMETHOD(GetKernelConnectionOptions)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG OptionsSize) PURE;
    824     STDMETHOD(SetKernelConnectionOptions)(THIS_ PCSTR Options) PURE;
    825     STDMETHOD(StartProcessServer)(THIS_ ULONG Flags, PCSTR Options, PVOID Reserved) PURE;
    826     STDMETHOD(ConnectProcessServer)(THIS_ PCSTR RemoteOptions, PULONG64 Server) PURE;
    827     STDMETHOD(DisconnectProcessServer)(THIS_ ULONG64 Server) PURE;
    828     STDMETHOD(GetRunningProcessSystemIds)(THIS_ ULONG64 Server, PULONG Ids, ULONG Count, PULONG ActualCount) PURE;
    829     STDMETHOD(GetRunningProcessSystemIdByExecutableName)(THIS_ ULONG64 Server, PCSTR ExeName, ULONG Flags, PULONG Id) PURE;
    830     STDMETHOD(GetRunningProcessDescription)(THIS_ ULONG64 Server, ULONG SystemId, ULONG Flags, PSTR ExeName, ULONG ExeNameSize, PULONG ActualExeNameSize, PSTR Description, ULONG DescriptionSize, PULONG ActualDescriptionSize) PURE;
    831     STDMETHOD(AttachProcess)(THIS_ ULONG64 Server, ULONG ProcessId, ULONG AttachFlags) PURE;
    832     STDMETHOD(CreateProcess)(THIS_ ULONG64 Server, PSTR CommandLine, ULONG CreateFlags) PURE;
    833     STDMETHOD(CreateProcessAndAttach)(THIS_ ULONG64 Server, PSTR CommandLine, ULONG CreateFlags, ULONG ProcessId, ULONG AttachFlags) PURE;
    834     STDMETHOD(GetProcessOptions)(THIS_ PULONG Options) PURE;
    835     STDMETHOD(AddProcessOptions)(THIS_ ULONG Options) PURE;
    836     STDMETHOD(RemoveProcessOptions)(THIS_ ULONG Options) PURE;
    837     STDMETHOD(SetProcessOptions)(THIS_ ULONG Options) PURE;
    838     STDMETHOD(OpenDumpFile)(THIS_ PCSTR DumpFile) PURE;
    839     STDMETHOD(WriteDumpFile)(THIS_ PCSTR DumpFile, ULONG Qualifier) PURE;
    840     STDMETHOD(ConnectSession)(THIS_ ULONG Flags, ULONG HistoryLimit) PURE;
    841     STDMETHOD(StartServer)(THIS_ PCSTR Options) PURE;
    842     STDMETHOD(OutputServers)(THIS_ ULONG OutputControl, PCSTR Machine, ULONG Flags) PURE;
    843     STDMETHOD(TerminateProcesses)(THIS) PURE;
    844     STDMETHOD(DetachProcesses)(THIS) PURE;
    845     STDMETHOD(EndSession)(THIS_ ULONG Flags) PURE;
    846     STDMETHOD(GetExitCode)(THIS_ PULONG Code) PURE;
    847     STDMETHOD(DispatchCallbacks)(THIS_ ULONG Timeout) PURE;
    848     STDMETHOD(ExitDispatch)(THIS_ PDEBUG_CLIENT Client) PURE;
    849     STDMETHOD(CreateClient)(THIS_ PDEBUG_CLIENT *Client) PURE;
    850     STDMETHOD(GetInputCallbacks)(THIS_ PDEBUG_INPUT_CALLBACKS *Callbacks) PURE;
    851     STDMETHOD(SetInputCallbacks)(THIS_ PDEBUG_INPUT_CALLBACKS Callbacks) PURE;
    852     STDMETHOD(GetOutputCallbacks)(THIS_ PDEBUG_OUTPUT_CALLBACKS *Callbacks) PURE;
    853     STDMETHOD(SetOutputCallbacks)(THIS_ PDEBUG_OUTPUT_CALLBACKS Callbacks) PURE;
    854     STDMETHOD(GetOutputMask)(THIS_ PULONG Mask) PURE;
    855     STDMETHOD(SetOutputMask)(THIS_ ULONG Mask) PURE;
    856     STDMETHOD(GetOtherOutputMask)(THIS_ PDEBUG_CLIENT Client, PULONG Mask) PURE;
    857     STDMETHOD(SetOtherOutputMask)(THIS_ PDEBUG_CLIENT Client, ULONG Mask) PURE;
    858     STDMETHOD(GetOutputWidth)(THIS_ PULONG Columns) PURE;
    859     STDMETHOD(SetOutputWidth)(THIS_ ULONG Columns) PURE;
    860     STDMETHOD(GetOutputLinePrefix)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG PrefixSize) PURE;
    861     STDMETHOD(SetOutputLinePrefix)(THIS_ PCSTR Prefix) PURE;
    862     STDMETHOD(GetIdentity)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG IdentitySize) PURE;
    863     STDMETHOD(OutputIdentity)(THIS_ ULONG OutputControl, ULONG Flags, PCSTR Format) PURE;
    864     STDMETHOD(GetEventCallbacks)(THIS_ PDEBUG_EVENT_CALLBACKS *Callbacks) PURE;
    865     STDMETHOD(SetEventCallbacks)(THIS_ PDEBUG_EVENT_CALLBACKS Callbacks) PURE;
    866     STDMETHOD(FlushCallbacks)(THIS) PURE;
    867     STDMETHOD(WriteDumpFile2)(THIS_ PCSTR DumpFile, ULONG Qualifier, ULONG FormatFlags, PCSTR Comment) PURE;
    868     STDMETHOD(AddDumpInformationFile)(THIS_ PCSTR InfoFile, ULONG Type) PURE;
    869     STDMETHOD(EndProcessServer)(THIS_ ULONG64 Server) PURE;
    870     STDMETHOD(WaitForProcessServerEnd)(THIS_ ULONG Timeout) PURE;
    871     STDMETHOD(IsKernelDebuggerEnabled)(THIS) PURE;
    872     STDMETHOD(TerminateCurrentProcess)(THIS) PURE;
    873     STDMETHOD(DetachCurrentProcess)(THIS) PURE;
    874     STDMETHOD(AbandonCurrentProcess)(THIS) PURE;
    875     STDMETHOD(GetRunningProcessSystemIdByExecutableNameWide)(THIS_ ULONG64 Server, PCWSTR ExeName, ULONG Flags, PULONG Id) PURE;
    876     STDMETHOD(GetRunningProcessDescriptionWide)(THIS_ ULONG64 Server, ULONG SystemId, ULONG Flags, PWSTR ExeName, ULONG ExeNameSize, PULONG ActualExeNameSize, PWSTR Description, ULONG DescriptionSize, PULONG ActualDescriptionSize) PURE;
    877     STDMETHOD(CreateProcessWide)(THIS_ ULONG64 Server, PWSTR CommandLine, ULONG CreateFlags) PURE;
    878     STDMETHOD(CreateProcessAndAttachWide)(THIS_ ULONG64 Server, PWSTR CommandLine, ULONG CreateFlags, ULONG ProcessId, ULONG AttachFlags) PURE;
    879     STDMETHOD(OpenDumpFileWide)(THIS_ PCWSTR FileName, ULONG64 FileHandle) PURE;
    880     STDMETHOD(WriteDumpFileWide)(THIS_ PCWSTR FileName, ULONG64 FileHandle, ULONG Qualifier, ULONG FormatFlags, PCWSTR Comment) PURE;
    881     STDMETHOD(AddDumpInformationFileWide)(THIS_ PCWSTR FileName, ULONG64 FileHandle, ULONG Type) PURE;
    882     STDMETHOD(GetNumberDumpFiles)(THIS_ PULONG Number) PURE;
    883     STDMETHOD(GetDumpFile)(THIS_ ULONG Index, PSTR Buffer, ULONG BufferSize, PULONG NameSize, PULONG64 Handle, PULONG Type) PURE;
    884     STDMETHOD(GetDumpFileWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG BufferSize, PULONG NameSize, PULONG64 Handle, PULONG Type) PURE;
    885     STDMETHOD(AttachKernelWide)(THIS_ ULONG Flags, PCWSTR ConnectOptions) PURE;
    886     STDMETHOD(GetKernelConnectionOptionsWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG OptionsSize) PURE;
    887     STDMETHOD(SetKernelConnectionOptionsWide)(THIS_ PCWSTR Options) PURE;
    888     STDMETHOD(StartProcessServerWide)(THIS_ ULONG Flags, PCWSTR Options, PVOID Reserved) PURE;
    889     STDMETHOD(ConnectProcessServerWide)(THIS_ PCWSTR RemoteOptions, PULONG64 Server) PURE;
    890     STDMETHOD(StartServerWide)(THIS_ PCWSTR Options) PURE;
    891     STDMETHOD(OutputServersWide)(THIS_ ULONG OutputControl, PCWSTR Machine, ULONG Flags) PURE;
    892     STDMETHOD(GetOutputCallbacksWide)(THIS_ PDEBUG_OUTPUT_CALLBACKS_WIDE *Callbacks) PURE;
    893     STDMETHOD(SetOutputCallbacksWide)(THIS_ PDEBUG_OUTPUT_CALLBACKS_WIDE Callbacks) PURE;
    894     STDMETHOD(GetOutputLinePrefixWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG PrefixSize) PURE;
    895     STDMETHOD(SetOutputLinePrefixWide)(THIS_ PCWSTR Prefix) PURE;
    896     STDMETHOD(GetIdentityWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG IdentitySize) PURE;
    897     STDMETHOD(OutputIdentityWide)(THIS_ ULONG OutputControl, ULONG Flags, PCWSTR Format) PURE;
    898     STDMETHOD(GetEventCallbacksWide)(THIS_ PDEBUG_EVENT_CALLBACKS_WIDE *Callbacks) PURE;
    899     STDMETHOD(SetEventCallbacksWide)(THIS_ PDEBUG_EVENT_CALLBACKS_WIDE Callbacks) PURE;
    900     STDMETHOD(CreateProcess2)(THIS_ ULONG64 Server, PSTR CommandLine, PVOID OptionsBuffer, ULONG OptionsBufferSize, PCSTR InitialDirectory, PCSTR Environment) PURE;
    901     STDMETHOD(CreateProcess2Wide)(THIS_ ULONG64 Server, PWSTR CommandLine, PVOID OptionsBuffer, ULONG OptionsBufferSize, PCWSTR InitialDirectory, PCWSTR Environment) PURE;
    902     STDMETHOD(CreateProcessAndAttach2)(THIS_ ULONG64 Server, PSTR CommandLine, PVOID OptionsBuffer, ULONG OptionsBufferSize, PCSTR InitialDirectory, PCSTR Environment, ULONG ProcessId, ULONG AttachFlags) PURE;
    903     STDMETHOD(CreateProcessAndAttach2Wide)(THIS_ ULONG64 Server, PWSTR CommandLine, PVOID OptionsBuffer, ULONG OptionsBufferSize, PCWSTR InitialDirectory, PCWSTR Environment, ULONG ProcessId, ULONG AttachFlags) PURE;
    904     STDMETHOD(PushOutputLinePrefix)(THIS_ PCSTR NewPrefix, PULONG64 Handle) PURE;
    905     STDMETHOD(PushOutputLinePrefixWide)(THIS_ PCWSTR NewPrefix, PULONG64 Handle) PURE;
    906     STDMETHOD(PopOutputLinePrefix)(THIS_ ULONG64 Handle) PURE;
    907     STDMETHOD(GetNumberInputCallbacks)(THIS_ PULONG Count) PURE;
    908     STDMETHOD(GetNumberOutputCallbacks)(THIS_ PULONG Count) PURE;
    909     STDMETHOD(GetNumberEventCallbacks)(THIS_ ULONG EventFlags, PULONG Count) PURE;
    910     STDMETHOD(GetQuitLockString)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
    911     STDMETHOD(SetQuitLockString)(THIS_ PCSTR String) PURE;
    912     STDMETHOD(GetQuitLockStringWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
    913     STDMETHOD(SetQuitLockStringWide)(THIS_ PCWSTR String) PURE;
    914   };
    915 #ifdef __CRT_UUID_DECL
    916 __CRT_UUID_DECL(IDebugClient5,0xe3acb9d7,0x7ec2,0x4f0c,0xa0,0xda,0xe8,0x1e,0x0c,0xbb,0xe6,0x28)
    917 #endif
    918 
    919 #undef INTERFACE
    920 #define INTERFACE IDebugClient6
    921   DECLARE_INTERFACE_(IDebugClient6, IUnknown) {
    922     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
    923     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
    924     STDMETHOD_(ULONG, Release)(THIS) PURE;
    925     STDMETHOD(AttachKernel)(THIS_ ULONG Flags, PCSTR ConnectOptions) PURE;
    926     STDMETHOD(GetKernelConnectionOptions)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG OptionsSize) PURE;
    927     STDMETHOD(SetKernelConnectionOptions)(THIS_ PCSTR Options) PURE;
    928     STDMETHOD(StartProcessServer)(THIS_ ULONG Flags, PCSTR Options, PVOID Reserved) PURE;
    929     STDMETHOD(ConnectProcessServer)(THIS_ PCSTR RemoteOptions, PULONG64 Server) PURE;
    930     STDMETHOD(DisconnectProcessServer)(THIS_ ULONG64 Server) PURE;
    931     STDMETHOD(GetRunningProcessSystemIds)(THIS_ ULONG64 Server, PULONG Ids, ULONG Count, PULONG ActualCount) PURE;
    932     STDMETHOD(GetRunningProcessSystemIdByExecutableName)(THIS_ ULONG64 Server, PCSTR ExeName, ULONG Flags, PULONG Id) PURE;
    933     STDMETHOD(GetRunningProcessDescription)(THIS_ ULONG64 Server, ULONG SystemId, ULONG Flags, PSTR ExeName, ULONG ExeNameSize, PULONG ActualExeNameSize, PSTR Description, ULONG DescriptionSize, PULONG ActualDescriptionSize) PURE;
    934     STDMETHOD(AttachProcess)(THIS_ ULONG64 Server, ULONG ProcessId, ULONG AttachFlags) PURE;
    935     STDMETHOD(CreateProcess)(THIS_ ULONG64 Server, PSTR CommandLine, ULONG CreateFlags) PURE;
    936     STDMETHOD(CreateProcessAndAttach)(THIS_ ULONG64 Server, PSTR CommandLine, ULONG CreateFlags, ULONG ProcessId, ULONG AttachFlags) PURE;
    937     STDMETHOD(GetProcessOptions)(THIS_ PULONG Options) PURE;
    938     STDMETHOD(AddProcessOptions)(THIS_ ULONG Options) PURE;
    939     STDMETHOD(RemoveProcessOptions)(THIS_ ULONG Options) PURE;
    940     STDMETHOD(SetProcessOptions)(THIS_ ULONG Options) PURE;
    941     STDMETHOD(OpenDumpFile)(THIS_ PCSTR DumpFile) PURE;
    942     STDMETHOD(WriteDumpFile)(THIS_ PCSTR DumpFile, ULONG Qualifier) PURE;
    943     STDMETHOD(ConnectSession)(THIS_ ULONG Flags, ULONG HistoryLimit) PURE;
    944     STDMETHOD(StartServer)(THIS_ PCSTR Options) PURE;
    945     STDMETHOD(OutputServers)(THIS_ ULONG OutputControl, PCSTR Machine, ULONG Flags) PURE;
    946     STDMETHOD(TerminateProcesses)(THIS) PURE;
    947     STDMETHOD(DetachProcesses)(THIS) PURE;
    948     STDMETHOD(EndSession)(THIS_ ULONG Flags) PURE;
    949     STDMETHOD(GetExitCode)(THIS_ PULONG Code) PURE;
    950     STDMETHOD(DispatchCallbacks)(THIS_ ULONG Timeout) PURE;
    951     STDMETHOD(ExitDispatch)(THIS_ PDEBUG_CLIENT Client) PURE;
    952     STDMETHOD(CreateClient)(THIS_ PDEBUG_CLIENT *Client) PURE;
    953     STDMETHOD(GetInputCallbacks)(THIS_ PDEBUG_INPUT_CALLBACKS *Callbacks) PURE;
    954     STDMETHOD(SetInputCallbacks)(THIS_ PDEBUG_INPUT_CALLBACKS Callbacks) PURE;
    955     STDMETHOD(GetOutputCallbacks)(THIS_ PDEBUG_OUTPUT_CALLBACKS *Callbacks) PURE;
    956     STDMETHOD(SetOutputCallbacks)(THIS_ PDEBUG_OUTPUT_CALLBACKS Callbacks) PURE;
    957     STDMETHOD(GetOutputMask)(THIS_ PULONG Mask) PURE;
    958     STDMETHOD(SetOutputMask)(THIS_ ULONG Mask) PURE;
    959     STDMETHOD(GetOtherOutputMask)(THIS_ PDEBUG_CLIENT Client, PULONG Mask) PURE;
    960     STDMETHOD(SetOtherOutputMask)(THIS_ PDEBUG_CLIENT Client, ULONG Mask) PURE;
    961     STDMETHOD(GetOutputWidth)(THIS_ PULONG Columns) PURE;
    962     STDMETHOD(SetOutputWidth)(THIS_ ULONG Columns) PURE;
    963     STDMETHOD(GetOutputLinePrefix)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG PrefixSize) PURE;
    964     STDMETHOD(SetOutputLinePrefix)(THIS_ PCSTR Prefix) PURE;
    965     STDMETHOD(GetIdentity)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG IdentitySize) PURE;
    966     STDMETHOD(OutputIdentity)(THIS_ ULONG OutputControl, ULONG Flags, PCSTR Format) PURE;
    967     STDMETHOD(GetEventCallbacks)(THIS_ PDEBUG_EVENT_CALLBACKS *Callbacks) PURE;
    968     STDMETHOD(SetEventCallbacks)(THIS_ PDEBUG_EVENT_CALLBACKS Callbacks) PURE;
    969     STDMETHOD(FlushCallbacks)(THIS) PURE;
    970     STDMETHOD(WriteDumpFile2)(THIS_ PCSTR DumpFile, ULONG Qualifier, ULONG FormatFlags, PCSTR Comment) PURE;
    971     STDMETHOD(AddDumpInformationFile)(THIS_ PCSTR InfoFile, ULONG Type) PURE;
    972     STDMETHOD(EndProcessServer)(THIS_ ULONG64 Server) PURE;
    973     STDMETHOD(WaitForProcessServerEnd)(THIS_ ULONG Timeout) PURE;
    974     STDMETHOD(IsKernelDebuggerEnabled)(THIS) PURE;
    975     STDMETHOD(TerminateCurrentProcess)(THIS) PURE;
    976     STDMETHOD(DetachCurrentProcess)(THIS) PURE;
    977     STDMETHOD(AbandonCurrentProcess)(THIS) PURE;
    978     STDMETHOD(GetRunningProcessSystemIdByExecutableNameWide)(THIS_ ULONG64 Server, PCWSTR ExeName, ULONG Flags, PULONG Id) PURE;
    979     STDMETHOD(GetRunningProcessDescriptionWide)(THIS_ ULONG64 Server, ULONG SystemId, ULONG Flags, PWSTR ExeName, ULONG ExeNameSize, PULONG ActualExeNameSize, PWSTR Description, ULONG DescriptionSize, PULONG ActualDescriptionSize) PURE;
    980     STDMETHOD(CreateProcessWide)(THIS_ ULONG64 Server, PWSTR CommandLine, ULONG CreateFlags) PURE;
    981     STDMETHOD(CreateProcessAndAttachWide)(THIS_ ULONG64 Server, PWSTR CommandLine, ULONG CreateFlags, ULONG ProcessId, ULONG AttachFlags) PURE;
    982     STDMETHOD(OpenDumpFileWide)(THIS_ PCWSTR FileName, ULONG64 FileHandle) PURE;
    983     STDMETHOD(WriteDumpFileWide)(THIS_ PCWSTR FileName, ULONG64 FileHandle, ULONG Qualifier, ULONG FormatFlags, PCWSTR Comment) PURE;
    984     STDMETHOD(AddDumpInformationFileWide)(THIS_ PCWSTR FileName, ULONG64 FileHandle, ULONG Type) PURE;
    985     STDMETHOD(GetNumberDumpFiles)(THIS_ PULONG Number) PURE;
    986     STDMETHOD(GetDumpFile)(THIS_ ULONG Index, PSTR Buffer, ULONG BufferSize, PULONG NameSize, PULONG64 Handle, PULONG Type) PURE;
    987     STDMETHOD(GetDumpFileWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG BufferSize, PULONG NameSize, PULONG64 Handle, PULONG Type) PURE;
    988     STDMETHOD(AttachKernelWide)(THIS_ ULONG Flags, PCWSTR ConnectOptions) PURE;
    989     STDMETHOD(GetKernelConnectionOptionsWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG OptionsSize) PURE;
    990     STDMETHOD(SetKernelConnectionOptionsWide)(THIS_ PCWSTR Options) PURE;
    991     STDMETHOD(StartProcessServerWide)(THIS_ ULONG Flags, PCWSTR Options, PVOID Reserved) PURE;
    992     STDMETHOD(ConnectProcessServerWide)(THIS_ PCWSTR RemoteOptions, PULONG64 Server) PURE;
    993     STDMETHOD(StartServerWide)(THIS_ PCWSTR Options) PURE;
    994     STDMETHOD(OutputServersWide)(THIS_ ULONG OutputControl, PCWSTR Machine, ULONG Flags) PURE;
    995     STDMETHOD(GetOutputCallbacksWide)(THIS_ PDEBUG_OUTPUT_CALLBACKS_WIDE *Callbacks) PURE;
    996     STDMETHOD(SetOutputCallbacksWide)(THIS_ PDEBUG_OUTPUT_CALLBACKS_WIDE Callbacks) PURE;
    997     STDMETHOD(GetOutputLinePrefixWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG PrefixSize) PURE;
    998     STDMETHOD(SetOutputLinePrefixWide)(THIS_ PCWSTR Prefix) PURE;
    999     STDMETHOD(GetIdentityWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG IdentitySize) PURE;
   1000     STDMETHOD(OutputIdentityWide)(THIS_ ULONG OutputControl, ULONG Flags, PCWSTR Format) PURE;
   1001     STDMETHOD(GetEventCallbacksWide)(THIS_ PDEBUG_EVENT_CALLBACKS_WIDE *Callbacks) PURE;
   1002     STDMETHOD(SetEventCallbacksWide)(THIS_ PDEBUG_EVENT_CALLBACKS_WIDE Callbacks) PURE;
   1003     STDMETHOD(CreateProcess2)(THIS_ ULONG64 Server, PSTR CommandLine, PVOID OptionsBuffer, ULONG OptionsBufferSize, PCSTR InitialDirectory, PCSTR Environment) PURE;
   1004     STDMETHOD(CreateProcess2Wide)(THIS_ ULONG64 Server, PWSTR CommandLine, PVOID OptionsBuffer, ULONG OptionsBufferSize, PCWSTR InitialDirectory, PCWSTR Environment) PURE;
   1005     STDMETHOD(CreateProcessAndAttach2)(THIS_ ULONG64 Server, PSTR CommandLine, PVOID OptionsBuffer, ULONG OptionsBufferSize, PCSTR InitialDirectory, PCSTR Environment, ULONG ProcessId, ULONG AttachFlags) PURE;
   1006     STDMETHOD(CreateProcessAndAttach2Wide)(THIS_ ULONG64 Server, PWSTR CommandLine, PVOID OptionsBuffer, ULONG OptionsBufferSize, PCWSTR InitialDirectory, PCWSTR Environment, ULONG ProcessId, ULONG AttachFlags) PURE;
   1007     STDMETHOD(PushOutputLinePrefix)(THIS_ PCSTR NewPrefix, PULONG64 Handle) PURE;
   1008     STDMETHOD(PushOutputLinePrefixWide)(THIS_ PCWSTR NewPrefix, PULONG64 Handle) PURE;
   1009     STDMETHOD(PopOutputLinePrefix)(THIS_ ULONG64 Handle) PURE;
   1010     STDMETHOD(GetNumberInputCallbacks)(THIS_ PULONG Count) PURE;
   1011     STDMETHOD(GetNumberOutputCallbacks)(THIS_ PULONG Count) PURE;
   1012     STDMETHOD(GetNumberEventCallbacks)(THIS_ ULONG EventFlags, PULONG Count) PURE;
   1013     STDMETHOD(GetQuitLockString)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
   1014     STDMETHOD(SetQuitLockString)(THIS_ PCSTR String) PURE;
   1015     STDMETHOD(GetQuitLockStringWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
   1016     STDMETHOD(SetQuitLockStringWide)(THIS_ PCWSTR String) PURE;
   1017     STDMETHOD(SetEventContextCallbacks)(THIS_ PDEBUG_EVENT_CONTEXT_CALLBACKS Callbacks) PURE;
   1018   };
   1019 #ifdef __CRT_UUID_DECL
   1020 __CRT_UUID_DECL(IDebugClient6,0xfd28b4c5,0xc498,0x4686,0xa2,0x8e,0x62,0xca,0xd2,0x15,0x4e,0xb3)
   1021 #endif
   1022 
   1023 #undef INTERFACE
   1024 #define INTERFACE IDebugClient7
   1025   DECLARE_INTERFACE_(IDebugClient7, IUnknown) {
   1026     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
   1027     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1028     STDMETHOD_(ULONG, Release)(THIS) PURE;
   1029     STDMETHOD(AttachKernel)(THIS_ ULONG Flags, PCSTR ConnectOptions) PURE;
   1030     STDMETHOD(GetKernelConnectionOptions)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG OptionsSize) PURE;
   1031     STDMETHOD(SetKernelConnectionOptions)(THIS_ PCSTR Options) PURE;
   1032     STDMETHOD(StartProcessServer)(THIS_ ULONG Flags, PCSTR Options, PVOID Reserved) PURE;
   1033     STDMETHOD(ConnectProcessServer)(THIS_ PCSTR RemoteOptions, PULONG64 Server) PURE;
   1034     STDMETHOD(DisconnectProcessServer)(THIS_ ULONG64 Server) PURE;
   1035     STDMETHOD(GetRunningProcessSystemIds)(THIS_ ULONG64 Server, PULONG Ids, ULONG Count, PULONG ActualCount) PURE;
   1036     STDMETHOD(GetRunningProcessSystemIdByExecutableName)(THIS_ ULONG64 Server, PCSTR ExeName, ULONG Flags, PULONG Id) PURE;
   1037     STDMETHOD(GetRunningProcessDescription)(THIS_ ULONG64 Server, ULONG SystemId, ULONG Flags, PSTR ExeName, ULONG ExeNameSize, PULONG ActualExeNameSize, PSTR Description, ULONG DescriptionSize, PULONG ActualDescriptionSize) PURE;
   1038     STDMETHOD(AttachProcess)(THIS_ ULONG64 Server, ULONG ProcessId, ULONG AttachFlags) PURE;
   1039     STDMETHOD(CreateProcess)(THIS_ ULONG64 Server, PSTR CommandLine, ULONG CreateFlags) PURE;
   1040     STDMETHOD(CreateProcessAndAttach)(THIS_ ULONG64 Server, PSTR CommandLine, ULONG CreateFlags, ULONG ProcessId, ULONG AttachFlags) PURE;
   1041     STDMETHOD(GetProcessOptions)(THIS_ PULONG Options) PURE;
   1042     STDMETHOD(AddProcessOptions)(THIS_ ULONG Options) PURE;
   1043     STDMETHOD(RemoveProcessOptions)(THIS_ ULONG Options) PURE;
   1044     STDMETHOD(SetProcessOptions)(THIS_ ULONG Options) PURE;
   1045     STDMETHOD(OpenDumpFile)(THIS_ PCSTR DumpFile) PURE;
   1046     STDMETHOD(WriteDumpFile)(THIS_ PCSTR DumpFile, ULONG Qualifier) PURE;
   1047     STDMETHOD(ConnectSession)(THIS_ ULONG Flags, ULONG HistoryLimit) PURE;
   1048     STDMETHOD(StartServer)(THIS_ PCSTR Options) PURE;
   1049     STDMETHOD(OutputServers)(THIS_ ULONG OutputControl, PCSTR Machine, ULONG Flags) PURE;
   1050     STDMETHOD(TerminateProcesses)(THIS) PURE;
   1051     STDMETHOD(DetachProcesses)(THIS) PURE;
   1052     STDMETHOD(EndSession)(THIS_ ULONG Flags) PURE;
   1053     STDMETHOD(GetExitCode)(THIS_ PULONG Code) PURE;
   1054     STDMETHOD(DispatchCallbacks)(THIS_ ULONG Timeout) PURE;
   1055     STDMETHOD(ExitDispatch)(THIS_ PDEBUG_CLIENT Client) PURE;
   1056     STDMETHOD(CreateClient)(THIS_ PDEBUG_CLIENT *Client) PURE;
   1057     STDMETHOD(GetInputCallbacks)(THIS_ PDEBUG_INPUT_CALLBACKS *Callbacks) PURE;
   1058     STDMETHOD(SetInputCallbacks)(THIS_ PDEBUG_INPUT_CALLBACKS Callbacks) PURE;
   1059     STDMETHOD(GetOutputCallbacks)(THIS_ PDEBUG_OUTPUT_CALLBACKS *Callbacks) PURE;
   1060     STDMETHOD(SetOutputCallbacks)(THIS_ PDEBUG_OUTPUT_CALLBACKS Callbacks) PURE;
   1061     STDMETHOD(GetOutputMask)(THIS_ PULONG Mask) PURE;
   1062     STDMETHOD(SetOutputMask)(THIS_ ULONG Mask) PURE;
   1063     STDMETHOD(GetOtherOutputMask)(THIS_ PDEBUG_CLIENT Client, PULONG Mask) PURE;
   1064     STDMETHOD(SetOtherOutputMask)(THIS_ PDEBUG_CLIENT Client, ULONG Mask) PURE;
   1065     STDMETHOD(GetOutputWidth)(THIS_ PULONG Columns) PURE;
   1066     STDMETHOD(SetOutputWidth)(THIS_ ULONG Columns) PURE;
   1067     STDMETHOD(GetOutputLinePrefix)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG PrefixSize) PURE;
   1068     STDMETHOD(SetOutputLinePrefix)(THIS_ PCSTR Prefix) PURE;
   1069     STDMETHOD(GetIdentity)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG IdentitySize) PURE;
   1070     STDMETHOD(OutputIdentity)(THIS_ ULONG OutputControl, ULONG Flags, PCSTR Format) PURE;
   1071     STDMETHOD(GetEventCallbacks)(THIS_ PDEBUG_EVENT_CALLBACKS *Callbacks) PURE;
   1072     STDMETHOD(SetEventCallbacks)(THIS_ PDEBUG_EVENT_CALLBACKS Callbacks) PURE;
   1073     STDMETHOD(FlushCallbacks)(THIS) PURE;
   1074     STDMETHOD(WriteDumpFile2)(THIS_ PCSTR DumpFile, ULONG Qualifier, ULONG FormatFlags, PCSTR Comment) PURE;
   1075     STDMETHOD(AddDumpInformationFile)(THIS_ PCSTR InfoFile, ULONG Type) PURE;
   1076     STDMETHOD(EndProcessServer)(THIS_ ULONG64 Server) PURE;
   1077     STDMETHOD(WaitForProcessServerEnd)(THIS_ ULONG Timeout) PURE;
   1078     STDMETHOD(IsKernelDebuggerEnabled)(THIS) PURE;
   1079     STDMETHOD(TerminateCurrentProcess)(THIS) PURE;
   1080     STDMETHOD(DetachCurrentProcess)(THIS) PURE;
   1081     STDMETHOD(AbandonCurrentProcess)(THIS) PURE;
   1082     STDMETHOD(GetRunningProcessSystemIdByExecutableNameWide)(THIS_ ULONG64 Server, PCWSTR ExeName, ULONG Flags, PULONG Id) PURE;
   1083     STDMETHOD(GetRunningProcessDescriptionWide)(THIS_ ULONG64 Server, ULONG SystemId, ULONG Flags, PWSTR ExeName, ULONG ExeNameSize, PULONG ActualExeNameSize, PWSTR Description, ULONG DescriptionSize, PULONG ActualDescriptionSize) PURE;
   1084     STDMETHOD(CreateProcessWide)(THIS_ ULONG64 Server, PWSTR CommandLine, ULONG CreateFlags) PURE;
   1085     STDMETHOD(CreateProcessAndAttachWide)(THIS_ ULONG64 Server, PWSTR CommandLine, ULONG CreateFlags, ULONG ProcessId, ULONG AttachFlags) PURE;
   1086     STDMETHOD(OpenDumpFileWide)(THIS_ PCWSTR FileName, ULONG64 FileHandle) PURE;
   1087     STDMETHOD(WriteDumpFileWide)(THIS_ PCWSTR FileName, ULONG64 FileHandle, ULONG Qualifier, ULONG FormatFlags, PCWSTR Comment) PURE;
   1088     STDMETHOD(AddDumpInformationFileWide)(THIS_ PCWSTR FileName, ULONG64 FileHandle, ULONG Type) PURE;
   1089     STDMETHOD(GetNumberDumpFiles)(THIS_ PULONG Number) PURE;
   1090     STDMETHOD(GetDumpFile)(THIS_ ULONG Index, PSTR Buffer, ULONG BufferSize, PULONG NameSize, PULONG64 Handle, PULONG Type) PURE;
   1091     STDMETHOD(GetDumpFileWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG BufferSize, PULONG NameSize, PULONG64 Handle, PULONG Type) PURE;
   1092     STDMETHOD(AttachKernelWide)(THIS_ ULONG Flags, PCWSTR ConnectOptions) PURE;
   1093     STDMETHOD(GetKernelConnectionOptionsWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG OptionsSize) PURE;
   1094     STDMETHOD(SetKernelConnectionOptionsWide)(THIS_ PCWSTR Options) PURE;
   1095     STDMETHOD(StartProcessServerWide)(THIS_ ULONG Flags, PCWSTR Options, PVOID Reserved) PURE;
   1096     STDMETHOD(ConnectProcessServerWide)(THIS_ PCWSTR RemoteOptions, PULONG64 Server) PURE;
   1097     STDMETHOD(StartServerWide)(THIS_ PCWSTR Options) PURE;
   1098     STDMETHOD(OutputServersWide)(THIS_ ULONG OutputControl, PCWSTR Machine, ULONG Flags) PURE;
   1099     STDMETHOD(GetOutputCallbacksWide)(THIS_ PDEBUG_OUTPUT_CALLBACKS_WIDE *Callbacks) PURE;
   1100     STDMETHOD(SetOutputCallbacksWide)(THIS_ PDEBUG_OUTPUT_CALLBACKS_WIDE Callbacks) PURE;
   1101     STDMETHOD(GetOutputLinePrefixWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG PrefixSize) PURE;
   1102     STDMETHOD(SetOutputLinePrefixWide)(THIS_ PCWSTR Prefix) PURE;
   1103     STDMETHOD(GetIdentityWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG IdentitySize) PURE;
   1104     STDMETHOD(OutputIdentityWide)(THIS_ ULONG OutputControl, ULONG Flags, PCWSTR Format) PURE;
   1105     STDMETHOD(GetEventCallbacksWide)(THIS_ PDEBUG_EVENT_CALLBACKS_WIDE *Callbacks) PURE;
   1106     STDMETHOD(SetEventCallbacksWide)(THIS_ PDEBUG_EVENT_CALLBACKS_WIDE Callbacks) PURE;
   1107     STDMETHOD(CreateProcess2)(THIS_ ULONG64 Server, PSTR CommandLine, PVOID OptionsBuffer, ULONG OptionsBufferSize, PCSTR InitialDirectory, PCSTR Environment) PURE;
   1108     STDMETHOD(CreateProcess2Wide)(THIS_ ULONG64 Server, PWSTR CommandLine, PVOID OptionsBuffer, ULONG OptionsBufferSize, PCWSTR InitialDirectory, PCWSTR Environment) PURE;
   1109     STDMETHOD(CreateProcessAndAttach2)(THIS_ ULONG64 Server, PSTR CommandLine, PVOID OptionsBuffer, ULONG OptionsBufferSize, PCSTR InitialDirectory, PCSTR Environment, ULONG ProcessId, ULONG AttachFlags) PURE;
   1110     STDMETHOD(CreateProcessAndAttach2Wide)(THIS_ ULONG64 Server, PWSTR CommandLine, PVOID OptionsBuffer, ULONG OptionsBufferSize, PCWSTR InitialDirectory, PCWSTR Environment, ULONG ProcessId, ULONG AttachFlags) PURE;
   1111     STDMETHOD(PushOutputLinePrefix)(THIS_ PCSTR NewPrefix, PULONG64 Handle) PURE;
   1112     STDMETHOD(PushOutputLinePrefixWide)(THIS_ PCWSTR NewPrefix, PULONG64 Handle) PURE;
   1113     STDMETHOD(PopOutputLinePrefix)(THIS_ ULONG64 Handle) PURE;
   1114     STDMETHOD(GetNumberInputCallbacks)(THIS_ PULONG Count) PURE;
   1115     STDMETHOD(GetNumberOutputCallbacks)(THIS_ PULONG Count) PURE;
   1116     STDMETHOD(GetNumberEventCallbacks)(THIS_ ULONG EventFlags, PULONG Count) PURE;
   1117     STDMETHOD(GetQuitLockString)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
   1118     STDMETHOD(SetQuitLockString)(THIS_ PCSTR String) PURE;
   1119     STDMETHOD(GetQuitLockStringWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
   1120     STDMETHOD(SetQuitLockStringWide)(THIS_ PCWSTR String) PURE;
   1121     STDMETHOD(SetEventContextCallbacks)(THIS_ PDEBUG_EVENT_CONTEXT_CALLBACKS Callbacks) PURE;
   1122     STDMETHOD(SetClientContext)(THIS_ PVOID Context, ULONG ContextSize) PURE;
   1123   };
   1124 #ifdef __CRT_UUID_DECL
   1125 __CRT_UUID_DECL(IDebugClient7,0x13586be3,0x542e,0x481e,0xb1,0xf2,0x84,0x97,0xba,0x74,0xf9,0xa9)
   1126 #endif
   1127 
   1128 #undef INTERFACE
   1129 #define INTERFACE IDebugClient8
   1130   DECLARE_INTERFACE_(IDebugClient8, IUnknown) {
   1131     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
   1132     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1133     STDMETHOD_(ULONG, Release)(THIS) PURE;
   1134     STDMETHOD(AttachKernel)(THIS_ ULONG Flags, PCSTR ConnectOptions) PURE;
   1135     STDMETHOD(GetKernelConnectionOptions)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG OptionsSize) PURE;
   1136     STDMETHOD(SetKernelConnectionOptions)(THIS_ PCSTR Options) PURE;
   1137     STDMETHOD(StartProcessServer)(THIS_ ULONG Flags, PCSTR Options, PVOID Reserved) PURE;
   1138     STDMETHOD(ConnectProcessServer)(THIS_ PCSTR RemoteOptions, PULONG64 Server) PURE;
   1139     STDMETHOD(DisconnectProcessServer)(THIS_ ULONG64 Server) PURE;
   1140     STDMETHOD(GetRunningProcessSystemIds)(THIS_ ULONG64 Server, PULONG Ids, ULONG Count, PULONG ActualCount) PURE;
   1141     STDMETHOD(GetRunningProcessSystemIdByExecutableName)(THIS_ ULONG64 Server, PCSTR ExeName, ULONG Flags, PULONG Id) PURE;
   1142     STDMETHOD(GetRunningProcessDescription)(THIS_ ULONG64 Server, ULONG SystemId, ULONG Flags, PSTR ExeName, ULONG ExeNameSize, PULONG ActualExeNameSize, PSTR Description, ULONG DescriptionSize, PULONG ActualDescriptionSize) PURE;
   1143     STDMETHOD(AttachProcess)(THIS_ ULONG64 Server, ULONG ProcessId, ULONG AttachFlags) PURE;
   1144     STDMETHOD(CreateProcess)(THIS_ ULONG64 Server, PSTR CommandLine, ULONG CreateFlags) PURE;
   1145     STDMETHOD(CreateProcessAndAttach)(THIS_ ULONG64 Server, PSTR CommandLine, ULONG CreateFlags, ULONG ProcessId, ULONG AttachFlags) PURE;
   1146     STDMETHOD(GetProcessOptions)(THIS_ PULONG Options) PURE;
   1147     STDMETHOD(AddProcessOptions)(THIS_ ULONG Options) PURE;
   1148     STDMETHOD(RemoveProcessOptions)(THIS_ ULONG Options) PURE;
   1149     STDMETHOD(SetProcessOptions)(THIS_ ULONG Options) PURE;
   1150     STDMETHOD(OpenDumpFile)(THIS_ PCSTR DumpFile) PURE;
   1151     STDMETHOD(WriteDumpFile)(THIS_ PCSTR DumpFile, ULONG Qualifier) PURE;
   1152     STDMETHOD(ConnectSession)(THIS_ ULONG Flags, ULONG HistoryLimit) PURE;
   1153     STDMETHOD(StartServer)(THIS_ PCSTR Options) PURE;
   1154     STDMETHOD(OutputServers)(THIS_ ULONG OutputControl, PCSTR Machine, ULONG Flags) PURE;
   1155     STDMETHOD(TerminateProcesses)(THIS) PURE;
   1156     STDMETHOD(DetachProcesses)(THIS) PURE;
   1157     STDMETHOD(EndSession)(THIS_ ULONG Flags) PURE;
   1158     STDMETHOD(GetExitCode)(THIS_ PULONG Code) PURE;
   1159     STDMETHOD(DispatchCallbacks)(THIS_ ULONG Timeout) PURE;
   1160     STDMETHOD(ExitDispatch)(THIS_ PDEBUG_CLIENT Client) PURE;
   1161     STDMETHOD(CreateClient)(THIS_ PDEBUG_CLIENT *Client) PURE;
   1162     STDMETHOD(GetInputCallbacks)(THIS_ PDEBUG_INPUT_CALLBACKS *Callbacks) PURE;
   1163     STDMETHOD(SetInputCallbacks)(THIS_ PDEBUG_INPUT_CALLBACKS Callbacks) PURE;
   1164     STDMETHOD(GetOutputCallbacks)(THIS_ PDEBUG_OUTPUT_CALLBACKS *Callbacks) PURE;
   1165     STDMETHOD(SetOutputCallbacks)(THIS_ PDEBUG_OUTPUT_CALLBACKS Callbacks) PURE;
   1166     STDMETHOD(GetOutputMask)(THIS_ PULONG Mask) PURE;
   1167     STDMETHOD(SetOutputMask)(THIS_ ULONG Mask) PURE;
   1168     STDMETHOD(GetOtherOutputMask)(THIS_ PDEBUG_CLIENT Client, PULONG Mask) PURE;
   1169     STDMETHOD(SetOtherOutputMask)(THIS_ PDEBUG_CLIENT Client, ULONG Mask) PURE;
   1170     STDMETHOD(GetOutputWidth)(THIS_ PULONG Columns) PURE;
   1171     STDMETHOD(SetOutputWidth)(THIS_ ULONG Columns) PURE;
   1172     STDMETHOD(GetOutputLinePrefix)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG PrefixSize) PURE;
   1173     STDMETHOD(SetOutputLinePrefix)(THIS_ PCSTR Prefix) PURE;
   1174     STDMETHOD(GetIdentity)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG IdentitySize) PURE;
   1175     STDMETHOD(OutputIdentity)(THIS_ ULONG OutputControl, ULONG Flags, PCSTR Format) PURE;
   1176     STDMETHOD(GetEventCallbacks)(THIS_ PDEBUG_EVENT_CALLBACKS *Callbacks) PURE;
   1177     STDMETHOD(SetEventCallbacks)(THIS_ PDEBUG_EVENT_CALLBACKS Callbacks) PURE;
   1178     STDMETHOD(FlushCallbacks)(THIS) PURE;
   1179     STDMETHOD(WriteDumpFile2)(THIS_ PCSTR DumpFile, ULONG Qualifier, ULONG FormatFlags, PCSTR Comment) PURE;
   1180     STDMETHOD(AddDumpInformationFile)(THIS_ PCSTR InfoFile, ULONG Type) PURE;
   1181     STDMETHOD(EndProcessServer)(THIS_ ULONG64 Server) PURE;
   1182     STDMETHOD(WaitForProcessServerEnd)(THIS_ ULONG Timeout) PURE;
   1183     STDMETHOD(IsKernelDebuggerEnabled)(THIS) PURE;
   1184     STDMETHOD(TerminateCurrentProcess)(THIS) PURE;
   1185     STDMETHOD(DetachCurrentProcess)(THIS) PURE;
   1186     STDMETHOD(AbandonCurrentProcess)(THIS) PURE;
   1187     STDMETHOD(GetRunningProcessSystemIdByExecutableNameWide)(THIS_ ULONG64 Server, PCWSTR ExeName, ULONG Flags, PULONG Id) PURE;
   1188     STDMETHOD(GetRunningProcessDescriptionWide)(THIS_ ULONG64 Server, ULONG SystemId, ULONG Flags, PWSTR ExeName, ULONG ExeNameSize, PULONG ActualExeNameSize, PWSTR Description, ULONG DescriptionSize, PULONG ActualDescriptionSize) PURE;
   1189     STDMETHOD(CreateProcessWide)(THIS_ ULONG64 Server, PWSTR CommandLine, ULONG CreateFlags) PURE;
   1190     STDMETHOD(CreateProcessAndAttachWide)(THIS_ ULONG64 Server, PWSTR CommandLine, ULONG CreateFlags, ULONG ProcessId, ULONG AttachFlags) PURE;
   1191     STDMETHOD(OpenDumpFileWide)(THIS_ PCWSTR FileName, ULONG64 FileHandle) PURE;
   1192     STDMETHOD(WriteDumpFileWide)(THIS_ PCWSTR FileName, ULONG64 FileHandle, ULONG Qualifier, ULONG FormatFlags, PCWSTR Comment) PURE;
   1193     STDMETHOD(AddDumpInformationFileWide)(THIS_ PCWSTR FileName, ULONG64 FileHandle, ULONG Type) PURE;
   1194     STDMETHOD(GetNumberDumpFiles)(THIS_ PULONG Number) PURE;
   1195     STDMETHOD(GetDumpFile)(THIS_ ULONG Index, PSTR Buffer, ULONG BufferSize, PULONG NameSize, PULONG64 Handle, PULONG Type) PURE;
   1196     STDMETHOD(GetDumpFileWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG BufferSize, PULONG NameSize, PULONG64 Handle, PULONG Type) PURE;
   1197     STDMETHOD(AttachKernelWide)(THIS_ ULONG Flags, PCWSTR ConnectOptions) PURE;
   1198     STDMETHOD(GetKernelConnectionOptionsWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG OptionsSize) PURE;
   1199     STDMETHOD(SetKernelConnectionOptionsWide)(THIS_ PCWSTR Options) PURE;
   1200     STDMETHOD(StartProcessServerWide)(THIS_ ULONG Flags, PCWSTR Options, PVOID Reserved) PURE;
   1201     STDMETHOD(ConnectProcessServerWide)(THIS_ PCWSTR RemoteOptions, PULONG64 Server) PURE;
   1202     STDMETHOD(StartServerWide)(THIS_ PCWSTR Options) PURE;
   1203     STDMETHOD(OutputServersWide)(THIS_ ULONG OutputControl, PCWSTR Machine, ULONG Flags) PURE;
   1204     STDMETHOD(GetOutputCallbacksWide)(THIS_ PDEBUG_OUTPUT_CALLBACKS_WIDE *Callbacks) PURE;
   1205     STDMETHOD(SetOutputCallbacksWide)(THIS_ PDEBUG_OUTPUT_CALLBACKS_WIDE Callbacks) PURE;
   1206     STDMETHOD(GetOutputLinePrefixWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG PrefixSize) PURE;
   1207     STDMETHOD(SetOutputLinePrefixWide)(THIS_ PCWSTR Prefix) PURE;
   1208     STDMETHOD(GetIdentityWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG IdentitySize) PURE;
   1209     STDMETHOD(OutputIdentityWide)(THIS_ ULONG OutputControl, ULONG Flags, PCWSTR Format) PURE;
   1210     STDMETHOD(GetEventCallbacksWide)(THIS_ PDEBUG_EVENT_CALLBACKS_WIDE *Callbacks) PURE;
   1211     STDMETHOD(SetEventCallbacksWide)(THIS_ PDEBUG_EVENT_CALLBACKS_WIDE Callbacks) PURE;
   1212     STDMETHOD(CreateProcess2)(THIS_ ULONG64 Server, PSTR CommandLine, PVOID OptionsBuffer, ULONG OptionsBufferSize, PCSTR InitialDirectory, PCSTR Environment) PURE;
   1213     STDMETHOD(CreateProcess2Wide)(THIS_ ULONG64 Server, PWSTR CommandLine, PVOID OptionsBuffer, ULONG OptionsBufferSize, PCWSTR InitialDirectory, PCWSTR Environment) PURE;
   1214     STDMETHOD(CreateProcessAndAttach2)(THIS_ ULONG64 Server, PSTR CommandLine, PVOID OptionsBuffer, ULONG OptionsBufferSize, PCSTR InitialDirectory, PCSTR Environment, ULONG ProcessId, ULONG AttachFlags) PURE;
   1215     STDMETHOD(CreateProcessAndAttach2Wide)(THIS_ ULONG64 Server, PWSTR CommandLine, PVOID OptionsBuffer, ULONG OptionsBufferSize, PCWSTR InitialDirectory, PCWSTR Environment, ULONG ProcessId, ULONG AttachFlags) PURE;
   1216     STDMETHOD(PushOutputLinePrefix)(THIS_ PCSTR NewPrefix, PULONG64 Handle) PURE;
   1217     STDMETHOD(PushOutputLinePrefixWide)(THIS_ PCWSTR NewPrefix, PULONG64 Handle) PURE;
   1218     STDMETHOD(PopOutputLinePrefix)(THIS_ ULONG64 Handle) PURE;
   1219     STDMETHOD(GetNumberInputCallbacks)(THIS_ PULONG Count) PURE;
   1220     STDMETHOD(GetNumberOutputCallbacks)(THIS_ PULONG Count) PURE;
   1221     STDMETHOD(GetNumberEventCallbacks)(THIS_ ULONG EventFlags, PULONG Count) PURE;
   1222     STDMETHOD(GetQuitLockString)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
   1223     STDMETHOD(SetQuitLockString)(THIS_ PCSTR String) PURE;
   1224     STDMETHOD(GetQuitLockStringWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
   1225     STDMETHOD(SetQuitLockStringWide)(THIS_ PCWSTR String) PURE;
   1226     STDMETHOD(SetEventContextCallbacks)(THIS_ PDEBUG_EVENT_CONTEXT_CALLBACKS Callbacks) PURE;
   1227     STDMETHOD(SetClientContext)(THIS_ PVOID Context, ULONG ContextSize) PURE;
   1228     STDMETHOD(OpenDumpFileWide2)(THIS_ PCWSTR FileName, ULONG64 FileHandle, ULONG AlternateArch) PURE;
   1229   };
   1230 #ifdef __CRT_UUID_DECL
   1231 __CRT_UUID_DECL(IDebugClient8,0xcec43add,0x6375,0x469e,0x83,0xd5,0x41,0x4e,0x40,0x33,0xc1,0x9a)
   1232 #endif
   1233 
   1234 #undef INTERFACE
   1235 #define INTERFACE IDebugClient9
   1236   DECLARE_INTERFACE_(IDebugClient9, IUnknown) {
   1237     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
   1238     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1239     STDMETHOD_(ULONG, Release)(THIS) PURE;
   1240     STDMETHOD(AttachKernel)(THIS_ ULONG Flags, PCSTR ConnectOptions) PURE;
   1241     STDMETHOD(GetKernelConnectionOptions)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG OptionsSize) PURE;
   1242     STDMETHOD(SetKernelConnectionOptions)(THIS_ PCSTR Options) PURE;
   1243     STDMETHOD(StartProcessServer)(THIS_ ULONG Flags, PCSTR Options, PVOID Reserved) PURE;
   1244     STDMETHOD(ConnectProcessServer)(THIS_ PCSTR RemoteOptions, PULONG64 Server) PURE;
   1245     STDMETHOD(DisconnectProcessServer)(THIS_ ULONG64 Server) PURE;
   1246     STDMETHOD(GetRunningProcessSystemIds)(THIS_ ULONG64 Server, PULONG Ids, ULONG Count, PULONG ActualCount) PURE;
   1247     STDMETHOD(GetRunningProcessSystemIdByExecutableName)(THIS_ ULONG64 Server, PCSTR ExeName, ULONG Flags, PULONG Id) PURE;
   1248     STDMETHOD(GetRunningProcessDescription)(THIS_ ULONG64 Server, ULONG SystemId, ULONG Flags, PSTR ExeName, ULONG ExeNameSize, PULONG ActualExeNameSize, PSTR Description, ULONG DescriptionSize, PULONG ActualDescriptionSize) PURE;
   1249     STDMETHOD(AttachProcess)(THIS_ ULONG64 Server, ULONG ProcessId, ULONG AttachFlags) PURE;
   1250     STDMETHOD(CreateProcess)(THIS_ ULONG64 Server, PSTR CommandLine, ULONG CreateFlags) PURE;
   1251     STDMETHOD(CreateProcessAndAttach)(THIS_ ULONG64 Server, PSTR CommandLine, ULONG CreateFlags, ULONG ProcessId, ULONG AttachFlags) PURE;
   1252     STDMETHOD(GetProcessOptions)(THIS_ PULONG Options) PURE;
   1253     STDMETHOD(AddProcessOptions)(THIS_ ULONG Options) PURE;
   1254     STDMETHOD(RemoveProcessOptions)(THIS_ ULONG Options) PURE;
   1255     STDMETHOD(SetProcessOptions)(THIS_ ULONG Options) PURE;
   1256     STDMETHOD(OpenDumpFile)(THIS_ PCSTR DumpFile) PURE;
   1257     STDMETHOD(WriteDumpFile)(THIS_ PCSTR DumpFile, ULONG Qualifier) PURE;
   1258     STDMETHOD(ConnectSession)(THIS_ ULONG Flags, ULONG HistoryLimit) PURE;
   1259     STDMETHOD(StartServer)(THIS_ PCSTR Options) PURE;
   1260     STDMETHOD(OutputServers)(THIS_ ULONG OutputControl, PCSTR Machine, ULONG Flags) PURE;
   1261     STDMETHOD(TerminateProcesses)(THIS) PURE;
   1262     STDMETHOD(DetachProcesses)(THIS) PURE;
   1263     STDMETHOD(EndSession)(THIS_ ULONG Flags) PURE;
   1264     STDMETHOD(GetExitCode)(THIS_ PULONG Code) PURE;
   1265     STDMETHOD(DispatchCallbacks)(THIS_ ULONG Timeout) PURE;
   1266     STDMETHOD(ExitDispatch)(THIS_ PDEBUG_CLIENT Client) PURE;
   1267     STDMETHOD(CreateClient)(THIS_ PDEBUG_CLIENT *Client) PURE;
   1268     STDMETHOD(GetInputCallbacks)(THIS_ PDEBUG_INPUT_CALLBACKS *Callbacks) PURE;
   1269     STDMETHOD(SetInputCallbacks)(THIS_ PDEBUG_INPUT_CALLBACKS Callbacks) PURE;
   1270     STDMETHOD(GetOutputCallbacks)(THIS_ PDEBUG_OUTPUT_CALLBACKS *Callbacks) PURE;
   1271     STDMETHOD(SetOutputCallbacks)(THIS_ PDEBUG_OUTPUT_CALLBACKS Callbacks) PURE;
   1272     STDMETHOD(GetOutputMask)(THIS_ PULONG Mask) PURE;
   1273     STDMETHOD(SetOutputMask)(THIS_ ULONG Mask) PURE;
   1274     STDMETHOD(GetOtherOutputMask)(THIS_ PDEBUG_CLIENT Client, PULONG Mask) PURE;
   1275     STDMETHOD(SetOtherOutputMask)(THIS_ PDEBUG_CLIENT Client, ULONG Mask) PURE;
   1276     STDMETHOD(GetOutputWidth)(THIS_ PULONG Columns) PURE;
   1277     STDMETHOD(SetOutputWidth)(THIS_ ULONG Columns) PURE;
   1278     STDMETHOD(GetOutputLinePrefix)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG PrefixSize) PURE;
   1279     STDMETHOD(SetOutputLinePrefix)(THIS_ PCSTR Prefix) PURE;
   1280     STDMETHOD(GetIdentity)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG IdentitySize) PURE;
   1281     STDMETHOD(OutputIdentity)(THIS_ ULONG OutputControl, ULONG Flags, PCSTR Format) PURE;
   1282     STDMETHOD(GetEventCallbacks)(THIS_ PDEBUG_EVENT_CALLBACKS *Callbacks) PURE;
   1283     STDMETHOD(SetEventCallbacks)(THIS_ PDEBUG_EVENT_CALLBACKS Callbacks) PURE;
   1284     STDMETHOD(FlushCallbacks)(THIS) PURE;
   1285     STDMETHOD(WriteDumpFile2)(THIS_ PCSTR DumpFile, ULONG Qualifier, ULONG FormatFlags, PCSTR Comment) PURE;
   1286     STDMETHOD(AddDumpInformationFile)(THIS_ PCSTR InfoFile, ULONG Type) PURE;
   1287     STDMETHOD(EndProcessServer)(THIS_ ULONG64 Server) PURE;
   1288     STDMETHOD(WaitForProcessServerEnd)(THIS_ ULONG Timeout) PURE;
   1289     STDMETHOD(IsKernelDebuggerEnabled)(THIS) PURE;
   1290     STDMETHOD(TerminateCurrentProcess)(THIS) PURE;
   1291     STDMETHOD(DetachCurrentProcess)(THIS) PURE;
   1292     STDMETHOD(AbandonCurrentProcess)(THIS) PURE;
   1293     STDMETHOD(GetRunningProcessSystemIdByExecutableNameWide)(THIS_ ULONG64 Server, PCWSTR ExeName, ULONG Flags, PULONG Id) PURE;
   1294     STDMETHOD(GetRunningProcessDescriptionWide)(THIS_ ULONG64 Server, ULONG SystemId, ULONG Flags, PWSTR ExeName, ULONG ExeNameSize, PULONG ActualExeNameSize, PWSTR Description, ULONG DescriptionSize, PULONG ActualDescriptionSize) PURE;
   1295     STDMETHOD(CreateProcessWide)(THIS_ ULONG64 Server, PWSTR CommandLine, ULONG CreateFlags) PURE;
   1296     STDMETHOD(CreateProcessAndAttachWide)(THIS_ ULONG64 Server, PWSTR CommandLine, ULONG CreateFlags, ULONG ProcessId, ULONG AttachFlags) PURE;
   1297     STDMETHOD(OpenDumpFileWide)(THIS_ PCWSTR FileName, ULONG64 FileHandle) PURE;
   1298     STDMETHOD(WriteDumpFileWide)(THIS_ PCWSTR FileName, ULONG64 FileHandle, ULONG Qualifier, ULONG FormatFlags, PCWSTR Comment) PURE;
   1299     STDMETHOD(AddDumpInformationFileWide)(THIS_ PCWSTR FileName, ULONG64 FileHandle, ULONG Type) PURE;
   1300     STDMETHOD(GetNumberDumpFiles)(THIS_ PULONG Number) PURE;
   1301     STDMETHOD(GetDumpFile)(THIS_ ULONG Index, PSTR Buffer, ULONG BufferSize, PULONG NameSize, PULONG64 Handle, PULONG Type) PURE;
   1302     STDMETHOD(GetDumpFileWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG BufferSize, PULONG NameSize, PULONG64 Handle, PULONG Type) PURE;
   1303     STDMETHOD(AttachKernelWide)(THIS_ ULONG Flags, PCWSTR ConnectOptions) PURE;
   1304     STDMETHOD(GetKernelConnectionOptionsWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG OptionsSize) PURE;
   1305     STDMETHOD(SetKernelConnectionOptionsWide)(THIS_ PCWSTR Options) PURE;
   1306     STDMETHOD(StartProcessServerWide)(THIS_ ULONG Flags, PCWSTR Options, PVOID Reserved) PURE;
   1307     STDMETHOD(ConnectProcessServerWide)(THIS_ PCWSTR RemoteOptions, PULONG64 Server) PURE;
   1308     STDMETHOD(StartServerWide)(THIS_ PCWSTR Options) PURE;
   1309     STDMETHOD(OutputServersWide)(THIS_ ULONG OutputControl, PCWSTR Machine, ULONG Flags) PURE;
   1310     STDMETHOD(GetOutputCallbacksWide)(THIS_ PDEBUG_OUTPUT_CALLBACKS_WIDE *Callbacks) PURE;
   1311     STDMETHOD(SetOutputCallbacksWide)(THIS_ PDEBUG_OUTPUT_CALLBACKS_WIDE Callbacks) PURE;
   1312     STDMETHOD(GetOutputLinePrefixWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG PrefixSize) PURE;
   1313     STDMETHOD(SetOutputLinePrefixWide)(THIS_ PCWSTR Prefix) PURE;
   1314     STDMETHOD(GetIdentityWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG IdentitySize) PURE;
   1315     STDMETHOD(OutputIdentityWide)(THIS_ ULONG OutputControl, ULONG Flags, PCWSTR Format) PURE;
   1316     STDMETHOD(GetEventCallbacksWide)(THIS_ PDEBUG_EVENT_CALLBACKS_WIDE *Callbacks) PURE;
   1317     STDMETHOD(SetEventCallbacksWide)(THIS_ PDEBUG_EVENT_CALLBACKS_WIDE Callbacks) PURE;
   1318     STDMETHOD(CreateProcess2)(THIS_ ULONG64 Server, PSTR CommandLine, PVOID OptionsBuffer, ULONG OptionsBufferSize, PCSTR InitialDirectory, PCSTR Environment) PURE;
   1319     STDMETHOD(CreateProcess2Wide)(THIS_ ULONG64 Server, PWSTR CommandLine, PVOID OptionsBuffer, ULONG OptionsBufferSize, PCWSTR InitialDirectory, PCWSTR Environment) PURE;
   1320     STDMETHOD(CreateProcessAndAttach2)(THIS_ ULONG64 Server, PSTR CommandLine, PVOID OptionsBuffer, ULONG OptionsBufferSize, PCSTR InitialDirectory, PCSTR Environment, ULONG ProcessId, ULONG AttachFlags) PURE;
   1321     STDMETHOD(CreateProcessAndAttach2Wide)(THIS_ ULONG64 Server, PWSTR CommandLine, PVOID OptionsBuffer, ULONG OptionsBufferSize, PCWSTR InitialDirectory, PCWSTR Environment, ULONG ProcessId, ULONG AttachFlags) PURE;
   1322     STDMETHOD(PushOutputLinePrefix)(THIS_ PCSTR NewPrefix, PULONG64 Handle) PURE;
   1323     STDMETHOD(PushOutputLinePrefixWide)(THIS_ PCWSTR NewPrefix, PULONG64 Handle) PURE;
   1324     STDMETHOD(PopOutputLinePrefix)(THIS_ ULONG64 Handle) PURE;
   1325     STDMETHOD(GetNumberInputCallbacks)(THIS_ PULONG Count) PURE;
   1326     STDMETHOD(GetNumberOutputCallbacks)(THIS_ PULONG Count) PURE;
   1327     STDMETHOD(GetNumberEventCallbacks)(THIS_ ULONG EventFlags, PULONG Count) PURE;
   1328     STDMETHOD(GetQuitLockString)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
   1329     STDMETHOD(SetQuitLockString)(THIS_ PCSTR String) PURE;
   1330     STDMETHOD(GetQuitLockStringWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
   1331     STDMETHOD(SetQuitLockStringWide)(THIS_ PCWSTR String) PURE;
   1332     STDMETHOD(SetEventContextCallbacks)(THIS_ PDEBUG_EVENT_CONTEXT_CALLBACKS Callbacks) PURE;
   1333     STDMETHOD(SetClientContext)(THIS_ PVOID Context, ULONG ContextSize) PURE;
   1334     STDMETHOD(OpenDumpFileWide2)(THIS_ PCWSTR FileName, ULONG64 FileHandle, ULONG AlternateArch) PURE;
   1335     STDMETHOD(OpenDumpDirectoryWide)(THIS_ PCWSTR DirName, ULONG AlternateArch) PURE;
   1336     STDMETHOD(OpenDumpDirectory)(THIS_ PCSTR DumpDir, ULONG AlternativeArch) PURE;
   1337   };
   1338 #ifdef __CRT_UUID_DECL
   1339 __CRT_UUID_DECL(IDebugClient9,0x2c24cd5b,0x4d9e,0x4df4,0x8a,0x70,0x3d,0x37,0x44,0x0d,0x11,0x9f)
   1340 #endif
   1341 
   1342 #undef INTERFACE
   1343 #define INTERFACE IDebugPlmClient
   1344   DECLARE_INTERFACE_(IDebugPlmClient, IUnknown) {
   1345     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
   1346     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1347     STDMETHOD_(ULONG, Release)(THIS) PURE;
   1348     STDMETHOD(LaunchPlmPackageForDebugWide)(THIS_ ULONG64 Server, ULONG Timeout, PCWSTR PackageFullName, PCWSTR AppName, PCWSTR Arguments, PULONG ProcessId, PULONG ThreadId) PURE;
   1349   };
   1350 #ifdef __CRT_UUID_DECL
   1351 __CRT_UUID_DECL(IDebugPlmClient,0xa02b66c4,0xaea3,0x4234,0xa9,0xf7,0xfe,0x4c,0x38,0x3d,0x4e,0x29)
   1352 #endif
   1353 
   1354 #undef INTERFACE
   1355 #define INTERFACE IDebugPlmClient2
   1356   DECLARE_INTERFACE_(IDebugPlmClient2, IUnknown) {
   1357     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
   1358     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1359     STDMETHOD_(ULONG, Release)(THIS) PURE;
   1360     STDMETHOD(LaunchPlmPackageForDebugWide)(THIS_ ULONG64 Server, ULONG Timeout, PCWSTR PackageFullName, PCWSTR AppName, PCWSTR Arguments, PULONG ProcessId, PULONG ThreadId) PURE;
   1361     STDMETHOD(LaunchPlmBgTaskForDebugWide)(THIS_ ULONG64 Server, ULONG Timeout, PCWSTR PackageFullName, PCWSTR BackgroundTaskId, PULONG ProcessId, PULONG ThreadId) PURE;
   1362   };
   1363 #ifdef __CRT_UUID_DECL
   1364 __CRT_UUID_DECL(IDebugPlmClient2,0x597c980d,0xe7bd,0x4309,0x96,0x2c,0x9d,0x9b,0x69,0xa7,0x37,0x2c)
   1365 #endif
   1366 
   1367 #undef INTERFACE
   1368 #define INTERFACE IDebugPlmClient3
   1369   DECLARE_INTERFACE_(IDebugPlmClient3, IUnknown) {
   1370     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
   1371     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1372     STDMETHOD_(ULONG, Release)(THIS) PURE;
   1373     STDMETHOD(LaunchPlmPackageForDebugWide)(THIS_ ULONG64 Server, ULONG Timeout, PCWSTR PackageFullName, PCWSTR AppName, PCWSTR Arguments, PULONG ProcessId, PULONG ThreadId) PURE;
   1374     STDMETHOD(LaunchPlmBgTaskForDebugWide)(THIS_ ULONG64 Server, ULONG Timeout, PCWSTR PackageFullName, PCWSTR BackgroundTaskId, PULONG ProcessId, PULONG ThreadId) PURE;
   1375     STDMETHOD(QueryPlmPackageWide)(THIS_ ULONG64 Server, PCWSTR PackageFullName, PDEBUG_OUTPUT_STREAM Stream) PURE;
   1376     STDMETHOD(QueryPlmPackageList)(THIS_ ULONG64 Server, PDEBUG_OUTPUT_STREAM Stream) PURE;
   1377     STDMETHOD(EnablePlmPackageDebugWide)(THIS_ ULONG64 Server, PCWSTR PackageFullName) PURE;
   1378     STDMETHOD(DisablePlmPackageDebugWide)(THIS_ ULONG64 Server, PCWSTR PackageFullName) PURE;
   1379     STDMETHOD(SuspendPlmPackageWide)(THIS_ ULONG64 Server, PCWSTR PackageFullName) PURE;
   1380     STDMETHOD(ResumePlmPackageWide)(THIS_ ULONG64 Server, PCWSTR PackageFullName) PURE;
   1381     STDMETHOD(TerminatePlmPackageWide)(THIS_ ULONG64 Server, PCWSTR PackageFullName) PURE;
   1382     STDMETHOD(LaunchAndDebugPlmAppWide)(THIS_ ULONG64 Server, PCWSTR PackageFullName, PCWSTR AppName, PCWSTR Arguments) PURE;
   1383     STDMETHOD(ActivateAndDebugPlmBgTaskWide)(THIS_ ULONG64 Server, PCWSTR PackageFullName, PCWSTR BackgroundTaskId) PURE;
   1384   };
   1385 #ifdef __CRT_UUID_DECL
   1386 __CRT_UUID_DECL(IDebugPlmClient3,0xcdf48669,0x901f,0x4791,0xb8,0x68,0x7d,0x2c,0xb3,0xa2,0xd7,0xfc)
   1387 #endif
   1388 
   1389 #undef INTERFACE
   1390 #define INTERFACE IDebugOutputStream
   1391   DECLARE_INTERFACE_(IDebugOutputStream, IUnknown) {
   1392     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
   1393     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   1394     STDMETHOD_(ULONG, Release)(THIS) PURE;
   1395     STDMETHOD(Write)(THIS_ PCWSTR psz) PURE;
   1396   };
   1397 #ifdef __CRT_UUID_DECL
   1398 __CRT_UUID_DECL(IDebugOutputStream,0x7782d8f2,0x2b85,0x4059,0xab,0x88,0x28,0xce,0xdd,0xca,0x1c,0x80)
   1399 #endif
   1400 
   1401 #define DEBUG_STATUS_NO_CHANGE 0
   1402 #define DEBUG_STATUS_GO 1
   1403 #define DEBUG_STATUS_GO_HANDLED 2
   1404 #define DEBUG_STATUS_GO_NOT_HANDLED 3
   1405 #define DEBUG_STATUS_STEP_OVER 4
   1406 #define DEBUG_STATUS_STEP_INTO 5
   1407 #define DEBUG_STATUS_BREAK 6
   1408 #define DEBUG_STATUS_NO_DEBUGGEE 7
   1409 #define DEBUG_STATUS_STEP_BRANCH 8
   1410 #define DEBUG_STATUS_IGNORE_EVENT 9
   1411 
   1412 #define DEBUG_STATUS_MASK 0xf
   1413 
   1414 #define DEBUG_STATUS_INSIDE_WAIT 0x100000000
   1415 #define DEBUG_OUTCTL_THIS_CLIENT 0x00000000
   1416 #define DEBUG_OUTCTL_ALL_CLIENTS 0x00000001
   1417 #define DEBUG_OUTCTL_ALL_OTHER_CLIENTS 0x00000002
   1418 #define DEBUG_OUTCTL_IGNORE 0x00000003
   1419 #define DEBUG_OUTCTL_LOG_ONLY 0x00000004
   1420 #define DEBUG_OUTCTL_SEND_MASK 0x00000007
   1421 #define DEBUG_OUTCTL_NOT_LOGGED 0x00000008
   1422 #define DEBUG_OUTCTL_OVERRIDE_MASK 0x00000010
   1423 #define DEBUG_OUTCTL_AMBIENT 0xffffffff
   1424 
   1425 #define DEBUG_INTERRUPT_ACTIVE 0
   1426 #define DEBUG_INTERRUPT_PASSIVE 1
   1427 #define DEBUG_INTERRUPT_EXIT 2
   1428 
   1429 #define DEBUG_CURRENT_DEFAULT 0x0000000f
   1430 #define DEBUG_CURRENT_SYMBOL 0x00000001
   1431 #define DEBUG_CURRENT_DISASM 0x00000002
   1432 #define DEBUG_CURRENT_REGISTERS 0x00000004
   1433 #define DEBUG_CURRENT_SOURCE_LINE 0x00000008
   1434 
   1435 #define DEBUG_DISASM_EFFECTIVE_ADDRESS 0x00000001
   1436 #define DEBUG_DISASM_MATCHING_SYMBOLS 0x00000002
   1437 
   1438 #define DEBUG_LEVEL_SOURCE 0
   1439 #define DEBUG_LEVEL_ASSEMBLY 1
   1440 
   1441 #define DEBUG_ENGOPT_IGNORE_DBGHELP_VERSION 0x00000001
   1442 #define DEBUG_ENGOPT_IGNORE_EXTENSION_VERSIONS 0x00000002
   1443 
   1444 #define DEBUG_ENGOPT_ALLOW_NETWORK_PATHS 0x00000004
   1445 #define DEBUG_ENGOPT_DISALLOW_NETWORK_PATHS 0x00000008
   1446 #define DEBUG_ENGOPT_NETWORK_PATHS (0x00000004 | 0x00000008)
   1447 #define DEBUG_ENGOPT_IGNORE_LOADER_EXCEPTIONS 0x00000010
   1448 #define DEBUG_ENGOPT_INITIAL_BREAK 0x00000020
   1449 #define DEBUG_ENGOPT_INITIAL_MODULE_BREAK 0x00000040
   1450 #define DEBUG_ENGOPT_FINAL_BREAK 0x00000080
   1451 #define DEBUG_ENGOPT_NO_EXECUTE_REPEAT 0x00000100
   1452 #define DEBUG_ENGOPT_FAIL_INCOMPLETE_INFORMATION 0x00000200
   1453 #define DEBUG_ENGOPT_ALLOW_READ_ONLY_BREAKPOINTS 0x00000400
   1454 #define DEBUG_ENGOPT_SYNCHRONIZE_BREAKPOINTS 0x00000800
   1455 #define DEBUG_ENGOPT_DISALLOW_SHELL_COMMANDS 0x00001000
   1456 #define DEBUG_ENGOPT_ALL 0x00001FFF
   1457 
   1458 #define DEBUG_ANY_ID 0xffffffff
   1459 
   1460   typedef struct _DEBUG_STACK_FRAME {
   1461     ULONG64 InstructionOffset;
   1462     ULONG64 ReturnOffset;
   1463     ULONG64 FrameOffset;
   1464     ULONG64 StackOffset;
   1465     ULONG64 FuncTableEntry;
   1466     ULONG64 Params[4];
   1467     ULONG64 Reserved[6];
   1468     WINBOOL Virtual;
   1469     ULONG FrameNumber;
   1470   } DEBUG_STACK_FRAME,*PDEBUG_STACK_FRAME;
   1471 
   1472 #define DBG_FRAME_DEFAULT 0
   1473 #define DBG_FRAME_IGNORE_INLINE 0xffffffff
   1474 
   1475   typedef struct _DEBUG_STACK_FRAME_EX {
   1476     ULONG64 InstructionOffset;
   1477     ULONG64 ReturnOffset;
   1478     ULONG64 FrameOffset;
   1479     ULONG64 StackOffset;
   1480     ULONG64 FuncTableEntry;
   1481     ULONG64 Params[4];
   1482     ULONG64 Reserved[6];
   1483     WINBOOL Virtual;
   1484     ULONG FrameNumber;
   1485     ULONG InlineFrameContext;
   1486     ULONG Reserved1;
   1487   } DEBUG_STACK_FRAME_EX,*PDEBUG_STACK_FRAME_EX;
   1488 
   1489 #define DEBUG_STACK_ARGUMENTS 0x00000001
   1490 #define DEBUG_STACK_FUNCTION_INFO 0x00000002
   1491 #define DEBUG_STACK_SOURCE_LINE 0x00000004
   1492 #define DEBUG_STACK_FRAME_ADDRESSES 0x00000008
   1493 #define DEBUG_STACK_COLUMN_NAMES 0x00000010
   1494 #define DEBUG_STACK_NONVOLATILE_REGISTERS 0x00000020
   1495 #define DEBUG_STACK_FRAME_NUMBERS 0x00000040
   1496 #define DEBUG_STACK_PARAMETERS 0x00000080
   1497 #define DEBUG_STACK_FRAME_ADDRESSES_RA_ONLY 0x00000100
   1498 #define DEBUG_STACK_FRAME_MEMORY_USAGE 0x00000200
   1499 
   1500 #define DEBUG_CLASS_UNINITIALIZED 0
   1501 #define DEBUG_CLASS_KERNEL 1
   1502 #define DEBUG_CLASS_USER_WINDOWS 2
   1503 
   1504 #define DEBUG_DUMP_SMALL 1024
   1505 #define DEBUG_DUMP_DEFAULT 1025
   1506 #define DEBUG_DUMP_FULL 1026
   1507 
   1508 #define DEBUG_KERNEL_CONNECTION 0
   1509 #define DEBUG_KERNEL_LOCAL 1
   1510 #define DEBUG_KERNEL_EXDI_DRIVER 2
   1511 #define DEBUG_KERNEL_SMALL_DUMP DEBUG_DUMP_SMALL
   1512 #define DEBUG_KERNEL_DUMP DEBUG_DUMP_DEFAULT
   1513 #define DEBUG_KERNEL_FULL_DUMP DEBUG_DUMP_FULL
   1514 
   1515 #define DEBUG_USER_WINDOWS_PROCESS 0
   1516 #define DEBUG_USER_WINDOWS_PROCESS_SERVER 1
   1517 #define DEBUG_USER_WINDOWS_SMALL_DUMP DEBUG_DUMP_SMALL
   1518 #define DEBUG_USER_WINDOWS_DUMP DEBUG_DUMP_DEFAULT
   1519 
   1520 #define DEBUG_EXTENSION_AT_ENGINE 0x00000000
   1521 
   1522 #define DEBUG_EXECUTE_DEFAULT 0x00000000
   1523 #define DEBUG_EXECUTE_ECHO 0x00000001
   1524 #define DEBUG_EXECUTE_NOT_LOGGED 0x00000002
   1525 #define DEBUG_EXECUTE_NO_REPEAT 0x00000004
   1526 
   1527 #define DEBUG_FILTER_CREATE_THREAD 0x00000000
   1528 #define DEBUG_FILTER_EXIT_THREAD 0x00000001
   1529 #define DEBUG_FILTER_CREATE_PROCESS 0x00000002
   1530 #define DEBUG_FILTER_EXIT_PROCESS 0x00000003
   1531 #define DEBUG_FILTER_LOAD_MODULE 0x00000004
   1532 #define DEBUG_FILTER_UNLOAD_MODULE 0x00000005
   1533 #define DEBUG_FILTER_SYSTEM_ERROR 0x00000006
   1534 #define DEBUG_FILTER_INITIAL_BREAKPOINT 0x00000007
   1535 #define DEBUG_FILTER_INITIAL_MODULE_LOAD 0x00000008
   1536 #define DEBUG_FILTER_DEBUGGEE_OUTPUT 0x00000009
   1537 
   1538 #define DEBUG_FILTER_BREAK 0x00000000
   1539 
   1540 #define DEBUG_FILTER_SECOND_CHANCE_BREAK 0x00000001
   1541 #define DEBUG_FILTER_OUTPUT 0x00000002
   1542 #define DEBUG_FILTER_IGNORE 0x00000003
   1543 #define DEBUG_FILTER_REMOVE 0x00000004
   1544 
   1545 #define DEBUG_FILTER_GO_HANDLED 0x00000000
   1546 #define DEBUG_FILTER_GO_NOT_HANDLED 0x00000001
   1547 
   1548   typedef struct _DEBUG_SPECIFIC_FILTER_PARAMETERS {
   1549     ULONG ExecutionOption;
   1550     ULONG ContinueOption;
   1551     ULONG TextSize;
   1552     ULONG CommandSize;
   1553     ULONG ArgumentSize;
   1554   } DEBUG_SPECIFIC_FILTER_PARAMETERS,*PDEBUG_SPECIFIC_FILTER_PARAMETERS;
   1555 
   1556   typedef struct _DEBUG_EXCEPTION_FILTER_PARAMETERS {
   1557     ULONG ExecutionOption;
   1558     ULONG ContinueOption;
   1559     ULONG TextSize;
   1560     ULONG CommandSize;
   1561     ULONG SecondCommandSize;
   1562     ULONG ExceptionCode;
   1563   } DEBUG_EXCEPTION_FILTER_PARAMETERS,*PDEBUG_EXCEPTION_FILTER_PARAMETERS;
   1564 
   1565 #define DEBUG_WAIT_DEFAULT 0x00000000
   1566 
   1567   typedef struct _DEBUG_LAST_EVENT_INFO_BREAKPOINT {
   1568     ULONG Id;
   1569   } DEBUG_LAST_EVENT_INFO_BREAKPOINT,*PDEBUG_LAST_EVENT_INFO_BREAKPOINT;
   1570 
   1571   typedef struct _DEBUG_LAST_EVENT_INFO_EXCEPTION {
   1572     EXCEPTION_RECORD64 ExceptionRecord;
   1573     ULONG FirstChance;
   1574   } DEBUG_LAST_EVENT_INFO_EXCEPTION,*PDEBUG_LAST_EVENT_INFO_EXCEPTION;
   1575 
   1576   typedef struct _DEBUG_LAST_EVENT_INFO_EXIT_THREAD {
   1577     ULONG ExitCode;
   1578   } DEBUG_LAST_EVENT_INFO_EXIT_THREAD,*PDEBUG_LAST_EVENT_INFO_EXIT_THREAD;
   1579 
   1580   typedef struct _DEBUG_LAST_EVENT_INFO_EXIT_PROCESS {
   1581     ULONG ExitCode;
   1582   } DEBUG_LAST_EVENT_INFO_EXIT_PROCESS,*PDEBUG_LAST_EVENT_INFO_EXIT_PROCESS;
   1583 
   1584   typedef struct _DEBUG_LAST_EVENT_INFO_LOAD_MODULE {
   1585     ULONG64 Base;
   1586   } DEBUG_LAST_EVENT_INFO_LOAD_MODULE,*PDEBUG_LAST_EVENT_INFO_LOAD_MODULE;
   1587 
   1588   typedef struct _DEBUG_LAST_EVENT_INFO_UNLOAD_MODULE {
   1589     ULONG64 Base;
   1590   } DEBUG_LAST_EVENT_INFO_UNLOAD_MODULE,*PDEBUG_LAST_EVENT_INFO_UNLOAD_MODULE;
   1591 
   1592   typedef struct _DEBUG_LAST_EVENT_INFO_SYSTEM_ERROR {
   1593     ULONG Error;
   1594     ULONG Level;
   1595   } DEBUG_LAST_EVENT_INFO_SYSTEM_ERROR,*PDEBUG_LAST_EVENT_INFO_SYSTEM_ERROR;
   1596 
   1597 #define DEBUG_VALUE_INVALID 0
   1598 #define DEBUG_VALUE_INT8 1
   1599 #define DEBUG_VALUE_INT16 2
   1600 #define DEBUG_VALUE_INT32 3
   1601 #define DEBUG_VALUE_INT64 4
   1602 #define DEBUG_VALUE_FLOAT32 5
   1603 #define DEBUG_VALUE_FLOAT64 6
   1604 #define DEBUG_VALUE_FLOAT80 7
   1605 #define DEBUG_VALUE_FLOAT82 8
   1606 #define DEBUG_VALUE_FLOAT128 9
   1607 #define DEBUG_VALUE_VECTOR64 10
   1608 #define DEBUG_VALUE_VECTOR128 11
   1609 
   1610 #define DEBUG_VALUE_TYPES 12
   1611 
   1612   typedef struct _DEBUG_VALUE {
   1613     __C89_NAMELESS union {
   1614       UCHAR I8;
   1615       USHORT I16;
   1616       ULONG I32;
   1617       __C89_NAMELESS struct {
   1618 	ULONG64 I64;
   1619 	WINBOOL Nat;
   1620       };
   1621       float F32;
   1622       double F64;
   1623       UCHAR F80Bytes[10];
   1624       UCHAR F82Bytes[11];
   1625       UCHAR F128Bytes[16];
   1626       UCHAR VI8[16];
   1627       USHORT VI16[8];
   1628       ULONG VI32[4];
   1629       ULONG64 VI64[2];
   1630       float VF32[4];
   1631       double VF64[2];
   1632       struct {
   1633 	ULONG LowPart;
   1634 	ULONG HighPart;
   1635       } I64Parts32;
   1636       struct {
   1637 	ULONG64 LowPart;
   1638 	LONG64 HighPart;
   1639       } F128Parts64;
   1640       UCHAR RawBytes[24];
   1641     };
   1642     ULONG TailOfRawBytes;
   1643     ULONG Type;
   1644   } DEBUG_VALUE,*PDEBUG_VALUE;
   1645 
   1646 #undef INTERFACE
   1647 #define INTERFACE IDebugControl
   1648   DECLARE_INTERFACE_(IDebugControl,IUnknown) {
   1649     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE;
   1650     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   1651     STDMETHOD_(ULONG,Release)(THIS) PURE;
   1652     STDMETHOD(GetInterrupt)(THIS) PURE;
   1653     STDMETHOD(SetInterrupt)(THIS_ ULONG Flags) PURE;
   1654     STDMETHOD(GetInterruptTimeout)(THIS_ PULONG Seconds) PURE;
   1655     STDMETHOD(SetInterruptTimeout)(THIS_ ULONG Seconds) PURE;
   1656     STDMETHOD(GetLogFile)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG FileSize,PBOOL Append) PURE;
   1657     STDMETHOD(OpenLogFile)(THIS_ PCSTR File,WINBOOL Append) PURE;
   1658     STDMETHOD(CloseLogFile)(THIS) PURE;
   1659     STDMETHOD(GetLogMask)(THIS_ PULONG Mask) PURE;
   1660     STDMETHOD(SetLogMask)(THIS_ ULONG Mask) PURE;
   1661     STDMETHOD(Input)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG InputSize) PURE;
   1662     STDMETHOD(ReturnInput)(THIS_ PCSTR Buffer) PURE;
   1663     STDMETHODV(Output)(THIS_ ULONG Mask,PCSTR Format,...) PURE;
   1664     STDMETHOD(OutputVaList)(THIS_ ULONG Mask,PCSTR Format,va_list Args) PURE;
   1665     STDMETHODV(ControlledOutput)(THIS_ ULONG OutputControl,ULONG Mask,PCSTR Format,...) PURE;
   1666     STDMETHOD(ControlledOutputVaList)(THIS_ ULONG OutputControl,ULONG Mask,PCSTR Format,va_list Args) PURE;
   1667     STDMETHODV(OutputPrompt)(THIS_ ULONG OutputControl,PCSTR Format,...) PURE;
   1668     STDMETHOD(OutputPromptVaList)(THIS_ ULONG OutputControl,PCSTR Format,va_list Args) PURE;
   1669     STDMETHOD(GetPromptText)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG TextSize) PURE;
   1670     STDMETHOD(OutputCurrentState)(THIS_ ULONG OutputControl,ULONG Flags) PURE;
   1671     STDMETHOD(OutputVersionInformation)(THIS_ ULONG OutputControl) PURE;
   1672     STDMETHOD(GetNotifyEventHandle)(THIS_ PULONG64 Handle) PURE;
   1673     STDMETHOD(SetNotifyEventHandle)(THIS_ ULONG64 Handle) PURE;
   1674     STDMETHOD(Assemble)(THIS_ ULONG64 Offset,PCSTR Instr,PULONG64 EndOffset) PURE;
   1675     STDMETHOD(Disassemble)(THIS_ ULONG64 Offset,ULONG Flags,PSTR Buffer,ULONG BufferSize,PULONG DisassemblySize,PULONG64 EndOffset) PURE;
   1676     STDMETHOD(GetDisassembleEffectiveOffset)(THIS_ PULONG64 Offset) PURE;
   1677     STDMETHOD(OutputDisassembly)(THIS_ ULONG OutputControl,ULONG64 Offset,ULONG Flags,PULONG64 EndOffset) PURE;
   1678     STDMETHOD(OutputDisassemblyLines)(THIS_ ULONG OutputControl,ULONG PreviousLines,ULONG TotalLines,ULONG64 Offset,ULONG Flags,PULONG OffsetLine,PULONG64 StartOffset,PULONG64 EndOffset,PULONG64 LineOffsets) PURE;
   1679     STDMETHOD(GetNearInstruction)(THIS_ ULONG64 Offset,LONG Delta,PULONG64 NearOffset) PURE;
   1680     STDMETHOD(GetStackTrace)(THIS_ ULONG64 FrameOffset,ULONG64 StackOffset,ULONG64 InstructionOffset,PDEBUG_STACK_FRAME Frames,ULONG FramesSize,PULONG FramesFilled) PURE;
   1681     STDMETHOD(GetReturnOffset)(THIS_ PULONG64 Offset) PURE;
   1682     STDMETHOD(OutputStackTrace)(THIS_ ULONG OutputControl,PDEBUG_STACK_FRAME Frames,ULONG FramesSize,ULONG Flags) PURE;
   1683     STDMETHOD(GetDebuggeeType)(THIS_ PULONG Class,PULONG Qualifier) PURE;
   1684     STDMETHOD(GetActualProcessorType)(THIS_ PULONG Type) PURE;
   1685     STDMETHOD(GetExecutingProcessorType)(THIS_ PULONG Type) PURE;
   1686     STDMETHOD(GetNumberPossibleExecutingProcessorTypes)(THIS_ PULONG Number) PURE;
   1687     STDMETHOD(GetPossibleExecutingProcessorTypes)(THIS_ ULONG Start,ULONG Count,PULONG Types) PURE;
   1688     STDMETHOD(GetNumberProcessors)(THIS_ PULONG Number) PURE;
   1689     STDMETHOD(GetSystemVersion)(THIS_ PULONG PlatformId,PULONG Major,PULONG Minor,PSTR ServicePackString,ULONG ServicePackStringSize,PULONG ServicePackStringUsed,PULONG ServicePackNumber,PSTR BuildString,ULONG BuildStringSize,PULONG BuildStringUsed) PURE;
   1690     STDMETHOD(GetPageSize)(THIS_ PULONG Size) PURE;
   1691     STDMETHOD(IsPointer64Bit)(THIS) PURE;
   1692     STDMETHOD(ReadBugCheckData)(THIS_ PULONG Code,PULONG64 Arg1,PULONG64 Arg2,PULONG64 Arg3,PULONG64 Arg4) PURE;
   1693     STDMETHOD(GetNumberSupportedProcessorTypes)(THIS_ PULONG Number) PURE;
   1694     STDMETHOD(GetSupportedProcessorTypes)(THIS_ ULONG Start,ULONG Count,PULONG Types) PURE;
   1695     STDMETHOD(GetProcessorTypeNames)(THIS_ ULONG Type,PSTR FullNameBuffer,ULONG FullNameBufferSize,PULONG FullNameSize,PSTR AbbrevNameBuffer,ULONG AbbrevNameBufferSize,PULONG AbbrevNameSize) PURE;
   1696     STDMETHOD(GetEffectiveProcessorType)(THIS_ PULONG Type) PURE;
   1697     STDMETHOD(SetEffectiveProcessorType)(THIS_ ULONG Type) PURE;
   1698     STDMETHOD(GetExecutionStatus)(THIS_ PULONG Status) PURE;
   1699     STDMETHOD(SetExecutionStatus)(THIS_ ULONG Status) PURE;
   1700     STDMETHOD(GetCodeLevel)(THIS_ PULONG Level) PURE;
   1701     STDMETHOD(SetCodeLevel)(THIS_ ULONG Level) PURE;
   1702     STDMETHOD(GetEngineOptions)(THIS_ PULONG Options) PURE;
   1703     STDMETHOD(AddEngineOptions)(THIS_ ULONG Options) PURE;
   1704     STDMETHOD(RemoveEngineOptions)(THIS_ ULONG Options) PURE;
   1705     STDMETHOD(SetEngineOptions)(THIS_ ULONG Options) PURE;
   1706     STDMETHOD(GetSystemErrorControl)(THIS_ PULONG OutputLevel,PULONG BreakLevel) PURE;
   1707     STDMETHOD(SetSystemErrorControl)(THIS_ ULONG OutputLevel,ULONG BreakLevel) PURE;
   1708     STDMETHOD(GetTextMacro)(THIS_ ULONG Slot,PSTR Buffer,ULONG BufferSize,PULONG MacroSize) PURE;
   1709     STDMETHOD(SetTextMacro)(THIS_ ULONG Slot,PCSTR Macro) PURE;
   1710     STDMETHOD(GetRadix)(THIS_ PULONG Radix) PURE;
   1711     STDMETHOD(SetRadix)(THIS_ ULONG Radix) PURE;
   1712     STDMETHOD(Evaluate)(THIS_ PCSTR Expression,ULONG DesiredType,PDEBUG_VALUE Value,PULONG RemainderIndex) PURE;
   1713     STDMETHOD(CoerceValue)(THIS_ PDEBUG_VALUE In,ULONG OutType,PDEBUG_VALUE Out) PURE;
   1714     STDMETHOD(CoerceValues)(THIS_ ULONG Count,PDEBUG_VALUE In,PULONG OutTypes,PDEBUG_VALUE Out) PURE;
   1715     STDMETHOD(Execute)(THIS_ ULONG OutputControl,PCSTR Command,ULONG Flags) PURE;
   1716     STDMETHOD(ExecuteCommandFile)(THIS_ ULONG OutputControl,PCSTR CommandFile,ULONG Flags) PURE;
   1717     STDMETHOD(GetNumberBreakpoints)(THIS_ PULONG Number) PURE;
   1718     STDMETHOD(GetBreakpointByIndex)(THIS_ ULONG Index,PDEBUG_BREAKPOINT *Bp) PURE;
   1719     STDMETHOD(GetBreakpointById)(THIS_ ULONG Id,PDEBUG_BREAKPOINT *Bp) PURE;
   1720     STDMETHOD(GetBreakpointParameters)(THIS_ ULONG Count,PULONG Ids,ULONG Start,PDEBUG_BREAKPOINT_PARAMETERS Params) PURE;
   1721     STDMETHOD(AddBreakpoint)(THIS_ ULONG Type,ULONG DesiredId,PDEBUG_BREAKPOINT *Bp) PURE;
   1722     STDMETHOD(RemoveBreakpoint)(THIS_ PDEBUG_BREAKPOINT Bp) PURE;
   1723     STDMETHOD(AddExtension)(THIS_ PCSTR Path,ULONG Flags,PULONG64 Handle) PURE;
   1724     STDMETHOD(RemoveExtension)(THIS_ ULONG64 Handle) PURE;
   1725     STDMETHOD(GetExtensionByPath)(THIS_ PCSTR Path,PULONG64 Handle) PURE;
   1726     STDMETHOD(CallExtension)(THIS_ ULONG64 Handle,PCSTR Function,PCSTR Arguments) PURE;
   1727     STDMETHOD(GetExtensionFunction)(THIS_ ULONG64 Handle,PCSTR FuncName,FARPROC *Function) PURE;
   1728     STDMETHOD(GetWindbgExtensionApis32)(THIS_ PWINDBG_EXTENSION_APIS32 Api) PURE;
   1729     STDMETHOD(GetWindbgExtensionApis64)(THIS_ PWINDBG_EXTENSION_APIS64 Api) PURE;
   1730     STDMETHOD(GetNumberEventFilters)(THIS_ PULONG SpecificEvents,PULONG SpecificExceptions,PULONG ArbitraryExceptions) PURE;
   1731     STDMETHOD(GetEventFilterText)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG TextSize) PURE;
   1732     STDMETHOD(GetEventFilterCommand)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG CommandSize) PURE;
   1733     STDMETHOD(SetEventFilterCommand)(THIS_ ULONG Index,PCSTR Command) PURE;
   1734     STDMETHOD(GetSpecificFilterParameters)(THIS_ ULONG Start,ULONG Count,PDEBUG_SPECIFIC_FILTER_PARAMETERS Params) PURE;
   1735     STDMETHOD(SetSpecificFilterParameters)(THIS_ ULONG Start,ULONG Count,PDEBUG_SPECIFIC_FILTER_PARAMETERS Params) PURE;
   1736     STDMETHOD(GetSpecificFilterArgument)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG ArgumentSize) PURE;
   1737     STDMETHOD(SetSpecificFilterArgument)(THIS_ ULONG Index,PCSTR Argument) PURE;
   1738     STDMETHOD(GetExceptionFilterParameters)(THIS_ ULONG Count,PULONG Codes,ULONG Start,PDEBUG_EXCEPTION_FILTER_PARAMETERS Params) PURE;
   1739     STDMETHOD(SetExceptionFilterParameters)(THIS_ ULONG Count,PDEBUG_EXCEPTION_FILTER_PARAMETERS Params) PURE;
   1740     STDMETHOD(GetExceptionFilterSecondCommand)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG CommandSize) PURE;
   1741     STDMETHOD(SetExceptionFilterSecondCommand)(THIS_ ULONG Index,PCSTR Command) PURE;
   1742     STDMETHOD(WaitForEvent)(THIS_ ULONG Flags,ULONG Timeout) PURE;
   1743     STDMETHOD(GetLastEventInformation)(THIS_ PULONG Type,PULONG ProcessId,PULONG ThreadId,PVOID ExtraInformation,ULONG ExtraInformationSize,PULONG ExtraInformationUsed,PSTR Description,ULONG DescriptionSize,PULONG DescriptionUsed) PURE;
   1744   };
   1745 #ifdef __CRT_UUID_DECL
   1746 __CRT_UUID_DECL(IDebugControl,0x5182e668,0x105e,0x416e,0xad,0x92,0x24,0xef,0x80,0x04,0x24,0xba)
   1747 #endif
   1748 
   1749 #define DEBUG_OUT_TEXT_REPL_DEFAULT 0x00000000
   1750 
   1751 #undef INTERFACE
   1752 #define INTERFACE IDebugControl2
   1753   DECLARE_INTERFACE_(IDebugControl2,IUnknown) {
   1754     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE;
   1755     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   1756     STDMETHOD_(ULONG,Release)(THIS) PURE;
   1757     STDMETHOD(GetInterrupt)(THIS) PURE;
   1758     STDMETHOD(SetInterrupt)(THIS_ ULONG Flags) PURE;
   1759     STDMETHOD(GetInterruptTimeout)(THIS_ PULONG Seconds) PURE;
   1760     STDMETHOD(SetInterruptTimeout)(THIS_ ULONG Seconds) PURE;
   1761     STDMETHOD(GetLogFile)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG FileSize,PBOOL Append) PURE;
   1762     STDMETHOD(OpenLogFile)(THIS_ PCSTR File,WINBOOL Append) PURE;
   1763     STDMETHOD(CloseLogFile)(THIS) PURE;
   1764     STDMETHOD(GetLogMask)(THIS_ PULONG Mask) PURE;
   1765     STDMETHOD(SetLogMask)(THIS_ ULONG Mask) PURE;
   1766     STDMETHOD(Input)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG InputSize) PURE;
   1767     STDMETHOD(ReturnInput)(THIS_ PCSTR Buffer) PURE;
   1768     STDMETHODV(Output)(THIS_ ULONG Mask,PCSTR Format,...) PURE;
   1769     STDMETHOD(OutputVaList)(THIS_ ULONG Mask,PCSTR Format,va_list Args) PURE;
   1770     STDMETHODV(ControlledOutput)(THIS_ ULONG OutputControl,ULONG Mask,PCSTR Format,...) PURE;
   1771     STDMETHOD(ControlledOutputVaList)(THIS_ ULONG OutputControl,ULONG Mask,PCSTR Format,va_list Args) PURE;
   1772     STDMETHODV(OutputPrompt)(THIS_ ULONG OutputControl,PCSTR Format,...) PURE;
   1773     STDMETHOD(OutputPromptVaList)(THIS_ ULONG OutputControl,PCSTR Format,va_list Args) PURE;
   1774     STDMETHOD(GetPromptText)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG TextSize) PURE;
   1775     STDMETHOD(OutputCurrentState)(THIS_ ULONG OutputControl,ULONG Flags) PURE;
   1776     STDMETHOD(OutputVersionInformation)(THIS_ ULONG OutputControl) PURE;
   1777     STDMETHOD(GetNotifyEventHandle)(THIS_ PULONG64 Handle) PURE;
   1778     STDMETHOD(SetNotifyEventHandle)(THIS_ ULONG64 Handle) PURE;
   1779     STDMETHOD(Assemble)(THIS_ ULONG64 Offset,PCSTR Instr,PULONG64 EndOffset) PURE;
   1780     STDMETHOD(Disassemble)(THIS_ ULONG64 Offset,ULONG Flags,PSTR Buffer,ULONG BufferSize,PULONG DisassemblySize,PULONG64 EndOffset) PURE;
   1781     STDMETHOD(GetDisassembleEffectiveOffset)(THIS_ PULONG64 Offset) PURE;
   1782     STDMETHOD(OutputDisassembly)(THIS_ ULONG OutputControl,ULONG64 Offset,ULONG Flags,PULONG64 EndOffset) PURE;
   1783     STDMETHOD(OutputDisassemblyLines)(THIS_ ULONG OutputControl,ULONG PreviousLines,ULONG TotalLines,ULONG64 Offset,ULONG Flags,PULONG OffsetLine,PULONG64 StartOffset,PULONG64 EndOffset,PULONG64 LineOffsets) PURE;
   1784     STDMETHOD(GetNearInstruction)(THIS_ ULONG64 Offset,LONG Delta,PULONG64 NearOffset) PURE;
   1785     STDMETHOD(GetStackTrace)(THIS_ ULONG64 FrameOffset,ULONG64 StackOffset,ULONG64 InstructionOffset,PDEBUG_STACK_FRAME Frames,ULONG FramesSize,PULONG FramesFilled) PURE;
   1786     STDMETHOD(GetReturnOffset)(THIS_ PULONG64 Offset) PURE;
   1787     STDMETHOD(OutputStackTrace)(THIS_ ULONG OutputControl,PDEBUG_STACK_FRAME Frames,ULONG FramesSize,ULONG Flags) PURE;
   1788     STDMETHOD(GetDebuggeeType)(THIS_ PULONG Class,PULONG Qualifier) PURE;
   1789     STDMETHOD(GetActualProcessorType)(THIS_ PULONG Type) PURE;
   1790     STDMETHOD(GetExecutingProcessorType)(THIS_ PULONG Type) PURE;
   1791     STDMETHOD(GetNumberPossibleExecutingProcessorTypes)(THIS_ PULONG Number) PURE;
   1792     STDMETHOD(GetPossibleExecutingProcessorTypes)(THIS_ ULONG Start,ULONG Count,PULONG Types) PURE;
   1793     STDMETHOD(GetNumberProcessors)(THIS_ PULONG Number) PURE;
   1794     STDMETHOD(GetSystemVersion)(THIS_ PULONG PlatformId,PULONG Major,PULONG Minor,PSTR ServicePackString,ULONG ServicePackStringSize,PULONG ServicePackStringUsed,PULONG ServicePackNumber,PSTR BuildString,ULONG BuildStringSize,PULONG BuildStringUsed) PURE;
   1795     STDMETHOD(GetPageSize)(THIS_ PULONG Size) PURE;
   1796     STDMETHOD(IsPointer64Bit)(THIS) PURE;
   1797     STDMETHOD(ReadBugCheckData)(THIS_ PULONG Code,PULONG64 Arg1,PULONG64 Arg2,PULONG64 Arg3,PULONG64 Arg4) PURE;
   1798     STDMETHOD(GetNumberSupportedProcessorTypes)(THIS_ PULONG Number) PURE;
   1799     STDMETHOD(GetSupportedProcessorTypes)(THIS_ ULONG Start,ULONG Count,PULONG Types) PURE;
   1800     STDMETHOD(GetProcessorTypeNames)(THIS_ ULONG Type,PSTR FullNameBuffer,ULONG FullNameBufferSize,PULONG FullNameSize,PSTR AbbrevNameBuffer,ULONG AbbrevNameBufferSize,PULONG AbbrevNameSize) PURE;
   1801     STDMETHOD(GetEffectiveProcessorType)(THIS_ PULONG Type) PURE;
   1802     STDMETHOD(SetEffectiveProcessorType)(THIS_ ULONG Type) PURE;
   1803     STDMETHOD(GetExecutionStatus)(THIS_ PULONG Status) PURE;
   1804     STDMETHOD(SetExecutionStatus)(THIS_ ULONG Status) PURE;
   1805     STDMETHOD(GetCodeLevel)(THIS_ PULONG Level) PURE;
   1806     STDMETHOD(SetCodeLevel)(THIS_ ULONG Level) PURE;
   1807     STDMETHOD(GetEngineOptions)(THIS_ PULONG Options) PURE;
   1808     STDMETHOD(AddEngineOptions)(THIS_ ULONG Options) PURE;
   1809     STDMETHOD(RemoveEngineOptions)(THIS_ ULONG Options) PURE;
   1810     STDMETHOD(SetEngineOptions)(THIS_ ULONG Options) PURE;
   1811     STDMETHOD(GetSystemErrorControl)(THIS_ PULONG OutputLevel,PULONG BreakLevel) PURE;
   1812     STDMETHOD(SetSystemErrorControl)(THIS_ ULONG OutputLevel,ULONG BreakLevel) PURE;
   1813     STDMETHOD(GetTextMacro)(THIS_ ULONG Slot,PSTR Buffer,ULONG BufferSize,PULONG MacroSize) PURE;
   1814     STDMETHOD(SetTextMacro)(THIS_ ULONG Slot,PCSTR Macro) PURE;
   1815     STDMETHOD(GetRadix)(THIS_ PULONG Radix) PURE;
   1816     STDMETHOD(SetRadix)(THIS_ ULONG Radix) PURE;
   1817     STDMETHOD(Evaluate)(THIS_ PCSTR Expression,ULONG DesiredType,PDEBUG_VALUE Value,PULONG RemainderIndex) PURE;
   1818     STDMETHOD(CoerceValue)(THIS_ PDEBUG_VALUE In,ULONG OutType,PDEBUG_VALUE Out) PURE;
   1819     STDMETHOD(CoerceValues)(THIS_ ULONG Count,PDEBUG_VALUE In,PULONG OutTypes,PDEBUG_VALUE Out) PURE;
   1820     STDMETHOD(Execute)(THIS_ ULONG OutputControl,PCSTR Command,ULONG Flags) PURE;
   1821     STDMETHOD(ExecuteCommandFile)(THIS_ ULONG OutputControl,PCSTR CommandFile,ULONG Flags) PURE;
   1822     STDMETHOD(GetNumberBreakpoints)(THIS_ PULONG Number) PURE;
   1823     STDMETHOD(GetBreakpointByIndex)(THIS_ ULONG Index,PDEBUG_BREAKPOINT *Bp) PURE;
   1824     STDMETHOD(GetBreakpointById)(THIS_ ULONG Id,PDEBUG_BREAKPOINT *Bp) PURE;
   1825     STDMETHOD(GetBreakpointParameters)(THIS_ ULONG Count,PULONG Ids,ULONG Start,PDEBUG_BREAKPOINT_PARAMETERS Params) PURE;
   1826     STDMETHOD(AddBreakpoint)(THIS_ ULONG Type,ULONG DesiredId,PDEBUG_BREAKPOINT *Bp) PURE;
   1827     STDMETHOD(RemoveBreakpoint)(THIS_ PDEBUG_BREAKPOINT Bp) PURE;
   1828     STDMETHOD(AddExtension)(THIS_ PCSTR Path,ULONG Flags,PULONG64 Handle) PURE;
   1829     STDMETHOD(RemoveExtension)(THIS_ ULONG64 Handle) PURE;
   1830     STDMETHOD(GetExtensionByPath)(THIS_ PCSTR Path,PULONG64 Handle) PURE;
   1831     STDMETHOD(CallExtension)(THIS_ ULONG64 Handle,PCSTR Function,PCSTR Arguments) PURE;
   1832     STDMETHOD(GetExtensionFunction)(THIS_ ULONG64 Handle,PCSTR FuncName,FARPROC *Function) PURE;
   1833     STDMETHOD(GetWindbgExtensionApis32)(THIS_ PWINDBG_EXTENSION_APIS32 Api) PURE;
   1834     STDMETHOD(GetWindbgExtensionApis64)(THIS_ PWINDBG_EXTENSION_APIS64 Api) PURE;
   1835     STDMETHOD(GetNumberEventFilters)(THIS_ PULONG SpecificEvents,PULONG SpecificExceptions,PULONG ArbitraryExceptions) PURE;
   1836     STDMETHOD(GetEventFilterText)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG TextSize) PURE;
   1837     STDMETHOD(GetEventFilterCommand)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG CommandSize) PURE;
   1838     STDMETHOD(SetEventFilterCommand)(THIS_ ULONG Index,PCSTR Command) PURE;
   1839     STDMETHOD(GetSpecificFilterParameters)(THIS_ ULONG Start,ULONG Count,PDEBUG_SPECIFIC_FILTER_PARAMETERS Params) PURE;
   1840     STDMETHOD(SetSpecificFilterParameters)(THIS_ ULONG Start,ULONG Count,PDEBUG_SPECIFIC_FILTER_PARAMETERS Params) PURE;
   1841     STDMETHOD(GetSpecificFilterArgument)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG ArgumentSize) PURE;
   1842     STDMETHOD(SetSpecificFilterArgument)(THIS_ ULONG Index,PCSTR Argument) PURE;
   1843     STDMETHOD(GetExceptionFilterParameters)(THIS_ ULONG Count,PULONG Codes,ULONG Start,PDEBUG_EXCEPTION_FILTER_PARAMETERS Params) PURE;
   1844     STDMETHOD(SetExceptionFilterParameters)(THIS_ ULONG Count,PDEBUG_EXCEPTION_FILTER_PARAMETERS Params) PURE;
   1845     STDMETHOD(GetExceptionFilterSecondCommand)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG CommandSize) PURE;
   1846     STDMETHOD(SetExceptionFilterSecondCommand)(THIS_ ULONG Index,PCSTR Command) PURE;
   1847     STDMETHOD(WaitForEvent)(THIS_ ULONG Flags,ULONG Timeout) PURE;
   1848     STDMETHOD(GetLastEventInformation)(THIS_ PULONG Type,PULONG ProcessId,PULONG ThreadId,PVOID ExtraInformation,ULONG ExtraInformationSize,PULONG ExtraInformationUsed,PSTR Description,ULONG DescriptionSize,PULONG DescriptionUsed) PURE;
   1849     STDMETHOD(GetCurrentTimeDate)(THIS_ PULONG TimeDate) PURE;
   1850     STDMETHOD(GetCurrentSystemUpTime)(THIS_ PULONG UpTime) PURE;
   1851     STDMETHOD(GetDumpFormatFlags)(THIS_ PULONG FormatFlags) PURE;
   1852     STDMETHOD(GetNumberTextReplacements)(THIS_ PULONG NumRepl) PURE;
   1853     STDMETHOD(GetTextReplacement)(THIS_ PCSTR SrcText,ULONG Index,PSTR SrcBuffer,ULONG SrcBufferSize,PULONG SrcSize,PSTR DstBuffer,ULONG DstBufferSize,PULONG DstSize) PURE;
   1854     STDMETHOD(SetTextReplacement)(THIS_ PCSTR SrcText,PCSTR DstText) PURE;
   1855     STDMETHOD(RemoveTextReplacements)(THIS) PURE;
   1856     STDMETHOD(OutputTextReplacements)(THIS_ ULONG OutputControl,ULONG Flags) PURE;
   1857   };
   1858 #ifdef __CRT_UUID_DECL
   1859 __CRT_UUID_DECL(IDebugControl2,0xd4366723,0x44df,0x4bed,0x8c,0x7e,0x4c,0x05,0x42,0x4f,0x45,0x88)
   1860 #endif
   1861 
   1862 #define DEBUG_ASMOPT_DEFAULT 0x00000000
   1863 #define DEBUG_ASMOPT_VERBOSE 0x00000001
   1864 #define DEBUG_ASMOPT_NO_CODE_BYTES 0x00000002
   1865 #define DEBUG_ASMOPT_IGNORE_OUTPUT_WIDTH 0x00000004
   1866 
   1867 #define DEBUG_EXPR_MASM 0x00000000
   1868 #define DEBUG_EXPR_CPLUSPLUS 0x00000001
   1869 
   1870 #define DEBUG_EINDEX_NAME 0x00000000
   1871 #define DEBUG_EINDEX_FROM_START 0x00000000
   1872 #define DEBUG_EINDEX_FROM_END 0x00000001
   1873 #define DEBUG_EINDEX_FROM_CURRENT 0x00000002
   1874 
   1875 #undef INTERFACE
   1876 #define INTERFACE IDebugControl3
   1877   DECLARE_INTERFACE_(IDebugControl3,IUnknown) {
   1878     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE;
   1879     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   1880     STDMETHOD_(ULONG,Release)(THIS) PURE;
   1881     STDMETHOD(GetInterrupt)(THIS) PURE;
   1882     STDMETHOD(SetInterrupt)(THIS_ ULONG Flags) PURE;
   1883     STDMETHOD(GetInterruptTimeout)(THIS_ PULONG Seconds) PURE;
   1884     STDMETHOD(SetInterruptTimeout)(THIS_ ULONG Seconds) PURE;
   1885     STDMETHOD(GetLogFile)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG FileSize,PBOOL Append) PURE;
   1886     STDMETHOD(OpenLogFile)(THIS_ PCSTR File,WINBOOL Append) PURE;
   1887     STDMETHOD(CloseLogFile)(THIS) PURE;
   1888     STDMETHOD(GetLogMask)(THIS_ PULONG Mask) PURE;
   1889     STDMETHOD(SetLogMask)(THIS_ ULONG Mask) PURE;
   1890     STDMETHOD(Input)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG InputSize) PURE;
   1891     STDMETHOD(ReturnInput)(THIS_ PCSTR Buffer) PURE;
   1892     STDMETHODV(Output)(THIS_ ULONG Mask,PCSTR Format,...) PURE;
   1893     STDMETHOD(OutputVaList)(THIS_ ULONG Mask,PCSTR Format,va_list Args) PURE;
   1894     STDMETHODV(ControlledOutput)(THIS_ ULONG OutputControl,ULONG Mask,PCSTR Format,...) PURE;
   1895     STDMETHOD(ControlledOutputVaList)(THIS_ ULONG OutputControl,ULONG Mask,PCSTR Format,va_list Args) PURE;
   1896     STDMETHODV(OutputPrompt)(THIS_ ULONG OutputControl,PCSTR Format,...) PURE;
   1897     STDMETHOD(OutputPromptVaList)(THIS_ ULONG OutputControl,PCSTR Format,va_list Args) PURE;
   1898     STDMETHOD(GetPromptText)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG TextSize) PURE;
   1899     STDMETHOD(OutputCurrentState)(THIS_ ULONG OutputControl,ULONG Flags) PURE;
   1900     STDMETHOD(OutputVersionInformation)(THIS_ ULONG OutputControl) PURE;
   1901     STDMETHOD(GetNotifyEventHandle)(THIS_ PULONG64 Handle) PURE;
   1902     STDMETHOD(SetNotifyEventHandle)(THIS_ ULONG64 Handle) PURE;
   1903     STDMETHOD(Assemble)(THIS_ ULONG64 Offset,PCSTR Instr,PULONG64 EndOffset) PURE;
   1904     STDMETHOD(Disassemble)(THIS_ ULONG64 Offset,ULONG Flags,PSTR Buffer,ULONG BufferSize,PULONG DisassemblySize,PULONG64 EndOffset) PURE;
   1905     STDMETHOD(GetDisassembleEffectiveOffset)(THIS_ PULONG64 Offset) PURE;
   1906     STDMETHOD(OutputDisassembly)(THIS_ ULONG OutputControl,ULONG64 Offset,ULONG Flags,PULONG64 EndOffset) PURE;
   1907     STDMETHOD(OutputDisassemblyLines)(THIS_ ULONG OutputControl,ULONG PreviousLines,ULONG TotalLines,ULONG64 Offset,ULONG Flags,PULONG OffsetLine,PULONG64 StartOffset,PULONG64 EndOffset,PULONG64 LineOffsets) PURE;
   1908     STDMETHOD(GetNearInstruction)(THIS_ ULONG64 Offset,LONG Delta,PULONG64 NearOffset) PURE;
   1909     STDMETHOD(GetStackTrace)(THIS_ ULONG64 FrameOffset,ULONG64 StackOffset,ULONG64 InstructionOffset,PDEBUG_STACK_FRAME Frames,ULONG FramesSize,PULONG FramesFilled) PURE;
   1910     STDMETHOD(GetReturnOffset)(THIS_ PULONG64 Offset) PURE;
   1911     STDMETHOD(OutputStackTrace)(THIS_ ULONG OutputControl,PDEBUG_STACK_FRAME Frames,ULONG FramesSize,ULONG Flags) PURE;
   1912     STDMETHOD(GetDebuggeeType)(THIS_ PULONG Class,PULONG Qualifier) PURE;
   1913     STDMETHOD(GetActualProcessorType)(THIS_ PULONG Type) PURE;
   1914     STDMETHOD(GetExecutingProcessorType)(THIS_ PULONG Type) PURE;
   1915     STDMETHOD(GetNumberPossibleExecutingProcessorTypes)(THIS_ PULONG Number) PURE;
   1916     STDMETHOD(GetPossibleExecutingProcessorTypes)(THIS_ ULONG Start,ULONG Count,PULONG Types) PURE;
   1917     STDMETHOD(GetNumberProcessors)(THIS_ PULONG Number) PURE;
   1918     STDMETHOD(GetSystemVersion)(THIS_ PULONG PlatformId,PULONG Major,PULONG Minor,PSTR ServicePackString,ULONG ServicePackStringSize,PULONG ServicePackStringUsed,PULONG ServicePackNumber,PSTR BuildString,ULONG BuildStringSize,PULONG BuildStringUsed) PURE;
   1919     STDMETHOD(GetPageSize)(THIS_ PULONG Size) PURE;
   1920     STDMETHOD(IsPointer64Bit)(THIS) PURE;
   1921     STDMETHOD(ReadBugCheckData)(THIS_ PULONG Code,PULONG64 Arg1,PULONG64 Arg2,PULONG64 Arg3,PULONG64 Arg4) PURE;
   1922     STDMETHOD(GetNumberSupportedProcessorTypes)(THIS_ PULONG Number) PURE;
   1923     STDMETHOD(GetSupportedProcessorTypes)(THIS_ ULONG Start,ULONG Count,PULONG Types) PURE;
   1924     STDMETHOD(GetProcessorTypeNames)(THIS_ ULONG Type,PSTR FullNameBuffer,ULONG FullNameBufferSize,PULONG FullNameSize,PSTR AbbrevNameBuffer,ULONG AbbrevNameBufferSize,PULONG AbbrevNameSize) PURE;
   1925     STDMETHOD(GetEffectiveProcessorType)(THIS_ PULONG Type) PURE;
   1926     STDMETHOD(SetEffectiveProcessorType)(THIS_ ULONG Type) PURE;
   1927     STDMETHOD(GetExecutionStatus)(THIS_ PULONG Status) PURE;
   1928     STDMETHOD(SetExecutionStatus)(THIS_ ULONG Status) PURE;
   1929     STDMETHOD(GetCodeLevel)(THIS_ PULONG Level) PURE;
   1930     STDMETHOD(SetCodeLevel)(THIS_ ULONG Level) PURE;
   1931     STDMETHOD(GetEngineOptions)(THIS_ PULONG Options) PURE;
   1932     STDMETHOD(AddEngineOptions)(THIS_ ULONG Options) PURE;
   1933     STDMETHOD(RemoveEngineOptions)(THIS_ ULONG Options) PURE;
   1934     STDMETHOD(SetEngineOptions)(THIS_ ULONG Options) PURE;
   1935     STDMETHOD(GetSystemErrorControl)(THIS_ PULONG OutputLevel,PULONG BreakLevel) PURE;
   1936     STDMETHOD(SetSystemErrorControl)(THIS_ ULONG OutputLevel,ULONG BreakLevel) PURE;
   1937     STDMETHOD(GetTextMacro)(THIS_ ULONG Slot,PSTR Buffer,ULONG BufferSize,PULONG MacroSize) PURE;
   1938     STDMETHOD(SetTextMacro)(THIS_ ULONG Slot,PCSTR Macro) PURE;
   1939     STDMETHOD(GetRadix)(THIS_ PULONG Radix) PURE;
   1940     STDMETHOD(SetRadix)(THIS_ ULONG Radix) PURE;
   1941     STDMETHOD(Evaluate)(THIS_ PCSTR Expression,ULONG DesiredType,PDEBUG_VALUE Value,PULONG RemainderIndex) PURE;
   1942     STDMETHOD(CoerceValue)(THIS_ PDEBUG_VALUE In,ULONG OutType,PDEBUG_VALUE Out) PURE;
   1943     STDMETHOD(CoerceValues)(THIS_ ULONG Count,PDEBUG_VALUE In,PULONG OutTypes,PDEBUG_VALUE Out) PURE;
   1944     STDMETHOD(Execute)(THIS_ ULONG OutputControl,PCSTR Command,ULONG Flags) PURE;
   1945     STDMETHOD(ExecuteCommandFile)(THIS_ ULONG OutputControl,PCSTR CommandFile,ULONG Flags) PURE;
   1946     STDMETHOD(GetNumberBreakpoints)(THIS_ PULONG Number) PURE;
   1947     STDMETHOD(GetBreakpointByIndex)(THIS_ ULONG Index,PDEBUG_BREAKPOINT *Bp) PURE;
   1948     STDMETHOD(GetBreakpointById)(THIS_ ULONG Id,PDEBUG_BREAKPOINT *Bp) PURE;
   1949     STDMETHOD(GetBreakpointParameters)(THIS_ ULONG Count,PULONG Ids,ULONG Start,PDEBUG_BREAKPOINT_PARAMETERS Params) PURE;
   1950     STDMETHOD(AddBreakpoint)(THIS_ ULONG Type,ULONG DesiredId,PDEBUG_BREAKPOINT *Bp) PURE;
   1951     STDMETHOD(RemoveBreakpoint)(THIS_ PDEBUG_BREAKPOINT Bp) PURE;
   1952     STDMETHOD(AddExtension)(THIS_ PCSTR Path,ULONG Flags,PULONG64 Handle) PURE;
   1953     STDMETHOD(RemoveExtension)(THIS_ ULONG64 Handle) PURE;
   1954     STDMETHOD(GetExtensionByPath)(THIS_ PCSTR Path,PULONG64 Handle) PURE;
   1955     STDMETHOD(CallExtension)(THIS_ ULONG64 Handle,PCSTR Function,PCSTR Arguments) PURE;
   1956     STDMETHOD(GetExtensionFunction)(THIS_ ULONG64 Handle,PCSTR FuncName,FARPROC *Function) PURE;
   1957     STDMETHOD(GetWindbgExtensionApis32)(THIS_ PWINDBG_EXTENSION_APIS32 Api) PURE;
   1958     STDMETHOD(GetWindbgExtensionApis64)(THIS_ PWINDBG_EXTENSION_APIS64 Api) PURE;
   1959     STDMETHOD(GetNumberEventFilters)(THIS_ PULONG SpecificEvents,PULONG SpecificExceptions,PULONG ArbitraryExceptions) PURE;
   1960     STDMETHOD(GetEventFilterText)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG TextSize) PURE;
   1961     STDMETHOD(GetEventFilterCommand)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG CommandSize) PURE;
   1962     STDMETHOD(SetEventFilterCommand)(THIS_ ULONG Index,PCSTR Command) PURE;
   1963     STDMETHOD(GetSpecificFilterParameters)(THIS_ ULONG Start,ULONG Count,PDEBUG_SPECIFIC_FILTER_PARAMETERS Params) PURE;
   1964     STDMETHOD(SetSpecificFilterParameters)(THIS_ ULONG Start,ULONG Count,PDEBUG_SPECIFIC_FILTER_PARAMETERS Params) PURE;
   1965     STDMETHOD(GetSpecificFilterArgument)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG ArgumentSize) PURE;
   1966     STDMETHOD(SetSpecificFilterArgument)(THIS_ ULONG Index,PCSTR Argument) PURE;
   1967     STDMETHOD(GetExceptionFilterParameters)(THIS_ ULONG Count,PULONG Codes,ULONG Start,PDEBUG_EXCEPTION_FILTER_PARAMETERS Params) PURE;
   1968     STDMETHOD(SetExceptionFilterParameters)(THIS_ ULONG Count,PDEBUG_EXCEPTION_FILTER_PARAMETERS Params) PURE;
   1969     STDMETHOD(GetExceptionFilterSecondCommand)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG CommandSize) PURE;
   1970     STDMETHOD(SetExceptionFilterSecondCommand)(THIS_ ULONG Index,PCSTR Command) PURE;
   1971     STDMETHOD(WaitForEvent)(THIS_ ULONG Flags,ULONG Timeout) PURE;
   1972     STDMETHOD(GetLastEventInformation)(THIS_ PULONG Type,PULONG ProcessId,PULONG ThreadId,PVOID ExtraInformation,ULONG ExtraInformationSize,PULONG ExtraInformationUsed,PSTR Description,ULONG DescriptionSize,PULONG DescriptionUsed) PURE;
   1973     STDMETHOD(GetCurrentTimeDate)(THIS_ PULONG TimeDate) PURE;
   1974     STDMETHOD(GetCurrentSystemUpTime)(THIS_ PULONG UpTime) PURE;
   1975     STDMETHOD(GetDumpFormatFlags)(THIS_ PULONG FormatFlags) PURE;
   1976     STDMETHOD(GetNumberTextReplacements)(THIS_ PULONG NumRepl) PURE;
   1977     STDMETHOD(GetTextReplacement)(THIS_ PCSTR SrcText,ULONG Index,PSTR SrcBuffer,ULONG SrcBufferSize,PULONG SrcSize,PSTR DstBuffer,ULONG DstBufferSize,PULONG DstSize) PURE;
   1978     STDMETHOD(SetTextReplacement)(THIS_ PCSTR SrcText,PCSTR DstText) PURE;
   1979     STDMETHOD(RemoveTextReplacements)(THIS) PURE;
   1980     STDMETHOD(OutputTextReplacements)(THIS_ ULONG OutputControl,ULONG Flags) PURE;
   1981     STDMETHOD(GetAssemblyOptions)(THIS_ PULONG Options) PURE;
   1982     STDMETHOD(AddAssemblyOptions)(THIS_ ULONG Options) PURE;
   1983     STDMETHOD(RemoveAssemblyOptions)(THIS_ ULONG Options) PURE;
   1984     STDMETHOD(SetAssemblyOptions)(THIS_ ULONG Options) PURE;
   1985     STDMETHOD(GetExpressionSyntax)(THIS_ PULONG Flags) PURE;
   1986     STDMETHOD(SetExpressionSyntax)(THIS_ ULONG Flags) PURE;
   1987     STDMETHOD(SetExpressionSyntaxByName)(THIS_ PCSTR AbbrevName) PURE;
   1988     STDMETHOD(GetNumberExpressionSyntaxes)(THIS_ PULONG Number) PURE;
   1989     STDMETHOD(GetExpressionSyntaxNames)(THIS_ ULONG Index,PSTR FullNameBuffer,ULONG FullNameBufferSize,PULONG FullNameSize,PSTR AbbrevNameBuffer,ULONG AbbrevNameBufferSize,PULONG AbbrevNameSize) PURE;
   1990     STDMETHOD(GetNumberEvents)(THIS_ PULONG Events) PURE;
   1991     STDMETHOD(GetEventIndexDescription)(THIS_ ULONG Index,ULONG Which,PSTR Buffer,ULONG BufferSize,PULONG DescSize) PURE;
   1992     STDMETHOD(GetCurrentEventIndex)(THIS_ PULONG Index) PURE;
   1993     STDMETHOD(SetNextEventIndex)(THIS_ ULONG Relation,ULONG Value,PULONG NextIndex) PURE;
   1994   };
   1995 #ifdef __CRT_UUID_DECL
   1996 __CRT_UUID_DECL(IDebugControl3,0x7df74a86,0xb03f,0x407f,0x90,0xab,0xa2,0x0d,0xad,0xce,0xad,0x08)
   1997 #endif
   1998 
   1999 #undef INTERFACE
   2000 #define INTERFACE IDebugControl4
   2001   DECLARE_INTERFACE_(IDebugControl4, IUnknown) {
   2002     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
   2003     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   2004     STDMETHOD_(ULONG, Release)(THIS) PURE;
   2005     STDMETHOD(GetInterrupt)(THIS) PURE;
   2006     STDMETHOD(SetInterrupt)(THIS_ ULONG Flags) PURE;
   2007     STDMETHOD(GetInterruptTimeout)(THIS_ PULONG Seconds) PURE;
   2008     STDMETHOD(SetInterruptTimeout)(THIS_ ULONG Seconds) PURE;
   2009     STDMETHOD(GetLogFile)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG FileSize, PBOOL Append) PURE;
   2010     STDMETHOD(OpenLogFile)(THIS_ PCSTR File, WINBOOL Append) PURE;
   2011     STDMETHOD(CloseLogFile)(THIS) PURE;
   2012     STDMETHOD(GetLogMask)(THIS_ PULONG Mask) PURE;
   2013     STDMETHOD(SetLogMask)(THIS_ ULONG Mask) PURE;
   2014     STDMETHOD(Input)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG InputSize) PURE;
   2015     STDMETHOD(ReturnInput)(THIS_ PCSTR Buffer) PURE;
   2016     STDMETHODV(Output)(THIS_ ULONG Mask, PCSTR Format, ...) PURE;
   2017     STDMETHOD(OutputVaList)(THIS_ ULONG Mask, PCSTR Format, va_list Args) PURE;
   2018     STDMETHODV(ControlledOutput)(THIS_ ULONG OutputControl, ULONG Mask, PCSTR Format, ...) PURE;
   2019     STDMETHOD(ControlledOutputVaList)(THIS_ ULONG OutputControl, ULONG Mask, PCSTR Format, va_list Args) PURE;
   2020     STDMETHODV(OutputPrompt)(THIS_ ULONG OutputControl, PCSTR Format, ...) PURE;
   2021     STDMETHOD(OutputPromptVaList)(THIS_ ULONG OutputControl, PCSTR Format, va_list Args) PURE;
   2022     STDMETHOD(GetPromptText)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG TextSize) PURE;
   2023     STDMETHOD(OutputCurrentState)(THIS_ ULONG OutputControl, ULONG Flags) PURE;
   2024     STDMETHOD(OutputVersionInformation)(THIS_ ULONG OutputControl) PURE;
   2025     STDMETHOD(GetNotifyEventHandle)(THIS_ PULONG64 Handle) PURE;
   2026     STDMETHOD(SetNotifyEventHandle)(THIS_ ULONG64 Handle) PURE;
   2027     STDMETHOD(Assemble)(THIS_ ULONG64 Offset, PCSTR Instr, PULONG64 EndOffset) PURE;
   2028     STDMETHOD(Disassemble)(THIS_ ULONG64 Offset, ULONG Flags, PSTR Buffer, ULONG BufferSize, PULONG DisassemblySize, PULONG64 EndOffset) PURE;
   2029     STDMETHOD(GetDisassembleEffectiveOffset)(THIS_ PULONG64 Offset) PURE;
   2030     STDMETHOD(OutputDisassembly)(THIS_ ULONG OutputControl, ULONG64 Offset, ULONG Flags, PULONG64 EndOffset) PURE;
   2031     STDMETHOD(OutputDisassemblyLines)(THIS_ ULONG OutputControl, ULONG PreviousLines, ULONG TotalLines, ULONG64 Offset, ULONG Flags, PULONG OffsetLine, PULONG64 StartOffset, PULONG64 EndOffset, PULONG64 LineOffsets) PURE;
   2032     STDMETHOD(GetNearInstruction)(THIS_ ULONG64 Offset, LONG Delta, PULONG64 NearOffset) PURE;
   2033     STDMETHOD(GetStackTrace)(THIS_ ULONG64 FrameOffset, ULONG64 StackOffset, ULONG64 InstructionOffset, PDEBUG_STACK_FRAME Frames, ULONG FramesSize, PULONG FramesFilled) PURE;
   2034     STDMETHOD(GetReturnOffset)(THIS_ PULONG64 Offset) PURE;
   2035     STDMETHOD(OutputStackTrace)(THIS_ ULONG OutputControl, PDEBUG_STACK_FRAME Frames, ULONG FramesSize, ULONG Flags) PURE;
   2036     STDMETHOD(GetDebuggeeType)(THIS_ PULONG Class, PULONG Qualifier) PURE;
   2037     STDMETHOD(GetActualProcessorType)(THIS_ PULONG Type) PURE;
   2038     STDMETHOD(GetExecutingProcessorType)(THIS_ PULONG Type) PURE;
   2039     STDMETHOD(GetNumberPossibleExecutingProcessorTypes)(THIS_ PULONG Number) PURE;
   2040     STDMETHOD(GetPossibleExecutingProcessorTypes)(THIS_ ULONG Start, ULONG Count, PULONG Types) PURE;
   2041     STDMETHOD(GetNumberProcessors)(THIS_ PULONG Number) PURE;
   2042     STDMETHOD(GetSystemVersion)(THIS_ PULONG PlatformId, PULONG Major, PULONG Minor, PSTR ServicePackString, ULONG ServicePackStringSize, PULONG ServicePackStringUsed, PULONG ServicePackNumber, PSTR BuildString, ULONG BuildStringSize, PULONG BuildStringUsed) PURE;
   2043     STDMETHOD(GetPageSize)(THIS_ PULONG Size) PURE;
   2044     STDMETHOD(IsPointer64Bit)(THIS) PURE;
   2045     STDMETHOD(ReadBugCheckData)(THIS_ PULONG Code, PULONG64 Arg1, PULONG64 Arg2, PULONG64 Arg3, PULONG64 Arg4) PURE;
   2046     STDMETHOD(GetNumberSupportedProcessorTypes)(THIS_ PULONG Number) PURE;
   2047     STDMETHOD(GetSupportedProcessorTypes)(THIS_ ULONG Start, ULONG Count, PULONG Types) PURE;
   2048     STDMETHOD(GetProcessorTypeNames)(THIS_ ULONG Type, PSTR FullNameBuffer, ULONG FullNameBufferSize, PULONG FullNameSize, PSTR AbbrevNameBuffer, ULONG AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
   2049     STDMETHOD(GetEffectiveProcessorType)(THIS_ PULONG Type) PURE;
   2050     STDMETHOD(SetEffectiveProcessorType)(THIS_ ULONG Type) PURE;
   2051     STDMETHOD(GetExecutionStatus)(THIS_ PULONG Status) PURE;
   2052     STDMETHOD(SetExecutionStatus)(THIS_ ULONG Status) PURE;
   2053     STDMETHOD(GetCodeLevel)(THIS_ PULONG Level) PURE;
   2054     STDMETHOD(SetCodeLevel)(THIS_ ULONG Level) PURE;
   2055     STDMETHOD(GetEngineOptions)(THIS_ PULONG Options) PURE;
   2056     STDMETHOD(AddEngineOptions)(THIS_ ULONG Options) PURE;
   2057     STDMETHOD(RemoveEngineOptions)(THIS_ ULONG Options) PURE;
   2058     STDMETHOD(SetEngineOptions)(THIS_ ULONG Options) PURE;
   2059     STDMETHOD(GetSystemErrorControl)(THIS_ PULONG OutputLevel, PULONG BreakLevel) PURE;
   2060     STDMETHOD(SetSystemErrorControl)(THIS_ ULONG OutputLevel, ULONG BreakLevel) PURE;
   2061     STDMETHOD(GetTextMacro)(THIS_ ULONG Slot, PSTR Buffer, ULONG BufferSize, PULONG MacroSize) PURE;
   2062     STDMETHOD(SetTextMacro)(THIS_ ULONG Slot, PCSTR Macro) PURE;
   2063     STDMETHOD(GetRadix)(THIS_ PULONG Radix) PURE;
   2064     STDMETHOD(SetRadix)(THIS_ ULONG Radix) PURE;
   2065     STDMETHOD(Evaluate)(THIS_ PCSTR Expression, ULONG DesiredType, PDEBUG_VALUE Value, PULONG RemainderIndex) PURE;
   2066     STDMETHOD(CoerceValue)(THIS_ PDEBUG_VALUE In, ULONG OutType, PDEBUG_VALUE Out) PURE;
   2067     STDMETHOD(CoerceValues)(THIS_ ULONG Count, PDEBUG_VALUE In, PULONG OutTypes, PDEBUG_VALUE Out) PURE;
   2068     STDMETHOD(Execute)(THIS_ ULONG OutputControl, PCSTR Command, ULONG Flags) PURE;
   2069     STDMETHOD(ExecuteCommandFile)(THIS_ ULONG OutputControl, PCSTR CommandFile, ULONG Flags) PURE;
   2070     STDMETHOD(GetNumberBreakpoints)(THIS_ PULONG Number) PURE;
   2071     STDMETHOD(GetBreakpointByIndex)(THIS_ ULONG Index, PDEBUG_BREAKPOINT *Bp) PURE;
   2072     STDMETHOD(GetBreakpointById)(THIS_ ULONG Id, PDEBUG_BREAKPOINT *Bp) PURE;
   2073     STDMETHOD(GetBreakpointParameters)(THIS_ ULONG Count, PULONG Ids, ULONG Start, PDEBUG_BREAKPOINT_PARAMETERS Params) PURE;
   2074     STDMETHOD(AddBreakpoint)(THIS_ ULONG Type, ULONG DesiredId, PDEBUG_BREAKPOINT *Bp) PURE;
   2075     STDMETHOD(RemoveBreakpoint)(THIS_ PDEBUG_BREAKPOINT Bp) PURE;
   2076     STDMETHOD(AddExtension)(THIS_ PCSTR Path, ULONG Flags, PULONG64 Handle) PURE;
   2077     STDMETHOD(RemoveExtension)(THIS_ ULONG64 Handle) PURE;
   2078     STDMETHOD(GetExtensionByPath)(THIS_ PCSTR Path, PULONG64 Handle) PURE;
   2079     STDMETHOD(CallExtension)(THIS_ ULONG64 Handle, PCSTR Function, PCSTR Arguments) PURE;
   2080     STDMETHOD(GetExtensionFunction)(THIS_ ULONG64 Handle, PCSTR FuncName, FARPROC *Function) PURE;
   2081     STDMETHOD(GetWindbgExtensionApis32)(THIS_ PWINDBG_EXTENSION_APIS32 Api) PURE;
   2082     STDMETHOD(GetWindbgExtensionApis64)(THIS_ PWINDBG_EXTENSION_APIS64 Api) PURE;
   2083     STDMETHOD(GetNumberEventFilters)(THIS_ PULONG SpecificEvents, PULONG SpecificExceptions, PULONG ArbitraryExceptions) PURE;
   2084     STDMETHOD(GetEventFilterText)(THIS_ ULONG Index, PSTR Buffer, ULONG BufferSize, PULONG TextSize) PURE;
   2085     STDMETHOD(GetEventFilterCommand)(THIS_ ULONG Index, PSTR Buffer, ULONG BufferSize, PULONG CommandSize) PURE;
   2086     STDMETHOD(SetEventFilterCommand)(THIS_ ULONG Index, PCSTR Command) PURE;
   2087     STDMETHOD(GetSpecificFilterParameters)(THIS_ ULONG Start, ULONG Count, PDEBUG_SPECIFIC_FILTER_PARAMETERS Params) PURE;
   2088     STDMETHOD(SetSpecificFilterParameters)(THIS_ ULONG Start, ULONG Count, PDEBUG_SPECIFIC_FILTER_PARAMETERS Params) PURE;
   2089     STDMETHOD(GetSpecificFilterArgument)(THIS_ ULONG Index, PSTR Buffer, ULONG BufferSize, PULONG ArgumentSize) PURE;
   2090     STDMETHOD(SetSpecificFilterArgument)(THIS_ ULONG Index, PCSTR Argument) PURE;
   2091     STDMETHOD(GetExceptionFilterParameters)(THIS_ ULONG Count, PULONG Codes, ULONG Start, PDEBUG_EXCEPTION_FILTER_PARAMETERS Params) PURE;
   2092     STDMETHOD(SetExceptionFilterParameters)(THIS_ ULONG Count, PDEBUG_EXCEPTION_FILTER_PARAMETERS Params) PURE;
   2093     STDMETHOD(GetExceptionFilterSecondCommand)(THIS_ ULONG Index, PSTR Buffer, ULONG BufferSize, PULONG CommandSize) PURE;
   2094     STDMETHOD(SetExceptionFilterSecondCommand)(THIS_ ULONG Index, PCSTR Command) PURE;
   2095     STDMETHOD(WaitForEvent)(THIS_ ULONG Flags, ULONG Timeout) PURE;
   2096     STDMETHOD(GetLastEventInformation)(THIS_ PULONG Type, PULONG ProcessId, PULONG ThreadId, PVOID ExtraInformation, ULONG ExtraInformationSize, PULONG ExtraInformationUsed, PSTR Description, ULONG DescriptionSize, PULONG DescriptionUsed) PURE;
   2097     STDMETHOD(GetCurrentTimeDate)(THIS_ PULONG TimeDate) PURE;
   2098     STDMETHOD(GetCurrentSystemUpTime)(THIS_ PULONG UpTime) PURE;
   2099     STDMETHOD(GetDumpFormatFlags)(THIS_ PULONG FormatFlags) PURE;
   2100     STDMETHOD(GetNumberTextReplacements)(THIS_ PULONG NumRepl) PURE;
   2101     STDMETHOD(GetTextReplacement)(THIS_ PCSTR SrcText, ULONG Index, PSTR SrcBuffer, ULONG SrcBufferSize, PULONG SrcSize, PSTR DstBuffer, ULONG DstBufferSize, PULONG DstSize) PURE;
   2102     STDMETHOD(SetTextReplacement)(THIS_ PCSTR SrcText, PCSTR DstText) PURE;
   2103     STDMETHOD(RemoveTextReplacements)(THIS) PURE;
   2104     STDMETHOD(OutputTextReplacements)(THIS_ ULONG OutputControl, ULONG Flags) PURE;
   2105     STDMETHOD(GetAssemblyOptions)(THIS_ PULONG Options) PURE;
   2106     STDMETHOD(AddAssemblyOptions)(THIS_ ULONG Options) PURE;
   2107     STDMETHOD(RemoveAssemblyOptions)(THIS_ ULONG Options) PURE;
   2108     STDMETHOD(SetAssemblyOptions)(THIS_ ULONG Options) PURE;
   2109     STDMETHOD(GetExpressionSyntax)(THIS_ PULONG Flags) PURE;
   2110     STDMETHOD(SetExpressionSyntax)(THIS_ ULONG Flags) PURE;
   2111     STDMETHOD(SetExpressionSyntaxByName)(THIS_ PCSTR AbbrevName) PURE;
   2112     STDMETHOD(GetNumberExpressionSyntaxes)(THIS_ PULONG Number) PURE;
   2113     STDMETHOD(GetExpressionSyntaxNames)(THIS_ ULONG Index, PSTR FullNameBuffer, ULONG FullNameBufferSize, PULONG FullNameSize, PSTR AbbrevNameBuffer, ULONG AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
   2114     STDMETHOD(GetNumberEvents)(THIS_ PULONG Events) PURE;
   2115     STDMETHOD(GetEventIndexDescription)(THIS_ ULONG Index, ULONG Which, PSTR Buffer, ULONG BufferSize, PULONG DescSize) PURE;
   2116     STDMETHOD(GetCurrentEventIndex)(THIS_ PULONG Index) PURE;
   2117     STDMETHOD(SetNextEventIndex)(THIS_ ULONG Relation, ULONG Value, PULONG NextIndex) PURE;
   2118     STDMETHOD(GetLogFileWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG FileSize, PBOOL Append) PURE;
   2119     STDMETHOD(OpenLogFileWide)(THIS_ PCWSTR File, WINBOOL Append) PURE;
   2120     STDMETHOD(InputWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG InputSize) PURE;
   2121     STDMETHOD(ReturnInputWide)(THIS_ PCWSTR Buffer) PURE;
   2122     STDMETHODV(OutputWide)(THIS_ ULONG Mask, PCWSTR Format, ...) PURE;
   2123     STDMETHOD(OutputVaListWide)(THIS_ ULONG Mask, PCWSTR Format, va_list Args) PURE;
   2124     STDMETHODV(ControlledOutputWide)(THIS_ ULONG OutputControl, ULONG Mask, PCWSTR Format, ...) PURE;
   2125     STDMETHOD(ControlledOutputVaListWide)(THIS_ ULONG OutputControl, ULONG Mask, PCWSTR Format, va_list Args) PURE;
   2126     STDMETHODV(OutputPromptWide)(THIS_ ULONG OutputControl, PCWSTR Format, ...) PURE;
   2127     STDMETHOD(OutputPromptVaListWide)(THIS_ ULONG OutputControl, PCWSTR Format, va_list Args) PURE;
   2128     STDMETHOD(GetPromptTextWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG TextSize) PURE;
   2129     STDMETHOD(AssembleWide)(THIS_ ULONG64 Offset, PCWSTR Instr, PULONG64 EndOffset) PURE;
   2130     STDMETHOD(DisassembleWide)(THIS_ ULONG64 Offset, ULONG Flags, PWSTR Buffer, ULONG BufferSize, PULONG DisassemblySize, PULONG64 EndOffset) PURE;
   2131     STDMETHOD(GetProcessorTypeNamesWide)(THIS_ ULONG Type, PWSTR FullNameBuffer, ULONG FullNameBufferSize, PULONG FullNameSize, PWSTR AbbrevNameBuffer, ULONG AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
   2132     STDMETHOD(GetTextMacroWide)(THIS_ ULONG Slot, PWSTR Buffer, ULONG BufferSize, PULONG MacroSize) PURE;
   2133     STDMETHOD(SetTextMacroWide)(THIS_ ULONG Slot, PCWSTR Macro) PURE;
   2134     STDMETHOD(EvaluateWide)(THIS_ PCWSTR Expression, ULONG DesiredType, PDEBUG_VALUE Value, PULONG RemainderIndex) PURE;
   2135     STDMETHOD(ExecuteWide)(THIS_ ULONG OutputControl, PCWSTR Command, ULONG Flags) PURE;
   2136     STDMETHOD(ExecuteCommandFileWide)(THIS_ ULONG OutputControl, PCWSTR CommandFile, ULONG Flags) PURE;
   2137     STDMETHOD(GetBreakpointByIndex2)(THIS_ ULONG Index, PDEBUG_BREAKPOINT2 *Bp) PURE;
   2138     STDMETHOD(GetBreakpointById2)(THIS_ ULONG Id, PDEBUG_BREAKPOINT2 *Bp) PURE;
   2139     STDMETHOD(AddBreakpoint2)(THIS_ ULONG Type, ULONG DesiredId, PDEBUG_BREAKPOINT2 *Bp) PURE;
   2140     STDMETHOD(RemoveBreakpoint2)(THIS_ PDEBUG_BREAKPOINT2 Bp) PURE;
   2141     STDMETHOD(AddExtensionWide)(THIS_ PCWSTR Path, ULONG Flags, PULONG64 Handle) PURE;
   2142     STDMETHOD(GetExtensionByPathWide)(THIS_ PCWSTR Path, PULONG64 Handle) PURE;
   2143     STDMETHOD(CallExtensionWide)(THIS_ ULONG64 Handle, PCWSTR Function, PCWSTR Arguments) PURE;
   2144     STDMETHOD(GetExtensionFunctionWide)(THIS_ ULONG64 Handle, PCWSTR FuncName, FARPROC *Function) PURE;
   2145     STDMETHOD(GetEventFilterTextWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG BufferSize, PULONG TextSize) PURE;
   2146     STDMETHOD(GetEventFilterCommandWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG BufferSize, PULONG CommandSize) PURE;
   2147     STDMETHOD(SetEventFilterCommandWide)(THIS_ ULONG Index, PCWSTR Command) PURE;
   2148     STDMETHOD(GetSpecificFilterArgumentWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG BufferSize, PULONG ArgumentSize) PURE;
   2149     STDMETHOD(SetSpecificFilterArgumentWide)(THIS_ ULONG Index, PCWSTR Argument) PURE;
   2150     STDMETHOD(GetExceptionFilterSecondCommandWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG BufferSize, PULONG CommandSize) PURE;
   2151     STDMETHOD(SetExceptionFilterSecondCommandWide)(THIS_ ULONG Index, PCWSTR Command) PURE;
   2152     STDMETHOD(GetLastEventInformationWide)(THIS_ PULONG Type, PULONG ProcessId, PULONG ThreadId, PVOID ExtraInformation, ULONG ExtraInformationSize, PULONG ExtraInformationUsed, PWSTR Description, ULONG DescriptionSize, PULONG DescriptionUsed) PURE;
   2153     STDMETHOD(GetTextReplacementWide)(THIS_ PCWSTR SrcText, ULONG Index, PWSTR SrcBuffer, ULONG SrcBufferSize, PULONG SrcSize, PWSTR DstBuffer, ULONG DstBufferSize, PULONG DstSize) PURE;
   2154     STDMETHOD(SetTextReplacementWide)(THIS_ PCWSTR SrcText, PCWSTR DstText) PURE;
   2155     STDMETHOD(SetExpressionSyntaxByNameWide)(THIS_ PCWSTR AbbrevName) PURE;
   2156     STDMETHOD(GetExpressionSyntaxNamesWide)(THIS_ ULONG Index, PWSTR FullNameBuffer, ULONG FullNameBufferSize, PULONG FullNameSize, PWSTR AbbrevNameBuffer, ULONG AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
   2157     STDMETHOD(GetEventIndexDescriptionWide)(THIS_ ULONG Index, ULONG Which, PWSTR Buffer, ULONG BufferSize, PULONG DescSize) PURE;
   2158     STDMETHOD(GetLogFile2)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG FileSize, PULONG Flags) PURE;
   2159     STDMETHOD(OpenLogFile2)(THIS_ PCSTR File, ULONG Flags) PURE;
   2160     STDMETHOD(GetLogFile2Wide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG FileSize, PULONG Flags) PURE;
   2161     STDMETHOD(OpenLogFile2Wide)(THIS_ PCWSTR File, ULONG Flags) PURE;
   2162     STDMETHOD(GetSystemVersionValues)(THIS_ PULONG PlatformId, PULONG Win32Major, PULONG Win32Minor, PULONG KdMajor, PULONG KdMinor) PURE;
   2163     STDMETHOD(GetSystemVersionString)(THIS_ ULONG Which, PSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
   2164     STDMETHOD(GetSystemVersionStringWide)(THIS_ ULONG Which, PWSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
   2165     STDMETHOD(GetContextStackTrace)(THIS_ PVOID StartContext, ULONG StartContextSize, PDEBUG_STACK_FRAME Frames, ULONG FramesSize, PVOID FrameContexts, ULONG FrameContextsSize, ULONG FrameContextsEntrySize, PULONG FramesFilled) PURE;
   2166     STDMETHOD(OutputContextStackTrace)(THIS_ ULONG OutputControl, PDEBUG_STACK_FRAME Frames, ULONG FramesSize, PVOID FrameContexts, ULONG FrameContextsSize, ULONG FrameContextsEntrySize, ULONG Flags) PURE;
   2167     STDMETHOD(GetStoredEventInformation)(THIS_ PULONG Type, PULONG ProcessId, PULONG ThreadId, PVOID Context, ULONG ContextSize, PULONG ContextUsed, PVOID ExtraInformation, ULONG ExtraInformationSize, PULONG ExtraInformationUsed) PURE;
   2168     STDMETHOD(GetManagedStatus)(THIS_ PULONG Flags, ULONG WhichString, PSTR String, ULONG StringSize, PULONG StringNeeded) PURE;
   2169     STDMETHOD(GetManagedStatusWide)(THIS_ PULONG Flags, ULONG WhichString, PWSTR String, ULONG StringSize, PULONG StringNeeded) PURE;
   2170     STDMETHOD(ResetManagedStatus)(THIS_ ULONG Flags) PURE;
   2171   };
   2172 #ifdef __CRT_UUID_DECL
   2173 __CRT_UUID_DECL(IDebugControl4,0x94e60ce9,0x9b41,0x4b19,0x9f,0xc0,0x6d,0x9e,0xb3,0x52,0x72,0xb3)
   2174 #endif
   2175 
   2176 #undef INTERFACE
   2177 #define INTERFACE IDebugControl5
   2178   DECLARE_INTERFACE_(IDebugControl5, IUnknown) {
   2179     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
   2180     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   2181     STDMETHOD_(ULONG, Release)(THIS) PURE;
   2182     STDMETHOD(GetInterrupt)(THIS) PURE;
   2183     STDMETHOD(SetInterrupt)(THIS_ ULONG Flags) PURE;
   2184     STDMETHOD(GetInterruptTimeout)(THIS_ PULONG Seconds) PURE;
   2185     STDMETHOD(SetInterruptTimeout)(THIS_ ULONG Seconds) PURE;
   2186     STDMETHOD(GetLogFile)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG FileSize, PBOOL Append) PURE;
   2187     STDMETHOD(OpenLogFile)(THIS_ PCSTR File, WINBOOL Append) PURE;
   2188     STDMETHOD(CloseLogFile)(THIS) PURE;
   2189     STDMETHOD(GetLogMask)(THIS_ PULONG Mask) PURE;
   2190     STDMETHOD(SetLogMask)(THIS_ ULONG Mask) PURE;
   2191     STDMETHOD(Input)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG InputSize) PURE;
   2192     STDMETHOD(ReturnInput)(THIS_ PCSTR Buffer) PURE;
   2193     STDMETHODV(Output)(THIS_ ULONG Mask, PCSTR Format, ...) PURE;
   2194     STDMETHOD(OutputVaList)(THIS_ ULONG Mask, PCSTR Format, va_list Args) PURE;
   2195     STDMETHODV(ControlledOutput)(THIS_ ULONG OutputControl, ULONG Mask, PCSTR Format, ...) PURE;
   2196     STDMETHOD(ControlledOutputVaList)(THIS_ ULONG OutputControl, ULONG Mask, PCSTR Format, va_list Args) PURE;
   2197     STDMETHODV(OutputPrompt)(THIS_ ULONG OutputControl, PCSTR Format, ...) PURE;
   2198     STDMETHOD(OutputPromptVaList)(THIS_ ULONG OutputControl, PCSTR Format, va_list Args) PURE;
   2199     STDMETHOD(GetPromptText)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG TextSize) PURE;
   2200     STDMETHOD(OutputCurrentState)(THIS_ ULONG OutputControl, ULONG Flags) PURE;
   2201     STDMETHOD(OutputVersionInformation)(THIS_ ULONG OutputControl) PURE;
   2202     STDMETHOD(GetNotifyEventHandle)(THIS_ PULONG64 Handle) PURE;
   2203     STDMETHOD(SetNotifyEventHandle)(THIS_ ULONG64 Handle) PURE;
   2204     STDMETHOD(Assemble)(THIS_ ULONG64 Offset, PCSTR Instr, PULONG64 EndOffset) PURE;
   2205     STDMETHOD(Disassemble)(THIS_ ULONG64 Offset, ULONG Flags, PSTR Buffer, ULONG BufferSize, PULONG DisassemblySize, PULONG64 EndOffset) PURE;
   2206     STDMETHOD(GetDisassembleEffectiveOffset)(THIS_ PULONG64 Offset) PURE;
   2207     STDMETHOD(OutputDisassembly)(THIS_ ULONG OutputControl, ULONG64 Offset, ULONG Flags, PULONG64 EndOffset) PURE;
   2208     STDMETHOD(OutputDisassemblyLines)(THIS_ ULONG OutputControl, ULONG PreviousLines, ULONG TotalLines, ULONG64 Offset, ULONG Flags, PULONG OffsetLine, PULONG64 StartOffset, PULONG64 EndOffset, PULONG64 LineOffsets) PURE;
   2209     STDMETHOD(GetNearInstruction)(THIS_ ULONG64 Offset, LONG Delta, PULONG64 NearOffset) PURE;
   2210     STDMETHOD(GetStackTrace)(THIS_ ULONG64 FrameOffset, ULONG64 StackOffset, ULONG64 InstructionOffset, PDEBUG_STACK_FRAME Frames, ULONG FramesSize, PULONG FramesFilled) PURE;
   2211     STDMETHOD(GetReturnOffset)(THIS_ PULONG64 Offset) PURE;
   2212     STDMETHOD(OutputStackTrace)(THIS_ ULONG OutputControl, PDEBUG_STACK_FRAME Frames, ULONG FramesSize, ULONG Flags) PURE;
   2213     STDMETHOD(GetDebuggeeType)(THIS_ PULONG Class, PULONG Qualifier) PURE;
   2214     STDMETHOD(GetActualProcessorType)(THIS_ PULONG Type) PURE;
   2215     STDMETHOD(GetExecutingProcessorType)(THIS_ PULONG Type) PURE;
   2216     STDMETHOD(GetNumberPossibleExecutingProcessorTypes)(THIS_ PULONG Number) PURE;
   2217     STDMETHOD(GetPossibleExecutingProcessorTypes)(THIS_ ULONG Start, ULONG Count, PULONG Types) PURE;
   2218     STDMETHOD(GetNumberProcessors)(THIS_ PULONG Number) PURE;
   2219     STDMETHOD(GetSystemVersion)(THIS_ PULONG PlatformId, PULONG Major, PULONG Minor, PSTR ServicePackString, ULONG ServicePackStringSize, PULONG ServicePackStringUsed, PULONG ServicePackNumber, PSTR BuildString, ULONG BuildStringSize, PULONG BuildStringUsed) PURE;
   2220     STDMETHOD(GetPageSize)(THIS_ PULONG Size) PURE;
   2221     STDMETHOD(IsPointer64Bit)(THIS) PURE;
   2222     STDMETHOD(ReadBugCheckData)(THIS_ PULONG Code, PULONG64 Arg1, PULONG64 Arg2, PULONG64 Arg3, PULONG64 Arg4) PURE;
   2223     STDMETHOD(GetNumberSupportedProcessorTypes)(THIS_ PULONG Number) PURE;
   2224     STDMETHOD(GetSupportedProcessorTypes)(THIS_ ULONG Start, ULONG Count, PULONG Types) PURE;
   2225     STDMETHOD(GetProcessorTypeNames)(THIS_ ULONG Type, PSTR FullNameBuffer, ULONG FullNameBufferSize, PULONG FullNameSize, PSTR AbbrevNameBuffer, ULONG AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
   2226     STDMETHOD(GetEffectiveProcessorType)(THIS_ PULONG Type) PURE;
   2227     STDMETHOD(SetEffectiveProcessorType)(THIS_ ULONG Type) PURE;
   2228     STDMETHOD(GetExecutionStatus)(THIS_ PULONG Status) PURE;
   2229     STDMETHOD(SetExecutionStatus)(THIS_ ULONG Status) PURE;
   2230     STDMETHOD(GetCodeLevel)(THIS_ PULONG Level) PURE;
   2231     STDMETHOD(SetCodeLevel)(THIS_ ULONG Level) PURE;
   2232     STDMETHOD(GetEngineOptions)(THIS_ PULONG Options) PURE;
   2233     STDMETHOD(AddEngineOptions)(THIS_ ULONG Options) PURE;
   2234     STDMETHOD(RemoveEngineOptions)(THIS_ ULONG Options) PURE;
   2235     STDMETHOD(SetEngineOptions)(THIS_ ULONG Options) PURE;
   2236     STDMETHOD(GetSystemErrorControl)(THIS_ PULONG OutputLevel, PULONG BreakLevel) PURE;
   2237     STDMETHOD(SetSystemErrorControl)(THIS_ ULONG OutputLevel, ULONG BreakLevel) PURE;
   2238     STDMETHOD(GetTextMacro)(THIS_ ULONG Slot, PSTR Buffer, ULONG BufferSize, PULONG MacroSize) PURE;
   2239     STDMETHOD(SetTextMacro)(THIS_ ULONG Slot, PCSTR Macro) PURE;
   2240     STDMETHOD(GetRadix)(THIS_ PULONG Radix) PURE;
   2241     STDMETHOD(SetRadix)(THIS_ ULONG Radix) PURE;
   2242     STDMETHOD(Evaluate)(THIS_ PCSTR Expression, ULONG DesiredType, PDEBUG_VALUE Value, PULONG RemainderIndex) PURE;
   2243     STDMETHOD(CoerceValue)(THIS_ PDEBUG_VALUE In, ULONG OutType, PDEBUG_VALUE Out) PURE;
   2244     STDMETHOD(CoerceValues)(THIS_ ULONG Count, PDEBUG_VALUE In, PULONG OutTypes, PDEBUG_VALUE Out) PURE;
   2245     STDMETHOD(Execute)(THIS_ ULONG OutputControl, PCSTR Command, ULONG Flags) PURE;
   2246     STDMETHOD(ExecuteCommandFile)(THIS_ ULONG OutputControl, PCSTR CommandFile, ULONG Flags) PURE;
   2247     STDMETHOD(GetNumberBreakpoints)(THIS_ PULONG Number) PURE;
   2248     STDMETHOD(GetBreakpointByIndex)(THIS_ ULONG Index, PDEBUG_BREAKPOINT *Bp) PURE;
   2249     STDMETHOD(GetBreakpointById)(THIS_ ULONG Id, PDEBUG_BREAKPOINT *Bp) PURE;
   2250     STDMETHOD(GetBreakpointParameters)(THIS_ ULONG Count, PULONG Ids, ULONG Start, PDEBUG_BREAKPOINT_PARAMETERS Params) PURE;
   2251     STDMETHOD(AddBreakpoint)(THIS_ ULONG Type, ULONG DesiredId, PDEBUG_BREAKPOINT *Bp) PURE;
   2252     STDMETHOD(RemoveBreakpoint)(THIS_ PDEBUG_BREAKPOINT Bp) PURE;
   2253     STDMETHOD(AddExtension)(THIS_ PCSTR Path, ULONG Flags, PULONG64 Handle) PURE;
   2254     STDMETHOD(RemoveExtension)(THIS_ ULONG64 Handle) PURE;
   2255     STDMETHOD(GetExtensionByPath)(THIS_ PCSTR Path, PULONG64 Handle) PURE;
   2256     STDMETHOD(CallExtension)(THIS_ ULONG64 Handle, PCSTR Function, PCSTR Arguments) PURE;
   2257     STDMETHOD(GetExtensionFunction)(THIS_ ULONG64 Handle, PCSTR FuncName, FARPROC *Function) PURE;
   2258     STDMETHOD(GetWindbgExtensionApis32)(THIS_ PWINDBG_EXTENSION_APIS32 Api) PURE;
   2259     STDMETHOD(GetWindbgExtensionApis64)(THIS_ PWINDBG_EXTENSION_APIS64 Api) PURE;
   2260     STDMETHOD(GetNumberEventFilters)(THIS_ PULONG SpecificEvents, PULONG SpecificExceptions, PULONG ArbitraryExceptions) PURE;
   2261     STDMETHOD(GetEventFilterText)(THIS_ ULONG Index, PSTR Buffer, ULONG BufferSize, PULONG TextSize) PURE;
   2262     STDMETHOD(GetEventFilterCommand)(THIS_ ULONG Index, PSTR Buffer, ULONG BufferSize, PULONG CommandSize) PURE;
   2263     STDMETHOD(SetEventFilterCommand)(THIS_ ULONG Index, PCSTR Command) PURE;
   2264     STDMETHOD(GetSpecificFilterParameters)(THIS_ ULONG Start, ULONG Count, PDEBUG_SPECIFIC_FILTER_PARAMETERS Params) PURE;
   2265     STDMETHOD(SetSpecificFilterParameters)(THIS_ ULONG Start, ULONG Count, PDEBUG_SPECIFIC_FILTER_PARAMETERS Params) PURE;
   2266     STDMETHOD(GetSpecificFilterArgument)(THIS_ ULONG Index, PSTR Buffer, ULONG BufferSize, PULONG ArgumentSize) PURE;
   2267     STDMETHOD(SetSpecificFilterArgument)(THIS_ ULONG Index, PCSTR Argument) PURE;
   2268     STDMETHOD(GetExceptionFilterParameters)(THIS_ ULONG Count, PULONG Codes, ULONG Start, PDEBUG_EXCEPTION_FILTER_PARAMETERS Params) PURE;
   2269     STDMETHOD(SetExceptionFilterParameters)(THIS_ ULONG Count, PDEBUG_EXCEPTION_FILTER_PARAMETERS Params) PURE;
   2270     STDMETHOD(GetExceptionFilterSecondCommand)(THIS_ ULONG Index, PSTR Buffer, ULONG BufferSize, PULONG CommandSize) PURE;
   2271     STDMETHOD(SetExceptionFilterSecondCommand)(THIS_ ULONG Index, PCSTR Command) PURE;
   2272     STDMETHOD(WaitForEvent)(THIS_ ULONG Flags, ULONG Timeout) PURE;
   2273     STDMETHOD(GetLastEventInformation)(THIS_ PULONG Type, PULONG ProcessId, PULONG ThreadId, PVOID ExtraInformation, ULONG ExtraInformationSize, PULONG ExtraInformationUsed, PSTR Description, ULONG DescriptionSize, PULONG DescriptionUsed) PURE;
   2274     STDMETHOD(GetCurrentTimeDate)(THIS_ PULONG TimeDate) PURE;
   2275     STDMETHOD(GetCurrentSystemUpTime)(THIS_ PULONG UpTime) PURE;
   2276     STDMETHOD(GetDumpFormatFlags)(THIS_ PULONG FormatFlags) PURE;
   2277     STDMETHOD(GetNumberTextReplacements)(THIS_ PULONG NumRepl) PURE;
   2278     STDMETHOD(GetTextReplacement)(THIS_ PCSTR SrcText, ULONG Index, PSTR SrcBuffer, ULONG SrcBufferSize, PULONG SrcSize, PSTR DstBuffer, ULONG DstBufferSize, PULONG DstSize) PURE;
   2279     STDMETHOD(SetTextReplacement)(THIS_ PCSTR SrcText, PCSTR DstText) PURE;
   2280     STDMETHOD(RemoveTextReplacements)(THIS) PURE;
   2281     STDMETHOD(OutputTextReplacements)(THIS_ ULONG OutputControl, ULONG Flags) PURE;
   2282     STDMETHOD(GetAssemblyOptions)(THIS_ PULONG Options) PURE;
   2283     STDMETHOD(AddAssemblyOptions)(THIS_ ULONG Options) PURE;
   2284     STDMETHOD(RemoveAssemblyOptions)(THIS_ ULONG Options) PURE;
   2285     STDMETHOD(SetAssemblyOptions)(THIS_ ULONG Options) PURE;
   2286     STDMETHOD(GetExpressionSyntax)(THIS_ PULONG Flags) PURE;
   2287     STDMETHOD(SetExpressionSyntax)(THIS_ ULONG Flags) PURE;
   2288     STDMETHOD(SetExpressionSyntaxByName)(THIS_ PCSTR AbbrevName) PURE;
   2289     STDMETHOD(GetNumberExpressionSyntaxes)(THIS_ PULONG Number) PURE;
   2290     STDMETHOD(GetExpressionSyntaxNames)(THIS_ ULONG Index, PSTR FullNameBuffer, ULONG FullNameBufferSize, PULONG FullNameSize, PSTR AbbrevNameBuffer, ULONG AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
   2291     STDMETHOD(GetNumberEvents)(THIS_ PULONG Events) PURE;
   2292     STDMETHOD(GetEventIndexDescription)(THIS_ ULONG Index, ULONG Which, PSTR Buffer, ULONG BufferSize, PULONG DescSize) PURE;
   2293     STDMETHOD(GetCurrentEventIndex)(THIS_ PULONG Index) PURE;
   2294     STDMETHOD(SetNextEventIndex)(THIS_ ULONG Relation, ULONG Value, PULONG NextIndex) PURE;
   2295     STDMETHOD(GetLogFileWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG FileSize, PBOOL Append) PURE;
   2296     STDMETHOD(OpenLogFileWide)(THIS_ PCWSTR File, WINBOOL Append) PURE;
   2297     STDMETHOD(InputWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG InputSize) PURE;
   2298     STDMETHOD(ReturnInputWide)(THIS_ PCWSTR Buffer) PURE;
   2299     STDMETHODV(OutputWide)(THIS_ ULONG Mask, PCWSTR Format, ...) PURE;
   2300     STDMETHOD(OutputVaListWide)(THIS_ ULONG Mask, PCWSTR Format, va_list Args) PURE;
   2301     STDMETHODV(ControlledOutputWide)(THIS_ ULONG OutputControl, ULONG Mask, PCWSTR Format, ...) PURE;
   2302     STDMETHOD(ControlledOutputVaListWide)(THIS_ ULONG OutputControl, ULONG Mask, PCWSTR Format, va_list Args) PURE;
   2303     STDMETHODV(OutputPromptWide)(THIS_ ULONG OutputControl, PCWSTR Format, ...) PURE;
   2304     STDMETHOD(OutputPromptVaListWide)(THIS_ ULONG OutputControl, PCWSTR Format, va_list Args) PURE;
   2305     STDMETHOD(GetPromptTextWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG TextSize) PURE;
   2306     STDMETHOD(AssembleWide)(THIS_ ULONG64 Offset, PCWSTR Instr, PULONG64 EndOffset) PURE;
   2307     STDMETHOD(DisassembleWide)(THIS_ ULONG64 Offset, ULONG Flags, PWSTR Buffer, ULONG BufferSize, PULONG DisassemblySize, PULONG64 EndOffset) PURE;
   2308     STDMETHOD(GetProcessorTypeNamesWide)(THIS_ ULONG Type, PWSTR FullNameBuffer, ULONG FullNameBufferSize, PULONG FullNameSize, PWSTR AbbrevNameBuffer, ULONG AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
   2309     STDMETHOD(GetTextMacroWide)(THIS_ ULONG Slot, PWSTR Buffer, ULONG BufferSize, PULONG MacroSize) PURE;
   2310     STDMETHOD(SetTextMacroWide)(THIS_ ULONG Slot, PCWSTR Macro) PURE;
   2311     STDMETHOD(EvaluateWide)(THIS_ PCWSTR Expression, ULONG DesiredType, PDEBUG_VALUE Value, PULONG RemainderIndex) PURE;
   2312     STDMETHOD(ExecuteWide)(THIS_ ULONG OutputControl, PCWSTR Command, ULONG Flags) PURE;
   2313     STDMETHOD(ExecuteCommandFileWide)(THIS_ ULONG OutputControl, PCWSTR CommandFile, ULONG Flags) PURE;
   2314     STDMETHOD(GetBreakpointByIndex2)(THIS_ ULONG Index, PDEBUG_BREAKPOINT2 *Bp) PURE;
   2315     STDMETHOD(GetBreakpointById2)(THIS_ ULONG Id, PDEBUG_BREAKPOINT2 *Bp) PURE;
   2316     STDMETHOD(AddBreakpoint2)(THIS_ ULONG Type, ULONG DesiredId, PDEBUG_BREAKPOINT2 *Bp) PURE;
   2317     STDMETHOD(RemoveBreakpoint2)(THIS_ PDEBUG_BREAKPOINT2 Bp) PURE;
   2318     STDMETHOD(AddExtensionWide)(THIS_ PCWSTR Path, ULONG Flags, PULONG64 Handle) PURE;
   2319     STDMETHOD(GetExtensionByPathWide)(THIS_ PCWSTR Path, PULONG64 Handle) PURE;
   2320     STDMETHOD(CallExtensionWide)(THIS_ ULONG64 Handle, PCWSTR Function, PCWSTR Arguments) PURE;
   2321     STDMETHOD(GetExtensionFunctionWide)(THIS_ ULONG64 Handle, PCWSTR FuncName, FARPROC *Function) PURE;
   2322     STDMETHOD(GetEventFilterTextWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG BufferSize, PULONG TextSize) PURE;
   2323     STDMETHOD(GetEventFilterCommandWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG BufferSize, PULONG CommandSize) PURE;
   2324     STDMETHOD(SetEventFilterCommandWide)(THIS_ ULONG Index, PCWSTR Command) PURE;
   2325     STDMETHOD(GetSpecificFilterArgumentWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG BufferSize, PULONG ArgumentSize) PURE;
   2326     STDMETHOD(SetSpecificFilterArgumentWide)(THIS_ ULONG Index, PCWSTR Argument) PURE;
   2327     STDMETHOD(GetExceptionFilterSecondCommandWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG BufferSize, PULONG CommandSize) PURE;
   2328     STDMETHOD(SetExceptionFilterSecondCommandWide)(THIS_ ULONG Index, PCWSTR Command) PURE;
   2329     STDMETHOD(GetLastEventInformationWide)(THIS_ PULONG Type, PULONG ProcessId, PULONG ThreadId, PVOID ExtraInformation, ULONG ExtraInformationSize, PULONG ExtraInformationUsed, PWSTR Description, ULONG DescriptionSize, PULONG DescriptionUsed) PURE;
   2330     STDMETHOD(GetTextReplacementWide)(THIS_ PCWSTR SrcText, ULONG Index, PWSTR SrcBuffer, ULONG SrcBufferSize, PULONG SrcSize, PWSTR DstBuffer, ULONG DstBufferSize, PULONG DstSize) PURE;
   2331     STDMETHOD(SetTextReplacementWide)(THIS_ PCWSTR SrcText, PCWSTR DstText) PURE;
   2332     STDMETHOD(SetExpressionSyntaxByNameWide)(THIS_ PCWSTR AbbrevName) PURE;
   2333     STDMETHOD(GetExpressionSyntaxNamesWide)(THIS_ ULONG Index, PWSTR FullNameBuffer, ULONG FullNameBufferSize, PULONG FullNameSize, PWSTR AbbrevNameBuffer, ULONG AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
   2334     STDMETHOD(GetEventIndexDescriptionWide)(THIS_ ULONG Index, ULONG Which, PWSTR Buffer, ULONG BufferSize, PULONG DescSize) PURE;
   2335     STDMETHOD(GetLogFile2)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG FileSize, PULONG Flags) PURE;
   2336     STDMETHOD(OpenLogFile2)(THIS_ PCSTR File, ULONG Flags) PURE;
   2337     STDMETHOD(GetLogFile2Wide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG FileSize, PULONG Flags) PURE;
   2338     STDMETHOD(OpenLogFile2Wide)(THIS_ PCWSTR File, ULONG Flags) PURE;
   2339     STDMETHOD(GetSystemVersionValues)(THIS_ PULONG PlatformId, PULONG Win32Major, PULONG Win32Minor, PULONG KdMajor, PULONG KdMinor) PURE;
   2340     STDMETHOD(GetSystemVersionString)(THIS_ ULONG Which, PSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
   2341     STDMETHOD(GetSystemVersionStringWide)(THIS_ ULONG Which, PWSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
   2342     STDMETHOD(GetContextStackTrace)(THIS_ PVOID StartContext, ULONG StartContextSize, PDEBUG_STACK_FRAME Frames, ULONG FramesSize, PVOID FrameContexts, ULONG FrameContextsSize, ULONG FrameContextsEntrySize, PULONG FramesFilled) PURE;
   2343     STDMETHOD(OutputContextStackTrace)(THIS_ ULONG OutputControl, PDEBUG_STACK_FRAME Frames, ULONG FramesSize, PVOID FrameContexts, ULONG FrameContextsSize, ULONG FrameContextsEntrySize, ULONG Flags) PURE;
   2344     STDMETHOD(GetStoredEventInformation)(THIS_ PULONG Type, PULONG ProcessId, PULONG ThreadId, PVOID Context, ULONG ContextSize, PULONG ContextUsed, PVOID ExtraInformation, ULONG ExtraInformationSize, PULONG ExtraInformationUsed) PURE;
   2345     STDMETHOD(GetManagedStatus)(THIS_ PULONG Flags, ULONG WhichString, PSTR String, ULONG StringSize, PULONG StringNeeded) PURE;
   2346     STDMETHOD(GetManagedStatusWide)(THIS_ PULONG Flags, ULONG WhichString, PWSTR String, ULONG StringSize, PULONG StringNeeded) PURE;
   2347     STDMETHOD(ResetManagedStatus)(THIS_ ULONG Flags) PURE;
   2348     STDMETHOD(GetStackTraceEx)(THIS_ ULONG64 FrameOffset, ULONG64 StackOffset, ULONG64 InstructionOffset, PDEBUG_STACK_FRAME_EX Frames, ULONG FramesSize, PULONG FramesFilled) PURE;
   2349     STDMETHOD(OutputStackTraceEx)(THIS_ ULONG OutputControl, PDEBUG_STACK_FRAME_EX Frames, ULONG FramesSize, ULONG Flags) PURE;
   2350     STDMETHOD(GetContextStackTraceEx)(THIS_ PVOID StartContext, ULONG StartContextSize, PDEBUG_STACK_FRAME_EX Frames, ULONG FramesSize, PVOID FrameContexts, ULONG FrameContextsSize, ULONG FrameContextsEntrySize, PULONG FramesFilled) PURE;
   2351     STDMETHOD(OutputContextStackTraceEx)(THIS_ ULONG OutputControl, PDEBUG_STACK_FRAME_EX Frames, ULONG FramesSize, PVOID FrameContexts, ULONG FrameContextsSize, ULONG FrameContextsEntrySize, ULONG Flags) PURE;
   2352     STDMETHOD(GetBreakpointByGuid)(THIS_ LPGUID Guid, PDEBUG_BREAKPOINT3 *Bp) PURE;
   2353   };
   2354 #ifdef __CRT_UUID_DECL
   2355 __CRT_UUID_DECL(IDebugControl5,0xb2ffe162,0x2412,0x429f,0x8d,0x1d,0x5b,0xf6,0xdd,0x82,0x46,0x96)
   2356 #endif
   2357 
   2358 #undef INTERFACE
   2359 #define INTERFACE IDebugControl6
   2360   DECLARE_INTERFACE_(IDebugControl6, IUnknown) {
   2361     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
   2362     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   2363     STDMETHOD_(ULONG, Release)(THIS) PURE;
   2364     STDMETHOD(GetInterrupt)(THIS) PURE;
   2365     STDMETHOD(SetInterrupt)(THIS_ ULONG Flags) PURE;
   2366     STDMETHOD(GetInterruptTimeout)(THIS_ PULONG Seconds) PURE;
   2367     STDMETHOD(SetInterruptTimeout)(THIS_ ULONG Seconds) PURE;
   2368     STDMETHOD(GetLogFile)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG FileSize, PBOOL Append) PURE;
   2369     STDMETHOD(OpenLogFile)(THIS_ PCSTR File, WINBOOL Append) PURE;
   2370     STDMETHOD(CloseLogFile)(THIS) PURE;
   2371     STDMETHOD(GetLogMask)(THIS_ PULONG Mask) PURE;
   2372     STDMETHOD(SetLogMask)(THIS_ ULONG Mask) PURE;
   2373     STDMETHOD(Input)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG InputSize) PURE;
   2374     STDMETHOD(ReturnInput)(THIS_ PCSTR Buffer) PURE;
   2375     STDMETHODV(Output)(THIS_ ULONG Mask, PCSTR Format, ...) PURE;
   2376     STDMETHOD(OutputVaList)(THIS_ ULONG Mask, PCSTR Format, va_list Args) PURE;
   2377     STDMETHODV(ControlledOutput)(THIS_ ULONG OutputControl, ULONG Mask, PCSTR Format, ...) PURE;
   2378     STDMETHOD(ControlledOutputVaList)(THIS_ ULONG OutputControl, ULONG Mask, PCSTR Format, va_list Args) PURE;
   2379     STDMETHODV(OutputPrompt)(THIS_ ULONG OutputControl, PCSTR Format, ...) PURE;
   2380     STDMETHOD(OutputPromptVaList)(THIS_ ULONG OutputControl, PCSTR Format, va_list Args) PURE;
   2381     STDMETHOD(GetPromptText)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG TextSize) PURE;
   2382     STDMETHOD(OutputCurrentState)(THIS_ ULONG OutputControl, ULONG Flags) PURE;
   2383     STDMETHOD(OutputVersionInformation)(THIS_ ULONG OutputControl) PURE;
   2384     STDMETHOD(GetNotifyEventHandle)(THIS_ PULONG64 Handle) PURE;
   2385     STDMETHOD(SetNotifyEventHandle)(THIS_ ULONG64 Handle) PURE;
   2386     STDMETHOD(Assemble)(THIS_ ULONG64 Offset, PCSTR Instr, PULONG64 EndOffset) PURE;
   2387     STDMETHOD(Disassemble)(THIS_ ULONG64 Offset, ULONG Flags, PSTR Buffer, ULONG BufferSize, PULONG DisassemblySize, PULONG64 EndOffset) PURE;
   2388     STDMETHOD(GetDisassembleEffectiveOffset)(THIS_ PULONG64 Offset) PURE;
   2389     STDMETHOD(OutputDisassembly)(THIS_ ULONG OutputControl, ULONG64 Offset, ULONG Flags, PULONG64 EndOffset) PURE;
   2390     STDMETHOD(OutputDisassemblyLines)(THIS_ ULONG OutputControl, ULONG PreviousLines, ULONG TotalLines, ULONG64 Offset, ULONG Flags, PULONG OffsetLine, PULONG64 StartOffset, PULONG64 EndOffset, PULONG64 LineOffsets) PURE;
   2391     STDMETHOD(GetNearInstruction)(THIS_ ULONG64 Offset, LONG Delta, PULONG64 NearOffset) PURE;
   2392     STDMETHOD(GetStackTrace)(THIS_ ULONG64 FrameOffset, ULONG64 StackOffset, ULONG64 InstructionOffset, PDEBUG_STACK_FRAME Frames, ULONG FramesSize, PULONG FramesFilled) PURE;
   2393     STDMETHOD(GetReturnOffset)(THIS_ PULONG64 Offset) PURE;
   2394     STDMETHOD(OutputStackTrace)(THIS_ ULONG OutputControl, PDEBUG_STACK_FRAME Frames, ULONG FramesSize, ULONG Flags) PURE;
   2395     STDMETHOD(GetDebuggeeType)(THIS_ PULONG Class, PULONG Qualifier) PURE;
   2396     STDMETHOD(GetActualProcessorType)(THIS_ PULONG Type) PURE;
   2397     STDMETHOD(GetExecutingProcessorType)(THIS_ PULONG Type) PURE;
   2398     STDMETHOD(GetNumberPossibleExecutingProcessorTypes)(THIS_ PULONG Number) PURE;
   2399     STDMETHOD(GetPossibleExecutingProcessorTypes)(THIS_ ULONG Start, ULONG Count, PULONG Types) PURE;
   2400     STDMETHOD(GetNumberProcessors)(THIS_ PULONG Number) PURE;
   2401     STDMETHOD(GetSystemVersion)(THIS_ PULONG PlatformId, PULONG Major, PULONG Minor, PSTR ServicePackString, ULONG ServicePackStringSize, PULONG ServicePackStringUsed, PULONG ServicePackNumber, PSTR BuildString, ULONG BuildStringSize, PULONG BuildStringUsed) PURE;
   2402     STDMETHOD(GetPageSize)(THIS_ PULONG Size) PURE;
   2403     STDMETHOD(IsPointer64Bit)(THIS) PURE;
   2404     STDMETHOD(ReadBugCheckData)(THIS_ PULONG Code, PULONG64 Arg1, PULONG64 Arg2, PULONG64 Arg3, PULONG64 Arg4) PURE;
   2405     STDMETHOD(GetNumberSupportedProcessorTypes)(THIS_ PULONG Number) PURE;
   2406     STDMETHOD(GetSupportedProcessorTypes)(THIS_ ULONG Start, ULONG Count, PULONG Types) PURE;
   2407     STDMETHOD(GetProcessorTypeNames)(THIS_ ULONG Type, PSTR FullNameBuffer, ULONG FullNameBufferSize, PULONG FullNameSize, PSTR AbbrevNameBuffer, ULONG AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
   2408     STDMETHOD(GetEffectiveProcessorType)(THIS_ PULONG Type) PURE;
   2409     STDMETHOD(SetEffectiveProcessorType)(THIS_ ULONG Type) PURE;
   2410     STDMETHOD(GetExecutionStatus)(THIS_ PULONG Status) PURE;
   2411     STDMETHOD(SetExecutionStatus)(THIS_ ULONG Status) PURE;
   2412     STDMETHOD(GetCodeLevel)(THIS_ PULONG Level) PURE;
   2413     STDMETHOD(SetCodeLevel)(THIS_ ULONG Level) PURE;
   2414     STDMETHOD(GetEngineOptions)(THIS_ PULONG Options) PURE;
   2415     STDMETHOD(AddEngineOptions)(THIS_ ULONG Options) PURE;
   2416     STDMETHOD(RemoveEngineOptions)(THIS_ ULONG Options) PURE;
   2417     STDMETHOD(SetEngineOptions)(THIS_ ULONG Options) PURE;
   2418     STDMETHOD(GetSystemErrorControl)(THIS_ PULONG OutputLevel, PULONG BreakLevel) PURE;
   2419     STDMETHOD(SetSystemErrorControl)(THIS_ ULONG OutputLevel, ULONG BreakLevel) PURE;
   2420     STDMETHOD(GetTextMacro)(THIS_ ULONG Slot, PSTR Buffer, ULONG BufferSize, PULONG MacroSize) PURE;
   2421     STDMETHOD(SetTextMacro)(THIS_ ULONG Slot, PCSTR Macro) PURE;
   2422     STDMETHOD(GetRadix)(THIS_ PULONG Radix) PURE;
   2423     STDMETHOD(SetRadix)(THIS_ ULONG Radix) PURE;
   2424     STDMETHOD(Evaluate)(THIS_ PCSTR Expression, ULONG DesiredType, PDEBUG_VALUE Value, PULONG RemainderIndex) PURE;
   2425     STDMETHOD(CoerceValue)(THIS_ PDEBUG_VALUE In, ULONG OutType, PDEBUG_VALUE Out) PURE;
   2426     STDMETHOD(CoerceValues)(THIS_ ULONG Count, PDEBUG_VALUE In, PULONG OutTypes, PDEBUG_VALUE Out) PURE;
   2427     STDMETHOD(Execute)(THIS_ ULONG OutputControl, PCSTR Command, ULONG Flags) PURE;
   2428     STDMETHOD(ExecuteCommandFile)(THIS_ ULONG OutputControl, PCSTR CommandFile, ULONG Flags) PURE;
   2429     STDMETHOD(GetNumberBreakpoints)(THIS_ PULONG Number) PURE;
   2430     STDMETHOD(GetBreakpointByIndex)(THIS_ ULONG Index, PDEBUG_BREAKPOINT *Bp) PURE;
   2431     STDMETHOD(GetBreakpointById)(THIS_ ULONG Id, PDEBUG_BREAKPOINT *Bp) PURE;
   2432     STDMETHOD(GetBreakpointParameters)(THIS_ ULONG Count, PULONG Ids, ULONG Start, PDEBUG_BREAKPOINT_PARAMETERS Params) PURE;
   2433     STDMETHOD(AddBreakpoint)(THIS_ ULONG Type, ULONG DesiredId, PDEBUG_BREAKPOINT *Bp) PURE;
   2434     STDMETHOD(RemoveBreakpoint)(THIS_ PDEBUG_BREAKPOINT Bp) PURE;
   2435     STDMETHOD(AddExtension)(THIS_ PCSTR Path, ULONG Flags, PULONG64 Handle) PURE;
   2436     STDMETHOD(RemoveExtension)(THIS_ ULONG64 Handle) PURE;
   2437     STDMETHOD(GetExtensionByPath)(THIS_ PCSTR Path, PULONG64 Handle) PURE;
   2438     STDMETHOD(CallExtension)(THIS_ ULONG64 Handle, PCSTR Function, PCSTR Arguments) PURE;
   2439     STDMETHOD(GetExtensionFunction)(THIS_ ULONG64 Handle, PCSTR FuncName, FARPROC *Function) PURE;
   2440     STDMETHOD(GetWindbgExtensionApis32)(THIS_ PWINDBG_EXTENSION_APIS32 Api) PURE;
   2441     STDMETHOD(GetWindbgExtensionApis64)(THIS_ PWINDBG_EXTENSION_APIS64 Api) PURE;
   2442     STDMETHOD(GetNumberEventFilters)(THIS_ PULONG SpecificEvents, PULONG SpecificExceptions, PULONG ArbitraryExceptions) PURE;
   2443     STDMETHOD(GetEventFilterText)(THIS_ ULONG Index, PSTR Buffer, ULONG BufferSize, PULONG TextSize) PURE;
   2444     STDMETHOD(GetEventFilterCommand)(THIS_ ULONG Index, PSTR Buffer, ULONG BufferSize, PULONG CommandSize) PURE;
   2445     STDMETHOD(SetEventFilterCommand)(THIS_ ULONG Index, PCSTR Command) PURE;
   2446     STDMETHOD(GetSpecificFilterParameters)(THIS_ ULONG Start, ULONG Count, PDEBUG_SPECIFIC_FILTER_PARAMETERS Params) PURE;
   2447     STDMETHOD(SetSpecificFilterParameters)(THIS_ ULONG Start, ULONG Count, PDEBUG_SPECIFIC_FILTER_PARAMETERS Params) PURE;
   2448     STDMETHOD(GetSpecificFilterArgument)(THIS_ ULONG Index, PSTR Buffer, ULONG BufferSize, PULONG ArgumentSize) PURE;
   2449     STDMETHOD(SetSpecificFilterArgument)(THIS_ ULONG Index, PCSTR Argument) PURE;
   2450     STDMETHOD(GetExceptionFilterParameters)(THIS_ ULONG Count, PULONG Codes, ULONG Start, PDEBUG_EXCEPTION_FILTER_PARAMETERS Params) PURE;
   2451     STDMETHOD(SetExceptionFilterParameters)(THIS_ ULONG Count, PDEBUG_EXCEPTION_FILTER_PARAMETERS Params) PURE;
   2452     STDMETHOD(GetExceptionFilterSecondCommand)(THIS_ ULONG Index, PSTR Buffer, ULONG BufferSize, PULONG CommandSize) PURE;
   2453     STDMETHOD(SetExceptionFilterSecondCommand)(THIS_ ULONG Index, PCSTR Command) PURE;
   2454     STDMETHOD(WaitForEvent)(THIS_ ULONG Flags, ULONG Timeout) PURE;
   2455     STDMETHOD(GetLastEventInformation)(THIS_ PULONG Type, PULONG ProcessId, PULONG ThreadId, PVOID ExtraInformation, ULONG ExtraInformationSize, PULONG ExtraInformationUsed, PSTR Description, ULONG DescriptionSize, PULONG DescriptionUsed) PURE;
   2456     STDMETHOD(GetCurrentTimeDate)(THIS_ PULONG TimeDate) PURE;
   2457     STDMETHOD(GetCurrentSystemUpTime)(THIS_ PULONG UpTime) PURE;
   2458     STDMETHOD(GetDumpFormatFlags)(THIS_ PULONG FormatFlags) PURE;
   2459     STDMETHOD(GetNumberTextReplacements)(THIS_ PULONG NumRepl) PURE;
   2460     STDMETHOD(GetTextReplacement)(THIS_ PCSTR SrcText, ULONG Index, PSTR SrcBuffer, ULONG SrcBufferSize, PULONG SrcSize, PSTR DstBuffer, ULONG DstBufferSize, PULONG DstSize) PURE;
   2461     STDMETHOD(SetTextReplacement)(THIS_ PCSTR SrcText, PCSTR DstText) PURE;
   2462     STDMETHOD(RemoveTextReplacements)(THIS) PURE;
   2463     STDMETHOD(OutputTextReplacements)(THIS_ ULONG OutputControl, ULONG Flags) PURE;
   2464     STDMETHOD(GetAssemblyOptions)(THIS_ PULONG Options) PURE;
   2465     STDMETHOD(AddAssemblyOptions)(THIS_ ULONG Options) PURE;
   2466     STDMETHOD(RemoveAssemblyOptions)(THIS_ ULONG Options) PURE;
   2467     STDMETHOD(SetAssemblyOptions)(THIS_ ULONG Options) PURE;
   2468     STDMETHOD(GetExpressionSyntax)(THIS_ PULONG Flags) PURE;
   2469     STDMETHOD(SetExpressionSyntax)(THIS_ ULONG Flags) PURE;
   2470     STDMETHOD(SetExpressionSyntaxByName)(THIS_ PCSTR AbbrevName) PURE;
   2471     STDMETHOD(GetNumberExpressionSyntaxes)(THIS_ PULONG Number) PURE;
   2472     STDMETHOD(GetExpressionSyntaxNames)(THIS_ ULONG Index, PSTR FullNameBuffer, ULONG FullNameBufferSize, PULONG FullNameSize, PSTR AbbrevNameBuffer, ULONG AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
   2473     STDMETHOD(GetNumberEvents)(THIS_ PULONG Events) PURE;
   2474     STDMETHOD(GetEventIndexDescription)(THIS_ ULONG Index, ULONG Which, PSTR Buffer, ULONG BufferSize, PULONG DescSize) PURE;
   2475     STDMETHOD(GetCurrentEventIndex)(THIS_ PULONG Index) PURE;
   2476     STDMETHOD(SetNextEventIndex)(THIS_ ULONG Relation, ULONG Value, PULONG NextIndex) PURE;
   2477     STDMETHOD(GetLogFileWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG FileSize, PBOOL Append) PURE;
   2478     STDMETHOD(OpenLogFileWide)(THIS_ PCWSTR File, WINBOOL Append) PURE;
   2479     STDMETHOD(InputWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG InputSize) PURE;
   2480     STDMETHOD(ReturnInputWide)(THIS_ PCWSTR Buffer) PURE;
   2481     STDMETHODV(OutputWide)(THIS_ ULONG Mask, PCWSTR Format, ...) PURE;
   2482     STDMETHOD(OutputVaListWide)(THIS_ ULONG Mask, PCWSTR Format, va_list Args) PURE;
   2483     STDMETHODV(ControlledOutputWide)(THIS_ ULONG OutputControl, ULONG Mask, PCWSTR Format, ...) PURE;
   2484     STDMETHOD(ControlledOutputVaListWide)(THIS_ ULONG OutputControl, ULONG Mask, PCWSTR Format, va_list Args) PURE;
   2485     STDMETHODV(OutputPromptWide)(THIS_ ULONG OutputControl, PCWSTR Format, ...) PURE;
   2486     STDMETHOD(OutputPromptVaListWide)(THIS_ ULONG OutputControl, PCWSTR Format, va_list Args) PURE;
   2487     STDMETHOD(GetPromptTextWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG TextSize) PURE;
   2488     STDMETHOD(AssembleWide)(THIS_ ULONG64 Offset, PCWSTR Instr, PULONG64 EndOffset) PURE;
   2489     STDMETHOD(DisassembleWide)(THIS_ ULONG64 Offset, ULONG Flags, PWSTR Buffer, ULONG BufferSize, PULONG DisassemblySize, PULONG64 EndOffset) PURE;
   2490     STDMETHOD(GetProcessorTypeNamesWide)(THIS_ ULONG Type, PWSTR FullNameBuffer, ULONG FullNameBufferSize, PULONG FullNameSize, PWSTR AbbrevNameBuffer, ULONG AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
   2491     STDMETHOD(GetTextMacroWide)(THIS_ ULONG Slot, PWSTR Buffer, ULONG BufferSize, PULONG MacroSize) PURE;
   2492     STDMETHOD(SetTextMacroWide)(THIS_ ULONG Slot, PCWSTR Macro) PURE;
   2493     STDMETHOD(EvaluateWide)(THIS_ PCWSTR Expression, ULONG DesiredType, PDEBUG_VALUE Value, PULONG RemainderIndex) PURE;
   2494     STDMETHOD(ExecuteWide)(THIS_ ULONG OutputControl, PCWSTR Command, ULONG Flags) PURE;
   2495     STDMETHOD(ExecuteCommandFileWide)(THIS_ ULONG OutputControl, PCWSTR CommandFile, ULONG Flags) PURE;
   2496     STDMETHOD(GetBreakpointByIndex2)(THIS_ ULONG Index, PDEBUG_BREAKPOINT2 *Bp) PURE;
   2497     STDMETHOD(GetBreakpointById2)(THIS_ ULONG Id, PDEBUG_BREAKPOINT2 *Bp) PURE;
   2498     STDMETHOD(AddBreakpoint2)(THIS_ ULONG Type, ULONG DesiredId, PDEBUG_BREAKPOINT2 *Bp) PURE;
   2499     STDMETHOD(RemoveBreakpoint2)(THIS_ PDEBUG_BREAKPOINT2 Bp) PURE;
   2500     STDMETHOD(AddExtensionWide)(THIS_ PCWSTR Path, ULONG Flags, PULONG64 Handle) PURE;
   2501     STDMETHOD(GetExtensionByPathWide)(THIS_ PCWSTR Path, PULONG64 Handle) PURE;
   2502     STDMETHOD(CallExtensionWide)(THIS_ ULONG64 Handle, PCWSTR Function, PCWSTR Arguments) PURE;
   2503     STDMETHOD(GetExtensionFunctionWide)(THIS_ ULONG64 Handle, PCWSTR FuncName, FARPROC *Function) PURE;
   2504     STDMETHOD(GetEventFilterTextWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG BufferSize, PULONG TextSize) PURE;
   2505     STDMETHOD(GetEventFilterCommandWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG BufferSize, PULONG CommandSize) PURE;
   2506     STDMETHOD(SetEventFilterCommandWide)(THIS_ ULONG Index, PCWSTR Command) PURE;
   2507     STDMETHOD(GetSpecificFilterArgumentWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG BufferSize, PULONG ArgumentSize) PURE;
   2508     STDMETHOD(SetSpecificFilterArgumentWide)(THIS_ ULONG Index, PCWSTR Argument) PURE;
   2509     STDMETHOD(GetExceptionFilterSecondCommandWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG BufferSize, PULONG CommandSize) PURE;
   2510     STDMETHOD(SetExceptionFilterSecondCommandWide)(THIS_ ULONG Index, PCWSTR Command) PURE;
   2511     STDMETHOD(GetLastEventInformationWide)(THIS_ PULONG Type, PULONG ProcessId, PULONG ThreadId, PVOID ExtraInformation, ULONG ExtraInformationSize, PULONG ExtraInformationUsed, PWSTR Description, ULONG DescriptionSize, PULONG DescriptionUsed) PURE;
   2512     STDMETHOD(GetTextReplacementWide)(THIS_ PCWSTR SrcText, ULONG Index, PWSTR SrcBuffer, ULONG SrcBufferSize, PULONG SrcSize, PWSTR DstBuffer, ULONG DstBufferSize, PULONG DstSize) PURE;
   2513     STDMETHOD(SetTextReplacementWide)(THIS_ PCWSTR SrcText, PCWSTR DstText) PURE;
   2514     STDMETHOD(SetExpressionSyntaxByNameWide)(THIS_ PCWSTR AbbrevName) PURE;
   2515     STDMETHOD(GetExpressionSyntaxNamesWide)(THIS_ ULONG Index, PWSTR FullNameBuffer, ULONG FullNameBufferSize, PULONG FullNameSize, PWSTR AbbrevNameBuffer, ULONG AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
   2516     STDMETHOD(GetEventIndexDescriptionWide)(THIS_ ULONG Index, ULONG Which, PWSTR Buffer, ULONG BufferSize, PULONG DescSize) PURE;
   2517     STDMETHOD(GetLogFile2)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG FileSize, PULONG Flags) PURE;
   2518     STDMETHOD(OpenLogFile2)(THIS_ PCSTR File, ULONG Flags) PURE;
   2519     STDMETHOD(GetLogFile2Wide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG FileSize, PULONG Flags) PURE;
   2520     STDMETHOD(OpenLogFile2Wide)(THIS_ PCWSTR File, ULONG Flags) PURE;
   2521     STDMETHOD(GetSystemVersionValues)(THIS_ PULONG PlatformId, PULONG Win32Major, PULONG Win32Minor, PULONG KdMajor, PULONG KdMinor) PURE;
   2522     STDMETHOD(GetSystemVersionString)(THIS_ ULONG Which, PSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
   2523     STDMETHOD(GetSystemVersionStringWide)(THIS_ ULONG Which, PWSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
   2524     STDMETHOD(GetContextStackTrace)(THIS_ PVOID StartContext, ULONG StartContextSize, PDEBUG_STACK_FRAME Frames, ULONG FramesSize, PVOID FrameContexts, ULONG FrameContextsSize, ULONG FrameContextsEntrySize, PULONG FramesFilled) PURE;
   2525     STDMETHOD(OutputContextStackTrace)(THIS_ ULONG OutputControl, PDEBUG_STACK_FRAME Frames, ULONG FramesSize, PVOID FrameContexts, ULONG FrameContextsSize, ULONG FrameContextsEntrySize, ULONG Flags) PURE;
   2526     STDMETHOD(GetStoredEventInformation)(THIS_ PULONG Type, PULONG ProcessId, PULONG ThreadId, PVOID Context, ULONG ContextSize, PULONG ContextUsed, PVOID ExtraInformation, ULONG ExtraInformationSize, PULONG ExtraInformationUsed) PURE;
   2527     STDMETHOD(GetManagedStatus)(THIS_ PULONG Flags, ULONG WhichString, PSTR String, ULONG StringSize, PULONG StringNeeded) PURE;
   2528     STDMETHOD(GetManagedStatusWide)(THIS_ PULONG Flags, ULONG WhichString, PWSTR String, ULONG StringSize, PULONG StringNeeded) PURE;
   2529     STDMETHOD(ResetManagedStatus)(THIS_ ULONG Flags) PURE;
   2530     STDMETHOD(GetStackTraceEx)(THIS_ ULONG64 FrameOffset, ULONG64 StackOffset, ULONG64 InstructionOffset, PDEBUG_STACK_FRAME_EX Frames, ULONG FramesSize, PULONG FramesFilled) PURE;
   2531     STDMETHOD(OutputStackTraceEx)(THIS_ ULONG OutputControl, PDEBUG_STACK_FRAME_EX Frames, ULONG FramesSize, ULONG Flags) PURE;
   2532     STDMETHOD(GetContextStackTraceEx)(THIS_ PVOID StartContext, ULONG StartContextSize, PDEBUG_STACK_FRAME_EX Frames, ULONG FramesSize, PVOID FrameContexts, ULONG FrameContextsSize, ULONG FrameContextsEntrySize, PULONG FramesFilled) PURE;
   2533     STDMETHOD(OutputContextStackTraceEx)(THIS_ ULONG OutputControl, PDEBUG_STACK_FRAME_EX Frames, ULONG FramesSize, PVOID FrameContexts, ULONG FrameContextsSize, ULONG FrameContextsEntrySize, ULONG Flags) PURE;
   2534     STDMETHOD(GetBreakpointByGuid)(THIS_ LPGUID Guid, PDEBUG_BREAKPOINT3 *Bp) PURE;
   2535     STDMETHOD(GetExecutionStatusEx)(THIS_ PULONG Status) PURE;
   2536     STDMETHOD(GetSynchronizationStatus)(THIS_ PULONG SendsAttempted, PULONG SecondsSinceLastResponse) PURE;
   2537   };
   2538 #ifdef __CRT_UUID_DECL
   2539 __CRT_UUID_DECL(IDebugControl6,0xbc0d583f,0x126d,0x43a1,0x9c,0xc4,0xa8,0x60,0xab,0x1d,0x53,0x7b)
   2540 #endif
   2541 
   2542 #define DEBUG_EXEC_FLAGS_NONBLOCK 0x00000001
   2543 
   2544 #undef INTERFACE
   2545 #define INTERFACE IDebugControl7
   2546   DECLARE_INTERFACE_(IDebugControl7, IUnknown) {
   2547     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
   2548     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   2549     STDMETHOD_(ULONG, Release)(THIS) PURE;
   2550     STDMETHOD(GetInterrupt)(THIS) PURE;
   2551     STDMETHOD(SetInterrupt)(THIS_ ULONG Flags) PURE;
   2552     STDMETHOD(GetInterruptTimeout)(THIS_ PULONG Seconds) PURE;
   2553     STDMETHOD(SetInterruptTimeout)(THIS_ ULONG Seconds) PURE;
   2554     STDMETHOD(GetLogFile)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG FileSize, PBOOL Append) PURE;
   2555     STDMETHOD(OpenLogFile)(THIS_ PCSTR File, WINBOOL Append) PURE;
   2556     STDMETHOD(CloseLogFile)(THIS) PURE;
   2557     STDMETHOD(GetLogMask)(THIS_ PULONG Mask) PURE;
   2558     STDMETHOD(SetLogMask)(THIS_ ULONG Mask) PURE;
   2559     STDMETHOD(Input)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG InputSize) PURE;
   2560     STDMETHOD(ReturnInput)(THIS_ PCSTR Buffer) PURE;
   2561     STDMETHODV(Output)(THIS_ ULONG Mask, PCSTR Format, ...) PURE;
   2562     STDMETHOD(OutputVaList)(THIS_ ULONG Mask, PCSTR Format, va_list Args) PURE;
   2563     STDMETHODV(ControlledOutput)(THIS_ ULONG OutputControl, ULONG Mask, PCSTR Format, ...) PURE;
   2564     STDMETHOD(ControlledOutputVaList)(THIS_ ULONG OutputControl, ULONG Mask, PCSTR Format, va_list Args) PURE;
   2565     STDMETHODV(OutputPrompt)(THIS_ ULONG OutputControl, PCSTR Format, ...) PURE;
   2566     STDMETHOD(OutputPromptVaList)(THIS_ ULONG OutputControl, PCSTR Format, va_list Args) PURE;
   2567     STDMETHOD(GetPromptText)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG TextSize) PURE;
   2568     STDMETHOD(OutputCurrentState)(THIS_ ULONG OutputControl, ULONG Flags) PURE;
   2569     STDMETHOD(OutputVersionInformation)(THIS_ ULONG OutputControl) PURE;
   2570     STDMETHOD(GetNotifyEventHandle)(THIS_ PULONG64 Handle) PURE;
   2571     STDMETHOD(SetNotifyEventHandle)(THIS_ ULONG64 Handle) PURE;
   2572     STDMETHOD(Assemble)(THIS_ ULONG64 Offset, PCSTR Instr, PULONG64 EndOffset) PURE;
   2573     STDMETHOD(Disassemble)(THIS_ ULONG64 Offset, ULONG Flags, PSTR Buffer, ULONG BufferSize, PULONG DisassemblySize, PULONG64 EndOffset) PURE;
   2574     STDMETHOD(GetDisassembleEffectiveOffset)(THIS_ PULONG64 Offset) PURE;
   2575     STDMETHOD(OutputDisassembly)(THIS_ ULONG OutputControl, ULONG64 Offset, ULONG Flags, PULONG64 EndOffset) PURE;
   2576     STDMETHOD(OutputDisassemblyLines)(THIS_ ULONG OutputControl, ULONG PreviousLines, ULONG TotalLines, ULONG64 Offset, ULONG Flags, PULONG OffsetLine, PULONG64 StartOffset, PULONG64 EndOffset, PULONG64 LineOffsets) PURE;
   2577     STDMETHOD(GetNearInstruction)(THIS_ ULONG64 Offset, LONG Delta, PULONG64 NearOffset) PURE;
   2578     STDMETHOD(GetStackTrace)(THIS_ ULONG64 FrameOffset, ULONG64 StackOffset, ULONG64 InstructionOffset, PDEBUG_STACK_FRAME Frames, ULONG FramesSize, PULONG FramesFilled) PURE;
   2579     STDMETHOD(GetReturnOffset)(THIS_ PULONG64 Offset) PURE;
   2580     STDMETHOD(OutputStackTrace)(THIS_ ULONG OutputControl, PDEBUG_STACK_FRAME Frames, ULONG FramesSize, ULONG Flags) PURE;
   2581     STDMETHOD(GetDebuggeeType)(THIS_ PULONG Class, PULONG Qualifier) PURE;
   2582     STDMETHOD(GetActualProcessorType)(THIS_ PULONG Type) PURE;
   2583     STDMETHOD(GetExecutingProcessorType)(THIS_ PULONG Type) PURE;
   2584     STDMETHOD(GetNumberPossibleExecutingProcessorTypes)(THIS_ PULONG Number) PURE;
   2585     STDMETHOD(GetPossibleExecutingProcessorTypes)(THIS_ ULONG Start, ULONG Count, PULONG Types) PURE;
   2586     STDMETHOD(GetNumberProcessors)(THIS_ PULONG Number) PURE;
   2587     STDMETHOD(GetSystemVersion)(THIS_ PULONG PlatformId, PULONG Major, PULONG Minor, PSTR ServicePackString, ULONG ServicePackStringSize, PULONG ServicePackStringUsed, PULONG ServicePackNumber, PSTR BuildString, ULONG BuildStringSize, PULONG BuildStringUsed) PURE;
   2588     STDMETHOD(GetPageSize)(THIS_ PULONG Size) PURE;
   2589     STDMETHOD(IsPointer64Bit)(THIS) PURE;
   2590     STDMETHOD(ReadBugCheckData)(THIS_ PULONG Code, PULONG64 Arg1, PULONG64 Arg2, PULONG64 Arg3, PULONG64 Arg4) PURE;
   2591     STDMETHOD(GetNumberSupportedProcessorTypes)(THIS_ PULONG Number) PURE;
   2592     STDMETHOD(GetSupportedProcessorTypes)(THIS_ ULONG Start, ULONG Count, PULONG Types) PURE;
   2593     STDMETHOD(GetProcessorTypeNames)(THIS_ ULONG Type, PSTR FullNameBuffer, ULONG FullNameBufferSize, PULONG FullNameSize, PSTR AbbrevNameBuffer, ULONG AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
   2594     STDMETHOD(GetEffectiveProcessorType)(THIS_ PULONG Type) PURE;
   2595     STDMETHOD(SetEffectiveProcessorType)(THIS_ ULONG Type) PURE;
   2596     STDMETHOD(GetExecutionStatus)(THIS_ PULONG Status) PURE;
   2597     STDMETHOD(SetExecutionStatus)(THIS_ ULONG Status) PURE;
   2598     STDMETHOD(GetCodeLevel)(THIS_ PULONG Level) PURE;
   2599     STDMETHOD(SetCodeLevel)(THIS_ ULONG Level) PURE;
   2600     STDMETHOD(GetEngineOptions)(THIS_ PULONG Options) PURE;
   2601     STDMETHOD(AddEngineOptions)(THIS_ ULONG Options) PURE;
   2602     STDMETHOD(RemoveEngineOptions)(THIS_ ULONG Options) PURE;
   2603     STDMETHOD(SetEngineOptions)(THIS_ ULONG Options) PURE;
   2604     STDMETHOD(GetSystemErrorControl)(THIS_ PULONG OutputLevel, PULONG BreakLevel) PURE;
   2605     STDMETHOD(SetSystemErrorControl)(THIS_ ULONG OutputLevel, ULONG BreakLevel) PURE;
   2606     STDMETHOD(GetTextMacro)(THIS_ ULONG Slot, PSTR Buffer, ULONG BufferSize, PULONG MacroSize) PURE;
   2607     STDMETHOD(SetTextMacro)(THIS_ ULONG Slot, PCSTR Macro) PURE;
   2608     STDMETHOD(GetRadix)(THIS_ PULONG Radix) PURE;
   2609     STDMETHOD(SetRadix)(THIS_ ULONG Radix) PURE;
   2610     STDMETHOD(Evaluate)(THIS_ PCSTR Expression, ULONG DesiredType, PDEBUG_VALUE Value, PULONG RemainderIndex) PURE;
   2611     STDMETHOD(CoerceValue)(THIS_ PDEBUG_VALUE In, ULONG OutType, PDEBUG_VALUE Out) PURE;
   2612     STDMETHOD(CoerceValues)(THIS_ ULONG Count, PDEBUG_VALUE In, PULONG OutTypes, PDEBUG_VALUE Out) PURE;
   2613     STDMETHOD(Execute)(THIS_ ULONG OutputControl, PCSTR Command, ULONG Flags) PURE;
   2614     STDMETHOD(ExecuteCommandFile)(THIS_ ULONG OutputControl, PCSTR CommandFile, ULONG Flags) PURE;
   2615     STDMETHOD(GetNumberBreakpoints)(THIS_ PULONG Number) PURE;
   2616     STDMETHOD(GetBreakpointByIndex)(THIS_ ULONG Index, PDEBUG_BREAKPOINT *Bp) PURE;
   2617     STDMETHOD(GetBreakpointById)(THIS_ ULONG Id, PDEBUG_BREAKPOINT *Bp) PURE;
   2618     STDMETHOD(GetBreakpointParameters)(THIS_ ULONG Count, PULONG Ids, ULONG Start, PDEBUG_BREAKPOINT_PARAMETERS Params) PURE;
   2619     STDMETHOD(AddBreakpoint)(THIS_ ULONG Type, ULONG DesiredId, PDEBUG_BREAKPOINT *Bp) PURE;
   2620     STDMETHOD(RemoveBreakpoint)(THIS_ PDEBUG_BREAKPOINT Bp) PURE;
   2621     STDMETHOD(AddExtension)(THIS_ PCSTR Path, ULONG Flags, PULONG64 Handle) PURE;
   2622     STDMETHOD(RemoveExtension)(THIS_ ULONG64 Handle) PURE;
   2623     STDMETHOD(GetExtensionByPath)(THIS_ PCSTR Path, PULONG64 Handle) PURE;
   2624     STDMETHOD(CallExtension)(THIS_ ULONG64 Handle, PCSTR Function, PCSTR Arguments) PURE;
   2625     STDMETHOD(GetExtensionFunction)(THIS_ ULONG64 Handle, PCSTR FuncName, FARPROC *Function) PURE;
   2626     STDMETHOD(GetWindbgExtensionApis32)(THIS_ PWINDBG_EXTENSION_APIS32 Api) PURE;
   2627     STDMETHOD(GetWindbgExtensionApis64)(THIS_ PWINDBG_EXTENSION_APIS64 Api) PURE;
   2628     STDMETHOD(GetNumberEventFilters)(THIS_ PULONG SpecificEvents, PULONG SpecificExceptions, PULONG ArbitraryExceptions) PURE;
   2629     STDMETHOD(GetEventFilterText)(THIS_ ULONG Index, PSTR Buffer, ULONG BufferSize, PULONG TextSize) PURE;
   2630     STDMETHOD(GetEventFilterCommand)(THIS_ ULONG Index, PSTR Buffer, ULONG BufferSize, PULONG CommandSize) PURE;
   2631     STDMETHOD(SetEventFilterCommand)(THIS_ ULONG Index, PCSTR Command) PURE;
   2632     STDMETHOD(GetSpecificFilterParameters)(THIS_ ULONG Start, ULONG Count, PDEBUG_SPECIFIC_FILTER_PARAMETERS Params) PURE;
   2633     STDMETHOD(SetSpecificFilterParameters)(THIS_ ULONG Start, ULONG Count, PDEBUG_SPECIFIC_FILTER_PARAMETERS Params) PURE;
   2634     STDMETHOD(GetSpecificFilterArgument)(THIS_ ULONG Index, PSTR Buffer, ULONG BufferSize, PULONG ArgumentSize) PURE;
   2635     STDMETHOD(SetSpecificFilterArgument)(THIS_ ULONG Index, PCSTR Argument) PURE;
   2636     STDMETHOD(GetExceptionFilterParameters)(THIS_ ULONG Count, PULONG Codes, ULONG Start, PDEBUG_EXCEPTION_FILTER_PARAMETERS Params) PURE;
   2637     STDMETHOD(SetExceptionFilterParameters)(THIS_ ULONG Count, PDEBUG_EXCEPTION_FILTER_PARAMETERS Params) PURE;
   2638     STDMETHOD(GetExceptionFilterSecondCommand)(THIS_ ULONG Index, PSTR Buffer, ULONG BufferSize, PULONG CommandSize) PURE;
   2639     STDMETHOD(SetExceptionFilterSecondCommand)(THIS_ ULONG Index, PCSTR Command) PURE;
   2640     STDMETHOD(WaitForEvent)(THIS_ ULONG Flags, ULONG Timeout) PURE;
   2641     STDMETHOD(GetLastEventInformation)(THIS_ PULONG Type, PULONG ProcessId, PULONG ThreadId, PVOID ExtraInformation, ULONG ExtraInformationSize, PULONG ExtraInformationUsed, PSTR Description, ULONG DescriptionSize, PULONG DescriptionUsed) PURE;
   2642     STDMETHOD(GetCurrentTimeDate)(THIS_ PULONG TimeDate) PURE;
   2643     STDMETHOD(GetCurrentSystemUpTime)(THIS_ PULONG UpTime) PURE;
   2644     STDMETHOD(GetDumpFormatFlags)(THIS_ PULONG FormatFlags) PURE;
   2645     STDMETHOD(GetNumberTextReplacements)(THIS_ PULONG NumRepl) PURE;
   2646     STDMETHOD(GetTextReplacement)(THIS_ PCSTR SrcText, ULONG Index, PSTR SrcBuffer, ULONG SrcBufferSize, PULONG SrcSize, PSTR DstBuffer, ULONG DstBufferSize, PULONG DstSize) PURE;
   2647     STDMETHOD(SetTextReplacement)(THIS_ PCSTR SrcText, PCSTR DstText) PURE;
   2648     STDMETHOD(RemoveTextReplacements)(THIS) PURE;
   2649     STDMETHOD(OutputTextReplacements)(THIS_ ULONG OutputControl, ULONG Flags) PURE;
   2650     STDMETHOD(GetAssemblyOptions)(THIS_ PULONG Options) PURE;
   2651     STDMETHOD(AddAssemblyOptions)(THIS_ ULONG Options) PURE;
   2652     STDMETHOD(RemoveAssemblyOptions)(THIS_ ULONG Options) PURE;
   2653     STDMETHOD(SetAssemblyOptions)(THIS_ ULONG Options) PURE;
   2654     STDMETHOD(GetExpressionSyntax)(THIS_ PULONG Flags) PURE;
   2655     STDMETHOD(SetExpressionSyntax)(THIS_ ULONG Flags) PURE;
   2656     STDMETHOD(SetExpressionSyntaxByName)(THIS_ PCSTR AbbrevName) PURE;
   2657     STDMETHOD(GetNumberExpressionSyntaxes)(THIS_ PULONG Number) PURE;
   2658     STDMETHOD(GetExpressionSyntaxNames)(THIS_ ULONG Index, PSTR FullNameBuffer, ULONG FullNameBufferSize, PULONG FullNameSize, PSTR AbbrevNameBuffer, ULONG AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
   2659     STDMETHOD(GetNumberEvents)(THIS_ PULONG Events) PURE;
   2660     STDMETHOD(GetEventIndexDescription)(THIS_ ULONG Index, ULONG Which, PSTR Buffer, ULONG BufferSize, PULONG DescSize) PURE;
   2661     STDMETHOD(GetCurrentEventIndex)(THIS_ PULONG Index) PURE;
   2662     STDMETHOD(SetNextEventIndex)(THIS_ ULONG Relation, ULONG Value, PULONG NextIndex) PURE;
   2663     STDMETHOD(GetLogFileWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG FileSize, PBOOL Append) PURE;
   2664     STDMETHOD(OpenLogFileWide)(THIS_ PCWSTR File, WINBOOL Append) PURE;
   2665     STDMETHOD(InputWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG InputSize) PURE;
   2666     STDMETHOD(ReturnInputWide)(THIS_ PCWSTR Buffer) PURE;
   2667     STDMETHODV(OutputWide)(THIS_ ULONG Mask, PCWSTR Format, ...) PURE;
   2668     STDMETHOD(OutputVaListWide)(THIS_ ULONG Mask, PCWSTR Format, va_list Args) PURE;
   2669     STDMETHODV(ControlledOutputWide)(THIS_ ULONG OutputControl, ULONG Mask, PCWSTR Format, ...) PURE;
   2670     STDMETHOD(ControlledOutputVaListWide)(THIS_ ULONG OutputControl, ULONG Mask, PCWSTR Format, va_list Args) PURE;
   2671     STDMETHODV(OutputPromptWide)(THIS_ ULONG OutputControl, PCWSTR Format, ...) PURE;
   2672     STDMETHOD(OutputPromptVaListWide)(THIS_ ULONG OutputControl, PCWSTR Format, va_list Args) PURE;
   2673     STDMETHOD(GetPromptTextWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG TextSize) PURE;
   2674     STDMETHOD(AssembleWide)(THIS_ ULONG64 Offset, PCWSTR Instr, PULONG64 EndOffset) PURE;
   2675     STDMETHOD(DisassembleWide)(THIS_ ULONG64 Offset, ULONG Flags, PWSTR Buffer, ULONG BufferSize, PULONG DisassemblySize, PULONG64 EndOffset) PURE;
   2676     STDMETHOD(GetProcessorTypeNamesWide)(THIS_ ULONG Type, PWSTR FullNameBuffer, ULONG FullNameBufferSize, PULONG FullNameSize, PWSTR AbbrevNameBuffer, ULONG AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
   2677     STDMETHOD(GetTextMacroWide)(THIS_ ULONG Slot, PWSTR Buffer, ULONG BufferSize, PULONG MacroSize) PURE;
   2678     STDMETHOD(SetTextMacroWide)(THIS_ ULONG Slot, PCWSTR Macro) PURE;
   2679     STDMETHOD(EvaluateWide)(THIS_ PCWSTR Expression, ULONG DesiredType, PDEBUG_VALUE Value, PULONG RemainderIndex) PURE;
   2680     STDMETHOD(ExecuteWide)(THIS_ ULONG OutputControl, PCWSTR Command, ULONG Flags) PURE;
   2681     STDMETHOD(ExecuteCommandFileWide)(THIS_ ULONG OutputControl, PCWSTR CommandFile, ULONG Flags) PURE;
   2682     STDMETHOD(GetBreakpointByIndex2)(THIS_ ULONG Index, PDEBUG_BREAKPOINT2 *Bp) PURE;
   2683     STDMETHOD(GetBreakpointById2)(THIS_ ULONG Id, PDEBUG_BREAKPOINT2 *Bp) PURE;
   2684     STDMETHOD(AddBreakpoint2)(THIS_ ULONG Type, ULONG DesiredId, PDEBUG_BREAKPOINT2 *Bp) PURE;
   2685     STDMETHOD(RemoveBreakpoint2)(THIS_ PDEBUG_BREAKPOINT2 Bp) PURE;
   2686     STDMETHOD(AddExtensionWide)(THIS_ PCWSTR Path, ULONG Flags, PULONG64 Handle) PURE;
   2687     STDMETHOD(GetExtensionByPathWide)(THIS_ PCWSTR Path, PULONG64 Handle) PURE;
   2688     STDMETHOD(CallExtensionWide)(THIS_ ULONG64 Handle, PCWSTR Function, PCWSTR Arguments) PURE;
   2689     STDMETHOD(GetExtensionFunctionWide)(THIS_ ULONG64 Handle, PCWSTR FuncName, FARPROC *Function) PURE;
   2690     STDMETHOD(GetEventFilterTextWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG BufferSize, PULONG TextSize) PURE;
   2691     STDMETHOD(GetEventFilterCommandWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG BufferSize, PULONG CommandSize) PURE;
   2692     STDMETHOD(SetEventFilterCommandWide)(THIS_ ULONG Index, PCWSTR Command) PURE;
   2693     STDMETHOD(GetSpecificFilterArgumentWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG BufferSize, PULONG ArgumentSize) PURE;
   2694     STDMETHOD(SetSpecificFilterArgumentWide)(THIS_ ULONG Index, PCWSTR Argument) PURE;
   2695     STDMETHOD(GetExceptionFilterSecondCommandWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG BufferSize, PULONG CommandSize) PURE;
   2696     STDMETHOD(SetExceptionFilterSecondCommandWide)(THIS_ ULONG Index, PCWSTR Command) PURE;
   2697     STDMETHOD(GetLastEventInformationWide)(THIS_ PULONG Type, PULONG ProcessId, PULONG ThreadId, PVOID ExtraInformation, ULONG ExtraInformationSize, PULONG ExtraInformationUsed, PWSTR Description, ULONG DescriptionSize, PULONG DescriptionUsed) PURE;
   2698     STDMETHOD(GetTextReplacementWide)(THIS_ PCWSTR SrcText, ULONG Index, PWSTR SrcBuffer, ULONG SrcBufferSize, PULONG SrcSize, PWSTR DstBuffer, ULONG DstBufferSize, PULONG DstSize) PURE;
   2699     STDMETHOD(SetTextReplacementWide)(THIS_ PCWSTR SrcText, PCWSTR DstText) PURE;
   2700     STDMETHOD(SetExpressionSyntaxByNameWide)(THIS_ PCWSTR AbbrevName) PURE;
   2701     STDMETHOD(GetExpressionSyntaxNamesWide)(THIS_ ULONG Index, PWSTR FullNameBuffer, ULONG FullNameBufferSize, PULONG FullNameSize, PWSTR AbbrevNameBuffer, ULONG AbbrevNameBufferSize, PULONG AbbrevNameSize) PURE;
   2702     STDMETHOD(GetEventIndexDescriptionWide)(THIS_ ULONG Index, ULONG Which, PWSTR Buffer, ULONG BufferSize, PULONG DescSize) PURE;
   2703     STDMETHOD(GetLogFile2)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG FileSize, PULONG Flags) PURE;
   2704     STDMETHOD(OpenLogFile2)(THIS_ PCSTR File, ULONG Flags) PURE;
   2705     STDMETHOD(GetLogFile2Wide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG FileSize, PULONG Flags) PURE;
   2706     STDMETHOD(OpenLogFile2Wide)(THIS_ PCWSTR File, ULONG Flags) PURE;
   2707     STDMETHOD(GetSystemVersionValues)(THIS_ PULONG PlatformId, PULONG Win32Major, PULONG Win32Minor, PULONG KdMajor, PULONG KdMinor) PURE;
   2708     STDMETHOD(GetSystemVersionString)(THIS_ ULONG Which, PSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
   2709     STDMETHOD(GetSystemVersionStringWide)(THIS_ ULONG Which, PWSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
   2710     STDMETHOD(GetContextStackTrace)(THIS_ PVOID StartContext, ULONG StartContextSize, PDEBUG_STACK_FRAME Frames, ULONG FramesSize, PVOID FrameContexts, ULONG FrameContextsSize, ULONG FrameContextsEntrySize, PULONG FramesFilled) PURE;
   2711     STDMETHOD(OutputContextStackTrace)(THIS_ ULONG OutputControl, PDEBUG_STACK_FRAME Frames, ULONG FramesSize, PVOID FrameContexts, ULONG FrameContextsSize, ULONG FrameContextsEntrySize, ULONG Flags) PURE;
   2712     STDMETHOD(GetStoredEventInformation)(THIS_ PULONG Type, PULONG ProcessId, PULONG ThreadId, PVOID Context, ULONG ContextSize, PULONG ContextUsed, PVOID ExtraInformation, ULONG ExtraInformationSize, PULONG ExtraInformationUsed) PURE;
   2713     STDMETHOD(GetManagedStatus)(THIS_ PULONG Flags, ULONG WhichString, PSTR String, ULONG StringSize, PULONG StringNeeded) PURE;
   2714     STDMETHOD(GetManagedStatusWide)(THIS_ PULONG Flags, ULONG WhichString, PWSTR String, ULONG StringSize, PULONG StringNeeded) PURE;
   2715     STDMETHOD(ResetManagedStatus)(THIS_ ULONG Flags) PURE;
   2716     STDMETHOD(GetStackTraceEx)(THIS_ ULONG64 FrameOffset, ULONG64 StackOffset, ULONG64 InstructionOffset, PDEBUG_STACK_FRAME_EX Frames, ULONG FramesSize, PULONG FramesFilled) PURE;
   2717     STDMETHOD(OutputStackTraceEx)(THIS_ ULONG OutputControl, PDEBUG_STACK_FRAME_EX Frames, ULONG FramesSize, ULONG Flags) PURE;
   2718     STDMETHOD(GetContextStackTraceEx)(THIS_ PVOID StartContext, ULONG StartContextSize, PDEBUG_STACK_FRAME_EX Frames, ULONG FramesSize, PVOID FrameContexts, ULONG FrameContextsSize, ULONG FrameContextsEntrySize, PULONG FramesFilled) PURE;
   2719     STDMETHOD(OutputContextStackTraceEx)(THIS_ ULONG OutputControl, PDEBUG_STACK_FRAME_EX Frames, ULONG FramesSize, PVOID FrameContexts, ULONG FrameContextsSize, ULONG FrameContextsEntrySize, ULONG Flags) PURE;
   2720     STDMETHOD(GetBreakpointByGuid)(THIS_ LPGUID Guid, PDEBUG_BREAKPOINT3 *Bp) PURE;
   2721     STDMETHOD(GetExecutionStatusEx)(THIS_ PULONG Status) PURE;
   2722     STDMETHOD(GetSynchronizationStatus)(THIS_ PULONG SendsAttempted, PULONG SecondsSinceLastResponse) PURE;
   2723     STDMETHOD(GetDebuggeeType2)(THIS_ ULONG Flags, PULONG Class, PULONG Qualifier) PURE;
   2724   };
   2725 #ifdef __CRT_UUID_DECL
   2726 __CRT_UUID_DECL(IDebugControl7,0xb86fb3b1,0x80d4,0x475b,0xae,0xa3,0xcf,0x06,0x53,0x9c,0xf6,0x3a)
   2727 #endif
   2728 
   2729 #define DEBUG_DATA_SPACE_VIRTUAL 0
   2730 #define DEBUG_DATA_SPACE_PHYSICAL 1
   2731 #define DEBUG_DATA_SPACE_CONTROL 2
   2732 #define DEBUG_DATA_SPACE_IO 3
   2733 #define DEBUG_DATA_SPACE_MSR 4
   2734 #define DEBUG_DATA_SPACE_BUS_DATA 5
   2735 #define DEBUG_DATA_SPACE_DEBUGGER_DATA 6
   2736 #define DEBUG_DATA_SPACE_COUNT 7
   2737 
   2738 #define DEBUG_DATA_KernBase 24
   2739 #define DEBUG_DATA_BreakpointWithStatusAddr 32
   2740 #define DEBUG_DATA_SavedContextAddr 40
   2741 #define DEBUG_DATA_KiCallUserModeAddr 56
   2742 #define DEBUG_DATA_KeUserCallbackDispatcherAddr 64
   2743 #define DEBUG_DATA_PsLoadedModuleListAddr 72
   2744 #define DEBUG_DATA_PsActiveProcessHeadAddr 80
   2745 #define DEBUG_DATA_PspCidTableAddr 88
   2746 #define DEBUG_DATA_ExpSystemResourcesListAddr 96
   2747 #define DEBUG_DATA_ExpPagedPoolDescriptorAddr 104
   2748 #define DEBUG_DATA_ExpNumberOfPagedPoolsAddr 112
   2749 #define DEBUG_DATA_KeTimeIncrementAddr 120
   2750 #define DEBUG_DATA_KeBugCheckCallbackListHeadAddr 128
   2751 #define DEBUG_DATA_KiBugcheckDataAddr 136
   2752 #define DEBUG_DATA_IopErrorLogListHeadAddr 144
   2753 #define DEBUG_DATA_ObpRootDirectoryObjectAddr 152
   2754 #define DEBUG_DATA_ObpTypeObjectTypeAddr 160
   2755 #define DEBUG_DATA_MmSystemCacheStartAddr 168
   2756 #define DEBUG_DATA_MmSystemCacheEndAddr 176
   2757 #define DEBUG_DATA_MmSystemCacheWsAddr 184
   2758 #define DEBUG_DATA_MmPfnDatabaseAddr 192
   2759 #define DEBUG_DATA_MmSystemPtesStartAddr 200
   2760 #define DEBUG_DATA_MmSystemPtesEndAddr 208
   2761 #define DEBUG_DATA_MmSubsectionBaseAddr 216
   2762 #define DEBUG_DATA_MmNumberOfPagingFilesAddr 224
   2763 #define DEBUG_DATA_MmLowestPhysicalPageAddr 232
   2764 #define DEBUG_DATA_MmHighestPhysicalPageAddr 240
   2765 #define DEBUG_DATA_MmNumberOfPhysicalPagesAddr 248
   2766 #define DEBUG_DATA_MmMaximumNonPagedPoolInBytesAddr 256
   2767 #define DEBUG_DATA_MmNonPagedSystemStartAddr 264
   2768 #define DEBUG_DATA_MmNonPagedPoolStartAddr 272
   2769 #define DEBUG_DATA_MmNonPagedPoolEndAddr 280
   2770 #define DEBUG_DATA_MmPagedPoolStartAddr 288
   2771 #define DEBUG_DATA_MmPagedPoolEndAddr 296
   2772 #define DEBUG_DATA_MmPagedPoolInformationAddr 304
   2773 #define DEBUG_DATA_MmPageSize 312
   2774 #define DEBUG_DATA_MmSizeOfPagedPoolInBytesAddr 320
   2775 #define DEBUG_DATA_MmTotalCommitLimitAddr 328
   2776 #define DEBUG_DATA_MmTotalCommittedPagesAddr 336
   2777 #define DEBUG_DATA_MmSharedCommitAddr 344
   2778 #define DEBUG_DATA_MmDriverCommitAddr 352
   2779 #define DEBUG_DATA_MmProcessCommitAddr 360
   2780 #define DEBUG_DATA_MmPagedPoolCommitAddr 368
   2781 #define DEBUG_DATA_MmExtendedCommitAddr 376
   2782 #define DEBUG_DATA_MmZeroedPageListHeadAddr 384
   2783 #define DEBUG_DATA_MmFreePageListHeadAddr 392
   2784 #define DEBUG_DATA_MmStandbyPageListHeadAddr 400
   2785 #define DEBUG_DATA_MmModifiedPageListHeadAddr 408
   2786 #define DEBUG_DATA_MmModifiedNoWritePageListHeadAddr 416
   2787 #define DEBUG_DATA_MmAvailablePagesAddr 424
   2788 #define DEBUG_DATA_MmResidentAvailablePagesAddr 432
   2789 #define DEBUG_DATA_PoolTrackTableAddr 440
   2790 #define DEBUG_DATA_NonPagedPoolDescriptorAddr 448
   2791 #define DEBUG_DATA_MmHighestUserAddressAddr 456
   2792 #define DEBUG_DATA_MmSystemRangeStartAddr 464
   2793 #define DEBUG_DATA_MmUserProbeAddressAddr 472
   2794 #define DEBUG_DATA_KdPrintCircularBufferAddr 480
   2795 #define DEBUG_DATA_KdPrintCircularBufferEndAddr 488
   2796 #define DEBUG_DATA_KdPrintWritePointerAddr 496
   2797 #define DEBUG_DATA_KdPrintRolloverCountAddr 504
   2798 #define DEBUG_DATA_MmLoadedUserImageListAddr 512
   2799 #define DEBUG_DATA_NtBuildLabAddr 520
   2800 #define DEBUG_DATA_KiNormalSystemCall 528
   2801 #define DEBUG_DATA_KiProcessorBlockAddr 536
   2802 #define DEBUG_DATA_MmUnloadedDriversAddr 544
   2803 #define DEBUG_DATA_MmLastUnloadedDriverAddr 552
   2804 #define DEBUG_DATA_MmTriageActionTakenAddr 560
   2805 #define DEBUG_DATA_MmSpecialPoolTagAddr 568
   2806 #define DEBUG_DATA_KernelVerifierAddr 576
   2807 #define DEBUG_DATA_MmVerifierDataAddr 584
   2808 #define DEBUG_DATA_MmAllocatedNonPagedPoolAddr 592
   2809 #define DEBUG_DATA_MmPeakCommitmentAddr 600
   2810 #define DEBUG_DATA_MmTotalCommitLimitMaximumAddr 608
   2811 #define DEBUG_DATA_CmNtCSDVersionAddr 616
   2812 #define DEBUG_DATA_MmPhysicalMemoryBlockAddr 624
   2813 #define DEBUG_DATA_MmSessionBase 632
   2814 #define DEBUG_DATA_MmSessionSize 640
   2815 #define DEBUG_DATA_MmSystemParentTablePage 648
   2816 #define DEBUG_DATA_MmVirtualTranslationBase 656
   2817 #define DEBUG_DATA_OffsetKThreadNextProcessor 664
   2818 #define DEBUG_DATA_OffsetKThreadTeb 666
   2819 #define DEBUG_DATA_OffsetKThreadKernelStack 668
   2820 #define DEBUG_DATA_OffsetKThreadInitialStack 670
   2821 #define DEBUG_DATA_OffsetKThreadApcProcess 672
   2822 #define DEBUG_DATA_OffsetKThreadState 674
   2823 #define DEBUG_DATA_OffsetKThreadBStore 676
   2824 #define DEBUG_DATA_OffsetKThreadBStoreLimit 678
   2825 #define DEBUG_DATA_SizeEProcess 680
   2826 #define DEBUG_DATA_OffsetEprocessPeb 682
   2827 #define DEBUG_DATA_OffsetEprocessParentCID 684
   2828 #define DEBUG_DATA_OffsetEprocessDirectoryTableBase 686
   2829 #define DEBUG_DATA_SizePrcb 688
   2830 #define DEBUG_DATA_OffsetPrcbDpcRoutine 690
   2831 #define DEBUG_DATA_OffsetPrcbCurrentThread 692
   2832 #define DEBUG_DATA_OffsetPrcbMhz 694
   2833 #define DEBUG_DATA_OffsetPrcbCpuType 696
   2834 #define DEBUG_DATA_OffsetPrcbVendorString 698
   2835 #define DEBUG_DATA_OffsetPrcbProcessorState 700
   2836 #define DEBUG_DATA_OffsetPrcbNumber 702
   2837 #define DEBUG_DATA_SizeEThread 704
   2838 #define DEBUG_DATA_KdPrintCircularBufferPtrAddr 712
   2839 #define DEBUG_DATA_KdPrintBufferSizeAddr 720
   2840 
   2841 #define DEBUG_DATA_PaeEnabled 100000
   2842 #define DEBUG_DATA_SharedUserData 100008
   2843 #define DEBUG_DATA_ProductType 100016
   2844 #define DEBUG_DATA_SuiteMask 100024
   2845 
   2846   typedef struct _DEBUG_PROCESSOR_IDENTIFICATION_ALPHA {
   2847     ULONG Type;
   2848     ULONG Revision;
   2849   } DEBUG_PROCESSOR_IDENTIFICATION_ALPHA,*PDEBUG_PROCESSOR_IDENTIFICATION_ALPHA;
   2850 
   2851   typedef struct _DEBUG_PROCESSOR_IDENTIFICATION_AMD64 {
   2852     ULONG Family;
   2853     ULONG Model;
   2854     ULONG Stepping;
   2855     CHAR VendorString[16];
   2856   } DEBUG_PROCESSOR_IDENTIFICATION_AMD64,*PDEBUG_PROCESSOR_IDENTIFICATION_AMD64;
   2857 
   2858   typedef struct _DEBUG_PROCESSOR_IDENTIFICATION_IA64 {
   2859     ULONG Model;
   2860     ULONG Revision;
   2861     ULONG Family;
   2862     ULONG ArchRev;
   2863     CHAR VendorString[16];
   2864   } DEBUG_PROCESSOR_IDENTIFICATION_IA64,*PDEBUG_PROCESSOR_IDENTIFICATION_IA64;
   2865 
   2866   typedef struct _DEBUG_PROCESSOR_IDENTIFICATION_X86 {
   2867     ULONG Family;
   2868     ULONG Model;
   2869     ULONG Stepping;
   2870     CHAR VendorString[16];
   2871   } DEBUG_PROCESSOR_IDENTIFICATION_X86,*PDEBUG_PROCESSOR_IDENTIFICATION_X86;
   2872 
   2873   typedef struct _DEBUG_PROCESSOR_IDENTIFICATION_ARM {
   2874     ULONG Type;
   2875     ULONG Revision;
   2876   } DEBUG_PROCESSOR_IDENTIFICATION_ARM,*PDEBUG_PROCESSOR_IDENTIFICATION_ARM;
   2877 
   2878   typedef union _DEBUG_PROCESSOR_IDENTIFICATION_ALL {
   2879     DEBUG_PROCESSOR_IDENTIFICATION_ALPHA Alpha;
   2880     DEBUG_PROCESSOR_IDENTIFICATION_AMD64 Amd64;
   2881     DEBUG_PROCESSOR_IDENTIFICATION_IA64 Ia64;
   2882     DEBUG_PROCESSOR_IDENTIFICATION_X86 X86;
   2883     DEBUG_PROCESSOR_IDENTIFICATION_ARM Arm;
   2884   } DEBUG_PROCESSOR_IDENTIFICATION_ALL,*PDEBUG_PROCESSOR_IDENTIFICATION_ALL;
   2885 
   2886 #define DEBUG_DATA_KPCR_OFFSET 0
   2887 #define DEBUG_DATA_KPRCB_OFFSET 1
   2888 #define DEBUG_DATA_KTHREAD_OFFSET 2
   2889 #define DEBUG_DATA_BASE_TRANSLATION_VIRTUAL_OFFSET 3
   2890 #define DEBUG_DATA_PROCESSOR_IDENTIFICATION 4
   2891 #define DEBUG_DATA_PROCESSOR_SPEED 5
   2892 
   2893 #undef INTERFACE
   2894 #define INTERFACE IDebugDataSpaces
   2895   DECLARE_INTERFACE_(IDebugDataSpaces,IUnknown) {
   2896     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE;
   2897     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   2898     STDMETHOD_(ULONG,Release)(THIS) PURE;
   2899     STDMETHOD(ReadVirtual)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE;
   2900     STDMETHOD(WriteVirtual)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE;
   2901     STDMETHOD(SearchVirtual)(THIS_ ULONG64 Offset,ULONG64 Length,PVOID Pattern,ULONG PatternSize,ULONG PatternGranularity,PULONG64 MatchOffset) PURE;
   2902     STDMETHOD(ReadVirtualUncached)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE;
   2903     STDMETHOD(WriteVirtualUncached)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE;
   2904     STDMETHOD(ReadPointersVirtual)(THIS_ ULONG Count,ULONG64 Offset,PULONG64 Ptrs) PURE;
   2905     STDMETHOD(WritePointersVirtual)(THIS_ ULONG Count,ULONG64 Offset,PULONG64 Ptrs) PURE;
   2906     STDMETHOD(ReadPhysical)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE;
   2907     STDMETHOD(WritePhysical)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE;
   2908     STDMETHOD(ReadControl)(THIS_ ULONG Processor,ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE;
   2909     STDMETHOD(WriteControl)(THIS_ ULONG Processor,ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE;
   2910     STDMETHOD(ReadIo)(THIS_ ULONG InterfaceType,ULONG BusNumber,ULONG AddressSpace,ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE;
   2911     STDMETHOD(WriteIo)(THIS_ ULONG InterfaceType,ULONG BusNumber,ULONG AddressSpace,ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE;
   2912     STDMETHOD(ReadMsr)(THIS_ ULONG Msr,PULONG64 Value) PURE;
   2913     STDMETHOD(WriteMsr)(THIS_ ULONG Msr,ULONG64 Value) PURE;
   2914     STDMETHOD(ReadBusData)(THIS_ ULONG BusDataType,ULONG BusNumber,ULONG SlotNumber,ULONG Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE;
   2915     STDMETHOD(WriteBusData)(THIS_ ULONG BusDataType,ULONG BusNumber,ULONG SlotNumber,ULONG Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE;
   2916     STDMETHOD(CheckLowMemory)(THIS) PURE;
   2917     STDMETHOD(ReadDebuggerData)(THIS_ ULONG Index,PVOID Buffer,ULONG BufferSize,PULONG DataSize) PURE;
   2918     STDMETHOD(ReadProcessorSystemData)(THIS_ ULONG Processor,ULONG Index,PVOID Buffer,ULONG BufferSize,PULONG DataSize) PURE;
   2919   };
   2920 #ifdef __CRT_UUID_DECL
   2921 __CRT_UUID_DECL(IDebugDataSpaces,0x88f7dfab,0x3ea7,0x4c3a,0xae,0xfb,0xc4,0xe8,0x10,0x61,0x73,0xaa)
   2922 #endif
   2923 
   2924 #define DEBUG_HANDLE_DATA_TYPE_BASIC 0
   2925 #define DEBUG_HANDLE_DATA_TYPE_TYPE_NAME 1
   2926 #define DEBUG_HANDLE_DATA_TYPE_OBJECT_NAME 2
   2927 #define DEBUG_HANDLE_DATA_TYPE_HANDLE_COUNT 3
   2928 #define DEBUG_HANDLE_DATA_TYPE_TYPE_NAME_WIDE 4
   2929 #define DEBUG_HANDLE_DATA_TYPE_OBJECT_NAME_WIDE 5
   2930 
   2931   typedef struct _DEBUG_HANDLE_DATA_BASIC {
   2932     ULONG TypeNameSize;
   2933     ULONG ObjectNameSize;
   2934     ULONG Attributes;
   2935     ULONG GrantedAccess;
   2936     ULONG HandleCount;
   2937     ULONG PointerCount;
   2938   } DEBUG_HANDLE_DATA_BASIC,*PDEBUG_HANDLE_DATA_BASIC;
   2939 
   2940 #undef INTERFACE
   2941 #define INTERFACE IDebugDataSpaces2
   2942   DECLARE_INTERFACE_(IDebugDataSpaces2,IUnknown) {
   2943     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE;
   2944     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   2945     STDMETHOD_(ULONG,Release)(THIS) PURE;
   2946     STDMETHOD(ReadVirtual)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE;
   2947     STDMETHOD(WriteVirtual)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE;
   2948     STDMETHOD(SearchVirtual)(THIS_ ULONG64 Offset,ULONG64 Length,PVOID Pattern,ULONG PatternSize,ULONG PatternGranularity,PULONG64 MatchOffset) PURE;
   2949     STDMETHOD(ReadVirtualUncached)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE;
   2950     STDMETHOD(WriteVirtualUncached)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE;
   2951     STDMETHOD(ReadPointersVirtual)(THIS_ ULONG Count,ULONG64 Offset,PULONG64 Ptrs) PURE;
   2952     STDMETHOD(WritePointersVirtual)(THIS_ ULONG Count,ULONG64 Offset,PULONG64 Ptrs) PURE;
   2953     STDMETHOD(ReadPhysical)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE;
   2954     STDMETHOD(WritePhysical)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE;
   2955     STDMETHOD(ReadControl)(THIS_ ULONG Processor,ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE;
   2956     STDMETHOD(WriteControl)(THIS_ ULONG Processor,ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE;
   2957     STDMETHOD(ReadIo)(THIS_ ULONG InterfaceType,ULONG BusNumber,ULONG AddressSpace,ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE;
   2958     STDMETHOD(WriteIo)(THIS_ ULONG InterfaceType,ULONG BusNumber,ULONG AddressSpace,ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE;
   2959     STDMETHOD(ReadMsr)(THIS_ ULONG Msr,PULONG64 Value) PURE;
   2960     STDMETHOD(WriteMsr)(THIS_ ULONG Msr,ULONG64 Value) PURE;
   2961     STDMETHOD(ReadBusData)(THIS_ ULONG BusDataType,ULONG BusNumber,ULONG SlotNumber,ULONG Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE;
   2962     STDMETHOD(WriteBusData)(THIS_ ULONG BusDataType,ULONG BusNumber,ULONG SlotNumber,ULONG Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE;
   2963     STDMETHOD(CheckLowMemory)(THIS) PURE;
   2964     STDMETHOD(ReadDebuggerData)(THIS_ ULONG Index,PVOID Buffer,ULONG BufferSize,PULONG DataSize) PURE;
   2965     STDMETHOD(ReadProcessorSystemData)(THIS_ ULONG Processor,ULONG Index,PVOID Buffer,ULONG BufferSize,PULONG DataSize) PURE;
   2966     STDMETHOD(VirtualToPhysical)(THIS_ ULONG64 Virtual,PULONG64 Physical) PURE;
   2967     STDMETHOD(GetVirtualTranslationPhysicalOffsets)(THIS_ ULONG64 Virtual,PULONG64 Offsets,ULONG OffsetsSize,PULONG Levels) PURE;
   2968     STDMETHOD(ReadHandleData)(THIS_ ULONG64 Handle,ULONG DataType,PVOID Buffer,ULONG BufferSize,PULONG DataSize) PURE;
   2969     STDMETHOD(FillVirtual)(THIS_ ULONG64 Start,ULONG Size,PVOID Pattern,ULONG PatternSize,PULONG Filled) PURE;
   2970     STDMETHOD(FillPhysical)(THIS_ ULONG64 Start,ULONG Size,PVOID Pattern,ULONG PatternSize,PULONG Filled) PURE;
   2971     STDMETHOD(QueryVirtual)(THIS_ ULONG64 Offset,PMEMORY_BASIC_INFORMATION64 Info) PURE;
   2972   };
   2973 #ifdef __CRT_UUID_DECL
   2974 __CRT_UUID_DECL(IDebugDataSpaces2,0x7a5e852f,0x96e9,0x468f,0xac,0x1b,0x0b,0x3a,0xdd,0xc4,0xa0,0x49)
   2975 #endif
   2976 
   2977 #undef INTERFACE
   2978 #define INTERFACE IDebugDataSpaces3
   2979   DECLARE_INTERFACE_(IDebugDataSpaces3,IUnknown) {
   2980     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE;
   2981     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   2982     STDMETHOD_(ULONG,Release)(THIS) PURE;
   2983     STDMETHOD(ReadVirtual)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE;
   2984     STDMETHOD(WriteVirtual)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE;
   2985     STDMETHOD(SearchVirtual)(THIS_ ULONG64 Offset,ULONG64 Length,PVOID Pattern,ULONG PatternSize,ULONG PatternGranularity,PULONG64 MatchOffset) PURE;
   2986     STDMETHOD(ReadVirtualUncached)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE;
   2987     STDMETHOD(WriteVirtualUncached)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE;
   2988     STDMETHOD(ReadPointersVirtual)(THIS_ ULONG Count,ULONG64 Offset,PULONG64 Ptrs) PURE;
   2989     STDMETHOD(WritePointersVirtual)(THIS_ ULONG Count,ULONG64 Offset,PULONG64 Ptrs) PURE;
   2990     STDMETHOD(ReadPhysical)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE;
   2991     STDMETHOD(WritePhysical)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE;
   2992     STDMETHOD(ReadControl)(THIS_ ULONG Processor,ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE;
   2993     STDMETHOD(WriteControl)(THIS_ ULONG Processor,ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE;
   2994     STDMETHOD(ReadIo)(THIS_ ULONG InterfaceType,ULONG BusNumber,ULONG AddressSpace,ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE;
   2995     STDMETHOD(WriteIo)(THIS_ ULONG InterfaceType,ULONG BusNumber,ULONG AddressSpace,ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE;
   2996     STDMETHOD(ReadMsr)(THIS_ ULONG Msr,PULONG64 Value) PURE;
   2997     STDMETHOD(WriteMsr)(THIS_ ULONG Msr,ULONG64 Value) PURE;
   2998     STDMETHOD(ReadBusData)(THIS_ ULONG BusDataType,ULONG BusNumber,ULONG SlotNumber,ULONG Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE;
   2999     STDMETHOD(WriteBusData)(THIS_ ULONG BusDataType,ULONG BusNumber,ULONG SlotNumber,ULONG Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE;
   3000     STDMETHOD(CheckLowMemory)(THIS) PURE;
   3001     STDMETHOD(ReadDebuggerData)(THIS_
   3002       ULONG Index,PVOID Buffer,ULONG BufferSize,PULONG DataSize) PURE;
   3003     STDMETHOD(ReadProcessorSystemData)(THIS_ ULONG Processor,ULONG Index,PVOID Buffer,ULONG BufferSize,PULONG DataSize) PURE;
   3004     STDMETHOD(VirtualToPhysical)(THIS_ ULONG64 Virtual,PULONG64 Physical) PURE;
   3005     STDMETHOD(GetVirtualTranslationPhysicalOffsets)(THIS_ ULONG64 Virtual,PULONG64 Offsets,ULONG OffsetsSize,PULONG Levels) PURE;
   3006     STDMETHOD(ReadHandleData)(THIS_ ULONG64 Handle,ULONG DataType,PVOID Buffer,ULONG BufferSize,PULONG DataSize) PURE;
   3007     STDMETHOD(FillVirtual)(THIS_ ULONG64 Start,ULONG Size,PVOID Pattern,ULONG PatternSize,PULONG Filled) PURE;
   3008     STDMETHOD(FillPhysical)(THIS_ ULONG64 Start,ULONG Size,PVOID Pattern,ULONG PatternSize,PULONG Filled) PURE;
   3009     STDMETHOD(QueryVirtual)(THIS_ ULONG64 Offset,PMEMORY_BASIC_INFORMATION64 Info) PURE;
   3010     STDMETHOD(ReadImageNtHeaders)(THIS_ ULONG64 ImageBase,PIMAGE_NT_HEADERS64 Headers) PURE;
   3011     STDMETHOD(ReadTagged)(THIS_ LPGUID Tag,ULONG Offset,PVOID Buffer,ULONG BufferSize,PULONG TotalSize) PURE;
   3012     STDMETHOD(StartEnumTagged)(THIS_ PULONG64 Handle) PURE;
   3013     STDMETHOD(GetNextTagged)(THIS_ ULONG64 Handle,LPGUID Tag,PULONG Size) PURE;
   3014     STDMETHOD(EndEnumTagged)(THIS_ ULONG64 Handle) PURE;
   3015   };
   3016 #ifdef __CRT_UUID_DECL
   3017 __CRT_UUID_DECL(IDebugDataSpaces3,0x23f79d6c,0x8aaf,0x4f7c,0xa6,0x07,0x99,0x95,0xf5,0x40,0x7e,0x63)
   3018 #endif
   3019 
   3020 #define DEBUG_OFFSINFO_VIRTUAL_SOURCE 0x00000001
   3021 
   3022 #define DEBUG_VSOURCE_INVALID 0x00000000
   3023 #define DEBUG_VSOURCE_DEBUGGEE 0x00000001
   3024 #define DEBUG_VSOURCE_MAPPED_IMAGE 0x00000002
   3025 #define DEBUG_VSOURCE_DUMP_WITHOUT_MEMINFO 0x00000003
   3026 
   3027 #define DEBUG_VSEARCH_DEFAULT 0x00000000
   3028 #define DEBUG_VSEARCH_WRITABLE_ONLY 0x00000001
   3029 
   3030 #define DEBUG_PHYSICAL_DEFAULT 0x00000000
   3031 #define DEBUG_PHYSICAL_CACHED 0x00000001
   3032 #define DEBUG_PHYSICAL_UNCACHED 0x00000002
   3033 #define DEBUG_PHYSICAL_WRITE_COMBINED 0x00000003
   3034 
   3035 #undef INTERFACE
   3036 #define INTERFACE IDebugDataSpaces4
   3037   DECLARE_INTERFACE_(IDebugDataSpaces4, IUnknown) {
   3038     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
   3039     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   3040     STDMETHOD_(ULONG, Release)(THIS) PURE;
   3041     STDMETHOD(ReadVirtual)(THIS_ ULONG64 Offset, PVOID Buffer, ULONG BufferSize, PULONG BytesRead) PURE;
   3042     STDMETHOD(WriteVirtual)(THIS_ ULONG64 Offset, PVOID Buffer, ULONG BufferSize, PULONG BytesWritten) PURE;
   3043     STDMETHOD(SearchVirtual)(THIS_ ULONG64 Offset, ULONG64 Length, PVOID Pattern, ULONG PatternSize, ULONG PatternGranularity, PULONG64 MatchOffset) PURE;
   3044     STDMETHOD(ReadVirtualUncached)(THIS_ ULONG64 Offset, PVOID Buffer, ULONG BufferSize, PULONG BytesRead) PURE;
   3045     STDMETHOD(WriteVirtualUncached)(THIS_ ULONG64 Offset, PVOID Buffer, ULONG BufferSize, PULONG BytesWritten) PURE;
   3046     STDMETHOD(ReadPointersVirtual)(THIS_ ULONG Count, ULONG64 Offset, PULONG64 Ptrs) PURE;
   3047     STDMETHOD(WritePointersVirtual)(THIS_ ULONG Count, ULONG64 Offset, PULONG64 Ptrs) PURE;
   3048     STDMETHOD(ReadPhysical)(THIS_ ULONG64 Offset, PVOID Buffer, ULONG BufferSize, PULONG BytesRead) PURE;
   3049     STDMETHOD(WritePhysical)(THIS_ ULONG64 Offset, PVOID Buffer, ULONG BufferSize, PULONG BytesWritten) PURE;
   3050     STDMETHOD(ReadControl)(THIS_ ULONG Processor, ULONG64 Offset, PVOID Buffer, ULONG BufferSize, PULONG BytesRead) PURE;
   3051     STDMETHOD(WriteControl)(THIS_ ULONG Processor, ULONG64 Offset, PVOID Buffer, ULONG BufferSize, PULONG BytesWritten) PURE;
   3052     STDMETHOD(ReadIo)(THIS_ ULONG InterfaceType, ULONG BusNumber, ULONG AddressSpace, ULONG64 Offset, PVOID Buffer, ULONG BufferSize, PULONG BytesRead) PURE;
   3053     STDMETHOD(WriteIo)(THIS_ ULONG InterfaceType, ULONG BusNumber, ULONG AddressSpace, ULONG64 Offset, PVOID Buffer, ULONG BufferSize, PULONG BytesWritten) PURE;
   3054     STDMETHOD(ReadMsr)(THIS_ ULONG Msr, PULONG64 Value) PURE;
   3055     STDMETHOD(WriteMsr)(THIS_ ULONG Msr, ULONG64 Value) PURE;
   3056     STDMETHOD(ReadBusData)(THIS_ ULONG BusDataType, ULONG BusNumber, ULONG SlotNumber, ULONG Offset, PVOID Buffer, ULONG BufferSize, PULONG BytesRead) PURE;
   3057     STDMETHOD(WriteBusData)(THIS_ ULONG BusDataType, ULONG BusNumber, ULONG SlotNumber, ULONG Offset, PVOID Buffer, ULONG BufferSize, PULONG BytesWritten) PURE;
   3058     STDMETHOD(CheckLowMemory)(THIS) PURE;
   3059     STDMETHOD(ReadDebuggerData)(THIS_ ULONG Index, PVOID Buffer, ULONG BufferSize, PULONG DataSize) PURE;
   3060     STDMETHOD(ReadProcessorSystemData)(THIS_ ULONG Processor, ULONG Index, PVOID Buffer, ULONG BufferSize, PULONG DataSize) PURE;
   3061     STDMETHOD(VirtualToPhysical)(THIS_ ULONG64 Virtual, PULONG64 Physical) PURE;
   3062     STDMETHOD(GetVirtualTranslationPhysicalOffsets)(THIS_ ULONG64 Virtual, PULONG64 Offsets, ULONG OffsetsSize, PULONG Levels) PURE;
   3063     STDMETHOD(ReadHandleData)(THIS_ ULONG64 Handle, ULONG DataType, PVOID Buffer, ULONG BufferSize, PULONG DataSize) PURE;
   3064     STDMETHOD(FillVirtual)(THIS_ ULONG64 Start, ULONG Size, PVOID Pattern, ULONG PatternSize, PULONG Filled) PURE;
   3065     STDMETHOD(FillPhysical)(THIS_ ULONG64 Start, ULONG Size, PVOID Pattern, ULONG PatternSize, PULONG Filled) PURE;
   3066     STDMETHOD(QueryVirtual)(THIS_ ULONG64 Offset, PMEMORY_BASIC_INFORMATION64 Info) PURE;
   3067     STDMETHOD(ReadImageNtHeaders)(THIS_ ULONG64 ImageBase, PIMAGE_NT_HEADERS64 Headers) PURE;
   3068     STDMETHOD(ReadTagged)(THIS_ LPGUID Tag, ULONG Offset, PVOID Buffer, ULONG BufferSize, PULONG TotalSize) PURE;
   3069     STDMETHOD(StartEnumTagged)(THIS_ PULONG64 Handle) PURE;
   3070     STDMETHOD(GetNextTagged)(THIS_ ULONG64 Handle, LPGUID Tag, PULONG Size) PURE;
   3071     STDMETHOD(EndEnumTagged)(THIS_ ULONG64 Handle) PURE;
   3072     STDMETHOD(GetOffsetInformation)(THIS_ ULONG Space, ULONG Which, ULONG64 Offset, PVOID Buffer, ULONG BufferSize, PULONG InfoSize) PURE;
   3073     STDMETHOD(GetNextDifferentlyValidOffsetVirtual)(THIS_ ULONG64 Offset, PULONG64 NextOffset) PURE;
   3074     STDMETHOD(GetValidRegionVirtual)(THIS_ ULONG64 Base, ULONG Size, PULONG64 ValidBase, PULONG ValidSize) PURE;
   3075     STDMETHOD(SearchVirtual2)(THIS_ ULONG64 Offset, ULONG64 Length, ULONG Flags, PVOID Pattern, ULONG PatternSize, ULONG PatternGranularity, PULONG64 MatchOffset) PURE;
   3076     STDMETHOD(ReadMultiByteStringVirtual)(THIS_ ULONG64 Offset, ULONG MaxBytes, PSTR Buffer, ULONG BufferSize, PULONG StringBytes) PURE;
   3077     STDMETHOD(ReadMultiByteStringVirtualWide)(THIS_ ULONG64 Offset, ULONG MaxBytes, ULONG CodePage, PWSTR Buffer, ULONG BufferSize, PULONG StringBytes) PURE;
   3078     STDMETHOD(ReadUnicodeStringVirtual)(THIS_ ULONG64 Offset, ULONG MaxBytes, ULONG CodePage, PSTR Buffer, ULONG BufferSize, PULONG StringBytes) PURE;
   3079     STDMETHOD(ReadUnicodeStringVirtualWide)(THIS_ ULONG64 Offset, ULONG MaxBytes, PWSTR Buffer, ULONG BufferSize, PULONG StringBytes) PURE;
   3080     STDMETHOD(ReadPhysical2)(THIS_ ULONG64 Offset, ULONG Flags, PVOID Buffer, ULONG BufferSize, PULONG BytesRead) PURE;
   3081     STDMETHOD(WritePhysical2)(THIS_ ULONG64 Offset, ULONG Flags, PVOID Buffer, ULONG BufferSize, PULONG BytesWritten) PURE;
   3082   };
   3083 #ifdef __CRT_UUID_DECL
   3084 __CRT_UUID_DECL(IDebugDataSpaces4,0xd98ada1f,0x29e9,0x4ef5,0xa6,0xc0,0xe5,0x33,0x49,0x88,0x32,0x12)
   3085 #endif
   3086 
   3087 #define DEBUG_EVENT_BREAKPOINT 0x00000001
   3088 #define DEBUG_EVENT_EXCEPTION 0x00000002
   3089 #define DEBUG_EVENT_CREATE_THREAD 0x00000004
   3090 #define DEBUG_EVENT_EXIT_THREAD 0x00000008
   3091 #define DEBUG_EVENT_CREATE_PROCESS 0x00000010
   3092 #define DEBUG_EVENT_EXIT_PROCESS 0x00000020
   3093 #define DEBUG_EVENT_LOAD_MODULE 0x00000040
   3094 #define DEBUG_EVENT_UNLOAD_MODULE 0x00000080
   3095 #define DEBUG_EVENT_SYSTEM_ERROR 0x00000100
   3096 #define DEBUG_EVENT_SESSION_STATUS 0x00000200
   3097 #define DEBUG_EVENT_CHANGE_DEBUGGEE_STATE 0x00000400
   3098 #define DEBUG_EVENT_CHANGE_ENGINE_STATE 0x00000800
   3099 #define DEBUG_EVENT_CHANGE_SYMBOL_STATE 0x00001000
   3100 
   3101 #define DEBUG_SESSION_ACTIVE 0x00000000
   3102 
   3103 #define DEBUG_SESSION_END_SESSION_ACTIVE_TERMINATE 0x00000001
   3104 #define DEBUG_SESSION_END_SESSION_ACTIVE_DETACH 0x00000002
   3105 #define DEBUG_SESSION_END_SESSION_PASSIVE 0x00000003
   3106 #define DEBUG_SESSION_END 0x00000004
   3107 #define DEBUG_SESSION_REBOOT 0x00000005
   3108 #define DEBUG_SESSION_HIBERNATE 0x00000006
   3109 #define DEBUG_SESSION_FAILURE 0x00000007
   3110 
   3111 #define DEBUG_CDS_ALL 0xffffffff
   3112 
   3113 #define DEBUG_CDS_REGISTERS 0x00000001
   3114 #define DEBUG_CDS_DATA 0x00000002
   3115 
   3116 #define DEBUG_CES_ALL 0xffffffff
   3117 
   3118 #define DEBUG_CES_CURRENT_THREAD 0x00000001
   3119 #define DEBUG_CES_EFFECTIVE_PROCESSOR 0x00000002
   3120 #define DEBUG_CES_BREAKPOINTS 0x00000004
   3121 #define DEBUG_CES_CODE_LEVEL 0x00000008
   3122 #define DEBUG_CES_EXECUTION_STATUS 0x00000010
   3123 #define DEBUG_CES_ENGINE_OPTIONS 0x00000020
   3124 #define DEBUG_CES_LOG_FILE 0x00000040
   3125 #define DEBUG_CES_RADIX 0x00000080
   3126 #define DEBUG_CES_EVENT_FILTERS 0x00000100
   3127 #define DEBUG_CES_PROCESS_OPTIONS 0x00000200
   3128 #define DEBUG_CES_EXTENSIONS 0x00000400
   3129 #define DEBUG_CES_SYSTEMS 0x00000800
   3130 #define DEBUG_CES_ASSEMBLY_OPTIONS 0x00001000
   3131 #define DEBUG_CES_EXPRESSION_SYNTAX 0x00002000
   3132 #define DEBUG_CES_TEXT_REPLACEMENTS 0x00004000
   3133 
   3134 #define DEBUG_CSS_ALL 0xffffffff
   3135 
   3136 #define DEBUG_CSS_LOADS 0x00000001
   3137 #define DEBUG_CSS_UNLOADS 0x00000002
   3138 #define DEBUG_CSS_SCOPE 0x00000004
   3139 #define DEBUG_CSS_PATHS 0x00000008
   3140 #define DEBUG_CSS_SYMBOL_OPTIONS 0x00000010
   3141 #define DEBUG_CSS_TYPE_OPTIONS 0x00000020
   3142 
   3143 #undef INTERFACE
   3144 #define INTERFACE IDebugEventCallbacks
   3145   DECLARE_INTERFACE_(IDebugEventCallbacks,IUnknown) {
   3146     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE;
   3147     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   3148     STDMETHOD_(ULONG,Release)(THIS) PURE;
   3149     STDMETHOD(GetInterestMask)(THIS_ PULONG Mask) PURE;
   3150     STDMETHOD(Breakpoint)(THIS_ PDEBUG_BREAKPOINT Bp) PURE;
   3151     STDMETHOD(Exception)(THIS_ PEXCEPTION_RECORD64 Exception,ULONG FirstChance) PURE;
   3152     STDMETHOD(CreateThread)(THIS_ ULONG64 Handle,ULONG64 DataOffset,ULONG64 StartOffset) PURE;
   3153     STDMETHOD(ExitThread)(THIS_ ULONG ExitCode) PURE;
   3154     STDMETHOD(CreateProcess)(THIS_ ULONG64 ImageFileHandle,ULONG64 Handle,ULONG64 BaseOffset,ULONG ModuleSize,PCSTR ModuleName,PCSTR ImageName,ULONG CheckSum,ULONG TimeDateStamp,ULONG64 InitialThreadHandle,ULONG64 ThreadDataOffset,ULONG64 StartOffset) PURE;
   3155     STDMETHOD(ExitProcess)(THIS_ ULONG ExitCode) PURE;
   3156     STDMETHOD(LoadModule)(THIS_ ULONG64 ImageFileHandle,ULONG64 BaseOffset,ULONG ModuleSize,PCSTR ModuleName,PCSTR ImageName,ULONG CheckSum,ULONG TimeDateStamp) PURE;
   3157     STDMETHOD(UnloadModule)(THIS_ PCSTR ImageBaseName,ULONG64 BaseOffset) PURE;
   3158     STDMETHOD(SystemError)(THIS_ ULONG Error,ULONG Level) PURE;
   3159     STDMETHOD(SessionStatus)(THIS_ ULONG Status) PURE;
   3160     STDMETHOD(ChangeDebuggeeState)(THIS_ ULONG Flags,ULONG64 Argument) PURE;
   3161     STDMETHOD(ChangeEngineState)(THIS_ ULONG Flags,ULONG64 Argument) PURE;
   3162     STDMETHOD(ChangeSymbolState)(THIS_ ULONG Flags,ULONG64 Argument) PURE;
   3163   };
   3164 #ifdef __CRT_UUID_DECL
   3165 __CRT_UUID_DECL(IDebugEventCallbacks,0x337be28b,0x5036,0x4d72,0xb6,0xbf,0xc4,0x5f,0xbb,0x9f,0x2e,0xaa)
   3166 #endif
   3167 
   3168 #undef INTERFACE
   3169 #define INTERFACE IDebugEventCallbacksWide
   3170   DECLARE_INTERFACE_(IDebugEventCallbacksWide, IUnknown) {
   3171     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
   3172     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   3173     STDMETHOD_(ULONG, Release)(THIS) PURE;
   3174     STDMETHOD(GetInterestMask)(THIS_ PULONG Mask) PURE;
   3175     STDMETHOD(Breakpoint)(THIS_ PDEBUG_BREAKPOINT2 Bp) PURE;
   3176     STDMETHOD(Exception)(THIS_ PEXCEPTION_RECORD64 Exception, ULONG FirstChance) PURE;
   3177     STDMETHOD(CreateThread)(THIS_ ULONG64 Handle, ULONG64 DataOffset, ULONG64 StartOffset) PURE;
   3178     STDMETHOD(ExitThread)(THIS_ ULONG ExitCode) PURE;
   3179     STDMETHOD(CreateProcess)(THIS_ ULONG64 ImageFileHandle, ULONG64 Handle, ULONG64 BaseOffset, ULONG ModuleSize, PCWSTR ModuleName, PCWSTR ImageName, ULONG CheckSum, ULONG TimeDateStamp, ULONG64 InitialThreadHandle, ULONG64 ThreadDataOffset, ULONG64 StartOffset) PURE;
   3180     STDMETHOD(ExitProcess)(THIS_ ULONG ExitCode) PURE;
   3181     STDMETHOD(LoadModule)(THIS_ ULONG64 ImageFileHandle, ULONG64 BaseOffset, ULONG ModuleSize, PCWSTR ModuleName, PCWSTR ImageName, ULONG CheckSum, ULONG TimeDateStamp) PURE;
   3182     STDMETHOD(UnloadModule)(THIS_ PCWSTR ImageBaseName, ULONG64 BaseOffset) PURE;
   3183     STDMETHOD(SystemError)(THIS_ ULONG Error, ULONG Level) PURE;
   3184     STDMETHOD(SessionStatus)(THIS_ ULONG Status) PURE;
   3185     STDMETHOD(ChangeDebuggeeState)(THIS_ ULONG Flags, ULONG64 Argument) PURE;
   3186     STDMETHOD(ChangeEngineState)(THIS_ ULONG Flags, ULONG64 Argument) PURE;
   3187     STDMETHOD(ChangeSymbolState)(THIS_ ULONG Flags, ULONG64 Argument) PURE;
   3188   };
   3189 #ifdef __CRT_UUID_DECL
   3190 __CRT_UUID_DECL(IDebugEventCallbacksWide,0x0690e046,0x9c23,0x45ac,0xa0,0x4f,0x98,0x7a,0xc2,0x9a,0xd0,0xd3)
   3191 #endif
   3192 
   3193 typedef struct _DEBUG_EVENT_CONTEXT {
   3194     ULONG Size;
   3195     ULONG ProcessEngineId;
   3196     ULONG ThreadEngineId;
   3197     ULONG FrameEngineId;
   3198 } DEBUG_EVENT_CONTEXT, *PDEBUG_EVENT_CONTEXT;
   3199 
   3200 #undef INTERFACE
   3201 #define INTERFACE IDebugEventContextCallbacks
   3202   DECLARE_INTERFACE_(IDebugEventContextCallbacks, IUnknown) {
   3203     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
   3204     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   3205     STDMETHOD_(ULONG, Release)(THIS) PURE;
   3206     STDMETHOD(GetInterestMask)(THIS_ PULONG Mask) PURE;
   3207     STDMETHOD(Breakpoint)(THIS_ PDEBUG_BREAKPOINT2 Bp, PVOID Context, ULONG ContextSize) PURE;
   3208     STDMETHOD(Exception)(THIS_ PEXCEPTION_RECORD64 Exception, ULONG FirstChance, PVOID Context, ULONG ContextSize) PURE;
   3209     STDMETHOD(CreateThread)(THIS_ ULONG64 Handle, ULONG64 DataOffset, ULONG64 StartOffset, PVOID Context, ULONG ContextSize) PURE;
   3210     STDMETHOD(ExitThread)(THIS_ ULONG ExitCode, PVOID Context, ULONG ContextSize) PURE;
   3211     STDMETHOD(CreateProcess)(THIS_ ULONG64 ImageFileHandle, ULONG64 Handle, ULONG64 BaseOffset, ULONG ModuleSize, PCWSTR ModuleName, PCWSTR ImageName, ULONG CheckSum, ULONG TimeDateStamp, ULONG64 InitialThreadHandle, ULONG64 ThreadDataOffset, ULONG64 StartOffset, PVOID Context, ULONG ContextSize) PURE;
   3212     STDMETHOD(ExitProcess)(THIS_ ULONG ExitCode, PVOID Context, ULONG ContextSize) PURE;
   3213     STDMETHOD(LoadModule)(THIS_ ULONG64 ImageFileHandle, ULONG64 BaseOffset, ULONG ModuleSize, PCWSTR ModuleName, PCWSTR ImageName, ULONG CheckSum, ULONG TimeDateStamp, PVOID Context, ULONG ContextSize) PURE;
   3214     STDMETHOD(UnloadModule)(THIS_ PCWSTR ImageBaseName, ULONG64 BaseOffset, PVOID Context, ULONG ContextSize) PURE;
   3215     STDMETHOD(SystemError)(THIS_ ULONG Error, ULONG Level, PVOID Context, ULONG ContextSize) PURE;
   3216     STDMETHOD(SessionStatus)(THIS_ ULONG Status) PURE;
   3217     STDMETHOD(ChangeDebuggeeState)(THIS_ ULONG Flags, ULONG64 Argument, PVOID Context, ULONG ContextSize) PURE;
   3218     STDMETHOD(ChangeEngineState)(THIS_ ULONG Flags, ULONG64 Argument, PVOID Context, ULONG ContextSize) PURE;
   3219     STDMETHOD(ChangeSymbolState)(THIS_ ULONG Flags, ULONG64 Argument) PURE;
   3220   };
   3221 #ifdef __CRT_UUID_DECL
   3222 __CRT_UUID_DECL(IDebugEventContextCallbacks,0x61a4905b,0x23f9,0x4247,0xb3,0xc5,0x53,0xd0,0x87,0x52,0x9a,0xb7)
   3223 #endif
   3224 
   3225 #undef INTERFACE
   3226 #define INTERFACE IDebugInputCallbacks
   3227   DECLARE_INTERFACE_(IDebugInputCallbacks,IUnknown) {
   3228     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE;
   3229     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   3230     STDMETHOD_(ULONG,Release)(THIS) PURE;
   3231     STDMETHOD(StartInput)(THIS_ ULONG BufferSize) PURE;
   3232     STDMETHOD(EndInput)(THIS) PURE;
   3233   };
   3234 #ifdef __CRT_UUID_DECL
   3235 __CRT_UUID_DECL(IDebugInputCallbacks,0x9f50e42c,0xf136,0x499e,0x9a,0x97,0x73,0x03,0x6c,0x94,0xed,0x2d)
   3236 #endif
   3237 
   3238 #undef INTERFACE
   3239 #define INTERFACE IDebugOutputCallbacks
   3240   DECLARE_INTERFACE_(IDebugOutputCallbacks,IUnknown) {
   3241     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE;
   3242     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   3243     STDMETHOD_(ULONG,Release)(THIS) PURE;
   3244     STDMETHOD(Output)(THIS_ ULONG Mask,PCSTR Text) PURE;
   3245   };
   3246 #ifdef __CRT_UUID_DECL
   3247 __CRT_UUID_DECL(IDebugOutputCallbacks,0x4bf58045,0xd654,0x4c40,0xb0,0xaf,0x68,0x30,0x90,0xf3,0x56,0xdc)
   3248 #endif
   3249 
   3250 #undef INTERFACE
   3251 #define INTERFACE IDebugOutputCallbacksWide
   3252   DECLARE_INTERFACE_(IDebugOutputCallbacksWide, IUnknown) {
   3253     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
   3254     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   3255     STDMETHOD_(ULONG, Release)(THIS) PURE;
   3256     STDMETHOD(Output)(THIS_ ULONG Mask, PCWSTR Text) PURE;
   3257   };
   3258 #ifdef __CRT_UUID_DECL
   3259 __CRT_UUID_DECL(IDebugOutputCallbacksWide,0x4c7fd663,0xc394,0x4e26,0x8e,0xf1,0x34,0xad,0x5e,0xd3,0x76,0x4c)
   3260 #endif
   3261 
   3262 #define DEBUG_REGISTER_SUB_REGISTER 0x00000001
   3263 
   3264 #define DEBUG_REGISTERS_DEFAULT 0x00000000
   3265 #define DEBUG_REGISTERS_INT32 0x00000001
   3266 #define DEBUG_REGISTERS_INT64 0x00000002
   3267 #define DEBUG_REGISTERS_FLOAT 0x00000004
   3268 #define DEBUG_REGISTERS_ALL 0x00000007
   3269 
   3270   typedef struct _DEBUG_REGISTER_DESCRIPTION {
   3271     ULONG Type;
   3272     ULONG Flags;
   3273     ULONG SubregMaster;
   3274     ULONG SubregLength;
   3275     ULONG64 SubregMask;
   3276     ULONG SubregShift;
   3277     ULONG Reserved0;
   3278   } DEBUG_REGISTER_DESCRIPTION,*PDEBUG_REGISTER_DESCRIPTION;
   3279 
   3280 #undef INTERFACE
   3281 #define INTERFACE IDebugRegisters
   3282   DECLARE_INTERFACE_(IDebugRegisters,IUnknown) {
   3283     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE;
   3284     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   3285     STDMETHOD_(ULONG,Release)(THIS) PURE;
   3286     STDMETHOD(GetNumberRegisters)(THIS_ PULONG Number) PURE;
   3287     STDMETHOD(GetDescription)(THIS_ ULONG Register,PSTR NameBuffer,ULONG NameBufferSize,PULONG NameSize,PDEBUG_REGISTER_DESCRIPTION Desc) PURE;
   3288     STDMETHOD(GetIndexByName)(THIS_ PCSTR Name,PULONG Index) PURE;
   3289     STDMETHOD(GetValue)(THIS_ ULONG Register,PDEBUG_VALUE Value) PURE;
   3290     STDMETHOD(SetValue)(THIS_ ULONG Register,PDEBUG_VALUE Value) PURE;
   3291     STDMETHOD(GetValues)(THIS_ ULONG Count,PULONG Indices,ULONG Start,PDEBUG_VALUE Values) PURE;
   3292     STDMETHOD(SetValues)(THIS_ ULONG Count,PULONG Indices,ULONG Start,PDEBUG_VALUE Values) PURE;
   3293     STDMETHOD(OutputRegisters)(THIS_ ULONG OutputControl,ULONG Flags) PURE;
   3294     STDMETHOD(GetInstructionOffset)(THIS_ PULONG64 Offset) PURE;
   3295     STDMETHOD(GetStackOffset)(THIS_ PULONG64 Offset) PURE;
   3296     STDMETHOD(GetFrameOffset)(THIS_ PULONG64 Offset) PURE;
   3297   };
   3298 #ifdef __CRT_UUID_DECL
   3299 __CRT_UUID_DECL(IDebugRegisters,0xce289126,0x9e84,0x45a7,0x93,0x7e,0x67,0xbb,0x18,0x69,0x14,0x93)
   3300 #endif
   3301 
   3302 #define DEBUG_REGSRC_DEBUGGEE 0x00000000
   3303 #define DEBUG_REGSRC_EXPLICIT 0x00000001
   3304 #define DEBUG_REGSRC_FRAME 0x00000002
   3305 
   3306 #undef INTERFACE
   3307 #define INTERFACE IDebugRegisters2
   3308   DECLARE_INTERFACE_(IDebugRegisters2, IUnknown) {
   3309     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
   3310     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   3311     STDMETHOD_(ULONG, Release)(THIS) PURE;
   3312     STDMETHOD(GetNumberRegisters)(THIS_ PULONG Number) PURE;
   3313     STDMETHOD(GetDescription)(THIS_ ULONG Register, PSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize, PDEBUG_REGISTER_DESCRIPTION Desc) PURE;
   3314     STDMETHOD(GetIndexByName)(THIS_ PCSTR Name, PULONG Index) PURE;
   3315     STDMETHOD(GetValue)(THIS_ ULONG Register, PDEBUG_VALUE Value) PURE;
   3316     STDMETHOD(SetValue)(THIS_ ULONG Register, PDEBUG_VALUE Value) PURE;
   3317     STDMETHOD(GetValues)(THIS_ ULONG Count, PULONG Indices, ULONG Start, PDEBUG_VALUE Values) PURE;
   3318     STDMETHOD(SetValues)(THIS_ ULONG Count, PULONG Indices, ULONG Start, PDEBUG_VALUE Values) PURE;
   3319     STDMETHOD(OutputRegisters)(THIS_ ULONG OutputControl, ULONG Flags) PURE;
   3320     STDMETHOD(GetInstructionOffset)(THIS_ PULONG64 Offset) PURE;
   3321     STDMETHOD(GetStackOffset)(THIS_ PULONG64 Offset) PURE;
   3322     STDMETHOD(GetFrameOffset)(THIS_ PULONG64 Offset) PURE;
   3323     STDMETHOD(GetDescriptionWide)(THIS_ ULONG Register, PWSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize, PDEBUG_REGISTER_DESCRIPTION Desc) PURE;
   3324     STDMETHOD(GetIndexByNameWide)(THIS_ PCWSTR Name, PULONG Index) PURE;
   3325     STDMETHOD(GetNumberPseudoRegisters)(THIS_ PULONG Number) PURE;
   3326     STDMETHOD(GetPseudoDescription)(THIS_ ULONG Register, PSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize, PULONG64 TypeModule, PULONG TypeId) PURE;
   3327     STDMETHOD(GetPseudoDescriptionWide)(THIS_ ULONG Register, PWSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize, PULONG64 TypeModule, PULONG TypeId) PURE;
   3328     STDMETHOD(GetPseudoIndexByName)(THIS_ PCSTR Name, PULONG Index) PURE;
   3329     STDMETHOD(GetPseudoIndexByNameWide)(THIS_ PCWSTR Name, PULONG Index) PURE;
   3330     STDMETHOD(GetPseudoValues)(THIS_ ULONG Source, ULONG Count, PULONG Indices, ULONG Start, PDEBUG_VALUE Values) PURE;
   3331     STDMETHOD(SetPseudoValues)(THIS_ ULONG Source, ULONG Count, PULONG Indices, ULONG Start, PDEBUG_VALUE Values) PURE;
   3332     STDMETHOD(GetValues2)(THIS_ ULONG Source, ULONG Count, PULONG Indices, ULONG Start, PDEBUG_VALUE Values) PURE;
   3333     STDMETHOD(SetValues2)(THIS_ ULONG Source, ULONG Count, PULONG Indices, ULONG Start, PDEBUG_VALUE Values) PURE;
   3334     STDMETHOD(OutputRegisters2)(THIS_ ULONG OutputControl, ULONG Source, ULONG Flags) PURE;
   3335     STDMETHOD(GetInstructionOffset2)(THIS_ ULONG Source, PULONG64 Offset) PURE;
   3336     STDMETHOD(GetStackOffset2)(THIS_ ULONG Source, PULONG64 Offset) PURE;
   3337     STDMETHOD(GetFrameOffset2)(THIS_ ULONG Source, PULONG64 Offset) PURE;
   3338   };
   3339 #ifdef __CRT_UUID_DECL
   3340 __CRT_UUID_DECL(IDebugRegisters2,0x1656afa9,0x19c6,0x4e3a,0x97,0xe7,0x5d,0xc9,0x16,0x0c,0xf9,0xc4)
   3341 #endif
   3342 
   3343 #define DEBUG_OUTPUT_SYMBOLS_DEFAULT 0x00000000
   3344 #define DEBUG_OUTPUT_SYMBOLS_NO_NAMES 0x00000001
   3345 #define DEBUG_OUTPUT_SYMBOLS_NO_OFFSETS 0x00000002
   3346 #define DEBUG_OUTPUT_SYMBOLS_NO_VALUES 0x00000004
   3347 #define DEBUG_OUTPUT_SYMBOLS_NO_TYPES 0x00000010
   3348 
   3349 #define DEBUG_OUTPUT_NAME_END "**NAME**"
   3350 #define DEBUG_OUTPUT_OFFSET_END "**OFF**"
   3351 #define DEBUG_OUTPUT_VALUE_END "**VALUE**"
   3352 #define DEBUG_OUTPUT_TYPE_END "**TYPE**"
   3353 
   3354 #define DEBUG_SYMBOL_EXPANSION_LEVEL_MASK 0x0000000f
   3355 #define DEBUG_SYMBOL_EXPANDED 0x00000010
   3356 #define DEBUG_SYMBOL_READ_ONLY 0x00000020
   3357 #define DEBUG_SYMBOL_IS_ARRAY 0x00000040
   3358 #define DEBUG_SYMBOL_IS_FLOAT 0x00000080
   3359 #define DEBUG_SYMBOL_IS_ARGUMENT 0x00000100
   3360 #define DEBUG_SYMBOL_IS_LOCAL 0x00000200
   3361 
   3362   typedef struct _DEBUG_SYMBOL_PARAMETERS {
   3363     ULONG64 Module;
   3364     ULONG TypeId;
   3365     ULONG ParentSymbol;
   3366     ULONG SubElements;
   3367     ULONG Flags;
   3368     ULONG64 Reserved;
   3369   } DEBUG_SYMBOL_PARAMETERS,*PDEBUG_SYMBOL_PARAMETERS;
   3370 
   3371 #undef INTERFACE
   3372 #define INTERFACE IDebugSymbolGroup
   3373   DECLARE_INTERFACE_(IDebugSymbolGroup,IUnknown) {
   3374     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE;
   3375     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   3376     STDMETHOD_(ULONG,Release)(THIS) PURE;
   3377     STDMETHOD(GetNumberSymbols)(THIS_ PULONG Number) PURE;
   3378     STDMETHOD(AddSymbol)(THIS_ PCSTR Name,PULONG Index) PURE;
   3379     STDMETHOD(RemoveSymbolByName)(THIS_ PCSTR Name) PURE;
   3380     STDMETHOD(RemoveSymbolByIndex)(THIS_ ULONG Index) PURE;
   3381     STDMETHOD(GetSymbolName)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG NameSize) PURE;
   3382     STDMETHOD(GetSymbolParameters)(THIS_ ULONG Start,ULONG Count,PDEBUG_SYMBOL_PARAMETERS Params) PURE;
   3383     STDMETHOD(ExpandSymbol)(THIS_ ULONG Index,WINBOOL Expand) PURE;
   3384     STDMETHOD(OutputSymbols)(THIS_ ULONG OutputControl,ULONG Flags,ULONG Start,ULONG Count) PURE;
   3385     STDMETHOD(WriteSymbol)(THIS_ ULONG Index,PCSTR Value) PURE;
   3386     STDMETHOD(OutputAsType)(THIS_ ULONG Index,PCSTR Type) PURE;
   3387   };
   3388 #ifdef __CRT_UUID_DECL
   3389 __CRT_UUID_DECL(IDebugSymbolGroup,0xf2528316,0x0f1a,0x4431,0xae,0xed,0x11,0xd0,0x96,0xe1,0xe2,0xab)
   3390 #endif
   3391 
   3392 #define DEBUG_SYMENT_IS_CODE 0x00000001
   3393 #define DEBUG_SYMENT_IS_DATA 0x00000002
   3394 #define DEBUG_SYMENT_IS_PARAMETER 0x00000004
   3395 #define DEBUG_SYMENT_IS_LOCAL 0x00000008
   3396 #define DEBUG_SYMENT_IS_MANAGED 0x00000010
   3397 #define DEBUG_SYMENT_IS_SYNTHETIC 0x00000020
   3398 
   3399   typedef struct _DEBUG_SYMBOL_ENTRY {
   3400     ULONG64 ModuleBase;
   3401     ULONG64 Offset;
   3402     ULONG64 Id;
   3403     ULONG64 Arg64;
   3404     ULONG Size;
   3405     ULONG Flags;
   3406     ULONG TypeId;
   3407     ULONG NameSize;
   3408     ULONG Token;
   3409     ULONG Tag;
   3410     ULONG Arg32;
   3411     ULONG Reserved;
   3412   } DEBUG_SYMBOL_ENTRY,*PDEBUG_SYMBOL_ENTRY;
   3413 
   3414 #undef INTERFACE
   3415 #define INTERFACE IDebugSymbolGroup2
   3416   DECLARE_INTERFACE_(IDebugSymbolGroup2, IUnknown) {
   3417     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
   3418     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   3419     STDMETHOD_(ULONG, Release)(THIS) PURE;
   3420     STDMETHOD(GetNumberSymbols)(THIS_ PULONG Number) PURE;
   3421     STDMETHOD(AddSymbol)(THIS_ PCSTR Name, PULONG Index) PURE;
   3422     STDMETHOD(RemoveSymbolByName)(THIS_ PCSTR Name) PURE;
   3423     STDMETHOD(RemoveSymbolByIndex)(THIS_ ULONG Index) PURE;
   3424     STDMETHOD(GetSymbolName)(THIS_ ULONG Index, PSTR Buffer, ULONG BufferSize, PULONG NameSize) PURE;
   3425     STDMETHOD(GetSymbolParameters)(THIS_ ULONG Start, ULONG Count, PDEBUG_SYMBOL_PARAMETERS Params) PURE;
   3426     STDMETHOD(ExpandSymbol)(THIS_ ULONG Index, WINBOOL Expand) PURE;
   3427     STDMETHOD(OutputSymbols)(THIS_ ULONG OutputControl, ULONG Flags, ULONG Start, ULONG Count) PURE;
   3428     STDMETHOD(WriteSymbol)(THIS_ ULONG Index, PCSTR Value) PURE;
   3429     STDMETHOD(OutputAsType)(THIS_ ULONG Index, PCSTR Type) PURE;
   3430     STDMETHOD(AddSymbolWide)(THIS_ PCWSTR Name, PULONG Index) PURE;
   3431     STDMETHOD(RemoveSymbolByNameWide)(THIS_ PCWSTR Name) PURE;
   3432     STDMETHOD(GetSymbolNameWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG BufferSize, PULONG NameSize) PURE;
   3433     STDMETHOD(WriteSymbolWide)(THIS_ ULONG Index, PCWSTR Value) PURE;
   3434     STDMETHOD(OutputAsTypeWide)(THIS_ ULONG Index, PCWSTR Type) PURE;
   3435     STDMETHOD(GetSymbolTypeName)(THIS_ ULONG Index, PSTR Buffer, ULONG BufferSize, PULONG NameSize) PURE;
   3436     STDMETHOD(GetSymbolTypeNameWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG BufferSize, PULONG NameSize) PURE;
   3437     STDMETHOD(GetSymbolSize)(THIS_ ULONG Index, PULONG Size) PURE;
   3438     STDMETHOD(GetSymbolOffset)(THIS_ ULONG Index, PULONG64 Offset) PURE;
   3439     STDMETHOD(GetSymbolRegister)(THIS_ ULONG Index, PULONG Register) PURE;
   3440     STDMETHOD(GetSymbolValueText)(THIS_ ULONG Index, PSTR Buffer, ULONG BufferSize, PULONG NameSize) PURE;
   3441     STDMETHOD(GetSymbolValueTextWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG BufferSize, PULONG NameSize) PURE;
   3442     STDMETHOD(GetSymbolEntryInformation)(THIS_ ULONG Index, PDEBUG_SYMBOL_ENTRY Entry) PURE;
   3443   };
   3444 #ifdef __CRT_UUID_DECL
   3445 __CRT_UUID_DECL(IDebugSymbolGroup2,0x6a7ccc5f,0xfb5e,0x4dcc,0xb4,0x1c,0x6c,0x20,0x30,0x7b,0xcc,0xc7)
   3446 #endif
   3447 
   3448 #define DEBUG_MODULE_LOADED 0x00000000
   3449 #define DEBUG_MODULE_UNLOADED 0x00000001
   3450 #define DEBUG_MODULE_USER_MODE 0x00000002
   3451 #define DEBUG_MODULE_SYM_BAD_CHECKSUM 0x00010000
   3452 
   3453 #define DEBUG_SYMTYPE_NONE 0
   3454 #define DEBUG_SYMTYPE_COFF 1
   3455 #define DEBUG_SYMTYPE_CODEVIEW 2
   3456 #define DEBUG_SYMTYPE_PDB 3
   3457 #define DEBUG_SYMTYPE_EXPORT 4
   3458 #define DEBUG_SYMTYPE_DEFERRED 5
   3459 #define DEBUG_SYMTYPE_SYM 6
   3460 #define DEBUG_SYMTYPE_DIA 7
   3461 
   3462   typedef struct _DEBUG_MODULE_PARAMETERS {
   3463     ULONG64 Base;
   3464     ULONG Size;
   3465     ULONG TimeDateStamp;
   3466     ULONG Checksum;
   3467     ULONG Flags;
   3468     ULONG SymbolType;
   3469     ULONG ImageNameSize;
   3470     ULONG ModuleNameSize;
   3471     ULONG LoadedImageNameSize;
   3472     ULONG SymbolFileNameSize;
   3473     ULONG MappedImageNameSize;
   3474     ULONG64 Reserved[2];
   3475   } DEBUG_MODULE_PARAMETERS,*PDEBUG_MODULE_PARAMETERS;
   3476 
   3477 #define DEBUG_SCOPE_GROUP_ARGUMENTS 0x00000001
   3478 #define DEBUG_SCOPE_GROUP_LOCALS 0x00000002
   3479 #define DEBUG_SCOPE_GROUP_ALL 0x00000003
   3480 
   3481 #define DEBUG_OUTTYPE_DEFAULT 0x00000000
   3482 #define DEBUG_OUTTYPE_NO_INDENT 0x00000001
   3483 #define DEBUG_OUTTYPE_NO_OFFSET 0x00000002
   3484 #define DEBUG_OUTTYPE_VERBOSE 0x00000004
   3485 #define DEBUG_OUTTYPE_COMPACT_OUTPUT 0x00000008
   3486 #define DEBUG_OUTTYPE_RECURSION_LEVEL(Max) (((Max) & 0xf) << 4)
   3487 #define DEBUG_OUTTYPE_ADDRESS_OF_FIELD 0x00010000
   3488 #define DEBUG_OUTTYPE_ADDRESS_AT_END 0x00020000
   3489 #define DEBUG_OUTTYPE_BLOCK_RECURSE 0x00200000
   3490 
   3491 #define DEBUG_FIND_SOURCE_DEFAULT 0x00000000
   3492 #define DEBUG_FIND_SOURCE_FULL_PATH 0x00000001
   3493 #define DEBUG_FIND_SOURCE_BEST_MATCH 0x00000002
   3494 
   3495 #define DEBUG_INVALID_OFFSET ((ULONG64)-1)
   3496 
   3497 #undef INTERFACE
   3498 #define INTERFACE IDebugSymbols
   3499   DECLARE_INTERFACE_(IDebugSymbols,IUnknown) {
   3500     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE;
   3501     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   3502     STDMETHOD_(ULONG,Release)(THIS) PURE;
   3503     STDMETHOD(GetSymbolOptions)(THIS_ PULONG Options) PURE;
   3504     STDMETHOD(AddSymbolOptions)(THIS_ ULONG Options) PURE;
   3505     STDMETHOD(RemoveSymbolOptions)(THIS_ ULONG Options) PURE;
   3506     STDMETHOD(SetSymbolOptions)(THIS_ ULONG Options) PURE;
   3507     STDMETHOD(GetNameByOffset)(THIS_ ULONG64 Offset,PSTR NameBuffer,ULONG NameBufferSize,PULONG NameSize,PULONG64 Displacement) PURE;
   3508     STDMETHOD(GetOffsetByName)(THIS_ PCSTR Symbol,PULONG64 Offset) PURE;
   3509     STDMETHOD(GetNearNameByOffset)(THIS_ ULONG64 Offset,LONG Delta,PSTR NameBuffer,ULONG NameBufferSize,PULONG NameSize,PULONG64 Displacement) PURE;
   3510     STDMETHOD(GetLineByOffset)(THIS_ ULONG64 Offset,PULONG Line,PSTR FileBuffer,ULONG FileBufferSize,PULONG FileSize,PULONG64 Displacement) PURE;
   3511     STDMETHOD(GetOffsetByLine)(THIS_ ULONG Line,PCSTR File,PULONG64 Offset) PURE;
   3512     STDMETHOD(GetNumberModules)(THIS_ PULONG Loaded,PULONG Unloaded) PURE;
   3513     STDMETHOD(GetModuleByIndex)(THIS_ ULONG Index,PULONG64 Base) PURE;
   3514     STDMETHOD(GetModuleByModuleName)(THIS_ PCSTR Name,ULONG StartIndex,PULONG Index,PULONG64 Base) PURE;
   3515     STDMETHOD(GetModuleByOffset)(THIS_ ULONG64 Offset,ULONG StartIndex,PULONG Index,PULONG64 Base) PURE;
   3516     STDMETHOD(GetModuleNames)(THIS_ ULONG Index,ULONG64 Base,PSTR ImageNameBuffer,ULONG ImageNameBufferSize,PULONG ImageNameSize,PSTR ModuleNameBuffer,ULONG ModuleNameBufferSize,PULONG ModuleNameSize,PSTR LoadedImageNameBuffer,ULONG LoadedImageNameBufferSize,PULONG LoadedImageNameSize) PURE;
   3517     STDMETHOD(GetModuleParameters)(THIS_ ULONG Count,PULONG64 Bases,ULONG Start,PDEBUG_MODULE_PARAMETERS Params) PURE;
   3518     STDMETHOD(GetSymbolModule)(THIS_ PCSTR Symbol,PULONG64 Base) PURE;
   3519     STDMETHOD(GetTypeName)(THIS_ ULONG64 Module,ULONG TypeId,PSTR NameBuffer,ULONG NameBufferSize,PULONG NameSize) PURE;
   3520     STDMETHOD(GetTypeId)(THIS_ ULONG64 Module,PCSTR Name,PULONG TypeId) PURE;
   3521     STDMETHOD(GetTypeSize)(THIS_ ULONG64 Module,ULONG TypeId,PULONG Size) PURE;
   3522     STDMETHOD(GetFieldOffset)(THIS_ ULONG64 Module,ULONG TypeId,PCSTR Field,PULONG Offset) PURE;
   3523     STDMETHOD(GetSymbolTypeId)(THIS_ PCSTR Symbol,PULONG TypeId,PULONG64 Module) PURE;
   3524     STDMETHOD(GetOffsetTypeId)(THIS_ ULONG64 Offset,PULONG TypeId,PULONG64 Module) PURE;
   3525     STDMETHOD(ReadTypedDataVirtual)(THIS_ ULONG64 Offset,ULONG64 Module,ULONG TypeId,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE;
   3526     STDMETHOD(WriteTypedDataVirtual)(THIS_ ULONG64 Offset,ULONG64 Module,ULONG TypeId,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE;
   3527     STDMETHOD(OutputTypedDataVirtual)(THIS_ ULONG OutputControl,ULONG64 Offset,ULONG64 Module,ULONG TypeId,ULONG Flags) PURE;
   3528     STDMETHOD(ReadTypedDataPhysical)(THIS_ ULONG64 Offset,ULONG64 Module,ULONG TypeId,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE;
   3529     STDMETHOD(WriteTypedDataPhysical)(THIS_ ULONG64 Offset,ULONG64 Module,ULONG TypeId,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE;
   3530     STDMETHOD(OutputTypedDataPhysical)(THIS_ ULONG OutputControl,ULONG64 Offset,ULONG64 Module,ULONG TypeId,ULONG Flags) PURE;
   3531     STDMETHOD(GetScope)(THIS_ PULONG64 InstructionOffset,PDEBUG_STACK_FRAME ScopeFrame,PVOID ScopeContext,ULONG ScopeContextSize) PURE;
   3532     STDMETHOD(SetScope)(THIS_ ULONG64 InstructionOffset,PDEBUG_STACK_FRAME ScopeFrame,PVOID ScopeContext,ULONG ScopeContextSize) PURE;
   3533     STDMETHOD(ResetScope)(THIS) PURE;
   3534     STDMETHOD(GetScopeSymbolGroup)(THIS_ ULONG Flags,PDEBUG_SYMBOL_GROUP Update,PDEBUG_SYMBOL_GROUP *Symbols) PURE;
   3535     STDMETHOD(CreateSymbolGroup)(THIS_ PDEBUG_SYMBOL_GROUP *Group) PURE;
   3536     STDMETHOD(StartSymbolMatch)(THIS_ PCSTR Pattern,PULONG64 Handle) PURE;
   3537     STDMETHOD(GetNextSymbolMatch)(THIS_ ULONG64 Handle,PSTR Buffer,ULONG BufferSize,PULONG MatchSize,PULONG64 Offset) PURE;
   3538     STDMETHOD(EndSymbolMatch)(THIS_ ULONG64 Handle) PURE;
   3539     STDMETHOD(Reload)(THIS_ PCSTR Module) PURE;
   3540     STDMETHOD(GetSymbolPath)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG PathSize) PURE;
   3541     STDMETHOD(SetSymbolPath)(THIS_ PCSTR Path) PURE;
   3542     STDMETHOD(AppendSymbolPath)(THIS_ PCSTR Addition) PURE;
   3543     STDMETHOD(GetImagePath)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG PathSize) PURE;
   3544     STDMETHOD(SetImagePath)(THIS_ PCSTR Path) PURE;
   3545     STDMETHOD(AppendImagePath)(THIS_ PCSTR Addition) PURE;
   3546     STDMETHOD(GetSourcePath)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG PathSize) PURE;
   3547     STDMETHOD(GetSourcePathElement)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG ElementSize) PURE;
   3548     STDMETHOD(SetSourcePath)(THIS_ PCSTR Path) PURE;
   3549     STDMETHOD(AppendSourcePath)(THIS_ PCSTR Addition) PURE;
   3550     STDMETHOD(FindSourceFile)(THIS_ ULONG StartElement,PCSTR File,ULONG Flags,PULONG FoundElement,PSTR Buffer,ULONG BufferSize,PULONG FoundSize) PURE;
   3551     STDMETHOD(GetSourceFileLineOffsets)(THIS_ PCSTR File,PULONG64 Buffer,ULONG BufferLines,PULONG FileLines) PURE;
   3552   };
   3553 #ifdef __CRT_UUID_DECL
   3554 __CRT_UUID_DECL(IDebugSymbols,0x8c31e98c,0x983a,0x48a5,0x90,0x16,0x6f,0xe5,0xd6,0x67,0xa9,0x50)
   3555 #endif
   3556 
   3557 #define DEBUG_MODNAME_IMAGE 0x00000000
   3558 #define DEBUG_MODNAME_MODULE 0x00000001
   3559 #define DEBUG_MODNAME_LOADED_IMAGE 0x00000002
   3560 #define DEBUG_MODNAME_SYMBOL_FILE 0x00000003
   3561 #define DEBUG_MODNAME_MAPPED_IMAGE 0x00000004
   3562 
   3563 #define DEBUG_TYPEOPTS_UNICODE_DISPLAY 0x00000001
   3564 #define DEBUG_TYPEOPTS_LONGSTATUS_DISPLAY 0x00000002
   3565 #define DEBUG_TYPEOPTS_FORCERADIX_OUTPUT 0x00000004
   3566 
   3567 #undef INTERFACE
   3568 #define INTERFACE IDebugSymbols2
   3569   DECLARE_INTERFACE_(IDebugSymbols2,IUnknown) {
   3570     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE;
   3571     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   3572     STDMETHOD_(ULONG,Release)(THIS) PURE;
   3573     STDMETHOD(GetSymbolOptions)(THIS_ PULONG Options) PURE;
   3574     STDMETHOD(AddSymbolOptions)(THIS_ ULONG Options) PURE;
   3575     STDMETHOD(RemoveSymbolOptions)(THIS_ ULONG Options) PURE;
   3576     STDMETHOD(SetSymbolOptions)(THIS_ ULONG Options) PURE;
   3577     STDMETHOD(GetNameByOffset)(THIS_ ULONG64 Offset,PSTR NameBuffer,ULONG NameBufferSize,PULONG NameSize,PULONG64 Displacement) PURE;
   3578     STDMETHOD(GetOffsetByName)(THIS_ PCSTR Symbol,PULONG64 Offset) PURE;
   3579     STDMETHOD(GetNearNameByOffset)(THIS_ ULONG64 Offset,LONG Delta,PSTR NameBuffer,ULONG NameBufferSize,PULONG NameSize,PULONG64 Displacement) PURE;
   3580     STDMETHOD(GetLineByOffset)(THIS_ ULONG64 Offset,PULONG Line,PSTR FileBuffer,ULONG FileBufferSize,PULONG FileSize,PULONG64 Displacement) PURE;
   3581     STDMETHOD(GetOffsetByLine)(THIS_ ULONG Line,PCSTR File,PULONG64 Offset) PURE;
   3582     STDMETHOD(GetNumberModules)(THIS_ PULONG Loaded,PULONG Unloaded) PURE;
   3583     STDMETHOD(GetModuleByIndex)(THIS_ ULONG Index,PULONG64 Base) PURE;
   3584     STDMETHOD(GetModuleByModuleName)(THIS_ PCSTR Name,ULONG StartIndex,PULONG Index,PULONG64 Base) PURE;
   3585     STDMETHOD(GetModuleByOffset)(THIS_ ULONG64 Offset,ULONG StartIndex,PULONG Index,PULONG64 Base) PURE;
   3586     STDMETHOD(GetModuleNames)(THIS_ ULONG Index,ULONG64 Base,PSTR ImageNameBuffer,ULONG ImageNameBufferSize,PULONG ImageNameSize,PSTR ModuleNameBuffer,ULONG ModuleNameBufferSize,PULONG ModuleNameSize,PSTR LoadedImageNameBuffer,ULONG LoadedImageNameBufferSize,PULONG LoadedImageNameSize) PURE;
   3587     STDMETHOD(GetModuleParameters)(THIS_ ULONG Count,PULONG64 Bases,ULONG Start,PDEBUG_MODULE_PARAMETERS Params) PURE;
   3588     STDMETHOD(GetSymbolModule)(THIS_ PCSTR Symbol,PULONG64 Base) PURE;
   3589     STDMETHOD(GetTypeName)(THIS_ ULONG64 Module,ULONG TypeId,PSTR NameBuffer,ULONG NameBufferSize,PULONG NameSize) PURE;
   3590     STDMETHOD(GetTypeId)(THIS_ ULONG64 Module,PCSTR Name,PULONG TypeId) PURE;
   3591     STDMETHOD(GetTypeSize)(THIS_ ULONG64 Module,ULONG TypeId,PULONG Size) PURE;
   3592     STDMETHOD(GetFieldOffset)(THIS_ ULONG64 Module,ULONG TypeId,PCSTR Field,PULONG Offset) PURE;
   3593     STDMETHOD(GetSymbolTypeId)(THIS_ PCSTR Symbol,PULONG TypeId,PULONG64 Module) PURE;
   3594     STDMETHOD(GetOffsetTypeId)(THIS_ ULONG64 Offset,PULONG TypeId,PULONG64 Module) PURE;
   3595     STDMETHOD(ReadTypedDataVirtual)(THIS_ ULONG64 Offset,ULONG64 Module,ULONG TypeId,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE;
   3596     STDMETHOD(WriteTypedDataVirtual)(THIS_ ULONG64 Offset,ULONG64 Module,ULONG TypeId,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE;
   3597     STDMETHOD(OutputTypedDataVirtual)(THIS_ ULONG OutputControl,ULONG64 Offset,ULONG64 Module,ULONG TypeId,ULONG Flags) PURE;
   3598     STDMETHOD(ReadTypedDataPhysical)(THIS_ ULONG64 Offset,ULONG64 Module,ULONG TypeId,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE;
   3599     STDMETHOD(WriteTypedDataPhysical)(THIS_ ULONG64 Offset,ULONG64 Module,ULONG TypeId,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE;
   3600     STDMETHOD(OutputTypedDataPhysical)(THIS_ ULONG OutputControl,ULONG64 Offset,ULONG64 Module,ULONG TypeId,ULONG Flags) PURE;
   3601     STDMETHOD(GetScope)(THIS_ PULONG64 InstructionOffset,PDEBUG_STACK_FRAME ScopeFrame,PVOID ScopeContext,ULONG ScopeContextSize) PURE;
   3602     STDMETHOD(SetScope)(THIS_ ULONG64 InstructionOffset,PDEBUG_STACK_FRAME ScopeFrame,PVOID ScopeContext,ULONG ScopeContextSize) PURE;
   3603     STDMETHOD(ResetScope)(THIS) PURE;
   3604     STDMETHOD(GetScopeSymbolGroup)(THIS_ ULONG Flags,PDEBUG_SYMBOL_GROUP Update,PDEBUG_SYMBOL_GROUP *Symbols) PURE;
   3605     STDMETHOD(CreateSymbolGroup)(THIS_ PDEBUG_SYMBOL_GROUP *Group) PURE;
   3606     STDMETHOD(StartSymbolMatch)(THIS_ PCSTR Pattern,PULONG64 Handle) PURE;
   3607     STDMETHOD(GetNextSymbolMatch)(THIS_ ULONG64 Handle,PSTR Buffer,ULONG BufferSize,PULONG MatchSize,PULONG64 Offset) PURE;
   3608     STDMETHOD(EndSymbolMatch)(THIS_ ULONG64 Handle) PURE;
   3609     STDMETHOD(Reload)(THIS_ PCSTR Module) PURE;
   3610     STDMETHOD(GetSymbolPath)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG PathSize) PURE;
   3611     STDMETHOD(SetSymbolPath)(THIS_ PCSTR Path) PURE;
   3612     STDMETHOD(AppendSymbolPath)(THIS_ PCSTR Addition) PURE;
   3613     STDMETHOD(GetImagePath)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG PathSize) PURE;
   3614     STDMETHOD(SetImagePath)(THIS_ PCSTR Path) PURE;
   3615     STDMETHOD(AppendImagePath)(THIS_ PCSTR Addition) PURE;
   3616     STDMETHOD(GetSourcePath)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG PathSize) PURE;
   3617     STDMETHOD(GetSourcePathElement)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG ElementSize) PURE;
   3618     STDMETHOD(SetSourcePath)(THIS_ PCSTR Path) PURE;
   3619     STDMETHOD(AppendSourcePath)(THIS_ PCSTR Addition) PURE;
   3620     STDMETHOD(FindSourceFile)(THIS_ ULONG StartElement,PCSTR File,ULONG Flags,PULONG FoundElement,PSTR Buffer,ULONG BufferSize,PULONG FoundSize) PURE;
   3621     STDMETHOD(GetSourceFileLineOffsets)(THIS_ PCSTR File,PULONG64 Buffer,ULONG BufferLines,PULONG FileLines) PURE;
   3622     STDMETHOD(GetModuleVersionInformation)(THIS_ ULONG Index,ULONG64 Base,PCSTR Item,PVOID Buffer,ULONG BufferSize,PULONG VerInfoSize) PURE;
   3623     STDMETHOD(GetModuleNameString)(THIS_ ULONG Which,ULONG Index,ULONG64 Base,PSTR Buffer,ULONG BufferSize,PULONG NameSize) PURE;
   3624     STDMETHOD(GetConstantName)(THIS_ ULONG64 Module,ULONG TypeId,ULONG64 Value,PSTR NameBuffer,ULONG NameBufferSize,PULONG NameSize) PURE;
   3625     STDMETHOD(GetFieldName)(THIS_ ULONG64 Module,ULONG TypeId,ULONG FieldIndex,PSTR NameBuffer,ULONG NameBufferSize,PULONG NameSize) PURE;
   3626     STDMETHOD(GetTypeOptions)(THIS_ PULONG Options) PURE;
   3627     STDMETHOD(AddTypeOptions)(THIS_ ULONG Options) PURE;
   3628     STDMETHOD(RemoveTypeOptions)(THIS_ ULONG Options) PURE;
   3629     STDMETHOD(SetTypeOptions)(THIS_ ULONG Options) PURE;
   3630   };
   3631 #ifdef __CRT_UUID_DECL
   3632 __CRT_UUID_DECL(IDebugSymbols2,0x3a707211,0xafdd,0x4495,0xad,0x4f,0x56,0xfe,0xcd,0xf8,0x16,0x3f)
   3633 #endif
   3634 
   3635 #define DEBUG_GETMOD_DEFAULT 0x00000000
   3636 #define DEBUG_GETMOD_NO_LOADED_MODULES 0x00000001
   3637 #define DEBUG_GETMOD_NO_UNLOADED_MODULES 0x00000002
   3638 
   3639 #define DEBUG_ADDSYNTHMOD_DEFAULT 0x00000000
   3640 #define DEBUG_ADDSYNTHMOD_ZEROBASE 0x00000001
   3641 
   3642 #define DEBUG_ADDSYNTHSYM_DEFAULT 0x00000000
   3643 
   3644 #define DEBUG_OUTSYM_DEFAULT 0x00000000
   3645 #define DEBUG_OUTSYM_FORCE_OFFSET 0x00000001
   3646 #define DEBUG_OUTSYM_SOURCE_LINE 0x00000002
   3647 #define DEBUG_OUTSYM_ALLOW_DISPLACEMENT 0x00000004
   3648 
   3649 #define DEBUG_GETFNENT_DEFAULT 0x00000000
   3650 #define DEBUG_GETFNENT_RAW_ENTRY_ONLY 0x00000001
   3651 
   3652   typedef struct _DEBUG_MODULE_AND_ID {
   3653     ULONG64 ModuleBase;
   3654     ULONG64 Id;
   3655   } DEBUG_MODULE_AND_ID,*PDEBUG_MODULE_AND_ID;
   3656 
   3657 #define DEBUG_SOURCE_IS_STATEMENT 0x00000001
   3658 
   3659 #define DEBUG_GSEL_DEFAULT 0x00000000
   3660 #define DEBUG_GSEL_NO_SYMBOL_LOADS 0x00000001
   3661 #define DEBUG_GSEL_ALLOW_LOWER 0x00000002
   3662 #define DEBUG_GSEL_ALLOW_HIGHER 0x00000004
   3663 #define DEBUG_GSEL_NEAREST_ONLY 0x00000008
   3664 #define DEBUG_GSEL_INLINE_CALLSITE 0x00000010
   3665 
   3666   typedef struct _DEBUG_SYMBOL_SOURCE_ENTRY {
   3667     ULONG64 ModuleBase;
   3668     ULONG64 Offset;
   3669     ULONG64 FileNameId;
   3670     ULONG64 EngineInternal;
   3671     ULONG Size;
   3672     ULONG Flags;
   3673     ULONG FileNameSize;
   3674     ULONG StartLine;
   3675     ULONG EndLine;
   3676     ULONG StartColumn;
   3677     ULONG EndColumn;
   3678     ULONG Reserved;
   3679   } DEBUG_SYMBOL_SOURCE_ENTRY,*PDEBUG_SYMBOL_SOURCE_ENTRY;
   3680 
   3681 #undef INTERFACE
   3682 #define INTERFACE IDebugSymbols3
   3683   DECLARE_INTERFACE_(IDebugSymbols3, IUnknown) {
   3684     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
   3685     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   3686     STDMETHOD_(ULONG, Release)(THIS) PURE;
   3687     STDMETHOD(GetSymbolOptions)(THIS_ PULONG Options) PURE;
   3688     STDMETHOD(AddSymbolOptions)(THIS_ ULONG Options) PURE;
   3689     STDMETHOD(RemoveSymbolOptions)(THIS_ ULONG Options) PURE;
   3690     STDMETHOD(SetSymbolOptions)(THIS_ ULONG Options) PURE;
   3691     STDMETHOD(GetNameByOffset)(THIS_ ULONG64 Offset, PSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize, PULONG64 Displacement) PURE;
   3692     STDMETHOD(GetOffsetByName)(THIS_ PCSTR Symbol, PULONG64 Offset) PURE;
   3693     STDMETHOD(GetNearNameByOffset)(THIS_ ULONG64 Offset, LONG Delta, PSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize, PULONG64 Displacement) PURE;
   3694     STDMETHOD(GetLineByOffset)(THIS_ ULONG64 Offset, PULONG Line, PSTR FileBuffer, ULONG FileBufferSize, PULONG FileSize, PULONG64 Displacement) PURE;
   3695     STDMETHOD(GetOffsetByLine)(THIS_ ULONG Line, PCSTR File, PULONG64 Offset) PURE;
   3696     STDMETHOD(GetNumberModules)(THIS_ PULONG Loaded, PULONG Unloaded) PURE;
   3697     STDMETHOD(GetModuleByIndex)(THIS_ ULONG Index, PULONG64 Base) PURE;
   3698     STDMETHOD(GetModuleByModuleName)(THIS_ PCSTR Name, ULONG StartIndex, PULONG Index, PULONG64 Base) PURE;
   3699     STDMETHOD(GetModuleByOffset)(THIS_ ULONG64 Offset, ULONG StartIndex, PULONG Index, PULONG64 Base) PURE;
   3700     STDMETHOD(GetModuleNames)(THIS_ ULONG Index, ULONG64 Base, PSTR ImageNameBuffer, ULONG ImageNameBufferSize, PULONG ImageNameSize, PSTR ModuleNameBuffer, ULONG ModuleNameBufferSize, PULONG ModuleNameSize, PSTR LoadedImageNameBuffer, ULONG LoadedImageNameBufferSize, PULONG LoadedImageNameSize) PURE;
   3701     STDMETHOD(GetModuleParameters)(THIS_ ULONG Count, PULONG64 Bases, ULONG Start, PDEBUG_MODULE_PARAMETERS Params) PURE;
   3702     STDMETHOD(GetSymbolModule)(THIS_ PCSTR Symbol, PULONG64 Base) PURE;
   3703     STDMETHOD(GetTypeName)(THIS_ ULONG64 Module, ULONG TypeId, PSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
   3704     STDMETHOD(GetTypeId)(THIS_ ULONG64 Module, PCSTR Name, PULONG TypeId) PURE;
   3705     STDMETHOD(GetTypeSize)(THIS_ ULONG64 Module, ULONG TypeId, PULONG Size) PURE;
   3706     STDMETHOD(GetFieldOffset)(THIS_ ULONG64 Module, ULONG TypeId, PCSTR Field, PULONG Offset) PURE;
   3707     STDMETHOD(GetSymbolTypeId)(THIS_ PCSTR Symbol, PULONG TypeId, PULONG64 Module) PURE;
   3708     STDMETHOD(GetOffsetTypeId)(THIS_ ULONG64 Offset, PULONG TypeId, PULONG64 Module) PURE;
   3709     STDMETHOD(ReadTypedDataVirtual)(THIS_ ULONG64 Offset, ULONG64 Module, ULONG TypeId, PVOID Buffer, ULONG BufferSize, PULONG BytesRead) PURE;
   3710     STDMETHOD(WriteTypedDataVirtual)(THIS_ ULONG64 Offset, ULONG64 Module, ULONG TypeId, PVOID Buffer, ULONG BufferSize, PULONG BytesWritten) PURE;
   3711     STDMETHOD(OutputTypedDataVirtual)(THIS_ ULONG OutputControl, ULONG64 Offset, ULONG64 Module, ULONG TypeId, ULONG Flags) PURE;
   3712     STDMETHOD(ReadTypedDataPhysical)(THIS_ ULONG64 Offset, ULONG64 Module, ULONG TypeId, PVOID Buffer, ULONG BufferSize, PULONG BytesRead) PURE;
   3713     STDMETHOD(WriteTypedDataPhysical)(THIS_ ULONG64 Offset, ULONG64 Module, ULONG TypeId, PVOID Buffer, ULONG BufferSize, PULONG BytesWritten) PURE;
   3714     STDMETHOD(OutputTypedDataPhysical)(THIS_ ULONG OutputControl, ULONG64 Offset, ULONG64 Module, ULONG TypeId, ULONG Flags) PURE;
   3715     STDMETHOD(GetScope)(THIS_ PULONG64 InstructionOffset, PDEBUG_STACK_FRAME ScopeFrame, PVOID ScopeContext, ULONG ScopeContextSize) PURE;
   3716     STDMETHOD(SetScope)(THIS_ ULONG64 InstructionOffset, PDEBUG_STACK_FRAME ScopeFrame, PVOID ScopeContext, ULONG ScopeContextSize) PURE;
   3717     STDMETHOD(ResetScope)(THIS) PURE;
   3718     STDMETHOD(GetScopeSymbolGroup)(THIS_ ULONG Flags, PDEBUG_SYMBOL_GROUP Update, PDEBUG_SYMBOL_GROUP *Symbols) PURE;
   3719     STDMETHOD(CreateSymbolGroup)(THIS_ PDEBUG_SYMBOL_GROUP *Group) PURE;
   3720     STDMETHOD(StartSymbolMatch)(THIS_ PCSTR Pattern, PULONG64 Handle) PURE;
   3721     STDMETHOD(GetNextSymbolMatch)(THIS_ ULONG64 Handle, PSTR Buffer, ULONG BufferSize, PULONG MatchSize, PULONG64 Offset) PURE;
   3722     STDMETHOD(EndSymbolMatch)(THIS_ ULONG64 Handle) PURE;
   3723     STDMETHOD(Reload)(THIS_ PCSTR Module) PURE;
   3724     STDMETHOD(GetSymbolPath)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG PathSize) PURE;
   3725     STDMETHOD(SetSymbolPath)(THIS_ PCSTR Path) PURE;
   3726     STDMETHOD(AppendSymbolPath)(THIS_ PCSTR Addition) PURE;
   3727     STDMETHOD(GetImagePath)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG PathSize) PURE;
   3728     STDMETHOD(SetImagePath)(THIS_ PCSTR Path) PURE;
   3729     STDMETHOD(AppendImagePath)(THIS_ PCSTR Addition) PURE;
   3730     STDMETHOD(GetSourcePath)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG PathSize) PURE;
   3731     STDMETHOD(GetSourcePathElement)(THIS_ ULONG Index, PSTR Buffer, ULONG BufferSize, PULONG ElementSize) PURE;
   3732     STDMETHOD(SetSourcePath)(THIS_ PCSTR Path) PURE;
   3733     STDMETHOD(AppendSourcePath)(THIS_ PCSTR Addition) PURE;
   3734     STDMETHOD(FindSourceFile)(THIS_ ULONG StartElement, PCSTR File, ULONG Flags, PULONG FoundElement, PSTR Buffer, ULONG BufferSize, PULONG FoundSize) PURE;
   3735     STDMETHOD(GetSourceFileLineOffsets)(THIS_ PCSTR File, PULONG64 Buffer, ULONG BufferLines, PULONG FileLines) PURE;
   3736     STDMETHOD(GetModuleVersionInformation)(THIS_ ULONG Index, ULONG64 Base, PCSTR Item, PVOID Buffer, ULONG BufferSize, PULONG VerInfoSize) PURE;
   3737     STDMETHOD(GetModuleNameString)(THIS_ ULONG Which, ULONG Index, ULONG64 Base, PSTR Buffer, ULONG BufferSize, PULONG NameSize) PURE;
   3738     STDMETHOD(GetConstantName)(THIS_ ULONG64 Module, ULONG TypeId, ULONG64 Value, PSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
   3739     STDMETHOD(GetFieldName)(THIS_ ULONG64 Module, ULONG TypeId, ULONG FieldIndex, PSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
   3740     STDMETHOD(GetTypeOptions)(THIS_ PULONG Options) PURE;
   3741     STDMETHOD(AddTypeOptions)(THIS_ ULONG Options) PURE;
   3742     STDMETHOD(RemoveTypeOptions)(THIS_ ULONG Options) PURE;
   3743     STDMETHOD(SetTypeOptions)(THIS_ ULONG Options) PURE;
   3744     STDMETHOD(GetNameByOffsetWide)(THIS_ ULONG64 Offset, PWSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize, PULONG64 Displacement) PURE;
   3745     STDMETHOD(GetOffsetByNameWide)(THIS_ PCWSTR Symbol, PULONG64 Offset) PURE;
   3746     STDMETHOD(GetNearNameByOffsetWide)(THIS_ ULONG64 Offset, LONG Delta, PWSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize, PULONG64 Displacement) PURE;
   3747     STDMETHOD(GetLineByOffsetWide)(THIS_ ULONG64 Offset, PULONG Line, PWSTR FileBuffer, ULONG FileBufferSize, PULONG FileSize, PULONG64 Displacement) PURE;
   3748     STDMETHOD(GetOffsetByLineWide)(THIS_ ULONG Line, PCWSTR File, PULONG64 Offset) PURE;
   3749     STDMETHOD(GetModuleByModuleNameWide)(THIS_ PCWSTR Name, ULONG StartIndex, PULONG Index, PULONG64 Base) PURE;
   3750     STDMETHOD(GetSymbolModuleWide)(THIS_ PCWSTR Symbol, PULONG64 Base) PURE;
   3751     STDMETHOD(GetTypeNameWide)(THIS_ ULONG64 Module, ULONG TypeId, PWSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
   3752     STDMETHOD(GetTypeIdWide)(THIS_ ULONG64 Module, PCWSTR Name, PULONG TypeId) PURE;
   3753     STDMETHOD(GetFieldOffsetWide)(THIS_ ULONG64 Module, ULONG TypeId, PCWSTR Field, PULONG Offset) PURE;
   3754     STDMETHOD(GetSymbolTypeIdWide)(THIS_ PCWSTR Symbol, PULONG TypeId, PULONG64 Module) PURE;
   3755     STDMETHOD(GetScopeSymbolGroup2)(THIS_ ULONG Flags, PDEBUG_SYMBOL_GROUP2 Update, PDEBUG_SYMBOL_GROUP2 *Symbols) PURE;
   3756     STDMETHOD(CreateSymbolGroup2)(THIS_ PDEBUG_SYMBOL_GROUP2 *Group) PURE;
   3757     STDMETHOD(StartSymbolMatchWide)(THIS_ PCWSTR Pattern, PULONG64 Handle) PURE;
   3758     STDMETHOD(GetNextSymbolMatchWide)(THIS_ ULONG64 Handle, PWSTR Buffer, ULONG BufferSize, PULONG MatchSize, PULONG64 Offset) PURE;
   3759     STDMETHOD(ReloadWide)(THIS_ PCWSTR Module) PURE;
   3760     STDMETHOD(GetSymbolPathWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG PathSize) PURE;
   3761     STDMETHOD(SetSymbolPathWide)(THIS_ PCWSTR Path) PURE;
   3762     STDMETHOD(AppendSymbolPathWide)(THIS_ PCWSTR Addition) PURE;
   3763     STDMETHOD(GetImagePathWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG PathSize) PURE;
   3764     STDMETHOD(SetImagePathWide)(THIS_ PCWSTR Path) PURE;
   3765     STDMETHOD(AppendImagePathWide)(THIS_ PCWSTR Addition) PURE;
   3766     STDMETHOD(GetSourcePathWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG PathSize) PURE;
   3767     STDMETHOD(GetSourcePathElementWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG BufferSize, PULONG ElementSize) PURE;
   3768     STDMETHOD(SetSourcePathWide)(THIS_ PCWSTR Path) PURE;
   3769     STDMETHOD(AppendSourcePathWide)(THIS_ PCWSTR Addition) PURE;
   3770     STDMETHOD(FindSourceFileWide)(THIS_ ULONG StartElement, PCWSTR File, ULONG Flags, PULONG FoundElement, PWSTR Buffer, ULONG BufferSize, PULONG FoundSize) PURE;
   3771     STDMETHOD(GetSourceFileLineOffsetsWide)(THIS_ PCWSTR File, PULONG64 Buffer, ULONG BufferLines, PULONG FileLines) PURE;
   3772     STDMETHOD(GetModuleVersionInformationWide)(THIS_ ULONG Index, ULONG64 Base, PCWSTR Item, PVOID Buffer, ULONG BufferSize, PULONG VerInfoSize) PURE;
   3773     STDMETHOD(GetModuleNameStringWide)(THIS_ ULONG Which, ULONG Index, ULONG64 Base, PWSTR Buffer, ULONG BufferSize, PULONG NameSize) PURE;
   3774     STDMETHOD(GetConstantNameWide)(THIS_ ULONG64 Module, ULONG TypeId, ULONG64 Value, PWSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
   3775     STDMETHOD(GetFieldNameWide)(THIS_ ULONG64 Module, ULONG TypeId, ULONG FieldIndex, PWSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
   3776     STDMETHOD(IsManagedModule)(THIS_ ULONG Index, ULONG64 Base) PURE;
   3777     STDMETHOD(GetModuleByModuleName2)(THIS_ PCSTR Name, ULONG StartIndex, ULONG Flags, PULONG Index, PULONG64 Base) PURE;
   3778     STDMETHOD(GetModuleByModuleName2Wide)(THIS_ PCWSTR Name, ULONG StartIndex, ULONG Flags, PULONG Index, PULONG64 Base) PURE;
   3779     STDMETHOD(GetModuleByOffset2)(THIS_ ULONG64 Offset, ULONG StartIndex, ULONG Flags, PULONG Index, PULONG64 Base) PURE;
   3780     STDMETHOD(AddSyntheticModule)(THIS_ ULONG64 Base, ULONG Size, PCSTR ImagePath, PCSTR ModuleName, ULONG Flags) PURE;
   3781     STDMETHOD(AddSyntheticModuleWide)(THIS_ ULONG64 Base, ULONG Size, PCWSTR ImagePath, PCWSTR ModuleName, ULONG Flags) PURE;
   3782     STDMETHOD(RemoveSyntheticModule)(THIS_ ULONG64 Base) PURE;
   3783     STDMETHOD(GetCurrentScopeFrameIndex)(THIS_ PULONG Index) PURE;
   3784     STDMETHOD(SetScopeFrameByIndex)(THIS_ ULONG Index) PURE;
   3785     STDMETHOD(SetScopeFromJitDebugInfo)(THIS_ ULONG OutputControl, ULONG64 InfoOffset) PURE;
   3786     STDMETHOD(SetScopeFromStoredEvent)(THIS) PURE;
   3787     STDMETHOD(OutputSymbolByOffset)(THIS_ ULONG OutputControl, ULONG Flags, ULONG64 Offset) PURE;
   3788     STDMETHOD(GetFunctionEntryByOffset)(THIS_ ULONG64 Offset, ULONG Flags, PVOID Buffer, ULONG BufferSize, PULONG BufferNeeded) PURE;
   3789     STDMETHOD(GetFieldTypeAndOffset)(THIS_ ULONG64 Module, ULONG ContainerTypeId, PCSTR Field, PULONG FieldTypeId, PULONG Offset) PURE;
   3790     STDMETHOD(GetFieldTypeAndOffsetWide)(THIS_ ULONG64 Module, ULONG ContainerTypeId, PCWSTR Field, PULONG FieldTypeId, PULONG Offset) PURE;
   3791     STDMETHOD(AddSyntheticSymbol)(THIS_ ULONG64 Offset, ULONG Size, PCSTR Name, ULONG Flags, PDEBUG_MODULE_AND_ID Id) PURE;
   3792     STDMETHOD(AddSyntheticSymbolWide)(THIS_ ULONG64 Offset, ULONG Size, PCWSTR Name, ULONG Flags, PDEBUG_MODULE_AND_ID Id) PURE;
   3793     STDMETHOD(RemoveSyntheticSymbol)(THIS_ PDEBUG_MODULE_AND_ID Id) PURE;
   3794     STDMETHOD(GetSymbolEntriesByOffset)(THIS_ ULONG64 Offset, ULONG Flags, PDEBUG_MODULE_AND_ID Ids, PULONG64 Displacements, ULONG IdsCount, PULONG Entries) PURE;
   3795     STDMETHOD(GetSymbolEntriesByName)(THIS_ PCSTR Symbol, ULONG Flags, PDEBUG_MODULE_AND_ID Ids, ULONG IdsCount, PULONG Entries) PURE;
   3796     STDMETHOD(GetSymbolEntriesByNameWide)(THIS_ PCWSTR Symbol, ULONG Flags, PDEBUG_MODULE_AND_ID Ids, ULONG IdsCount, PULONG Entries) PURE;
   3797     STDMETHOD(GetSymbolEntryByToken)(THIS_ ULONG64 ModuleBase, ULONG Token, PDEBUG_MODULE_AND_ID Id) PURE;
   3798     STDMETHOD(GetSymbolEntryInformation)(THIS_ PDEBUG_MODULE_AND_ID Id, PDEBUG_SYMBOL_ENTRY Info) PURE;
   3799     STDMETHOD(GetSymbolEntryString)(THIS_ PDEBUG_MODULE_AND_ID Id, ULONG Which, PSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
   3800     STDMETHOD(GetSymbolEntryStringWide)(THIS_ PDEBUG_MODULE_AND_ID Id, ULONG Which, PWSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
   3801     STDMETHOD(GetSymbolEntryOffsetRegions)(THIS_ PDEBUG_MODULE_AND_ID Id, ULONG Flags, PDEBUG_OFFSET_REGION Regions, ULONG RegionsCount, PULONG RegionsAvail) PURE;
   3802     STDMETHOD(GetSymbolEntryBySymbolEntry)(THIS_ PDEBUG_MODULE_AND_ID FromId, ULONG Flags, PDEBUG_MODULE_AND_ID ToId) PURE;
   3803     STDMETHOD(GetSourceEntriesByOffset)(THIS_ ULONG64 Offset, ULONG Flags, PDEBUG_SYMBOL_SOURCE_ENTRY Entries, ULONG EntriesCount, PULONG EntriesAvail) PURE;
   3804     STDMETHOD(GetSourceEntriesByLine)(THIS_ ULONG Line, PCSTR File, ULONG Flags, PDEBUG_SYMBOL_SOURCE_ENTRY Entries, ULONG EntriesCount, PULONG EntriesAvail) PURE;
   3805     STDMETHOD(GetSourceEntriesByLineWide)(THIS_ ULONG Line, PCWSTR File, ULONG Flags, PDEBUG_SYMBOL_SOURCE_ENTRY Entries, ULONG EntriesCount, PULONG EntriesAvail) PURE;
   3806     STDMETHOD(GetSourceEntryString)(THIS_ PDEBUG_SYMBOL_SOURCE_ENTRY Entry, ULONG Which, PSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
   3807     STDMETHOD(GetSourceEntryStringWide)(THIS_ PDEBUG_SYMBOL_SOURCE_ENTRY Entry, ULONG Which, PWSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
   3808     STDMETHOD(GetSourceEntryOffsetRegions)(THIS_ PDEBUG_SYMBOL_SOURCE_ENTRY Entry, ULONG Flags, PDEBUG_OFFSET_REGION Regions, ULONG RegionsCount, PULONG RegionsAvail) PURE;
   3809     STDMETHOD(GetSourceEntryBySourceEntry)(THIS_ PDEBUG_SYMBOL_SOURCE_ENTRY FromEntry, ULONG Flags, PDEBUG_SYMBOL_SOURCE_ENTRY ToEntry) PURE;
   3810   };
   3811 #ifdef __CRT_UUID_DECL
   3812 __CRT_UUID_DECL(IDebugSymbols3,0xf02fbecc,0x50ac,0x4f36,0x9a,0xd9,0xc9,0x75,0xe8,0xf3,0x2f,0xf8)
   3813 #endif
   3814 
   3815 #undef INTERFACE
   3816 #define INTERFACE IDebugSymbols4
   3817   DECLARE_INTERFACE_(IDebugSymbols4, IUnknown) {
   3818     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
   3819     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   3820     STDMETHOD_(ULONG, Release)(THIS) PURE;
   3821     STDMETHOD(GetSymbolOptions)(THIS_ PULONG Options) PURE;
   3822     STDMETHOD(AddSymbolOptions)(THIS_ ULONG Options) PURE;
   3823     STDMETHOD(RemoveSymbolOptions)(THIS_ ULONG Options) PURE;
   3824     STDMETHOD(SetSymbolOptions)(THIS_ ULONG Options) PURE;
   3825     STDMETHOD(GetNameByOffset)(THIS_ ULONG64 Offset, PSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize, PULONG64 Displacement) PURE;
   3826     STDMETHOD(GetOffsetByName)(THIS_ PCSTR Symbol, PULONG64 Offset) PURE;
   3827     STDMETHOD(GetNearNameByOffset)(THIS_ ULONG64 Offset, LONG Delta, PSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize, PULONG64 Displacement) PURE;
   3828     STDMETHOD(GetLineByOffset)(THIS_ ULONG64 Offset, PULONG Line, PSTR FileBuffer, ULONG FileBufferSize, PULONG FileSize, PULONG64 Displacement) PURE;
   3829     STDMETHOD(GetOffsetByLine)(THIS_ ULONG Line, PCSTR File, PULONG64 Offset) PURE;
   3830     STDMETHOD(GetNumberModules)(THIS_ PULONG Loaded, PULONG Unloaded) PURE;
   3831     STDMETHOD(GetModuleByIndex)(THIS_ ULONG Index, PULONG64 Base) PURE;
   3832     STDMETHOD(GetModuleByModuleName)(THIS_ PCSTR Name, ULONG StartIndex, PULONG Index, PULONG64 Base) PURE;
   3833     STDMETHOD(GetModuleByOffset)(THIS_ ULONG64 Offset, ULONG StartIndex, PULONG Index, PULONG64 Base) PURE;
   3834     STDMETHOD(GetModuleNames)(THIS_ ULONG Index, ULONG64 Base, PSTR ImageNameBuffer, ULONG ImageNameBufferSize, PULONG ImageNameSize, PSTR ModuleNameBuffer, ULONG ModuleNameBufferSize, PULONG ModuleNameSize, PSTR LoadedImageNameBuffer, ULONG LoadedImageNameBufferSize, PULONG LoadedImageNameSize) PURE;
   3835     STDMETHOD(GetModuleParameters)(THIS_ ULONG Count, PULONG64 Bases, ULONG Start, PDEBUG_MODULE_PARAMETERS Params) PURE;
   3836     STDMETHOD(GetSymbolModule)(THIS_ PCSTR Symbol, PULONG64 Base) PURE;
   3837     STDMETHOD(GetTypeName)(THIS_ ULONG64 Module, ULONG TypeId, PSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
   3838     STDMETHOD(GetTypeId)(THIS_ ULONG64 Module, PCSTR Name, PULONG TypeId) PURE;
   3839     STDMETHOD(GetTypeSize)(THIS_ ULONG64 Module, ULONG TypeId, PULONG Size) PURE;
   3840     STDMETHOD(GetFieldOffset)(THIS_ ULONG64 Module, ULONG TypeId, PCSTR Field, PULONG Offset) PURE;
   3841     STDMETHOD(GetSymbolTypeId)(THIS_ PCSTR Symbol, PULONG TypeId, PULONG64 Module) PURE;
   3842     STDMETHOD(GetOffsetTypeId)(THIS_ ULONG64 Offset, PULONG TypeId, PULONG64 Module) PURE;
   3843     STDMETHOD(ReadTypedDataVirtual)(THIS_ ULONG64 Offset, ULONG64 Module, ULONG TypeId, PVOID Buffer, ULONG BufferSize, PULONG BytesRead) PURE;
   3844     STDMETHOD(WriteTypedDataVirtual)(THIS_ ULONG64 Offset, ULONG64 Module, ULONG TypeId, PVOID Buffer, ULONG BufferSize, PULONG BytesWritten) PURE;
   3845     STDMETHOD(OutputTypedDataVirtual)(THIS_ ULONG OutputControl, ULONG64 Offset, ULONG64 Module, ULONG TypeId, ULONG Flags) PURE;
   3846     STDMETHOD(ReadTypedDataPhysical)(THIS_ ULONG64 Offset, ULONG64 Module, ULONG TypeId, PVOID Buffer, ULONG BufferSize, PULONG BytesRead) PURE;
   3847     STDMETHOD(WriteTypedDataPhysical)(THIS_ ULONG64 Offset, ULONG64 Module, ULONG TypeId, PVOID Buffer, ULONG BufferSize, PULONG BytesWritten) PURE;
   3848     STDMETHOD(OutputTypedDataPhysical)(THIS_ ULONG OutputControl, ULONG64 Offset, ULONG64 Module, ULONG TypeId, ULONG Flags) PURE;
   3849     STDMETHOD(GetScope)(THIS_ PULONG64 InstructionOffset, PDEBUG_STACK_FRAME ScopeFrame, PVOID ScopeContext, ULONG ScopeContextSize) PURE;
   3850     STDMETHOD(SetScope)(THIS_ ULONG64 InstructionOffset, PDEBUG_STACK_FRAME ScopeFrame, PVOID ScopeContext, ULONG ScopeContextSize) PURE;
   3851     STDMETHOD(ResetScope)(THIS) PURE;
   3852     STDMETHOD(GetScopeSymbolGroup)(THIS_ ULONG Flags, PDEBUG_SYMBOL_GROUP Update, PDEBUG_SYMBOL_GROUP *Symbols) PURE;
   3853     STDMETHOD(CreateSymbolGroup)(THIS_ PDEBUG_SYMBOL_GROUP *Group) PURE;
   3854     STDMETHOD(StartSymbolMatch)(THIS_ PCSTR Pattern, PULONG64 Handle) PURE;
   3855     STDMETHOD(GetNextSymbolMatch)(THIS_ ULONG64 Handle, PSTR Buffer, ULONG BufferSize, PULONG MatchSize, PULONG64 Offset) PURE;
   3856     STDMETHOD(EndSymbolMatch)(THIS_ ULONG64 Handle) PURE;
   3857     STDMETHOD(Reload)(THIS_ PCSTR Module) PURE;
   3858     STDMETHOD(GetSymbolPath)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG PathSize) PURE;
   3859     STDMETHOD(SetSymbolPath)(THIS_ PCSTR Path) PURE;
   3860     STDMETHOD(AppendSymbolPath)(THIS_ PCSTR Addition) PURE;
   3861     STDMETHOD(GetImagePath)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG PathSize) PURE;
   3862     STDMETHOD(SetImagePath)(THIS_ PCSTR Path) PURE;
   3863     STDMETHOD(AppendImagePath)(THIS_ PCSTR Addition) PURE;
   3864     STDMETHOD(GetSourcePath)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG PathSize) PURE;
   3865     STDMETHOD(GetSourcePathElement)(THIS_ ULONG Index, PSTR Buffer, ULONG BufferSize, PULONG ElementSize) PURE;
   3866     STDMETHOD(SetSourcePath)(THIS_ PCSTR Path) PURE;
   3867     STDMETHOD(AppendSourcePath)(THIS_ PCSTR Addition) PURE;
   3868     STDMETHOD(FindSourceFile)(THIS_ ULONG StartElement, PCSTR File, ULONG Flags, PULONG FoundElement, PSTR Buffer, ULONG BufferSize, PULONG FoundSize) PURE;
   3869     STDMETHOD(GetSourceFileLineOffsets)(THIS_ PCSTR File, PULONG64 Buffer, ULONG BufferLines, PULONG FileLines) PURE;
   3870     STDMETHOD(GetModuleVersionInformation)(THIS_ ULONG Index, ULONG64 Base, PCSTR Item, PVOID Buffer, ULONG BufferSize, PULONG VerInfoSize) PURE;
   3871     STDMETHOD(GetModuleNameString)(THIS_ ULONG Which, ULONG Index, ULONG64 Base, PSTR Buffer, ULONG BufferSize, PULONG NameSize) PURE;
   3872     STDMETHOD(GetConstantName)(THIS_ ULONG64 Module, ULONG TypeId, ULONG64 Value, PSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
   3873     STDMETHOD(GetFieldName)(THIS_ ULONG64 Module, ULONG TypeId, ULONG FieldIndex, PSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
   3874     STDMETHOD(GetTypeOptions)(THIS_ PULONG Options) PURE;
   3875     STDMETHOD(AddTypeOptions)(THIS_ ULONG Options) PURE;
   3876     STDMETHOD(RemoveTypeOptions)(THIS_ ULONG Options) PURE;
   3877     STDMETHOD(SetTypeOptions)(THIS_ ULONG Options) PURE;
   3878     STDMETHOD(GetNameByOffsetWide)(THIS_ ULONG64 Offset, PWSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize, PULONG64 Displacement) PURE;
   3879     STDMETHOD(GetOffsetByNameWide)(THIS_ PCWSTR Symbol, PULONG64 Offset) PURE;
   3880     STDMETHOD(GetNearNameByOffsetWide)(THIS_ ULONG64 Offset, LONG Delta, PWSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize, PULONG64 Displacement) PURE;
   3881     STDMETHOD(GetLineByOffsetWide)(THIS_ ULONG64 Offset, PULONG Line, PWSTR FileBuffer, ULONG FileBufferSize, PULONG FileSize, PULONG64 Displacement) PURE;
   3882     STDMETHOD(GetOffsetByLineWide)(THIS_ ULONG Line, PCWSTR File, PULONG64 Offset) PURE;
   3883     STDMETHOD(GetModuleByModuleNameWide)(THIS_ PCWSTR Name, ULONG StartIndex, PULONG Index, PULONG64 Base) PURE;
   3884     STDMETHOD(GetSymbolModuleWide)(THIS_ PCWSTR Symbol, PULONG64 Base) PURE;
   3885     STDMETHOD(GetTypeNameWide)(THIS_ ULONG64 Module, ULONG TypeId, PWSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
   3886     STDMETHOD(GetTypeIdWide)(THIS_ ULONG64 Module, PCWSTR Name, PULONG TypeId) PURE;
   3887     STDMETHOD(GetFieldOffsetWide)(THIS_ ULONG64 Module, ULONG TypeId, PCWSTR Field, PULONG Offset) PURE;
   3888     STDMETHOD(GetSymbolTypeIdWide)(THIS_ PCWSTR Symbol, PULONG TypeId, PULONG64 Module) PURE;
   3889     STDMETHOD(GetScopeSymbolGroup2)(THIS_ ULONG Flags, PDEBUG_SYMBOL_GROUP2 Update, PDEBUG_SYMBOL_GROUP2 *Symbols) PURE;
   3890     STDMETHOD(CreateSymbolGroup2)(THIS_ PDEBUG_SYMBOL_GROUP2 *Group) PURE;
   3891     STDMETHOD(StartSymbolMatchWide)(THIS_ PCWSTR Pattern, PULONG64 Handle) PURE;
   3892     STDMETHOD(GetNextSymbolMatchWide)(THIS_ ULONG64 Handle, PWSTR Buffer, ULONG BufferSize, PULONG MatchSize, PULONG64 Offset) PURE;
   3893     STDMETHOD(ReloadWide)(THIS_ PCWSTR Module) PURE;
   3894     STDMETHOD(GetSymbolPathWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG PathSize) PURE;
   3895     STDMETHOD(SetSymbolPathWide)(THIS_ PCWSTR Path) PURE;
   3896     STDMETHOD(AppendSymbolPathWide)(THIS_ PCWSTR Addition) PURE;
   3897     STDMETHOD(GetImagePathWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG PathSize) PURE;
   3898     STDMETHOD(SetImagePathWide)(THIS_ PCWSTR Path) PURE;
   3899     STDMETHOD(AppendImagePathWide)(THIS_ PCWSTR Addition) PURE;
   3900     STDMETHOD(GetSourcePathWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG PathSize) PURE;
   3901     STDMETHOD(GetSourcePathElementWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG BufferSize, PULONG ElementSize) PURE;
   3902     STDMETHOD(SetSourcePathWide)(THIS_ PCWSTR Path) PURE;
   3903     STDMETHOD(AppendSourcePathWide)(THIS_ PCWSTR Addition) PURE;
   3904     STDMETHOD(FindSourceFileWide)(THIS_ ULONG StartElement, PCWSTR File, ULONG Flags, PULONG FoundElement, PWSTR Buffer, ULONG BufferSize, PULONG FoundSize) PURE;
   3905     STDMETHOD(GetSourceFileLineOffsetsWide)(THIS_ PCWSTR File, PULONG64 Buffer, ULONG BufferLines, PULONG FileLines) PURE;
   3906     STDMETHOD(GetModuleVersionInformationWide)(THIS_ ULONG Index, ULONG64 Base, PCWSTR Item, PVOID Buffer, ULONG BufferSize, PULONG VerInfoSize) PURE;
   3907     STDMETHOD(GetModuleNameStringWide)(THIS_ ULONG Which, ULONG Index, ULONG64 Base, PWSTR Buffer, ULONG BufferSize, PULONG NameSize) PURE;
   3908     STDMETHOD(GetConstantNameWide)(THIS_ ULONG64 Module, ULONG TypeId, ULONG64 Value, PWSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
   3909     STDMETHOD(GetFieldNameWide)(THIS_ ULONG64 Module, ULONG TypeId, ULONG FieldIndex, PWSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
   3910     STDMETHOD(IsManagedModule)(THIS_ ULONG Index, ULONG64 Base) PURE;
   3911     STDMETHOD(GetModuleByModuleName2)(THIS_ PCSTR Name, ULONG StartIndex, ULONG Flags, PULONG Index, PULONG64 Base) PURE;
   3912     STDMETHOD(GetModuleByModuleName2Wide)(THIS_ PCWSTR Name, ULONG StartIndex, ULONG Flags, PULONG Index, PULONG64 Base) PURE;
   3913     STDMETHOD(GetModuleByOffset2)(THIS_ ULONG64 Offset, ULONG StartIndex, ULONG Flags, PULONG Index, PULONG64 Base) PURE;
   3914     STDMETHOD(AddSyntheticModule)(THIS_ ULONG64 Base, ULONG Size, PCSTR ImagePath, PCSTR ModuleName, ULONG Flags) PURE;
   3915     STDMETHOD(AddSyntheticModuleWide)(THIS_ ULONG64 Base, ULONG Size, PCWSTR ImagePath, PCWSTR ModuleName, ULONG Flags) PURE;
   3916     STDMETHOD(RemoveSyntheticModule)(THIS_ ULONG64 Base) PURE;
   3917     STDMETHOD(GetCurrentScopeFrameIndex)(THIS_ PULONG Index) PURE;
   3918     STDMETHOD(SetScopeFrameByIndex)(THIS_ ULONG Index) PURE;
   3919     STDMETHOD(SetScopeFromJitDebugInfo)(THIS_ ULONG OutputControl, ULONG64 InfoOffset) PURE;
   3920     STDMETHOD(SetScopeFromStoredEvent)(THIS) PURE;
   3921     STDMETHOD(OutputSymbolByOffset)(THIS_ ULONG OutputControl, ULONG Flags, ULONG64 Offset) PURE;
   3922     STDMETHOD(GetFunctionEntryByOffset)(THIS_ ULONG64 Offset, ULONG Flags, PVOID Buffer, ULONG BufferSize, PULONG BufferNeeded) PURE;
   3923     STDMETHOD(GetFieldTypeAndOffset)(THIS_ ULONG64 Module, ULONG ContainerTypeId, PCSTR Field, PULONG FieldTypeId, PULONG Offset) PURE;
   3924     STDMETHOD(GetFieldTypeAndOffsetWide)(THIS_ ULONG64 Module, ULONG ContainerTypeId, PCWSTR Field, PULONG FieldTypeId, PULONG Offset) PURE;
   3925     STDMETHOD(AddSyntheticSymbol)(THIS_ ULONG64 Offset, ULONG Size, PCSTR Name, ULONG Flags, PDEBUG_MODULE_AND_ID Id) PURE;
   3926     STDMETHOD(AddSyntheticSymbolWide)(THIS_ ULONG64 Offset, ULONG Size, PCWSTR Name, ULONG Flags, PDEBUG_MODULE_AND_ID Id) PURE;
   3927     STDMETHOD(RemoveSyntheticSymbol)(THIS_ PDEBUG_MODULE_AND_ID Id) PURE;
   3928     STDMETHOD(GetSymbolEntriesByOffset)(THIS_ ULONG64 Offset, ULONG Flags, PDEBUG_MODULE_AND_ID Ids, PULONG64 Displacements, ULONG IdsCount, PULONG Entries) PURE;
   3929     STDMETHOD(GetSymbolEntriesByName)(THIS_ PCSTR Symbol, ULONG Flags, PDEBUG_MODULE_AND_ID Ids, ULONG IdsCount, PULONG Entries) PURE;
   3930     STDMETHOD(GetSymbolEntriesByNameWide)(THIS_ PCWSTR Symbol, ULONG Flags, PDEBUG_MODULE_AND_ID Ids, ULONG IdsCount, PULONG Entries) PURE;
   3931     STDMETHOD(GetSymbolEntryByToken)(THIS_ ULONG64 ModuleBase, ULONG Token, PDEBUG_MODULE_AND_ID Id) PURE;
   3932     STDMETHOD(GetSymbolEntryInformation)(THIS_ PDEBUG_MODULE_AND_ID Id, PDEBUG_SYMBOL_ENTRY Info) PURE;
   3933     STDMETHOD(GetSymbolEntryString)(THIS_ PDEBUG_MODULE_AND_ID Id, ULONG Which, PSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
   3934     STDMETHOD(GetSymbolEntryStringWide)(THIS_ PDEBUG_MODULE_AND_ID Id, ULONG Which, PWSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
   3935     STDMETHOD(GetSymbolEntryOffsetRegions)(THIS_ PDEBUG_MODULE_AND_ID Id, ULONG Flags, PDEBUG_OFFSET_REGION Regions, ULONG RegionsCount, PULONG RegionsAvail) PURE;
   3936     STDMETHOD(GetSymbolEntryBySymbolEntry)(THIS_ PDEBUG_MODULE_AND_ID FromId, ULONG Flags, PDEBUG_MODULE_AND_ID ToId) PURE;
   3937     STDMETHOD(GetSourceEntriesByOffset)(THIS_ ULONG64 Offset, ULONG Flags, PDEBUG_SYMBOL_SOURCE_ENTRY Entries, ULONG EntriesCount, PULONG EntriesAvail) PURE;
   3938     STDMETHOD(GetSourceEntriesByLine)(THIS_ ULONG Line, PCSTR File, ULONG Flags, PDEBUG_SYMBOL_SOURCE_ENTRY Entries, ULONG EntriesCount, PULONG EntriesAvail) PURE;
   3939     STDMETHOD(GetSourceEntriesByLineWide)(THIS_ ULONG Line, PCWSTR File, ULONG Flags, PDEBUG_SYMBOL_SOURCE_ENTRY Entries, ULONG EntriesCount, PULONG EntriesAvail) PURE;
   3940     STDMETHOD(GetSourceEntryString)(THIS_ PDEBUG_SYMBOL_SOURCE_ENTRY Entry, ULONG Which, PSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
   3941     STDMETHOD(GetSourceEntryStringWide)(THIS_ PDEBUG_SYMBOL_SOURCE_ENTRY Entry, ULONG Which, PWSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
   3942     STDMETHOD(GetSourceEntryOffsetRegions)(THIS_ PDEBUG_SYMBOL_SOURCE_ENTRY Entry, ULONG Flags, PDEBUG_OFFSET_REGION Regions, ULONG RegionsCount, PULONG RegionsAvail) PURE;
   3943     STDMETHOD(GetSourceEntryBySourceEntry)(THIS_ PDEBUG_SYMBOL_SOURCE_ENTRY FromEntry, ULONG Flags, PDEBUG_SYMBOL_SOURCE_ENTRY ToEntry) PURE;
   3944     STDMETHOD(GetScopeEx)(THIS_ PULONG64 InstructionOffset, PDEBUG_STACK_FRAME_EX ScopeFrame, PVOID ScopeContext, ULONG ScopeContextSize) PURE;
   3945     STDMETHOD(SetScopeEx)(THIS_ ULONG64 InstructionOffset, PDEBUG_STACK_FRAME_EX ScopeFrame, PVOID ScopeContext, ULONG ScopeContextSize) PURE;
   3946     STDMETHOD(GetNameByInlineContext)(THIS_ ULONG64 Offset, ULONG InlineContext, PSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize, PULONG64 Displacement) PURE;
   3947     STDMETHOD(GetNameByInlineContextWide)(THIS_ ULONG64 Offset, ULONG InlineContext, PWSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize, PULONG64 Displacement) PURE;
   3948     STDMETHOD(GetLineByInlineContext)(THIS_ ULONG64 Offset, ULONG InlineContext, PULONG Line, PSTR FileBuffer, ULONG FileBufferSize, PULONG FileSize, PULONG64 Displacement) PURE;
   3949     STDMETHOD(GetLineByInlineContextWide)(THIS_ ULONG64 Offset, ULONG InlineContext, PULONG Line, PWSTR FileBuffer, ULONG FileBufferSize, PULONG FileSize, PULONG64 Displacement) PURE;
   3950     STDMETHOD(OutputSymbolByInlineContext)(THIS_ ULONG OutputControl, ULONG Flags, ULONG64 Offset, ULONG InlineContext) PURE;
   3951   };
   3952 #ifdef __CRT_UUID_DECL
   3953 __CRT_UUID_DECL(IDebugSymbols4,0xe391bbd8,0x9d8c,0x4418,0x84,0x0b,0xc0,0x06,0x59,0x2a,0x17,0x52)
   3954 #endif
   3955 
   3956 #define DEBUG_FRAME_DEFAULT 0
   3957 #define DEBUG_FRAME_IGNORE_INLINE 0x00000001
   3958 
   3959 #undef INTERFACE
   3960 #define INTERFACE IDebugSymbols5
   3961   DECLARE_INTERFACE_(IDebugSymbols5, IUnknown) {
   3962     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
   3963     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   3964     STDMETHOD_(ULONG, Release)(THIS) PURE;
   3965     STDMETHOD(GetSymbolOptions)(THIS_ PULONG Options) PURE;
   3966     STDMETHOD(AddSymbolOptions)(THIS_ ULONG Options) PURE;
   3967     STDMETHOD(RemoveSymbolOptions)(THIS_ ULONG Options) PURE;
   3968     STDMETHOD(SetSymbolOptions)(THIS_ ULONG Options) PURE;
   3969     STDMETHOD(GetNameByOffset)(THIS_ ULONG64 Offset, PSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize, PULONG64 Displacement) PURE;
   3970     STDMETHOD(GetOffsetByName)(THIS_ PCSTR Symbol, PULONG64 Offset) PURE;
   3971     STDMETHOD(GetNearNameByOffset)(THIS_ ULONG64 Offset, LONG Delta, PSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize, PULONG64 Displacement) PURE;
   3972     STDMETHOD(GetLineByOffset)(THIS_ ULONG64 Offset, PULONG Line, PSTR FileBuffer, ULONG FileBufferSize, PULONG FileSize, PULONG64 Displacement) PURE;
   3973     STDMETHOD(GetOffsetByLine)(THIS_ ULONG Line, PCSTR File, PULONG64 Offset) PURE;
   3974     STDMETHOD(GetNumberModules)(THIS_ PULONG Loaded, PULONG Unloaded) PURE;
   3975     STDMETHOD(GetModuleByIndex)(THIS_ ULONG Index, PULONG64 Base) PURE;
   3976     STDMETHOD(GetModuleByModuleName)(THIS_ PCSTR Name, ULONG StartIndex, PULONG Index, PULONG64 Base) PURE;
   3977     STDMETHOD(GetModuleByOffset)(THIS_ ULONG64 Offset, ULONG StartIndex, PULONG Index, PULONG64 Base) PURE;
   3978     STDMETHOD(GetModuleNames)(THIS_ ULONG Index, ULONG64 Base, PSTR ImageNameBuffer, ULONG ImageNameBufferSize, PULONG ImageNameSize, PSTR ModuleNameBuffer, ULONG ModuleNameBufferSize, PULONG ModuleNameSize, PSTR LoadedImageNameBuffer, ULONG LoadedImageNameBufferSize, PULONG LoadedImageNameSize) PURE;
   3979     STDMETHOD(GetModuleParameters)(THIS_ ULONG Count, PULONG64 Bases, ULONG Start, PDEBUG_MODULE_PARAMETERS Params) PURE;
   3980     STDMETHOD(GetSymbolModule)(THIS_ PCSTR Symbol, PULONG64 Base) PURE;
   3981     STDMETHOD(GetTypeName)(THIS_ ULONG64 Module, ULONG TypeId, PSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
   3982     STDMETHOD(GetTypeId)(THIS_ ULONG64 Module, PCSTR Name, PULONG TypeId) PURE;
   3983     STDMETHOD(GetTypeSize)(THIS_ ULONG64 Module, ULONG TypeId, PULONG Size) PURE;
   3984     STDMETHOD(GetFieldOffset)(THIS_ ULONG64 Module, ULONG TypeId, PCSTR Field, PULONG Offset) PURE;
   3985     STDMETHOD(GetSymbolTypeId)(THIS_ PCSTR Symbol, PULONG TypeId, PULONG64 Module) PURE;
   3986     STDMETHOD(GetOffsetTypeId)(THIS_ ULONG64 Offset, PULONG TypeId, PULONG64 Module) PURE;
   3987     STDMETHOD(ReadTypedDataVirtual)(THIS_ ULONG64 Offset, ULONG64 Module, ULONG TypeId, PVOID Buffer, ULONG BufferSize, PULONG BytesRead) PURE;
   3988     STDMETHOD(WriteTypedDataVirtual)(THIS_ ULONG64 Offset, ULONG64 Module, ULONG TypeId, PVOID Buffer, ULONG BufferSize, PULONG BytesWritten) PURE;
   3989     STDMETHOD(OutputTypedDataVirtual)(THIS_ ULONG OutputControl, ULONG64 Offset, ULONG64 Module, ULONG TypeId, ULONG Flags) PURE;
   3990     STDMETHOD(ReadTypedDataPhysical)(THIS_ ULONG64 Offset, ULONG64 Module, ULONG TypeId, PVOID Buffer, ULONG BufferSize, PULONG BytesRead) PURE;
   3991     STDMETHOD(WriteTypedDataPhysical)(THIS_ ULONG64 Offset, ULONG64 Module, ULONG TypeId, PVOID Buffer, ULONG BufferSize, PULONG BytesWritten) PURE;
   3992     STDMETHOD(OutputTypedDataPhysical)(THIS_ ULONG OutputControl, ULONG64 Offset, ULONG64 Module, ULONG TypeId, ULONG Flags) PURE;
   3993     STDMETHOD(GetScope)(THIS_ PULONG64 InstructionOffset, PDEBUG_STACK_FRAME ScopeFrame, PVOID ScopeContext, ULONG ScopeContextSize) PURE;
   3994     STDMETHOD(SetScope)(THIS_ ULONG64 InstructionOffset, PDEBUG_STACK_FRAME ScopeFrame, PVOID ScopeContext, ULONG ScopeContextSize) PURE;
   3995     STDMETHOD(ResetScope)(THIS) PURE;
   3996     STDMETHOD(GetScopeSymbolGroup)(THIS_ ULONG Flags, PDEBUG_SYMBOL_GROUP Update, PDEBUG_SYMBOL_GROUP *Symbols) PURE;
   3997     STDMETHOD(CreateSymbolGroup)(THIS_ PDEBUG_SYMBOL_GROUP *Group) PURE;
   3998     STDMETHOD(StartSymbolMatch)(THIS_ PCSTR Pattern, PULONG64 Handle) PURE;
   3999     STDMETHOD(GetNextSymbolMatch)(THIS_ ULONG64 Handle, PSTR Buffer, ULONG BufferSize, PULONG MatchSize, PULONG64 Offset) PURE;
   4000     STDMETHOD(EndSymbolMatch)(THIS_ ULONG64 Handle) PURE;
   4001     STDMETHOD(Reload)(THIS_ PCSTR Module) PURE;
   4002     STDMETHOD(GetSymbolPath)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG PathSize) PURE;
   4003     STDMETHOD(SetSymbolPath)(THIS_ PCSTR Path) PURE;
   4004     STDMETHOD(AppendSymbolPath)(THIS_ PCSTR Addition) PURE;
   4005     STDMETHOD(GetImagePath)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG PathSize) PURE;
   4006     STDMETHOD(SetImagePath)(THIS_ PCSTR Path) PURE;
   4007     STDMETHOD(AppendImagePath)(THIS_ PCSTR Addition) PURE;
   4008     STDMETHOD(GetSourcePath)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG PathSize) PURE;
   4009     STDMETHOD(GetSourcePathElement)(THIS_ ULONG Index, PSTR Buffer, ULONG BufferSize, PULONG ElementSize) PURE;
   4010     STDMETHOD(SetSourcePath)(THIS_ PCSTR Path) PURE;
   4011     STDMETHOD(AppendSourcePath)(THIS_ PCSTR Addition) PURE;
   4012     STDMETHOD(FindSourceFile)(THIS_ ULONG StartElement, PCSTR File, ULONG Flags, PULONG FoundElement, PSTR Buffer, ULONG BufferSize, PULONG FoundSize) PURE;
   4013     STDMETHOD(GetSourceFileLineOffsets)(THIS_ PCSTR File, PULONG64 Buffer, ULONG BufferLines, PULONG FileLines) PURE;
   4014     STDMETHOD(GetModuleVersionInformation)(THIS_ ULONG Index, ULONG64 Base, PCSTR Item, PVOID Buffer, ULONG BufferSize, PULONG VerInfoSize) PURE;
   4015     STDMETHOD(GetModuleNameString)(THIS_ ULONG Which, ULONG Index, ULONG64 Base, PSTR Buffer, ULONG BufferSize, PULONG NameSize) PURE;
   4016     STDMETHOD(GetConstantName)(THIS_ ULONG64 Module, ULONG TypeId, ULONG64 Value, PSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
   4017     STDMETHOD(GetFieldName)(THIS_ ULONG64 Module, ULONG TypeId, ULONG FieldIndex, PSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
   4018     STDMETHOD(GetTypeOptions)(THIS_ PULONG Options) PURE;
   4019     STDMETHOD(AddTypeOptions)(THIS_ ULONG Options) PURE;
   4020     STDMETHOD(RemoveTypeOptions)(THIS_ ULONG Options) PURE;
   4021     STDMETHOD(SetTypeOptions)(THIS_ ULONG Options) PURE;
   4022     STDMETHOD(GetNameByOffsetWide)(THIS_ ULONG64 Offset, PWSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize, PULONG64 Displacement) PURE;
   4023     STDMETHOD(GetOffsetByNameWide)(THIS_ PCWSTR Symbol, PULONG64 Offset) PURE;
   4024     STDMETHOD(GetNearNameByOffsetWide)(THIS_ ULONG64 Offset, LONG Delta, PWSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize, PULONG64 Displacement) PURE;
   4025     STDMETHOD(GetLineByOffsetWide)(THIS_ ULONG64 Offset, PULONG Line, PWSTR FileBuffer, ULONG FileBufferSize, PULONG FileSize, PULONG64 Displacement) PURE;
   4026     STDMETHOD(GetOffsetByLineWide)(THIS_ ULONG Line, PCWSTR File, PULONG64 Offset) PURE;
   4027     STDMETHOD(GetModuleByModuleNameWide)(THIS_ PCWSTR Name, ULONG StartIndex, PULONG Index, PULONG64 Base) PURE;
   4028     STDMETHOD(GetSymbolModuleWide)(THIS_ PCWSTR Symbol, PULONG64 Base) PURE;
   4029     STDMETHOD(GetTypeNameWide)(THIS_ ULONG64 Module, ULONG TypeId, PWSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
   4030     STDMETHOD(GetTypeIdWide)(THIS_ ULONG64 Module, PCWSTR Name, PULONG TypeId) PURE;
   4031     STDMETHOD(GetFieldOffsetWide)(THIS_ ULONG64 Module, ULONG TypeId, PCWSTR Field, PULONG Offset) PURE;
   4032     STDMETHOD(GetSymbolTypeIdWide)(THIS_ PCWSTR Symbol, PULONG TypeId, PULONG64 Module) PURE;
   4033     STDMETHOD(GetScopeSymbolGroup2)(THIS_ ULONG Flags, PDEBUG_SYMBOL_GROUP2 Update, PDEBUG_SYMBOL_GROUP2 *Symbols) PURE;
   4034     STDMETHOD(CreateSymbolGroup2)(THIS_ PDEBUG_SYMBOL_GROUP2 *Group) PURE;
   4035     STDMETHOD(StartSymbolMatchWide)(THIS_ PCWSTR Pattern, PULONG64 Handle) PURE;
   4036     STDMETHOD(GetNextSymbolMatchWide)(THIS_ ULONG64 Handle, PWSTR Buffer, ULONG BufferSize, PULONG MatchSize, PULONG64 Offset) PURE;
   4037     STDMETHOD(ReloadWide)(THIS_ PCWSTR Module) PURE;
   4038     STDMETHOD(GetSymbolPathWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG PathSize) PURE;
   4039     STDMETHOD(SetSymbolPathWide)(THIS_ PCWSTR Path) PURE;
   4040     STDMETHOD(AppendSymbolPathWide)(THIS_ PCWSTR Addition) PURE;
   4041     STDMETHOD(GetImagePathWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG PathSize) PURE;
   4042     STDMETHOD(SetImagePathWide)(THIS_ PCWSTR Path) PURE;
   4043     STDMETHOD(AppendImagePathWide)(THIS_ PCWSTR Addition) PURE;
   4044     STDMETHOD(GetSourcePathWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG PathSize) PURE;
   4045     STDMETHOD(GetSourcePathElementWide)(THIS_ ULONG Index, PWSTR Buffer, ULONG BufferSize, PULONG ElementSize) PURE;
   4046     STDMETHOD(SetSourcePathWide)(THIS_ PCWSTR Path) PURE;
   4047     STDMETHOD(AppendSourcePathWide)(THIS_ PCWSTR Addition) PURE;
   4048     STDMETHOD(FindSourceFileWide)(THIS_ ULONG StartElement, PCWSTR File, ULONG Flags, PULONG FoundElement, PWSTR Buffer, ULONG BufferSize, PULONG FoundSize) PURE;
   4049     STDMETHOD(GetSourceFileLineOffsetsWide)(THIS_ PCWSTR File, PULONG64 Buffer, ULONG BufferLines, PULONG FileLines) PURE;
   4050     STDMETHOD(GetModuleVersionInformationWide)(THIS_ ULONG Index, ULONG64 Base, PCWSTR Item, PVOID Buffer, ULONG BufferSize, PULONG VerInfoSize) PURE;
   4051     STDMETHOD(GetModuleNameStringWide)(THIS_ ULONG Which, ULONG Index, ULONG64 Base, PWSTR Buffer, ULONG BufferSize, PULONG NameSize) PURE;
   4052     STDMETHOD(GetConstantNameWide)(THIS_ ULONG64 Module, ULONG TypeId, ULONG64 Value, PWSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
   4053     STDMETHOD(GetFieldNameWide)(THIS_ ULONG64 Module, ULONG TypeId, ULONG FieldIndex, PWSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize) PURE;
   4054     STDMETHOD(IsManagedModule)(THIS_ ULONG Index, ULONG64 Base) PURE;
   4055     STDMETHOD(GetModuleByModuleName2)(THIS_ PCSTR Name, ULONG StartIndex, ULONG Flags, PULONG Index, PULONG64 Base) PURE;
   4056     STDMETHOD(GetModuleByModuleName2Wide)(THIS_ PCWSTR Name, ULONG StartIndex, ULONG Flags, PULONG Index, PULONG64 Base) PURE;
   4057     STDMETHOD(GetModuleByOffset2)(THIS_ ULONG64 Offset, ULONG StartIndex, ULONG Flags, PULONG Index, PULONG64 Base) PURE;
   4058     STDMETHOD(AddSyntheticModule)(THIS_ ULONG64 Base, ULONG Size, PCSTR ImagePath, PCSTR ModuleName, ULONG Flags) PURE;
   4059     STDMETHOD(AddSyntheticModuleWide)(THIS_ ULONG64 Base, ULONG Size, PCWSTR ImagePath, PCWSTR ModuleName, ULONG Flags) PURE;
   4060     STDMETHOD(RemoveSyntheticModule)(THIS_ ULONG64 Base) PURE;
   4061     STDMETHOD(GetCurrentScopeFrameIndex)(THIS_ PULONG Index) PURE;
   4062     STDMETHOD(SetScopeFrameByIndex)(THIS_ ULONG Index) PURE;
   4063     STDMETHOD(SetScopeFromJitDebugInfo)(THIS_ ULONG OutputControl, ULONG64 InfoOffset) PURE;
   4064     STDMETHOD(SetScopeFromStoredEvent)(THIS) PURE;
   4065     STDMETHOD(OutputSymbolByOffset)(THIS_ ULONG OutputControl, ULONG Flags, ULONG64 Offset) PURE;
   4066     STDMETHOD(GetFunctionEntryByOffset)(THIS_ ULONG64 Offset, ULONG Flags, PVOID Buffer, ULONG BufferSize, PULONG BufferNeeded) PURE;
   4067     STDMETHOD(GetFieldTypeAndOffset)(THIS_ ULONG64 Module, ULONG ContainerTypeId, PCSTR Field, PULONG FieldTypeId, PULONG Offset) PURE;
   4068     STDMETHOD(GetFieldTypeAndOffsetWide)(THIS_ ULONG64 Module, ULONG ContainerTypeId, PCWSTR Field, PULONG FieldTypeId, PULONG Offset) PURE;
   4069     STDMETHOD(AddSyntheticSymbol)(THIS_ ULONG64 Offset, ULONG Size, PCSTR Name, ULONG Flags, PDEBUG_MODULE_AND_ID Id) PURE;
   4070     STDMETHOD(AddSyntheticSymbolWide)(THIS_ ULONG64 Offset, ULONG Size, PCWSTR Name, ULONG Flags, PDEBUG_MODULE_AND_ID Id) PURE;
   4071     STDMETHOD(RemoveSyntheticSymbol)(THIS_ PDEBUG_MODULE_AND_ID Id) PURE;
   4072     STDMETHOD(GetSymbolEntriesByOffset)(THIS_ ULONG64 Offset, ULONG Flags, PDEBUG_MODULE_AND_ID Ids, PULONG64 Displacements, ULONG IdsCount, PULONG Entries) PURE;
   4073     STDMETHOD(GetSymbolEntriesByName)(THIS_ PCSTR Symbol, ULONG Flags, PDEBUG_MODULE_AND_ID Ids, ULONG IdsCount, PULONG Entries) PURE;
   4074     STDMETHOD(GetSymbolEntriesByNameWide)(THIS_ PCWSTR Symbol, ULONG Flags, PDEBUG_MODULE_AND_ID Ids, ULONG IdsCount, PULONG Entries) PURE;
   4075     STDMETHOD(GetSymbolEntryByToken)(THIS_ ULONG64 ModuleBase, ULONG Token, PDEBUG_MODULE_AND_ID Id) PURE;
   4076     STDMETHOD(GetSymbolEntryInformation)(THIS_ PDEBUG_MODULE_AND_ID Id, PDEBUG_SYMBOL_ENTRY Info) PURE;
   4077     STDMETHOD(GetSymbolEntryString)(THIS_ PDEBUG_MODULE_AND_ID Id, ULONG Which, PSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
   4078     STDMETHOD(GetSymbolEntryStringWide)(THIS_ PDEBUG_MODULE_AND_ID Id, ULONG Which, PWSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
   4079     STDMETHOD(GetSymbolEntryOffsetRegions)(THIS_ PDEBUG_MODULE_AND_ID Id, ULONG Flags, PDEBUG_OFFSET_REGION Regions, ULONG RegionsCount, PULONG RegionsAvail) PURE;
   4080     STDMETHOD(GetSymbolEntryBySymbolEntry)(THIS_ PDEBUG_MODULE_AND_ID FromId, ULONG Flags, PDEBUG_MODULE_AND_ID ToId) PURE;
   4081     STDMETHOD(GetSourceEntriesByOffset)(THIS_ ULONG64 Offset, ULONG Flags, PDEBUG_SYMBOL_SOURCE_ENTRY Entries, ULONG EntriesCount, PULONG EntriesAvail) PURE;
   4082     STDMETHOD(GetSourceEntriesByLine)(THIS_ ULONG Line, PCSTR File, ULONG Flags, PDEBUG_SYMBOL_SOURCE_ENTRY Entries, ULONG EntriesCount, PULONG EntriesAvail) PURE;
   4083     STDMETHOD(GetSourceEntriesByLineWide)(THIS_ ULONG Line, PCWSTR File, ULONG Flags, PDEBUG_SYMBOL_SOURCE_ENTRY Entries, ULONG EntriesCount, PULONG EntriesAvail) PURE;
   4084     STDMETHOD(GetSourceEntryString)(THIS_ PDEBUG_SYMBOL_SOURCE_ENTRY Entry, ULONG Which, PSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
   4085     STDMETHOD(GetSourceEntryStringWide)(THIS_ PDEBUG_SYMBOL_SOURCE_ENTRY Entry, ULONG Which, PWSTR Buffer, ULONG BufferSize, PULONG StringSize) PURE;
   4086     STDMETHOD(GetSourceEntryOffsetRegions)(THIS_ PDEBUG_SYMBOL_SOURCE_ENTRY Entry, ULONG Flags, PDEBUG_OFFSET_REGION Regions, ULONG RegionsCount, PULONG RegionsAvail) PURE;
   4087     STDMETHOD(GetSourceEntryBySourceEntry)(THIS_ PDEBUG_SYMBOL_SOURCE_ENTRY FromEntry, ULONG Flags, PDEBUG_SYMBOL_SOURCE_ENTRY ToEntry) PURE;
   4088     STDMETHOD(GetScopeEx)(THIS_ PULONG64 InstructionOffset, PDEBUG_STACK_FRAME_EX ScopeFrame, PVOID ScopeContext, ULONG ScopeContextSize) PURE;
   4089     STDMETHOD(SetScopeEx)(THIS_ ULONG64 InstructionOffset, PDEBUG_STACK_FRAME_EX ScopeFrame, PVOID ScopeContext, ULONG ScopeContextSize) PURE;
   4090     STDMETHOD(GetNameByInlineContext)(THIS_ ULONG64 Offset, ULONG InlineContext, PSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize, PULONG64 Displacement) PURE;
   4091     STDMETHOD(GetNameByInlineContextWide)(THIS_ ULONG64 Offset, ULONG InlineContext, PWSTR NameBuffer, ULONG NameBufferSize, PULONG NameSize, PULONG64 Displacement) PURE;
   4092     STDMETHOD(GetLineByInlineContext)(THIS_ ULONG64 Offset, ULONG InlineContext, PULONG Line, PSTR FileBuffer, ULONG FileBufferSize, PULONG FileSize, PULONG64 Displacement) PURE;
   4093     STDMETHOD(GetLineByInlineContextWide)(THIS_ ULONG64 Offset, ULONG InlineContext, PULONG Line, PWSTR FileBuffer, ULONG FileBufferSize, PULONG FileSize, PULONG64 Displacement) PURE;
   4094     STDMETHOD(OutputSymbolByInlineContext)(THIS_ ULONG OutputControl, ULONG Flags, ULONG64 Offset, ULONG InlineContext) PURE;
   4095     STDMETHOD(GetCurrentScopeFrameIndexEx)(THIS_ ULONG Flags, PULONG Index) PURE;
   4096     STDMETHOD(SetScopeFrameByIndexEx)(THIS_ ULONG Flags, ULONG Index) PURE;
   4097   };
   4098 #ifdef __CRT_UUID_DECL
   4099 __CRT_UUID_DECL(IDebugSymbols5,0xc65fa83e,0x1e69,0x475e,0x8e,0x0e,0xb5,0xd7,0x9e,0x9c,0xc1,0x7e)
   4100 #endif
   4101 
   4102 #undef INTERFACE
   4103 #define INTERFACE IDebugSystemObjects
   4104   DECLARE_INTERFACE_(IDebugSystemObjects,IUnknown) {
   4105     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE;
   4106     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   4107     STDMETHOD_(ULONG,Release)(THIS) PURE;
   4108     STDMETHOD(GetEventThread)(THIS_ PULONG Id) PURE;
   4109     STDMETHOD(GetEventProcess)(THIS_ PULONG Id) PURE;
   4110     STDMETHOD(GetCurrentThreadId)(THIS_ PULONG Id) PURE;
   4111     STDMETHOD(SetCurrentThreadId)(THIS_ ULONG Id) PURE;
   4112     STDMETHOD(GetCurrentProcessId)(THIS_ PULONG Id) PURE;
   4113     STDMETHOD(SetCurrentProcessId)(THIS_ ULONG Id) PURE;
   4114     STDMETHOD(GetNumberThreads)(THIS_ PULONG Number) PURE;
   4115     STDMETHOD(GetTotalNumberThreads)(THIS_ PULONG Total,PULONG LargestProcess) PURE;
   4116     STDMETHOD(GetThreadIdsByIndex)(THIS_ ULONG Start,ULONG Count,PULONG Ids,PULONG SysIds) PURE;
   4117     STDMETHOD(GetThreadIdByProcessor)(THIS_ ULONG Processor,PULONG Id) PURE;
   4118     STDMETHOD(GetCurrentThreadDataOffset)(THIS_ PULONG64 Offset) PURE;
   4119     STDMETHOD(GetThreadIdByDataOffset)(THIS_ ULONG64 Offset,PULONG Id) PURE;
   4120     STDMETHOD(GetCurrentThreadTeb)(THIS_ PULONG64 Offset) PURE;
   4121     STDMETHOD(GetThreadIdByTeb)(THIS_ ULONG64 Offset,PULONG Id) PURE;
   4122     STDMETHOD(GetCurrentThreadSystemId)(THIS_ PULONG SysId) PURE;
   4123     STDMETHOD(GetThreadIdBySystemId)(THIS_ ULONG SysId,PULONG Id) PURE;
   4124     STDMETHOD(GetCurrentThreadHandle)(THIS_ PULONG64 Handle) PURE;
   4125     STDMETHOD(GetThreadIdByHandle)(THIS_ ULONG64 Handle,PULONG Id) PURE;
   4126     STDMETHOD(GetNumberProcesses)(THIS_ PULONG Number) PURE;
   4127     STDMETHOD(GetProcessIdsByIndex)(THIS_ ULONG Start,ULONG Count,PULONG Ids,PULONG SysIds) PURE;
   4128     STDMETHOD(GetCurrentProcessDataOffset)(THIS_ PULONG64 Offset) PURE;
   4129     STDMETHOD(GetProcessIdByDataOffset)(THIS_ ULONG64 Offset,PULONG Id) PURE;
   4130     STDMETHOD(GetCurrentProcessPeb)(THIS_ PULONG64 Offset) PURE;
   4131     STDMETHOD(GetProcessIdByPeb)(THIS_ ULONG64 Offset,PULONG Id) PURE;
   4132     STDMETHOD(GetCurrentProcessSystemId)(THIS_ PULONG SysId) PURE;
   4133     STDMETHOD(GetProcessIdBySystemId)(THIS_ ULONG SysId,PULONG Id) PURE;
   4134     STDMETHOD(GetCurrentProcessHandle)(THIS_ PULONG64 Handle) PURE;
   4135     STDMETHOD(GetProcessIdByHandle)(THIS_ ULONG64 Handle,PULONG Id) PURE;
   4136     STDMETHOD(GetCurrentProcessExecutableName)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG ExeSize) PURE;
   4137   };
   4138 #ifdef __CRT_UUID_DECL
   4139 __CRT_UUID_DECL(IDebugSystemObjects,0x6b86fe2c,0x2c4f,0x4f0c,0x9d,0xa2,0x17,0x43,0x11,0xac,0xc3,0x27)
   4140 #endif
   4141 
   4142 #undef INTERFACE
   4143 #define INTERFACE IDebugSystemObjects2
   4144   DECLARE_INTERFACE_(IDebugSystemObjects2,IUnknown) {
   4145     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE;
   4146     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   4147     STDMETHOD_(ULONG,Release)(THIS) PURE;
   4148     STDMETHOD(GetEventThread)(THIS_ PULONG Id) PURE;
   4149     STDMETHOD(GetEventProcess)(THIS_ PULONG Id) PURE;
   4150     STDMETHOD(GetCurrentThreadId)(THIS_ PULONG Id) PURE;
   4151     STDMETHOD(SetCurrentThreadId)(THIS_ ULONG Id) PURE;
   4152     STDMETHOD(GetCurrentProcessId)(THIS_ PULONG Id) PURE;
   4153     STDMETHOD(SetCurrentProcessId)(THIS_ ULONG Id) PURE;
   4154     STDMETHOD(GetNumberThreads)(THIS_ PULONG Number) PURE;
   4155     STDMETHOD(GetTotalNumberThreads)(THIS_ PULONG Total,PULONG LargestProcess) PURE;
   4156     STDMETHOD(GetThreadIdsByIndex)(THIS_ ULONG Start,ULONG Count,PULONG Ids,PULONG SysIds) PURE;
   4157     STDMETHOD(GetThreadIdByProcessor)(THIS_ ULONG Processor,PULONG Id) PURE;
   4158     STDMETHOD(GetCurrentThreadDataOffset)(THIS_ PULONG64 Offset) PURE;
   4159     STDMETHOD(GetThreadIdByDataOffset)(THIS_ ULONG64 Offset,PULONG Id) PURE;
   4160     STDMETHOD(GetCurrentThreadTeb)(THIS_ PULONG64 Offset) PURE;
   4161     STDMETHOD(GetThreadIdByTeb)(THIS_ ULONG64 Offset,PULONG Id) PURE;
   4162     STDMETHOD(GetCurrentThreadSystemId)(THIS_ PULONG SysId) PURE;
   4163     STDMETHOD(GetThreadIdBySystemId)(THIS_ ULONG SysId,PULONG Id) PURE;
   4164     STDMETHOD(GetCurrentThreadHandle)(THIS_ PULONG64 Handle) PURE;
   4165     STDMETHOD(GetThreadIdByHandle)(THIS_ ULONG64 Handle,PULONG Id) PURE;
   4166     STDMETHOD(GetNumberProcesses)(THIS_ PULONG Number) PURE;
   4167     STDMETHOD(GetProcessIdsByIndex)(THIS_ ULONG Start,ULONG Count,PULONG Ids,PULONG SysIds) PURE;
   4168     STDMETHOD(GetCurrentProcessDataOffset)(THIS_ PULONG64 Offset) PURE;
   4169     STDMETHOD(GetProcessIdByDataOffset)(THIS_ ULONG64 Offset,PULONG Id) PURE;
   4170     STDMETHOD(GetCurrentProcessPeb)(THIS_ PULONG64 Offset) PURE;
   4171     STDMETHOD(GetProcessIdByPeb)(THIS_ ULONG64 Offset,PULONG Id) PURE;
   4172     STDMETHOD(GetCurrentProcessSystemId)(THIS_ PULONG SysId) PURE;
   4173     STDMETHOD(GetProcessIdBySystemId)(THIS_ ULONG SysId,PULONG Id) PURE;
   4174     STDMETHOD(GetCurrentProcessHandle)(THIS_ PULONG64 Handle) PURE;
   4175     STDMETHOD(GetProcessIdByHandle)(THIS_ ULONG64 Handle,PULONG Id) PURE;
   4176     STDMETHOD(GetCurrentProcessExecutableName)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG ExeSize) PURE;
   4177     STDMETHOD(GetCurrentProcessUpTime)(THIS_ PULONG UpTime) PURE;
   4178     STDMETHOD(GetImplicitThreadDataOffset)(THIS_ PULONG64 Offset) PURE;
   4179     STDMETHOD(SetImplicitThreadDataOffset)(THIS_ ULONG64 Offset) PURE;
   4180     STDMETHOD(GetImplicitProcessDataOffset)(THIS_ PULONG64 Offset) PURE;
   4181     STDMETHOD(SetImplicitProcessDataOffset)(THIS_ ULONG64 Offset) PURE;
   4182   };
   4183 #ifdef __CRT_UUID_DECL
   4184 __CRT_UUID_DECL(IDebugSystemObjects2,0x0ae9f5ff,0x1852,0x4679,0xb0,0x55,0x49,0x4b,0xee,0x64,0x07,0xee)
   4185 #endif
   4186 
   4187 #undef INTERFACE
   4188 #define INTERFACE IDebugSystemObjects3
   4189   DECLARE_INTERFACE_(IDebugSystemObjects3,IUnknown) {
   4190     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE;
   4191     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
   4192     STDMETHOD_(ULONG,Release)(THIS) PURE;
   4193     STDMETHOD(GetEventThread)(THIS_ PULONG Id) PURE;
   4194     STDMETHOD(GetEventProcess)(THIS_ PULONG Id) PURE;
   4195     STDMETHOD(GetCurrentThreadId)(THIS_ PULONG Id) PURE;
   4196     STDMETHOD(SetCurrentThreadId)(THIS_ ULONG Id) PURE;
   4197     STDMETHOD(GetCurrentProcessId)(THIS_ PULONG Id) PURE;
   4198     STDMETHOD(SetCurrentProcessId)(THIS_ ULONG Id) PURE;
   4199     STDMETHOD(GetNumberThreads)(THIS_ PULONG Number) PURE;
   4200     STDMETHOD(GetTotalNumberThreads)(THIS_ PULONG Total,PULONG LargestProcess) PURE;
   4201     STDMETHOD(GetThreadIdsByIndex)(THIS_ ULONG Start,ULONG Count,PULONG Ids,PULONG SysIds) PURE;
   4202     STDMETHOD(GetThreadIdByProcessor)(THIS_ ULONG Processor,PULONG Id) PURE;
   4203     STDMETHOD(GetCurrentThreadDataOffset)(THIS_ PULONG64 Offset) PURE;
   4204     STDMETHOD(GetThreadIdByDataOffset)(THIS_ ULONG64 Offset,PULONG Id) PURE;
   4205     STDMETHOD(GetCurrentThreadTeb)(THIS_ PULONG64 Offset) PURE;
   4206     STDMETHOD(GetThreadIdByTeb)(THIS_ ULONG64 Offset,PULONG Id) PURE;
   4207     STDMETHOD(GetCurrentThreadSystemId)(THIS_ PULONG SysId) PURE;
   4208     STDMETHOD(GetThreadIdBySystemId)(THIS_ ULONG SysId,PULONG Id) PURE;
   4209     STDMETHOD(GetCurrentThreadHandle)(THIS_ PULONG64 Handle) PURE;
   4210     STDMETHOD(GetThreadIdByHandle)(THIS_ ULONG64 Handle,PULONG Id) PURE;
   4211     STDMETHOD(GetNumberProcesses)(THIS_ PULONG Number) PURE;
   4212     STDMETHOD(GetProcessIdsByIndex)(THIS_ ULONG Start,ULONG Count,PULONG Ids,PULONG SysIds) PURE;
   4213     STDMETHOD(GetCurrentProcessDataOffset)(THIS_ PULONG64 Offset) PURE;
   4214     STDMETHOD(GetProcessIdByDataOffset)(THIS_ ULONG64 Offset,PULONG Id) PURE;
   4215     STDMETHOD(GetCurrentProcessPeb)(THIS_ PULONG64 Offset) PURE;
   4216     STDMETHOD(GetProcessIdByPeb)(THIS_ ULONG64 Offset,PULONG Id) PURE;
   4217     STDMETHOD(GetCurrentProcessSystemId)(THIS_ PULONG SysId) PURE;
   4218     STDMETHOD(GetProcessIdBySystemId)(THIS_ ULONG SysId,PULONG Id) PURE;
   4219     STDMETHOD(GetCurrentProcessHandle)(THIS_ PULONG64 Handle) PURE;
   4220     STDMETHOD(GetProcessIdByHandle)(THIS_ ULONG64 Handle,PULONG Id) PURE;
   4221     STDMETHOD(GetCurrentProcessExecutableName)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG ExeSize) PURE;
   4222     STDMETHOD(GetCurrentProcessUpTime)(THIS_ PULONG UpTime) PURE;
   4223     STDMETHOD(GetImplicitThreadDataOffset)(THIS_ PULONG64 Offset) PURE;
   4224     STDMETHOD(SetImplicitThreadDataOffset)(THIS_ ULONG64 Offset) PURE;
   4225     STDMETHOD(GetImplicitProcessDataOffset)(THIS_ PULONG64 Offset) PURE;
   4226     STDMETHOD(SetImplicitProcessDataOffset)(THIS_ ULONG64 Offset) PURE;
   4227     STDMETHOD(GetEventSystem)(THIS_ PULONG Id) PURE;
   4228     STDMETHOD(GetCurrentSystemId)(THIS_ PULONG Id) PURE;
   4229     STDMETHOD(SetCurrentSystemId)(THIS_ ULONG Id) PURE;
   4230     STDMETHOD(GetNumberSystems)(THIS_ PULONG Number) PURE;
   4231     STDMETHOD(GetSystemIdsByIndex)(THIS_ ULONG Start,ULONG Count,PULONG Ids) PURE;
   4232     STDMETHOD(GetTotalNumberThreadsAndProcesses)(THIS_ PULONG TotalThreads,PULONG TotalProcesses,PULONG LargestProcessThreads,PULONG LargestSystemThreads,PULONG LargestSystemProcesses) PURE;
   4233     STDMETHOD(GetCurrentSystemServer)(THIS_ PULONG64 Server) PURE;
   4234     STDMETHOD(GetSystemByServer)(THIS_ ULONG64 Server,PULONG Id) PURE;
   4235     STDMETHOD(GetCurrentSystemServerName)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG NameSize) PURE;
   4236   };
   4237 #ifdef __CRT_UUID_DECL
   4238 __CRT_UUID_DECL(IDebugSystemObjects3,0xe9676e2f,0xe286,0x4ea3,0xb0,0xf9,0xdf,0xe5,0xd9,0xfc,0x33,0x0e)
   4239 #endif
   4240 
   4241 #undef INTERFACE
   4242 #define INTERFACE IDebugSystemObjects4
   4243   DECLARE_INTERFACE_(IDebugSystemObjects4, IUnknown) {
   4244     STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId, PVOID *Interface) PURE;
   4245     STDMETHOD_(ULONG, AddRef)(THIS) PURE;
   4246     STDMETHOD_(ULONG, Release)(THIS) PURE;
   4247     STDMETHOD(GetEventThread)(THIS_ PULONG Id) PURE;
   4248     STDMETHOD(GetEventProcess)(THIS_ PULONG Id) PURE;
   4249     STDMETHOD(GetCurrentThreadId)(THIS_ PULONG Id) PURE;
   4250     STDMETHOD(SetCurrentThreadId)(THIS_ ULONG Id) PURE;
   4251     STDMETHOD(GetCurrentProcessId)(THIS_ PULONG Id) PURE;
   4252     STDMETHOD(SetCurrentProcessId)(THIS_ ULONG Id) PURE;
   4253     STDMETHOD(GetNumberThreads)(THIS_ PULONG Number) PURE;
   4254     STDMETHOD(GetTotalNumberThreads)(THIS_ PULONG Total, PULONG LargestProcess) PURE;
   4255     STDMETHOD(GetThreadIdsByIndex)(THIS_ ULONG Start, ULONG Count, PULONG Ids, PULONG SysIds) PURE;
   4256     STDMETHOD(GetThreadIdByProcessor)(THIS_ ULONG Processor, PULONG Id) PURE;
   4257     STDMETHOD(GetCurrentThreadDataOffset)(THIS_ PULONG64 Offset) PURE;
   4258     STDMETHOD(GetThreadIdByDataOffset)(THIS_ ULONG64 Offset, PULONG Id) PURE;
   4259     STDMETHOD(GetCurrentThreadTeb)(THIS_ PULONG64 Offset) PURE;
   4260     STDMETHOD(GetThreadIdByTeb)(THIS_ ULONG64 Offset, PULONG Id) PURE;
   4261     STDMETHOD(GetCurrentThreadSystemId)(THIS_ PULONG SysId) PURE;
   4262     STDMETHOD(GetThreadIdBySystemId)(THIS_ ULONG SysId, PULONG Id) PURE;
   4263     STDMETHOD(GetCurrentThreadHandle)(THIS_ PULONG64 Handle) PURE;
   4264     STDMETHOD(GetThreadIdByHandle)(THIS_ ULONG64 Handle, PULONG Id) PURE;
   4265     STDMETHOD(GetNumberProcesses)(THIS_ PULONG Number) PURE;
   4266     STDMETHOD(GetProcessIdsByIndex)(THIS_ ULONG Start, ULONG Count, PULONG Ids, PULONG SysIds) PURE;
   4267     STDMETHOD(GetCurrentProcessDataOffset)(THIS_ PULONG64 Offset) PURE;
   4268     STDMETHOD(GetProcessIdByDataOffset)(THIS_ ULONG64 Offset, PULONG Id) PURE;
   4269     STDMETHOD(GetCurrentProcessPeb)(THIS_ PULONG64 Offset) PURE;
   4270     STDMETHOD(GetProcessIdByPeb)(THIS_ ULONG64 Offset, PULONG Id) PURE;
   4271     STDMETHOD(GetCurrentProcessSystemId)(THIS_ PULONG SysId) PURE;
   4272     STDMETHOD(GetProcessIdBySystemId)(THIS_ ULONG SysId, PULONG Id) PURE;
   4273     STDMETHOD(GetCurrentProcessHandle)(THIS_ PULONG64 Handle) PURE;
   4274     STDMETHOD(GetProcessIdByHandle)(THIS_ ULONG64 Handle, PULONG Id) PURE;
   4275     STDMETHOD(GetCurrentProcessExecutableName)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG ExeSize) PURE;
   4276     STDMETHOD(GetCurrentProcessUpTime)(THIS_ PULONG UpTime) PURE;
   4277     STDMETHOD(GetImplicitThreadDataOffset)(THIS_ PULONG64 Offset) PURE;
   4278     STDMETHOD(SetImplicitThreadDataOffset)(THIS_ ULONG64 Offset) PURE;
   4279     STDMETHOD(GetImplicitProcessDataOffset)(THIS_ PULONG64 Offset) PURE;
   4280     STDMETHOD(SetImplicitProcessDataOffset)(THIS_ ULONG64 Offset) PURE;
   4281     STDMETHOD(GetEventSystem)(THIS_ PULONG Id) PURE;
   4282     STDMETHOD(GetCurrentSystemId)(THIS_ PULONG Id) PURE;
   4283     STDMETHOD(SetCurrentSystemId)(THIS_ ULONG Id) PURE;
   4284     STDMETHOD(GetNumberSystems)(THIS_ PULONG Number) PURE;
   4285     STDMETHOD(GetSystemIdsByIndex)(THIS_ ULONG Start, ULONG Count, PULONG Ids) PURE;
   4286     STDMETHOD(GetTotalNumberThreadsAndProcesses)(THIS_ PULONG TotalThreads, PULONG TotalProcesses, PULONG LargestProcessThreads, PULONG LargestSystemThreads, PULONG LargestSystemProcesses) PURE;
   4287     STDMETHOD(GetCurrentSystemServer)(THIS_ PULONG64 Server) PURE;
   4288     STDMETHOD(GetSystemByServer)(THIS_ ULONG64 Server, PULONG Id) PURE;
   4289     STDMETHOD(GetCurrentSystemServerName)(THIS_ PSTR Buffer, ULONG BufferSize, PULONG NameSize) PURE;
   4290     STDMETHOD(GetCurrentProcessExecutableNameWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG ExeSize) PURE;
   4291     STDMETHOD(GetCurrentSystemServerNameWide)(THIS_ PWSTR Buffer, ULONG BufferSize, PULONG NameSize) PURE;
   4292   };
   4293 #ifdef __CRT_UUID_DECL
   4294 __CRT_UUID_DECL(IDebugSystemObjects4,0x489468e6,0x7d0f,0x4af5,0x87,0xab,0x25,0x20,0x74,0x54,0xd5,0x53)
   4295 #endif
   4296 
   4297 #define DEBUG_COMMAND_EXCEPTION_ID 0xdbe00dbe
   4298 
   4299 #define DEBUG_CMDEX_INVALID 0x00000000
   4300 #define DEBUG_CMDEX_ADD_EVENT_STRING 0x00000001
   4301 #define DEBUG_CMDEX_RESET_EVENT_STRINGS 0x00000002
   4302 
   4303 #if !defined(DEBUG_NO_IMPLEMENTATION) && !defined(__CRT__NO_INLINE)
   4304   __CRT_INLINE void DebugCommandException(ULONG Command,ULONG ArgSize,PVOID Arg) {
   4305     ULONG_PTR ExArgs[4];
   4306     ExArgs[0] = DEBUG_COMMAND_EXCEPTION_ID;
   4307     ExArgs[1] = Command;
   4308     ExArgs[2] = ArgSize;
   4309     ExArgs[3] = (ULONG_PTR)Arg;
   4310     RaiseException(DBG_COMMAND_EXCEPTION,0,4,ExArgs);
   4311   }
   4312 #endif
   4313 
   4314   typedef HRESULT (CALLBACK *PDEBUG_EXTENSION_INITIALIZE)(PULONG Version,PULONG Flags);
   4315   typedef void (CALLBACK *PDEBUG_EXTENSION_UNINITIALIZE)(void);
   4316 
   4317 #define DEBUG_NOTIFY_SESSION_ACTIVE 0x00000000
   4318 #define DEBUG_NOTIFY_SESSION_INACTIVE 0x00000001
   4319 #define DEBUG_NOTIFY_SESSION_ACCESSIBLE 0x00000002
   4320 #define DEBUG_NOTIFY_SESSION_INACCESSIBLE 0x00000003
   4321 
   4322   typedef void (CALLBACK *PDEBUG_EXTENSION_NOTIFY)(ULONG Notify,ULONG64 Argument);
   4323   typedef HRESULT (CALLBACK *PDEBUG_EXTENSION_CALL)(PDEBUG_CLIENT Client,PCSTR Args);
   4324 
   4325 #define DEBUG_EXTENSION_CONTINUE_SEARCH HRESULT_FROM_NT(0xC0000271)
   4326 #define DEBUG_EXTENSION_VERSION(Major,Minor) ((((Major) & 0xffff) << 16) | ((Minor) & 0xffff))
   4327 
   4328 #ifdef __cplusplus
   4329 };
   4330 
   4331 #ifndef DEBUG_NO_IMPLEMENTATION
   4332 class DebugBaseEventCallbacks : public IDebugEventCallbacks {
   4333 public:
   4334   STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) {
   4335     *Interface = NULL;
   4336     if(IsEqualIID(InterfaceId,IID_IUnknown) || IsEqualIID(InterfaceId,IID_IDebugEventCallbacks)) {
   4337       *Interface = (IDebugEventCallbacks *)this;
   4338       AddRef();
   4339       return S_OK;
   4340     } else return E_NOINTERFACE;
   4341   }
   4342   STDMETHOD(Breakpoint)(THIS_ PDEBUG_BREAKPOINT Bp) { return DEBUG_STATUS_NO_CHANGE; }
   4343   STDMETHOD(Exception)(THIS_ PEXCEPTION_RECORD64 Exception,ULONG FirstChance) { return DEBUG_STATUS_NO_CHANGE; }
   4344   STDMETHOD(CreateThread)(THIS_ ULONG64 Handle,ULONG64 DataOffset,ULONG64 StartOffset) { return DEBUG_STATUS_NO_CHANGE; }
   4345   STDMETHOD(ExitThread)(THIS_ ULONG ExitCode) { return DEBUG_STATUS_NO_CHANGE; }
   4346   STDMETHOD(CreateProcess)(THIS_ ULONG64 ImageFileHandle,ULONG64 Handle,ULONG64 BaseOffset,ULONG ModuleSize,PCSTR ModuleName,PCSTR ImageName,ULONG CheckSum,ULONG TimeDateStamp,ULONG64 InitialThreadHandle,ULONG64 ThreadDataOffset,ULONG64 StartOffset) { return DEBUG_STATUS_NO_CHANGE; }
   4347   STDMETHOD(ExitProcess)(THIS_ ULONG ExitCode) { return DEBUG_STATUS_NO_CHANGE; }
   4348   STDMETHOD(LoadModule)(THIS_ ULONG64 ImageFileHandle,ULONG64 BaseOffset,ULONG ModuleSize,PCSTR ModuleName,PCSTR ImageName,ULONG CheckSum,ULONG TimeDateStamp) { return DEBUG_STATUS_NO_CHANGE; }
   4349   STDMETHOD(UnloadModule)(THIS_ PCSTR ImageBaseName,ULONG64 BaseOffset) { return DEBUG_STATUS_NO_CHANGE; }
   4350   STDMETHOD(SystemError)(THIS_ ULONG Error,ULONG Level) { return DEBUG_STATUS_NO_CHANGE; }
   4351   STDMETHOD(SessionStatus)(THIS_ ULONG Status) { return DEBUG_STATUS_NO_CHANGE; }
   4352   STDMETHOD(ChangeDebuggeeState)(THIS_ ULONG Flags,ULONG64 Argument) { return S_OK; }
   4353   STDMETHOD(ChangeEngineState)(THIS_ ULONG Flags,ULONG64 Argument) { return S_OK; }
   4354   STDMETHOD(ChangeSymbolState)(THIS_ ULONG Flags,ULONG64 Argument) { return S_OK; }
   4355 };
   4356 #endif
   4357 #endif
   4358 #endif