master
   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_
  13typedef struct _WINDBG_EXTENSION_APIS32 *PWINDBG_EXTENSION_APIS32;
  14typedef struct _WINDBG_EXTENSION_APIS64 *PWINDBG_EXTENSION_APIS64;
  15#endif
  16
  17#ifndef _CRASHLIB_
  18typedef struct _MEMORY_BASIC_INFORMATION64 *PMEMORY_BASIC_INFORMATION64;
  19#endif
  20
  21#ifdef __cplusplus
  22extern "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
3193typedef 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
4332class DebugBaseEventCallbacks : public IDebugEventCallbacks {
4333public:
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