2 * Copyright 2019 Nikolay Sivov for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
25 DEFINE_GUID(IID_IDebugInputCallbacks
, 0x9f50e42c, 0xf136, 0x499e, 0x9a, 0x97, 0x73, 0x03, 0x6c, 0x94, 0xed, 0x2d);
26 DEFINE_GUID(IID_IDebugOutputCallbacks
, 0x4bf58045, 0xd654, 0x4c40, 0xb0, 0xaf, 0x68, 0x30, 0x90, 0xf3, 0x56, 0xdc);
27 DEFINE_GUID(IID_IDebugEventCallbacks
, 0x337be28b, 0x5036, 0x4d72, 0xb6, 0xbf, 0xc4, 0x5f, 0xbb, 0x9f, 0x2e, 0xaa);
28 DEFINE_GUID(IID_IDebugClient
, 0x27fe5639, 0x8407, 0x4f47, 0x83, 0x64, 0xee, 0x11, 0x8f, 0xb0, 0x8a, 0xc8);
29 DEFINE_GUID(IID_IDebugDataSpaces
, 0x88f7dfab, 0x3ea7, 0x4c3a, 0xae, 0xfb, 0xc4, 0xe8, 0x10, 0x61, 0x73, 0xaa);
30 DEFINE_GUID(IID_IDebugSymbols
, 0x8c31e98c, 0x983a, 0x48a5, 0x90, 0x16, 0x6f, 0xe5, 0xd6, 0x67, 0xa9, 0x50);
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);
34 typedef struct _DEBUG_MODULE_PARAMETERS
44 ULONG LoadedImageNameSize
;
45 ULONG SymbolFileNameSize
;
46 ULONG MappedImageNameSize
;
48 } DEBUG_MODULE_PARAMETERS
, *PDEBUG_MODULE_PARAMETERS
;
50 typedef struct _DEBUG_STACK_FRAME
52 ULONG64 InstructionOffset
;
56 ULONG64 FuncTableEntry
;
61 } DEBUG_STACK_FRAME
, *PDEBUG_STACK_FRAME
;
63 typedef struct _DEBUG_VALUE
100 } DEBUG_VALUE
, *PDEBUG_VALUE
;
102 typedef struct _DEBUG_BREAKPOINT_PARAMETERS
110 ULONG DataAccessType
;
112 ULONG CurrentPassCount
;
115 ULONG OffsetExpressionSize
;
116 } DEBUG_BREAKPOINT_PARAMETERS
, *PDEBUG_BREAKPOINT_PARAMETERS
;
118 typedef struct _WINDBG_EXTENSION_APIS32
*PWINDBG_EXTENSION_APIS32
;
119 typedef struct _WINDBG_EXTENSION_APIS64
*PWINDBG_EXTENSION_APIS64
;
121 typedef struct _DEBUG_SPECIFIC_FILTER_PARAMETERS
123 ULONG ExecutionOption
;
124 ULONG ContinueOption
;
128 } DEBUG_SPECIFIC_FILTER_PARAMETERS
, *PDEBUG_SPECIFIC_FILTER_PARAMETERS
;
130 typedef struct _DEBUG_EXCEPTION_FILTER_PARAMETERS
132 ULONG ExecutionOption
;
133 ULONG ContinueOption
;
136 ULONG SecondCommandSize
;
138 } DEBUG_EXCEPTION_FILTER_PARAMETERS
, *PDEBUG_EXCEPTION_FILTER_PARAMETERS
;
140 #define INTERFACE IDebugBreakpoint
141 DECLARE_INTERFACE_(IDebugBreakpoint
, IUnknown
)
144 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **out
) PURE
;
145 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
146 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
147 /* IDebugBreakpoint */
152 #define INTERFACE IDebugSymbolGroup
153 DECLARE_INTERFACE_(IDebugSymbolGroup
, IUnknown
)
156 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **out
) PURE
;
157 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
158 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
159 /* IDebugSymbolGroup */
164 typedef IDebugBreakpoint
* PDEBUG_BREAKPOINT
;
166 #define INTERFACE IDebugInputCallbacks
167 DECLARE_INTERFACE_(IDebugInputCallbacks
, IUnknown
)
170 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **out
) PURE
;
171 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
172 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
173 /* IDebugInputCallbacks */
174 STDMETHOD(StartInput
)(THIS_ ULONG buffer_size
) PURE
;
175 STDMETHOD(EndInput
)(THIS
) PURE
;
179 #define INTERFACE IDebugOutputCallbacks
180 DECLARE_INTERFACE_(IDebugOutputCallbacks
, IUnknown
)
183 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **out
) PURE
;
184 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
185 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
186 /* IDebugOutputCallbacks */
187 STDMETHOD(Output
)(THIS_ ULONG mask
, const char *text
) PURE
;
191 #ifdef WINE_NO_UNICODE_MACROS
195 #define INTERFACE IDebugEventCallbacks
196 DECLARE_INTERFACE_(IDebugEventCallbacks
, IUnknown
)
199 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **out
) PURE
;
200 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
201 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
202 /* IDebugEventCallbacks */
203 STDMETHOD(GetInterestMask
)(THIS_ ULONG
*mask
) PURE
;
204 STDMETHOD(Breakpoint
)(THIS_ PDEBUG_BREAKPOINT breakpoint
) PURE
;
205 STDMETHOD(Exception
)(THIS_ EXCEPTION_RECORD64
*exception
, ULONG first_chance
) PURE
;
206 STDMETHOD(CreateThread
)(THIS_ ULONG64 handle
, ULONG64 data_offset
, ULONG64 start_offset
) PURE
;
207 STDMETHOD(ExitThread
)(THIS_ ULONG exit_code
) PURE
;
208 STDMETHOD(CreateProcess
)(THIS_ ULONG64 image_handle
, ULONG64 handle
, ULONG64 base_offset
, ULONG module_size
,
209 const char *module_name
, const char *image_name
, ULONG checksum
, ULONG timedatestamp
,
210 ULONG64 initial_thread_handle
, ULONG64 thread_data_offset
, ULONG64 start_offset
) PURE
;
211 STDMETHOD(ExitProcess
)(THIS_ ULONG exit_code
) PURE
;
212 STDMETHOD(LoadModule
)(THIS_ ULONG64 image_handle
, ULONG64 base_offset
, ULONG module_size
, const char *module_name
,
213 const char *image_name
, ULONG checksum
, ULONG timedatestamp
) PURE
;
214 STDMETHOD(UnloadModule
)(THIS_
const char *image_basename
, ULONG64 base_offset
) PURE
;
215 STDMETHOD(SystemError
)(THIS_ ULONG error
, ULONG level
) PURE
;
216 STDMETHOD(SessionStatus
)(THIS_ ULONG status
) PURE
;
217 STDMETHOD(ChangeDebuggeeState
)(THIS_ ULONG flags
, ULONG64 argument
) PURE
;
218 STDMETHOD(ChangeEngineState
)(THIS_ ULONG flags
, ULONG64 argument
) PURE
;
219 STDMETHOD(ChangeSymbolState
)(THIS_ ULONG flags
, ULONG64 argument
) PURE
;
223 #define INTERFACE IDebugClient
224 DECLARE_INTERFACE_(IDebugClient
, IUnknown
)
227 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **out
) PURE
;
228 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
229 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
231 STDMETHOD(AttachKernel
)(THIS_ ULONG flags
, const char *options
) PURE
;
232 STDMETHOD(GetKernelConnectionOptions
)(THIS_
char *buffer
, ULONG buffer_size
, ULONG
*options_size
) PURE
;
233 STDMETHOD(SetKernelConnectionOptions
)(THIS_
const char *options
) PURE
;
234 STDMETHOD(StartProcessServer
)(THIS_ ULONG flags
, const char *options
, void *reserved
) PURE
;
235 STDMETHOD(ConnectProcessServer
)(THIS_
const char *remote_options
, ULONG64
*server
) PURE
;
236 STDMETHOD(DisconnectProcessServer
)(THIS_ ULONG64 server
) PURE
;
237 STDMETHOD(GetRunningProcessSystemIds
)(THIS_ ULONG64 server
, ULONG
*ids
, ULONG count
, ULONG
*actual_count
) PURE
;
238 STDMETHOD(GetRunningProcessSystemIdByExecutableName
)(THIS_ ULONG64 server
, const char *exe_name
,
239 ULONG flags
, ULONG
*id
) PURE
;
240 STDMETHOD(GetRunningProcessDescription
)(THIS_ ULONG64 server
, ULONG systemid
, ULONG flags
, char *exe_name
,
241 ULONG exe_name_size
, ULONG
*actual_exe_name_size
, char *description
, ULONG description_size
,
242 ULONG
*actual_description_size
) PURE
;
243 STDMETHOD(AttachProcess
)(THIS_ ULONG64 server
, ULONG pid
, ULONG flags
) PURE
;
244 STDMETHOD(CreateProcess
)(THIS_ ULONG64 server
, char *cmdline
, ULONG flags
) PURE
;
245 STDMETHOD(CreateProcessAndAttach
)(THIS_ ULONG64 server
, char *cmdline
, ULONG create_flags
,
246 ULONG pid
, ULONG attach_flags
) PURE
;
247 STDMETHOD(GetProcessOptions
)(THIS_ ULONG
*options
) PURE
;
248 STDMETHOD(AddProcessOptions
)(THIS_ ULONG options
) PURE
;
249 STDMETHOD(RemoveProcessOptions
)(THIS_ ULONG options
) PURE
;
250 STDMETHOD(SetProcessOptions
)(THIS_ ULONG options
) PURE
;
251 STDMETHOD(OpenDumpFile
)(THIS_
const char *filename
) PURE
;
252 STDMETHOD(WriteDumpFile
)(THIS_
const char *filename
, ULONG qualifier
) PURE
;
253 STDMETHOD(ConnectSession
)(THIS_ ULONG flags
, ULONG history_limit
) PURE
;
254 STDMETHOD(StartServer
)(THIS_
const char *options
) PURE
;
255 STDMETHOD(OutputServers
)(THIS_ ULONG output_control
, const char *machine
, ULONG flags
) PURE
;
256 STDMETHOD(TerminateProcesses
)(THIS
) PURE
;
257 STDMETHOD(DetachProcesses
)(THIS
) PURE
;
258 STDMETHOD(EndSession
)(THIS_ ULONG flags
) PURE
;
259 STDMETHOD(GetExitCode
)(THIS_ ULONG
*code
) PURE
;
260 STDMETHOD(DispatchCallbacks
)(THIS_ ULONG timeout
) PURE
;
261 STDMETHOD(ExitDispatch
)(THIS_ IDebugClient
*client
) PURE
;
262 STDMETHOD(CreateClient
)(THIS_ IDebugClient
**client
) PURE
;
263 STDMETHOD(GetInputCallbacks
)(THIS_ IDebugInputCallbacks
**callbacks
) PURE
;
264 STDMETHOD(SetInputCallbacks
)(THIS_ IDebugInputCallbacks
*callbacks
) PURE
;
265 STDMETHOD(GetOutputCallbacks
)(THIS_ IDebugOutputCallbacks
**callbacks
) PURE
;
266 STDMETHOD(SetOutputCallbacks
)(THIS_ IDebugOutputCallbacks
*callbacks
) PURE
;
267 STDMETHOD(GetOutputMask
)(THIS_ ULONG
*mask
) PURE
;
268 STDMETHOD(SetOutputMask
)(THIS_ ULONG mask
) PURE
;
269 STDMETHOD(GetOtherOutputMask
)(THIS_ IDebugClient
*client
, ULONG
*mask
) PURE
;
270 STDMETHOD(SetOtherOutputMask
)(THIS_ IDebugClient
*client
, ULONG mask
) PURE
;
271 STDMETHOD(GetOutputWidth
)(THIS_ ULONG
*columns
) PURE
;
272 STDMETHOD(SetOutputWidth
)(THIS_ ULONG columns
) PURE
;
273 STDMETHOD(GetOutputLinePrefix
)(THIS_
char *buffer
, ULONG buffer_size
, ULONG
*prefix_size
) PURE
;
274 STDMETHOD(SetOutputLinePrefix
)(THIS_
const char *prefix
) PURE
;
275 STDMETHOD(GetIdentity
)(THIS_
char *buffer
, ULONG buffer_size
, ULONG
*identity_size
) PURE
;
276 STDMETHOD(OutputIdentity
)(THIS_ ULONG output_control
, ULONG flags
, const char *format
) PURE
;
277 STDMETHOD(GetEventCallbacks
)(THIS_ IDebugEventCallbacks
**callbacks
) PURE
;
278 STDMETHOD(SetEventCallbacks
)(THIS_ IDebugEventCallbacks
*callbacks
) PURE
;
279 STDMETHOD(FlushCallbacks
)(THIS
) PURE
;
283 #define INTERFACE IDebugDataSpaces
284 DECLARE_INTERFACE_(IDebugDataSpaces
, IUnknown
)
287 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **out
) PURE
;
288 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
289 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
290 /* IDebugDataSpaces */
291 STDMETHOD(ReadVirtual
)(THIS_ ULONG64 offset
, void *buffer
, ULONG buffer_size
, ULONG
*read_len
) PURE
;
292 STDMETHOD(WriteVirtual
)(THIS_ ULONG64 offset
, void *buffer
, ULONG buffer_size
, ULONG
*written
) PURE
;
293 STDMETHOD(SearchVirtual
)(THIS_ ULONG64 offset
, ULONG64 length
, void *pattern
, ULONG pattern_size
,
294 ULONG pattern_granularity
, ULONG64
*ret_offset
) PURE
;
295 STDMETHOD(ReadVirtualUncached
)(THIS_ ULONG64 offset
, void *buffer
, ULONG buffer_size
, ULONG
*read_len
) PURE
;
296 STDMETHOD(WriteVirtualUncached
)(THIS_ ULONG64 offset
, void *buffer
, ULONG buffer_size
, ULONG
*written
) PURE
;
297 STDMETHOD(ReadPointersVirtual
)(THIS_ ULONG count
, ULONG64 offset
, ULONG64
*pointers
) PURE
;
298 STDMETHOD(WritePointersVirtual
)(THIS_ ULONG count
, ULONG64 offset
, ULONG64
*pointers
) PURE
;
299 STDMETHOD(ReadPhysical
)(THIS_ ULONG64 offset
, void *buffer
, ULONG buffer_size
, ULONG
*read_len
) PURE
;
300 STDMETHOD(WritePhysical
)(THIS_ ULONG64 offset
, void *buffer
, ULONG buffer_size
, ULONG
*written
) PURE
;
301 STDMETHOD(ReadControl
)(THIS_ ULONG processor
, ULONG64 offset
, void *buffer
, ULONG buffer_size
,
302 ULONG
*read_len
) PURE
;
303 STDMETHOD(WriteControl
)(THIS_ ULONG processor
, ULONG64 offset
, void *buffer
, ULONG buffer_size
,
304 ULONG
*written
) PURE
;
305 STDMETHOD(ReadIo
)(THIS_ ULONG type
, ULONG bus_number
, ULONG address_space
, ULONG64 offset
, void *buffer
,
306 ULONG buffer_size
, ULONG
*read_len
) PURE
;
307 STDMETHOD(WriteIo
)(THIS_ ULONG type
, ULONG bus_number
, ULONG address_space
, ULONG64 offset
, void *buffer
,
308 ULONG buffer_size
, ULONG
*written
) PURE
;
309 STDMETHOD(ReadMsr
)(THIS_ ULONG msr
, ULONG64
*value
) PURE
;
310 STDMETHOD(WriteMsr
)(THIS_ ULONG msr
, ULONG64 value
) PURE
;
311 STDMETHOD(ReadBusData
)(THIS_ ULONG data_type
, ULONG bus_number
, ULONG slot_number
, ULONG offset
, void *buffer
,
312 ULONG buffer_size
, ULONG
*read_len
) PURE
;
313 STDMETHOD(WriteBusData
)(THIS_ ULONG data_type
, ULONG bus_number
, ULONG slot_number
, ULONG offset
, void *buffer
,
314 ULONG buffer_size
, ULONG
*written
) PURE
;
315 STDMETHOD(CheckLowMemory
)(THIS
) PURE
;
316 STDMETHOD(ReadDebuggerData
)(THIS_ ULONG index
, void *buffer
, ULONG buffer_size
, ULONG
*data_size
) PURE
;
317 STDMETHOD(ReadProcessorSystemData
)(THIS_ ULONG processor
, ULONG index
, void *buffer
, ULONG buffer_size
,
318 ULONG
*data_size
) PURE
;
322 #define INTERFACE IDebugSymbols
323 DECLARE_INTERFACE_(IDebugSymbols
, IUnknown
)
326 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **out
) PURE
;
327 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
328 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
330 STDMETHOD(GetSymbolOptions
)(THIS_ ULONG
*options
) PURE
;
331 STDMETHOD(AddSymbolOptions
)(THIS_ ULONG options
) PURE
;
332 STDMETHOD(RemoveSymbolOptions
)(THIS_ ULONG options
) PURE
;
333 STDMETHOD(SetSymbolOptions
)(THIS_ ULONG options
) PURE
;
334 STDMETHOD(GetNameByOffset
)(THIS_ ULONG64 offset
, char *buffer
, ULONG buffer_size
, ULONG
*name_size
,
335 ULONG64
*displacement
) PURE
;
336 STDMETHOD(GetOffsetByName
)(THIS_
const char *symbol
, ULONG64
*offset
) PURE
;
337 STDMETHOD(GetNearNameByOffset
)(THIS_ ULONG64 offset
, LONG delta
, char *buffer
, ULONG buffer_size
,ULONG
*name_size
,
338 ULONG64
*displacement
) PURE
;
339 STDMETHOD(GetLineByOffset
)(THIS_ ULONG64 offset
, ULONG
*line
, char *buffer
, ULONG buffer_size
, ULONG
*file_size
,
340 ULONG64
*displacement
) PURE
;
341 STDMETHOD(GetOffsetByLine
)(THIS_ ULONG line
, const char *file
, ULONG64
*offset
) PURE
;
342 STDMETHOD(GetNumberModules
)(THIS_ ULONG
*loaded
, ULONG
*unloaded
) PURE
;
343 STDMETHOD(GetModuleByIndex
)(THIS_ ULONG index
, ULONG64
*base
) PURE
;
344 STDMETHOD(GetModuleByModuleName
)(THIS_
const char *name
, ULONG start_index
, ULONG
*index
, ULONG64
*base
) PURE
;
345 STDMETHOD(GetModuleByOffset
)(THIS_ ULONG64 offset
, ULONG start_index
, ULONG
*index
, ULONG64
*base
) PURE
;
346 STDMETHOD(GetModuleNames
)(THIS_ ULONG index
, ULONG64 base
, char *image_name
, ULONG image_name_buffer_size
,
347 ULONG
*image_name_size
, char *module_name
, ULONG module_name_buffer_size
, ULONG
*module_name_size
,
348 char *loaded_image_name
, ULONG loaded_image_name_buffer_size
, ULONG
*loaded_image_size
) PURE
;
349 STDMETHOD(GetModuleParameters
)(THIS_ ULONG count
, ULONG64
*bases
, ULONG start
,
350 DEBUG_MODULE_PARAMETERS
*parameters
) PURE
;
351 STDMETHOD(GetSymbolModule
)(THIS_
const char *symbol
, ULONG64
*base
) PURE
;
352 STDMETHOD(GetTypeName
)(THIS_ ULONG64 base
, ULONG type_id
, char *buffer
, ULONG buffer_size
, ULONG
*name_size
) PURE
;
353 STDMETHOD(GetTypeId
)(THIS_ ULONG64 base
, ULONG type_id
, ULONG
*size
) PURE
;
354 STDMETHOD(GetFieldOffset
)(THIS_ ULONG64 base
, ULONG type_id
, const char *field
, ULONG
*offset
) PURE
;
355 STDMETHOD(GetSymbolTypeId
)(THIS_
const char *symbol
, ULONG
*type_id
, ULONG64
*base
) PURE
;
356 STDMETHOD(GetOffsetTypeId
)(THIS_ ULONG64 offset
, ULONG
*type_id
, ULONG64
*base
) PURE
;
357 STDMETHOD(ReadTypedDataVirtual
)(THIS_ ULONG64 offset
, ULONG64 base
, ULONG type_id
, void *buffer
,
358 ULONG buffer_size
, ULONG
*read_len
) PURE
;
359 STDMETHOD(WriteTypedDataVirtual
)(THIS_ ULONG64 offset
, ULONG64 base
, ULONG type_id
, void *buffer
,
360 ULONG buffer_size
, ULONG
*written
) PURE
;
361 STDMETHOD(OutputTypedDataVirtual
)(THIS_ ULONG output_control
, ULONG64 offset
, ULONG64 base
, ULONG type_id
,
363 STDMETHOD(ReadTypedDataPhysical
)(THIS_ ULONG64 offset
, ULONG64 base
, ULONG type_id
, void *buffer
,
364 ULONG buffer_size
, ULONG
*read_len
) PURE
;
365 STDMETHOD(WriteTypedDataPhysical
)(THIS_ ULONG64 offset
, ULONG64 base
, ULONG type_id
, void *buffer
,
366 ULONG buffer_size
, ULONG
*written
) PURE
;
367 STDMETHOD(OutputTypedDataPhysical
)(THIS_ ULONG output_control
, ULONG64 offset
, ULONG64 base
, ULONG type_id
,
369 STDMETHOD(GetScope
)(THIS_ ULONG64
*instr_offset
, DEBUG_STACK_FRAME
*frame
, void *scope_context
,
370 ULONG scope_context_size
) PURE
;
371 STDMETHOD(SetScope
)(THIS_ ULONG64 instr_offset
, DEBUG_STACK_FRAME
*frame
, void *scope_context
,
372 ULONG scope_context_size
) PURE
;
373 STDMETHOD(ResetScope
)(THIS
) PURE
;
374 STDMETHOD(GetScopeSymbolGroup
)(THIS_ ULONG flags
, IDebugSymbolGroup
*update
, IDebugSymbolGroup
**symbols
) PURE
;
375 STDMETHOD(CreateSymbolGroup
)(THIS_ IDebugSymbolGroup
**group
) PURE
;
376 STDMETHOD(StartSymbolMatch
)(THIS_
const char *pattern
, ULONG64
*handle
) PURE
;
377 STDMETHOD(GetNextSymbolMatch
)(THIS_ ULONG64 handle
, char *buffer
, ULONG buffer_size
, ULONG
*match_size
,
378 ULONG64
*offset
) PURE
;
379 STDMETHOD(EndSymbolMatch
)(THIS_ ULONG64 handle
) PURE
;
380 STDMETHOD(Reload
)(THIS_
const char *path
) PURE
;
381 STDMETHOD(GetSymbolPath
)(THIS_
char *buffer
, ULONG buffer_size
, ULONG
*path_size
) PURE
;
382 STDMETHOD(SetSymbolPath
)(THIS_
const char *path
) PURE
;
383 STDMETHOD(AppendSymbolPath
)(THIS_
const char *path
) PURE
;
384 STDMETHOD(GetImagePath
)(THIS_
char *buffer
, ULONG buffer_size
, ULONG
*path_size
) PURE
;
385 STDMETHOD(SetImagePath
)(THIS_
const char *path
) PURE
;
386 STDMETHOD(AppendImagePath
)(THIS_
const char *path
) PURE
;
387 STDMETHOD(GetSourcePath
)(THIS_
char *buffer
, ULONG buffer_size
, ULONG
*path_size
) PURE
;
388 STDMETHOD(GetSourcePathElement
)(THIS_ ULONG index
, char *buffer
, ULONG buffer_size
, ULONG
*element_size
) PURE
;
389 STDMETHOD(SetSourcePath
)(THIS_
const char *path
) PURE
;
390 STDMETHOD(AppendSourcePath
)(THIS_
const char *path
) PURE
;
391 STDMETHOD(FindSourceFile
)(THIS_ ULONG start
, const char *file
, ULONG flags
, ULONG
*found_element
, char *buffer
,
392 ULONG buffer_size
, ULONG
*found_size
) PURE
;
393 STDMETHOD(GetSourceFileLineOffsets
)(THIS_
const char *file
, ULONG64
*buffer
, ULONG buffer_lines
,
394 ULONG
*file_lines
) PURE
;
398 #define INTERFACE IDebugControl
399 DECLARE_INTERFACE_(IDebugControl
, IUnknown
)
402 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **out
) PURE
;
403 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
404 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
406 STDMETHOD(GetInterrupt
)(THIS
) PURE
;
407 STDMETHOD(SetInterrupt
)(THIS_ ULONG flags
) PURE
;
408 STDMETHOD(GetIterruptTimeout
)(THIS_ ULONG
*timeout
) PURE
;
409 STDMETHOD(SetInterruptTimeout
)(THIS_ ULONG timeout
) PURE
;
410 STDMETHOD(GetLogFile
)(THIS_
char *buffer
, ULONG buffer_size
, ULONG
*file_size
, BOOL
*append
) PURE
;
411 STDMETHOD(OpenLogFile
)(THIS_
const char *file
, BOOL append
) PURE
;
412 STDMETHOD(CloseLogFile
)(THIS
) PURE
;
413 STDMETHOD(GetLogMask
)(THIS_ ULONG
*mask
) PURE
;
414 STDMETHOD(SetLogMask
)(THIS_ ULONG mask
) PURE
;
415 STDMETHOD(Input
)(THIS_
char *buffer
, ULONG buffer_size
, ULONG
*input_size
) PURE
;
416 STDMETHOD(ReturnInput
)(THIS_
const char *buffer
) PURE
;
417 STDMETHODV(Output
)(THIS_ ULONG mask
, const char *format
, ...) PURE
;
418 STDMETHOD(OutputVaList
)(THIS_ ULONG mask
, const char *format
, __ms_va_list args
) PURE
;
419 STDMETHODV(ControlledOutput
)(THIS_ ULONG output_control
, ULONG mask
, const char *format
, ...) PURE
;
420 STDMETHOD(ControlledOutputVaList
)(THIS_ ULONG output_control
, ULONG mask
, const char *format
,
421 __ms_va_list args
) PURE
;
422 STDMETHODV(OutputPrompt
)(THIS_ ULONG output_control
, const char *format
, ...) PURE
;
423 STDMETHOD(OutputPromptVaList
)(THIS_ ULONG output_control
, const char *format
, __ms_va_list args
) PURE
;
424 STDMETHOD(GetPromptText
)(THIS_
char *buffer
, ULONG buffer_size
, ULONG
*text_size
) PURE
;
425 STDMETHOD(OutputCurrentState
)(THIS_ ULONG output_control
, ULONG flags
) PURE
;
426 STDMETHOD(OutputVersionInformation
)(THIS_ ULONG output_control
) PURE
;
427 STDMETHOD(GetNotifyEventHandle
)(THIS_ ULONG64
*handle
) PURE
;
428 STDMETHOD(SetNotifyEventHandle
)(THIS_ ULONG64 handle
) PURE
;
429 STDMETHOD(Assemble
)(THIS_ ULONG64 offset
, const char *code
, ULONG64
*end_offset
) PURE
;
430 STDMETHOD(Disassemble
)(THIS_ ULONG64 offset
, ULONG flags
, char *buffer
, ULONG buffer_size
, ULONG
*disassm_size
,
431 ULONG64
*end_offset
) PURE
;
432 STDMETHOD(GetDisassembleEffectiveOffset
)(THIS_ ULONG64
*offset
) PURE
;
433 STDMETHOD(OutputDisassembly
)(THIS_ ULONG output_control
, ULONG64 offset
, ULONG flags
, ULONG64
*end_offset
) PURE
;
434 STDMETHOD(OutputDisassemblyLines
)(THIS_ ULONG output_control
, ULONG prev_lines
, ULONG total_lines
, ULONG64 offset
,
435 ULONG flags
, ULONG
*offset_line
, ULONG64
*start_offset
, ULONG64
*end_offset
, ULONG64
*line_offsets
) PURE
;
436 STDMETHOD(GetNearInstruction
)(THIS_ ULONG64 offset
, LONG delta
, ULONG64
*instr_offset
) PURE
;
437 STDMETHOD(GetStackTrace
)(THIS_ ULONG64 frame_offset
, ULONG64 stack_offset
, ULONG64 instr_offset
,
438 DEBUG_STACK_FRAME
*frames
, ULONG frames_size
, ULONG
*frames_filled
) PURE
;
439 STDMETHOD(GetReturnOffset
)(THIS_ ULONG64
*offset
) PURE
;
440 STDMETHOD(OutputStackTrace
)(THIS_ ULONG output_control
, DEBUG_STACK_FRAME
*frames
, ULONG frames_size
,
442 STDMETHOD(GetDebuggeeType
)(THIS_ ULONG
*_class
, ULONG
*qualifier
) PURE
;
443 STDMETHOD(GetActualProcessorType
)(THIS_ ULONG
*type
) PURE
;
444 STDMETHOD(GetExecutingProcessorType
)(THIS_ ULONG
*type
) PURE
;
445 STDMETHOD(GetNumberPossibleExecutingProcessorTypes
)(THIS_ ULONG
*count
) PURE
;
446 STDMETHOD(GetPossibleExecutingProcessorTypes
)(THIS_ ULONG start
, ULONG count
, ULONG
*types
) PURE
;
447 STDMETHOD(GetNumberProcessors
)(THIS_ ULONG
*count
) PURE
;
448 STDMETHOD(GetSystemVersion
)(THIS_ ULONG
*platform_id
, ULONG
*major
, ULONG
*minor
, char *sp_string
,
449 ULONG sp_string_size
, ULONG
*sp_string_used
, ULONG
*sp_number
, char *build_string
, ULONG build_string_size
,
450 ULONG
*build_string_used
) PURE
;
451 STDMETHOD(GetPageSize
)(THIS_ ULONG
*size
) PURE
;
452 STDMETHOD(IsPointer64Bit
)(THIS
) PURE
;
453 STDMETHOD(ReadBugCheckData
)(THIS_ ULONG
*code
, ULONG64
*arg1
, ULONG64
*arg2
, ULONG64
*arg3
, ULONG64
*arg4
) PURE
;
454 STDMETHOD(GetNumberSupportedProcessorTypes
)(THIS_ ULONG
*count
) PURE
;
455 STDMETHOD(GetSupportedProcessorTypes
)(THIS_ ULONG start
, ULONG count
, ULONG
*types
) PURE
;
456 STDMETHOD(GetProcessorTypeNames
)(THIS_ ULONG type
, char *full_name
, ULONG full_name_buffer_size
,
457 ULONG
*full_name_size
, char *abbrev_name
, ULONG abbrev_name_buffer_size
, ULONG
*abbrev_name_size
) PURE
;
458 STDMETHOD(GetEffectiveProcessorType
)(THIS_ ULONG
*type
) PURE
;
459 STDMETHOD(SetEffectiveProcessorType
)(THIS_ ULONG type
) PURE
;
460 STDMETHOD(GetExecutionStatus
)(THIS_ ULONG
*status
) PURE
;
461 STDMETHOD(SetExecutionStatus
)(THIS_ ULONG status
) PURE
;
462 STDMETHOD(GetCodeLevel
)(THIS_ ULONG
*level
) PURE
;
463 STDMETHOD(SetCodeLevel
)(THIS_ ULONG level
) PURE
;
464 STDMETHOD(GetEngineOptions
)(THIS_ ULONG
*options
) PURE
;
465 STDMETHOD(AddEngineOptions
)(THIS_ ULONG options
) PURE
;
466 STDMETHOD(RemoveEngineOptions
)(THIS_ ULONG options
) PURE
;
467 STDMETHOD(SetEngineOptions
)(THIS_ ULONG options
) PURE
;
468 STDMETHOD(GetSystemErrorControl
)(THIS_ ULONG
*output_level
, ULONG
*break_level
) PURE
;
469 STDMETHOD(SetSystemErrorControl
)(THIS_ ULONG output_level
, ULONG break_level
) PURE
;
470 STDMETHOD(GetTextMacro
)(THIS_ ULONG slot
, char *buffer
, ULONG buffer_size
, ULONG
*macro_size
) PURE
;
471 STDMETHOD(SetTextMacro
)(THIS_ ULONG slot
, const char *macro
) PURE
;
472 STDMETHOD(GetRadix
)(THIS_ ULONG
*radix
) PURE
;
473 STDMETHOD(SetRadix
)(THIS_ ULONG radix
) PURE
;
474 STDMETHOD(Evaluate
)(THIS_
const char *expression
, ULONG desired_type
, DEBUG_VALUE
*value
,
475 ULONG
*remainder_index
) PURE
;
476 STDMETHOD(CoerceValue
)(THIS_ DEBUG_VALUE input
, ULONG output_type
, DEBUG_VALUE
*output
) PURE
;
477 STDMETHOD(CoerceValues
)(THIS_ ULONG count
, DEBUG_VALUE
*input
, ULONG
*output_types
, DEBUG_VALUE
*output
) PURE
;
478 STDMETHOD(Execute
)(THIS_ ULONG output_control
, const char *command
, ULONG flags
) PURE
;
479 STDMETHOD(ExecuteCommandFile
)(THIS_ ULONG output_control
, const char *command_file
, ULONG flags
) PURE
;
480 STDMETHOD(GetNumberBreakpoints
)(THIS_ ULONG
*count
) PURE
;
481 STDMETHOD(GetBreakpointByIndex
)(THIS_ ULONG index
, IDebugBreakpoint
**bp
) PURE
;
482 STDMETHOD(GetBreakpointById
)(THIS_ ULONG id
, IDebugBreakpoint
**bp
) PURE
;
483 STDMETHOD(GetBreakpointParameters
)(THIS_ ULONG count
, ULONG
*ids
, ULONG start
,
484 DEBUG_BREAKPOINT_PARAMETERS
*parameters
) PURE
;
485 STDMETHOD(AddBreakpoint
)(THIS_ ULONG type
, ULONG desired_id
, IDebugBreakpoint
**bp
) PURE
;
486 STDMETHOD(RemoveBreakpoint
)(THIS_ IDebugBreakpoint
*bp
) PURE
;
487 STDMETHOD(AddExtension
)(THIS_
const char *path
, ULONG flags
, ULONG64
*handle
) PURE
;
488 STDMETHOD(RemoveExtension
)(THIS_ ULONG64 handle
) PURE
;
489 STDMETHOD(GetExtensionByPath
)(THIS_
const char *path
, ULONG64
*handle
) PURE
;
490 STDMETHOD(CallExtension
)(THIS_ ULONG64 handle
, const char *function
, const char *args
) PURE
;
491 STDMETHOD(GetExtensionFunction
)(THIS_ ULONG64 handle
, const char *name
, void *function
) PURE
;
492 STDMETHOD(GetWindbgExtensionApis32
)(THIS_ PWINDBG_EXTENSION_APIS32 api
) PURE
;
493 STDMETHOD(GetWindbgExtensionApis64
)(THIS_ PWINDBG_EXTENSION_APIS64 api
) PURE
;
494 STDMETHOD(GetNumberEventFilters
)(THIS_ ULONG
*specific_events
, ULONG
*specific_exceptions
,
495 ULONG
*arbitrary_exceptions
) PURE
;
496 STDMETHOD(GetEventFilterText
)(THIS_ ULONG index
, char *buffer
, ULONG buffer_size
, ULONG
*text_size
) PURE
;
497 STDMETHOD(GetEventFilterCommand
)(THIS_ ULONG index
, char *buffer
, ULONG buffer_size
, ULONG
*command_size
) PURE
;
498 STDMETHOD(SetEventFilterCommand
)(THIS_ ULONG index
, const char *command
) PURE
;
499 STDMETHOD(GetSpecificFilterParameters
)(THIS_ ULONG start
, ULONG count
,
500 DEBUG_SPECIFIC_FILTER_PARAMETERS
*parameters
) PURE
;
501 STDMETHOD(SetSpecificFilterParameters
)(THIS_ ULONG start
, ULONG count
,
502 DEBUG_SPECIFIC_FILTER_PARAMETERS
*parameters
) PURE
;
503 STDMETHOD(GetSpecificFilterArgument
)(THIS_ ULONG index
, char *buffer
, ULONG buffer_size
,
504 ULONG
*argument_size
) PURE
;
505 STDMETHOD(SetSpecificFilterArgument
)(THIS_ ULONG index
, const char *argument
) PURE
;
506 STDMETHOD(GetExceptionFilterParameters
)(THIS_ ULONG count
, ULONG
*codes
, ULONG start
,
507 DEBUG_EXCEPTION_FILTER_PARAMETERS
*parameters
) PURE
;
508 STDMETHOD(SetExceptionFilterParameters
)(THIS_ ULONG count
, DEBUG_EXCEPTION_FILTER_PARAMETERS
*parameters
) PURE
;
509 STDMETHOD(GetExceptionFilterSecondCommand
)(THIS_ ULONG index
, char *buffer
, ULONG buffer_size
,
510 ULONG
*command_size
) PURE
;
511 STDMETHOD(SetExceptionFilterSecondCommand
)(THIS_ ULONG index
, const char *command
) PURE
;
512 STDMETHOD(WaitForEvent
)(THIS_ ULONG flags
, ULONG timeout
) PURE
;
513 STDMETHOD(GetLastEventInformation
)(THIS_ ULONG
*type
, ULONG
*pid
, ULONG
*tid
, void *extra_info
,
514 ULONG extra_info_size
, ULONG
*extra_info_used
, char *description
, ULONG desc_size
, ULONG
*desc_used
) PURE
;
518 #define INTERFACE IDebugControl2
519 DECLARE_INTERFACE_(IDebugControl2
, IUnknown
)
522 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **out
) PURE
;
523 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
524 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
526 STDMETHOD(GetInterrupt
)(THIS
) PURE
;
527 STDMETHOD(SetInterrupt
)(THIS_ ULONG flags
) PURE
;
528 STDMETHOD(GetIterruptTimeout
)(THIS_ ULONG
*timeout
) PURE
;
529 STDMETHOD(SetInterruptTimeout
)(THIS_ ULONG timeout
) PURE
;
530 STDMETHOD(GetLogFile
)(THIS_
char *buffer
, ULONG buffer_size
, ULONG
*file_size
, BOOL
*append
) PURE
;
531 STDMETHOD(OpenLogFile
)(THIS_
const char *file
, BOOL append
) PURE
;
532 STDMETHOD(CloseLogFile
)(THIS
) PURE
;
533 STDMETHOD(GetLogMask
)(THIS_ ULONG
*mask
) PURE
;
534 STDMETHOD(SetLogMask
)(THIS_ ULONG mask
) PURE
;
535 STDMETHOD(Input
)(THIS_
char *buffer
, ULONG buffer_size
, ULONG
*input_size
) PURE
;
536 STDMETHOD(ReturnInput
)(THIS_
const char *buffer
) PURE
;
537 STDMETHODV(Output
)(THIS_ ULONG mask
, const char *format
, ...) PURE
;
538 STDMETHOD(OutputVaList
)(THIS_ ULONG mask
, const char *format
, __ms_va_list args
) PURE
;
539 STDMETHODV(ControlledOutput
)(THIS_ ULONG output_control
, ULONG mask
, const char *format
, ...) PURE
;
540 STDMETHOD(ControlledOutputVaList
)(THIS_ ULONG output_control
, ULONG mask
, const char *format
,
541 __ms_va_list args
) PURE
;
542 STDMETHODV(OutputPrompt
)(THIS_ ULONG output_control
, const char *format
, ...) PURE
;
543 STDMETHOD(OutputPromptVaList
)(THIS_ ULONG output_control
, const char *format
, __ms_va_list args
) PURE
;
544 STDMETHOD(GetPromptText
)(THIS_
char *buffer
, ULONG buffer_size
, ULONG
*text_size
) PURE
;
545 STDMETHOD(OutputCurrentState
)(THIS_ ULONG output_control
, ULONG flags
) PURE
;
546 STDMETHOD(OutputVersionInformation
)(THIS_ ULONG output_control
) PURE
;
547 STDMETHOD(GetNotifyEventHandle
)(THIS_ ULONG64
*handle
) PURE
;
548 STDMETHOD(SetNotifyEventHandle
)(THIS_ ULONG64 handle
) PURE
;
549 STDMETHOD(Assemble
)(THIS_ ULONG64 offset
, const char *code
, ULONG64
*end_offset
) PURE
;
550 STDMETHOD(Disassemble
)(THIS_ ULONG64 offset
, ULONG flags
, char *buffer
, ULONG buffer_size
, ULONG
*disassm_size
,
551 ULONG64
*end_offset
) PURE
;
552 STDMETHOD(GetDisassembleEffectiveOffset
)(THIS_ ULONG64
*offset
) PURE
;
553 STDMETHOD(OutputDisassembly
)(THIS_ ULONG output_control
, ULONG64 offset
, ULONG flags
, ULONG64
*end_offset
) PURE
;
554 STDMETHOD(OutputDisassemblyLines
)(THIS_ ULONG output_control
, ULONG prev_lines
, ULONG total_lines
, ULONG64 offset
,
555 ULONG flags
, ULONG
*offset_line
, ULONG64
*start_offset
, ULONG64
*end_offset
, ULONG64
*line_offsets
) PURE
;
556 STDMETHOD(GetNearInstruction
)(THIS_ ULONG64 offset
, LONG delta
, ULONG64
*instr_offset
) PURE
;
557 STDMETHOD(GetStackTrace
)(THIS_ ULONG64 frame_offset
, ULONG64 stack_offset
, ULONG64 instr_offset
,
558 DEBUG_STACK_FRAME
*frames
, ULONG frames_size
, ULONG
*frames_filled
) PURE
;
559 STDMETHOD(GetReturnOffset
)(THIS_ ULONG64
*offset
) PURE
;
560 STDMETHOD(OutputStackTrace
)(THIS_ ULONG output_control
, DEBUG_STACK_FRAME
*frames
, ULONG frames_size
,
562 STDMETHOD(GetDebuggeeType
)(THIS_ ULONG
*_class
, ULONG
*qualifier
) PURE
;
563 STDMETHOD(GetActualProcessorType
)(THIS_ ULONG
*type
) PURE
;
564 STDMETHOD(GetExecutingProcessorType
)(THIS_ ULONG
*type
) PURE
;
565 STDMETHOD(GetNumberPossibleExecutingProcessorTypes
)(THIS_ ULONG
*count
) PURE
;
566 STDMETHOD(GetPossibleExecutingProcessorTypes
)(THIS_ ULONG start
, ULONG count
, ULONG
*types
) PURE
;
567 STDMETHOD(GetNumberProcessors
)(THIS_ ULONG
*count
) PURE
;
568 STDMETHOD(GetSystemVersion
)(THIS_ ULONG
*platform_id
, ULONG
*major
, ULONG
*minor
, char *sp_string
,
569 ULONG sp_string_size
, ULONG
*sp_string_used
, ULONG
*sp_number
, char *build_string
, ULONG build_string_size
,
570 ULONG
*build_string_used
) PURE
;
571 STDMETHOD(GetPageSize
)(THIS_ ULONG
*size
) PURE
;
572 STDMETHOD(IsPointer64Bit
)(THIS
) PURE
;
573 STDMETHOD(ReadBugCheckData
)(THIS_ ULONG
*code
, ULONG64
*arg1
, ULONG64
*arg2
, ULONG64
*arg3
, ULONG64
*arg4
) PURE
;
574 STDMETHOD(GetNumberSupportedProcessorTypes
)(THIS_ ULONG
*count
) PURE
;
575 STDMETHOD(GetSupportedProcessorTypes
)(THIS_ ULONG start
, ULONG count
, ULONG
*types
) PURE
;
576 STDMETHOD(GetProcessorTypeNames
)(THIS_ ULONG type
, char *full_name
, ULONG full_name_buffer_size
,
577 ULONG
*full_name_size
, char *abbrev_name
, ULONG abbrev_name_buffer_size
, ULONG
*abbrev_name_size
) PURE
;
578 STDMETHOD(GetEffectiveProcessorType
)(THIS_ ULONG
*type
) PURE
;
579 STDMETHOD(SetEffectiveProcessorType
)(THIS_ ULONG type
) PURE
;
580 STDMETHOD(GetExecutionStatus
)(THIS_ ULONG
*status
) PURE
;
581 STDMETHOD(SetExecutionStatus
)(THIS_ ULONG status
) PURE
;
582 STDMETHOD(GetCodeLevel
)(THIS_ ULONG
*level
) PURE
;
583 STDMETHOD(SetCodeLevel
)(THIS_ ULONG level
) PURE
;
584 STDMETHOD(GetEngineOptions
)(THIS_ ULONG
*options
) PURE
;
585 STDMETHOD(AddEngineOptions
)(THIS_ ULONG options
) PURE
;
586 STDMETHOD(RemoveEngineOptions
)(THIS_ ULONG options
) PURE
;
587 STDMETHOD(SetEngineOptions
)(THIS_ ULONG options
) PURE
;
588 STDMETHOD(GetSystemErrorControl
)(THIS_ ULONG
*output_level
, ULONG
*break_level
) PURE
;
589 STDMETHOD(SetSystemErrorControl
)(THIS_ ULONG output_level
, ULONG break_level
) PURE
;
590 STDMETHOD(GetTextMacro
)(THIS_ ULONG slot
, char *buffer
, ULONG buffer_size
, ULONG
*macro_size
) PURE
;
591 STDMETHOD(SetTextMacro
)(THIS_ ULONG slot
, const char *macro
) PURE
;
592 STDMETHOD(GetRadix
)(THIS_ ULONG
*radix
) PURE
;
593 STDMETHOD(SetRadix
)(THIS_ ULONG radix
) PURE
;
594 STDMETHOD(Evaluate
)(THIS_
const char *expression
, ULONG desired_type
, DEBUG_VALUE
*value
,
595 ULONG
*remainder_index
) PURE
;
596 STDMETHOD(CoerceValue
)(THIS_ DEBUG_VALUE input
, ULONG output_type
, DEBUG_VALUE
*output
) PURE
;
597 STDMETHOD(CoerceValues
)(THIS_ ULONG count
, DEBUG_VALUE
*input
, ULONG
*output_types
, DEBUG_VALUE
*output
) PURE
;
598 STDMETHOD(Execute
)(THIS_ ULONG output_control
, const char *command
, ULONG flags
) PURE
;
599 STDMETHOD(ExecuteCommandFile
)(THIS_ ULONG output_control
, const char *command_file
, ULONG flags
) PURE
;
600 STDMETHOD(GetNumberBreakpoints
)(THIS_ ULONG
*count
) PURE
;
601 STDMETHOD(GetBreakpointByIndex
)(THIS_ ULONG index
, IDebugBreakpoint
**bp
) PURE
;
602 STDMETHOD(GetBreakpointById
)(THIS_ ULONG id
, IDebugBreakpoint
**bp
) PURE
;
603 STDMETHOD(GetBreakpointParameters
)(THIS_ ULONG count
, ULONG
*ids
, ULONG start
,
604 DEBUG_BREAKPOINT_PARAMETERS
*parameters
) PURE
;
605 STDMETHOD(AddBreakpoint
)(THIS_ ULONG type
, ULONG desired_id
, IDebugBreakpoint
**bp
) PURE
;
606 STDMETHOD(RemoveBreakpoint
)(THIS_ IDebugBreakpoint
*bp
) PURE
;
607 STDMETHOD(AddExtension
)(THIS_
const char *path
, ULONG flags
, ULONG64
*handle
) PURE
;
608 STDMETHOD(RemoveExtension
)(THIS_ ULONG64 handle
) PURE
;
609 STDMETHOD(GetExtensionByPath
)(THIS_
const char *path
, ULONG64
*handle
) PURE
;
610 STDMETHOD(CallExtension
)(THIS_ ULONG64 handle
, const char *function
, const char *args
) PURE
;
611 STDMETHOD(GetExtensionFunction
)(THIS_ ULONG64 handle
, const char *name
, void *function
) PURE
;
612 STDMETHOD(GetWindbgExtensionApis32
)(THIS_ PWINDBG_EXTENSION_APIS32 api
) PURE
;
613 STDMETHOD(GetWindbgExtensionApis64
)(THIS_ PWINDBG_EXTENSION_APIS64 api
) PURE
;
614 STDMETHOD(GetNumberEventFilters
)(THIS_ ULONG
*specific_events
, ULONG
*specific_exceptions
,
615 ULONG
*arbitrary_exceptions
) PURE
;
616 STDMETHOD(GetEventFilterText
)(THIS_ ULONG index
, char *buffer
, ULONG buffer_size
, ULONG
*text_size
) PURE
;
617 STDMETHOD(GetEventFilterCommand
)(THIS_ ULONG index
, char *buffer
, ULONG buffer_size
, ULONG
*command_size
) PURE
;
618 STDMETHOD(SetEventFilterCommand
)(THIS_ ULONG index
, const char *command
) PURE
;
619 STDMETHOD(GetSpecificFilterParameters
)(THIS_ ULONG start
, ULONG count
,
620 DEBUG_SPECIFIC_FILTER_PARAMETERS
*parameters
) PURE
;
621 STDMETHOD(SetSpecificFilterParameters
)(THIS_ ULONG start
, ULONG count
,
622 DEBUG_SPECIFIC_FILTER_PARAMETERS
*parameters
) PURE
;
623 STDMETHOD(GetSpecificFilterArgument
)(THIS_ ULONG index
, char *buffer
, ULONG buffer_size
,
624 ULONG
*argument_size
) PURE
;
625 STDMETHOD(SetSpecificFilterArgument
)(THIS_ ULONG index
, const char *argument
) PURE
;
626 STDMETHOD(GetExceptionFilterParameters
)(THIS_ ULONG count
, ULONG
*codes
, ULONG start
,
627 DEBUG_EXCEPTION_FILTER_PARAMETERS
*parameters
) PURE
;
628 STDMETHOD(SetExceptionFilterParameters
)(THIS_ ULONG count
, DEBUG_EXCEPTION_FILTER_PARAMETERS
*parameters
) PURE
;
629 STDMETHOD(GetExceptionFilterSecondCommand
)(THIS_ ULONG index
, char *buffer
, ULONG buffer_size
,
630 ULONG
*command_size
) PURE
;
631 STDMETHOD(SetExceptionFilterSecondCommand
)(THIS_ ULONG index
, const char *command
) PURE
;
632 STDMETHOD(WaitForEvent
)(THIS_ ULONG flags
, ULONG timeout
) PURE
;
633 STDMETHOD(GetLastEventInformation
)(THIS_ ULONG
*type
, ULONG
*pid
, ULONG
*tid
, void *extra_info
,
634 ULONG extra_info_size
, ULONG
*extra_info_used
, char *description
, ULONG desc_size
, ULONG
*desc_used
) PURE
;
636 STDMETHOD(GetCurrentTimeDate
)(THIS_ ULONG timedate
) PURE
;
637 STDMETHOD(GetCurrentSystemUpTime
)(THIS_ ULONG uptime
) PURE
;
638 STDMETHOD(GetDumpFormatFlags
)(THIS_ ULONG
*flags
) PURE
;
639 STDMETHOD(GetNumberTextPlacements
)(THIS_ ULONG
*count
) PURE
;
640 STDMETHOD(GetNumberTextReplacement
)(THIS_
const char *src_text
, ULONG index
, char *src_buffer
,
641 ULONG src_buffer_size
, ULONG
*src_size
, char *dst_buffer
, ULONG dst_buffer_size
, ULONG
*dst_size
) PURE
;
642 STDMETHOD(SetTextReplacement
)(THIS_
const char *src_text
, const char *dst_text
) PURE
;
643 STDMETHOD(RemoveTextReplacements
)(THIS
) PURE
;
644 STDMETHOD(OutputTextReplacements
)(THIS_ ULONG output_control
, ULONG flags
) PURE
;