1 /** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the mingw-w64 runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 */ 6 #ifndef __DBGENG_H__ 7 #define __DBGENG_H__ 8 9 #include <stdarg.h> 10 #include <objbase.h> 11 12 #ifndef _WDBGEXTS_ 13 typedef struct _WINDBG_EXTENSION_APIS32 *PWINDBG_EXTENSION_APIS32; 14 typedef struct _WINDBG_EXTENSION_APIS64 *PWINDBG_EXTENSION_APIS64; 15 #endif 16 17 #ifndef _CRASHLIB_ 18 typedef struct _MEMORY_BASIC_INFORMATION64 *PMEMORY_BASIC_INFORMATION64; 19 #endif 20 21 #ifdef __cplusplus 22 extern "C" { 23 #endif 24 25 DEFINE_GUID(IID_IDebugAdvanced,0xf2df5f53,0x071f,0x47bd,0x9d,0xe6,0x57,0x34,0xc3,0xfe,0xd6,0x89); 26 DEFINE_GUID(IID_IDebugBreakpoint,0x5bd9d474,0x5975,0x423a,0xb8,0x8b,0x65,0xa8,0xe7,0x11,0x0e,0x65); 27 DEFINE_GUID(IID_IDebugClient,0x27fe5639,0x8407,0x4f47,0x83,0x64,0xee,0x11,0x8f,0xb0,0x8a,0xc8); 28 DEFINE_GUID(IID_IDebugClient2,0xedbed635,0x372e,0x4dab,0xbb,0xfe,0xed,0x0d,0x2f,0x63,0xbe,0x81); 29 DEFINE_GUID(IID_IDebugClient3,0xdd492d7f,0x71b8,0x4ad6,0xa8,0xdc,0x1c,0x88,0x74,0x79,0xff,0x91); 30 DEFINE_GUID(IID_IDebugClient4,0xca83c3de,0x5089,0x4cf8,0x93,0xc8,0xd8,0x92,0x38,0x7f,0x2a,0x5e); 31 DEFINE_GUID(IID_IDebugControl,0x5182e668,0x105e,0x416e,0xad,0x92,0x24,0xef,0x80,0x04,0x24,0xba); 32 DEFINE_GUID(IID_IDebugControl2,0xd4366723,0x44df,0x4bed,0x8c,0x7e,0x4c,0x05,0x42,0x4f,0x45,0x88); 33 DEFINE_GUID(IID_IDebugControl3,0x7df74a86,0xb03f,0x407f,0x90,0xab,0xa2,0x0d,0xad,0xce,0xad,0x08); 34 DEFINE_GUID(IID_IDebugDataSpaces,0x88f7dfab,0x3ea7,0x4c3a,0xae,0xfb,0xc4,0xe8,0x10,0x61,0x73,0xaa); 35 DEFINE_GUID(IID_IDebugDataSpaces2,0x7a5e852f,0x96e9,0x468f,0xac,0x1b,0x0b,0x3a,0xdd,0xc4,0xa0,0x49); 36 DEFINE_GUID(IID_IDebugDataSpaces3,0x23f79d6c,0x8aaf,0x4f7c,0xa6,0x07,0x99,0x95,0xf5,0x40,0x7e,0x63); 37 DEFINE_GUID(IID_IDebugEventCallbacks,0x337be28b,0x5036,0x4d72,0xb6,0xbf,0xc4,0x5f,0xbb,0x9f,0x2e,0xaa); 38 DEFINE_GUID(IID_IDebugInputCallbacks,0x9f50e42c,0xf136,0x499e,0x9a,0x97,0x73,0x03,0x6c,0x94,0xed,0x2d); 39 DEFINE_GUID(IID_IDebugOutputCallbacks,0x4bf58045,0xd654,0x4c40,0xb0,0xaf,0x68,0x30,0x90,0xf3,0x56,0xdc); 40 DEFINE_GUID(IID_IDebugRegisters,0xce289126,0x9e84,0x45a7,0x93,0x7e,0x67,0xbb,0x18,0x69,0x14,0x93); 41 DEFINE_GUID(IID_IDebugSymbolGroup,0xf2528316,0x0f1a,0x4431,0xae,0xed,0x11,0xd0,0x96,0xe1,0xe2,0xab); 42 DEFINE_GUID(IID_IDebugSymbols,0x8c31e98c,0x983a,0x48a5,0x90,0x16,0x6f,0xe5,0xd6,0x67,0xa9,0x50); 43 DEFINE_GUID(IID_IDebugSymbols2,0x3a707211,0xafdd,0x4495,0xad,0x4f,0x56,0xfe,0xcd,0xf8,0x16,0x3f); 44 DEFINE_GUID(IID_IDebugSystemObjects,0x6b86fe2c,0x2c4f,0x4f0c,0x9d,0xa2,0x17,0x43,0x11,0xac,0xc3,0x27); 45 DEFINE_GUID(IID_IDebugSystemObjects2,0x0ae9f5ff,0x1852,0x4679,0xb0,0x55,0x49,0x4b,0xee,0x64,0x07,0xee); 46 DEFINE_GUID(IID_IDebugSystemObjects3,0xe9676e2f,0xe286,0x4ea3,0xb0,0xf9,0xdf,0xe5,0xd9,0xfc,0x33,0x0e); 47 48 typedef struct IDebugAdvanced *PDEBUG_ADVANCED; 49 typedef struct IDebugBreakpoint *PDEBUG_BREAKPOINT; 50 typedef struct IDebugClient *PDEBUG_CLIENT; 51 typedef struct IDebugClient2 *PDEBUG_CLIENT2; 52 typedef struct IDebugClient3 *PDEBUG_CLIENT3; 53 typedef struct IDebugClient4 *PDEBUG_CLIENT4; 54 typedef struct IDebugControl *PDEBUG_CONTROL; 55 typedef struct IDebugControl2 *PDEBUG_CONTROL2; 56 typedef struct IDebugControl3 *PDEBUG_CONTROL3; 57 typedef struct IDebugDataSpaces *PDEBUG_DATA_SPACES; 58 typedef struct IDebugDataSpaces2 *PDEBUG_DATA_SPACES2; 59 typedef struct IDebugDataSpaces3 *PDEBUG_DATA_SPACES3; 60 typedef struct IDebugEventCallbacks *PDEBUG_EVENT_CALLBACKS; 61 typedef struct IDebugInputCallbacks *PDEBUG_INPUT_CALLBACKS; 62 typedef struct IDebugOutputCallbacks *PDEBUG_OUTPUT_CALLBACKS; 63 typedef struct IDebugRegisters *PDEBUG_REGISTERS; 64 typedef struct IDebugSymbolGroup *PDEBUG_SYMBOL_GROUP; 65 typedef struct IDebugSymbols *PDEBUG_SYMBOLS; 66 typedef struct IDebugSymbols2 *PDEBUG_SYMBOLS2; 67 typedef struct IDebugSystemObjects *PDEBUG_SYSTEM_OBJECTS; 68 typedef struct IDebugSystemObjects2 *PDEBUG_SYSTEM_OBJECTS2; 69 typedef struct IDebugSystemObjects3 *PDEBUG_SYSTEM_OBJECTS3; 70 71 #define DEBUG_EXTEND64(Addr) ((ULONG64)(LONG64)(LONG)(Addr)) 72 73 STDAPI DebugConnect(PCSTR RemoteOptions,REFIID InterfaceId,PVOID *Interface); 74 STDAPI DebugCreate(REFIID InterfaceId,PVOID *Interface); 75 76 #undef INTERFACE 77 #define INTERFACE IDebugAdvanced 78 DECLARE_INTERFACE_(IDebugAdvanced,IUnknown) { 79 STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE; 80 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 81 STDMETHOD_(ULONG,Release)(THIS) PURE; 82 STDMETHOD(GetThreadContext)(THIS_ PVOID Context,ULONG ContextSize) PURE; 83 STDMETHOD(SetThreadContext)(THIS_ PVOID Context,ULONG ContextSize) PURE; 84 }; 85 86 #define DEBUG_BREAKPOINT_CODE 0 87 #define DEBUG_BREAKPOINT_DATA 1 88 89 #define DEBUG_BREAKPOINT_GO_ONLY 0x00000001 90 #define DEBUG_BREAKPOINT_DEFERRED 0x00000002 91 #define DEBUG_BREAKPOINT_ENABLED 0x00000004 92 #define DEBUG_BREAKPOINT_ADDER_ONLY 0x00000008 93 #define DEBUG_BREAKPOINT_ONE_SHOT 0x00000010 94 95 #define DEBUG_BREAK_READ 0x00000001 96 #define DEBUG_BREAK_WRITE 0x00000002 97 #define DEBUG_BREAK_EXECUTE 0x00000004 98 #define DEBUG_BREAK_IO 0x00000008 99 100 typedef struct _DEBUG_BREAKPOINT_PARAMETERS { 101 ULONG64 Offset; 102 ULONG Id; 103 ULONG BreakType; 104 ULONG ProcType; 105 ULONG Flags; 106 ULONG DataSize; 107 ULONG DataAccessType; 108 ULONG PassCount; 109 ULONG CurrentPassCount; 110 ULONG MatchThread; 111 ULONG CommandSize; 112 ULONG OffsetExpressionSize; 113 } DEBUG_BREAKPOINT_PARAMETERS,*PDEBUG_BREAKPOINT_PARAMETERS; 114 115 #undef INTERFACE 116 #define INTERFACE IDebugBreakpoint 117 DECLARE_INTERFACE_(IDebugBreakpoint,IUnknown) { 118 STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE; 119 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 120 STDMETHOD_(ULONG,Release)(THIS) PURE; 121 STDMETHOD(GetId)(THIS_ PULONG Id) PURE; 122 STDMETHOD(GetType)(THIS_ PULONG BreakType,PULONG ProcType) PURE; 123 STDMETHOD(GetAdder)(THIS_ PDEBUG_CLIENT *Adder) PURE; 124 STDMETHOD(GetFlags)(THIS_ PULONG Flags) PURE; 125 STDMETHOD(AddFlags)(THIS_ ULONG Flags) PURE; 126 STDMETHOD(RemoveFlags)(THIS_ ULONG Flags) PURE; 127 STDMETHOD(SetFlags)(THIS_ ULONG Flags) PURE; 128 STDMETHOD(GetOffset)(THIS_ PULONG64 Offset) PURE; 129 STDMETHOD(SetOffset)(THIS_ ULONG64 Offset) PURE; 130 STDMETHOD(GetDataParameters)(THIS_ PULONG Size,PULONG AccessType) PURE; 131 STDMETHOD(SetDataParameters)(THIS_ ULONG Size,ULONG AccessType) PURE; 132 STDMETHOD(GetPassCount)(THIS_ PULONG Count) PURE; 133 STDMETHOD(SetPassCount)(THIS_ ULONG Count) PURE; 134 STDMETHOD(GetCurrentPassCount)(THIS_ PULONG Count) PURE; 135 STDMETHOD(GetMatchThreadId)(THIS_ PULONG Id) PURE; 136 STDMETHOD(SetMatchThreadId)(THIS_ ULONG Thread) PURE; 137 STDMETHOD(GetCommand)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG CommandSize) PURE; 138 STDMETHOD(SetCommand)(THIS_ PCSTR Command) PURE; 139 STDMETHOD(GetOffsetExpression)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG ExpressionSize) PURE; 140 STDMETHOD(SetOffsetExpression)(THIS_ PCSTR Expression) PURE; 141 STDMETHOD(GetParameters)(THIS_ PDEBUG_BREAKPOINT_PARAMETERS Params) PURE; 142 }; 143 144 #define DEBUG_ATTACH_KERNEL_CONNECTION 0x00000000 145 #define DEBUG_ATTACH_LOCAL_KERNEL 0x00000001 146 #define DEBUG_ATTACH_EXDI_DRIVER 0x00000002 147 148 #define DEBUG_GET_PROC_DEFAULT 0x00000000 149 #define DEBUG_GET_PROC_FULL_MATCH 0x00000001 150 #define DEBUG_GET_PROC_ONLY_MATCH 0x00000002 151 152 #define DEBUG_PROC_DESC_DEFAULT 0x00000000 153 #define DEBUG_PROC_DESC_NO_PATHS 0x00000001 154 #define DEBUG_PROC_DESC_NO_SERVICES 0x00000002 155 #define DEBUG_PROC_DESC_NO_MTS_PACKAGES 0x00000004 156 #define DEBUG_PROC_DESC_NO_COMMAND_LINE 0x00000008 157 158 #define DEBUG_ATTACH_DEFAULT 0x00000000 159 #define DEBUG_ATTACH_NONINVASIVE 0x00000001 160 #define DEBUG_ATTACH_EXISTING 0x00000002 161 #define DEBUG_ATTACH_NONINVASIVE_NO_SUSPEND 0x00000004 162 #define DEBUG_ATTACH_INVASIVE_NO_INITIAL_BREAK 0x00000008 163 #define DEBUG_ATTACH_INVASIVE_RESUME_PROCESS 0x00000010 164 165 #define DEBUG_CREATE_PROCESS_NO_DEBUG_HEAP CREATE_UNICODE_ENVIRONMENT 166 #define DEBUG_CREATE_PROCESS_THROUGH_RTL STACK_SIZE_PARAM_IS_A_RESERVATION 167 168 #define DEBUG_PROCESS_DETACH_ON_EXIT 0x00000001 169 #define DEBUG_PROCESS_ONLY_THIS_PROCESS 0x00000002 170 171 #define DEBUG_CONNECT_SESSION_DEFAULT 0x00000000 172 #define DEBUG_CONNECT_SESSION_NO_VERSION 0x00000001 173 #define DEBUG_CONNECT_SESSION_NO_ANNOUNCE 0x00000002 174 175 #define DEBUG_SERVERS_DEBUGGER 0x00000001 176 #define DEBUG_SERVERS_PROCESS 0x00000002 177 #define DEBUG_SERVERS_ALL 0x00000003 178 179 #define DEBUG_END_PASSIVE 0x00000000 180 #define DEBUG_END_ACTIVE_TERMINATE 0x00000001 181 #define DEBUG_END_ACTIVE_DETACH 0x00000002 182 #define DEBUG_END_REENTRANT 0x00000003 183 #define DEBUG_END_DISCONNECT 0x00000004 184 185 #define DEBUG_OUTPUT_NORMAL 0x00000001 186 #define DEBUG_OUTPUT_ERROR 0x00000002 187 #define DEBUG_OUTPUT_WARNING 0x00000004 188 #define DEBUG_OUTPUT_VERBOSE 0x00000008 189 #define DEBUG_OUTPUT_PROMPT 0x00000010 190 #define DEBUG_OUTPUT_PROMPT_REGISTERS 0x00000020 191 #define DEBUG_OUTPUT_EXTENSION_WARNING 0x00000040 192 #define DEBUG_OUTPUT_DEBUGGEE 0x00000080 193 #define DEBUG_OUTPUT_DEBUGGEE_PROMPT 0x00000100 194 #define DEBUG_OUTPUT_SYMBOLS 0x00000200 195 196 #define DEBUG_OUTPUT_IDENTITY_DEFAULT 0x00000000 197 198 #define DEBUG_IOUTPUT_KD_PROTOCOL 0x80000000 199 #define DEBUG_IOUTPUT_REMOTING 0x40000000 200 #define DEBUG_IOUTPUT_BREAKPOINT 0x20000000 201 #define DEBUG_IOUTPUT_EVENT 0x10000000 202 203 #undef INTERFACE 204 #define INTERFACE IDebugClient 205 DECLARE_INTERFACE_(IDebugClient,IUnknown) { 206 STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE; 207 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 208 STDMETHOD_(ULONG,Release)(THIS) PURE; 209 STDMETHOD(AttachKernel)(THIS_ ULONG Flags,PCSTR ConnectOptions) PURE; 210 STDMETHOD(GetKernelConnectionOptions)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG OptionsSize) PURE; 211 STDMETHOD(SetKernelConnectionOptions)(THIS_ PCSTR Options) PURE; 212 STDMETHOD(StartProcessServer)(THIS_ ULONG Flags,PCSTR Options,PVOID Reserved) PURE; 213 STDMETHOD(ConnectProcessServer)(THIS_ PCSTR RemoteOptions,PULONG64 Server) PURE; 214 STDMETHOD(DisconnectProcessServer)(THIS_ ULONG64 Server) PURE; 215 STDMETHOD(GetRunningProcessSystemIds)(THIS_ ULONG64 Server,PULONG Ids,ULONG Count,PULONG ActualCount) PURE; 216 STDMETHOD(GetRunningProcessSystemIdByExecutableName)(THIS_ ULONG64 Server,PCSTR ExeName,ULONG Flags,PULONG Id) PURE; 217 STDMETHOD(GetRunningProcessDescription)(THIS_ ULONG64 Server,ULONG SystemId,ULONG Flags,PSTR ExeName,ULONG ExeNameSize,PULONG ActualExeNameSize,PSTR Description,ULONG DescriptionSize,PULONG ActualDescriptionSize) PURE; 218 STDMETHOD(AttachProcess)(THIS_ ULONG64 Server,ULONG ProcessId,ULONG AttachFlags) PURE; 219 STDMETHOD(CreateProcess)(THIS_ ULONG64 Server,PSTR CommandLine,ULONG CreateFlags) PURE; 220 STDMETHOD(CreateProcessAndAttach)(THIS_ ULONG64 Server,PSTR CommandLine,ULONG CreateFlags,ULONG ProcessId,ULONG AttachFlags) PURE; 221 STDMETHOD(GetProcessOptions)(THIS_ PULONG Options) PURE; 222 STDMETHOD(AddProcessOptions)(THIS_ ULONG Options) PURE; 223 STDMETHOD(RemoveProcessOptions)(THIS_ ULONG Options) PURE; 224 STDMETHOD(SetProcessOptions)(THIS_ ULONG Options) PURE; 225 STDMETHOD(OpenDumpFile)(THIS_ PCSTR DumpFile) PURE; 226 STDMETHOD(WriteDumpFile)(THIS_ PCSTR DumpFile,ULONG Qualifier) PURE; 227 STDMETHOD(ConnectSession)(THIS_ ULONG Flags,ULONG HistoryLimit) PURE; 228 STDMETHOD(StartServer)(THIS_ PCSTR Options) PURE; 229 STDMETHOD(OutputServers)(THIS_ ULONG OutputControl,PCSTR Machine,ULONG Flags) PURE; 230 STDMETHOD(TerminateProcesses)(THIS) PURE; 231 STDMETHOD(DetachProcesses)(THIS) PURE; 232 STDMETHOD(EndSession)(THIS_ ULONG Flags) PURE; 233 STDMETHOD(GetExitCode)(THIS_ PULONG Code) PURE; 234 STDMETHOD(DispatchCallbacks)(THIS_ ULONG Timeout) PURE; 235 STDMETHOD(ExitDispatch)(THIS_ PDEBUG_CLIENT Client) PURE; 236 STDMETHOD(CreateClient)(THIS_ PDEBUG_CLIENT *Client) PURE; 237 STDMETHOD(GetInputCallbacks)(THIS_ PDEBUG_INPUT_CALLBACKS *Callbacks) PURE; 238 STDMETHOD(SetInputCallbacks)(THIS_ PDEBUG_INPUT_CALLBACKS Callbacks) PURE; 239 STDMETHOD(GetOutputCallbacks)(THIS_ PDEBUG_OUTPUT_CALLBACKS *Callbacks) PURE; 240 STDMETHOD(SetOutputCallbacks)(THIS_ PDEBUG_OUTPUT_CALLBACKS Callbacks) PURE; 241 STDMETHOD(GetOutputMask)(THIS_ PULONG Mask) PURE; 242 STDMETHOD(SetOutputMask)(THIS_ ULONG Mask) PURE; 243 STDMETHOD(GetOtherOutputMask)(THIS_ PDEBUG_CLIENT Client,PULONG Mask) PURE; 244 STDMETHOD(SetOtherOutputMask)(THIS_ PDEBUG_CLIENT Client,ULONG Mask) PURE; 245 STDMETHOD(GetOutputWidth)(THIS_ PULONG Columns) PURE; 246 STDMETHOD(SetOutputWidth)(THIS_ ULONG Columns) PURE; 247 STDMETHOD(GetOutputLinePrefix)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG PrefixSize) PURE; 248 STDMETHOD(SetOutputLinePrefix)(THIS_ PCSTR Prefix) PURE; 249 STDMETHOD(GetIdentity)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG IdentitySize) PURE; 250 STDMETHOD(OutputIdentity)(THIS_ ULONG OutputControl,ULONG Flags,PCSTR Format) PURE; 251 STDMETHOD(GetEventCallbacks)(THIS_ PDEBUG_EVENT_CALLBACKS *Callbacks) PURE; 252 STDMETHOD(SetEventCallbacks)(THIS_ PDEBUG_EVENT_CALLBACKS Callbacks) PURE; 253 STDMETHOD(FlushCallbacks)(THIS) PURE; 254 }; 255 256 #define DEBUG_FORMAT_DEFAULT 0x00000000 257 #define DEBUG_FORMAT_WRITE_CAB 0x20000000 258 #define DEBUG_FORMAT_CAB_SECONDARY_FILES 0x40000000 259 #define DEBUG_FORMAT_NO_OVERWRITE 0x80000000 260 #define DEBUG_FORMAT_USER_SMALL_FULL_MEMORY 0x00000001 261 #define DEBUG_FORMAT_USER_SMALL_HANDLE_DATA 0x00000002 262 #define DEBUG_FORMAT_USER_SMALL_UNLOADED_MODULES 0x00000004 263 #define DEBUG_FORMAT_USER_SMALL_INDIRECT_MEMORY 0x00000008 264 #define DEBUG_FORMAT_USER_SMALL_DATA_SEGMENTS 0x00000010 265 #define DEBUG_FORMAT_USER_SMALL_FILTER_MEMORY 0x00000020 266 #define DEBUG_FORMAT_USER_SMALL_FILTER_PATHS 0x00000040 267 #define DEBUG_FORMAT_USER_SMALL_PROCESS_THREAD_DATA 0x00000080 268 #define DEBUG_FORMAT_USER_SMALL_PRIVATE_READ_WRITE_MEMORY 0x00000100 269 270 #define DEBUG_DUMP_FILE_BASE 0xffffffff 271 #define DEBUG_DUMP_FILE_PAGE_FILE_DUMP 0x00000000 272 #define DEBUG_DUMP_FILE_LOAD_FAILED_INDEX 0xffffffff 273 274 #undef INTERFACE 275 #define INTERFACE IDebugClient2 276 DECLARE_INTERFACE_(IDebugClient2,IUnknown) { 277 STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE; 278 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 279 STDMETHOD_(ULONG,Release)(THIS) PURE; 280 STDMETHOD(AttachKernel)(THIS_ ULONG Flags,PCSTR ConnectOptions) PURE; 281 STDMETHOD(GetKernelConnectionOptions)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG OptionsSize) PURE; 282 STDMETHOD(SetKernelConnectionOptions)(THIS_ PCSTR Options) PURE; 283 STDMETHOD(StartProcessServer)(THIS_ ULONG Flags,PCSTR Options,PVOID Reserved) PURE; 284 STDMETHOD(ConnectProcessServer)(THIS_ PCSTR RemoteOptions,PULONG64 Server) PURE; 285 STDMETHOD(DisconnectProcessServer)(THIS_ ULONG64 Server) PURE; 286 STDMETHOD(GetRunningProcessSystemIds)(THIS_ ULONG64 Server,PULONG Ids,ULONG Count,PULONG ActualCount) PURE; 287 STDMETHOD(GetRunningProcessSystemIdByExecutableName)(THIS_ ULONG64 Server,PCSTR ExeName,ULONG Flags,PULONG Id) PURE; 288 STDMETHOD(GetRunningProcessDescription)(THIS_ ULONG64 Server,ULONG SystemId,ULONG Flags,PSTR ExeName,ULONG ExeNameSize,PULONG ActualExeNameSize,PSTR Description,ULONG DescriptionSize,PULONG ActualDescriptionSize) PURE; 289 STDMETHOD(AttachProcess)(THIS_ ULONG64 Server,ULONG ProcessId,ULONG AttachFlags) PURE; 290 STDMETHOD(CreateProcess)(THIS_ ULONG64 Server,PSTR CommandLine,ULONG CreateFlags) PURE; 291 STDMETHOD(CreateProcessAndAttach)(THIS_ ULONG64 Server,PSTR CommandLine,ULONG CreateFlags,ULONG ProcessId,ULONG AttachFlags) PURE; 292 STDMETHOD(GetProcessOptions)(THIS_ PULONG Options) PURE; 293 STDMETHOD(AddProcessOptions)(THIS_ ULONG Options) PURE; 294 STDMETHOD(RemoveProcessOptions)(THIS_ ULONG Options) PURE; 295 STDMETHOD(SetProcessOptions)(THIS_ ULONG Options) PURE; 296 STDMETHOD(OpenDumpFile)(THIS_ PCSTR DumpFile) PURE; 297 STDMETHOD(WriteDumpFile)(THIS_ PCSTR DumpFile,ULONG Qualifier) PURE; 298 STDMETHOD(ConnectSession)(THIS_ ULONG Flags,ULONG HistoryLimit) PURE; 299 STDMETHOD(StartServer)(THIS_ PCSTR Options) PURE; 300 STDMETHOD(OutputServers)(THIS_ ULONG OutputControl,PCSTR Machine,ULONG Flags) PURE; 301 STDMETHOD(TerminateProcesses)(THIS) PURE; 302 STDMETHOD(DetachProcesses)(THIS) PURE; 303 STDMETHOD(EndSession)(THIS_ ULONG Flags) PURE; 304 STDMETHOD(GetExitCode)(THIS_ PULONG Code) PURE; 305 STDMETHOD(DispatchCallbacks)(THIS_ ULONG Timeout) PURE; 306 STDMETHOD(ExitDispatch)(THIS_ PDEBUG_CLIENT Client) PURE; 307 STDMETHOD(CreateClient)(THIS_ PDEBUG_CLIENT *Client) PURE; 308 STDMETHOD(GetInputCallbacks)(THIS_ PDEBUG_INPUT_CALLBACKS *Callbacks) PURE; 309 STDMETHOD(SetInputCallbacks)(THIS_ PDEBUG_INPUT_CALLBACKS Callbacks) PURE; 310 STDMETHOD(GetOutputCallbacks)(THIS_ PDEBUG_OUTPUT_CALLBACKS *Callbacks) PURE; 311 STDMETHOD(SetOutputCallbacks)(THIS_ PDEBUG_OUTPUT_CALLBACKS Callbacks) PURE; 312 STDMETHOD(GetOutputMask)(THIS_ PULONG Mask) PURE; 313 STDMETHOD(SetOutputMask)(THIS_ ULONG Mask) PURE; 314 STDMETHOD(GetOtherOutputMask)(THIS_ PDEBUG_CLIENT Client,PULONG Mask) PURE; 315 STDMETHOD(SetOtherOutputMask)(THIS_ PDEBUG_CLIENT Client,ULONG Mask) PURE; 316 STDMETHOD(GetOutputWidth)(THIS_ PULONG Columns) PURE; 317 STDMETHOD(SetOutputWidth)(THIS_ ULONG Columns) PURE; 318 STDMETHOD(GetOutputLinePrefix)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG PrefixSize) PURE; 319 STDMETHOD(SetOutputLinePrefix)(THIS_ PCSTR Prefix) PURE; 320 STDMETHOD(GetIdentity)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG IdentitySize) PURE; 321 STDMETHOD(OutputIdentity)(THIS_ ULONG OutputControl,ULONG Flags,PCSTR Format) PURE; 322 STDMETHOD(GetEventCallbacks)(THIS_ PDEBUG_EVENT_CALLBACKS *Callbacks) PURE; 323 STDMETHOD(SetEventCallbacks)(THIS_ PDEBUG_EVENT_CALLBACKS Callbacks) PURE; 324 STDMETHOD(FlushCallbacks)(THIS) PURE; 325 STDMETHOD(WriteDumpFile2)(THIS_ PCSTR DumpFile,ULONG Qualifier,ULONG FormatFlags,PCSTR Comment) PURE; 326 STDMETHOD(AddDumpInformationFile)(THIS_ PCSTR InfoFile,ULONG Type) PURE; 327 STDMETHOD(EndProcessServer)(THIS_ ULONG64 Server) PURE; 328 STDMETHOD(WaitForProcessServerEnd)(THIS_ ULONG Timeout) PURE; 329 STDMETHOD(IsKernelDebuggerEnabled)(THIS) PURE; 330 STDMETHOD(TerminateCurrentProcess)(THIS) PURE; 331 STDMETHOD(DetachCurrentProcess)(THIS) PURE; 332 STDMETHOD(AbandonCurrentProcess)(THIS) PURE; 333 }; 334 335 #undef INTERFACE 336 #define INTERFACE IDebugClient3 337 DECLARE_INTERFACE_(IDebugClient3,IUnknown) { 338 STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE; 339 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 340 STDMETHOD_(ULONG,Release)(THIS) PURE; 341 STDMETHOD(AttachKernel)(THIS_ 342 ULONG Flags,PCSTR ConnectOptions) PURE; 343 STDMETHOD(GetKernelConnectionOptions)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG OptionsSize) PURE; 344 STDMETHOD(SetKernelConnectionOptions)(THIS_ PCSTR Options) PURE; 345 STDMETHOD(StartProcessServer)(THIS_ ULONG Flags,PCSTR Options,PVOID Reserved) PURE; 346 STDMETHOD(ConnectProcessServer)(THIS_ PCSTR RemoteOptions,PULONG64 Server) PURE; 347 STDMETHOD(DisconnectProcessServer)(THIS_ ULONG64 Server) PURE; 348 STDMETHOD(GetRunningProcessSystemIds)(THIS_ ULONG64 Server,PULONG Ids,ULONG Count,PULONG ActualCount) PURE; 349 STDMETHOD(GetRunningProcessSystemIdByExecutableName)(THIS_ ULONG64 Server,PCSTR ExeName,ULONG Flags,PULONG Id) PURE; 350 STDMETHOD(GetRunningProcessDescription)(THIS_ ULONG64 Server,ULONG SystemId,ULONG Flags,PSTR ExeName,ULONG ExeNameSize,PULONG ActualExeNameSize,PSTR Description,ULONG DescriptionSize,PULONG ActualDescriptionSize) PURE; 351 STDMETHOD(AttachProcess)(THIS_ ULONG64 Server,ULONG ProcessId,ULONG AttachFlags) PURE; 352 STDMETHOD(CreateProcess)(THIS_ ULONG64 Server,PSTR CommandLine,ULONG CreateFlags) PURE; 353 STDMETHOD(CreateProcessAndAttach)(THIS_ ULONG64 Server,PSTR CommandLine,ULONG CreateFlags,ULONG ProcessId,ULONG AttachFlags) PURE; 354 STDMETHOD(GetProcessOptions)(THIS_ PULONG Options) PURE; 355 STDMETHOD(AddProcessOptions)(THIS_ ULONG Options) PURE; 356 STDMETHOD(RemoveProcessOptions)(THIS_ ULONG Options) PURE; 357 STDMETHOD(SetProcessOptions)(THIS_ ULONG Options) PURE; 358 STDMETHOD(OpenDumpFile)(THIS_ PCSTR DumpFile) PURE; 359 STDMETHOD(WriteDumpFile)(THIS_ PCSTR DumpFile,ULONG Qualifier) PURE; 360 STDMETHOD(ConnectSession)(THIS_ ULONG Flags,ULONG HistoryLimit) PURE; 361 STDMETHOD(StartServer)(THIS_ PCSTR Options) PURE; 362 STDMETHOD(OutputServers)(THIS_ ULONG OutputControl,PCSTR Machine,ULONG Flags) PURE; 363 STDMETHOD(TerminateProcesses)(THIS) PURE; 364 STDMETHOD(DetachProcesses)(THIS) PURE; 365 STDMETHOD(EndSession)(THIS_ ULONG Flags) PURE; 366 STDMETHOD(GetExitCode)(THIS_ PULONG Code) PURE; 367 STDMETHOD(DispatchCallbacks)(THIS_ ULONG Timeout) PURE; 368 STDMETHOD(ExitDispatch)(THIS_ PDEBUG_CLIENT Client) PURE; 369 STDMETHOD(CreateClient)(THIS_ PDEBUG_CLIENT *Client) PURE; 370 STDMETHOD(GetInputCallbacks)(THIS_ PDEBUG_INPUT_CALLBACKS *Callbacks) PURE; 371 STDMETHOD(SetInputCallbacks)(THIS_ PDEBUG_INPUT_CALLBACKS Callbacks) PURE; 372 STDMETHOD(GetOutputCallbacks)(THIS_ PDEBUG_OUTPUT_CALLBACKS *Callbacks) PURE; 373 STDMETHOD(SetOutputCallbacks)(THIS_ PDEBUG_OUTPUT_CALLBACKS Callbacks) PURE; 374 STDMETHOD(GetOutputMask)(THIS_ PULONG Mask) PURE; 375 STDMETHOD(SetOutputMask)(THIS_ ULONG Mask) PURE; 376 STDMETHOD(GetOtherOutputMask)(THIS_ PDEBUG_CLIENT Client,PULONG Mask) PURE; 377 STDMETHOD(SetOtherOutputMask)(THIS_ PDEBUG_CLIENT Client,ULONG Mask) PURE; 378 STDMETHOD(GetOutputWidth)(THIS_ PULONG Columns) PURE; 379 STDMETHOD(SetOutputWidth)(THIS_ ULONG Columns) PURE; 380 STDMETHOD(GetOutputLinePrefix)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG PrefixSize) PURE; 381 STDMETHOD(SetOutputLinePrefix)(THIS_ PCSTR Prefix) PURE; 382 STDMETHOD(GetIdentity)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG IdentitySize) PURE; 383 STDMETHOD(OutputIdentity)(THIS_ ULONG OutputControl,ULONG Flags,PCSTR Format) PURE; 384 STDMETHOD(GetEventCallbacks)(THIS_ PDEBUG_EVENT_CALLBACKS *Callbacks) PURE; 385 STDMETHOD(SetEventCallbacks)(THIS_ PDEBUG_EVENT_CALLBACKS Callbacks) PURE; 386 STDMETHOD(FlushCallbacks)(THIS) PURE; 387 STDMETHOD(WriteDumpFile2)(THIS_ PCSTR DumpFile,ULONG Qualifier,ULONG FormatFlags,PCSTR Comment) PURE; 388 STDMETHOD(AddDumpInformationFile)(THIS_ PCSTR InfoFile,ULONG Type) PURE; 389 STDMETHOD(EndProcessServer)(THIS_ ULONG64 Server) PURE; 390 STDMETHOD(WaitForProcessServerEnd)(THIS_ ULONG Timeout) PURE; 391 STDMETHOD(IsKernelDebuggerEnabled)(THIS) PURE; 392 STDMETHOD(TerminateCurrentProcess)(THIS) PURE; 393 STDMETHOD(DetachCurrentProcess)(THIS) PURE; 394 STDMETHOD(AbandonCurrentProcess)(THIS) PURE; 395 STDMETHOD(GetRunningProcessSystemIdByExecutableNameWide)(THIS_ ULONG64 Server,PCWSTR ExeName,ULONG Flags,PULONG Id) PURE; 396 STDMETHOD(GetRunningProcessDescriptionWide)(THIS_ ULONG64 Server,ULONG SystemId,ULONG Flags,PWSTR ExeName,ULONG ExeNameSize,PULONG ActualExeNameSize,PWSTR Description,ULONG DescriptionSize,PULONG ActualDescriptionSize) PURE; 397 STDMETHOD(CreateProcessWide)(THIS_ ULONG64 Server,PWSTR CommandLine,ULONG CreateFlags) PURE; 398 STDMETHOD(CreateProcessAndAttachWide)(THIS_ ULONG64 Server,PWSTR CommandLine,ULONG CreateFlags,ULONG ProcessId,ULONG AttachFlags) PURE; 399 }; 400 401 #undef INTERFACE 402 #define INTERFACE IDebugClient4 403 DECLARE_INTERFACE_(IDebugClient4,IUnknown) { 404 STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE; 405 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 406 STDMETHOD_(ULONG,Release)(THIS) PURE; 407 STDMETHOD(AttachKernel)(THIS_ ULONG Flags,PCSTR ConnectOptions) PURE; 408 STDMETHOD(GetKernelConnectionOptions)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG OptionsSize) PURE; 409 STDMETHOD(SetKernelConnectionOptions)(THIS_ PCSTR Options) PURE; 410 STDMETHOD(StartProcessServer)(THIS_ ULONG Flags,PCSTR Options,PVOID Reserved) PURE; 411 STDMETHOD(ConnectProcessServer)(THIS_ PCSTR RemoteOptions,PULONG64 Server) PURE; 412 STDMETHOD(DisconnectProcessServer)(THIS_ ULONG64 Server) PURE; 413 STDMETHOD(GetRunningProcessSystemIds)(THIS_ ULONG64 Server,PULONG Ids,ULONG Count,PULONG ActualCount) PURE; 414 STDMETHOD(GetRunningProcessSystemIdByExecutableName)(THIS_ ULONG64 Server,PCSTR ExeName,ULONG Flags,PULONG Id) PURE; 415 STDMETHOD(GetRunningProcessDescription)(THIS_ ULONG64 Server,ULONG SystemId,ULONG Flags,PSTR ExeName,ULONG ExeNameSize,PULONG ActualExeNameSize,PSTR Description,ULONG DescriptionSize,PULONG ActualDescriptionSize) PURE; 416 STDMETHOD(AttachProcess)(THIS_ ULONG64 Server,ULONG ProcessId,ULONG AttachFlags) PURE; 417 STDMETHOD(CreateProcess)(THIS_ ULONG64 Server,PSTR CommandLine,ULONG CreateFlags) PURE; 418 STDMETHOD(CreateProcessAndAttach)(THIS_ ULONG64 Server,PSTR CommandLine,ULONG CreateFlags,ULONG ProcessId,ULONG AttachFlags) PURE; 419 STDMETHOD(GetProcessOptions)(THIS_ PULONG Options) PURE; 420 STDMETHOD(AddProcessOptions)(THIS_ ULONG Options) PURE; 421 STDMETHOD(RemoveProcessOptions)(THIS_ ULONG Options) PURE; 422 STDMETHOD(SetProcessOptions)(THIS_ ULONG Options) PURE; 423 STDMETHOD(OpenDumpFile)(THIS_ PCSTR DumpFile) PURE; 424 STDMETHOD(WriteDumpFile)(THIS_ PCSTR DumpFile,ULONG Qualifier) PURE; 425 STDMETHOD(ConnectSession)(THIS_ ULONG Flags,ULONG HistoryLimit) PURE; 426 STDMETHOD(StartServer)(THIS_ PCSTR Options) PURE; 427 STDMETHOD(OutputServers)(THIS_ ULONG OutputControl,PCSTR Machine,ULONG Flags) PURE; 428 STDMETHOD(TerminateProcesses)(THIS) PURE; 429 STDMETHOD(DetachProcesses)(THIS) PURE; 430 STDMETHOD(EndSession)(THIS_ ULONG Flags) PURE; 431 STDMETHOD(GetExitCode)(THIS_ PULONG Code) PURE; 432 STDMETHOD(DispatchCallbacks)(THIS_ ULONG Timeout) PURE; 433 STDMETHOD(ExitDispatch)(THIS_ PDEBUG_CLIENT Client) PURE; 434 STDMETHOD(CreateClient)(THIS_ PDEBUG_CLIENT *Client) PURE; 435 STDMETHOD(GetInputCallbacks)(THIS_ PDEBUG_INPUT_CALLBACKS *Callbacks) PURE; 436 STDMETHOD(SetInputCallbacks)(THIS_ PDEBUG_INPUT_CALLBACKS Callbacks) PURE; 437 STDMETHOD(GetOutputCallbacks)(THIS_ PDEBUG_OUTPUT_CALLBACKS *Callbacks) PURE; 438 STDMETHOD(SetOutputCallbacks)(THIS_ PDEBUG_OUTPUT_CALLBACKS Callbacks) PURE; 439 STDMETHOD(GetOutputMask)(THIS_ PULONG Mask) PURE; 440 STDMETHOD(SetOutputMask)(THIS_ ULONG Mask) PURE; 441 STDMETHOD(GetOtherOutputMask)(THIS_ PDEBUG_CLIENT Client,PULONG Mask) PURE; 442 STDMETHOD(SetOtherOutputMask)(THIS_ PDEBUG_CLIENT Client,ULONG Mask) PURE; 443 STDMETHOD(GetOutputWidth)(THIS_ PULONG Columns) PURE; 444 STDMETHOD(SetOutputWidth)(THIS_ ULONG Columns) PURE; 445 STDMETHOD(GetOutputLinePrefix)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG PrefixSize) PURE; 446 STDMETHOD(SetOutputLinePrefix)(THIS_ PCSTR Prefix) PURE; 447 STDMETHOD(GetIdentity)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG IdentitySize) PURE; 448 STDMETHOD(OutputIdentity)(THIS_ ULONG OutputControl,ULONG Flags,PCSTR Format) PURE; 449 STDMETHOD(GetEventCallbacks)(THIS_ PDEBUG_EVENT_CALLBACKS *Callbacks) PURE; 450 STDMETHOD(SetEventCallbacks)(THIS_ PDEBUG_EVENT_CALLBACKS Callbacks) PURE; 451 STDMETHOD(FlushCallbacks)(THIS) PURE; 452 STDMETHOD(WriteDumpFile2)(THIS_ PCSTR DumpFile,ULONG Qualifier,ULONG FormatFlags,PCSTR Comment) PURE; 453 STDMETHOD(AddDumpInformationFile)(THIS_ PCSTR InfoFile,ULONG Type) PURE; 454 STDMETHOD(EndProcessServer)(THIS_ ULONG64 Server) PURE; 455 STDMETHOD(WaitForProcessServerEnd)(THIS_ ULONG Timeout) PURE; 456 STDMETHOD(IsKernelDebuggerEnabled)(THIS) PURE; 457 STDMETHOD(TerminateCurrentProcess)(THIS) PURE; 458 STDMETHOD(DetachCurrentProcess)(THIS) PURE; 459 STDMETHOD(AbandonCurrentProcess)(THIS) PURE; 460 STDMETHOD(GetRunningProcessSystemIdByExecutableNameWide)(THIS_ ULONG64 Server,PCWSTR ExeName,ULONG Flags,PULONG Id) PURE; 461 STDMETHOD(GetRunningProcessDescriptionWide)(THIS_ ULONG64 Server,ULONG SystemId,ULONG Flags,PWSTR ExeName,ULONG ExeNameSize,PULONG ActualExeNameSize,PWSTR Description,ULONG DescriptionSize,PULONG ActualDescriptionSize) PURE; 462 STDMETHOD(CreateProcessWide)(THIS_ ULONG64 Server,PWSTR CommandLine,ULONG CreateFlags) PURE; 463 STDMETHOD(CreateProcessAndAttachWide)(THIS_ ULONG64 Server,PWSTR CommandLine,ULONG CreateFlags,ULONG ProcessId,ULONG AttachFlags) PURE; 464 STDMETHOD(OpenDumpFileWide)(THIS_ PCWSTR FileName,ULONG64 FileHandle) PURE; 465 STDMETHOD(WriteDumpFileWide)(THIS_ PCWSTR FileName,ULONG64 FileHandle,ULONG Qualifier,ULONG FormatFlags,PCWSTR Comment) PURE; 466 STDMETHOD(AddDumpInformationFileWide)(THIS_ PCWSTR FileName,ULONG64 FileHandle,ULONG Type) PURE; 467 STDMETHOD(GetNumberDumpFiles)(THIS_ PULONG Number) PURE; 468 STDMETHOD(GetDumpFile)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG NameSize,PULONG64 Handle,PULONG Type) PURE; 469 STDMETHOD(GetDumpFileWide)(THIS_ ULONG Index,PWSTR Buffer,ULONG BufferSize,PULONG NameSize,PULONG64 Handle,PULONG Type) PURE; 470 }; 471 472 #define DEBUG_STATUS_NO_CHANGE 0 473 #define DEBUG_STATUS_GO 1 474 #define DEBUG_STATUS_GO_HANDLED 2 475 #define DEBUG_STATUS_GO_NOT_HANDLED 3 476 #define DEBUG_STATUS_STEP_OVER 4 477 #define DEBUG_STATUS_STEP_INTO 5 478 #define DEBUG_STATUS_BREAK 6 479 #define DEBUG_STATUS_NO_DEBUGGEE 7 480 #define DEBUG_STATUS_STEP_BRANCH 8 481 #define DEBUG_STATUS_IGNORE_EVENT 9 482 483 #define DEBUG_STATUS_MASK 0xf 484 485 #define DEBUG_STATUS_INSIDE_WAIT 0x100000000 486 #define DEBUG_OUTCTL_THIS_CLIENT 0x00000000 487 #define DEBUG_OUTCTL_ALL_CLIENTS 0x00000001 488 #define DEBUG_OUTCTL_ALL_OTHER_CLIENTS 0x00000002 489 #define DEBUG_OUTCTL_IGNORE 0x00000003 490 #define DEBUG_OUTCTL_LOG_ONLY 0x00000004 491 #define DEBUG_OUTCTL_SEND_MASK 0x00000007 492 #define DEBUG_OUTCTL_NOT_LOGGED 0x00000008 493 #define DEBUG_OUTCTL_OVERRIDE_MASK 0x00000010 494 #define DEBUG_OUTCTL_AMBIENT 0xffffffff 495 496 #define DEBUG_INTERRUPT_ACTIVE 0 497 #define DEBUG_INTERRUPT_PASSIVE 1 498 #define DEBUG_INTERRUPT_EXIT 2 499 500 #define DEBUG_CURRENT_DEFAULT 0x0000000f 501 #define DEBUG_CURRENT_SYMBOL 0x00000001 502 #define DEBUG_CURRENT_DISASM 0x00000002 503 #define DEBUG_CURRENT_REGISTERS 0x00000004 504 #define DEBUG_CURRENT_SOURCE_LINE 0x00000008 505 506 #define DEBUG_DISASM_EFFECTIVE_ADDRESS 0x00000001 507 #define DEBUG_DISASM_MATCHING_SYMBOLS 0x00000002 508 509 #define DEBUG_LEVEL_SOURCE 0 510 #define DEBUG_LEVEL_ASSEMBLY 1 511 512 #define DEBUG_ENGOPT_IGNORE_DBGHELP_VERSION 0x00000001 513 #define DEBUG_ENGOPT_IGNORE_EXTENSION_VERSIONS 0x00000002 514 515 #define DEBUG_ENGOPT_ALLOW_NETWORK_PATHS 0x00000004 516 #define DEBUG_ENGOPT_DISALLOW_NETWORK_PATHS 0x00000008 517 #define DEBUG_ENGOPT_NETWORK_PATHS (0x00000004 | 0x00000008) 518 #define DEBUG_ENGOPT_IGNORE_LOADER_EXCEPTIONS 0x00000010 519 #define DEBUG_ENGOPT_INITIAL_BREAK 0x00000020 520 #define DEBUG_ENGOPT_INITIAL_MODULE_BREAK 0x00000040 521 #define DEBUG_ENGOPT_FINAL_BREAK 0x00000080 522 #define DEBUG_ENGOPT_NO_EXECUTE_REPEAT 0x00000100 523 #define DEBUG_ENGOPT_FAIL_INCOMPLETE_INFORMATION 0x00000200 524 #define DEBUG_ENGOPT_ALLOW_READ_ONLY_BREAKPOINTS 0x00000400 525 #define DEBUG_ENGOPT_SYNCHRONIZE_BREAKPOINTS 0x00000800 526 #define DEBUG_ENGOPT_DISALLOW_SHELL_COMMANDS 0x00001000 527 #define DEBUG_ENGOPT_ALL 0x00001FFF 528 529 #define DEBUG_ANY_ID 0xffffffff 530 531 typedef struct _DEBUG_STACK_FRAME { 532 ULONG64 InstructionOffset; 533 ULONG64 ReturnOffset; 534 ULONG64 FrameOffset; 535 ULONG64 StackOffset; 536 ULONG64 FuncTableEntry; 537 ULONG64 Params[4]; 538 ULONG64 Reserved[6]; 539 WINBOOL Virtual; 540 ULONG FrameNumber; 541 } DEBUG_STACK_FRAME,*PDEBUG_STACK_FRAME; 542 543 #define DEBUG_STACK_ARGUMENTS 0x00000001 544 #define DEBUG_STACK_FUNCTION_INFO 0x00000002 545 #define DEBUG_STACK_SOURCE_LINE 0x00000004 546 #define DEBUG_STACK_FRAME_ADDRESSES 0x00000008 547 #define DEBUG_STACK_COLUMN_NAMES 0x00000010 548 #define DEBUG_STACK_NONVOLATILE_REGISTERS 0x00000020 549 #define DEBUG_STACK_FRAME_NUMBERS 0x00000040 550 #define DEBUG_STACK_PARAMETERS 0x00000080 551 #define DEBUG_STACK_FRAME_ADDRESSES_RA_ONLY 0x00000100 552 #define DEBUG_STACK_FRAME_MEMORY_USAGE 0x00000200 553 554 #define DEBUG_CLASS_UNINITIALIZED 0 555 #define DEBUG_CLASS_KERNEL 1 556 #define DEBUG_CLASS_USER_WINDOWS 2 557 558 #define DEBUG_DUMP_SMALL 1024 559 #define DEBUG_DUMP_DEFAULT 1025 560 #define DEBUG_DUMP_FULL 1026 561 562 #define DEBUG_KERNEL_CONNECTION 0 563 #define DEBUG_KERNEL_LOCAL 1 564 #define DEBUG_KERNEL_EXDI_DRIVER 2 565 #define DEBUG_KERNEL_SMALL_DUMP DEBUG_DUMP_SMALL 566 #define DEBUG_KERNEL_DUMP DEBUG_DUMP_DEFAULT 567 #define DEBUG_KERNEL_FULL_DUMP DEBUG_DUMP_FULL 568 569 #define DEBUG_USER_WINDOWS_PROCESS 0 570 #define DEBUG_USER_WINDOWS_PROCESS_SERVER 1 571 #define DEBUG_USER_WINDOWS_SMALL_DUMP DEBUG_DUMP_SMALL 572 #define DEBUG_USER_WINDOWS_DUMP DEBUG_DUMP_DEFAULT 573 574 #define DEBUG_EXTENSION_AT_ENGINE 0x00000000 575 576 #define DEBUG_EXECUTE_DEFAULT 0x00000000 577 #define DEBUG_EXECUTE_ECHO 0x00000001 578 #define DEBUG_EXECUTE_NOT_LOGGED 0x00000002 579 #define DEBUG_EXECUTE_NO_REPEAT 0x00000004 580 581 #define DEBUG_FILTER_CREATE_THREAD 0x00000000 582 #define DEBUG_FILTER_EXIT_THREAD 0x00000001 583 #define DEBUG_FILTER_CREATE_PROCESS 0x00000002 584 #define DEBUG_FILTER_EXIT_PROCESS 0x00000003 585 #define DEBUG_FILTER_LOAD_MODULE 0x00000004 586 #define DEBUG_FILTER_UNLOAD_MODULE 0x00000005 587 #define DEBUG_FILTER_SYSTEM_ERROR 0x00000006 588 #define DEBUG_FILTER_INITIAL_BREAKPOINT 0x00000007 589 #define DEBUG_FILTER_INITIAL_MODULE_LOAD 0x00000008 590 #define DEBUG_FILTER_DEBUGGEE_OUTPUT 0x00000009 591 592 #define DEBUG_FILTER_BREAK 0x00000000 593 594 #define DEBUG_FILTER_SECOND_CHANCE_BREAK 0x00000001 595 #define DEBUG_FILTER_OUTPUT 0x00000002 596 #define DEBUG_FILTER_IGNORE 0x00000003 597 #define DEBUG_FILTER_REMOVE 0x00000004 598 599 #define DEBUG_FILTER_GO_HANDLED 0x00000000 600 #define DEBUG_FILTER_GO_NOT_HANDLED 0x00000001 601 602 typedef struct _DEBUG_SPECIFIC_FILTER_PARAMETERS { 603 ULONG ExecutionOption; 604 ULONG ContinueOption; 605 ULONG TextSize; 606 ULONG CommandSize; 607 ULONG ArgumentSize; 608 } DEBUG_SPECIFIC_FILTER_PARAMETERS,*PDEBUG_SPECIFIC_FILTER_PARAMETERS; 609 610 typedef struct _DEBUG_EXCEPTION_FILTER_PARAMETERS { 611 ULONG ExecutionOption; 612 ULONG ContinueOption; 613 ULONG TextSize; 614 ULONG CommandSize; 615 ULONG SecondCommandSize; 616 ULONG ExceptionCode; 617 } DEBUG_EXCEPTION_FILTER_PARAMETERS,*PDEBUG_EXCEPTION_FILTER_PARAMETERS; 618 619 #define DEBUG_WAIT_DEFAULT 0x00000000 620 621 typedef struct _DEBUG_LAST_EVENT_INFO_BREAKPOINT { 622 ULONG Id; 623 } DEBUG_LAST_EVENT_INFO_BREAKPOINT,*PDEBUG_LAST_EVENT_INFO_BREAKPOINT; 624 625 typedef struct _DEBUG_LAST_EVENT_INFO_EXCEPTION { 626 EXCEPTION_RECORD64 ExceptionRecord; 627 ULONG FirstChance; 628 } DEBUG_LAST_EVENT_INFO_EXCEPTION,*PDEBUG_LAST_EVENT_INFO_EXCEPTION; 629 630 typedef struct _DEBUG_LAST_EVENT_INFO_EXIT_THREAD { 631 ULONG ExitCode; 632 } DEBUG_LAST_EVENT_INFO_EXIT_THREAD,*PDEBUG_LAST_EVENT_INFO_EXIT_THREAD; 633 634 typedef struct _DEBUG_LAST_EVENT_INFO_EXIT_PROCESS { 635 ULONG ExitCode; 636 } DEBUG_LAST_EVENT_INFO_EXIT_PROCESS,*PDEBUG_LAST_EVENT_INFO_EXIT_PROCESS; 637 638 typedef struct _DEBUG_LAST_EVENT_INFO_LOAD_MODULE { 639 ULONG64 Base; 640 } DEBUG_LAST_EVENT_INFO_LOAD_MODULE,*PDEBUG_LAST_EVENT_INFO_LOAD_MODULE; 641 642 typedef struct _DEBUG_LAST_EVENT_INFO_UNLOAD_MODULE { 643 ULONG64 Base; 644 } DEBUG_LAST_EVENT_INFO_UNLOAD_MODULE,*PDEBUG_LAST_EVENT_INFO_UNLOAD_MODULE; 645 646 typedef struct _DEBUG_LAST_EVENT_INFO_SYSTEM_ERROR { 647 ULONG Error; 648 ULONG Level; 649 } DEBUG_LAST_EVENT_INFO_SYSTEM_ERROR,*PDEBUG_LAST_EVENT_INFO_SYSTEM_ERROR; 650 651 #define DEBUG_VALUE_INVALID 0 652 #define DEBUG_VALUE_INT8 1 653 #define DEBUG_VALUE_INT16 2 654 #define DEBUG_VALUE_INT32 3 655 #define DEBUG_VALUE_INT64 4 656 #define DEBUG_VALUE_FLOAT32 5 657 #define DEBUG_VALUE_FLOAT64 6 658 #define DEBUG_VALUE_FLOAT80 7 659 #define DEBUG_VALUE_FLOAT82 8 660 #define DEBUG_VALUE_FLOAT128 9 661 #define DEBUG_VALUE_VECTOR64 10 662 #define DEBUG_VALUE_VECTOR128 11 663 664 #define DEBUG_VALUE_TYPES 12 665 666 typedef struct _DEBUG_VALUE { 667 __C89_NAMELESS union { 668 UCHAR I8; 669 USHORT I16; 670 ULONG I32; 671 __C89_NAMELESS struct { 672 ULONG64 I64; 673 WINBOOL Nat; 674 }; 675 float F32; 676 double F64; 677 UCHAR F80Bytes[10]; 678 UCHAR F82Bytes[11]; 679 UCHAR F128Bytes[16]; 680 UCHAR VI8[16]; 681 USHORT VI16[8]; 682 ULONG VI32[4]; 683 ULONG64 VI64[2]; 684 float VF32[4]; 685 double VF64[2]; 686 struct { 687 ULONG LowPart; 688 ULONG HighPart; 689 } I64Parts32; 690 struct { 691 ULONG64 LowPart; 692 LONG64 HighPart; 693 } F128Parts64; 694 UCHAR RawBytes[24]; 695 }; 696 ULONG TailOfRawBytes; 697 ULONG Type; 698 } DEBUG_VALUE,*PDEBUG_VALUE; 699 700 #undef INTERFACE 701 #define INTERFACE IDebugControl 702 DECLARE_INTERFACE_(IDebugControl,IUnknown) { 703 STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE; 704 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 705 STDMETHOD_(ULONG,Release)(THIS) PURE; 706 STDMETHOD(GetInterrupt)(THIS) PURE; 707 STDMETHOD(SetInterrupt)(THIS_ ULONG Flags) PURE; 708 STDMETHOD(GetInterruptTimeout)(THIS_ PULONG Seconds) PURE; 709 STDMETHOD(SetInterruptTimeout)(THIS_ ULONG Seconds) PURE; 710 STDMETHOD(GetLogFile)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG FileSize,PBOOL Append) PURE; 711 STDMETHOD(OpenLogFile)(THIS_ PCSTR File,WINBOOL Append) PURE; 712 STDMETHOD(CloseLogFile)(THIS) PURE; 713 STDMETHOD(GetLogMask)(THIS_ PULONG Mask) PURE; 714 STDMETHOD(SetLogMask)(THIS_ ULONG Mask) PURE; 715 STDMETHOD(Input)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG InputSize) PURE; 716 STDMETHOD(ReturnInput)(THIS_ PCSTR Buffer) PURE; 717 STDMETHODV(Output)(THIS_ ULONG Mask,PCSTR Format,...) PURE; 718 STDMETHOD(OutputVaList)(THIS_ ULONG Mask,PCSTR Format,va_list Args) PURE; 719 STDMETHODV(ControlledOutput)(THIS_ ULONG OutputControl,ULONG Mask,PCSTR Format,...) PURE; 720 STDMETHOD(ControlledOutputVaList)(THIS_ ULONG OutputControl,ULONG Mask,PCSTR Format,va_list Args) PURE; 721 STDMETHODV(OutputPrompt)(THIS_ ULONG OutputControl,PCSTR Format,...) PURE; 722 STDMETHOD(OutputPromptVaList)(THIS_ ULONG OutputControl,PCSTR Format,va_list Args) PURE; 723 STDMETHOD(GetPromptText)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG TextSize) PURE; 724 STDMETHOD(OutputCurrentState)(THIS_ ULONG OutputControl,ULONG Flags) PURE; 725 STDMETHOD(OutputVersionInformation)(THIS_ ULONG OutputControl) PURE; 726 STDMETHOD(GetNotifyEventHandle)(THIS_ PULONG64 Handle) PURE; 727 STDMETHOD(SetNotifyEventHandle)(THIS_ ULONG64 Handle) PURE; 728 STDMETHOD(Assemble)(THIS_ ULONG64 Offset,PCSTR Instr,PULONG64 EndOffset) PURE; 729 STDMETHOD(Disassemble)(THIS_ ULONG64 Offset,ULONG Flags,PSTR Buffer,ULONG BufferSize,PULONG DisassemblySize,PULONG64 EndOffset) PURE; 730 STDMETHOD(GetDisassembleEffectiveOffset)(THIS_ PULONG64 Offset) PURE; 731 STDMETHOD(OutputDisassembly)(THIS_ ULONG OutputControl,ULONG64 Offset,ULONG Flags,PULONG64 EndOffset) PURE; 732 STDMETHOD(OutputDisassemblyLines)(THIS_ ULONG OutputControl,ULONG PreviousLines,ULONG TotalLines,ULONG64 Offset,ULONG Flags,PULONG OffsetLine,PULONG64 StartOffset,PULONG64 EndOffset,PULONG64 LineOffsets) PURE; 733 STDMETHOD(GetNearInstruction)(THIS_ ULONG64 Offset,LONG Delta,PULONG64 NearOffset) PURE; 734 STDMETHOD(GetStackTrace)(THIS_ ULONG64 FrameOffset,ULONG64 StackOffset,ULONG64 InstructionOffset,PDEBUG_STACK_FRAME Frames,ULONG FramesSize,PULONG FramesFilled) PURE; 735 STDMETHOD(GetReturnOffset)(THIS_ PULONG64 Offset) PURE; 736 STDMETHOD(OutputStackTrace)(THIS_ ULONG OutputControl,PDEBUG_STACK_FRAME Frames,ULONG FramesSize,ULONG Flags) PURE; 737 STDMETHOD(GetDebuggeeType)(THIS_ PULONG Class,PULONG Qualifier) PURE; 738 STDMETHOD(GetActualProcessorType)(THIS_ PULONG Type) PURE; 739 STDMETHOD(GetExecutingProcessorType)(THIS_ PULONG Type) PURE; 740 STDMETHOD(GetNumberPossibleExecutingProcessorTypes)(THIS_ PULONG Number) PURE; 741 STDMETHOD(GetPossibleExecutingProcessorTypes)(THIS_ ULONG Start,ULONG Count,PULONG Types) PURE; 742 STDMETHOD(GetNumberProcessors)(THIS_ PULONG Number) PURE; 743 STDMETHOD(GetSystemVersion)(THIS_ PULONG PlatformId,PULONG Major,PULONG Minor,PSTR ServicePackString,ULONG ServicePackStringSize,PULONG ServicePackStringUsed,PULONG ServicePackNumber,PSTR BuildString,ULONG BuildStringSize,PULONG BuildStringUsed) PURE; 744 STDMETHOD(GetPageSize)(THIS_ PULONG Size) PURE; 745 STDMETHOD(IsPointer64Bit)(THIS) PURE; 746 STDMETHOD(ReadBugCheckData)(THIS_ PULONG Code,PULONG64 Arg1,PULONG64 Arg2,PULONG64 Arg3,PULONG64 Arg4) PURE; 747 STDMETHOD(GetNumberSupportedProcessorTypes)(THIS_ PULONG Number) PURE; 748 STDMETHOD(GetSupportedProcessorTypes)(THIS_ ULONG Start,ULONG Count,PULONG Types) PURE; 749 STDMETHOD(GetProcessorTypeNames)(THIS_ ULONG Type,PSTR FullNameBuffer,ULONG FullNameBufferSize,PULONG FullNameSize,PSTR AbbrevNameBuffer,ULONG AbbrevNameBufferSize,PULONG AbbrevNameSize) PURE; 750 STDMETHOD(GetEffectiveProcessorType)(THIS_ PULONG Type) PURE; 751 STDMETHOD(SetEffectiveProcessorType)(THIS_ ULONG Type) PURE; 752 STDMETHOD(GetExecutionStatus)(THIS_ PULONG Status) PURE; 753 STDMETHOD(SetExecutionStatus)(THIS_ ULONG Status) PURE; 754 STDMETHOD(GetCodeLevel)(THIS_ PULONG Level) PURE; 755 STDMETHOD(SetCodeLevel)(THIS_ ULONG Level) PURE; 756 STDMETHOD(GetEngineOptions)(THIS_ PULONG Options) PURE; 757 STDMETHOD(AddEngineOptions)(THIS_ ULONG Options) PURE; 758 STDMETHOD(RemoveEngineOptions)(THIS_ ULONG Options) PURE; 759 STDMETHOD(SetEngineOptions)(THIS_ ULONG Options) PURE; 760 STDMETHOD(GetSystemErrorControl)(THIS_ PULONG OutputLevel,PULONG BreakLevel) PURE; 761 STDMETHOD(SetSystemErrorControl)(THIS_ ULONG OutputLevel,ULONG BreakLevel) PURE; 762 STDMETHOD(GetTextMacro)(THIS_ ULONG Slot,PSTR Buffer,ULONG BufferSize,PULONG MacroSize) PURE; 763 STDMETHOD(SetTextMacro)(THIS_ ULONG Slot,PCSTR Macro) PURE; 764 STDMETHOD(GetRadix)(THIS_ PULONG Radix) PURE; 765 STDMETHOD(SetRadix)(THIS_ ULONG Radix) PURE; 766 STDMETHOD(Evaluate)(THIS_ PCSTR Expression,ULONG DesiredType,PDEBUG_VALUE Value,PULONG RemainderIndex) PURE; 767 STDMETHOD(CoerceValue)(THIS_ PDEBUG_VALUE In,ULONG OutType,PDEBUG_VALUE Out) PURE; 768 STDMETHOD(CoerceValues)(THIS_ ULONG Count,PDEBUG_VALUE In,PULONG OutTypes,PDEBUG_VALUE Out) PURE; 769 STDMETHOD(Execute)(THIS_ ULONG OutputControl,PCSTR Command,ULONG Flags) PURE; 770 STDMETHOD(ExecuteCommandFile)(THIS_ ULONG OutputControl,PCSTR CommandFile,ULONG Flags) PURE; 771 STDMETHOD(GetNumberBreakpoints)(THIS_ PULONG Number) PURE; 772 STDMETHOD(GetBreakpointByIndex)(THIS_ ULONG Index,PDEBUG_BREAKPOINT *Bp) PURE; 773 STDMETHOD(GetBreakpointById)(THIS_ ULONG Id,PDEBUG_BREAKPOINT *Bp) PURE; 774 STDMETHOD(GetBreakpointParameters)(THIS_ ULONG Count,PULONG Ids,ULONG Start,PDEBUG_BREAKPOINT_PARAMETERS Params) PURE; 775 STDMETHOD(AddBreakpoint)(THIS_ ULONG Type,ULONG DesiredId,PDEBUG_BREAKPOINT *Bp) PURE; 776 STDMETHOD(RemoveBreakpoint)(THIS_ PDEBUG_BREAKPOINT Bp) PURE; 777 STDMETHOD(AddExtension)(THIS_ PCSTR Path,ULONG Flags,PULONG64 Handle) PURE; 778 STDMETHOD(RemoveExtension)(THIS_ ULONG64 Handle) PURE; 779 STDMETHOD(GetExtensionByPath)(THIS_ PCSTR Path,PULONG64 Handle) PURE; 780 STDMETHOD(CallExtension)(THIS_ ULONG64 Handle,PCSTR Function,PCSTR Arguments) PURE; 781 STDMETHOD(GetExtensionFunction)(THIS_ ULONG64 Handle,PCSTR FuncName,FARPROC *Function) PURE; 782 STDMETHOD(GetWindbgExtensionApis32)(THIS_ PWINDBG_EXTENSION_APIS32 Api) PURE; 783 STDMETHOD(GetWindbgExtensionApis64)(THIS_ PWINDBG_EXTENSION_APIS64 Api) PURE; 784 STDMETHOD(GetNumberEventFilters)(THIS_ PULONG SpecificEvents,PULONG SpecificExceptions,PULONG ArbitraryExceptions) PURE; 785 STDMETHOD(GetEventFilterText)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG TextSize) PURE; 786 STDMETHOD(GetEventFilterCommand)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG CommandSize) PURE; 787 STDMETHOD(SetEventFilterCommand)(THIS_ ULONG Index,PCSTR Command) PURE; 788 STDMETHOD(GetSpecificFilterParameters)(THIS_ ULONG Start,ULONG Count,PDEBUG_SPECIFIC_FILTER_PARAMETERS Params) PURE; 789 STDMETHOD(SetSpecificFilterParameters)(THIS_ ULONG Start,ULONG Count,PDEBUG_SPECIFIC_FILTER_PARAMETERS Params) PURE; 790 STDMETHOD(GetSpecificFilterArgument)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG ArgumentSize) PURE; 791 STDMETHOD(SetSpecificFilterArgument)(THIS_ ULONG Index,PCSTR Argument) PURE; 792 STDMETHOD(GetExceptionFilterParameters)(THIS_ ULONG Count,PULONG Codes,ULONG Start,PDEBUG_EXCEPTION_FILTER_PARAMETERS Params) PURE; 793 STDMETHOD(SetExceptionFilterParameters)(THIS_ ULONG Count,PDEBUG_EXCEPTION_FILTER_PARAMETERS Params) PURE; 794 STDMETHOD(GetExceptionFilterSecondCommand)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG CommandSize) PURE; 795 STDMETHOD(SetExceptionFilterSecondCommand)(THIS_ ULONG Index,PCSTR Command) PURE; 796 STDMETHOD(WaitForEvent)(THIS_ ULONG Flags,ULONG Timeout) PURE; 797 STDMETHOD(GetLastEventInformation)(THIS_ PULONG Type,PULONG ProcessId,PULONG ThreadId,PVOID ExtraInformation,ULONG ExtraInformationSize,PULONG ExtraInformationUsed,PSTR Description,ULONG DescriptionSize,PULONG DescriptionUsed) PURE; 798 }; 799 800 #define DEBUG_OUT_TEXT_REPL_DEFAULT 0x00000000 801 802 #undef INTERFACE 803 #define INTERFACE IDebugControl2 804 DECLARE_INTERFACE_(IDebugControl2,IUnknown) { 805 STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE; 806 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 807 STDMETHOD_(ULONG,Release)(THIS) PURE; 808 STDMETHOD(GetInterrupt)(THIS) PURE; 809 STDMETHOD(SetInterrupt)(THIS_ ULONG Flags) PURE; 810 STDMETHOD(GetInterruptTimeout)(THIS_ PULONG Seconds) PURE; 811 STDMETHOD(SetInterruptTimeout)(THIS_ ULONG Seconds) PURE; 812 STDMETHOD(GetLogFile)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG FileSize,PBOOL Append) PURE; 813 STDMETHOD(OpenLogFile)(THIS_ PCSTR File,WINBOOL Append) PURE; 814 STDMETHOD(CloseLogFile)(THIS) PURE; 815 STDMETHOD(GetLogMask)(THIS_ PULONG Mask) PURE; 816 STDMETHOD(SetLogMask)(THIS_ ULONG Mask) PURE; 817 STDMETHOD(Input)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG InputSize) PURE; 818 STDMETHOD(ReturnInput)(THIS_ PCSTR Buffer) PURE; 819 STDMETHODV(Output)(THIS_ ULONG Mask,PCSTR Format,...) PURE; 820 STDMETHOD(OutputVaList)(THIS_ ULONG Mask,PCSTR Format,va_list Args) PURE; 821 STDMETHODV(ControlledOutput)(THIS_ ULONG OutputControl,ULONG Mask,PCSTR Format,...) PURE; 822 STDMETHOD(ControlledOutputVaList)(THIS_ ULONG OutputControl,ULONG Mask,PCSTR Format,va_list Args) PURE; 823 STDMETHODV(OutputPrompt)(THIS_ ULONG OutputControl,PCSTR Format,...) PURE; 824 STDMETHOD(OutputPromptVaList)(THIS_ ULONG OutputControl,PCSTR Format,va_list Args) PURE; 825 STDMETHOD(GetPromptText)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG TextSize) PURE; 826 STDMETHOD(OutputCurrentState)(THIS_ ULONG OutputControl,ULONG Flags) PURE; 827 STDMETHOD(OutputVersionInformation)(THIS_ ULONG OutputControl) PURE; 828 STDMETHOD(GetNotifyEventHandle)(THIS_ PULONG64 Handle) PURE; 829 STDMETHOD(SetNotifyEventHandle)(THIS_ ULONG64 Handle) PURE; 830 STDMETHOD(Assemble)(THIS_ ULONG64 Offset,PCSTR Instr,PULONG64 EndOffset) PURE; 831 STDMETHOD(Disassemble)(THIS_ ULONG64 Offset,ULONG Flags,PSTR Buffer,ULONG BufferSize,PULONG DisassemblySize,PULONG64 EndOffset) PURE; 832 STDMETHOD(GetDisassembleEffectiveOffset)(THIS_ PULONG64 Offset) PURE; 833 STDMETHOD(OutputDisassembly)(THIS_ ULONG OutputControl,ULONG64 Offset,ULONG Flags,PULONG64 EndOffset) PURE; 834 STDMETHOD(OutputDisassemblyLines)(THIS_ ULONG OutputControl,ULONG PreviousLines,ULONG TotalLines,ULONG64 Offset,ULONG Flags,PULONG OffsetLine,PULONG64 StartOffset,PULONG64 EndOffset,PULONG64 LineOffsets) PURE; 835 STDMETHOD(GetNearInstruction)(THIS_ ULONG64 Offset,LONG Delta,PULONG64 NearOffset) PURE; 836 STDMETHOD(GetStackTrace)(THIS_ ULONG64 FrameOffset,ULONG64 StackOffset,ULONG64 InstructionOffset,PDEBUG_STACK_FRAME Frames,ULONG FramesSize,PULONG FramesFilled) PURE; 837 STDMETHOD(GetReturnOffset)(THIS_ PULONG64 Offset) PURE; 838 STDMETHOD(OutputStackTrace)(THIS_ ULONG OutputControl,PDEBUG_STACK_FRAME Frames,ULONG FramesSize,ULONG Flags) PURE; 839 STDMETHOD(GetDebuggeeType)(THIS_ PULONG Class,PULONG Qualifier) PURE; 840 STDMETHOD(GetActualProcessorType)(THIS_ PULONG Type) PURE; 841 STDMETHOD(GetExecutingProcessorType)(THIS_ PULONG Type) PURE; 842 STDMETHOD(GetNumberPossibleExecutingProcessorTypes)(THIS_ PULONG Number) PURE; 843 STDMETHOD(GetPossibleExecutingProcessorTypes)(THIS_ ULONG Start,ULONG Count,PULONG Types) PURE; 844 STDMETHOD(GetNumberProcessors)(THIS_ PULONG Number) PURE; 845 STDMETHOD(GetSystemVersion)(THIS_ PULONG PlatformId,PULONG Major,PULONG Minor,PSTR ServicePackString,ULONG ServicePackStringSize,PULONG ServicePackStringUsed,PULONG ServicePackNumber,PSTR BuildString,ULONG BuildStringSize,PULONG BuildStringUsed) PURE; 846 STDMETHOD(GetPageSize)(THIS_ PULONG Size) PURE; 847 STDMETHOD(IsPointer64Bit)(THIS) PURE; 848 STDMETHOD(ReadBugCheckData)(THIS_ PULONG Code,PULONG64 Arg1,PULONG64 Arg2,PULONG64 Arg3,PULONG64 Arg4) PURE; 849 STDMETHOD(GetNumberSupportedProcessorTypes)(THIS_ PULONG Number) PURE; 850 STDMETHOD(GetSupportedProcessorTypes)(THIS_ ULONG Start,ULONG Count,PULONG Types) PURE; 851 STDMETHOD(GetProcessorTypeNames)(THIS_ ULONG Type,PSTR FullNameBuffer,ULONG FullNameBufferSize,PULONG FullNameSize,PSTR AbbrevNameBuffer,ULONG AbbrevNameBufferSize,PULONG AbbrevNameSize) PURE; 852 STDMETHOD(GetEffectiveProcessorType)(THIS_ PULONG Type) PURE; 853 STDMETHOD(SetEffectiveProcessorType)(THIS_ ULONG Type) PURE; 854 STDMETHOD(GetExecutionStatus)(THIS_ PULONG Status) PURE; 855 STDMETHOD(SetExecutionStatus)(THIS_ ULONG Status) PURE; 856 STDMETHOD(GetCodeLevel)(THIS_ PULONG Level) PURE; 857 STDMETHOD(SetCodeLevel)(THIS_ ULONG Level) PURE; 858 STDMETHOD(GetEngineOptions)(THIS_ PULONG Options) PURE; 859 STDMETHOD(AddEngineOptions)(THIS_ ULONG Options) PURE; 860 STDMETHOD(RemoveEngineOptions)(THIS_ ULONG Options) PURE; 861 STDMETHOD(SetEngineOptions)(THIS_ ULONG Options) PURE; 862 STDMETHOD(GetSystemErrorControl)(THIS_ PULONG OutputLevel,PULONG BreakLevel) PURE; 863 STDMETHOD(SetSystemErrorControl)(THIS_ ULONG OutputLevel,ULONG BreakLevel) PURE; 864 STDMETHOD(GetTextMacro)(THIS_ ULONG Slot,PSTR Buffer,ULONG BufferSize,PULONG MacroSize) PURE; 865 STDMETHOD(SetTextMacro)(THIS_ ULONG Slot,PCSTR Macro) PURE; 866 STDMETHOD(GetRadix)(THIS_ PULONG Radix) PURE; 867 STDMETHOD(SetRadix)(THIS_ ULONG Radix) PURE; 868 STDMETHOD(Evaluate)(THIS_ PCSTR Expression,ULONG DesiredType,PDEBUG_VALUE Value,PULONG RemainderIndex) PURE; 869 STDMETHOD(CoerceValue)(THIS_ PDEBUG_VALUE In,ULONG OutType,PDEBUG_VALUE Out) PURE; 870 STDMETHOD(CoerceValues)(THIS_ ULONG Count,PDEBUG_VALUE In,PULONG OutTypes,PDEBUG_VALUE Out) PURE; 871 STDMETHOD(Execute)(THIS_ ULONG OutputControl,PCSTR Command,ULONG Flags) PURE; 872 STDMETHOD(ExecuteCommandFile)(THIS_ ULONG OutputControl,PCSTR CommandFile,ULONG Flags) PURE; 873 STDMETHOD(GetNumberBreakpoints)(THIS_ PULONG Number) PURE; 874 STDMETHOD(GetBreakpointByIndex)(THIS_ ULONG Index,PDEBUG_BREAKPOINT *Bp) PURE; 875 STDMETHOD(GetBreakpointById)(THIS_ ULONG Id,PDEBUG_BREAKPOINT *Bp) PURE; 876 STDMETHOD(GetBreakpointParameters)(THIS_ ULONG Count,PULONG Ids,ULONG Start,PDEBUG_BREAKPOINT_PARAMETERS Params) PURE; 877 STDMETHOD(AddBreakpoint)(THIS_ ULONG Type,ULONG DesiredId,PDEBUG_BREAKPOINT *Bp) PURE; 878 STDMETHOD(RemoveBreakpoint)(THIS_ PDEBUG_BREAKPOINT Bp) PURE; 879 STDMETHOD(AddExtension)(THIS_ PCSTR Path,ULONG Flags,PULONG64 Handle) PURE; 880 STDMETHOD(RemoveExtension)(THIS_ ULONG64 Handle) PURE; 881 STDMETHOD(GetExtensionByPath)(THIS_ PCSTR Path,PULONG64 Handle) PURE; 882 STDMETHOD(CallExtension)(THIS_ ULONG64 Handle,PCSTR Function,PCSTR Arguments) PURE; 883 STDMETHOD(GetExtensionFunction)(THIS_ ULONG64 Handle,PCSTR FuncName,FARPROC *Function) PURE; 884 STDMETHOD(GetWindbgExtensionApis32)(THIS_ PWINDBG_EXTENSION_APIS32 Api) PURE; 885 STDMETHOD(GetWindbgExtensionApis64)(THIS_ PWINDBG_EXTENSION_APIS64 Api) PURE; 886 STDMETHOD(GetNumberEventFilters)(THIS_ PULONG SpecificEvents,PULONG SpecificExceptions,PULONG ArbitraryExceptions) PURE; 887 STDMETHOD(GetEventFilterText)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG TextSize) PURE; 888 STDMETHOD(GetEventFilterCommand)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG CommandSize) PURE; 889 STDMETHOD(SetEventFilterCommand)(THIS_ ULONG Index,PCSTR Command) PURE; 890 STDMETHOD(GetSpecificFilterParameters)(THIS_ ULONG Start,ULONG Count,PDEBUG_SPECIFIC_FILTER_PARAMETERS Params) PURE; 891 STDMETHOD(SetSpecificFilterParameters)(THIS_ ULONG Start,ULONG Count,PDEBUG_SPECIFIC_FILTER_PARAMETERS Params) PURE; 892 STDMETHOD(GetSpecificFilterArgument)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG ArgumentSize) PURE; 893 STDMETHOD(SetSpecificFilterArgument)(THIS_ ULONG Index,PCSTR Argument) PURE; 894 STDMETHOD(GetExceptionFilterParameters)(THIS_ ULONG Count,PULONG Codes,ULONG Start,PDEBUG_EXCEPTION_FILTER_PARAMETERS Params) PURE; 895 STDMETHOD(SetExceptionFilterParameters)(THIS_ ULONG Count,PDEBUG_EXCEPTION_FILTER_PARAMETERS Params) PURE; 896 STDMETHOD(GetExceptionFilterSecondCommand)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG CommandSize) PURE; 897 STDMETHOD(SetExceptionFilterSecondCommand)(THIS_ ULONG Index,PCSTR Command) PURE; 898 STDMETHOD(WaitForEvent)(THIS_ ULONG Flags,ULONG Timeout) PURE; 899 STDMETHOD(GetLastEventInformation)(THIS_ PULONG Type,PULONG ProcessId,PULONG ThreadId,PVOID ExtraInformation,ULONG ExtraInformationSize,PULONG ExtraInformationUsed,PSTR Description,ULONG DescriptionSize,PULONG DescriptionUsed) PURE; 900 STDMETHOD(GetCurrentTimeDate)(THIS_ PULONG TimeDate) PURE; 901 STDMETHOD(GetCurrentSystemUpTime)(THIS_ PULONG UpTime) PURE; 902 STDMETHOD(GetDumpFormatFlags)(THIS_ PULONG FormatFlags) PURE; 903 STDMETHOD(GetNumberTextReplacements)(THIS_ PULONG NumRepl) PURE; 904 STDMETHOD(GetTextReplacement)(THIS_ PCSTR SrcText,ULONG Index,PSTR SrcBuffer,ULONG SrcBufferSize,PULONG SrcSize,PSTR DstBuffer,ULONG DstBufferSize,PULONG DstSize) PURE; 905 STDMETHOD(SetTextReplacement)(THIS_ PCSTR SrcText,PCSTR DstText) PURE; 906 STDMETHOD(RemoveTextReplacements)(THIS) PURE; 907 STDMETHOD(OutputTextReplacements)(THIS_ ULONG OutputControl,ULONG Flags) PURE; 908 }; 909 910 #define DEBUG_ASMOPT_DEFAULT 0x00000000 911 #define DEBUG_ASMOPT_VERBOSE 0x00000001 912 #define DEBUG_ASMOPT_NO_CODE_BYTES 0x00000002 913 #define DEBUG_ASMOPT_IGNORE_OUTPUT_WIDTH 0x00000004 914 915 #define DEBUG_EXPR_MASM 0x00000000 916 #define DEBUG_EXPR_CPLUSPLUS 0x00000001 917 918 #define DEBUG_EINDEX_NAME 0x00000000 919 #define DEBUG_EINDEX_FROM_START 0x00000000 920 #define DEBUG_EINDEX_FROM_END 0x00000001 921 #define DEBUG_EINDEX_FROM_CURRENT 0x00000002 922 923 #undef INTERFACE 924 #define INTERFACE IDebugControl3 925 DECLARE_INTERFACE_(IDebugControl3,IUnknown) { 926 STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE; 927 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 928 STDMETHOD_(ULONG,Release)(THIS) PURE; 929 STDMETHOD(GetInterrupt)(THIS) PURE; 930 STDMETHOD(SetInterrupt)(THIS_ ULONG Flags) PURE; 931 STDMETHOD(GetInterruptTimeout)(THIS_ PULONG Seconds) PURE; 932 STDMETHOD(SetInterruptTimeout)(THIS_ ULONG Seconds) PURE; 933 STDMETHOD(GetLogFile)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG FileSize,PBOOL Append) PURE; 934 STDMETHOD(OpenLogFile)(THIS_ PCSTR File,WINBOOL Append) PURE; 935 STDMETHOD(CloseLogFile)(THIS) PURE; 936 STDMETHOD(GetLogMask)(THIS_ PULONG Mask) PURE; 937 STDMETHOD(SetLogMask)(THIS_ ULONG Mask) PURE; 938 STDMETHOD(Input)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG InputSize) PURE; 939 STDMETHOD(ReturnInput)(THIS_ PCSTR Buffer) PURE; 940 STDMETHODV(Output)(THIS_ ULONG Mask,PCSTR Format,...) PURE; 941 STDMETHOD(OutputVaList)(THIS_ ULONG Mask,PCSTR Format,va_list Args) PURE; 942 STDMETHODV(ControlledOutput)(THIS_ ULONG OutputControl,ULONG Mask,PCSTR Format,...) PURE; 943 STDMETHOD(ControlledOutputVaList)(THIS_ ULONG OutputControl,ULONG Mask,PCSTR Format,va_list Args) PURE; 944 STDMETHODV(OutputPrompt)(THIS_ ULONG OutputControl,PCSTR Format,...) PURE; 945 STDMETHOD(OutputPromptVaList)(THIS_ ULONG OutputControl,PCSTR Format,va_list Args) PURE; 946 STDMETHOD(GetPromptText)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG TextSize) PURE; 947 STDMETHOD(OutputCurrentState)(THIS_ ULONG OutputControl,ULONG Flags) PURE; 948 STDMETHOD(OutputVersionInformation)(THIS_ ULONG OutputControl) PURE; 949 STDMETHOD(GetNotifyEventHandle)(THIS_ PULONG64 Handle) PURE; 950 STDMETHOD(SetNotifyEventHandle)(THIS_ ULONG64 Handle) PURE; 951 STDMETHOD(Assemble)(THIS_ ULONG64 Offset,PCSTR Instr,PULONG64 EndOffset) PURE; 952 STDMETHOD(Disassemble)(THIS_ ULONG64 Offset,ULONG Flags,PSTR Buffer,ULONG BufferSize,PULONG DisassemblySize,PULONG64 EndOffset) PURE; 953 STDMETHOD(GetDisassembleEffectiveOffset)(THIS_ PULONG64 Offset) PURE; 954 STDMETHOD(OutputDisassembly)(THIS_ ULONG OutputControl,ULONG64 Offset,ULONG Flags,PULONG64 EndOffset) PURE; 955 STDMETHOD(OutputDisassemblyLines)(THIS_ ULONG OutputControl,ULONG PreviousLines,ULONG TotalLines,ULONG64 Offset,ULONG Flags,PULONG OffsetLine,PULONG64 StartOffset,PULONG64 EndOffset,PULONG64 LineOffsets) PURE; 956 STDMETHOD(GetNearInstruction)(THIS_ ULONG64 Offset,LONG Delta,PULONG64 NearOffset) PURE; 957 STDMETHOD(GetStackTrace)(THIS_ ULONG64 FrameOffset,ULONG64 StackOffset,ULONG64 InstructionOffset,PDEBUG_STACK_FRAME Frames,ULONG FramesSize,PULONG FramesFilled) PURE; 958 STDMETHOD(GetReturnOffset)(THIS_ PULONG64 Offset) PURE; 959 STDMETHOD(OutputStackTrace)(THIS_ ULONG OutputControl,PDEBUG_STACK_FRAME Frames,ULONG FramesSize,ULONG Flags) PURE; 960 STDMETHOD(GetDebuggeeType)(THIS_ PULONG Class,PULONG Qualifier) PURE; 961 STDMETHOD(GetActualProcessorType)(THIS_ PULONG Type) PURE; 962 STDMETHOD(GetExecutingProcessorType)(THIS_ PULONG Type) PURE; 963 STDMETHOD(GetNumberPossibleExecutingProcessorTypes)(THIS_ PULONG Number) PURE; 964 STDMETHOD(GetPossibleExecutingProcessorTypes)(THIS_ ULONG Start,ULONG Count,PULONG Types) PURE; 965 STDMETHOD(GetNumberProcessors)(THIS_ PULONG Number) PURE; 966 STDMETHOD(GetSystemVersion)(THIS_ PULONG PlatformId,PULONG Major,PULONG Minor,PSTR ServicePackString,ULONG ServicePackStringSize,PULONG ServicePackStringUsed,PULONG ServicePackNumber,PSTR BuildString,ULONG BuildStringSize,PULONG BuildStringUsed) PURE; 967 STDMETHOD(GetPageSize)(THIS_ PULONG Size) PURE; 968 STDMETHOD(IsPointer64Bit)(THIS) PURE; 969 STDMETHOD(ReadBugCheckData)(THIS_ PULONG Code,PULONG64 Arg1,PULONG64 Arg2,PULONG64 Arg3,PULONG64 Arg4) PURE; 970 STDMETHOD(GetNumberSupportedProcessorTypes)(THIS_ PULONG Number) PURE; 971 STDMETHOD(GetSupportedProcessorTypes)(THIS_ ULONG Start,ULONG Count,PULONG Types) PURE; 972 STDMETHOD(GetProcessorTypeNames)(THIS_ ULONG Type,PSTR FullNameBuffer,ULONG FullNameBufferSize,PULONG FullNameSize,PSTR AbbrevNameBuffer,ULONG AbbrevNameBufferSize,PULONG AbbrevNameSize) PURE; 973 STDMETHOD(GetEffectiveProcessorType)(THIS_ PULONG Type) PURE; 974 STDMETHOD(SetEffectiveProcessorType)(THIS_ ULONG Type) PURE; 975 STDMETHOD(GetExecutionStatus)(THIS_ PULONG Status) PURE; 976 STDMETHOD(SetExecutionStatus)(THIS_ ULONG Status) PURE; 977 STDMETHOD(GetCodeLevel)(THIS_ PULONG Level) PURE; 978 STDMETHOD(SetCodeLevel)(THIS_ ULONG Level) PURE; 979 STDMETHOD(GetEngineOptions)(THIS_ PULONG Options) PURE; 980 STDMETHOD(AddEngineOptions)(THIS_ ULONG Options) PURE; 981 STDMETHOD(RemoveEngineOptions)(THIS_ ULONG Options) PURE; 982 STDMETHOD(SetEngineOptions)(THIS_ ULONG Options) PURE; 983 STDMETHOD(GetSystemErrorControl)(THIS_ PULONG OutputLevel,PULONG BreakLevel) PURE; 984 STDMETHOD(SetSystemErrorControl)(THIS_ ULONG OutputLevel,ULONG BreakLevel) PURE; 985 STDMETHOD(GetTextMacro)(THIS_ ULONG Slot,PSTR Buffer,ULONG BufferSize,PULONG MacroSize) PURE; 986 STDMETHOD(SetTextMacro)(THIS_ ULONG Slot,PCSTR Macro) PURE; 987 STDMETHOD(GetRadix)(THIS_ PULONG Radix) PURE; 988 STDMETHOD(SetRadix)(THIS_ ULONG Radix) PURE; 989 STDMETHOD(Evaluate)(THIS_ PCSTR Expression,ULONG DesiredType,PDEBUG_VALUE Value,PULONG RemainderIndex) PURE; 990 STDMETHOD(CoerceValue)(THIS_ PDEBUG_VALUE In,ULONG OutType,PDEBUG_VALUE Out) PURE; 991 STDMETHOD(CoerceValues)(THIS_ ULONG Count,PDEBUG_VALUE In,PULONG OutTypes,PDEBUG_VALUE Out) PURE; 992 STDMETHOD(Execute)(THIS_ ULONG OutputControl,PCSTR Command,ULONG Flags) PURE; 993 STDMETHOD(ExecuteCommandFile)(THIS_ ULONG OutputControl,PCSTR CommandFile,ULONG Flags) PURE; 994 STDMETHOD(GetNumberBreakpoints)(THIS_ PULONG Number) PURE; 995 STDMETHOD(GetBreakpointByIndex)(THIS_ ULONG Index,PDEBUG_BREAKPOINT *Bp) PURE; 996 STDMETHOD(GetBreakpointById)(THIS_ ULONG Id,PDEBUG_BREAKPOINT *Bp) PURE; 997 STDMETHOD(GetBreakpointParameters)(THIS_ ULONG Count,PULONG Ids,ULONG Start,PDEBUG_BREAKPOINT_PARAMETERS Params) PURE; 998 STDMETHOD(AddBreakpoint)(THIS_ ULONG Type,ULONG DesiredId,PDEBUG_BREAKPOINT *Bp) PURE; 999 STDMETHOD(RemoveBreakpoint)(THIS_ PDEBUG_BREAKPOINT Bp) PURE; 1000 STDMETHOD(AddExtension)(THIS_ PCSTR Path,ULONG Flags,PULONG64 Handle) PURE; 1001 STDMETHOD(RemoveExtension)(THIS_ ULONG64 Handle) PURE; 1002 STDMETHOD(GetExtensionByPath)(THIS_ PCSTR Path,PULONG64 Handle) PURE; 1003 STDMETHOD(CallExtension)(THIS_ ULONG64 Handle,PCSTR Function,PCSTR Arguments) PURE; 1004 STDMETHOD(GetExtensionFunction)(THIS_ ULONG64 Handle,PCSTR FuncName,FARPROC *Function) PURE; 1005 STDMETHOD(GetWindbgExtensionApis32)(THIS_ PWINDBG_EXTENSION_APIS32 Api) PURE; 1006 STDMETHOD(GetWindbgExtensionApis64)(THIS_ PWINDBG_EXTENSION_APIS64 Api) PURE; 1007 STDMETHOD(GetNumberEventFilters)(THIS_ PULONG SpecificEvents,PULONG SpecificExceptions,PULONG ArbitraryExceptions) PURE; 1008 STDMETHOD(GetEventFilterText)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG TextSize) PURE; 1009 STDMETHOD(GetEventFilterCommand)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG CommandSize) PURE; 1010 STDMETHOD(SetEventFilterCommand)(THIS_ ULONG Index,PCSTR Command) PURE; 1011 STDMETHOD(GetSpecificFilterParameters)(THIS_ ULONG Start,ULONG Count,PDEBUG_SPECIFIC_FILTER_PARAMETERS Params) PURE; 1012 STDMETHOD(SetSpecificFilterParameters)(THIS_ ULONG Start,ULONG Count,PDEBUG_SPECIFIC_FILTER_PARAMETERS Params) PURE; 1013 STDMETHOD(GetSpecificFilterArgument)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG ArgumentSize) PURE; 1014 STDMETHOD(SetSpecificFilterArgument)(THIS_ ULONG Index,PCSTR Argument) PURE; 1015 STDMETHOD(GetExceptionFilterParameters)(THIS_ ULONG Count,PULONG Codes,ULONG Start,PDEBUG_EXCEPTION_FILTER_PARAMETERS Params) PURE; 1016 STDMETHOD(SetExceptionFilterParameters)(THIS_ ULONG Count,PDEBUG_EXCEPTION_FILTER_PARAMETERS Params) PURE; 1017 STDMETHOD(GetExceptionFilterSecondCommand)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG CommandSize) PURE; 1018 STDMETHOD(SetExceptionFilterSecondCommand)(THIS_ ULONG Index,PCSTR Command) PURE; 1019 STDMETHOD(WaitForEvent)(THIS_ ULONG Flags,ULONG Timeout) PURE; 1020 STDMETHOD(GetLastEventInformation)(THIS_ PULONG Type,PULONG ProcessId,PULONG ThreadId,PVOID ExtraInformation,ULONG ExtraInformationSize,PULONG ExtraInformationUsed,PSTR Description,ULONG DescriptionSize,PULONG DescriptionUsed) PURE; 1021 STDMETHOD(GetCurrentTimeDate)(THIS_ PULONG TimeDate) PURE; 1022 STDMETHOD(GetCurrentSystemUpTime)(THIS_ PULONG UpTime) PURE; 1023 STDMETHOD(GetDumpFormatFlags)(THIS_ PULONG FormatFlags) PURE; 1024 STDMETHOD(GetNumberTextReplacements)(THIS_ PULONG NumRepl) PURE; 1025 STDMETHOD(GetTextReplacement)(THIS_ PCSTR SrcText,ULONG Index,PSTR SrcBuffer,ULONG SrcBufferSize,PULONG SrcSize,PSTR DstBuffer,ULONG DstBufferSize,PULONG DstSize) PURE; 1026 STDMETHOD(SetTextReplacement)(THIS_ PCSTR SrcText,PCSTR DstText) PURE; 1027 STDMETHOD(RemoveTextReplacements)(THIS) PURE; 1028 STDMETHOD(OutputTextReplacements)(THIS_ ULONG OutputControl,ULONG Flags) PURE; 1029 STDMETHOD(GetAssemblyOptions)(THIS_ PULONG Options) PURE; 1030 STDMETHOD(AddAssemblyOptions)(THIS_ ULONG Options) PURE; 1031 STDMETHOD(RemoveAssemblyOptions)(THIS_ ULONG Options) PURE; 1032 STDMETHOD(SetAssemblyOptions)(THIS_ ULONG Options) PURE; 1033 STDMETHOD(GetExpressionSyntax)(THIS_ PULONG Flags) PURE; 1034 STDMETHOD(SetExpressionSyntax)(THIS_ ULONG Flags) PURE; 1035 STDMETHOD(SetExpressionSyntaxByName)(THIS_ PCSTR AbbrevName) PURE; 1036 STDMETHOD(GetNumberExpressionSyntaxes)(THIS_ PULONG Number) PURE; 1037 STDMETHOD(GetExpressionSyntaxNames)(THIS_ ULONG Index,PSTR FullNameBuffer,ULONG FullNameBufferSize,PULONG FullNameSize,PSTR AbbrevNameBuffer,ULONG AbbrevNameBufferSize,PULONG AbbrevNameSize) PURE; 1038 STDMETHOD(GetNumberEvents)(THIS_ PULONG Events) PURE; 1039 STDMETHOD(GetEventIndexDescription)(THIS_ ULONG Index,ULONG Which,PSTR Buffer,ULONG BufferSize,PULONG DescSize) PURE; 1040 STDMETHOD(GetCurrentEventIndex)(THIS_ PULONG Index) PURE; 1041 STDMETHOD(SetNextEventIndex)(THIS_ ULONG Relation,ULONG Value,PULONG NextIndex) PURE; 1042 }; 1043 1044 #define DEBUG_DATA_SPACE_VIRTUAL 0 1045 #define DEBUG_DATA_SPACE_PHYSICAL 1 1046 #define DEBUG_DATA_SPACE_CONTROL 2 1047 #define DEBUG_DATA_SPACE_IO 3 1048 #define DEBUG_DATA_SPACE_MSR 4 1049 #define DEBUG_DATA_SPACE_BUS_DATA 5 1050 #define DEBUG_DATA_SPACE_DEBUGGER_DATA 6 1051 #define DEBUG_DATA_SPACE_COUNT 7 1052 1053 #define DEBUG_DATA_KernBase 24 1054 #define DEBUG_DATA_BreakpointWithStatusAddr 32 1055 #define DEBUG_DATA_SavedContextAddr 40 1056 #define DEBUG_DATA_KiCallUserModeAddr 56 1057 #define DEBUG_DATA_KeUserCallbackDispatcherAddr 64 1058 #define DEBUG_DATA_PsLoadedModuleListAddr 72 1059 #define DEBUG_DATA_PsActiveProcessHeadAddr 80 1060 #define DEBUG_DATA_PspCidTableAddr 88 1061 #define DEBUG_DATA_ExpSystemResourcesListAddr 96 1062 #define DEBUG_DATA_ExpPagedPoolDescriptorAddr 104 1063 #define DEBUG_DATA_ExpNumberOfPagedPoolsAddr 112 1064 #define DEBUG_DATA_KeTimeIncrementAddr 120 1065 #define DEBUG_DATA_KeBugCheckCallbackListHeadAddr 128 1066 #define DEBUG_DATA_KiBugcheckDataAddr 136 1067 #define DEBUG_DATA_IopErrorLogListHeadAddr 144 1068 #define DEBUG_DATA_ObpRootDirectoryObjectAddr 152 1069 #define DEBUG_DATA_ObpTypeObjectTypeAddr 160 1070 #define DEBUG_DATA_MmSystemCacheStartAddr 168 1071 #define DEBUG_DATA_MmSystemCacheEndAddr 176 1072 #define DEBUG_DATA_MmSystemCacheWsAddr 184 1073 #define DEBUG_DATA_MmPfnDatabaseAddr 192 1074 #define DEBUG_DATA_MmSystemPtesStartAddr 200 1075 #define DEBUG_DATA_MmSystemPtesEndAddr 208 1076 #define DEBUG_DATA_MmSubsectionBaseAddr 216 1077 #define DEBUG_DATA_MmNumberOfPagingFilesAddr 224 1078 #define DEBUG_DATA_MmLowestPhysicalPageAddr 232 1079 #define DEBUG_DATA_MmHighestPhysicalPageAddr 240 1080 #define DEBUG_DATA_MmNumberOfPhysicalPagesAddr 248 1081 #define DEBUG_DATA_MmMaximumNonPagedPoolInBytesAddr 256 1082 #define DEBUG_DATA_MmNonPagedSystemStartAddr 264 1083 #define DEBUG_DATA_MmNonPagedPoolStartAddr 272 1084 #define DEBUG_DATA_MmNonPagedPoolEndAddr 280 1085 #define DEBUG_DATA_MmPagedPoolStartAddr 288 1086 #define DEBUG_DATA_MmPagedPoolEndAddr 296 1087 #define DEBUG_DATA_MmPagedPoolInformationAddr 304 1088 #define DEBUG_DATA_MmPageSize 312 1089 #define DEBUG_DATA_MmSizeOfPagedPoolInBytesAddr 320 1090 #define DEBUG_DATA_MmTotalCommitLimitAddr 328 1091 #define DEBUG_DATA_MmTotalCommittedPagesAddr 336 1092 #define DEBUG_DATA_MmSharedCommitAddr 344 1093 #define DEBUG_DATA_MmDriverCommitAddr 352 1094 #define DEBUG_DATA_MmProcessCommitAddr 360 1095 #define DEBUG_DATA_MmPagedPoolCommitAddr 368 1096 #define DEBUG_DATA_MmExtendedCommitAddr 376 1097 #define DEBUG_DATA_MmZeroedPageListHeadAddr 384 1098 #define DEBUG_DATA_MmFreePageListHeadAddr 392 1099 #define DEBUG_DATA_MmStandbyPageListHeadAddr 400 1100 #define DEBUG_DATA_MmModifiedPageListHeadAddr 408 1101 #define DEBUG_DATA_MmModifiedNoWritePageListHeadAddr 416 1102 #define DEBUG_DATA_MmAvailablePagesAddr 424 1103 #define DEBUG_DATA_MmResidentAvailablePagesAddr 432 1104 #define DEBUG_DATA_PoolTrackTableAddr 440 1105 #define DEBUG_DATA_NonPagedPoolDescriptorAddr 448 1106 #define DEBUG_DATA_MmHighestUserAddressAddr 456 1107 #define DEBUG_DATA_MmSystemRangeStartAddr 464 1108 #define DEBUG_DATA_MmUserProbeAddressAddr 472 1109 #define DEBUG_DATA_KdPrintCircularBufferAddr 480 1110 #define DEBUG_DATA_KdPrintCircularBufferEndAddr 488 1111 #define DEBUG_DATA_KdPrintWritePointerAddr 496 1112 #define DEBUG_DATA_KdPrintRolloverCountAddr 504 1113 #define DEBUG_DATA_MmLoadedUserImageListAddr 512 1114 #define DEBUG_DATA_NtBuildLabAddr 520 1115 #define DEBUG_DATA_KiNormalSystemCall 528 1116 #define DEBUG_DATA_KiProcessorBlockAddr 536 1117 #define DEBUG_DATA_MmUnloadedDriversAddr 544 1118 #define DEBUG_DATA_MmLastUnloadedDriverAddr 552 1119 #define DEBUG_DATA_MmTriageActionTakenAddr 560 1120 #define DEBUG_DATA_MmSpecialPoolTagAddr 568 1121 #define DEBUG_DATA_KernelVerifierAddr 576 1122 #define DEBUG_DATA_MmVerifierDataAddr 584 1123 #define DEBUG_DATA_MmAllocatedNonPagedPoolAddr 592 1124 #define DEBUG_DATA_MmPeakCommitmentAddr 600 1125 #define DEBUG_DATA_MmTotalCommitLimitMaximumAddr 608 1126 #define DEBUG_DATA_CmNtCSDVersionAddr 616 1127 #define DEBUG_DATA_MmPhysicalMemoryBlockAddr 624 1128 #define DEBUG_DATA_MmSessionBase 632 1129 #define DEBUG_DATA_MmSessionSize 640 1130 #define DEBUG_DATA_MmSystemParentTablePage 648 1131 #define DEBUG_DATA_MmVirtualTranslationBase 656 1132 #define DEBUG_DATA_OffsetKThreadNextProcessor 664 1133 #define DEBUG_DATA_OffsetKThreadTeb 666 1134 #define DEBUG_DATA_OffsetKThreadKernelStack 668 1135 #define DEBUG_DATA_OffsetKThreadInitialStack 670 1136 #define DEBUG_DATA_OffsetKThreadApcProcess 672 1137 #define DEBUG_DATA_OffsetKThreadState 674 1138 #define DEBUG_DATA_OffsetKThreadBStore 676 1139 #define DEBUG_DATA_OffsetKThreadBStoreLimit 678 1140 #define DEBUG_DATA_SizeEProcess 680 1141 #define DEBUG_DATA_OffsetEprocessPeb 682 1142 #define DEBUG_DATA_OffsetEprocessParentCID 684 1143 #define DEBUG_DATA_OffsetEprocessDirectoryTableBase 686 1144 #define DEBUG_DATA_SizePrcb 688 1145 #define DEBUG_DATA_OffsetPrcbDpcRoutine 690 1146 #define DEBUG_DATA_OffsetPrcbCurrentThread 692 1147 #define DEBUG_DATA_OffsetPrcbMhz 694 1148 #define DEBUG_DATA_OffsetPrcbCpuType 696 1149 #define DEBUG_DATA_OffsetPrcbVendorString 698 1150 #define DEBUG_DATA_OffsetPrcbProcessorState 700 1151 #define DEBUG_DATA_OffsetPrcbNumber 702 1152 #define DEBUG_DATA_SizeEThread 704 1153 #define DEBUG_DATA_KdPrintCircularBufferPtrAddr 712 1154 #define DEBUG_DATA_KdPrintBufferSizeAddr 720 1155 1156 #define DEBUG_DATA_PaeEnabled 100000 1157 #define DEBUG_DATA_SharedUserData 100008 1158 #define DEBUG_DATA_ProductType 100016 1159 #define DEBUG_DATA_SuiteMask 100024 1160 1161 typedef struct _DEBUG_PROCESSOR_IDENTIFICATION_ALPHA { 1162 ULONG Type; 1163 ULONG Revision; 1164 } DEBUG_PROCESSOR_IDENTIFICATION_ALPHA,*PDEBUG_PROCESSOR_IDENTIFICATION_ALPHA; 1165 1166 typedef struct _DEBUG_PROCESSOR_IDENTIFICATION_AMD64 { 1167 ULONG Family; 1168 ULONG Model; 1169 ULONG Stepping; 1170 CHAR VendorString[16]; 1171 } DEBUG_PROCESSOR_IDENTIFICATION_AMD64,*PDEBUG_PROCESSOR_IDENTIFICATION_AMD64; 1172 1173 typedef struct _DEBUG_PROCESSOR_IDENTIFICATION_IA64 { 1174 ULONG Model; 1175 ULONG Revision; 1176 ULONG Family; 1177 ULONG ArchRev; 1178 CHAR VendorString[16]; 1179 } DEBUG_PROCESSOR_IDENTIFICATION_IA64,*PDEBUG_PROCESSOR_IDENTIFICATION_IA64; 1180 1181 typedef struct _DEBUG_PROCESSOR_IDENTIFICATION_X86 { 1182 ULONG Family; 1183 ULONG Model; 1184 ULONG Stepping; 1185 CHAR VendorString[16]; 1186 } DEBUG_PROCESSOR_IDENTIFICATION_X86,*PDEBUG_PROCESSOR_IDENTIFICATION_X86; 1187 1188 typedef struct _DEBUG_PROCESSOR_IDENTIFICATION_ARM { 1189 ULONG Type; 1190 ULONG Revision; 1191 } DEBUG_PROCESSOR_IDENTIFICATION_ARM,*PDEBUG_PROCESSOR_IDENTIFICATION_ARM; 1192 1193 typedef union _DEBUG_PROCESSOR_IDENTIFICATION_ALL { 1194 DEBUG_PROCESSOR_IDENTIFICATION_ALPHA Alpha; 1195 DEBUG_PROCESSOR_IDENTIFICATION_AMD64 Amd64; 1196 DEBUG_PROCESSOR_IDENTIFICATION_IA64 Ia64; 1197 DEBUG_PROCESSOR_IDENTIFICATION_X86 X86; 1198 DEBUG_PROCESSOR_IDENTIFICATION_ARM Arm; 1199 } DEBUG_PROCESSOR_IDENTIFICATION_ALL,*PDEBUG_PROCESSOR_IDENTIFICATION_ALL; 1200 1201 #define DEBUG_DATA_KPCR_OFFSET 0 1202 #define DEBUG_DATA_KPRCB_OFFSET 1 1203 #define DEBUG_DATA_KTHREAD_OFFSET 2 1204 #define DEBUG_DATA_BASE_TRANSLATION_VIRTUAL_OFFSET 3 1205 #define DEBUG_DATA_PROCESSOR_IDENTIFICATION 4 1206 #define DEBUG_DATA_PROCESSOR_SPEED 5 1207 1208 #undef INTERFACE 1209 #define INTERFACE IDebugDataSpaces 1210 DECLARE_INTERFACE_(IDebugDataSpaces,IUnknown) { 1211 STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE; 1212 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1213 STDMETHOD_(ULONG,Release)(THIS) PURE; 1214 STDMETHOD(ReadVirtual)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE; 1215 STDMETHOD(WriteVirtual)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE; 1216 STDMETHOD(SearchVirtual)(THIS_ ULONG64 Offset,ULONG64 Length,PVOID Pattern,ULONG PatternSize,ULONG PatternGranularity,PULONG64 MatchOffset) PURE; 1217 STDMETHOD(ReadVirtualUncached)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE; 1218 STDMETHOD(WriteVirtualUncached)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE; 1219 STDMETHOD(ReadPointersVirtual)(THIS_ ULONG Count,ULONG64 Offset,PULONG64 Ptrs) PURE; 1220 STDMETHOD(WritePointersVirtual)(THIS_ ULONG Count,ULONG64 Offset,PULONG64 Ptrs) PURE; 1221 STDMETHOD(ReadPhysical)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE; 1222 STDMETHOD(WritePhysical)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE; 1223 STDMETHOD(ReadControl)(THIS_ ULONG Processor,ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE; 1224 STDMETHOD(WriteControl)(THIS_ ULONG Processor,ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE; 1225 STDMETHOD(ReadIo)(THIS_ ULONG InterfaceType,ULONG BusNumber,ULONG AddressSpace,ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE; 1226 STDMETHOD(WriteIo)(THIS_ ULONG InterfaceType,ULONG BusNumber,ULONG AddressSpace,ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE; 1227 STDMETHOD(ReadMsr)(THIS_ ULONG Msr,PULONG64 Value) PURE; 1228 STDMETHOD(WriteMsr)(THIS_ ULONG Msr,ULONG64 Value) PURE; 1229 STDMETHOD(ReadBusData)(THIS_ ULONG BusDataType,ULONG BusNumber,ULONG SlotNumber,ULONG Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE; 1230 STDMETHOD(WriteBusData)(THIS_ ULONG BusDataType,ULONG BusNumber,ULONG SlotNumber,ULONG Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE; 1231 STDMETHOD(CheckLowMemory)(THIS) PURE; 1232 STDMETHOD(ReadDebuggerData)(THIS_ ULONG Index,PVOID Buffer,ULONG BufferSize,PULONG DataSize) PURE; 1233 STDMETHOD(ReadProcessorSystemData)(THIS_ ULONG Processor,ULONG Index,PVOID Buffer,ULONG BufferSize,PULONG DataSize) PURE; 1234 }; 1235 1236 #define DEBUG_HANDLE_DATA_TYPE_BASIC 0 1237 #define DEBUG_HANDLE_DATA_TYPE_TYPE_NAME 1 1238 #define DEBUG_HANDLE_DATA_TYPE_OBJECT_NAME 2 1239 #define DEBUG_HANDLE_DATA_TYPE_HANDLE_COUNT 3 1240 #define DEBUG_HANDLE_DATA_TYPE_TYPE_NAME_WIDE 4 1241 #define DEBUG_HANDLE_DATA_TYPE_OBJECT_NAME_WIDE 5 1242 1243 typedef struct _DEBUG_HANDLE_DATA_BASIC { 1244 ULONG TypeNameSize; 1245 ULONG ObjectNameSize; 1246 ULONG Attributes; 1247 ULONG GrantedAccess; 1248 ULONG HandleCount; 1249 ULONG PointerCount; 1250 } DEBUG_HANDLE_DATA_BASIC,*PDEBUG_HANDLE_DATA_BASIC; 1251 1252 #undef INTERFACE 1253 #define INTERFACE IDebugDataSpaces2 1254 DECLARE_INTERFACE_(IDebugDataSpaces2,IUnknown) { 1255 STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE; 1256 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1257 STDMETHOD_(ULONG,Release)(THIS) PURE; 1258 STDMETHOD(ReadVirtual)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE; 1259 STDMETHOD(WriteVirtual)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE; 1260 STDMETHOD(SearchVirtual)(THIS_ ULONG64 Offset,ULONG64 Length,PVOID Pattern,ULONG PatternSize,ULONG PatternGranularity,PULONG64 MatchOffset) PURE; 1261 STDMETHOD(ReadVirtualUncached)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE; 1262 STDMETHOD(WriteVirtualUncached)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE; 1263 STDMETHOD(ReadPointersVirtual)(THIS_ ULONG Count,ULONG64 Offset,PULONG64 Ptrs) PURE; 1264 STDMETHOD(WritePointersVirtual)(THIS_ ULONG Count,ULONG64 Offset,PULONG64 Ptrs) PURE; 1265 STDMETHOD(ReadPhysical)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE; 1266 STDMETHOD(WritePhysical)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE; 1267 STDMETHOD(ReadControl)(THIS_ ULONG Processor,ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE; 1268 STDMETHOD(WriteControl)(THIS_ ULONG Processor,ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE; 1269 STDMETHOD(ReadIo)(THIS_ ULONG InterfaceType,ULONG BusNumber,ULONG AddressSpace,ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE; 1270 STDMETHOD(WriteIo)(THIS_ ULONG InterfaceType,ULONG BusNumber,ULONG AddressSpace,ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE; 1271 STDMETHOD(ReadMsr)(THIS_ ULONG Msr,PULONG64 Value) PURE; 1272 STDMETHOD(WriteMsr)(THIS_ ULONG Msr,ULONG64 Value) PURE; 1273 STDMETHOD(ReadBusData)(THIS_ ULONG BusDataType,ULONG BusNumber,ULONG SlotNumber,ULONG Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE; 1274 STDMETHOD(WriteBusData)(THIS_ ULONG BusDataType,ULONG BusNumber,ULONG SlotNumber,ULONG Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE; 1275 STDMETHOD(CheckLowMemory)(THIS) PURE; 1276 STDMETHOD(ReadDebuggerData)(THIS_ ULONG Index,PVOID Buffer,ULONG BufferSize,PULONG DataSize) PURE; 1277 STDMETHOD(ReadProcessorSystemData)(THIS_ ULONG Processor,ULONG Index,PVOID Buffer,ULONG BufferSize,PULONG DataSize) PURE; 1278 STDMETHOD(VirtualToPhysical)(THIS_ ULONG64 Virtual,PULONG64 Physical) PURE; 1279 STDMETHOD(GetVirtualTranslationPhysicalOffsets)(THIS_ ULONG64 Virtual,PULONG64 Offsets,ULONG OffsetsSize,PULONG Levels) PURE; 1280 STDMETHOD(ReadHandleData)(THIS_ ULONG64 Handle,ULONG DataType,PVOID Buffer,ULONG BufferSize,PULONG DataSize) PURE; 1281 STDMETHOD(FillVirtual)(THIS_ ULONG64 Start,ULONG Size,PVOID Pattern,ULONG PatternSize,PULONG Filled) PURE; 1282 STDMETHOD(FillPhysical)(THIS_ ULONG64 Start,ULONG Size,PVOID Pattern,ULONG PatternSize,PULONG Filled) PURE; 1283 STDMETHOD(QueryVirtual)(THIS_ ULONG64 Offset,PMEMORY_BASIC_INFORMATION64 Info) PURE; 1284 }; 1285 1286 #undef INTERFACE 1287 #define INTERFACE IDebugDataSpaces3 1288 DECLARE_INTERFACE_(IDebugDataSpaces3,IUnknown) { 1289 STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE; 1290 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1291 STDMETHOD_(ULONG,Release)(THIS) PURE; 1292 STDMETHOD(ReadVirtual)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE; 1293 STDMETHOD(WriteVirtual)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE; 1294 STDMETHOD(SearchVirtual)(THIS_ ULONG64 Offset,ULONG64 Length,PVOID Pattern,ULONG PatternSize,ULONG PatternGranularity,PULONG64 MatchOffset) PURE; 1295 STDMETHOD(ReadVirtualUncached)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE; 1296 STDMETHOD(WriteVirtualUncached)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE; 1297 STDMETHOD(ReadPointersVirtual)(THIS_ ULONG Count,ULONG64 Offset,PULONG64 Ptrs) PURE; 1298 STDMETHOD(WritePointersVirtual)(THIS_ ULONG Count,ULONG64 Offset,PULONG64 Ptrs) PURE; 1299 STDMETHOD(ReadPhysical)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE; 1300 STDMETHOD(WritePhysical)(THIS_ ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE; 1301 STDMETHOD(ReadControl)(THIS_ ULONG Processor,ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE; 1302 STDMETHOD(WriteControl)(THIS_ ULONG Processor,ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE; 1303 STDMETHOD(ReadIo)(THIS_ ULONG InterfaceType,ULONG BusNumber,ULONG AddressSpace,ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE; 1304 STDMETHOD(WriteIo)(THIS_ ULONG InterfaceType,ULONG BusNumber,ULONG AddressSpace,ULONG64 Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE; 1305 STDMETHOD(ReadMsr)(THIS_ ULONG Msr,PULONG64 Value) PURE; 1306 STDMETHOD(WriteMsr)(THIS_ ULONG Msr,ULONG64 Value) PURE; 1307 STDMETHOD(ReadBusData)(THIS_ ULONG BusDataType,ULONG BusNumber,ULONG SlotNumber,ULONG Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE; 1308 STDMETHOD(WriteBusData)(THIS_ ULONG BusDataType,ULONG BusNumber,ULONG SlotNumber,ULONG Offset,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE; 1309 STDMETHOD(CheckLowMemory)(THIS) PURE; 1310 STDMETHOD(ReadDebuggerData)(THIS_ 1311 ULONG Index,PVOID Buffer,ULONG BufferSize,PULONG DataSize) PURE; 1312 STDMETHOD(ReadProcessorSystemData)(THIS_ ULONG Processor,ULONG Index,PVOID Buffer,ULONG BufferSize,PULONG DataSize) PURE; 1313 STDMETHOD(VirtualToPhysical)(THIS_ ULONG64 Virtual,PULONG64 Physical) PURE; 1314 STDMETHOD(GetVirtualTranslationPhysicalOffsets)(THIS_ ULONG64 Virtual,PULONG64 Offsets,ULONG OffsetsSize,PULONG Levels) PURE; 1315 STDMETHOD(ReadHandleData)(THIS_ ULONG64 Handle,ULONG DataType,PVOID Buffer,ULONG BufferSize,PULONG DataSize) PURE; 1316 STDMETHOD(FillVirtual)(THIS_ ULONG64 Start,ULONG Size,PVOID Pattern,ULONG PatternSize,PULONG Filled) PURE; 1317 STDMETHOD(FillPhysical)(THIS_ ULONG64 Start,ULONG Size,PVOID Pattern,ULONG PatternSize,PULONG Filled) PURE; 1318 STDMETHOD(QueryVirtual)(THIS_ ULONG64 Offset,PMEMORY_BASIC_INFORMATION64 Info) PURE; 1319 STDMETHOD(ReadImageNtHeaders)(THIS_ ULONG64 ImageBase,PIMAGE_NT_HEADERS64 Headers) PURE; 1320 STDMETHOD(ReadTagged)(THIS_ LPGUID Tag,ULONG Offset,PVOID Buffer,ULONG BufferSize,PULONG TotalSize) PURE; 1321 STDMETHOD(StartEnumTagged)(THIS_ PULONG64 Handle) PURE; 1322 STDMETHOD(GetNextTagged)(THIS_ ULONG64 Handle,LPGUID Tag,PULONG Size) PURE; 1323 STDMETHOD(EndEnumTagged)(THIS_ ULONG64 Handle) PURE; 1324 }; 1325 1326 #define DEBUG_EVENT_BREAKPOINT 0x00000001 1327 #define DEBUG_EVENT_EXCEPTION 0x00000002 1328 #define DEBUG_EVENT_CREATE_THREAD 0x00000004 1329 #define DEBUG_EVENT_EXIT_THREAD 0x00000008 1330 #define DEBUG_EVENT_CREATE_PROCESS 0x00000010 1331 #define DEBUG_EVENT_EXIT_PROCESS 0x00000020 1332 #define DEBUG_EVENT_LOAD_MODULE 0x00000040 1333 #define DEBUG_EVENT_UNLOAD_MODULE 0x00000080 1334 #define DEBUG_EVENT_SYSTEM_ERROR 0x00000100 1335 #define DEBUG_EVENT_SESSION_STATUS 0x00000200 1336 #define DEBUG_EVENT_CHANGE_DEBUGGEE_STATE 0x00000400 1337 #define DEBUG_EVENT_CHANGE_ENGINE_STATE 0x00000800 1338 #define DEBUG_EVENT_CHANGE_SYMBOL_STATE 0x00001000 1339 1340 #define DEBUG_SESSION_ACTIVE 0x00000000 1341 1342 #define DEBUG_SESSION_END_SESSION_ACTIVE_TERMINATE 0x00000001 1343 #define DEBUG_SESSION_END_SESSION_ACTIVE_DETACH 0x00000002 1344 #define DEBUG_SESSION_END_SESSION_PASSIVE 0x00000003 1345 #define DEBUG_SESSION_END 0x00000004 1346 #define DEBUG_SESSION_REBOOT 0x00000005 1347 #define DEBUG_SESSION_HIBERNATE 0x00000006 1348 #define DEBUG_SESSION_FAILURE 0x00000007 1349 1350 #define DEBUG_CDS_ALL 0xffffffff 1351 1352 #define DEBUG_CDS_REGISTERS 0x00000001 1353 #define DEBUG_CDS_DATA 0x00000002 1354 1355 #define DEBUG_CES_ALL 0xffffffff 1356 1357 #define DEBUG_CES_CURRENT_THREAD 0x00000001 1358 #define DEBUG_CES_EFFECTIVE_PROCESSOR 0x00000002 1359 #define DEBUG_CES_BREAKPOINTS 0x00000004 1360 #define DEBUG_CES_CODE_LEVEL 0x00000008 1361 #define DEBUG_CES_EXECUTION_STATUS 0x00000010 1362 #define DEBUG_CES_ENGINE_OPTIONS 0x00000020 1363 #define DEBUG_CES_LOG_FILE 0x00000040 1364 #define DEBUG_CES_RADIX 0x00000080 1365 #define DEBUG_CES_EVENT_FILTERS 0x00000100 1366 #define DEBUG_CES_PROCESS_OPTIONS 0x00000200 1367 #define DEBUG_CES_EXTENSIONS 0x00000400 1368 #define DEBUG_CES_SYSTEMS 0x00000800 1369 #define DEBUG_CES_ASSEMBLY_OPTIONS 0x00001000 1370 #define DEBUG_CES_EXPRESSION_SYNTAX 0x00002000 1371 #define DEBUG_CES_TEXT_REPLACEMENTS 0x00004000 1372 1373 #define DEBUG_CSS_ALL 0xffffffff 1374 1375 #define DEBUG_CSS_LOADS 0x00000001 1376 #define DEBUG_CSS_UNLOADS 0x00000002 1377 #define DEBUG_CSS_SCOPE 0x00000004 1378 #define DEBUG_CSS_PATHS 0x00000008 1379 #define DEBUG_CSS_SYMBOL_OPTIONS 0x00000010 1380 #define DEBUG_CSS_TYPE_OPTIONS 0x00000020 1381 1382 #undef INTERFACE 1383 #define INTERFACE IDebugEventCallbacks 1384 DECLARE_INTERFACE_(IDebugEventCallbacks,IUnknown) { 1385 STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE; 1386 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1387 STDMETHOD_(ULONG,Release)(THIS) PURE; 1388 STDMETHOD(GetInterestMask)(THIS_ PULONG Mask) PURE; 1389 STDMETHOD(Breakpoint)(THIS_ PDEBUG_BREAKPOINT Bp) PURE; 1390 STDMETHOD(Exception)(THIS_ PEXCEPTION_RECORD64 Exception,ULONG FirstChance) PURE; 1391 STDMETHOD(CreateThread)(THIS_ ULONG64 Handle,ULONG64 DataOffset,ULONG64 StartOffset) PURE; 1392 STDMETHOD(ExitThread)(THIS_ ULONG ExitCode) PURE; 1393 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; 1394 STDMETHOD(ExitProcess)(THIS_ ULONG ExitCode) PURE; 1395 STDMETHOD(LoadModule)(THIS_ ULONG64 ImageFileHandle,ULONG64 BaseOffset,ULONG ModuleSize,PCSTR ModuleName,PCSTR ImageName,ULONG CheckSum,ULONG TimeDateStamp) PURE; 1396 STDMETHOD(UnloadModule)(THIS_ PCSTR ImageBaseName,ULONG64 BaseOffset) PURE; 1397 STDMETHOD(SystemError)(THIS_ ULONG Error,ULONG Level) PURE; 1398 STDMETHOD(SessionStatus)(THIS_ ULONG Status) PURE; 1399 STDMETHOD(ChangeDebuggeeState)(THIS_ ULONG Flags,ULONG64 Argument) PURE; 1400 STDMETHOD(ChangeEngineState)(THIS_ ULONG Flags,ULONG64 Argument) PURE; 1401 STDMETHOD(ChangeSymbolState)(THIS_ ULONG Flags,ULONG64 Argument) PURE; 1402 }; 1403 1404 #undef INTERFACE 1405 #define INTERFACE IDebugInputCallbacks 1406 DECLARE_INTERFACE_(IDebugInputCallbacks,IUnknown) { 1407 STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE; 1408 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1409 STDMETHOD_(ULONG,Release)(THIS) PURE; 1410 STDMETHOD(StartInput)(THIS_ ULONG BufferSize) PURE; 1411 STDMETHOD(EndInput)(THIS) PURE; 1412 }; 1413 1414 #undef INTERFACE 1415 #define INTERFACE IDebugOutputCallbacks 1416 DECLARE_INTERFACE_(IDebugOutputCallbacks,IUnknown) { 1417 STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE; 1418 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1419 STDMETHOD_(ULONG,Release)(THIS) PURE; 1420 STDMETHOD(Output)(THIS_ ULONG Mask,PCSTR Text) PURE; 1421 }; 1422 1423 #define DEBUG_REGISTER_SUB_REGISTER 0x00000001 1424 1425 #define DEBUG_REGISTERS_DEFAULT 0x00000000 1426 #define DEBUG_REGISTERS_INT32 0x00000001 1427 #define DEBUG_REGISTERS_INT64 0x00000002 1428 #define DEBUG_REGISTERS_FLOAT 0x00000004 1429 #define DEBUG_REGISTERS_ALL 0x00000007 1430 1431 typedef struct _DEBUG_REGISTER_DESCRIPTION { 1432 ULONG Type; 1433 ULONG Flags; 1434 ULONG SubregMaster; 1435 ULONG SubregLength; 1436 ULONG64 SubregMask; 1437 ULONG SubregShift; 1438 ULONG Reserved0; 1439 } DEBUG_REGISTER_DESCRIPTION,*PDEBUG_REGISTER_DESCRIPTION; 1440 1441 #undef INTERFACE 1442 #define INTERFACE IDebugRegisters 1443 DECLARE_INTERFACE_(IDebugRegisters,IUnknown) { 1444 STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE; 1445 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1446 STDMETHOD_(ULONG,Release)(THIS) PURE; 1447 STDMETHOD(GetNumberRegisters)(THIS_ PULONG Number) PURE; 1448 STDMETHOD(GetDescription)(THIS_ ULONG Register,PSTR NameBuffer,ULONG NameBufferSize,PULONG NameSize,PDEBUG_REGISTER_DESCRIPTION Desc) PURE; 1449 STDMETHOD(GetIndexByName)(THIS_ PCSTR Name,PULONG Index) PURE; 1450 STDMETHOD(GetValue)(THIS_ ULONG Register,PDEBUG_VALUE Value) PURE; 1451 STDMETHOD(SetValue)(THIS_ ULONG Register,PDEBUG_VALUE Value) PURE; 1452 STDMETHOD(GetValues)(THIS_ ULONG Count,PULONG Indices,ULONG Start,PDEBUG_VALUE Values) PURE; 1453 STDMETHOD(SetValues)(THIS_ ULONG Count,PULONG Indices,ULONG Start,PDEBUG_VALUE Values) PURE; 1454 STDMETHOD(OutputRegisters)(THIS_ ULONG OutputControl,ULONG Flags) PURE; 1455 STDMETHOD(GetInstructionOffset)(THIS_ PULONG64 Offset) PURE; 1456 STDMETHOD(GetStackOffset)(THIS_ PULONG64 Offset) PURE; 1457 STDMETHOD(GetFrameOffset)(THIS_ PULONG64 Offset) PURE; 1458 }; 1459 1460 #define DEBUG_OUTPUT_SYMBOLS_DEFAULT 0x00000000 1461 #define DEBUG_OUTPUT_SYMBOLS_NO_NAMES 0x00000001 1462 #define DEBUG_OUTPUT_SYMBOLS_NO_OFFSETS 0x00000002 1463 #define DEBUG_OUTPUT_SYMBOLS_NO_VALUES 0x00000004 1464 #define DEBUG_OUTPUT_SYMBOLS_NO_TYPES 0x00000010 1465 1466 #define DEBUG_OUTPUT_NAME_END "**NAME**" 1467 #define DEBUG_OUTPUT_OFFSET_END "**OFF**" 1468 #define DEBUG_OUTPUT_VALUE_END "**VALUE**" 1469 #define DEBUG_OUTPUT_TYPE_END "**TYPE**" 1470 1471 #define DEBUG_SYMBOL_EXPANSION_LEVEL_MASK 0x0000000f 1472 #define DEBUG_SYMBOL_EXPANDED 0x00000010 1473 #define DEBUG_SYMBOL_READ_ONLY 0x00000020 1474 #define DEBUG_SYMBOL_IS_ARRAY 0x00000040 1475 #define DEBUG_SYMBOL_IS_FLOAT 0x00000080 1476 #define DEBUG_SYMBOL_IS_ARGUMENT 0x00000100 1477 #define DEBUG_SYMBOL_IS_LOCAL 0x00000200 1478 1479 typedef struct _DEBUG_SYMBOL_PARAMETERS { 1480 ULONG64 Module; 1481 ULONG TypeId; 1482 ULONG ParentSymbol; 1483 ULONG SubElements; 1484 ULONG Flags; 1485 ULONG64 Reserved; 1486 } DEBUG_SYMBOL_PARAMETERS,*PDEBUG_SYMBOL_PARAMETERS; 1487 1488 #undef INTERFACE 1489 #define INTERFACE IDebugSymbolGroup 1490 DECLARE_INTERFACE_(IDebugSymbolGroup,IUnknown) { 1491 STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE; 1492 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1493 STDMETHOD_(ULONG,Release)(THIS) PURE; 1494 STDMETHOD(GetNumberSymbols)(THIS_ PULONG Number) PURE; 1495 STDMETHOD(AddSymbol)(THIS_ PCSTR Name,PULONG Index) PURE; 1496 STDMETHOD(RemoveSymbolByName)(THIS_ PCSTR Name) PURE; 1497 STDMETHOD(RemoveSymbolByIndex)(THIS_ ULONG Index) PURE; 1498 STDMETHOD(GetSymbolName)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG NameSize) PURE; 1499 STDMETHOD(GetSymbolParameters)(THIS_ ULONG Start,ULONG Count,PDEBUG_SYMBOL_PARAMETERS Params) PURE; 1500 STDMETHOD(ExpandSymbol)(THIS_ ULONG Index,WINBOOL Expand) PURE; 1501 STDMETHOD(OutputSymbols)(THIS_ ULONG OutputControl,ULONG Flags,ULONG Start,ULONG Count) PURE; 1502 STDMETHOD(WriteSymbol)(THIS_ ULONG Index,PCSTR Value) PURE; 1503 STDMETHOD(OutputAsType)(THIS_ ULONG Index,PCSTR Type) PURE; 1504 }; 1505 1506 #define DEBUG_MODULE_LOADED 0x00000000 1507 #define DEBUG_MODULE_UNLOADED 0x00000001 1508 #define DEBUG_MODULE_USER_MODE 0x00000002 1509 #define DEBUG_MODULE_SYM_BAD_CHECKSUM 0x00010000 1510 1511 #define DEBUG_SYMTYPE_NONE 0 1512 #define DEBUG_SYMTYPE_COFF 1 1513 #define DEBUG_SYMTYPE_CODEVIEW 2 1514 #define DEBUG_SYMTYPE_PDB 3 1515 #define DEBUG_SYMTYPE_EXPORT 4 1516 #define DEBUG_SYMTYPE_DEFERRED 5 1517 #define DEBUG_SYMTYPE_SYM 6 1518 #define DEBUG_SYMTYPE_DIA 7 1519 1520 typedef struct _DEBUG_MODULE_PARAMETERS { 1521 ULONG64 Base; 1522 ULONG Size; 1523 ULONG TimeDateStamp; 1524 ULONG Checksum; 1525 ULONG Flags; 1526 ULONG SymbolType; 1527 ULONG ImageNameSize; 1528 ULONG ModuleNameSize; 1529 ULONG LoadedImageNameSize; 1530 ULONG SymbolFileNameSize; 1531 ULONG MappedImageNameSize; 1532 ULONG64 Reserved[2]; 1533 } DEBUG_MODULE_PARAMETERS,*PDEBUG_MODULE_PARAMETERS; 1534 1535 #define DEBUG_SCOPE_GROUP_ARGUMENTS 0x00000001 1536 #define DEBUG_SCOPE_GROUP_LOCALS 0x00000002 1537 #define DEBUG_SCOPE_GROUP_ALL 0x00000003 1538 1539 #define DEBUG_OUTTYPE_DEFAULT 0x00000000 1540 #define DEBUG_OUTTYPE_NO_INDENT 0x00000001 1541 #define DEBUG_OUTTYPE_NO_OFFSET 0x00000002 1542 #define DEBUG_OUTTYPE_VERBOSE 0x00000004 1543 #define DEBUG_OUTTYPE_COMPACT_OUTPUT 0x00000008 1544 #define DEBUG_OUTTYPE_RECURSION_LEVEL(Max) (((Max) & 0xf) << 4) 1545 #define DEBUG_OUTTYPE_ADDRESS_OF_FIELD 0x00010000 1546 #define DEBUG_OUTTYPE_ADDRESS_AT_END 0x00020000 1547 #define DEBUG_OUTTYPE_BLOCK_RECURSE 0x00200000 1548 1549 #define DEBUG_FIND_SOURCE_DEFAULT 0x00000000 1550 #define DEBUG_FIND_SOURCE_FULL_PATH 0x00000001 1551 #define DEBUG_FIND_SOURCE_BEST_MATCH 0x00000002 1552 1553 #define DEBUG_INVALID_OFFSET ((ULONG64)-1) 1554 1555 #undef INTERFACE 1556 #define INTERFACE IDebugSymbols 1557 DECLARE_INTERFACE_(IDebugSymbols,IUnknown) { 1558 STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE; 1559 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1560 STDMETHOD_(ULONG,Release)(THIS) PURE; 1561 STDMETHOD(GetSymbolOptions)(THIS_ PULONG Options) PURE; 1562 STDMETHOD(AddSymbolOptions)(THIS_ ULONG Options) PURE; 1563 STDMETHOD(RemoveSymbolOptions)(THIS_ ULONG Options) PURE; 1564 STDMETHOD(SetSymbolOptions)(THIS_ ULONG Options) PURE; 1565 STDMETHOD(GetNameByOffset)(THIS_ ULONG64 Offset,PSTR NameBuffer,ULONG NameBufferSize,PULONG NameSize,PULONG64 Displacement) PURE; 1566 STDMETHOD(GetOffsetByName)(THIS_ PCSTR Symbol,PULONG64 Offset) PURE; 1567 STDMETHOD(GetNearNameByOffset)(THIS_ ULONG64 Offset,LONG Delta,PSTR NameBuffer,ULONG NameBufferSize,PULONG NameSize,PULONG64 Displacement) PURE; 1568 STDMETHOD(GetLineByOffset)(THIS_ ULONG64 Offset,PULONG Line,PSTR FileBuffer,ULONG FileBufferSize,PULONG FileSize,PULONG64 Displacement) PURE; 1569 STDMETHOD(GetOffsetByLine)(THIS_ ULONG Line,PCSTR File,PULONG64 Offset) PURE; 1570 STDMETHOD(GetNumberModules)(THIS_ PULONG Loaded,PULONG Unloaded) PURE; 1571 STDMETHOD(GetModuleByIndex)(THIS_ ULONG Index,PULONG64 Base) PURE; 1572 STDMETHOD(GetModuleByModuleName)(THIS_ PCSTR Name,ULONG StartIndex,PULONG Index,PULONG64 Base) PURE; 1573 STDMETHOD(GetModuleByOffset)(THIS_ ULONG64 Offset,ULONG StartIndex,PULONG Index,PULONG64 Base) PURE; 1574 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; 1575 STDMETHOD(GetModuleParameters)(THIS_ ULONG Count,PULONG64 Bases,ULONG Start,PDEBUG_MODULE_PARAMETERS Params) PURE; 1576 STDMETHOD(GetSymbolModule)(THIS_ PCSTR Symbol,PULONG64 Base) PURE; 1577 STDMETHOD(GetTypeName)(THIS_ ULONG64 Module,ULONG TypeId,PSTR NameBuffer,ULONG NameBufferSize,PULONG NameSize) PURE; 1578 STDMETHOD(GetTypeId)(THIS_ ULONG64 Module,PCSTR Name,PULONG TypeId) PURE; 1579 STDMETHOD(GetTypeSize)(THIS_ ULONG64 Module,ULONG TypeId,PULONG Size) PURE; 1580 STDMETHOD(GetFieldOffset)(THIS_ ULONG64 Module,ULONG TypeId,PCSTR Field,PULONG Offset) PURE; 1581 STDMETHOD(GetSymbolTypeId)(THIS_ PCSTR Symbol,PULONG TypeId,PULONG64 Module) PURE; 1582 STDMETHOD(GetOffsetTypeId)(THIS_ ULONG64 Offset,PULONG TypeId,PULONG64 Module) PURE; 1583 STDMETHOD(ReadTypedDataVirtual)(THIS_ ULONG64 Offset,ULONG64 Module,ULONG TypeId,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE; 1584 STDMETHOD(WriteTypedDataVirtual)(THIS_ ULONG64 Offset,ULONG64 Module,ULONG TypeId,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE; 1585 STDMETHOD(OutputTypedDataVirtual)(THIS_ ULONG OutputControl,ULONG64 Offset,ULONG64 Module,ULONG TypeId,ULONG Flags) PURE; 1586 STDMETHOD(ReadTypedDataPhysical)(THIS_ ULONG64 Offset,ULONG64 Module,ULONG TypeId,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE; 1587 STDMETHOD(WriteTypedDataPhysical)(THIS_ ULONG64 Offset,ULONG64 Module,ULONG TypeId,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE; 1588 STDMETHOD(OutputTypedDataPhysical)(THIS_ ULONG OutputControl,ULONG64 Offset,ULONG64 Module,ULONG TypeId,ULONG Flags) PURE; 1589 STDMETHOD(GetScope)(THIS_ PULONG64 InstructionOffset,PDEBUG_STACK_FRAME ScopeFrame,PVOID ScopeContext,ULONG ScopeContextSize) PURE; 1590 STDMETHOD(SetScope)(THIS_ ULONG64 InstructionOffset,PDEBUG_STACK_FRAME ScopeFrame,PVOID ScopeContext,ULONG ScopeContextSize) PURE; 1591 STDMETHOD(ResetScope)(THIS) PURE; 1592 STDMETHOD(GetScopeSymbolGroup)(THIS_ ULONG Flags,PDEBUG_SYMBOL_GROUP Update,PDEBUG_SYMBOL_GROUP *Symbols) PURE; 1593 STDMETHOD(CreateSymbolGroup)(THIS_ PDEBUG_SYMBOL_GROUP *Group) PURE; 1594 STDMETHOD(StartSymbolMatch)(THIS_ PCSTR Pattern,PULONG64 Handle) PURE; 1595 STDMETHOD(GetNextSymbolMatch)(THIS_ ULONG64 Handle,PSTR Buffer,ULONG BufferSize,PULONG MatchSize,PULONG64 Offset) PURE; 1596 STDMETHOD(EndSymbolMatch)(THIS_ ULONG64 Handle) PURE; 1597 STDMETHOD(Reload)(THIS_ PCSTR Module) PURE; 1598 STDMETHOD(GetSymbolPath)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG PathSize) PURE; 1599 STDMETHOD(SetSymbolPath)(THIS_ PCSTR Path) PURE; 1600 STDMETHOD(AppendSymbolPath)(THIS_ PCSTR Addition) PURE; 1601 STDMETHOD(GetImagePath)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG PathSize) PURE; 1602 STDMETHOD(SetImagePath)(THIS_ PCSTR Path) PURE; 1603 STDMETHOD(AppendImagePath)(THIS_ PCSTR Addition) PURE; 1604 STDMETHOD(GetSourcePath)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG PathSize) PURE; 1605 STDMETHOD(GetSourcePathElement)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG ElementSize) PURE; 1606 STDMETHOD(SetSourcePath)(THIS_ PCSTR Path) PURE; 1607 STDMETHOD(AppendSourcePath)(THIS_ PCSTR Addition) PURE; 1608 STDMETHOD(FindSourceFile)(THIS_ ULONG StartElement,PCSTR File,ULONG Flags,PULONG FoundElement,PSTR Buffer,ULONG BufferSize,PULONG FoundSize) PURE; 1609 STDMETHOD(GetSourceFileLineOffsets)(THIS_ PCSTR File,PULONG64 Buffer,ULONG BufferLines,PULONG FileLines) PURE; 1610 }; 1611 1612 #define DEBUG_MODNAME_IMAGE 0x00000000 1613 #define DEBUG_MODNAME_MODULE 0x00000001 1614 #define DEBUG_MODNAME_LOADED_IMAGE 0x00000002 1615 #define DEBUG_MODNAME_SYMBOL_FILE 0x00000003 1616 #define DEBUG_MODNAME_MAPPED_IMAGE 0x00000004 1617 1618 #define DEBUG_TYPEOPTS_UNICODE_DISPLAY 0x00000001 1619 #define DEBUG_TYPEOPTS_LONGSTATUS_DISPLAY 0x00000002 1620 #define DEBUG_TYPEOPTS_FORCERADIX_OUTPUT 0x00000004 1621 1622 #undef INTERFACE 1623 #define INTERFACE IDebugSymbols2 1624 DECLARE_INTERFACE_(IDebugSymbols2,IUnknown) { 1625 STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE; 1626 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1627 STDMETHOD_(ULONG,Release)(THIS) PURE; 1628 STDMETHOD(GetSymbolOptions)(THIS_ PULONG Options) PURE; 1629 STDMETHOD(AddSymbolOptions)(THIS_ ULONG Options) PURE; 1630 STDMETHOD(RemoveSymbolOptions)(THIS_ ULONG Options) PURE; 1631 STDMETHOD(SetSymbolOptions)(THIS_ ULONG Options) PURE; 1632 STDMETHOD(GetNameByOffset)(THIS_ ULONG64 Offset,PSTR NameBuffer,ULONG NameBufferSize,PULONG NameSize,PULONG64 Displacement) PURE; 1633 STDMETHOD(GetOffsetByName)(THIS_ PCSTR Symbol,PULONG64 Offset) PURE; 1634 STDMETHOD(GetNearNameByOffset)(THIS_ ULONG64 Offset,LONG Delta,PSTR NameBuffer,ULONG NameBufferSize,PULONG NameSize,PULONG64 Displacement) PURE; 1635 STDMETHOD(GetLineByOffset)(THIS_ ULONG64 Offset,PULONG Line,PSTR FileBuffer,ULONG FileBufferSize,PULONG FileSize,PULONG64 Displacement) PURE; 1636 STDMETHOD(GetOffsetByLine)(THIS_ ULONG Line,PCSTR File,PULONG64 Offset) PURE; 1637 STDMETHOD(GetNumberModules)(THIS_ PULONG Loaded,PULONG Unloaded) PURE; 1638 STDMETHOD(GetModuleByIndex)(THIS_ ULONG Index,PULONG64 Base) PURE; 1639 STDMETHOD(GetModuleByModuleName)(THIS_ PCSTR Name,ULONG StartIndex,PULONG Index,PULONG64 Base) PURE; 1640 STDMETHOD(GetModuleByOffset)(THIS_ ULONG64 Offset,ULONG StartIndex,PULONG Index,PULONG64 Base) PURE; 1641 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; 1642 STDMETHOD(GetModuleParameters)(THIS_ ULONG Count,PULONG64 Bases,ULONG Start,PDEBUG_MODULE_PARAMETERS Params) PURE; 1643 STDMETHOD(GetSymbolModule)(THIS_ PCSTR Symbol,PULONG64 Base) PURE; 1644 STDMETHOD(GetTypeName)(THIS_ ULONG64 Module,ULONG TypeId,PSTR NameBuffer,ULONG NameBufferSize,PULONG NameSize) PURE; 1645 STDMETHOD(GetTypeId)(THIS_ ULONG64 Module,PCSTR Name,PULONG TypeId) PURE; 1646 STDMETHOD(GetTypeSize)(THIS_ ULONG64 Module,ULONG TypeId,PULONG Size) PURE; 1647 STDMETHOD(GetFieldOffset)(THIS_ ULONG64 Module,ULONG TypeId,PCSTR Field,PULONG Offset) PURE; 1648 STDMETHOD(GetSymbolTypeId)(THIS_ PCSTR Symbol,PULONG TypeId,PULONG64 Module) PURE; 1649 STDMETHOD(GetOffsetTypeId)(THIS_ ULONG64 Offset,PULONG TypeId,PULONG64 Module) PURE; 1650 STDMETHOD(ReadTypedDataVirtual)(THIS_ ULONG64 Offset,ULONG64 Module,ULONG TypeId,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE; 1651 STDMETHOD(WriteTypedDataVirtual)(THIS_ ULONG64 Offset,ULONG64 Module,ULONG TypeId,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE; 1652 STDMETHOD(OutputTypedDataVirtual)(THIS_ ULONG OutputControl,ULONG64 Offset,ULONG64 Module,ULONG TypeId,ULONG Flags) PURE; 1653 STDMETHOD(ReadTypedDataPhysical)(THIS_ ULONG64 Offset,ULONG64 Module,ULONG TypeId,PVOID Buffer,ULONG BufferSize,PULONG BytesRead) PURE; 1654 STDMETHOD(WriteTypedDataPhysical)(THIS_ ULONG64 Offset,ULONG64 Module,ULONG TypeId,PVOID Buffer,ULONG BufferSize,PULONG BytesWritten) PURE; 1655 STDMETHOD(OutputTypedDataPhysical)(THIS_ ULONG OutputControl,ULONG64 Offset,ULONG64 Module,ULONG TypeId,ULONG Flags) PURE; 1656 STDMETHOD(GetScope)(THIS_ PULONG64 InstructionOffset,PDEBUG_STACK_FRAME ScopeFrame,PVOID ScopeContext,ULONG ScopeContextSize) PURE; 1657 STDMETHOD(SetScope)(THIS_ ULONG64 InstructionOffset,PDEBUG_STACK_FRAME ScopeFrame,PVOID ScopeContext,ULONG ScopeContextSize) PURE; 1658 STDMETHOD(ResetScope)(THIS) PURE; 1659 STDMETHOD(GetScopeSymbolGroup)(THIS_ ULONG Flags,PDEBUG_SYMBOL_GROUP Update,PDEBUG_SYMBOL_GROUP *Symbols) PURE; 1660 STDMETHOD(CreateSymbolGroup)(THIS_ PDEBUG_SYMBOL_GROUP *Group) PURE; 1661 STDMETHOD(StartSymbolMatch)(THIS_ PCSTR Pattern,PULONG64 Handle) PURE; 1662 STDMETHOD(GetNextSymbolMatch)(THIS_ ULONG64 Handle,PSTR Buffer,ULONG BufferSize,PULONG MatchSize,PULONG64 Offset) PURE; 1663 STDMETHOD(EndSymbolMatch)(THIS_ ULONG64 Handle) PURE; 1664 STDMETHOD(Reload)(THIS_ PCSTR Module) PURE; 1665 STDMETHOD(GetSymbolPath)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG PathSize) PURE; 1666 STDMETHOD(SetSymbolPath)(THIS_ PCSTR Path) PURE; 1667 STDMETHOD(AppendSymbolPath)(THIS_ PCSTR Addition) PURE; 1668 STDMETHOD(GetImagePath)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG PathSize) PURE; 1669 STDMETHOD(SetImagePath)(THIS_ PCSTR Path) PURE; 1670 STDMETHOD(AppendImagePath)(THIS_ PCSTR Addition) PURE; 1671 STDMETHOD(GetSourcePath)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG PathSize) PURE; 1672 STDMETHOD(GetSourcePathElement)(THIS_ ULONG Index,PSTR Buffer,ULONG BufferSize,PULONG ElementSize) PURE; 1673 STDMETHOD(SetSourcePath)(THIS_ PCSTR Path) PURE; 1674 STDMETHOD(AppendSourcePath)(THIS_ PCSTR Addition) PURE; 1675 STDMETHOD(FindSourceFile)(THIS_ ULONG StartElement,PCSTR File,ULONG Flags,PULONG FoundElement,PSTR Buffer,ULONG BufferSize,PULONG FoundSize) PURE; 1676 STDMETHOD(GetSourceFileLineOffsets)(THIS_ PCSTR File,PULONG64 Buffer,ULONG BufferLines,PULONG FileLines) PURE; 1677 STDMETHOD(GetModuleVersionInformation)(THIS_ ULONG Index,ULONG64 Base,PCSTR Item,PVOID Buffer,ULONG BufferSize,PULONG VerInfoSize) PURE; 1678 STDMETHOD(GetModuleNameString)(THIS_ ULONG Which,ULONG Index,ULONG64 Base,PSTR Buffer,ULONG BufferSize,PULONG NameSize) PURE; 1679 STDMETHOD(GetConstantName)(THIS_ ULONG64 Module,ULONG TypeId,ULONG64 Value,PSTR NameBuffer,ULONG NameBufferSize,PULONG NameSize) PURE; 1680 STDMETHOD(GetFieldName)(THIS_ ULONG64 Module,ULONG TypeId,ULONG FieldIndex,PSTR NameBuffer,ULONG NameBufferSize,PULONG NameSize) PURE; 1681 STDMETHOD(GetTypeOptions)(THIS_ PULONG Options) PURE; 1682 STDMETHOD(AddTypeOptions)(THIS_ ULONG Options) PURE; 1683 STDMETHOD(RemoveTypeOptions)(THIS_ ULONG Options) PURE; 1684 STDMETHOD(SetTypeOptions)(THIS_ ULONG Options) PURE; 1685 }; 1686 1687 #undef INTERFACE 1688 #define INTERFACE IDebugSystemObjects 1689 DECLARE_INTERFACE_(IDebugSystemObjects,IUnknown) { 1690 STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE; 1691 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1692 STDMETHOD_(ULONG,Release)(THIS) PURE; 1693 STDMETHOD(GetEventThread)(THIS_ PULONG Id) PURE; 1694 STDMETHOD(GetEventProcess)(THIS_ PULONG Id) PURE; 1695 STDMETHOD(GetCurrentThreadId)(THIS_ PULONG Id) PURE; 1696 STDMETHOD(SetCurrentThreadId)(THIS_ ULONG Id) PURE; 1697 STDMETHOD(GetCurrentProcessId)(THIS_ PULONG Id) PURE; 1698 STDMETHOD(SetCurrentProcessId)(THIS_ ULONG Id) PURE; 1699 STDMETHOD(GetNumberThreads)(THIS_ PULONG Number) PURE; 1700 STDMETHOD(GetTotalNumberThreads)(THIS_ PULONG Total,PULONG LargestProcess) PURE; 1701 STDMETHOD(GetThreadIdsByIndex)(THIS_ ULONG Start,ULONG Count,PULONG Ids,PULONG SysIds) PURE; 1702 STDMETHOD(GetThreadIdByProcessor)(THIS_ ULONG Processor,PULONG Id) PURE; 1703 STDMETHOD(GetCurrentThreadDataOffset)(THIS_ PULONG64 Offset) PURE; 1704 STDMETHOD(GetThreadIdByDataOffset)(THIS_ ULONG64 Offset,PULONG Id) PURE; 1705 STDMETHOD(GetCurrentThreadTeb)(THIS_ PULONG64 Offset) PURE; 1706 STDMETHOD(GetThreadIdByTeb)(THIS_ ULONG64 Offset,PULONG Id) PURE; 1707 STDMETHOD(GetCurrentThreadSystemId)(THIS_ PULONG SysId) PURE; 1708 STDMETHOD(GetThreadIdBySystemId)(THIS_ ULONG SysId,PULONG Id) PURE; 1709 STDMETHOD(GetCurrentThreadHandle)(THIS_ PULONG64 Handle) PURE; 1710 STDMETHOD(GetThreadIdByHandle)(THIS_ ULONG64 Handle,PULONG Id) PURE; 1711 STDMETHOD(GetNumberProcesses)(THIS_ PULONG Number) PURE; 1712 STDMETHOD(GetProcessIdsByIndex)(THIS_ ULONG Start,ULONG Count,PULONG Ids,PULONG SysIds) PURE; 1713 STDMETHOD(GetCurrentProcessDataOffset)(THIS_ PULONG64 Offset) PURE; 1714 STDMETHOD(GetProcessIdByDataOffset)(THIS_ ULONG64 Offset,PULONG Id) PURE; 1715 STDMETHOD(GetCurrentProcessPeb)(THIS_ PULONG64 Offset) PURE; 1716 STDMETHOD(GetProcessIdByPeb)(THIS_ ULONG64 Offset,PULONG Id) PURE; 1717 STDMETHOD(GetCurrentProcessSystemId)(THIS_ PULONG SysId) PURE; 1718 STDMETHOD(GetProcessIdBySystemId)(THIS_ ULONG SysId,PULONG Id) PURE; 1719 STDMETHOD(GetCurrentProcessHandle)(THIS_ PULONG64 Handle) PURE; 1720 STDMETHOD(GetProcessIdByHandle)(THIS_ ULONG64 Handle,PULONG Id) PURE; 1721 STDMETHOD(GetCurrentProcessExecutableName)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG ExeSize) PURE; 1722 }; 1723 1724 #undef INTERFACE 1725 #define INTERFACE IDebugSystemObjects2 1726 DECLARE_INTERFACE_(IDebugSystemObjects2,IUnknown) { 1727 STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE; 1728 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1729 STDMETHOD_(ULONG,Release)(THIS) PURE; 1730 STDMETHOD(GetEventThread)(THIS_ PULONG Id) PURE; 1731 STDMETHOD(GetEventProcess)(THIS_ PULONG Id) PURE; 1732 STDMETHOD(GetCurrentThreadId)(THIS_ PULONG Id) PURE; 1733 STDMETHOD(SetCurrentThreadId)(THIS_ ULONG Id) PURE; 1734 STDMETHOD(GetCurrentProcessId)(THIS_ PULONG Id) PURE; 1735 STDMETHOD(SetCurrentProcessId)(THIS_ ULONG Id) PURE; 1736 STDMETHOD(GetNumberThreads)(THIS_ PULONG Number) PURE; 1737 STDMETHOD(GetTotalNumberThreads)(THIS_ PULONG Total,PULONG LargestProcess) PURE; 1738 STDMETHOD(GetThreadIdsByIndex)(THIS_ ULONG Start,ULONG Count,PULONG Ids,PULONG SysIds) PURE; 1739 STDMETHOD(GetThreadIdByProcessor)(THIS_ ULONG Processor,PULONG Id) PURE; 1740 STDMETHOD(GetCurrentThreadDataOffset)(THIS_ PULONG64 Offset) PURE; 1741 STDMETHOD(GetThreadIdByDataOffset)(THIS_ ULONG64 Offset,PULONG Id) PURE; 1742 STDMETHOD(GetCurrentThreadTeb)(THIS_ PULONG64 Offset) PURE; 1743 STDMETHOD(GetThreadIdByTeb)(THIS_ ULONG64 Offset,PULONG Id) PURE; 1744 STDMETHOD(GetCurrentThreadSystemId)(THIS_ PULONG SysId) PURE; 1745 STDMETHOD(GetThreadIdBySystemId)(THIS_ ULONG SysId,PULONG Id) PURE; 1746 STDMETHOD(GetCurrentThreadHandle)(THIS_ PULONG64 Handle) PURE; 1747 STDMETHOD(GetThreadIdByHandle)(THIS_ ULONG64 Handle,PULONG Id) PURE; 1748 STDMETHOD(GetNumberProcesses)(THIS_ PULONG Number) PURE; 1749 STDMETHOD(GetProcessIdsByIndex)(THIS_ ULONG Start,ULONG Count,PULONG Ids,PULONG SysIds) PURE; 1750 STDMETHOD(GetCurrentProcessDataOffset)(THIS_ PULONG64 Offset) PURE; 1751 STDMETHOD(GetProcessIdByDataOffset)(THIS_ ULONG64 Offset,PULONG Id) PURE; 1752 STDMETHOD(GetCurrentProcessPeb)(THIS_ PULONG64 Offset) PURE; 1753 STDMETHOD(GetProcessIdByPeb)(THIS_ ULONG64 Offset,PULONG Id) PURE; 1754 STDMETHOD(GetCurrentProcessSystemId)(THIS_ PULONG SysId) PURE; 1755 STDMETHOD(GetProcessIdBySystemId)(THIS_ ULONG SysId,PULONG Id) PURE; 1756 STDMETHOD(GetCurrentProcessHandle)(THIS_ PULONG64 Handle) PURE; 1757 STDMETHOD(GetProcessIdByHandle)(THIS_ ULONG64 Handle,PULONG Id) PURE; 1758 STDMETHOD(GetCurrentProcessExecutableName)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG ExeSize) PURE; 1759 STDMETHOD(GetCurrentProcessUpTime)(THIS_ PULONG UpTime) PURE; 1760 STDMETHOD(GetImplicitThreadDataOffset)(THIS_ PULONG64 Offset) PURE; 1761 STDMETHOD(SetImplicitThreadDataOffset)(THIS_ ULONG64 Offset) PURE; 1762 STDMETHOD(GetImplicitProcessDataOffset)(THIS_ PULONG64 Offset) PURE; 1763 STDMETHOD(SetImplicitProcessDataOffset)(THIS_ ULONG64 Offset) PURE; 1764 }; 1765 1766 #undef INTERFACE 1767 #define INTERFACE IDebugSystemObjects3 1768 DECLARE_INTERFACE_(IDebugSystemObjects3,IUnknown) { 1769 STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) PURE; 1770 STDMETHOD_(ULONG,AddRef)(THIS) PURE; 1771 STDMETHOD_(ULONG,Release)(THIS) PURE; 1772 STDMETHOD(GetEventThread)(THIS_ PULONG Id) PURE; 1773 STDMETHOD(GetEventProcess)(THIS_ PULONG Id) PURE; 1774 STDMETHOD(GetCurrentThreadId)(THIS_ PULONG Id) PURE; 1775 STDMETHOD(SetCurrentThreadId)(THIS_ ULONG Id) PURE; 1776 STDMETHOD(GetCurrentProcessId)(THIS_ PULONG Id) PURE; 1777 STDMETHOD(SetCurrentProcessId)(THIS_ ULONG Id) PURE; 1778 STDMETHOD(GetNumberThreads)(THIS_ PULONG Number) PURE; 1779 STDMETHOD(GetTotalNumberThreads)(THIS_ PULONG Total,PULONG LargestProcess) PURE; 1780 STDMETHOD(GetThreadIdsByIndex)(THIS_ ULONG Start,ULONG Count,PULONG Ids,PULONG SysIds) PURE; 1781 STDMETHOD(GetThreadIdByProcessor)(THIS_ ULONG Processor,PULONG Id) PURE; 1782 STDMETHOD(GetCurrentThreadDataOffset)(THIS_ PULONG64 Offset) PURE; 1783 STDMETHOD(GetThreadIdByDataOffset)(THIS_ ULONG64 Offset,PULONG Id) PURE; 1784 STDMETHOD(GetCurrentThreadTeb)(THIS_ PULONG64 Offset) PURE; 1785 STDMETHOD(GetThreadIdByTeb)(THIS_ ULONG64 Offset,PULONG Id) PURE; 1786 STDMETHOD(GetCurrentThreadSystemId)(THIS_ PULONG SysId) PURE; 1787 STDMETHOD(GetThreadIdBySystemId)(THIS_ ULONG SysId,PULONG Id) PURE; 1788 STDMETHOD(GetCurrentThreadHandle)(THIS_ PULONG64 Handle) PURE; 1789 STDMETHOD(GetThreadIdByHandle)(THIS_ ULONG64 Handle,PULONG Id) PURE; 1790 STDMETHOD(GetNumberProcesses)(THIS_ PULONG Number) PURE; 1791 STDMETHOD(GetProcessIdsByIndex)(THIS_ ULONG Start,ULONG Count,PULONG Ids,PULONG SysIds) PURE; 1792 STDMETHOD(GetCurrentProcessDataOffset)(THIS_ PULONG64 Offset) PURE; 1793 STDMETHOD(GetProcessIdByDataOffset)(THIS_ ULONG64 Offset,PULONG Id) PURE; 1794 STDMETHOD(GetCurrentProcessPeb)(THIS_ PULONG64 Offset) PURE; 1795 STDMETHOD(GetProcessIdByPeb)(THIS_ ULONG64 Offset,PULONG Id) PURE; 1796 STDMETHOD(GetCurrentProcessSystemId)(THIS_ PULONG SysId) PURE; 1797 STDMETHOD(GetProcessIdBySystemId)(THIS_ ULONG SysId,PULONG Id) PURE; 1798 STDMETHOD(GetCurrentProcessHandle)(THIS_ PULONG64 Handle) PURE; 1799 STDMETHOD(GetProcessIdByHandle)(THIS_ ULONG64 Handle,PULONG Id) PURE; 1800 STDMETHOD(GetCurrentProcessExecutableName)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG ExeSize) PURE; 1801 STDMETHOD(GetCurrentProcessUpTime)(THIS_ PULONG UpTime) PURE; 1802 STDMETHOD(GetImplicitThreadDataOffset)(THIS_ PULONG64 Offset) PURE; 1803 STDMETHOD(SetImplicitThreadDataOffset)(THIS_ ULONG64 Offset) PURE; 1804 STDMETHOD(GetImplicitProcessDataOffset)(THIS_ PULONG64 Offset) PURE; 1805 STDMETHOD(SetImplicitProcessDataOffset)(THIS_ ULONG64 Offset) PURE; 1806 STDMETHOD(GetEventSystem)(THIS_ PULONG Id) PURE; 1807 STDMETHOD(GetCurrentSystemId)(THIS_ PULONG Id) PURE; 1808 STDMETHOD(SetCurrentSystemId)(THIS_ ULONG Id) PURE; 1809 STDMETHOD(GetNumberSystems)(THIS_ PULONG Number) PURE; 1810 STDMETHOD(GetSystemIdsByIndex)(THIS_ ULONG Start,ULONG Count,PULONG Ids) PURE; 1811 STDMETHOD(GetTotalNumberThreadsAndProcesses)(THIS_ PULONG TotalThreads,PULONG TotalProcesses,PULONG LargestProcessThreads,PULONG LargestSystemThreads,PULONG LargestSystemProcesses) PURE; 1812 STDMETHOD(GetCurrentSystemServer)(THIS_ PULONG64 Server) PURE; 1813 STDMETHOD(GetSystemByServer)(THIS_ ULONG64 Server,PULONG Id) PURE; 1814 STDMETHOD(GetCurrentSystemServerName)(THIS_ PSTR Buffer,ULONG BufferSize,PULONG NameSize) PURE; 1815 }; 1816 1817 #define DEBUG_COMMAND_EXCEPTION_ID 0xdbe00dbe 1818 1819 #define DEBUG_CMDEX_INVALID 0x00000000 1820 #define DEBUG_CMDEX_ADD_EVENT_STRING 0x00000001 1821 #define DEBUG_CMDEX_RESET_EVENT_STRINGS 0x00000002 1822 1823 #if !defined(DEBUG_NO_IMPLEMENTATION) && !defined(__CRT__NO_INLINE) 1824 __CRT_INLINE void DebugCommandException(ULONG Command,ULONG ArgSize,PVOID Arg) { 1825 ULONG_PTR ExArgs[4]; 1826 ExArgs[0] = DEBUG_COMMAND_EXCEPTION_ID; 1827 ExArgs[1] = Command; 1828 ExArgs[2] = ArgSize; 1829 ExArgs[3] = (ULONG_PTR)Arg; 1830 RaiseException(DBG_COMMAND_EXCEPTION,0,4,ExArgs); 1831 } 1832 #endif 1833 1834 typedef HRESULT (CALLBACK *PDEBUG_EXTENSION_INITIALIZE)(PULONG Version,PULONG Flags); 1835 typedef void (CALLBACK *PDEBUG_EXTENSION_UNINITIALIZE)(void); 1836 1837 #define DEBUG_NOTIFY_SESSION_ACTIVE 0x00000000 1838 #define DEBUG_NOTIFY_SESSION_INACTIVE 0x00000001 1839 #define DEBUG_NOTIFY_SESSION_ACCESSIBLE 0x00000002 1840 #define DEBUG_NOTIFY_SESSION_INACCESSIBLE 0x00000003 1841 1842 typedef void (CALLBACK *PDEBUG_EXTENSION_NOTIFY)(ULONG Notify,ULONG64 Argument); 1843 typedef HRESULT (CALLBACK *PDEBUG_EXTENSION_CALL)(PDEBUG_CLIENT Client,PCSTR Args); 1844 1845 #define DEBUG_EXTENSION_CONTINUE_SEARCH HRESULT_FROM_NT(0xC0000271) 1846 #define DEBUG_EXTENSION_VERSION(Major,Minor) ((((Major) & 0xffff) << 16) | ((Minor) & 0xffff)) 1847 1848 #ifdef __cplusplus 1849 }; 1850 1851 #ifndef DEBUG_NO_IMPLEMENTATION 1852 class DebugBaseEventCallbacks : public IDebugEventCallbacks { 1853 public: 1854 STDMETHOD(QueryInterface)(THIS_ REFIID InterfaceId,PVOID *Interface) { 1855 *Interface = NULL; 1856 if(IsEqualIID(InterfaceId,IID_IUnknown) || IsEqualIID(InterfaceId,IID_IDebugEventCallbacks)) { 1857 *Interface = (IDebugEventCallbacks *)this; 1858 AddRef(); 1859 return S_OK; 1860 } else return E_NOINTERFACE; 1861 } 1862 STDMETHOD(Breakpoint)(THIS_ PDEBUG_BREAKPOINT Bp) { return DEBUG_STATUS_NO_CHANGE; } 1863 STDMETHOD(Exception)(THIS_ PEXCEPTION_RECORD64 Exception,ULONG FirstChance) { return DEBUG_STATUS_NO_CHANGE; } 1864 STDMETHOD(CreateThread)(THIS_ ULONG64 Handle,ULONG64 DataOffset,ULONG64 StartOffset) { return DEBUG_STATUS_NO_CHANGE; } 1865 STDMETHOD(ExitThread)(THIS_ ULONG ExitCode) { return DEBUG_STATUS_NO_CHANGE; } 1866 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; } 1867 STDMETHOD(ExitProcess)(THIS_ ULONG ExitCode) { return DEBUG_STATUS_NO_CHANGE; } 1868 STDMETHOD(LoadModule)(THIS_ ULONG64 ImageFileHandle,ULONG64 BaseOffset,ULONG ModuleSize,PCSTR ModuleName,PCSTR ImageName,ULONG CheckSum,ULONG TimeDateStamp) { return DEBUG_STATUS_NO_CHANGE; } 1869 STDMETHOD(UnloadModule)(THIS_ PCSTR ImageBaseName,ULONG64 BaseOffset) { return DEBUG_STATUS_NO_CHANGE; } 1870 STDMETHOD(SystemError)(THIS_ ULONG Error,ULONG Level) { return DEBUG_STATUS_NO_CHANGE; } 1871 STDMETHOD(SessionStatus)(THIS_ ULONG Status) { return DEBUG_STATUS_NO_CHANGE; } 1872 STDMETHOD(ChangeDebuggeeState)(THIS_ ULONG Flags,ULONG64 Argument) { return S_OK; } 1873 STDMETHOD(ChangeEngineState)(THIS_ ULONG Flags,ULONG64 Argument) { return S_OK; } 1874 STDMETHOD(ChangeSymbolState)(THIS_ ULONG Flags,ULONG64 Argument) { return S_OK; } 1875 }; 1876 #endif 1877 #endif 1878 #endif 1879