2 * Copyright (C) 2011 Alistair Leslie-Hughes
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
22 interface ICorDebugAppDomain
;
23 interface ICorDebugAppDomainEnum
;
24 interface ICorDebugAssembly
;
25 interface ICorDebugAssemblyEnum
;
26 interface ICorDebugBreakpoint
;
27 interface ICorDebugBreakpointEnum
;
28 interface ICorDebugChain
;
29 interface ICorDebugChainEnum
;
30 interface ICorDebugClass
;
31 interface ICorDebugCode
;
32 interface ICorDebugContext
;
33 interface ICorDebugEditAndContinueSnapshot
;
34 interface ICorDebugEditAndContinueErrorInfo
;
35 interface ICorDebugEnum
;
36 interface ICorDebugErrorInfoEnum
;
37 interface ICorDebugEval
;
38 interface ICorDebugFrame
;
39 interface ICorDebugFrameEnum
;
40 interface ICorDebugFunction
;
41 interface ICorDebugFunctionBreakpoint
;
42 interface ICorDebugModule
;
43 interface ICorDebugModuleBreakpoint
;
44 interface ICorDebugModuleEnum
;
45 interface ICorDebugObjectEnum
;
46 interface ICorDebugObjectValue
;
47 interface ICorDebugProcess
;
48 interface ICorDebugProcessEnum
;
49 interface ICorDebugRegisterSet
;
50 interface ICorDebugStepper
;
51 interface ICorDebugStepperEnum
;
52 interface ICorDebugThreadEnum
;
53 interface ICorDebugUnmanagedCallback
;
54 interface ICorDebugValueBreakpoint
;
57 typedef [wire_marshal(unsigned long)] void *HPROCESS
;
58 typedef [wire_marshal(unsigned long)] void *HTHREAD
;
60 /* These are defined in corhrd.idl but used here. */
63 typedef UINT32 mdToken
;
64 typedef mdToken mdModule
;
65 typedef SIZE_T mdScope
;
66 typedef mdToken mdTypeDef
;
67 typedef mdToken mdSourceFile
;
68 typedef mdToken mdMemberRef
;
69 typedef mdToken mdMethodDef
;
70 typedef mdToken mdFieldDef
;
71 typedef mdToken mdSignature
;
72 typedef ULONG CorElementType
;
73 typedef SIZE_T PCCOR_SIGNATURE
;
75 typedef SIZE_T LPDEBUG_EVENT
;
77 typedef SIZE_T LPSTARTUPINFOW
;
78 typedef SIZE_T LPPROCESS_INFORMATION
;
82 typedef ULONG64 CORDB_ADDRESS
;
83 typedef ULONG64 CORDB_REGISTER
;
86 cpp_quote
("#ifndef _COR_IL_MAP")
87 cpp_quote
("#define _COR_IL_MAP")
89 typedef struct _COR_IL_MAP
96 cpp_quote
("#endif /* _COR_IL_MAP */")
98 cpp_quote
("#ifndef _COR_DEBUG_IL_TO_NATIVE_MAP_")
99 cpp_quote
("#define _COR_DEBUG_IL_TO_NATIVE_MAP_")
101 typedef enum CorDebugIlToNativeMappingTypes
106 } CorDebugIlToNativeMappingTypes
;
108 typedef struct COR_DEBUG_IL_TO_NATIVE_MAP
111 ULONG32 nativeStartOffset
;
112 ULONG32 nativeEndOffset
;
113 } COR_DEBUG_IL_TO_NATIVE_MAP
;
115 cpp_quote
("#endif /* _COR_DEBUG_IL_TO_NATIVE_MAP_ */")
118 typedef enum CorDebugThreadState
122 } CorDebugThreadState
;
124 typedef enum CorDebugCreateProcessFlags
126 DEBUG_NO_SPECIAL_OPTIONS
= 0x0000
127 } CorDebugCreateProcessFlags
;
132 uuid(CC7BCAF7
-8A68
-11d2
-983C
-0000F808342D
),
133 pointer_default(unique)
135 interface ICorDebugValue
: IUnknown
137 HRESULT GetType
([out] CorElementType
*pType
);
138 HRESULT GetSize
([out] ULONG32
*pSize
);
139 HRESULT GetAddress
([out] CORDB_ADDRESS
*pAddress
);
140 HRESULT CreateBreakpoint
([out] ICorDebugValueBreakpoint
**ppBreakpoint
);
146 uuid(938c6d66
-7fb6
-4f69
-b389
-425b8987329b
),
147 pointer_default(unique)
149 interface ICorDebugThread
: IUnknown
151 HRESULT GetProcess
([out] ICorDebugProcess
**ppProcess
);
152 HRESULT GetID
([out] DWORD
*pdwThreadId
);
153 HRESULT GetHandle
([out] HTHREAD
*phThreadHandle
);
154 HRESULT GetAppDomain
([out] ICorDebugAppDomain
**ppAppDomain
);
155 HRESULT SetDebugState
([in] CorDebugThreadState state
);
156 HRESULT GetDebugState
([out] CorDebugThreadState
*pState
);
158 typedef enum CorDebugUserState
160 USER_STOP_REQUESTED
= 0x01,
161 USER_SUSPEND_REQUESTED
= 0x02,
162 USER_BACKGROUND
= 0x04,
163 USER_UNSTARTED
= 0x08,
165 USER_WAIT_SLEEP_JOIN
= 0x20,
166 USER_SUSPENDED
= 0x40,
168 USER_UNSAFE_POINT
= 0x80,
171 HRESULT GetUserState
([out] CorDebugUserState
*pState
);
172 HRESULT GetCurrentException
([out] ICorDebugValue
**ppExceptionObject
);
173 HRESULT ClearCurrentException
();
174 HRESULT CreateStepper
([out] ICorDebugStepper
**ppStepper
);
175 HRESULT EnumerateChains
([out] ICorDebugChainEnum
**ppChains
);
176 HRESULT GetActiveChain
([out] ICorDebugChain
**ppChain
);
177 HRESULT GetActiveFrame
([out] ICorDebugFrame
**ppFrame
);
178 HRESULT GetRegisterSet
([out] ICorDebugRegisterSet
**ppRegisters
);
179 HRESULT CreateEval
([out] ICorDebugEval
**ppEval
);
180 HRESULT GetObject
([out] ICorDebugValue
**ppObject
);
186 uuid(3d6f5f62
-7538-11d3
-8d5b
-00104b35e7ef
),
187 pointer_default(unique)
190 interface ICorDebugController
: IUnknown
192 HRESULT Stop
([in] DWORD dwTimeoutIgnored
);
193 HRESULT Continue
([in] BOOL fIsOutOfBand
);
194 HRESULT IsRunning
([out] BOOL
*pbRunning
);
195 HRESULT HasQueuedCallbacks
([in] ICorDebugThread
*pThread
,
196 [out] BOOL
*pbQueued
);
197 HRESULT EnumerateThreads
([out] ICorDebugThreadEnum
**ppThreads
);
198 HRESULT SetAllThreadsDebugState
([in] CorDebugThreadState state
,
199 [in] ICorDebugThread
*pExceptThisThread
);
201 HRESULT Terminate
([in] UINT exitCode
);
202 HRESULT CanCommitChanges
([in] ULONG cSnapshots
,
203 [in] ICorDebugEditAndContinueSnapshot
*pSnapshots
[],
204 [out] ICorDebugErrorInfoEnum
**pError
);
205 HRESULT CommitChanges
([in] ULONG cSnapshots
,
206 [in] ICorDebugEditAndContinueSnapshot
*pSnapshots
[],
207 [out] ICorDebugErrorInfoEnum
**pError
);
213 uuid(3d6f5f64
-7538-11d3
-8d5b
-00104b35e7ef
),
214 pointer_default(unique)
216 interface ICorDebugProcess
: ICorDebugController
218 HRESULT GetID
([out] DWORD
*pdwProcessId
);
219 HRESULT GetHandle
([out] HPROCESS
*phProcessHandle
);
220 HRESULT GetThread
([in] DWORD dwThreadId
, [out] ICorDebugThread
**ppThread
);
221 HRESULT EnumerateObjects
([out] ICorDebugObjectEnum
**ppObjects
);
222 HRESULT IsTransitionStub
([in] CORDB_ADDRESS address
, [out] BOOL
*pbTransitionStub
);
223 HRESULT IsOSSuspended
([in] DWORD threadID
, [out] BOOL
*pbSuspended
);
224 HRESULT GetThreadContext
([in] DWORD threadID
, [in] ULONG32 contextSize
,
225 [in, out] BYTE context
[]);
226 HRESULT SetThreadContext
([in] DWORD threadID
, [in] ULONG32 contextSize
, [in] BYTE context
[]);
227 HRESULT ReadMemory
([in] CORDB_ADDRESS address
, [in] DWORD size
, [out] BYTE buffer
[], [out] SIZE_T
*read
);
228 HRESULT WriteMemory
([in] CORDB_ADDRESS address
, [in] DWORD size
, [in] BYTE buffer
[], [out] SIZE_T
*written
);
229 HRESULT ClearCurrentException
([in] DWORD threadID
);
230 HRESULT EnableLogMessages
([in]BOOL fOnOff
);
231 HRESULT ModifyLogSwitch
([in] WCHAR
*pLogSwitchName
,
233 HRESULT EnumerateAppDomains
([out] ICorDebugAppDomainEnum
**ppAppDomains
);
234 HRESULT GetObject
([out] ICorDebugValue
**ppObject
);
235 HRESULT ThreadForFiberCookie
([in] DWORD fiberCookie
, [out] ICorDebugThread
**ppThread
);
236 HRESULT GetHelperThreadID
([out] DWORD
*pThreadID
);
242 uuid(3d6f5f63
-7538-11d3
-8d5b
-00104b35e7ef
),
243 pointer_default(unique)
245 interface ICorDebugAppDomain
: ICorDebugController
247 HRESULT GetProcess
([out] ICorDebugProcess
**ppProcess
);
248 HRESULT EnumerateAssemblies
([out] ICorDebugAssemblyEnum
**ppAssemblies
);
249 HRESULT GetModuleFromMetaDataInterface
([in] IUnknown
*pIMetaData
,
250 [out] ICorDebugModule
**ppModule
);
251 HRESULT EnumerateBreakpoints
([out] ICorDebugBreakpointEnum
**ppBreakpoints
);
252 HRESULT EnumerateSteppers
([out] ICorDebugStepperEnum
**ppSteppers
);
253 HRESULT IsAttached
([out] BOOL
*pbAttached
);
254 HRESULT GetName
([in] ULONG32 cchName
, [out] ULONG32
*pcchName
, [out] WCHAR szName
[]);
255 HRESULT GetObject
([out] ICorDebugValue
**ppObject
);
257 HRESULT GetID
([out] ULONG32
*pId
);
263 uuid(3d6f5f60
-7538-11d3
-8d5b
-00104b35e7ef
),
264 pointer_default(unique)
266 interface ICorDebugManagedCallback
: IUnknown
268 HRESULT Breakpoint
([in] ICorDebugAppDomain
*pAppDomain
,
269 [in] ICorDebugThread
*pThread
,
270 [in] ICorDebugBreakpoint
*pBreakpoint
);
272 typedef enum CorDebugStepReason
277 STEP_EXCEPTION_FILTER
,
278 STEP_EXCEPTION_HANDLER
,
281 } CorDebugStepReason
;
283 HRESULT StepComplete
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugThread
*pThread
,
284 [in] ICorDebugStepper
*pStepper
, [in] CorDebugStepReason reason
);
285 HRESULT Break
([in] ICorDebugAppDomain
*pAppDomain
,
286 [in] ICorDebugThread
*thread
);
287 HRESULT Exception
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugThread
*pThread
,
288 [in] BOOL unhandled
);
289 HRESULT EvalComplete
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugThread
*pThread
,
290 [in] ICorDebugEval
*pEval
);
291 HRESULT EvalException
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugThread
*pThread
,
292 [in] ICorDebugEval
*pEval
);
293 HRESULT CreateProcess
([in] ICorDebugProcess
*pProcess
);
294 HRESULT ExitProcess
([in] ICorDebugProcess
*pProcess
);
295 HRESULT CreateThread
([in] ICorDebugAppDomain
*pAppDomain
,[in] ICorDebugThread
*thread
);
296 HRESULT ExitThread
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugThread
*thread
);
297 HRESULT LoadModule
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugModule
*pModule
);
298 HRESULT UnloadModule
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugModule
*pModule
);
299 HRESULT LoadClass
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugClass
*c
);
300 HRESULT UnloadClass
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugClass
*c
);
301 HRESULT DebuggerError
([in] ICorDebugProcess
*pProcess
, [in] HRESULT errorHR
,
302 [in] DWORD errorCode
);
304 typedef enum LoggingLevelEnum
321 typedef enum LogSwitchCallReason
326 } LogSwitchCallReason
;
328 HRESULT LogMessage
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugThread
*pThread
,
329 [in] LONG lLevel
, [in] WCHAR
*pLogSwitchName
, [in] WCHAR
*pMessage
);
330 HRESULT LogSwitch
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugThread
*pThread
,
331 [in] LONG lLevel
, [in] ULONG ulReason
, [in] WCHAR
*pLogSwitchName
,
332 [in] WCHAR
*pParentName
);
333 HRESULT CreateAppDomain
([in] ICorDebugProcess
*pProcess
, [in] ICorDebugAppDomain
*pAppDomain
);
334 HRESULT ExitAppDomain
([in] ICorDebugProcess
*pProcess
, [in] ICorDebugAppDomain
*pAppDomain
);
335 HRESULT LoadAssembly
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugAssembly
*pAssembly
);
336 HRESULT UnloadAssembly
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugAssembly
*pAssembly
);
337 HRESULT ControlCTrap
([in] ICorDebugProcess
*pProcess
);
338 HRESULT NameChange
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugThread
*pThread
);
339 HRESULT UpdateModuleSymbols
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugModule
*pModule
,
340 [in] IStream
*pSymbolStream
);
341 HRESULT EditAndContinueRemap
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugThread
*pThread
,
342 [in] ICorDebugFunction
*pFunction
, [in] BOOL fAccurate
);
344 HRESULT BreakpointSetError
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugThread
*pThread
,
345 [in] ICorDebugBreakpoint
*pBreakpoint
, [in] DWORD dwError
);
351 uuid(3d6f5f61
-7538-11d3
-8d5b
-00104b35e7ef
),
352 pointer_default(unique)
354 interface ICorDebug
: IUnknown
356 HRESULT Initialize
();
358 HRESULT SetManagedHandler
([in] ICorDebugManagedCallback
*pCallback
);
359 HRESULT SetUnmanagedHandler
([in] ICorDebugUnmanagedCallback
*pCallback
);
360 HRESULT CreateProcess
([in] LPCWSTR lpApplicationName
, [in] LPWSTR lpCommandLine
,
361 [in] LPSECURITY_ATTRIBUTES lpProcessAttributes
,
362 [in] LPSECURITY_ATTRIBUTES lpThreadAttributes
,
363 [in] BOOL bInheritHandles
, [in] DWORD dwCreationFlags
,
364 [in] PVOID lpEnvironment
, [in] LPCWSTR lpCurrentDirectory
,
365 [in] LPSTARTUPINFOW lpStartupInfo
,
366 [in] LPPROCESS_INFORMATION lpProcessInformation
,
367 [in] CorDebugCreateProcessFlags debuggingFlags
,
368 [out] ICorDebugProcess
**ppProcess
);
370 HRESULT DebugActiveProcess
([in] DWORD
id, [in] BOOL win32Attach
,
371 [out] ICorDebugProcess
**ppProcess
);
372 HRESULT EnumerateProcesses
([out] ICorDebugProcessEnum
**ppProcess
);
373 HRESULT GetProcess
([in] DWORD dwProcessId
, [out] ICorDebugProcess
**ppProcess
);
374 HRESULT CanLaunchOrAttach
([in] DWORD dwProcessId
, [in] BOOL win32DebuggingEnabled
);
381 uuid(CC7BCAE8
-8A68
-11d2
-983C
-0000F808342D
),
382 pointer_default(unique)
384 interface ICorDebugBreakpoint
: IUnknown
386 HRESULT Activate
([in] BOOL bActive
);
387 HRESULT IsActive
([out] BOOL
*pbActive
);
393 uuid(CC7BCAE9
-8A68
-11d2
-983C
-0000F808342D
),
394 pointer_default(unique)
396 interface ICorDebugFunctionBreakpoint
: ICorDebugBreakpoint
398 HRESULT GetFunction
([out] ICorDebugFunction
**ppFunction
);
399 HRESULT GetOffset
([out] ULONG32
*pnOffset
);
405 uuid(CC7BCAEA
-8A68
-11d2
-983C
-0000F808342D
),
406 pointer_default(unique)
408 interface ICorDebugModuleBreakpoint
: ICorDebugBreakpoint
410 HRESULT GetModule
([out] ICorDebugModule
**ppModule
);
416 uuid(CC7BCAEB
-8A68
-11d2
-983C
-0000F808342D
),
417 pointer_default(unique)
419 interface ICorDebugValueBreakpoint
: ICorDebugBreakpoint
421 HRESULT GetValue
([out] ICorDebugValue
**ppValue
);
427 uuid(CC7BCAEC
-8A68
-11d2
-983C
-0000F808342D
),
428 pointer_default(unique)
430 interface ICorDebugStepper
: IUnknown
432 HRESULT IsActive
([out] BOOL
*pbActive
);
433 HRESULT Deactivate
();
435 typedef enum CorDebugIntercept
437 INTERCEPT_NONE
= 0x0 ,
438 INTERCEPT_CLASS_INIT
= 0x01,
439 INTERCEPT_EXCEPTION_FILTER
= 0x02,
440 INTERCEPT_SECURITY
= 0x04,
441 INTERCEPT_CONTEXT_POLICY
= 0x08,
442 INTERCEPT_INTERCEPTION
= 0x10,
443 INTERCEPT_ALL
= 0xffff
446 HRESULT SetInterceptMask
([in] CorDebugIntercept mask
);
448 typedef enum CorDebugUnmappedStop
453 STOP_NO_MAPPING_INFO
= 0x04,
454 STOP_OTHER_UNMAPPED
= 0x08,
455 STOP_UNMANAGED
= 0x10,
459 } CorDebugUnmappedStop
;
461 HRESULT SetUnmappedStopMask
([in] CorDebugUnmappedStop mask
);
462 HRESULT Step
([in] BOOL bStepIn
);
464 typedef struct COR_DEBUG_STEP_RANGE
466 ULONG32 startOffset
, endOffset
;
467 } COR_DEBUG_STEP_RANGE
;
469 HRESULT StepRange
([in] BOOL bStepIn
, [in] COR_DEBUG_STEP_RANGE ranges
[], [in] ULONG32 cRangeCount
);
471 HRESULT SetRangeIL
([in] BOOL bIL
);
477 uuid(CC7BCB01
-8A68
-11d2
-983C
-0000F808342D
),
478 pointer_default(unique)
480 interface ICorDebugEnum
: IUnknown
482 HRESULT Skip
([in] ULONG celt
);
484 HRESULT Clone
([out] ICorDebugEnum
**ppEnum
);
485 HRESULT GetCount
([out] ULONG
*pcelt
);
491 uuid(63ca1b24
-4359-4883-bd57
-13f815f58744
),
492 pointer_default(unique)
495 interface ICorDebugAppDomainEnum
: ICorDebugEnum
497 HRESULT Next
([in] ULONG celt
, [out] ICorDebugAppDomain
*values
[], [out] ULONG
*pceltFetched
);
504 uuid(4a2a1ec9
-85ec
-4bfb
-9f15
-a89fdfe0fe83
),
505 pointer_default(unique)
507 interface ICorDebugAssemblyEnum
: ICorDebugEnum
509 HRESULT Next
([in] ULONG celt
, [out] ICorDebugAssembly
*values
[], [out] ULONG
*pceltFetched
);
516 uuid(CC7BCB03
-8A68
-11d2
-983C
-0000F808342D
),
517 pointer_default(unique)
519 interface ICorDebugBreakpointEnum
: ICorDebugEnum
521 HRESULT Next
([in] ULONG celt
, [out] ICorDebugBreakpoint
*breakpoints
[], [out] ULONG
*pceltFetched
);
527 uuid(CC7BCB08
-8A68
-11d2
-983C
-0000F808342D
),
528 pointer_default(unique)
530 interface ICorDebugChainEnum
: ICorDebugEnum
532 HRESULT Next
([in] ULONG celt
, [out] ICorDebugChain
*chains
[], [out] ULONG
*pceltFetched
);
538 uuid(F0E18809
-72B5
-11d2
-976F
-00A0C9B4D50C
),
539 pointer_default(unique)
541 interface ICorDebugErrorInfoEnum
: ICorDebugEnum
543 HRESULT Next
([in] ULONG celt
, [out] ICorDebugEditAndContinueErrorInfo
*errors
[],
544 [out] ULONG
*pceltFetched
);
550 uuid(CC7BCB07
-8A68
-11d2
-983C
-0000F808342D
),
551 pointer_default(unique)
553 interface ICorDebugFrameEnum
: ICorDebugEnum
555 HRESULT Next
([in] ULONG celt
, [out] ICorDebugFrame
*frames
[], [out] ULONG
*pceltFetched
);
561 uuid(CC7BCB09
-8A68
-11d2
-983C
-0000F808342D
),
562 pointer_default(unique)
564 interface ICorDebugModuleEnum
: ICorDebugEnum
566 HRESULT Next
([in] ULONG celt
, [out] ICorDebugModule
*modules
[], [out] ULONG
*pceltFetched
);
572 uuid(CC7BCB02
-8A68
-11d2
-983C
-0000F808342D
),
573 pointer_default(unique)
575 interface ICorDebugObjectEnum
: ICorDebugEnum
577 HRESULT Next
([in] ULONG celt
, [out] CORDB_ADDRESS objects
[], [out] ULONG
*pceltFetched
);
583 uuid(CC7BCB05
-8A68
-11d2
-983C
-0000F808342D
),
584 pointer_default(unique)
586 interface ICorDebugProcessEnum
: ICorDebugEnum
588 HRESULT Next
([in] ULONG celt
, [out] ICorDebugProcess
*processes
[], [out] ULONG
*pceltFetched
);
594 uuid(CC7BCB04
-8A68
-11d2
-983C
-0000F808342D
),
595 pointer_default(unique)
597 interface ICorDebugStepperEnum
: ICorDebugEnum
599 HRESULT Next
([in] ULONG celt
, [out] ICorDebugStepper
*steppers
[], [out] ULONG
*pceltFetched
);
605 uuid(CC7BCB06
-8A68
-11d2
-983C
-0000F808342D
),
606 pointer_default(unique)
608 interface ICorDebugThreadEnum
: ICorDebugEnum
610 HRESULT Next
([in] ULONG celt
, [out] ICorDebugThread
*threads
[], [out] ULONG
*pceltFetched
);
616 uuid(CC7BCAEE
-8A68
-11d2
-983C
-0000F808342D
),
617 pointer_default(unique)
619 interface ICorDebugChain
: IUnknown
621 HRESULT GetThread
([out] ICorDebugThread
**ppThread
);
622 HRESULT GetStackRange
([out] CORDB_ADDRESS
*pStart
, [out] CORDB_ADDRESS
*pEnd
);
623 HRESULT GetContext
([out] ICorDebugContext
**ppContext
);
624 HRESULT GetCaller
([out] ICorDebugChain
**ppChain
);
625 HRESULT GetCallee
([out] ICorDebugChain
**ppChain
);
626 HRESULT GetPrevious
([out] ICorDebugChain
**ppChain
);
627 HRESULT GetNext
([out] ICorDebugChain
**ppChain
);
628 HRESULT IsManaged
([out] BOOL
*pManaged
);
629 HRESULT EnumerateFrames
([out] ICorDebugFrameEnum
**ppFrames
);
630 HRESULT GetActiveFrame
([out] ICorDebugFrame
**ppFrame
);
631 HRESULT GetRegisterSet
([out] ICorDebugRegisterSet
**ppRegisters
);
632 typedef enum CorDebugChainReason
635 CHAIN_CLASS_INIT
= 0x001,
636 CHAIN_EXCEPTION_FILTER
= 0x002,
637 CHAIN_SECURITY
= 0x004,
638 CHAIN_CONTEXT_POLICY
= 0x008,
639 CHAIN_INTERCEPTION
= 0x010,
640 CHAIN_PROCESS_START
= 0x020,
641 CHAIN_THREAD_START
= 0x040,
642 CHAIN_ENTER_MANAGED
= 0x080,
643 CHAIN_ENTER_UNMANAGED
= 0x100,
644 CHAIN_DEBUGGER_EVAL
= 0x200,
645 CHAIN_CONTEXT_SWITCH
= 0x400,
646 CHAIN_FUNC_EVAL
= 0x800,
647 } CorDebugChainReason
;
649 HRESULT GetReason
([out] CorDebugChainReason
*pReason
);
655 uuid(CC7BCAEF
-8A68
-11d2
-983C
-0000F808342D
),
656 pointer_default(unique)
658 interface ICorDebugFrame
: IUnknown
660 HRESULT GetChain
([out] ICorDebugChain
**ppChain
);
661 HRESULT GetCode
([out] ICorDebugCode
**ppCode
);
662 HRESULT GetFunction
([out] ICorDebugFunction
**ppFunction
);
663 HRESULT GetFunctionToken
([out] mdMethodDef
*pToken
);
664 HRESULT GetStackRange
([out] CORDB_ADDRESS
*pStart
, [out] CORDB_ADDRESS
*pEnd
);
665 HRESULT GetCaller
([out] ICorDebugFrame
**ppFrame
);
666 HRESULT GetCallee
([out] ICorDebugFrame
**ppFrame
);
667 HRESULT CreateStepper
([out] ICorDebugStepper
**ppStepper
);
674 uuid(CC7BCB0B
-8A68
-11d2
-983C
-0000F808342D
),
675 pointer_default(unique)
677 interface ICorDebugRegisterSet
: IUnknown
679 typedef enum CorDebugRegister
681 REGISTER_INSTRUCTION_POINTER
= 0,
682 REGISTER_STACK_POINTER
,
683 REGISTER_FRAME_POINTER
,
685 REGISTER_X86_EIP
= 0,
697 REGISTER_X86_FPSTACK_0
,
698 REGISTER_X86_FPSTACK_1
,
699 REGISTER_X86_FPSTACK_2
,
700 REGISTER_X86_FPSTACK_3
,
701 REGISTER_X86_FPSTACK_4
,
702 REGISTER_X86_FPSTACK_5
,
703 REGISTER_X86_FPSTACK_6
,
704 REGISTER_X86_FPSTACK_7
,
706 REGISTER_AMD64_RIP
= 0,
737 REGISTER_AMD64_XMM10
,
738 REGISTER_AMD64_XMM11
,
739 REGISTER_AMD64_XMM12
,
740 REGISTER_AMD64_XMM13
,
741 REGISTER_AMD64_XMM14
,
742 REGISTER_AMD64_XMM15
,
744 REGISTER_IA64_BSP
= REGISTER_FRAME_POINTER
,
746 REGISTER_IA64_R0
= REGISTER_IA64_BSP
+ 1,
747 REGISTER_IA64_F0
= REGISTER_IA64_R0
+ 128,
751 HRESULT GetRegistersAvailable
([out] ULONG64
*pAvailable
);
753 HRESULT GetRegisters
([in] ULONG64 mask
, [in] ULONG32 regCount
,
754 [out] CORDB_REGISTER regBuffer
[]);
755 HRESULT SetRegisters
([in] ULONG64 mask
, [in] ULONG32 regCount
,
756 [in] CORDB_REGISTER regBuffer
[]);
757 HRESULT GetThreadContext
([in] ULONG32 contextSize
, [in, out] BYTE context
[]);
758 HRESULT SetThreadContext
([in] ULONG32 contextSize
, [in] BYTE context
[]);
764 uuid(CC7BCAF6
-8A68
-11d2
-983C
-0000F808342D
),
765 pointer_default(unique)
767 interface ICorDebugEval
: IUnknown
769 HRESULT CallFunction
([in] ICorDebugFunction
*pFunction
, [in] ULONG32 nArgs
,
770 [in] ICorDebugValue
*ppArgs
[]);
771 HRESULT NewObject
([in] ICorDebugFunction
*pConstructor
, [in] ULONG32 nArgs
,
772 [in] ICorDebugValue
*ppArgs
[]);
773 HRESULT NewObjectNoConstructor
([in] ICorDebugClass
*pClass
);
774 HRESULT NewString
([in] LPCWSTR
string);
775 HRESULT NewArray
([in] CorElementType elementType
, [in] ICorDebugClass
*pElementClass
,
776 [in] ULONG32 rank
, [in] ULONG32 dims
[], [in] ULONG32 lowBounds
[]);
777 HRESULT IsActive
([out] BOOL
*pbActive
);
779 HRESULT GetResult
([out] ICorDebugValue
**ppResult
);
780 HRESULT GetThread
([out] ICorDebugThread
**ppThread
);
781 HRESULT CreateValue
([in] CorElementType elementType
, [in] ICorDebugClass
*pElementClass
,
782 [out] ICorDebugValue
**ppValue
);
788 uuid(6DC3FA01
-D7CB
-11d2
-8A95
-0080C792E5D8
),
789 pointer_default(unique)
791 interface ICorDebugEditAndContinueSnapshot
: IUnknown
793 HRESULT CopyMetaData
([in] IStream
*pIStream
, [out] GUID
*pMvid
);
794 HRESULT GetMvid
([out] GUID
*pMvid
);
795 HRESULT GetRoDataRVA
([out] ULONG32
*pRoDataRVA
);
796 HRESULT GetRwDataRVA
([out] ULONG32
*pRwDataRVA
);
797 HRESULT SetPEBytes
([in] IStream
*pIStream
);
798 HRESULT SetILMap
([in] mdToken mdFunction
, [in] ULONG cMapSize
, [in] COR_IL_MAP map
[]);
799 HRESULT SetPESymbolBytes
([in] IStream
*pIStream
);
805 uuid(dba2d8c1
-e5c5
-4069-8c13
-10a7c6abf43d
),
806 pointer_default(unique)
808 interface ICorDebugModule
: IUnknown
810 HRESULT GetProcess
([out] ICorDebugProcess
**ppProcess
);
811 HRESULT GetBaseAddress
([out] CORDB_ADDRESS
*pAddress
);
812 HRESULT GetAssembly
([out] ICorDebugAssembly
**ppAssembly
);
813 HRESULT GetName
([in] ULONG32 cchName
, [out] ULONG32
*pcchName
, [out] WCHAR szName
[]);
814 HRESULT EnableJITDebugging
([in] BOOL bTrackJITInfo
, [in] BOOL bAllowJitOpts
);
815 HRESULT EnableClassLoadCallbacks
([in] BOOL bClassLoadCallbacks
);
816 HRESULT GetFunctionFromToken
([in] mdMethodDef methodDef
, [out] ICorDebugFunction
**ppFunction
);
817 HRESULT GetFunctionFromRVA
([in] CORDB_ADDRESS rva
, [out] ICorDebugFunction
**ppFunction
);
818 HRESULT GetClassFromToken
([in] mdTypeDef
typeDef, [out] ICorDebugClass
**ppClass
);
819 HRESULT CreateBreakpoint
([out] ICorDebugModuleBreakpoint
**ppBreakpoint
);
820 HRESULT GetEditAndContinueSnapshot
([out] ICorDebugEditAndContinueSnapshot
**ppEditAndContinueSnapshot
);
821 HRESULT GetMetaDataInterface
([in] REFIID riid
, [out] IUnknown
**ppObj
);
822 HRESULT GetToken
([out] mdModule
*pToken
);
823 HRESULT IsDynamic
([out] BOOL
*pDynamic
);
824 HRESULT GetGlobalVariableValue
([in] mdFieldDef fieldDef
, [out] ICorDebugValue
**ppValue
);
825 HRESULT GetSize
([out] ULONG32
*pcBytes
);
826 HRESULT IsInMemory
([out] BOOL
*pInMemory
);
832 uuid(CC7BCAF5
-8A68
-11d2
-983C
-0000F808342D
),
833 pointer_default(unique)
835 interface ICorDebugClass
: IUnknown
837 HRESULT GetModule
([out] ICorDebugModule
**pModule
);
838 HRESULT GetToken
([out] mdTypeDef
*pTypeDef
);
839 HRESULT GetStaticFieldValue
([in] mdFieldDef fieldDef
, [in] ICorDebugFrame
*pFrame
,
840 [out] ICorDebugValue
**ppValue
);
846 uuid(df59507c
-d47a
-459e
-bce2
-6427eac8fd06
),
847 pointer_default(unique)
849 interface ICorDebugAssembly
: IUnknown
851 HRESULT GetProcess
([out] ICorDebugProcess
**ppProcess
);
852 HRESULT GetAppDomain
([out] ICorDebugAppDomain
**ppAppDomain
);
853 HRESULT EnumerateModules
([out] ICorDebugModuleEnum
**ppModules
);
854 HRESULT GetCodeBase
([in] ULONG32 cchName
, [out] ULONG32
*pcchName
, [out] WCHAR szName
[]);
855 HRESULT GetName
([in] ULONG32 cchName
, [out] ULONG32
*pcchName
, [out] WCHAR szName
[]);
862 uuid(CC7BCAF3
-8A68
-11d2
-983C
-0000F808342D
),
863 pointer_default(unique)
865 interface ICorDebugFunction
: IUnknown
867 HRESULT GetModule
([out] ICorDebugModule
**ppModule
);
868 HRESULT GetClass
([out] ICorDebugClass
**ppClass
);
869 HRESULT GetToken
([out] mdMethodDef
*pMethodDef
);
870 HRESULT GetILCode
([out] ICorDebugCode
**ppCode
);
871 HRESULT GetNativeCode
([out] ICorDebugCode
**ppCode
);
872 HRESULT CreateBreakpoint
([out] ICorDebugFunctionBreakpoint
**ppBreakpoint
);
873 HRESULT GetLocalVarSigToken
([out] mdSignature
*pmdSig
);
874 HRESULT GetCurrentVersionNumber
([out] ULONG32
*pnCurrentVersion
);
880 uuid(5263E909
-8CB5
-11d3
-BD2F
-0000F80849BD
),
881 pointer_default(unique)
883 interface ICorDebugUnmanagedCallback
: IUnknown
885 HRESULT DebugEvent
([in] LPDEBUG_EVENT pDebugEvent
, [in] BOOL fOutOfBand
);
891 uuid(8D600D41
-F4F6
-4cb3
-B7EC
-7BD164944036
),
892 pointer_default(unique)
894 interface ICorDebugEditAndContinueErrorInfo
: IUnknown
896 HRESULT GetModule
([out] ICorDebugModule
**ppModule
);
897 HRESULT GetToken
([out]mdToken
*pToken
);
898 HRESULT GetErrorCode
([out]HRESULT *pHr
);
899 HRESULT GetString
([in] ULONG32 cchString
, [out] ULONG32
*pcchString
,
900 [out] WCHAR szString
[]);
906 uuid(18AD3D6E
-B7D2
-11d2
-BD04
-0000F80849BD
),
907 pointer_default(unique)
909 interface ICorDebugObjectValue
: ICorDebugValue
911 HRESULT GetClass
([out] ICorDebugClass
**ppClass
);
912 HRESULT GetFieldValue
([in] ICorDebugClass
*pClass
, [in] mdFieldDef fieldDef
,
913 [out] ICorDebugValue
**ppValue
);
914 HRESULT GetVirtualMethod
([in] mdMemberRef memberRef
, [out] ICorDebugFunction
**ppFunction
);
915 HRESULT GetContext
([out] ICorDebugContext
**ppContext
);
916 HRESULT IsValueClass
([out] BOOL
*pbIsValueClass
);
917 HRESULT GetManagedCopy
([out] IUnknown
**ppObject
);
918 HRESULT SetFromManagedCopy
([in] IUnknown
*pObject
);
924 uuid(CC7BCB00
-8A68
-11d2
-983C
-0000F808342D
),
925 pointer_default(unique)
927 interface ICorDebugContext
: ICorDebugObjectValue
934 uuid(CC7BCAF4
-8A68
-11d2
-983C
-0000F808342D
),
935 pointer_default(unique)
937 interface ICorDebugCode
: IUnknown
939 HRESULT IsIL
([out] BOOL
*pbIL
);
940 HRESULT GetFunction
([out] ICorDebugFunction
**ppFunction
);
941 HRESULT GetAddress
([out] CORDB_ADDRESS
*pStart
);
942 HRESULT GetSize
([out] ULONG32
*pcBytes
);
943 HRESULT CreateBreakpoint
([in] ULONG32 offset
, [out] ICorDebugFunctionBreakpoint
**ppBreakpoint
);
944 HRESULT GetCode
([in] ULONG32 startOffset
, [in] ULONG32 endOffset
,
945 [in] ULONG32 cBufferAlloc
, [out] BYTE buffer
[], [out] ULONG32
*pcBufferSize
);
946 HRESULT GetVersionNumber
([out] ULONG32
*nVersion
);
947 HRESULT GetILToNativeMapping
([in] ULONG32 cMap
, [out] ULONG32
*pcMap
,
948 [out] COR_DEBUG_IL_TO_NATIVE_MAP map
[]);
949 HRESULT GetEnCRemapSequencePoints
([in] ULONG32 cMap
,[out] ULONG32
*pcMap
,
950 [out] ULONG32 offsets
[]);