source: Daodan/MSYS2/mingw32/i686-w64-mingw32/include/dbgeng.h@ 1170

Last change on this file since 1170 was 1166, checked in by rossy, 3 years ago

Daodan: Replace MinGW build env with an up-to-date MSYS2 env

File size: 109.4 KB
Line 
1/**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6#ifndef __DBGENG_H__
7#define __DBGENG_H__
8
9#include <stdarg.h>
10#include <objbase.h>
11
12#ifndef _WDBGEXTS_
13typedef struct _WINDBG_EXTENSION_APIS32 *PWINDBG_EXTENSION_APIS32;
14typedef struct _WINDBG_EXTENSION_APIS64 *PWINDBG_EXTENSION_APIS64;
15#endif
16
17#ifndef _CRASHLIB_
18typedef struct _MEMORY_BASIC_INFORMATION64 *PMEMORY_BASIC_INFORMATION64;
19#endif
20
21#ifdef __cplusplus
22extern "C" {
23#endif
24
25 DEFINE_GUID(IID_IDebugAdvanced,0xf2df5f53,0x071f,0x47bd,0x9d,0xe6,0x57,0x34,0xc3,0xfe,0xd6,0x89);
26 DEFINE_GUID(IID_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
1852class DebugBaseEventCallbacks : public IDebugEventCallbacks {
1853public:
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
Note: See TracBrowser for help on using the repository browser.