xref: /reactos/sdk/include/psdk/cordebug.idl (revision c2c66aff)
1*c2c66affSColin Finck/*
2*c2c66affSColin Finck * Copyright (C) 2011 Alistair Leslie-Hughes
3*c2c66affSColin Finck *
4*c2c66affSColin Finck * This library is free software; you can redistribute it and/or
5*c2c66affSColin Finck * modify it under the terms of the GNU Lesser General Public
6*c2c66affSColin Finck * License as published by the Free Software Foundation; either
7*c2c66affSColin Finck * version 2.1 of the License, or (at your option) any later version.
8*c2c66affSColin Finck *
9*c2c66affSColin Finck * This library is distributed in the hope that it will be useful,
10*c2c66affSColin Finck * but WITHOUT ANY WARRANTY; without even the implied warranty of
11*c2c66affSColin Finck * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12*c2c66affSColin Finck * Lesser General Public License for more details.
13*c2c66affSColin Finck *
14*c2c66affSColin Finck * You should have received a copy of the GNU Lesser General Public
15*c2c66affSColin Finck * License along with this library; if not, write to the Free Software
16*c2c66affSColin Finck * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17*c2c66affSColin Finck */
18*c2c66affSColin Finck
19*c2c66affSColin Finckimport "unknwn.idl";
20*c2c66affSColin Finckimport "objidl.idl";
21*c2c66affSColin Finck
22*c2c66affSColin Finckcpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
23*c2c66affSColin Finckcpp_quote("#undef CreateProcess")
24*c2c66affSColin Finckcpp_quote("#endif")
25*c2c66affSColin Finck
26*c2c66affSColin Finckinterface ICorDebugAppDomain;
27*c2c66affSColin Finckinterface ICorDebugAppDomainEnum;
28*c2c66affSColin Finckinterface ICorDebugAssembly;
29*c2c66affSColin Finckinterface ICorDebugAssemblyEnum;
30*c2c66affSColin Finckinterface ICorDebugBreakpoint;
31*c2c66affSColin Finckinterface ICorDebugBreakpointEnum;
32*c2c66affSColin Finckinterface ICorDebugChain;
33*c2c66affSColin Finckinterface ICorDebugChainEnum;
34*c2c66affSColin Finckinterface ICorDebugClass;
35*c2c66affSColin Finckinterface ICorDebugCode;
36*c2c66affSColin Finckinterface ICorDebugContext;
37*c2c66affSColin Finckinterface ICorDebugEditAndContinueSnapshot;
38*c2c66affSColin Finckinterface ICorDebugEditAndContinueErrorInfo;
39*c2c66affSColin Finckinterface ICorDebugEnum;
40*c2c66affSColin Finckinterface ICorDebugErrorInfoEnum;
41*c2c66affSColin Finckinterface ICorDebugEval;
42*c2c66affSColin Finckinterface ICorDebugFrame;
43*c2c66affSColin Finckinterface ICorDebugFrameEnum;
44*c2c66affSColin Finckinterface ICorDebugFunction;
45*c2c66affSColin Finckinterface ICorDebugFunctionBreakpoint;
46*c2c66affSColin Finckinterface ICorDebugManagedCallback;
47*c2c66affSColin Finckinterface ICorDebugManagedCallback2;
48*c2c66affSColin Finckinterface ICorDebugMDA;
49*c2c66affSColin Finckinterface ICorDebugModule;
50*c2c66affSColin Finckinterface ICorDebugModuleBreakpoint;
51*c2c66affSColin Finckinterface ICorDebugModuleEnum;
52*c2c66affSColin Finckinterface ICorDebugObjectEnum;
53*c2c66affSColin Finckinterface ICorDebugObjectValue;
54*c2c66affSColin Finckinterface ICorDebugProcess;
55*c2c66affSColin Finckinterface ICorDebugProcessEnum;
56*c2c66affSColin Finckinterface ICorDebugRegisterSet;
57*c2c66affSColin Finckinterface ICorDebugStepper;
58*c2c66affSColin Finckinterface ICorDebugStepperEnum;
59*c2c66affSColin Finckinterface ICorDebugThreadEnum;
60*c2c66affSColin Finckinterface ICorDebugUnmanagedCallback;
61*c2c66affSColin Finckinterface ICorDebugValue;
62*c2c66affSColin Finckinterface ICorDebugValueBreakpoint;
63*c2c66affSColin Finck
64*c2c66affSColin Finck
65*c2c66affSColin Fincktypedef [wire_marshal(unsigned long)] void *HPROCESS;
66*c2c66affSColin Fincktypedef [wire_marshal(unsigned long)] void *HTHREAD;
67*c2c66affSColin Finck
68*c2c66affSColin Finck/* These are defined in corhrd.idl but used here. */
69*c2c66affSColin Finckcpp_quote("#if 0")
70*c2c66affSColin Finck
71*c2c66affSColin Fincktypedef UINT32 mdToken;
72*c2c66affSColin Fincktypedef mdToken mdModule;
73*c2c66affSColin Fincktypedef SIZE_T  mdScope;
74*c2c66affSColin Fincktypedef mdToken mdTypeDef;
75*c2c66affSColin Fincktypedef mdToken mdSourceFile;
76*c2c66affSColin Fincktypedef mdToken mdMemberRef;
77*c2c66affSColin Fincktypedef mdToken mdMethodDef;
78*c2c66affSColin Fincktypedef mdToken mdFieldDef;
79*c2c66affSColin Fincktypedef mdToken mdSignature;
80*c2c66affSColin Fincktypedef ULONG CorElementType;
81*c2c66affSColin Fincktypedef SIZE_T PCCOR_SIGNATURE;
82*c2c66affSColin Finck
83*c2c66affSColin Fincktypedef SIZE_T LPDEBUG_EVENT;
84*c2c66affSColin Finck
85*c2c66affSColin Fincktypedef SIZE_T LPSTARTUPINFOW;
86*c2c66affSColin Fincktypedef SIZE_T LPPROCESS_INFORMATION;
87*c2c66affSColin Finck
88*c2c66affSColin Finckcpp_quote("#endif")
89*c2c66affSColin Finck
90*c2c66affSColin Fincktypedef ULONG64 CORDB_ADDRESS;
91*c2c66affSColin Fincktypedef ULONG64 CORDB_REGISTER;
92*c2c66affSColin Finck
93*c2c66affSColin Fincktypedef UINT64 TASKID;
94*c2c66affSColin Fincktypedef DWORD CONNID;
95*c2c66affSColin Finck
96*c2c66affSColin Finck
97*c2c66affSColin Finckcpp_quote("#ifndef _COR_IL_MAP")
98*c2c66affSColin Finckcpp_quote("#define _COR_IL_MAP")
99*c2c66affSColin Finck
100*c2c66affSColin Fincktypedef struct _COR_IL_MAP
101*c2c66affSColin Finck{
102*c2c66affSColin Finck    ULONG32 oldOffset;
103*c2c66affSColin Finck    ULONG32 newOffset;
104*c2c66affSColin Finck    BOOL    fAccurate;
105*c2c66affSColin Finck} COR_IL_MAP;
106*c2c66affSColin Finck
107*c2c66affSColin Finckcpp_quote("#endif /* _COR_IL_MAP */")
108*c2c66affSColin Finck
109*c2c66affSColin Finckcpp_quote("#ifndef _COR_DEBUG_IL_TO_NATIVE_MAP_")
110*c2c66affSColin Finckcpp_quote("#define _COR_DEBUG_IL_TO_NATIVE_MAP_")
111*c2c66affSColin Finck
112*c2c66affSColin Fincktypedef enum CorDebugIlToNativeMappingTypes
113*c2c66affSColin Finck{
114*c2c66affSColin Finck    NO_MAPPING = -1,
115*c2c66affSColin Finck    PROLOG     = -2,
116*c2c66affSColin Finck    EPILOG     = -3
117*c2c66affSColin Finck} CorDebugIlToNativeMappingTypes;
118*c2c66affSColin Finck
119*c2c66affSColin Fincktypedef struct COR_DEBUG_IL_TO_NATIVE_MAP
120*c2c66affSColin Finck{
121*c2c66affSColin Finck    ULONG32 ilOffset;
122*c2c66affSColin Finck    ULONG32 nativeStartOffset;
123*c2c66affSColin Finck    ULONG32 nativeEndOffset;
124*c2c66affSColin Finck} COR_DEBUG_IL_TO_NATIVE_MAP;
125*c2c66affSColin Finck
126*c2c66affSColin Finckcpp_quote("#endif /* _COR_DEBUG_IL_TO_NATIVE_MAP_ */")
127*c2c66affSColin Finck
128*c2c66affSColin Finck
129*c2c66affSColin Fincktypedef enum CorDebugThreadState
130*c2c66affSColin Finck{
131*c2c66affSColin Finck    THREAD_RUN,
132*c2c66affSColin Finck    THREAD_SUSPEND
133*c2c66affSColin Finck} CorDebugThreadState;
134*c2c66affSColin Finck
135*c2c66affSColin Fincktypedef enum CorDebugCreateProcessFlags
136*c2c66affSColin Finck{
137*c2c66affSColin Finck    DEBUG_NO_SPECIAL_OPTIONS        = 0x0000
138*c2c66affSColin Finck} CorDebugCreateProcessFlags;
139*c2c66affSColin Finck
140*c2c66affSColin Finck[
141*c2c66affSColin Finck    object,
142*c2c66affSColin Finck    local,
143*c2c66affSColin Finck    uuid(CC7BCAF7-8A68-11d2-983C-0000F808342D),
144*c2c66affSColin Finck    pointer_default(unique)
145*c2c66affSColin Finck]
146*c2c66affSColin Finckinterface ICorDebugValue : IUnknown
147*c2c66affSColin Finck{
148*c2c66affSColin Finck    HRESULT GetType([out] CorElementType *pType);
149*c2c66affSColin Finck    HRESULT GetSize([out] ULONG32 *pSize);
150*c2c66affSColin Finck    HRESULT GetAddress([out] CORDB_ADDRESS *pAddress);
151*c2c66affSColin Finck    HRESULT CreateBreakpoint([out] ICorDebugValueBreakpoint **ppBreakpoint);
152*c2c66affSColin Finck};
153*c2c66affSColin Finck
154*c2c66affSColin Finck[
155*c2c66affSColin Finck    object,
156*c2c66affSColin Finck    local,
157*c2c66affSColin Finck    uuid(938c6d66-7fb6-4f69-b389-425b8987329b),
158*c2c66affSColin Finck    pointer_default(unique)
159*c2c66affSColin Finck]
160*c2c66affSColin Finckinterface ICorDebugThread : IUnknown
161*c2c66affSColin Finck{
162*c2c66affSColin Finck    HRESULT GetProcess([out] ICorDebugProcess **ppProcess);
163*c2c66affSColin Finck    HRESULT GetID([out] DWORD *pdwThreadId);
164*c2c66affSColin Finck    HRESULT GetHandle([out] HTHREAD *phThreadHandle);
165*c2c66affSColin Finck    HRESULT GetAppDomain([out] ICorDebugAppDomain **ppAppDomain);
166*c2c66affSColin Finck    HRESULT SetDebugState([in] CorDebugThreadState state);
167*c2c66affSColin Finck    HRESULT GetDebugState([out] CorDebugThreadState *pState);
168*c2c66affSColin Finck
169*c2c66affSColin Finck    typedef enum CorDebugUserState
170*c2c66affSColin Finck    {
171*c2c66affSColin Finck        USER_STOP_REQUESTED     = 0x01,
172*c2c66affSColin Finck        USER_SUSPEND_REQUESTED  = 0x02,
173*c2c66affSColin Finck        USER_BACKGROUND         = 0x04,
174*c2c66affSColin Finck        USER_UNSTARTED          = 0x08,
175*c2c66affSColin Finck        USER_STOPPED            = 0x10,
176*c2c66affSColin Finck        USER_WAIT_SLEEP_JOIN    = 0x20,
177*c2c66affSColin Finck        USER_SUSPENDED          = 0x40,
178*c2c66affSColin Finck
179*c2c66affSColin Finck        USER_UNSAFE_POINT       = 0x80,
180*c2c66affSColin Finck    } CorDebugUserState;
181*c2c66affSColin Finck
182*c2c66affSColin Finck    HRESULT GetUserState([out] CorDebugUserState *pState);
183*c2c66affSColin Finck    HRESULT GetCurrentException([out] ICorDebugValue **ppExceptionObject);
184*c2c66affSColin Finck    HRESULT ClearCurrentException();
185*c2c66affSColin Finck    HRESULT CreateStepper([out] ICorDebugStepper **ppStepper);
186*c2c66affSColin Finck    HRESULT EnumerateChains([out] ICorDebugChainEnum **ppChains);
187*c2c66affSColin Finck    HRESULT GetActiveChain([out] ICorDebugChain **ppChain);
188*c2c66affSColin Finck    HRESULT GetActiveFrame([out] ICorDebugFrame **ppFrame);
189*c2c66affSColin Finck    HRESULT GetRegisterSet([out] ICorDebugRegisterSet **ppRegisters);
190*c2c66affSColin Finck    HRESULT CreateEval([out] ICorDebugEval **ppEval);
191*c2c66affSColin Finck    HRESULT GetObject([out] ICorDebugValue **ppObject);
192*c2c66affSColin Finck};
193*c2c66affSColin Finck
194*c2c66affSColin Finck[
195*c2c66affSColin Finck    object,
196*c2c66affSColin Finck    local,
197*c2c66affSColin Finck    uuid(3d6f5f62-7538-11d3-8d5b-00104b35e7ef),
198*c2c66affSColin Finck    pointer_default(unique)
199*c2c66affSColin Finck]
200*c2c66affSColin Finck
201*c2c66affSColin Finckinterface ICorDebugController : IUnknown
202*c2c66affSColin Finck{
203*c2c66affSColin Finck    HRESULT Stop([in] DWORD dwTimeoutIgnored);
204*c2c66affSColin Finck    HRESULT Continue([in] BOOL fIsOutOfBand);
205*c2c66affSColin Finck    HRESULT IsRunning([out] BOOL *pbRunning);
206*c2c66affSColin Finck    HRESULT HasQueuedCallbacks([in] ICorDebugThread *pThread,
207*c2c66affSColin Finck                               [out] BOOL *pbQueued);
208*c2c66affSColin Finck    HRESULT EnumerateThreads([out] ICorDebugThreadEnum **ppThreads);
209*c2c66affSColin Finck    HRESULT SetAllThreadsDebugState([in] CorDebugThreadState state,
210*c2c66affSColin Finck                                    [in] ICorDebugThread *pExceptThisThread);
211*c2c66affSColin Finck    HRESULT Detach();
212*c2c66affSColin Finck    HRESULT Terminate([in] UINT exitCode);
213*c2c66affSColin Finck    HRESULT CanCommitChanges([in] ULONG cSnapshots,
214*c2c66affSColin Finck                             [in] ICorDebugEditAndContinueSnapshot *pSnapshots[],
215*c2c66affSColin Finck                             [out] ICorDebugErrorInfoEnum **pError);
216*c2c66affSColin Finck    HRESULT CommitChanges([in] ULONG cSnapshots,
217*c2c66affSColin Finck                          [in] ICorDebugEditAndContinueSnapshot *pSnapshots[],
218*c2c66affSColin Finck                          [out] ICorDebugErrorInfoEnum **pError);
219*c2c66affSColin Finck};
220*c2c66affSColin Finck
221*c2c66affSColin Finck[
222*c2c66affSColin Finck    object,
223*c2c66affSColin Finck    local,
224*c2c66affSColin Finck    uuid(3d6f5f64-7538-11d3-8d5b-00104b35e7ef),
225*c2c66affSColin Finck    pointer_default(unique)
226*c2c66affSColin Finck]
227*c2c66affSColin Finckinterface ICorDebugProcess : ICorDebugController
228*c2c66affSColin Finck{
229*c2c66affSColin Finck    HRESULT GetID([out] DWORD *pdwProcessId);
230*c2c66affSColin Finck    HRESULT GetHandle([out] HPROCESS *phProcessHandle);
231*c2c66affSColin Finck    HRESULT GetThread([in] DWORD dwThreadId, [out] ICorDebugThread **ppThread);
232*c2c66affSColin Finck    HRESULT EnumerateObjects([out] ICorDebugObjectEnum **ppObjects);
233*c2c66affSColin Finck    HRESULT IsTransitionStub([in] CORDB_ADDRESS address, [out] BOOL *pbTransitionStub);
234*c2c66affSColin Finck    HRESULT IsOSSuspended([in] DWORD threadID, [out] BOOL *pbSuspended);
235*c2c66affSColin Finck    HRESULT GetThreadContext([in] DWORD threadID, [in] ULONG32 contextSize,
236*c2c66affSColin Finck                             [in, out] BYTE context[]);
237*c2c66affSColin Finck    HRESULT SetThreadContext([in] DWORD threadID, [in] ULONG32 contextSize, [in] BYTE context[]);
238*c2c66affSColin Finck    HRESULT ReadMemory([in] CORDB_ADDRESS address, [in] DWORD size, [out] BYTE buffer[], [out] SIZE_T *read);
239*c2c66affSColin Finck    HRESULT WriteMemory([in] CORDB_ADDRESS address, [in] DWORD size, [in] BYTE buffer[], [out] SIZE_T *written);
240*c2c66affSColin Finck    HRESULT ClearCurrentException([in] DWORD threadID);
241*c2c66affSColin Finck    HRESULT EnableLogMessages([in]BOOL fOnOff);
242*c2c66affSColin Finck    HRESULT ModifyLogSwitch([in] WCHAR *pLogSwitchName,
243*c2c66affSColin Finck                            [in]LONG lLevel);
244*c2c66affSColin Finck    HRESULT EnumerateAppDomains([out] ICorDebugAppDomainEnum **ppAppDomains);
245*c2c66affSColin Finck    HRESULT GetObject([out] ICorDebugValue **ppObject);
246*c2c66affSColin Finck    HRESULT ThreadForFiberCookie([in] DWORD fiberCookie, [out] ICorDebugThread **ppThread);
247*c2c66affSColin Finck    HRESULT GetHelperThreadID([out] DWORD *pThreadID);
248*c2c66affSColin Finck};
249*c2c66affSColin Finck
250*c2c66affSColin Finck[
251*c2c66affSColin Finck    object,
252*c2c66affSColin Finck    local,
253*c2c66affSColin Finck    uuid(3d6f5f63-7538-11d3-8d5b-00104b35e7ef),
254*c2c66affSColin Finck    pointer_default(unique)
255*c2c66affSColin Finck]
256*c2c66affSColin Finckinterface ICorDebugAppDomain : ICorDebugController
257*c2c66affSColin Finck{
258*c2c66affSColin Finck    HRESULT GetProcess([out] ICorDebugProcess **ppProcess);
259*c2c66affSColin Finck    HRESULT EnumerateAssemblies([out] ICorDebugAssemblyEnum **ppAssemblies);
260*c2c66affSColin Finck    HRESULT GetModuleFromMetaDataInterface([in] IUnknown *pIMetaData,
261*c2c66affSColin Finck                                           [out] ICorDebugModule **ppModule);
262*c2c66affSColin Finck    HRESULT EnumerateBreakpoints([out] ICorDebugBreakpointEnum **ppBreakpoints);
263*c2c66affSColin Finck    HRESULT EnumerateSteppers([out] ICorDebugStepperEnum **ppSteppers);
264*c2c66affSColin Finck    HRESULT IsAttached([out] BOOL *pbAttached);
265*c2c66affSColin Finck    HRESULT GetName([in] ULONG32 cchName, [out] ULONG32 *pcchName, [out] WCHAR szName[]);
266*c2c66affSColin Finck    HRESULT GetObject([out] ICorDebugValue **ppObject);
267*c2c66affSColin Finck    HRESULT Attach();
268*c2c66affSColin Finck    HRESULT GetID([out] ULONG32 *pId);
269*c2c66affSColin Finck};
270*c2c66affSColin Finck
271*c2c66affSColin Finck[
272*c2c66affSColin Finck    object,
273*c2c66affSColin Finck    local,
274*c2c66affSColin Finck    uuid(3d6f5f60-7538-11d3-8d5b-00104b35e7ef),
275*c2c66affSColin Finck    pointer_default(unique)
276*c2c66affSColin Finck]
277*c2c66affSColin Finckinterface ICorDebugManagedCallback : IUnknown
278*c2c66affSColin Finck{
279*c2c66affSColin Finck    HRESULT Breakpoint([in] ICorDebugAppDomain *pAppDomain,
280*c2c66affSColin Finck                       [in] ICorDebugThread *pThread,
281*c2c66affSColin Finck                       [in] ICorDebugBreakpoint *pBreakpoint);
282*c2c66affSColin Finck
283*c2c66affSColin Finck    typedef enum CorDebugStepReason
284*c2c66affSColin Finck    {
285*c2c66affSColin Finck        STEP_NORMAL,
286*c2c66affSColin Finck        STEP_RETURN,
287*c2c66affSColin Finck        STEP_CALL,
288*c2c66affSColin Finck        STEP_EXCEPTION_FILTER,
289*c2c66affSColin Finck        STEP_EXCEPTION_HANDLER,
290*c2c66affSColin Finck        STEP_INTERCEPT,
291*c2c66affSColin Finck        STEP_EXIT
292*c2c66affSColin Finck    } CorDebugStepReason;
293*c2c66affSColin Finck
294*c2c66affSColin Finck    HRESULT StepComplete([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread,
295*c2c66affSColin Finck                         [in] ICorDebugStepper *pStepper, [in] CorDebugStepReason reason);
296*c2c66affSColin Finck    HRESULT Break([in] ICorDebugAppDomain *pAppDomain,
297*c2c66affSColin Finck                  [in] ICorDebugThread *thread);
298*c2c66affSColin Finck    HRESULT Exception([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread,
299*c2c66affSColin Finck                      [in] BOOL unhandled);
300*c2c66affSColin Finck    HRESULT EvalComplete([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread,
301*c2c66affSColin Finck                         [in] ICorDebugEval *pEval);
302*c2c66affSColin Finck    HRESULT EvalException([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread,
303*c2c66affSColin Finck                          [in] ICorDebugEval *pEval);
304*c2c66affSColin Finck    HRESULT CreateProcess([in] ICorDebugProcess *pProcess);
305*c2c66affSColin Finck    HRESULT ExitProcess([in] ICorDebugProcess *pProcess);
306*c2c66affSColin Finck    HRESULT CreateThread([in] ICorDebugAppDomain *pAppDomain,[in] ICorDebugThread *thread);
307*c2c66affSColin Finck    HRESULT ExitThread([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *thread);
308*c2c66affSColin Finck    HRESULT LoadModule([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugModule *pModule);
309*c2c66affSColin Finck    HRESULT UnloadModule([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugModule *pModule);
310*c2c66affSColin Finck    HRESULT LoadClass([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugClass *c);
311*c2c66affSColin Finck    HRESULT UnloadClass([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugClass *c);
312*c2c66affSColin Finck    HRESULT DebuggerError([in] ICorDebugProcess *pProcess, [in] HRESULT errorHR,
313*c2c66affSColin Finck                          [in] DWORD errorCode);
314*c2c66affSColin Finck
315*c2c66affSColin Finck    typedef enum LoggingLevelEnum
316*c2c66affSColin Finck    {
317*c2c66affSColin Finck        LTraceLevel0   = 0,
318*c2c66affSColin Finck        LTraceLevel1,
319*c2c66affSColin Finck        LTraceLevel2,
320*c2c66affSColin Finck        LTraceLevel3,
321*c2c66affSColin Finck        LTraceLevel4,
322*c2c66affSColin Finck        LStatusLevel0  = 20,
323*c2c66affSColin Finck        LStatusLevel1,
324*c2c66affSColin Finck        LStatusLevel2,
325*c2c66affSColin Finck        LStatusLevel3,
326*c2c66affSColin Finck        LStatusLevel4,
327*c2c66affSColin Finck        LWarningLevel  = 40,
328*c2c66affSColin Finck        LErrorLevel    = 50,
329*c2c66affSColin Finck        LPanicLevel    = 100
330*c2c66affSColin Finck    } LoggingLevelEnum;
331*c2c66affSColin Finck
332*c2c66affSColin Finck    typedef enum LogSwitchCallReason
333*c2c66affSColin Finck    {
334*c2c66affSColin Finck        SWITCH_CREATE,
335*c2c66affSColin Finck        SWITCH_MODIFY,
336*c2c66affSColin Finck        SWITCH_DELETE
337*c2c66affSColin Finck    } LogSwitchCallReason;
338*c2c66affSColin Finck
339*c2c66affSColin Finck    HRESULT LogMessage([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread,
340*c2c66affSColin Finck                       [in] LONG lLevel, [in] WCHAR *pLogSwitchName, [in] WCHAR *pMessage);
341*c2c66affSColin Finck    HRESULT LogSwitch([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread,
342*c2c66affSColin Finck                      [in] LONG lLevel, [in] ULONG ulReason, [in] WCHAR *pLogSwitchName,
343*c2c66affSColin Finck                      [in] WCHAR *pParentName);
344*c2c66affSColin Finck    HRESULT CreateAppDomain([in] ICorDebugProcess *pProcess, [in] ICorDebugAppDomain *pAppDomain);
345*c2c66affSColin Finck    HRESULT ExitAppDomain([in] ICorDebugProcess *pProcess, [in] ICorDebugAppDomain *pAppDomain);
346*c2c66affSColin Finck    HRESULT LoadAssembly([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugAssembly *pAssembly);
347*c2c66affSColin Finck    HRESULT UnloadAssembly([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugAssembly *pAssembly);
348*c2c66affSColin Finck    HRESULT ControlCTrap([in] ICorDebugProcess *pProcess);
349*c2c66affSColin Finck    HRESULT NameChange([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread);
350*c2c66affSColin Finck    HRESULT UpdateModuleSymbols([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugModule *pModule,
351*c2c66affSColin Finck                                [in] IStream *pSymbolStream);
352*c2c66affSColin Finck    HRESULT EditAndContinueRemap([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread,
353*c2c66affSColin Finck                                 [in] ICorDebugFunction *pFunction, [in] BOOL fAccurate);
354*c2c66affSColin Finck
355*c2c66affSColin Finck    HRESULT BreakpointSetError([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread,
356*c2c66affSColin Finck                               [in] ICorDebugBreakpoint *pBreakpoint, [in] DWORD dwError);
357*c2c66affSColin Finck};
358*c2c66affSColin Finck
359*c2c66affSColin Finck[
360*c2c66affSColin Finck    object,
361*c2c66affSColin Finck    local,
362*c2c66affSColin Finck    uuid(250E5EEA-DB5C-4C76-B6F3-8C46F12E3203),
363*c2c66affSColin Finck    pointer_default(unique)
364*c2c66affSColin Finck]
365*c2c66affSColin Finckinterface ICorDebugManagedCallback2 : IUnknown
366*c2c66affSColin Finck{
367*c2c66affSColin Finck    HRESULT FunctionRemapOpportunity([in] ICorDebugAppDomain *pAppDomain,
368*c2c66affSColin Finck                   [in] ICorDebugThread *pThread, [in] ICorDebugFunction *pOldFunction,
369*c2c66affSColin Finck                   [in] ICorDebugFunction *pNewFunction, [in] ULONG32 oldILOffset);
370*c2c66affSColin Finck
371*c2c66affSColin Finck    HRESULT CreateConnection([in] ICorDebugProcess *pProcess, [in] CONNID dwConnectionId,
372*c2c66affSColin Finck                                [in] WCHAR *pConnName);
373*c2c66affSColin Finck
374*c2c66affSColin Finck    HRESULT ChangeConnection([in] ICorDebugProcess *pProcess, [in] CONNID dwConnectionId );
375*c2c66affSColin Finck
376*c2c66affSColin Finck    HRESULT DestroyConnection([in] ICorDebugProcess *pProcess, [in] CONNID dwConnectionId );
377*c2c66affSColin Finck
378*c2c66affSColin Finck
379*c2c66affSColin Finck    typedef enum CorDebugExceptionCallbackType
380*c2c66affSColin Finck    {
381*c2c66affSColin Finck        DEBUG_EXCEPTION_FIRST_CHANCE = 1,
382*c2c66affSColin Finck        DEBUG_EXCEPTION_USER_FIRST_CHANCE = 2,
383*c2c66affSColin Finck        DEBUG_EXCEPTION_CATCH_HANDLER_FOUND = 3,
384*c2c66affSColin Finck        DEBUG_EXCEPTION_UNHANDLED = 4
385*c2c66affSColin Finck    } CorDebugExceptionCallbackType;
386*c2c66affSColin Finck
387*c2c66affSColin Finck    typedef enum CorDebugExceptionFlags
388*c2c66affSColin Finck    {
389*c2c66affSColin Finck        DEBUG_EXCEPTION_CAN_BE_INTERCEPTED = 0x0001
390*c2c66affSColin Finck    } CorDebugExceptionFlags;
391*c2c66affSColin Finck
392*c2c66affSColin Finck    HRESULT Exception( [in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread,
393*c2c66affSColin Finck                       [in] ICorDebugFrame *pFrame, [in] ULONG32 nOffset,
394*c2c66affSColin Finck                       [in] CorDebugExceptionCallbackType dwEventType, [in] DWORD dwFlags );
395*c2c66affSColin Finck
396*c2c66affSColin Finck    typedef enum CorDebugExceptionUnwindCallbackType
397*c2c66affSColin Finck    {
398*c2c66affSColin Finck        DEBUG_EXCEPTION_UNWIND_BEGIN = 1,
399*c2c66affSColin Finck        DEBUG_EXCEPTION_INTERCEPTED = 2
400*c2c66affSColin Finck    } CorDebugExceptionUnwindCallbackType;
401*c2c66affSColin Finck
402*c2c66affSColin Finck    HRESULT ExceptionUnwind( [in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread,
403*c2c66affSColin Finck                             [in] CorDebugExceptionUnwindCallbackType dwEventType,
404*c2c66affSColin Finck                             [in] DWORD dwFlags );
405*c2c66affSColin Finck
406*c2c66affSColin Finck    HRESULT FunctionRemapComplete([in] ICorDebugAppDomain *pAppDomain,
407*c2c66affSColin Finck                             [in] ICorDebugThread *pThread, [in] ICorDebugFunction *pFunction);
408*c2c66affSColin Finck
409*c2c66affSColin Finck    HRESULT MDANotification([in] ICorDebugController * pController,
410*c2c66affSColin Finck                            [in] ICorDebugThread *pThread, [in] ICorDebugMDA * pMDA
411*c2c66affSColin Finck    );
412*c2c66affSColin Finck
413*c2c66affSColin Finck};
414*c2c66affSColin Finck[
415*c2c66affSColin Finck    object,
416*c2c66affSColin Finck    local,
417*c2c66affSColin Finck    uuid(3d6f5f61-7538-11d3-8d5b-00104b35e7ef),
418*c2c66affSColin Finck    pointer_default(unique)
419*c2c66affSColin Finck]
420*c2c66affSColin Finckinterface ICorDebug : IUnknown
421*c2c66affSColin Finck{
422*c2c66affSColin Finck    HRESULT Initialize();
423*c2c66affSColin Finck    HRESULT Terminate();
424*c2c66affSColin Finck    HRESULT SetManagedHandler([in] ICorDebugManagedCallback *pCallback);
425*c2c66affSColin Finck    HRESULT SetUnmanagedHandler([in] ICorDebugUnmanagedCallback *pCallback);
426*c2c66affSColin Finck    HRESULT CreateProcess([in] LPCWSTR lpApplicationName, [in] LPWSTR lpCommandLine,
427*c2c66affSColin Finck                          [in] LPSECURITY_ATTRIBUTES lpProcessAttributes,
428*c2c66affSColin Finck                          [in] LPSECURITY_ATTRIBUTES lpThreadAttributes,
429*c2c66affSColin Finck                          [in] BOOL bInheritHandles, [in] DWORD dwCreationFlags,
430*c2c66affSColin Finck                          [in] PVOID lpEnvironment, [in] LPCWSTR lpCurrentDirectory,
431*c2c66affSColin Finck                          [in] LPSTARTUPINFOW lpStartupInfo,
432*c2c66affSColin Finck                          [in] LPPROCESS_INFORMATION lpProcessInformation,
433*c2c66affSColin Finck                          [in] CorDebugCreateProcessFlags debuggingFlags,
434*c2c66affSColin Finck                          [out] ICorDebugProcess **ppProcess);
435*c2c66affSColin Finck
436*c2c66affSColin Finck    HRESULT DebugActiveProcess([in] DWORD id, [in] BOOL win32Attach,
437*c2c66affSColin Finck                               [out] ICorDebugProcess **ppProcess);
438*c2c66affSColin Finck    HRESULT EnumerateProcesses([out] ICorDebugProcessEnum **ppProcess);
439*c2c66affSColin Finck    HRESULT GetProcess([in] DWORD dwProcessId, [out] ICorDebugProcess **ppProcess);
440*c2c66affSColin Finck    HRESULT CanLaunchOrAttach([in] DWORD dwProcessId, [in] BOOL win32DebuggingEnabled);
441*c2c66affSColin Finck};
442*c2c66affSColin Finck
443*c2c66affSColin Finck
444*c2c66affSColin Finck[
445*c2c66affSColin Finck    object,
446*c2c66affSColin Finck    local,
447*c2c66affSColin Finck    uuid(CC7BCAE8-8A68-11d2-983C-0000F808342D),
448*c2c66affSColin Finck    pointer_default(unique)
449*c2c66affSColin Finck]
450*c2c66affSColin Finckinterface ICorDebugBreakpoint : IUnknown
451*c2c66affSColin Finck{
452*c2c66affSColin Finck    HRESULT Activate([in] BOOL bActive);
453*c2c66affSColin Finck    HRESULT IsActive([out] BOOL *pbActive);
454*c2c66affSColin Finck};
455*c2c66affSColin Finck
456*c2c66affSColin Finck[
457*c2c66affSColin Finck    object,
458*c2c66affSColin Finck    local,
459*c2c66affSColin Finck    uuid(CC7BCAE9-8A68-11d2-983C-0000F808342D),
460*c2c66affSColin Finck    pointer_default(unique)
461*c2c66affSColin Finck]
462*c2c66affSColin Finckinterface ICorDebugFunctionBreakpoint : ICorDebugBreakpoint
463*c2c66affSColin Finck{
464*c2c66affSColin Finck    HRESULT GetFunction([out] ICorDebugFunction **ppFunction);
465*c2c66affSColin Finck    HRESULT GetOffset([out] ULONG32 *pnOffset);
466*c2c66affSColin Finck};
467*c2c66affSColin Finck
468*c2c66affSColin Finck[
469*c2c66affSColin Finck    object,
470*c2c66affSColin Finck    local,
471*c2c66affSColin Finck    uuid(CC7BCAEA-8A68-11d2-983C-0000F808342D),
472*c2c66affSColin Finck    pointer_default(unique)
473*c2c66affSColin Finck]
474*c2c66affSColin Finckinterface ICorDebugModuleBreakpoint : ICorDebugBreakpoint
475*c2c66affSColin Finck{
476*c2c66affSColin Finck    HRESULT GetModule([out] ICorDebugModule **ppModule);
477*c2c66affSColin Finck};
478*c2c66affSColin Finck
479*c2c66affSColin Finck[
480*c2c66affSColin Finck    object,
481*c2c66affSColin Finck    local,
482*c2c66affSColin Finck    uuid(CC7BCAEB-8A68-11d2-983C-0000F808342D),
483*c2c66affSColin Finck    pointer_default(unique)
484*c2c66affSColin Finck]
485*c2c66affSColin Finckinterface ICorDebugValueBreakpoint : ICorDebugBreakpoint
486*c2c66affSColin Finck{
487*c2c66affSColin Finck    HRESULT GetValue([out] ICorDebugValue **ppValue);
488*c2c66affSColin Finck};
489*c2c66affSColin Finck
490*c2c66affSColin Finck[
491*c2c66affSColin Finck    object,
492*c2c66affSColin Finck    local,
493*c2c66affSColin Finck    uuid(CC7BCAEC-8A68-11d2-983C-0000F808342D),
494*c2c66affSColin Finck    pointer_default(unique)
495*c2c66affSColin Finck]
496*c2c66affSColin Finckinterface ICorDebugStepper : IUnknown
497*c2c66affSColin Finck{
498*c2c66affSColin Finck    HRESULT IsActive([out] BOOL *pbActive);
499*c2c66affSColin Finck    HRESULT Deactivate();
500*c2c66affSColin Finck
501*c2c66affSColin Finck    typedef enum CorDebugIntercept
502*c2c66affSColin Finck    {
503*c2c66affSColin Finck          INTERCEPT_NONE                = 0x0 ,
504*c2c66affSColin Finck          INTERCEPT_CLASS_INIT          = 0x01,
505*c2c66affSColin Finck          INTERCEPT_EXCEPTION_FILTER    = 0x02,
506*c2c66affSColin Finck          INTERCEPT_SECURITY            = 0x04,
507*c2c66affSColin Finck          INTERCEPT_CONTEXT_POLICY      = 0x08,
508*c2c66affSColin Finck          INTERCEPT_INTERCEPTION        = 0x10,
509*c2c66affSColin Finck          INTERCEPT_ALL                 = 0xffff
510*c2c66affSColin Finck    } CorDebugIntercept;
511*c2c66affSColin Finck
512*c2c66affSColin Finck    HRESULT SetInterceptMask([in] CorDebugIntercept mask);
513*c2c66affSColin Finck
514*c2c66affSColin Finck    typedef enum CorDebugUnmappedStop
515*c2c66affSColin Finck    {
516*c2c66affSColin Finck        STOP_NONE               = 0x0,
517*c2c66affSColin Finck        STOP_PROLOG             = 0x01,
518*c2c66affSColin Finck        STOP_EPILOG             = 0x02,
519*c2c66affSColin Finck        STOP_NO_MAPPING_INFO    = 0x04,
520*c2c66affSColin Finck        STOP_OTHER_UNMAPPED     = 0x08,
521*c2c66affSColin Finck        STOP_UNMANAGED          = 0x10,
522*c2c66affSColin Finck
523*c2c66affSColin Finck        STOP_ALL                = 0xffff,
524*c2c66affSColin Finck
525*c2c66affSColin Finck    } CorDebugUnmappedStop;
526*c2c66affSColin Finck
527*c2c66affSColin Finck    HRESULT SetUnmappedStopMask([in] CorDebugUnmappedStop mask);
528*c2c66affSColin Finck    HRESULT Step([in] BOOL bStepIn);
529*c2c66affSColin Finck
530*c2c66affSColin Finck    typedef struct COR_DEBUG_STEP_RANGE
531*c2c66affSColin Finck    {
532*c2c66affSColin Finck        ULONG32 startOffset, endOffset;
533*c2c66affSColin Finck    } COR_DEBUG_STEP_RANGE;
534*c2c66affSColin Finck
535*c2c66affSColin Finck    HRESULT StepRange([in] BOOL bStepIn, [in] COR_DEBUG_STEP_RANGE ranges[], [in] ULONG32 cRangeCount);
536*c2c66affSColin Finck    HRESULT StepOut();
537*c2c66affSColin Finck    HRESULT SetRangeIL([in] BOOL bIL);
538*c2c66affSColin Finck};
539*c2c66affSColin Finck
540*c2c66affSColin Finck[
541*c2c66affSColin Finck    object,
542*c2c66affSColin Finck    local,
543*c2c66affSColin Finck    uuid(CC7BCB01-8A68-11d2-983C-0000F808342D),
544*c2c66affSColin Finck    pointer_default(unique)
545*c2c66affSColin Finck]
546*c2c66affSColin Finckinterface ICorDebugEnum : IUnknown
547*c2c66affSColin Finck{
548*c2c66affSColin Finck    HRESULT Skip([in] ULONG celt);
549*c2c66affSColin Finck    HRESULT Reset();
550*c2c66affSColin Finck    HRESULT Clone([out] ICorDebugEnum **ppEnum);
551*c2c66affSColin Finck    HRESULT GetCount([out] ULONG *pcelt);
552*c2c66affSColin Finck};
553*c2c66affSColin Finck
554*c2c66affSColin Finck[
555*c2c66affSColin Finck    object,
556*c2c66affSColin Finck    local,
557*c2c66affSColin Finck    uuid(63ca1b24-4359-4883-bd57-13f815f58744),
558*c2c66affSColin Finck    pointer_default(unique)
559*c2c66affSColin Finck]
560*c2c66affSColin Finck
561*c2c66affSColin Finckinterface ICorDebugAppDomainEnum : ICorDebugEnum
562*c2c66affSColin Finck{
563*c2c66affSColin Finck    HRESULT Next([in] ULONG celt, [out] ICorDebugAppDomain *values[], [out] ULONG *pceltFetched);
564*c2c66affSColin Finck
565*c2c66affSColin Finck};
566*c2c66affSColin Finck
567*c2c66affSColin Finck[
568*c2c66affSColin Finck    object,
569*c2c66affSColin Finck    local,
570*c2c66affSColin Finck    uuid(4a2a1ec9-85ec-4bfb-9f15-a89fdfe0fe83),
571*c2c66affSColin Finck    pointer_default(unique)
572*c2c66affSColin Finck]
573*c2c66affSColin Finckinterface ICorDebugAssemblyEnum : ICorDebugEnum
574*c2c66affSColin Finck{
575*c2c66affSColin Finck    HRESULT Next([in] ULONG celt, [out] ICorDebugAssembly *values[], [out] ULONG *pceltFetched);
576*c2c66affSColin Finck
577*c2c66affSColin Finck};
578*c2c66affSColin Finck
579*c2c66affSColin Finck[
580*c2c66affSColin Finck    object,
581*c2c66affSColin Finck    local,
582*c2c66affSColin Finck    uuid(CC7BCB03-8A68-11d2-983C-0000F808342D),
583*c2c66affSColin Finck    pointer_default(unique)
584*c2c66affSColin Finck]
585*c2c66affSColin Finckinterface ICorDebugBreakpointEnum : ICorDebugEnum
586*c2c66affSColin Finck{
587*c2c66affSColin Finck    HRESULT Next([in] ULONG celt, [out] ICorDebugBreakpoint *breakpoints[], [out] ULONG *pceltFetched);
588*c2c66affSColin Finck};
589*c2c66affSColin Finck
590*c2c66affSColin Finck[
591*c2c66affSColin Finck    object,
592*c2c66affSColin Finck    local,
593*c2c66affSColin Finck    uuid(CC7BCB08-8A68-11d2-983C-0000F808342D),
594*c2c66affSColin Finck    pointer_default(unique)
595*c2c66affSColin Finck]
596*c2c66affSColin Finckinterface ICorDebugChainEnum : ICorDebugEnum
597*c2c66affSColin Finck{
598*c2c66affSColin Finck    HRESULT Next([in] ULONG celt, [out] ICorDebugChain *chains[], [out] ULONG *pceltFetched);
599*c2c66affSColin Finck};
600*c2c66affSColin Finck
601*c2c66affSColin Finck[
602*c2c66affSColin Finck    object,
603*c2c66affSColin Finck    local,
604*c2c66affSColin Finck    uuid(F0E18809-72B5-11d2-976F-00A0C9B4D50C),
605*c2c66affSColin Finck    pointer_default(unique)
606*c2c66affSColin Finck]
607*c2c66affSColin Finckinterface ICorDebugErrorInfoEnum : ICorDebugEnum
608*c2c66affSColin Finck{
609*c2c66affSColin Finck    HRESULT Next([in] ULONG celt, [out] ICorDebugEditAndContinueErrorInfo *errors[],
610*c2c66affSColin Finck                 [out] ULONG *pceltFetched);
611*c2c66affSColin Finck};
612*c2c66affSColin Finck
613*c2c66affSColin Finck[
614*c2c66affSColin Finck    object,
615*c2c66affSColin Finck    local,
616*c2c66affSColin Finck    uuid(CC7BCB07-8A68-11d2-983C-0000F808342D),
617*c2c66affSColin Finck    pointer_default(unique)
618*c2c66affSColin Finck]
619*c2c66affSColin Finckinterface ICorDebugFrameEnum : ICorDebugEnum
620*c2c66affSColin Finck{
621*c2c66affSColin Finck    HRESULT Next([in] ULONG celt, [out] ICorDebugFrame *frames[], [out] ULONG *pceltFetched);
622*c2c66affSColin Finck};
623*c2c66affSColin Finck
624*c2c66affSColin Finck[
625*c2c66affSColin Finck    object,
626*c2c66affSColin Finck    local,
627*c2c66affSColin Finck    uuid(CC7BCB09-8A68-11d2-983C-0000F808342D),
628*c2c66affSColin Finck    pointer_default(unique)
629*c2c66affSColin Finck]
630*c2c66affSColin Finckinterface ICorDebugModuleEnum : ICorDebugEnum
631*c2c66affSColin Finck{
632*c2c66affSColin Finck    HRESULT Next([in] ULONG celt, [out] ICorDebugModule *modules[], [out] ULONG *pceltFetched);
633*c2c66affSColin Finck};
634*c2c66affSColin Finck
635*c2c66affSColin Finck[
636*c2c66affSColin Finck    object,
637*c2c66affSColin Finck    local,
638*c2c66affSColin Finck    uuid(CC7BCB02-8A68-11d2-983C-0000F808342D),
639*c2c66affSColin Finck    pointer_default(unique)
640*c2c66affSColin Finck]
641*c2c66affSColin Finckinterface ICorDebugObjectEnum : ICorDebugEnum
642*c2c66affSColin Finck{
643*c2c66affSColin Finck    HRESULT Next([in] ULONG celt, [out] CORDB_ADDRESS objects[], [out] ULONG *pceltFetched);
644*c2c66affSColin Finck};
645*c2c66affSColin Finck
646*c2c66affSColin Finck[
647*c2c66affSColin Finck    object,
648*c2c66affSColin Finck    local,
649*c2c66affSColin Finck    uuid(CC7BCB05-8A68-11d2-983C-0000F808342D),
650*c2c66affSColin Finck    pointer_default(unique)
651*c2c66affSColin Finck]
652*c2c66affSColin Finckinterface ICorDebugProcessEnum : ICorDebugEnum
653*c2c66affSColin Finck{
654*c2c66affSColin Finck    HRESULT Next([in] ULONG celt, [out] ICorDebugProcess *processes[], [out] ULONG *pceltFetched);
655*c2c66affSColin Finck};
656*c2c66affSColin Finck
657*c2c66affSColin Finck[
658*c2c66affSColin Finck    object,
659*c2c66affSColin Finck    local,
660*c2c66affSColin Finck    uuid(CC7BCB04-8A68-11d2-983C-0000F808342D),
661*c2c66affSColin Finck    pointer_default(unique)
662*c2c66affSColin Finck]
663*c2c66affSColin Finckinterface ICorDebugStepperEnum : ICorDebugEnum
664*c2c66affSColin Finck{
665*c2c66affSColin Finck    HRESULT Next([in] ULONG celt, [out] ICorDebugStepper *steppers[], [out] ULONG *pceltFetched);
666*c2c66affSColin Finck};
667*c2c66affSColin Finck
668*c2c66affSColin Finck[
669*c2c66affSColin Finck    object,
670*c2c66affSColin Finck    local,
671*c2c66affSColin Finck    uuid(CC7BCB06-8A68-11d2-983C-0000F808342D),
672*c2c66affSColin Finck    pointer_default(unique)
673*c2c66affSColin Finck]
674*c2c66affSColin Finckinterface ICorDebugThreadEnum : ICorDebugEnum
675*c2c66affSColin Finck{
676*c2c66affSColin Finck    HRESULT Next([in] ULONG celt, [out] ICorDebugThread *threads[], [out] ULONG *pceltFetched);
677*c2c66affSColin Finck};
678*c2c66affSColin Finck
679*c2c66affSColin Finck[
680*c2c66affSColin Finck    object,
681*c2c66affSColin Finck    local,
682*c2c66affSColin Finck    uuid(CC7BCAEE-8A68-11d2-983C-0000F808342D),
683*c2c66affSColin Finck    pointer_default(unique)
684*c2c66affSColin Finck]
685*c2c66affSColin Finckinterface ICorDebugChain : IUnknown
686*c2c66affSColin Finck{
687*c2c66affSColin Finck    HRESULT GetThread([out] ICorDebugThread **ppThread);
688*c2c66affSColin Finck    HRESULT GetStackRange([out] CORDB_ADDRESS *pStart, [out] CORDB_ADDRESS *pEnd);
689*c2c66affSColin Finck    HRESULT GetContext([out] ICorDebugContext **ppContext);
690*c2c66affSColin Finck    HRESULT GetCaller([out] ICorDebugChain **ppChain);
691*c2c66affSColin Finck    HRESULT GetCallee([out] ICorDebugChain **ppChain);
692*c2c66affSColin Finck    HRESULT GetPrevious([out] ICorDebugChain **ppChain);
693*c2c66affSColin Finck    HRESULT GetNext([out] ICorDebugChain **ppChain);
694*c2c66affSColin Finck    HRESULT IsManaged([out] BOOL *pManaged);
695*c2c66affSColin Finck    HRESULT EnumerateFrames([out] ICorDebugFrameEnum **ppFrames);
696*c2c66affSColin Finck    HRESULT GetActiveFrame([out] ICorDebugFrame **ppFrame);
697*c2c66affSColin Finck    HRESULT GetRegisterSet([out] ICorDebugRegisterSet **ppRegisters);
698*c2c66affSColin Finck    typedef enum CorDebugChainReason
699*c2c66affSColin Finck    {
700*c2c66affSColin Finck        CHAIN_NONE              = 0x000,
701*c2c66affSColin Finck        CHAIN_CLASS_INIT        = 0x001,
702*c2c66affSColin Finck        CHAIN_EXCEPTION_FILTER  = 0x002,
703*c2c66affSColin Finck        CHAIN_SECURITY          = 0x004,
704*c2c66affSColin Finck        CHAIN_CONTEXT_POLICY    = 0x008,
705*c2c66affSColin Finck        CHAIN_INTERCEPTION      = 0x010,
706*c2c66affSColin Finck        CHAIN_PROCESS_START     = 0x020,
707*c2c66affSColin Finck        CHAIN_THREAD_START      = 0x040,
708*c2c66affSColin Finck        CHAIN_ENTER_MANAGED     = 0x080,
709*c2c66affSColin Finck        CHAIN_ENTER_UNMANAGED   = 0x100,
710*c2c66affSColin Finck        CHAIN_DEBUGGER_EVAL     = 0x200,
711*c2c66affSColin Finck        CHAIN_CONTEXT_SWITCH    = 0x400,
712*c2c66affSColin Finck        CHAIN_FUNC_EVAL         = 0x800,
713*c2c66affSColin Finck    } CorDebugChainReason;
714*c2c66affSColin Finck
715*c2c66affSColin Finck    HRESULT GetReason([out] CorDebugChainReason *pReason);
716*c2c66affSColin Finck};
717*c2c66affSColin Finck
718*c2c66affSColin Finck[
719*c2c66affSColin Finck    object,
720*c2c66affSColin Finck    local,
721*c2c66affSColin Finck    uuid(CC7BCAEF-8A68-11d2-983C-0000F808342D),
722*c2c66affSColin Finck    pointer_default(unique)
723*c2c66affSColin Finck]
724*c2c66affSColin Finckinterface ICorDebugFrame : IUnknown
725*c2c66affSColin Finck{
726*c2c66affSColin Finck    HRESULT GetChain([out] ICorDebugChain **ppChain);
727*c2c66affSColin Finck    HRESULT GetCode([out] ICorDebugCode **ppCode);
728*c2c66affSColin Finck    HRESULT GetFunction([out] ICorDebugFunction **ppFunction);
729*c2c66affSColin Finck    HRESULT GetFunctionToken([out] mdMethodDef *pToken);
730*c2c66affSColin Finck    HRESULT GetStackRange([out] CORDB_ADDRESS *pStart, [out] CORDB_ADDRESS *pEnd);
731*c2c66affSColin Finck    HRESULT GetCaller([out] ICorDebugFrame **ppFrame);
732*c2c66affSColin Finck    HRESULT GetCallee([out] ICorDebugFrame **ppFrame);
733*c2c66affSColin Finck    HRESULT CreateStepper([out] ICorDebugStepper **ppStepper);
734*c2c66affSColin Finck};
735*c2c66affSColin Finck
736*c2c66affSColin Finck
737*c2c66affSColin Finck[
738*c2c66affSColin Finck    object,
739*c2c66affSColin Finck    local,
740*c2c66affSColin Finck    uuid(CC7BCB0B-8A68-11d2-983C-0000F808342D),
741*c2c66affSColin Finck    pointer_default(unique)
742*c2c66affSColin Finck]
743*c2c66affSColin Finckinterface ICorDebugRegisterSet : IUnknown
744*c2c66affSColin Finck{
745*c2c66affSColin Finck    typedef enum CorDebugRegister
746*c2c66affSColin Finck    {
747*c2c66affSColin Finck        REGISTER_INSTRUCTION_POINTER = 0,
748*c2c66affSColin Finck        REGISTER_STACK_POINTER,
749*c2c66affSColin Finck        REGISTER_FRAME_POINTER,
750*c2c66affSColin Finck
751*c2c66affSColin Finck        REGISTER_X86_EIP = 0,
752*c2c66affSColin Finck        REGISTER_X86_ESP,
753*c2c66affSColin Finck        REGISTER_X86_EBP,
754*c2c66affSColin Finck
755*c2c66affSColin Finck        REGISTER_X86_EAX,
756*c2c66affSColin Finck        REGISTER_X86_ECX,
757*c2c66affSColin Finck        REGISTER_X86_EDX,
758*c2c66affSColin Finck        REGISTER_X86_EBX,
759*c2c66affSColin Finck
760*c2c66affSColin Finck        REGISTER_X86_ESI,
761*c2c66affSColin Finck        REGISTER_X86_EDI,
762*c2c66affSColin Finck
763*c2c66affSColin Finck        REGISTER_X86_FPSTACK_0,
764*c2c66affSColin Finck        REGISTER_X86_FPSTACK_1,
765*c2c66affSColin Finck        REGISTER_X86_FPSTACK_2,
766*c2c66affSColin Finck        REGISTER_X86_FPSTACK_3,
767*c2c66affSColin Finck        REGISTER_X86_FPSTACK_4,
768*c2c66affSColin Finck        REGISTER_X86_FPSTACK_5,
769*c2c66affSColin Finck        REGISTER_X86_FPSTACK_6,
770*c2c66affSColin Finck        REGISTER_X86_FPSTACK_7,
771*c2c66affSColin Finck
772*c2c66affSColin Finck        REGISTER_AMD64_RIP = 0,
773*c2c66affSColin Finck        REGISTER_AMD64_RSP,
774*c2c66affSColin Finck        REGISTER_AMD64_RBP,
775*c2c66affSColin Finck
776*c2c66affSColin Finck        REGISTER_AMD64_RAX,
777*c2c66affSColin Finck        REGISTER_AMD64_RCX,
778*c2c66affSColin Finck        REGISTER_AMD64_RDX,
779*c2c66affSColin Finck        REGISTER_AMD64_RBX,
780*c2c66affSColin Finck
781*c2c66affSColin Finck        REGISTER_AMD64_RSI,
782*c2c66affSColin Finck        REGISTER_AMD64_RDI,
783*c2c66affSColin Finck
784*c2c66affSColin Finck        REGISTER_AMD64_R8,
785*c2c66affSColin Finck        REGISTER_AMD64_R9,
786*c2c66affSColin Finck        REGISTER_AMD64_R10,
787*c2c66affSColin Finck        REGISTER_AMD64_R11,
788*c2c66affSColin Finck        REGISTER_AMD64_R12,
789*c2c66affSColin Finck        REGISTER_AMD64_R13,
790*c2c66affSColin Finck        REGISTER_AMD64_R14,
791*c2c66affSColin Finck        REGISTER_AMD64_R15,
792*c2c66affSColin Finck
793*c2c66affSColin Finck        REGISTER_AMD64_XMM0,
794*c2c66affSColin Finck        REGISTER_AMD64_XMM1,
795*c2c66affSColin Finck        REGISTER_AMD64_XMM2,
796*c2c66affSColin Finck        REGISTER_AMD64_XMM3,
797*c2c66affSColin Finck        REGISTER_AMD64_XMM4,
798*c2c66affSColin Finck        REGISTER_AMD64_XMM5,
799*c2c66affSColin Finck        REGISTER_AMD64_XMM6,
800*c2c66affSColin Finck        REGISTER_AMD64_XMM7,
801*c2c66affSColin Finck        REGISTER_AMD64_XMM8,
802*c2c66affSColin Finck        REGISTER_AMD64_XMM9,
803*c2c66affSColin Finck        REGISTER_AMD64_XMM10,
804*c2c66affSColin Finck        REGISTER_AMD64_XMM11,
805*c2c66affSColin Finck        REGISTER_AMD64_XMM12,
806*c2c66affSColin Finck        REGISTER_AMD64_XMM13,
807*c2c66affSColin Finck        REGISTER_AMD64_XMM14,
808*c2c66affSColin Finck        REGISTER_AMD64_XMM15,
809*c2c66affSColin Finck
810*c2c66affSColin Finck        REGISTER_IA64_BSP = REGISTER_FRAME_POINTER,
811*c2c66affSColin Finck
812*c2c66affSColin Finck        REGISTER_IA64_R0  = REGISTER_IA64_BSP + 1,
813*c2c66affSColin Finck        REGISTER_IA64_F0  = REGISTER_IA64_R0  + 128,
814*c2c66affSColin Finck
815*c2c66affSColin Finck    } CorDebugRegister;
816*c2c66affSColin Finck
817*c2c66affSColin Finck    HRESULT GetRegistersAvailable([out] ULONG64 *pAvailable);
818*c2c66affSColin Finck
819*c2c66affSColin Finck    HRESULT GetRegisters([in] ULONG64 mask, [in] ULONG32 regCount,
820*c2c66affSColin Finck                         [out] CORDB_REGISTER regBuffer[]);
821*c2c66affSColin Finck    HRESULT SetRegisters([in] ULONG64 mask, [in] ULONG32 regCount,
822*c2c66affSColin Finck                         [in] CORDB_REGISTER regBuffer[]);
823*c2c66affSColin Finck    HRESULT GetThreadContext([in] ULONG32 contextSize, [in, out] BYTE context[]);
824*c2c66affSColin Finck    HRESULT SetThreadContext([in] ULONG32 contextSize, [in] BYTE context[]);
825*c2c66affSColin Finck}
826*c2c66affSColin Finck
827*c2c66affSColin Finck[
828*c2c66affSColin Finck    object,
829*c2c66affSColin Finck    local,
830*c2c66affSColin Finck    uuid(CC7BCAF6-8A68-11d2-983C-0000F808342D),
831*c2c66affSColin Finck    pointer_default(unique)
832*c2c66affSColin Finck]
833*c2c66affSColin Finckinterface ICorDebugEval : IUnknown
834*c2c66affSColin Finck{
835*c2c66affSColin Finck    HRESULT CallFunction([in] ICorDebugFunction *pFunction, [in] ULONG32 nArgs,
836*c2c66affSColin Finck                         [in] ICorDebugValue *ppArgs[]);
837*c2c66affSColin Finck    HRESULT NewObject([in] ICorDebugFunction *pConstructor, [in] ULONG32 nArgs,
838*c2c66affSColin Finck                      [in] ICorDebugValue *ppArgs[]);
839*c2c66affSColin Finck    HRESULT NewObjectNoConstructor([in] ICorDebugClass *pClass);
840*c2c66affSColin Finck    HRESULT NewString([in] LPCWSTR string);
841*c2c66affSColin Finck    HRESULT NewArray([in] CorElementType elementType, [in] ICorDebugClass *pElementClass,
842*c2c66affSColin Finck                     [in] ULONG32 rank, [in] ULONG32 dims[], [in] ULONG32 lowBounds[]);
843*c2c66affSColin Finck    HRESULT IsActive([out] BOOL *pbActive);
844*c2c66affSColin Finck    HRESULT Abort();
845*c2c66affSColin Finck    HRESULT GetResult([out] ICorDebugValue **ppResult);
846*c2c66affSColin Finck    HRESULT GetThread([out] ICorDebugThread **ppThread);
847*c2c66affSColin Finck    HRESULT CreateValue([in] CorElementType elementType, [in] ICorDebugClass *pElementClass,
848*c2c66affSColin Finck                        [out] ICorDebugValue **ppValue);
849*c2c66affSColin Finck};
850*c2c66affSColin Finck
851*c2c66affSColin Finck[
852*c2c66affSColin Finck    object,
853*c2c66affSColin Finck    local,
854*c2c66affSColin Finck    uuid(6DC3FA01-D7CB-11d2-8A95-0080C792E5D8),
855*c2c66affSColin Finck    pointer_default(unique)
856*c2c66affSColin Finck]
857*c2c66affSColin Finckinterface ICorDebugEditAndContinueSnapshot : IUnknown
858*c2c66affSColin Finck{
859*c2c66affSColin Finck    HRESULT CopyMetaData([in] IStream *pIStream, [out] GUID *pMvid);
860*c2c66affSColin Finck    HRESULT GetMvid([out] GUID *pMvid);
861*c2c66affSColin Finck    HRESULT GetRoDataRVA([out] ULONG32 *pRoDataRVA);
862*c2c66affSColin Finck    HRESULT GetRwDataRVA([out] ULONG32 *pRwDataRVA);
863*c2c66affSColin Finck    HRESULT SetPEBytes([in] IStream *pIStream);
864*c2c66affSColin Finck    HRESULT SetILMap([in] mdToken mdFunction, [in] ULONG cMapSize, [in] COR_IL_MAP map[]);
865*c2c66affSColin Finck    HRESULT SetPESymbolBytes([in] IStream *pIStream);
866*c2c66affSColin Finck};
867*c2c66affSColin Finck
868*c2c66affSColin Finck[
869*c2c66affSColin Finck    object,
870*c2c66affSColin Finck    local,
871*c2c66affSColin Finck    uuid(dba2d8c1-e5c5-4069-8c13-10a7c6abf43d),
872*c2c66affSColin Finck    pointer_default(unique)
873*c2c66affSColin Finck]
874*c2c66affSColin Finckinterface ICorDebugModule : IUnknown
875*c2c66affSColin Finck{
876*c2c66affSColin Finck    HRESULT GetProcess([out] ICorDebugProcess **ppProcess);
877*c2c66affSColin Finck    HRESULT GetBaseAddress([out] CORDB_ADDRESS *pAddress);
878*c2c66affSColin Finck    HRESULT GetAssembly([out] ICorDebugAssembly **ppAssembly);
879*c2c66affSColin Finck    HRESULT GetName([in] ULONG32 cchName, [out] ULONG32 *pcchName, [out] WCHAR szName[]);
880*c2c66affSColin Finck    HRESULT EnableJITDebugging([in] BOOL bTrackJITInfo, [in] BOOL bAllowJitOpts);
881*c2c66affSColin Finck    HRESULT EnableClassLoadCallbacks([in] BOOL bClassLoadCallbacks);
882*c2c66affSColin Finck    HRESULT GetFunctionFromToken([in] mdMethodDef methodDef, [out] ICorDebugFunction **ppFunction);
883*c2c66affSColin Finck    HRESULT GetFunctionFromRVA([in] CORDB_ADDRESS rva, [out] ICorDebugFunction **ppFunction);
884*c2c66affSColin Finck    HRESULT GetClassFromToken([in] mdTypeDef typeDef, [out] ICorDebugClass **ppClass);
885*c2c66affSColin Finck    HRESULT CreateBreakpoint([out] ICorDebugModuleBreakpoint **ppBreakpoint);
886*c2c66affSColin Finck    HRESULT GetEditAndContinueSnapshot([out] ICorDebugEditAndContinueSnapshot **ppEditAndContinueSnapshot);
887*c2c66affSColin Finck    HRESULT GetMetaDataInterface([in] REFIID riid, [out] IUnknown **ppObj);
888*c2c66affSColin Finck    HRESULT GetToken([out] mdModule *pToken);
889*c2c66affSColin Finck    HRESULT IsDynamic([out] BOOL *pDynamic);
890*c2c66affSColin Finck    HRESULT GetGlobalVariableValue([in] mdFieldDef fieldDef, [out] ICorDebugValue **ppValue);
891*c2c66affSColin Finck    HRESULT GetSize([out] ULONG32 *pcBytes);
892*c2c66affSColin Finck    HRESULT IsInMemory([out] BOOL *pInMemory);
893*c2c66affSColin Finck};
894*c2c66affSColin Finck
895*c2c66affSColin Finck[
896*c2c66affSColin Finck    object,
897*c2c66affSColin Finck    local,
898*c2c66affSColin Finck    uuid(CC7BCAF5-8A68-11d2-983C-0000F808342D),
899*c2c66affSColin Finck    pointer_default(unique)
900*c2c66affSColin Finck]
901*c2c66affSColin Finckinterface ICorDebugClass : IUnknown
902*c2c66affSColin Finck{
903*c2c66affSColin Finck    HRESULT GetModule([out] ICorDebugModule **pModule);
904*c2c66affSColin Finck    HRESULT GetToken([out] mdTypeDef *pTypeDef);
905*c2c66affSColin Finck    HRESULT GetStaticFieldValue([in] mdFieldDef fieldDef, [in] ICorDebugFrame *pFrame,
906*c2c66affSColin Finck                                [out] ICorDebugValue **ppValue);
907*c2c66affSColin Finck};
908*c2c66affSColin Finck
909*c2c66affSColin Finck[
910*c2c66affSColin Finck    object,
911*c2c66affSColin Finck    local,
912*c2c66affSColin Finck    uuid(df59507c-d47a-459e-bce2-6427eac8fd06),
913*c2c66affSColin Finck    pointer_default(unique)
914*c2c66affSColin Finck]
915*c2c66affSColin Finckinterface ICorDebugAssembly : IUnknown
916*c2c66affSColin Finck{
917*c2c66affSColin Finck    HRESULT GetProcess([out] ICorDebugProcess **ppProcess);
918*c2c66affSColin Finck    HRESULT GetAppDomain([out] ICorDebugAppDomain **ppAppDomain);
919*c2c66affSColin Finck    HRESULT EnumerateModules([out] ICorDebugModuleEnum **ppModules);
920*c2c66affSColin Finck    HRESULT GetCodeBase([in] ULONG32 cchName, [out] ULONG32 *pcchName, [out] WCHAR szName[]);
921*c2c66affSColin Finck    HRESULT GetName([in] ULONG32 cchName, [out] ULONG32 *pcchName, [out] WCHAR szName[]);
922*c2c66affSColin Finck};
923*c2c66affSColin Finck
924*c2c66affSColin Finck
925*c2c66affSColin Finck[
926*c2c66affSColin Finck    object,
927*c2c66affSColin Finck    local,
928*c2c66affSColin Finck    uuid(CC7BCAF3-8A68-11d2-983C-0000F808342D),
929*c2c66affSColin Finck    pointer_default(unique)
930*c2c66affSColin Finck]
931*c2c66affSColin Finckinterface ICorDebugFunction : IUnknown
932*c2c66affSColin Finck{
933*c2c66affSColin Finck    HRESULT GetModule([out] ICorDebugModule **ppModule);
934*c2c66affSColin Finck    HRESULT GetClass([out] ICorDebugClass **ppClass);
935*c2c66affSColin Finck    HRESULT GetToken([out] mdMethodDef *pMethodDef);
936*c2c66affSColin Finck    HRESULT GetILCode([out] ICorDebugCode **ppCode);
937*c2c66affSColin Finck    HRESULT GetNativeCode([out] ICorDebugCode **ppCode);
938*c2c66affSColin Finck    HRESULT CreateBreakpoint([out] ICorDebugFunctionBreakpoint **ppBreakpoint);
939*c2c66affSColin Finck    HRESULT GetLocalVarSigToken([out] mdSignature *pmdSig);
940*c2c66affSColin Finck    HRESULT GetCurrentVersionNumber([out] ULONG32 *pnCurrentVersion);
941*c2c66affSColin Finck};
942*c2c66affSColin Finck
943*c2c66affSColin Finck[
944*c2c66affSColin Finck    object,
945*c2c66affSColin Finck    local,
946*c2c66affSColin Finck    uuid(5263E909-8CB5-11d3-BD2F-0000F80849BD),
947*c2c66affSColin Finck    pointer_default(unique)
948*c2c66affSColin Finck]
949*c2c66affSColin Finckinterface ICorDebugUnmanagedCallback : IUnknown
950*c2c66affSColin Finck{
951*c2c66affSColin Finck    HRESULT DebugEvent([in] LPDEBUG_EVENT pDebugEvent, [in] BOOL fOutOfBand);
952*c2c66affSColin Finck};
953*c2c66affSColin Finck
954*c2c66affSColin Finck[
955*c2c66affSColin Finck    object,
956*c2c66affSColin Finck    local,
957*c2c66affSColin Finck    uuid(8D600D41-F4F6-4cb3-B7EC-7BD164944036),
958*c2c66affSColin Finck    pointer_default(unique)
959*c2c66affSColin Finck]
960*c2c66affSColin Finckinterface ICorDebugEditAndContinueErrorInfo : IUnknown
961*c2c66affSColin Finck{
962*c2c66affSColin Finck    HRESULT GetModule([out] ICorDebugModule **ppModule);
963*c2c66affSColin Finck    HRESULT GetToken([out]mdToken *pToken);
964*c2c66affSColin Finck    HRESULT GetErrorCode([out]HRESULT *pHr);
965*c2c66affSColin Finck    HRESULT GetString([in] ULONG32 cchString, [out] ULONG32 *pcchString,
966*c2c66affSColin Finck                      [out] WCHAR szString[]);
967*c2c66affSColin Finck}
968*c2c66affSColin Finck
969*c2c66affSColin Finck[
970*c2c66affSColin Finck    object,
971*c2c66affSColin Finck    local,
972*c2c66affSColin Finck    uuid(18AD3D6E-B7D2-11d2-BD04-0000F80849BD),
973*c2c66affSColin Finck    pointer_default(unique)
974*c2c66affSColin Finck]
975*c2c66affSColin Finckinterface ICorDebugObjectValue : ICorDebugValue
976*c2c66affSColin Finck{
977*c2c66affSColin Finck    HRESULT GetClass([out] ICorDebugClass **ppClass);
978*c2c66affSColin Finck    HRESULT GetFieldValue([in] ICorDebugClass *pClass, [in] mdFieldDef fieldDef,
979*c2c66affSColin Finck                          [out] ICorDebugValue **ppValue);
980*c2c66affSColin Finck    HRESULT GetVirtualMethod([in] mdMemberRef memberRef, [out] ICorDebugFunction **ppFunction);
981*c2c66affSColin Finck    HRESULT GetContext([out] ICorDebugContext **ppContext);
982*c2c66affSColin Finck    HRESULT IsValueClass([out] BOOL *pbIsValueClass);
983*c2c66affSColin Finck    HRESULT GetManagedCopy([out] IUnknown **ppObject);
984*c2c66affSColin Finck    HRESULT SetFromManagedCopy([in] IUnknown *pObject);
985*c2c66affSColin Finck};
986*c2c66affSColin Finck
987*c2c66affSColin Finck[
988*c2c66affSColin Finck    object,
989*c2c66affSColin Finck    local,
990*c2c66affSColin Finck    uuid(CC7BCB00-8A68-11d2-983C-0000F808342D),
991*c2c66affSColin Finck    pointer_default(unique)
992*c2c66affSColin Finck]
993*c2c66affSColin Finckinterface ICorDebugContext : ICorDebugObjectValue
994*c2c66affSColin Finck{
995*c2c66affSColin Finck};
996*c2c66affSColin Finck
997*c2c66affSColin Finck[
998*c2c66affSColin Finck    object,
999*c2c66affSColin Finck    local,
1000*c2c66affSColin Finck    uuid(CC7BCAF4-8A68-11d2-983C-0000F808342D),
1001*c2c66affSColin Finck    pointer_default(unique)
1002*c2c66affSColin Finck]
1003*c2c66affSColin Finckinterface ICorDebugCode : IUnknown
1004*c2c66affSColin Finck{
1005*c2c66affSColin Finck    HRESULT IsIL([out] BOOL *pbIL);
1006*c2c66affSColin Finck    HRESULT GetFunction([out] ICorDebugFunction **ppFunction);
1007*c2c66affSColin Finck    HRESULT GetAddress([out] CORDB_ADDRESS *pStart);
1008*c2c66affSColin Finck    HRESULT GetSize([out] ULONG32 *pcBytes);
1009*c2c66affSColin Finck    HRESULT CreateBreakpoint([in] ULONG32 offset, [out] ICorDebugFunctionBreakpoint **ppBreakpoint);
1010*c2c66affSColin Finck    HRESULT GetCode([in] ULONG32 startOffset, [in] ULONG32 endOffset,
1011*c2c66affSColin Finck                    [in] ULONG32 cBufferAlloc, [out] BYTE buffer[], [out] ULONG32 *pcBufferSize);
1012*c2c66affSColin Finck    HRESULT GetVersionNumber([out] ULONG32 *nVersion);
1013*c2c66affSColin Finck    HRESULT GetILToNativeMapping([in] ULONG32 cMap, [out] ULONG32 *pcMap,
1014*c2c66affSColin Finck                                 [out] COR_DEBUG_IL_TO_NATIVE_MAP map[]);
1015*c2c66affSColin Finck    HRESULT GetEnCRemapSequencePoints([in] ULONG32 cMap,[out] ULONG32 *pcMap,
1016*c2c66affSColin Finck                                      [out] ULONG32 offsets[]);
1017*c2c66affSColin Finck};
1018*c2c66affSColin Finck
1019*c2c66affSColin Finck[
1020*c2c66affSColin Finck    object,
1021*c2c66affSColin Finck    local,
1022*c2c66affSColin Finck    uuid(CC726F2F-1DB7-459b-B0EC-05F01D841B42),
1023*c2c66affSColin Finck    pointer_default(unique)
1024*c2c66affSColin Finck]
1025*c2c66affSColin Finckinterface ICorDebugMDA : IUnknown
1026*c2c66affSColin Finck{
1027*c2c66affSColin Finck    HRESULT GetName([in] ULONG32 cchName, [out] ULONG32 * pcchName, [out] WCHAR szName[]);
1028*c2c66affSColin Finck
1029*c2c66affSColin Finck    HRESULT GetDescription([in] ULONG32 cchName, [out] ULONG32 * pcchName, [out] WCHAR szName[]);
1030*c2c66affSColin Finck
1031*c2c66affSColin Finck    HRESULT GetXML([in] ULONG32 cchName, [out] ULONG32 * pcchName, [out] WCHAR szName[]);
1032*c2c66affSColin Finck
1033*c2c66affSColin Finck    typedef enum CorDebugMDAFlags
1034*c2c66affSColin Finck    {
1035*c2c66affSColin Finck        MDA_FLAG_SLIP = 0x2
1036*c2c66affSColin Finck    } CorDebugMDAFlags;
1037*c2c66affSColin Finck
1038*c2c66affSColin Finck    HRESULT GetFlags([in] CorDebugMDAFlags * pFlags);
1039*c2c66affSColin Finck
1040*c2c66affSColin Finck    HRESULT GetOSThreadId([out] DWORD * pOsTid);
1041*c2c66affSColin Finck};
1042