server: Try writing to /proc/<pid>/mem in write_process_memory().
[wine.git] / include / cordebug.idl
blob9cde077eaac6eb1aabd14134fcb219c32d9079b2
1 /*
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
19 import "unknwn.idl";
20 import "objidl.idl";
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. */
61 cpp_quote("#if 0")
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;
80 cpp_quote("#endif")
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
91 ULONG32 oldOffset;
92 ULONG32 newOffset;
93 BOOL fAccurate;
94 } 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
103 NO_MAPPING = -1,
104 PROLOG = -2,
105 EPILOG = -3
106 } CorDebugIlToNativeMappingTypes;
108 typedef struct COR_DEBUG_IL_TO_NATIVE_MAP
110 ULONG32 ilOffset;
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
120 THREAD_RUN,
121 THREAD_SUSPEND
122 } CorDebugThreadState;
124 typedef enum CorDebugCreateProcessFlags
126 DEBUG_NO_SPECIAL_OPTIONS = 0x0000
127 } CorDebugCreateProcessFlags;
130 object,
131 local,
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);
144 object,
145 local,
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,
164 USER_STOPPED = 0x10,
165 USER_WAIT_SLEEP_JOIN = 0x20,
166 USER_SUSPENDED = 0x40,
168 USER_UNSAFE_POINT = 0x80,
169 } CorDebugUserState;
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);
184 object,
185 local,
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);
200 HRESULT Detach();
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);
211 object,
212 local,
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,
232 [in]LONG lLevel);
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);
240 object,
241 local,
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);
256 HRESULT Attach();
257 HRESULT GetID([out] ULONG32 *pId);
261 object,
262 local,
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
274 STEP_NORMAL,
275 STEP_RETURN,
276 STEP_CALL,
277 STEP_EXCEPTION_FILTER,
278 STEP_EXCEPTION_HANDLER,
279 STEP_INTERCEPT,
280 STEP_EXIT
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
306 LTraceLevel0 = 0,
307 LTraceLevel1,
308 LTraceLevel2,
309 LTraceLevel3,
310 LTraceLevel4,
311 LStatusLevel0 = 20,
312 LStatusLevel1,
313 LStatusLevel2,
314 LStatusLevel3,
315 LStatusLevel4,
316 LWarningLevel = 40,
317 LErrorLevel = 50,
318 LPanicLevel = 100
319 } LoggingLevelEnum;
321 typedef enum LogSwitchCallReason
323 SWITCH_CREATE,
324 SWITCH_MODIFY,
325 SWITCH_DELETE
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);
349 object,
350 local,
351 uuid(3d6f5f61-7538-11d3-8d5b-00104b35e7ef),
352 pointer_default(unique)
354 interface ICorDebug : IUnknown
356 HRESULT Initialize();
357 HRESULT Terminate();
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);
379 object,
380 local,
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);
391 object,
392 local,
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);
403 object,
404 local,
405 uuid(CC7BCAEA-8A68-11d2-983C-0000F808342D),
406 pointer_default(unique)
408 interface ICorDebugModuleBreakpoint : ICorDebugBreakpoint
410 HRESULT GetModule([out] ICorDebugModule **ppModule);
414 object,
415 local,
416 uuid(CC7BCAEB-8A68-11d2-983C-0000F808342D),
417 pointer_default(unique)
419 interface ICorDebugValueBreakpoint : ICorDebugBreakpoint
421 HRESULT GetValue([out] ICorDebugValue **ppValue);
425 object,
426 local,
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
444 } CorDebugIntercept;
446 HRESULT SetInterceptMask([in] CorDebugIntercept mask);
448 typedef enum CorDebugUnmappedStop
450 STOP_NONE = 0x0,
451 STOP_PROLOG = 0x01,
452 STOP_EPILOG = 0x02,
453 STOP_NO_MAPPING_INFO = 0x04,
454 STOP_OTHER_UNMAPPED = 0x08,
455 STOP_UNMANAGED = 0x10,
457 STOP_ALL = 0xffff,
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);
470 HRESULT StepOut();
471 HRESULT SetRangeIL([in] BOOL bIL);
475 object,
476 local,
477 uuid(CC7BCB01-8A68-11d2-983C-0000F808342D),
478 pointer_default(unique)
480 interface ICorDebugEnum : IUnknown
482 HRESULT Skip([in] ULONG celt);
483 HRESULT Reset();
484 HRESULT Clone([out] ICorDebugEnum **ppEnum);
485 HRESULT GetCount([out] ULONG *pcelt);
489 object,
490 local,
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);
502 object,
503 local,
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);
514 object,
515 local,
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);
525 object,
526 local,
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);
536 object,
537 local,
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);
548 object,
549 local,
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);
559 object,
560 local,
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);
570 object,
571 local,
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);
581 object,
582 local,
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);
592 object,
593 local,
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);
603 object,
604 local,
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);
614 object,
615 local,
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
634 CHAIN_NONE = 0x000,
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);
653 object,
654 local,
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);
672 object,
673 local,
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,
686 REGISTER_X86_ESP,
687 REGISTER_X86_EBP,
689 REGISTER_X86_EAX,
690 REGISTER_X86_ECX,
691 REGISTER_X86_EDX,
692 REGISTER_X86_EBX,
694 REGISTER_X86_ESI,
695 REGISTER_X86_EDI,
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,
707 REGISTER_AMD64_RSP,
708 REGISTER_AMD64_RBP,
710 REGISTER_AMD64_RAX,
711 REGISTER_AMD64_RCX,
712 REGISTER_AMD64_RDX,
713 REGISTER_AMD64_RBX,
715 REGISTER_AMD64_RSI,
716 REGISTER_AMD64_RDI,
718 REGISTER_AMD64_R8,
719 REGISTER_AMD64_R9,
720 REGISTER_AMD64_R10,
721 REGISTER_AMD64_R11,
722 REGISTER_AMD64_R12,
723 REGISTER_AMD64_R13,
724 REGISTER_AMD64_R14,
725 REGISTER_AMD64_R15,
727 REGISTER_AMD64_XMM0,
728 REGISTER_AMD64_XMM1,
729 REGISTER_AMD64_XMM2,
730 REGISTER_AMD64_XMM3,
731 REGISTER_AMD64_XMM4,
732 REGISTER_AMD64_XMM5,
733 REGISTER_AMD64_XMM6,
734 REGISTER_AMD64_XMM7,
735 REGISTER_AMD64_XMM8,
736 REGISTER_AMD64_XMM9,
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,
749 } CorDebugRegister;
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[]);
762 object,
763 local,
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);
778 HRESULT Abort();
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);
786 object,
787 local,
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);
803 object,
804 local,
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);
830 object,
831 local,
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);
844 object,
845 local,
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[]);
860 object,
861 local,
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);
878 object,
879 local,
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);
889 object,
890 local,
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[]);
904 object,
905 local,
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);
922 object,
923 local,
924 uuid(CC7BCB00-8A68-11d2-983C-0000F808342D),
925 pointer_default(unique)
927 interface ICorDebugContext : ICorDebugObjectValue
932 object,
933 local,
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[]);