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 cpp_quote
("#ifdef WINE_NO_UNICODE_MACROS")
23 cpp_quote
("#undef CreateProcess")
26 interface ICorDebugAppDomain
;
27 interface ICorDebugAppDomainEnum
;
28 interface ICorDebugAssembly
;
29 interface ICorDebugAssemblyEnum
;
30 interface ICorDebugBreakpoint
;
31 interface ICorDebugBreakpointEnum
;
32 interface ICorDebugChain
;
33 interface ICorDebugChainEnum
;
34 interface ICorDebugClass
;
35 interface ICorDebugCode
;
36 interface ICorDebugContext
;
37 interface ICorDebugEditAndContinueSnapshot
;
38 interface ICorDebugEditAndContinueErrorInfo
;
39 interface ICorDebugEnum
;
40 interface ICorDebugErrorInfoEnum
;
41 interface ICorDebugEval
;
42 interface ICorDebugFrame
;
43 interface ICorDebugFrameEnum
;
44 interface ICorDebugFunction
;
45 interface ICorDebugFunctionBreakpoint
;
46 interface ICorDebugManagedCallback
;
47 interface ICorDebugManagedCallback2
;
48 interface ICorDebugMDA
;
49 interface ICorDebugModule
;
50 interface ICorDebugModuleBreakpoint
;
51 interface ICorDebugModuleEnum
;
52 interface ICorDebugObjectEnum
;
53 interface ICorDebugObjectValue
;
54 interface ICorDebugProcess
;
55 interface ICorDebugProcessEnum
;
56 interface ICorDebugRegisterSet
;
57 interface ICorDebugStepper
;
58 interface ICorDebugStepperEnum
;
59 interface ICorDebugThreadEnum
;
60 interface ICorDebugUnmanagedCallback
;
61 interface ICorDebugValue
;
62 interface ICorDebugValueBreakpoint
;
65 typedef [wire_marshal(unsigned long)] void *HPROCESS
;
66 typedef [wire_marshal(unsigned long)] void *HTHREAD
;
68 /* These are defined in corhrd.idl but used here. */
71 typedef UINT32 mdToken
;
72 typedef mdToken mdModule
;
73 typedef SIZE_T mdScope
;
74 typedef mdToken mdTypeDef
;
75 typedef mdToken mdSourceFile
;
76 typedef mdToken mdMemberRef
;
77 typedef mdToken mdMethodDef
;
78 typedef mdToken mdFieldDef
;
79 typedef mdToken mdSignature
;
80 typedef ULONG CorElementType
;
81 typedef SIZE_T PCCOR_SIGNATURE
;
83 typedef SIZE_T LPDEBUG_EVENT
;
85 typedef SIZE_T LPSTARTUPINFOW
;
86 typedef SIZE_T LPPROCESS_INFORMATION
;
90 typedef ULONG64 CORDB_ADDRESS
;
91 typedef ULONG64 CORDB_REGISTER
;
93 typedef UINT64 TASKID
;
97 cpp_quote
("#ifndef _COR_IL_MAP")
98 cpp_quote
("#define _COR_IL_MAP")
100 typedef struct _COR_IL_MAP
107 cpp_quote
("#endif /* _COR_IL_MAP */")
109 cpp_quote
("#ifndef _COR_DEBUG_IL_TO_NATIVE_MAP_")
110 cpp_quote
("#define _COR_DEBUG_IL_TO_NATIVE_MAP_")
112 typedef enum CorDebugIlToNativeMappingTypes
117 } CorDebugIlToNativeMappingTypes
;
119 typedef struct COR_DEBUG_IL_TO_NATIVE_MAP
122 ULONG32 nativeStartOffset
;
123 ULONG32 nativeEndOffset
;
124 } COR_DEBUG_IL_TO_NATIVE_MAP
;
126 cpp_quote
("#endif /* _COR_DEBUG_IL_TO_NATIVE_MAP_ */")
129 typedef enum CorDebugThreadState
133 } CorDebugThreadState
;
135 typedef enum CorDebugCreateProcessFlags
137 DEBUG_NO_SPECIAL_OPTIONS
= 0x0000
138 } CorDebugCreateProcessFlags
;
143 uuid(CC7BCAF7
-8A68
-11d2
-983C
-0000F808342D
),
144 pointer_default(unique)
146 interface ICorDebugValue
: IUnknown
148 HRESULT GetType
([out] CorElementType
*pType
);
149 HRESULT GetSize
([out] ULONG32
*pSize
);
150 HRESULT GetAddress
([out] CORDB_ADDRESS
*pAddress
);
151 HRESULT CreateBreakpoint
([out] ICorDebugValueBreakpoint
**ppBreakpoint
);
157 uuid(938c6d66
-7fb6
-4f69
-b389
-425b8987329b
),
158 pointer_default(unique)
160 interface ICorDebugThread
: IUnknown
162 HRESULT GetProcess
([out] ICorDebugProcess
**ppProcess
);
163 HRESULT GetID
([out] DWORD
*pdwThreadId
);
164 HRESULT GetHandle
([out] HTHREAD
*phThreadHandle
);
165 HRESULT GetAppDomain
([out] ICorDebugAppDomain
**ppAppDomain
);
166 HRESULT SetDebugState
([in] CorDebugThreadState state
);
167 HRESULT GetDebugState
([out] CorDebugThreadState
*pState
);
169 typedef enum CorDebugUserState
171 USER_STOP_REQUESTED
= 0x01,
172 USER_SUSPEND_REQUESTED
= 0x02,
173 USER_BACKGROUND
= 0x04,
174 USER_UNSTARTED
= 0x08,
176 USER_WAIT_SLEEP_JOIN
= 0x20,
177 USER_SUSPENDED
= 0x40,
179 USER_UNSAFE_POINT
= 0x80,
182 HRESULT GetUserState
([out] CorDebugUserState
*pState
);
183 HRESULT GetCurrentException
([out] ICorDebugValue
**ppExceptionObject
);
184 HRESULT ClearCurrentException
();
185 HRESULT CreateStepper
([out] ICorDebugStepper
**ppStepper
);
186 HRESULT EnumerateChains
([out] ICorDebugChainEnum
**ppChains
);
187 HRESULT GetActiveChain
([out] ICorDebugChain
**ppChain
);
188 HRESULT GetActiveFrame
([out] ICorDebugFrame
**ppFrame
);
189 HRESULT GetRegisterSet
([out] ICorDebugRegisterSet
**ppRegisters
);
190 HRESULT CreateEval
([out] ICorDebugEval
**ppEval
);
191 HRESULT GetObject
([out] ICorDebugValue
**ppObject
);
197 uuid(3d6f5f62
-7538-11d3
-8d5b
-00104b35e7ef
),
198 pointer_default(unique)
201 interface ICorDebugController
: IUnknown
203 HRESULT Stop
([in] DWORD dwTimeoutIgnored
);
204 HRESULT Continue
([in] BOOL fIsOutOfBand
);
205 HRESULT IsRunning
([out] BOOL
*pbRunning
);
206 HRESULT HasQueuedCallbacks
([in] ICorDebugThread
*pThread
,
207 [out] BOOL
*pbQueued
);
208 HRESULT EnumerateThreads
([out] ICorDebugThreadEnum
**ppThreads
);
209 HRESULT SetAllThreadsDebugState
([in] CorDebugThreadState state
,
210 [in] ICorDebugThread
*pExceptThisThread
);
212 HRESULT Terminate
([in] UINT exitCode
);
213 HRESULT CanCommitChanges
([in] ULONG cSnapshots
,
214 [in] ICorDebugEditAndContinueSnapshot
*pSnapshots
[],
215 [out] ICorDebugErrorInfoEnum
**pError
);
216 HRESULT CommitChanges
([in] ULONG cSnapshots
,
217 [in] ICorDebugEditAndContinueSnapshot
*pSnapshots
[],
218 [out] ICorDebugErrorInfoEnum
**pError
);
224 uuid(3d6f5f64
-7538-11d3
-8d5b
-00104b35e7ef
),
225 pointer_default(unique)
227 interface ICorDebugProcess
: ICorDebugController
229 HRESULT GetID
([out] DWORD
*pdwProcessId
);
230 HRESULT GetHandle
([out] HPROCESS
*phProcessHandle
);
231 HRESULT GetThread
([in] DWORD dwThreadId
, [out] ICorDebugThread
**ppThread
);
232 HRESULT EnumerateObjects
([out] ICorDebugObjectEnum
**ppObjects
);
233 HRESULT IsTransitionStub
([in] CORDB_ADDRESS address
, [out] BOOL
*pbTransitionStub
);
234 HRESULT IsOSSuspended
([in] DWORD threadID
, [out] BOOL
*pbSuspended
);
235 HRESULT GetThreadContext
([in] DWORD threadID
, [in] ULONG32 contextSize
,
236 [in, out] BYTE context
[]);
237 HRESULT SetThreadContext
([in] DWORD threadID
, [in] ULONG32 contextSize
, [in] BYTE context
[]);
238 HRESULT ReadMemory
([in] CORDB_ADDRESS address
, [in] DWORD size
, [out] BYTE buffer
[], [out] SIZE_T
*read
);
239 HRESULT WriteMemory
([in] CORDB_ADDRESS address
, [in] DWORD size
, [in] BYTE buffer
[], [out] SIZE_T
*written
);
240 HRESULT ClearCurrentException
([in] DWORD threadID
);
241 HRESULT EnableLogMessages
([in]BOOL fOnOff
);
242 HRESULT ModifyLogSwitch
([in] WCHAR
*pLogSwitchName
,
244 HRESULT EnumerateAppDomains
([out] ICorDebugAppDomainEnum
**ppAppDomains
);
245 HRESULT GetObject
([out] ICorDebugValue
**ppObject
);
246 HRESULT ThreadForFiberCookie
([in] DWORD fiberCookie
, [out] ICorDebugThread
**ppThread
);
247 HRESULT GetHelperThreadID
([out] DWORD
*pThreadID
);
253 uuid(3d6f5f63
-7538-11d3
-8d5b
-00104b35e7ef
),
254 pointer_default(unique)
256 interface ICorDebugAppDomain
: ICorDebugController
258 HRESULT GetProcess
([out] ICorDebugProcess
**ppProcess
);
259 HRESULT EnumerateAssemblies
([out] ICorDebugAssemblyEnum
**ppAssemblies
);
260 HRESULT GetModuleFromMetaDataInterface
([in] IUnknown
*pIMetaData
,
261 [out] ICorDebugModule
**ppModule
);
262 HRESULT EnumerateBreakpoints
([out] ICorDebugBreakpointEnum
**ppBreakpoints
);
263 HRESULT EnumerateSteppers
([out] ICorDebugStepperEnum
**ppSteppers
);
264 HRESULT IsAttached
([out] BOOL
*pbAttached
);
265 HRESULT GetName
([in] ULONG32 cchName
, [out] ULONG32
*pcchName
, [out] WCHAR szName
[]);
266 HRESULT GetObject
([out] ICorDebugValue
**ppObject
);
268 HRESULT GetID
([out] ULONG32
*pId
);
274 uuid(3d6f5f60
-7538-11d3
-8d5b
-00104b35e7ef
),
275 pointer_default(unique)
277 interface ICorDebugManagedCallback
: IUnknown
279 HRESULT Breakpoint
([in] ICorDebugAppDomain
*pAppDomain
,
280 [in] ICorDebugThread
*pThread
,
281 [in] ICorDebugBreakpoint
*pBreakpoint
);
283 typedef enum CorDebugStepReason
288 STEP_EXCEPTION_FILTER
,
289 STEP_EXCEPTION_HANDLER
,
292 } CorDebugStepReason
;
294 HRESULT StepComplete
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugThread
*pThread
,
295 [in] ICorDebugStepper
*pStepper
, [in] CorDebugStepReason reason
);
296 HRESULT Break
([in] ICorDebugAppDomain
*pAppDomain
,
297 [in] ICorDebugThread
*thread
);
298 HRESULT Exception
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugThread
*pThread
,
299 [in] BOOL unhandled
);
300 HRESULT EvalComplete
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugThread
*pThread
,
301 [in] ICorDebugEval
*pEval
);
302 HRESULT EvalException
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugThread
*pThread
,
303 [in] ICorDebugEval
*pEval
);
304 HRESULT CreateProcess
([in] ICorDebugProcess
*pProcess
);
305 HRESULT ExitProcess
([in] ICorDebugProcess
*pProcess
);
306 HRESULT CreateThread
([in] ICorDebugAppDomain
*pAppDomain
,[in] ICorDebugThread
*thread
);
307 HRESULT ExitThread
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugThread
*thread
);
308 HRESULT LoadModule
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugModule
*pModule
);
309 HRESULT UnloadModule
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugModule
*pModule
);
310 HRESULT LoadClass
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugClass
*c
);
311 HRESULT UnloadClass
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugClass
*c
);
312 HRESULT DebuggerError
([in] ICorDebugProcess
*pProcess
, [in] HRESULT errorHR
,
313 [in] DWORD errorCode
);
315 typedef enum LoggingLevelEnum
332 typedef enum LogSwitchCallReason
337 } LogSwitchCallReason
;
339 HRESULT LogMessage
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugThread
*pThread
,
340 [in] LONG lLevel
, [in] WCHAR
*pLogSwitchName
, [in] WCHAR
*pMessage
);
341 HRESULT LogSwitch
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugThread
*pThread
,
342 [in] LONG lLevel
, [in] ULONG ulReason
, [in] WCHAR
*pLogSwitchName
,
343 [in] WCHAR
*pParentName
);
344 HRESULT CreateAppDomain
([in] ICorDebugProcess
*pProcess
, [in] ICorDebugAppDomain
*pAppDomain
);
345 HRESULT ExitAppDomain
([in] ICorDebugProcess
*pProcess
, [in] ICorDebugAppDomain
*pAppDomain
);
346 HRESULT LoadAssembly
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugAssembly
*pAssembly
);
347 HRESULT UnloadAssembly
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugAssembly
*pAssembly
);
348 HRESULT ControlCTrap
([in] ICorDebugProcess
*pProcess
);
349 HRESULT NameChange
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugThread
*pThread
);
350 HRESULT UpdateModuleSymbols
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugModule
*pModule
,
351 [in] IStream
*pSymbolStream
);
352 HRESULT EditAndContinueRemap
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugThread
*pThread
,
353 [in] ICorDebugFunction
*pFunction
, [in] BOOL fAccurate
);
355 HRESULT BreakpointSetError
([in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugThread
*pThread
,
356 [in] ICorDebugBreakpoint
*pBreakpoint
, [in] DWORD dwError
);
362 uuid(250E5EEA
-DB5C
-4C76
-B6F3
-8C46F12E3203
),
363 pointer_default(unique)
365 interface ICorDebugManagedCallback2
: IUnknown
367 HRESULT FunctionRemapOpportunity
([in] ICorDebugAppDomain
*pAppDomain
,
368 [in] ICorDebugThread
*pThread
, [in] ICorDebugFunction
*pOldFunction
,
369 [in] ICorDebugFunction
*pNewFunction
, [in] ULONG32 oldILOffset
);
371 HRESULT CreateConnection
([in] ICorDebugProcess
*pProcess
, [in] CONNID dwConnectionId
,
372 [in] WCHAR
*pConnName
);
374 HRESULT ChangeConnection
([in] ICorDebugProcess
*pProcess
, [in] CONNID dwConnectionId
);
376 HRESULT DestroyConnection
([in] ICorDebugProcess
*pProcess
, [in] CONNID dwConnectionId
);
379 typedef enum CorDebugExceptionCallbackType
381 DEBUG_EXCEPTION_FIRST_CHANCE
= 1,
382 DEBUG_EXCEPTION_USER_FIRST_CHANCE
= 2,
383 DEBUG_EXCEPTION_CATCH_HANDLER_FOUND
= 3,
384 DEBUG_EXCEPTION_UNHANDLED
= 4
385 } CorDebugExceptionCallbackType
;
387 typedef enum CorDebugExceptionFlags
389 DEBUG_EXCEPTION_CAN_BE_INTERCEPTED
= 0x0001
390 } CorDebugExceptionFlags
;
392 HRESULT Exception
( [in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugThread
*pThread
,
393 [in] ICorDebugFrame
*pFrame
, [in] ULONG32 nOffset
,
394 [in] CorDebugExceptionCallbackType dwEventType
, [in] DWORD dwFlags
);
396 typedef enum CorDebugExceptionUnwindCallbackType
398 DEBUG_EXCEPTION_UNWIND_BEGIN
= 1,
399 DEBUG_EXCEPTION_INTERCEPTED
= 2
400 } CorDebugExceptionUnwindCallbackType
;
402 HRESULT ExceptionUnwind
( [in] ICorDebugAppDomain
*pAppDomain
, [in] ICorDebugThread
*pThread
,
403 [in] CorDebugExceptionUnwindCallbackType dwEventType
,
404 [in] DWORD dwFlags
);
406 HRESULT FunctionRemapComplete
([in] ICorDebugAppDomain
*pAppDomain
,
407 [in] ICorDebugThread
*pThread
, [in] ICorDebugFunction
*pFunction
);
409 HRESULT MDANotification
([in] ICorDebugController
* pController
,
410 [in] ICorDebugThread
*pThread
, [in] ICorDebugMDA
* pMDA
417 uuid(3d6f5f61
-7538-11d3
-8d5b
-00104b35e7ef
),
418 pointer_default(unique)
420 interface ICorDebug
: IUnknown
422 HRESULT Initialize
();
424 HRESULT SetManagedHandler
([in] ICorDebugManagedCallback
*pCallback
);
425 HRESULT SetUnmanagedHandler
([in] ICorDebugUnmanagedCallback
*pCallback
);
426 HRESULT CreateProcess
([in] LPCWSTR lpApplicationName
, [in] LPWSTR lpCommandLine
,
427 [in] LPSECURITY_ATTRIBUTES lpProcessAttributes
,
428 [in] LPSECURITY_ATTRIBUTES lpThreadAttributes
,
429 [in] BOOL bInheritHandles
, [in] DWORD dwCreationFlags
,
430 [in] PVOID lpEnvironment
, [in] LPCWSTR lpCurrentDirectory
,
431 [in] LPSTARTUPINFOW lpStartupInfo
,
432 [in] LPPROCESS_INFORMATION lpProcessInformation
,
433 [in] CorDebugCreateProcessFlags debuggingFlags
,
434 [out] ICorDebugProcess
**ppProcess
);
436 HRESULT DebugActiveProcess
([in] DWORD
id, [in] BOOL win32Attach
,
437 [out] ICorDebugProcess
**ppProcess
);
438 HRESULT EnumerateProcesses
([out] ICorDebugProcessEnum
**ppProcess
);
439 HRESULT GetProcess
([in] DWORD dwProcessId
, [out] ICorDebugProcess
**ppProcess
);
440 HRESULT CanLaunchOrAttach
([in] DWORD dwProcessId
, [in] BOOL win32DebuggingEnabled
);
447 uuid(CC7BCAE8
-8A68
-11d2
-983C
-0000F808342D
),
448 pointer_default(unique)
450 interface ICorDebugBreakpoint
: IUnknown
452 HRESULT Activate
([in] BOOL bActive
);
453 HRESULT IsActive
([out] BOOL
*pbActive
);
459 uuid(CC7BCAE9
-8A68
-11d2
-983C
-0000F808342D
),
460 pointer_default(unique)
462 interface ICorDebugFunctionBreakpoint
: ICorDebugBreakpoint
464 HRESULT GetFunction
([out] ICorDebugFunction
**ppFunction
);
465 HRESULT GetOffset
([out] ULONG32
*pnOffset
);
471 uuid(CC7BCAEA
-8A68
-11d2
-983C
-0000F808342D
),
472 pointer_default(unique)
474 interface ICorDebugModuleBreakpoint
: ICorDebugBreakpoint
476 HRESULT GetModule
([out] ICorDebugModule
**ppModule
);
482 uuid(CC7BCAEB
-8A68
-11d2
-983C
-0000F808342D
),
483 pointer_default(unique)
485 interface ICorDebugValueBreakpoint
: ICorDebugBreakpoint
487 HRESULT GetValue
([out] ICorDebugValue
**ppValue
);
493 uuid(CC7BCAEC
-8A68
-11d2
-983C
-0000F808342D
),
494 pointer_default(unique)
496 interface ICorDebugStepper
: IUnknown
498 HRESULT IsActive
([out] BOOL
*pbActive
);
499 HRESULT Deactivate
();
501 typedef enum CorDebugIntercept
503 INTERCEPT_NONE
= 0x0 ,
504 INTERCEPT_CLASS_INIT
= 0x01,
505 INTERCEPT_EXCEPTION_FILTER
= 0x02,
506 INTERCEPT_SECURITY
= 0x04,
507 INTERCEPT_CONTEXT_POLICY
= 0x08,
508 INTERCEPT_INTERCEPTION
= 0x10,
509 INTERCEPT_ALL
= 0xffff
512 HRESULT SetInterceptMask
([in] CorDebugIntercept mask
);
514 typedef enum CorDebugUnmappedStop
519 STOP_NO_MAPPING_INFO
= 0x04,
520 STOP_OTHER_UNMAPPED
= 0x08,
521 STOP_UNMANAGED
= 0x10,
525 } CorDebugUnmappedStop
;
527 HRESULT SetUnmappedStopMask
([in] CorDebugUnmappedStop mask
);
528 HRESULT Step
([in] BOOL bStepIn
);
530 typedef struct COR_DEBUG_STEP_RANGE
532 ULONG32 startOffset
, endOffset
;
533 } COR_DEBUG_STEP_RANGE
;
535 HRESULT StepRange
([in] BOOL bStepIn
, [in] COR_DEBUG_STEP_RANGE ranges
[], [in] ULONG32 cRangeCount
);
537 HRESULT SetRangeIL
([in] BOOL bIL
);
543 uuid(CC7BCB01
-8A68
-11d2
-983C
-0000F808342D
),
544 pointer_default(unique)
546 interface ICorDebugEnum
: IUnknown
548 HRESULT Skip
([in] ULONG celt
);
550 HRESULT Clone
([out] ICorDebugEnum
**ppEnum
);
551 HRESULT GetCount
([out] ULONG
*pcelt
);
557 uuid(63ca1b24
-4359-4883-bd57
-13f815f58744
),
558 pointer_default(unique)
561 interface ICorDebugAppDomainEnum
: ICorDebugEnum
563 HRESULT Next
([in] ULONG celt
, [out] ICorDebugAppDomain
*values
[], [out] ULONG
*pceltFetched
);
570 uuid(4a2a1ec9
-85ec
-4bfb
-9f15
-a89fdfe0fe83
),
571 pointer_default(unique)
573 interface ICorDebugAssemblyEnum
: ICorDebugEnum
575 HRESULT Next
([in] ULONG celt
, [out] ICorDebugAssembly
*values
[], [out] ULONG
*pceltFetched
);
582 uuid(CC7BCB03
-8A68
-11d2
-983C
-0000F808342D
),
583 pointer_default(unique)
585 interface ICorDebugBreakpointEnum
: ICorDebugEnum
587 HRESULT Next
([in] ULONG celt
, [out] ICorDebugBreakpoint
*breakpoints
[], [out] ULONG
*pceltFetched
);
593 uuid(CC7BCB08
-8A68
-11d2
-983C
-0000F808342D
),
594 pointer_default(unique)
596 interface ICorDebugChainEnum
: ICorDebugEnum
598 HRESULT Next
([in] ULONG celt
, [out] ICorDebugChain
*chains
[], [out] ULONG
*pceltFetched
);
604 uuid(F0E18809
-72B5
-11d2
-976F
-00A0C9B4D50C
),
605 pointer_default(unique)
607 interface ICorDebugErrorInfoEnum
: ICorDebugEnum
609 HRESULT Next
([in] ULONG celt
, [out] ICorDebugEditAndContinueErrorInfo
*errors
[],
610 [out] ULONG
*pceltFetched
);
616 uuid(CC7BCB07
-8A68
-11d2
-983C
-0000F808342D
),
617 pointer_default(unique)
619 interface ICorDebugFrameEnum
: ICorDebugEnum
621 HRESULT Next
([in] ULONG celt
, [out] ICorDebugFrame
*frames
[], [out] ULONG
*pceltFetched
);
627 uuid(CC7BCB09
-8A68
-11d2
-983C
-0000F808342D
),
628 pointer_default(unique)
630 interface ICorDebugModuleEnum
: ICorDebugEnum
632 HRESULT Next
([in] ULONG celt
, [out] ICorDebugModule
*modules
[], [out] ULONG
*pceltFetched
);
638 uuid(CC7BCB02
-8A68
-11d2
-983C
-0000F808342D
),
639 pointer_default(unique)
641 interface ICorDebugObjectEnum
: ICorDebugEnum
643 HRESULT Next
([in] ULONG celt
, [out] CORDB_ADDRESS objects
[], [out] ULONG
*pceltFetched
);
649 uuid(CC7BCB05
-8A68
-11d2
-983C
-0000F808342D
),
650 pointer_default(unique)
652 interface ICorDebugProcessEnum
: ICorDebugEnum
654 HRESULT Next
([in] ULONG celt
, [out] ICorDebugProcess
*processes
[], [out] ULONG
*pceltFetched
);
660 uuid(CC7BCB04
-8A68
-11d2
-983C
-0000F808342D
),
661 pointer_default(unique)
663 interface ICorDebugStepperEnum
: ICorDebugEnum
665 HRESULT Next
([in] ULONG celt
, [out] ICorDebugStepper
*steppers
[], [out] ULONG
*pceltFetched
);
671 uuid(CC7BCB06
-8A68
-11d2
-983C
-0000F808342D
),
672 pointer_default(unique)
674 interface ICorDebugThreadEnum
: ICorDebugEnum
676 HRESULT Next
([in] ULONG celt
, [out] ICorDebugThread
*threads
[], [out] ULONG
*pceltFetched
);
682 uuid(CC7BCAEE
-8A68
-11d2
-983C
-0000F808342D
),
683 pointer_default(unique)
685 interface ICorDebugChain
: IUnknown
687 HRESULT GetThread
([out] ICorDebugThread
**ppThread
);
688 HRESULT GetStackRange
([out] CORDB_ADDRESS
*pStart
, [out] CORDB_ADDRESS
*pEnd
);
689 HRESULT GetContext
([out] ICorDebugContext
**ppContext
);
690 HRESULT GetCaller
([out] ICorDebugChain
**ppChain
);
691 HRESULT GetCallee
([out] ICorDebugChain
**ppChain
);
692 HRESULT GetPrevious
([out] ICorDebugChain
**ppChain
);
693 HRESULT GetNext
([out] ICorDebugChain
**ppChain
);
694 HRESULT IsManaged
([out] BOOL
*pManaged
);
695 HRESULT EnumerateFrames
([out] ICorDebugFrameEnum
**ppFrames
);
696 HRESULT GetActiveFrame
([out] ICorDebugFrame
**ppFrame
);
697 HRESULT GetRegisterSet
([out] ICorDebugRegisterSet
**ppRegisters
);
698 typedef enum CorDebugChainReason
701 CHAIN_CLASS_INIT
= 0x001,
702 CHAIN_EXCEPTION_FILTER
= 0x002,
703 CHAIN_SECURITY
= 0x004,
704 CHAIN_CONTEXT_POLICY
= 0x008,
705 CHAIN_INTERCEPTION
= 0x010,
706 CHAIN_PROCESS_START
= 0x020,
707 CHAIN_THREAD_START
= 0x040,
708 CHAIN_ENTER_MANAGED
= 0x080,
709 CHAIN_ENTER_UNMANAGED
= 0x100,
710 CHAIN_DEBUGGER_EVAL
= 0x200,
711 CHAIN_CONTEXT_SWITCH
= 0x400,
712 CHAIN_FUNC_EVAL
= 0x800,
713 } CorDebugChainReason
;
715 HRESULT GetReason
([out] CorDebugChainReason
*pReason
);
721 uuid(CC7BCAEF
-8A68
-11d2
-983C
-0000F808342D
),
722 pointer_default(unique)
724 interface ICorDebugFrame
: IUnknown
726 HRESULT GetChain
([out] ICorDebugChain
**ppChain
);
727 HRESULT GetCode
([out] ICorDebugCode
**ppCode
);
728 HRESULT GetFunction
([out] ICorDebugFunction
**ppFunction
);
729 HRESULT GetFunctionToken
([out] mdMethodDef
*pToken
);
730 HRESULT GetStackRange
([out] CORDB_ADDRESS
*pStart
, [out] CORDB_ADDRESS
*pEnd
);
731 HRESULT GetCaller
([out] ICorDebugFrame
**ppFrame
);
732 HRESULT GetCallee
([out] ICorDebugFrame
**ppFrame
);
733 HRESULT CreateStepper
([out] ICorDebugStepper
**ppStepper
);
740 uuid(CC7BCB0B
-8A68
-11d2
-983C
-0000F808342D
),
741 pointer_default(unique)
743 interface ICorDebugRegisterSet
: IUnknown
745 typedef enum CorDebugRegister
747 REGISTER_INSTRUCTION_POINTER
= 0,
748 REGISTER_STACK_POINTER
,
749 REGISTER_FRAME_POINTER
,
751 REGISTER_X86_EIP
= 0,
763 REGISTER_X86_FPSTACK_0
,
764 REGISTER_X86_FPSTACK_1
,
765 REGISTER_X86_FPSTACK_2
,
766 REGISTER_X86_FPSTACK_3
,
767 REGISTER_X86_FPSTACK_4
,
768 REGISTER_X86_FPSTACK_5
,
769 REGISTER_X86_FPSTACK_6
,
770 REGISTER_X86_FPSTACK_7
,
772 REGISTER_AMD64_RIP
= 0,
803 REGISTER_AMD64_XMM10
,
804 REGISTER_AMD64_XMM11
,
805 REGISTER_AMD64_XMM12
,
806 REGISTER_AMD64_XMM13
,
807 REGISTER_AMD64_XMM14
,
808 REGISTER_AMD64_XMM15
,
810 REGISTER_IA64_BSP
= REGISTER_FRAME_POINTER
,
812 REGISTER_IA64_R0
= REGISTER_IA64_BSP
+ 1,
813 REGISTER_IA64_F0
= REGISTER_IA64_R0
+ 128,
817 HRESULT GetRegistersAvailable
([out] ULONG64
*pAvailable
);
819 HRESULT GetRegisters
([in] ULONG64 mask
, [in] ULONG32 regCount
,
820 [out] CORDB_REGISTER regBuffer
[]);
821 HRESULT SetRegisters
([in] ULONG64 mask
, [in] ULONG32 regCount
,
822 [in] CORDB_REGISTER regBuffer
[]);
823 HRESULT GetThreadContext
([in] ULONG32 contextSize
, [in, out] BYTE context
[]);
824 HRESULT SetThreadContext
([in] ULONG32 contextSize
, [in] BYTE context
[]);
830 uuid(CC7BCAF6
-8A68
-11d2
-983C
-0000F808342D
),
831 pointer_default(unique)
833 interface ICorDebugEval
: IUnknown
835 HRESULT CallFunction
([in] ICorDebugFunction
*pFunction
, [in] ULONG32 nArgs
,
836 [in] ICorDebugValue
*ppArgs
[]);
837 HRESULT NewObject
([in] ICorDebugFunction
*pConstructor
, [in] ULONG32 nArgs
,
838 [in] ICorDebugValue
*ppArgs
[]);
839 HRESULT NewObjectNoConstructor
([in] ICorDebugClass
*pClass
);
840 HRESULT NewString
([in] LPCWSTR
string);
841 HRESULT NewArray
([in] CorElementType elementType
, [in] ICorDebugClass
*pElementClass
,
842 [in] ULONG32 rank
, [in] ULONG32 dims
[], [in] ULONG32 lowBounds
[]);
843 HRESULT IsActive
([out] BOOL
*pbActive
);
845 HRESULT GetResult
([out] ICorDebugValue
**ppResult
);
846 HRESULT GetThread
([out] ICorDebugThread
**ppThread
);
847 HRESULT CreateValue
([in] CorElementType elementType
, [in] ICorDebugClass
*pElementClass
,
848 [out] ICorDebugValue
**ppValue
);
854 uuid(6DC3FA01
-D7CB
-11d2
-8A95
-0080C792E5D8
),
855 pointer_default(unique)
857 interface ICorDebugEditAndContinueSnapshot
: IUnknown
859 HRESULT CopyMetaData
([in] IStream
*pIStream
, [out] GUID
*pMvid
);
860 HRESULT GetMvid
([out] GUID
*pMvid
);
861 HRESULT GetRoDataRVA
([out] ULONG32
*pRoDataRVA
);
862 HRESULT GetRwDataRVA
([out] ULONG32
*pRwDataRVA
);
863 HRESULT SetPEBytes
([in] IStream
*pIStream
);
864 HRESULT SetILMap
([in] mdToken mdFunction
, [in] ULONG cMapSize
, [in] COR_IL_MAP map
[]);
865 HRESULT SetPESymbolBytes
([in] IStream
*pIStream
);
871 uuid(dba2d8c1
-e5c5
-4069-8c13
-10a7c6abf43d
),
872 pointer_default(unique)
874 interface ICorDebugModule
: IUnknown
876 HRESULT GetProcess
([out] ICorDebugProcess
**ppProcess
);
877 HRESULT GetBaseAddress
([out] CORDB_ADDRESS
*pAddress
);
878 HRESULT GetAssembly
([out] ICorDebugAssembly
**ppAssembly
);
879 HRESULT GetName
([in] ULONG32 cchName
, [out] ULONG32
*pcchName
, [out] WCHAR szName
[]);
880 HRESULT EnableJITDebugging
([in] BOOL bTrackJITInfo
, [in] BOOL bAllowJitOpts
);
881 HRESULT EnableClassLoadCallbacks
([in] BOOL bClassLoadCallbacks
);
882 HRESULT GetFunctionFromToken
([in] mdMethodDef methodDef
, [out] ICorDebugFunction
**ppFunction
);
883 HRESULT GetFunctionFromRVA
([in] CORDB_ADDRESS rva
, [out] ICorDebugFunction
**ppFunction
);
884 HRESULT GetClassFromToken
([in] mdTypeDef
typeDef, [out] ICorDebugClass
**ppClass
);
885 HRESULT CreateBreakpoint
([out] ICorDebugModuleBreakpoint
**ppBreakpoint
);
886 HRESULT GetEditAndContinueSnapshot
([out] ICorDebugEditAndContinueSnapshot
**ppEditAndContinueSnapshot
);
887 HRESULT GetMetaDataInterface
([in] REFIID riid
, [out] IUnknown
**ppObj
);
888 HRESULT GetToken
([out] mdModule
*pToken
);
889 HRESULT IsDynamic
([out] BOOL
*pDynamic
);
890 HRESULT GetGlobalVariableValue
([in] mdFieldDef fieldDef
, [out] ICorDebugValue
**ppValue
);
891 HRESULT GetSize
([out] ULONG32
*pcBytes
);
892 HRESULT IsInMemory
([out] BOOL
*pInMemory
);
898 uuid(CC7BCAF5
-8A68
-11d2
-983C
-0000F808342D
),
899 pointer_default(unique)
901 interface ICorDebugClass
: IUnknown
903 HRESULT GetModule
([out] ICorDebugModule
**pModule
);
904 HRESULT GetToken
([out] mdTypeDef
*pTypeDef
);
905 HRESULT GetStaticFieldValue
([in] mdFieldDef fieldDef
, [in] ICorDebugFrame
*pFrame
,
906 [out] ICorDebugValue
**ppValue
);
912 uuid(df59507c
-d47a
-459e
-bce2
-6427eac8fd06
),
913 pointer_default(unique)
915 interface ICorDebugAssembly
: IUnknown
917 HRESULT GetProcess
([out] ICorDebugProcess
**ppProcess
);
918 HRESULT GetAppDomain
([out] ICorDebugAppDomain
**ppAppDomain
);
919 HRESULT EnumerateModules
([out] ICorDebugModuleEnum
**ppModules
);
920 HRESULT GetCodeBase
([in] ULONG32 cchName
, [out] ULONG32
*pcchName
, [out] WCHAR szName
[]);
921 HRESULT GetName
([in] ULONG32 cchName
, [out] ULONG32
*pcchName
, [out] WCHAR szName
[]);
928 uuid(CC7BCAF3
-8A68
-11d2
-983C
-0000F808342D
),
929 pointer_default(unique)
931 interface ICorDebugFunction
: IUnknown
933 HRESULT GetModule
([out] ICorDebugModule
**ppModule
);
934 HRESULT GetClass
([out] ICorDebugClass
**ppClass
);
935 HRESULT GetToken
([out] mdMethodDef
*pMethodDef
);
936 HRESULT GetILCode
([out] ICorDebugCode
**ppCode
);
937 HRESULT GetNativeCode
([out] ICorDebugCode
**ppCode
);
938 HRESULT CreateBreakpoint
([out] ICorDebugFunctionBreakpoint
**ppBreakpoint
);
939 HRESULT GetLocalVarSigToken
([out] mdSignature
*pmdSig
);
940 HRESULT GetCurrentVersionNumber
([out] ULONG32
*pnCurrentVersion
);
946 uuid(5263E909
-8CB5
-11d3
-BD2F
-0000F80849BD
),
947 pointer_default(unique)
949 interface ICorDebugUnmanagedCallback
: IUnknown
951 HRESULT DebugEvent
([in] LPDEBUG_EVENT pDebugEvent
, [in] BOOL fOutOfBand
);
957 uuid(8D600D41
-F4F6
-4cb3
-B7EC
-7BD164944036
),
958 pointer_default(unique)
960 interface ICorDebugEditAndContinueErrorInfo
: IUnknown
962 HRESULT GetModule
([out] ICorDebugModule
**ppModule
);
963 HRESULT GetToken
([out]mdToken
*pToken
);
964 HRESULT GetErrorCode
([out]HRESULT *pHr
);
965 HRESULT GetString
([in] ULONG32 cchString
, [out] ULONG32
*pcchString
,
966 [out] WCHAR szString
[]);
972 uuid(18AD3D6E
-B7D2
-11d2
-BD04
-0000F80849BD
),
973 pointer_default(unique)
975 interface ICorDebugObjectValue
: ICorDebugValue
977 HRESULT GetClass
([out] ICorDebugClass
**ppClass
);
978 HRESULT GetFieldValue
([in] ICorDebugClass
*pClass
, [in] mdFieldDef fieldDef
,
979 [out] ICorDebugValue
**ppValue
);
980 HRESULT GetVirtualMethod
([in] mdMemberRef memberRef
, [out] ICorDebugFunction
**ppFunction
);
981 HRESULT GetContext
([out] ICorDebugContext
**ppContext
);
982 HRESULT IsValueClass
([out] BOOL
*pbIsValueClass
);
983 HRESULT GetManagedCopy
([out] IUnknown
**ppObject
);
984 HRESULT SetFromManagedCopy
([in] IUnknown
*pObject
);
990 uuid(CC7BCB00
-8A68
-11d2
-983C
-0000F808342D
),
991 pointer_default(unique)
993 interface ICorDebugContext
: ICorDebugObjectValue
1000 uuid(CC7BCAF4
-8A68
-11d2
-983C
-0000F808342D
),
1001 pointer_default(unique)
1003 interface ICorDebugCode
: IUnknown
1005 HRESULT IsIL
([out] BOOL
*pbIL
);
1006 HRESULT GetFunction
([out] ICorDebugFunction
**ppFunction
);
1007 HRESULT GetAddress
([out] CORDB_ADDRESS
*pStart
);
1008 HRESULT GetSize
([out] ULONG32
*pcBytes
);
1009 HRESULT CreateBreakpoint
([in] ULONG32 offset
, [out] ICorDebugFunctionBreakpoint
**ppBreakpoint
);
1010 HRESULT GetCode
([in] ULONG32 startOffset
, [in] ULONG32 endOffset
,
1011 [in] ULONG32 cBufferAlloc
, [out] BYTE buffer
[], [out] ULONG32
*pcBufferSize
);
1012 HRESULT GetVersionNumber
([out] ULONG32
*nVersion
);
1013 HRESULT GetILToNativeMapping
([in] ULONG32 cMap
, [out] ULONG32
*pcMap
,
1014 [out] COR_DEBUG_IL_TO_NATIVE_MAP map
[]);
1015 HRESULT GetEnCRemapSequencePoints
([in] ULONG32 cMap
,[out] ULONG32
*pcMap
,
1016 [out] ULONG32 offsets
[]);
1022 uuid(CC726F2F
-1DB7
-459b
-B0EC
-05F01D841B42
),
1023 pointer_default(unique)
1025 interface ICorDebugMDA
: IUnknown
1027 HRESULT GetName
([in] ULONG32 cchName
, [out] ULONG32
* pcchName
, [out] WCHAR szName
[]);
1029 HRESULT GetDescription
([in] ULONG32 cchName
, [out] ULONG32
* pcchName
, [out] WCHAR szName
[]);
1031 HRESULT GetXML
([in] ULONG32 cchName
, [out] ULONG32
* pcchName
, [out] WCHAR szName
[]);
1033 typedef enum CorDebugMDAFlags
1038 HRESULT GetFlags
([in] CorDebugMDAFlags
* pFlags
);
1040 HRESULT GetOSThreadId
([out] DWORD
* pOsTid
);