| /* |
| * Copyright (C) 2011 Alistair Leslie-Hughes |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Lesser General Public |
| * License as published by the Free Software Foundation; either |
| * version 2.1 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Lesser General Public License for more details. |
| * |
| * You should have received a copy of the GNU Lesser General Public |
| * License along with this library; if not, write to the Free Software |
| * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA |
| */ |
| |
| import "unknwn.idl"; |
| import "objidl.idl"; |
| |
| cpp_quote("#ifdef WINE_NO_UNICODE_MACROS") |
| cpp_quote("#undef CreateProcess") |
| cpp_quote("#endif") |
| |
| interface ICorDebugAppDomain; |
| interface ICorDebugAppDomainEnum; |
| interface ICorDebugAssembly; |
| interface ICorDebugAssemblyEnum; |
| interface ICorDebugBreakpoint; |
| interface ICorDebugBreakpointEnum; |
| interface ICorDebugChain; |
| interface ICorDebugChainEnum; |
| interface ICorDebugClass; |
| interface ICorDebugCode; |
| interface ICorDebugContext; |
| interface ICorDebugEditAndContinueSnapshot; |
| interface ICorDebugEditAndContinueErrorInfo; |
| interface ICorDebugEnum; |
| interface ICorDebugErrorInfoEnum; |
| interface ICorDebugEval; |
| interface ICorDebugFrame; |
| interface ICorDebugFrameEnum; |
| interface ICorDebugFunction; |
| interface ICorDebugFunctionBreakpoint; |
| interface ICorDebugManagedCallback; |
| interface ICorDebugManagedCallback2; |
| interface ICorDebugMDA; |
| interface ICorDebugModule; |
| interface ICorDebugModuleBreakpoint; |
| interface ICorDebugModuleEnum; |
| interface ICorDebugObjectEnum; |
| interface ICorDebugObjectValue; |
| interface ICorDebugProcess; |
| interface ICorDebugProcessEnum; |
| interface ICorDebugRegisterSet; |
| interface ICorDebugStepper; |
| interface ICorDebugStepperEnum; |
| interface ICorDebugThreadEnum; |
| interface ICorDebugUnmanagedCallback; |
| interface ICorDebugValue; |
| interface ICorDebugValueBreakpoint; |
| |
| |
| typedef [wire_marshal(unsigned long)] void *HPROCESS; |
| typedef [wire_marshal(unsigned long)] void *HTHREAD; |
| |
| /* These are defined in corhrd.idl but used here. */ |
| cpp_quote("#if 0") |
| |
| typedef UINT32 mdToken; |
| typedef mdToken mdModule; |
| typedef SIZE_T mdScope; |
| typedef mdToken mdTypeDef; |
| typedef mdToken mdSourceFile; |
| typedef mdToken mdMemberRef; |
| typedef mdToken mdMethodDef; |
| typedef mdToken mdFieldDef; |
| typedef mdToken mdSignature; |
| typedef ULONG CorElementType; |
| typedef SIZE_T PCCOR_SIGNATURE; |
| |
| typedef SIZE_T LPDEBUG_EVENT; |
| |
| typedef SIZE_T LPSTARTUPINFOW; |
| typedef SIZE_T LPPROCESS_INFORMATION; |
| |
| cpp_quote("#endif") |
| |
| typedef ULONG64 CORDB_ADDRESS; |
| typedef ULONG64 CORDB_REGISTER; |
| |
| typedef UINT64 TASKID; |
| typedef DWORD CONNID; |
| |
| |
| cpp_quote("#ifndef _COR_IL_MAP") |
| cpp_quote("#define _COR_IL_MAP") |
| |
| typedef struct _COR_IL_MAP |
| { |
| ULONG32 oldOffset; |
| ULONG32 newOffset; |
| BOOL fAccurate; |
| } COR_IL_MAP; |
| |
| cpp_quote("#endif /* _COR_IL_MAP */") |
| |
| cpp_quote("#ifndef _COR_DEBUG_IL_TO_NATIVE_MAP_") |
| cpp_quote("#define _COR_DEBUG_IL_TO_NATIVE_MAP_") |
| |
| typedef enum CorDebugIlToNativeMappingTypes |
| { |
| NO_MAPPING = -1, |
| PROLOG = -2, |
| EPILOG = -3 |
| } CorDebugIlToNativeMappingTypes; |
| |
| typedef struct COR_DEBUG_IL_TO_NATIVE_MAP |
| { |
| ULONG32 ilOffset; |
| ULONG32 nativeStartOffset; |
| ULONG32 nativeEndOffset; |
| } COR_DEBUG_IL_TO_NATIVE_MAP; |
| |
| cpp_quote("#endif /* _COR_DEBUG_IL_TO_NATIVE_MAP_ */") |
| |
| |
| typedef enum CorDebugThreadState |
| { |
| THREAD_RUN, |
| THREAD_SUSPEND |
| } CorDebugThreadState; |
| |
| typedef enum CorDebugCreateProcessFlags |
| { |
| DEBUG_NO_SPECIAL_OPTIONS = 0x0000 |
| } CorDebugCreateProcessFlags; |
| |
| [ |
| object, |
| local, |
| uuid(CC7BCAF7-8A68-11d2-983C-0000F808342D), |
| pointer_default(unique) |
| ] |
| interface ICorDebugValue : IUnknown |
| { |
| HRESULT GetType([out] CorElementType *pType); |
| HRESULT GetSize([out] ULONG32 *pSize); |
| HRESULT GetAddress([out] CORDB_ADDRESS *pAddress); |
| HRESULT CreateBreakpoint([out] ICorDebugValueBreakpoint **ppBreakpoint); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(938c6d66-7fb6-4f69-b389-425b8987329b), |
| pointer_default(unique) |
| ] |
| interface ICorDebugThread : IUnknown |
| { |
| HRESULT GetProcess([out] ICorDebugProcess **ppProcess); |
| HRESULT GetID([out] DWORD *pdwThreadId); |
| HRESULT GetHandle([out] HTHREAD *phThreadHandle); |
| HRESULT GetAppDomain([out] ICorDebugAppDomain **ppAppDomain); |
| HRESULT SetDebugState([in] CorDebugThreadState state); |
| HRESULT GetDebugState([out] CorDebugThreadState *pState); |
| |
| typedef enum CorDebugUserState |
| { |
| USER_STOP_REQUESTED = 0x01, |
| USER_SUSPEND_REQUESTED = 0x02, |
| USER_BACKGROUND = 0x04, |
| USER_UNSTARTED = 0x08, |
| USER_STOPPED = 0x10, |
| USER_WAIT_SLEEP_JOIN = 0x20, |
| USER_SUSPENDED = 0x40, |
| |
| USER_UNSAFE_POINT = 0x80, |
| } CorDebugUserState; |
| |
| HRESULT GetUserState([out] CorDebugUserState *pState); |
| HRESULT GetCurrentException([out] ICorDebugValue **ppExceptionObject); |
| HRESULT ClearCurrentException(); |
| HRESULT CreateStepper([out] ICorDebugStepper **ppStepper); |
| HRESULT EnumerateChains([out] ICorDebugChainEnum **ppChains); |
| HRESULT GetActiveChain([out] ICorDebugChain **ppChain); |
| HRESULT GetActiveFrame([out] ICorDebugFrame **ppFrame); |
| HRESULT GetRegisterSet([out] ICorDebugRegisterSet **ppRegisters); |
| HRESULT CreateEval([out] ICorDebugEval **ppEval); |
| HRESULT GetObject([out] ICorDebugValue **ppObject); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(3d6f5f62-7538-11d3-8d5b-00104b35e7ef), |
| pointer_default(unique) |
| ] |
| |
| interface ICorDebugController : IUnknown |
| { |
| HRESULT Stop([in] DWORD dwTimeoutIgnored); |
| HRESULT Continue([in] BOOL fIsOutOfBand); |
| HRESULT IsRunning([out] BOOL *pbRunning); |
| HRESULT HasQueuedCallbacks([in] ICorDebugThread *pThread, |
| [out] BOOL *pbQueued); |
| HRESULT EnumerateThreads([out] ICorDebugThreadEnum **ppThreads); |
| HRESULT SetAllThreadsDebugState([in] CorDebugThreadState state, |
| [in] ICorDebugThread *pExceptThisThread); |
| HRESULT Detach(); |
| HRESULT Terminate([in] UINT exitCode); |
| HRESULT CanCommitChanges([in] ULONG cSnapshots, |
| [in] ICorDebugEditAndContinueSnapshot *pSnapshots[], |
| [out] ICorDebugErrorInfoEnum **pError); |
| HRESULT CommitChanges([in] ULONG cSnapshots, |
| [in] ICorDebugEditAndContinueSnapshot *pSnapshots[], |
| [out] ICorDebugErrorInfoEnum **pError); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(3d6f5f64-7538-11d3-8d5b-00104b35e7ef), |
| pointer_default(unique) |
| ] |
| interface ICorDebugProcess : ICorDebugController |
| { |
| HRESULT GetID([out] DWORD *pdwProcessId); |
| HRESULT GetHandle([out] HPROCESS *phProcessHandle); |
| HRESULT GetThread([in] DWORD dwThreadId, [out] ICorDebugThread **ppThread); |
| HRESULT EnumerateObjects([out] ICorDebugObjectEnum **ppObjects); |
| HRESULT IsTransitionStub([in] CORDB_ADDRESS address, [out] BOOL *pbTransitionStub); |
| HRESULT IsOSSuspended([in] DWORD threadID, [out] BOOL *pbSuspended); |
| HRESULT GetThreadContext([in] DWORD threadID, [in] ULONG32 contextSize, |
| [in, out] BYTE context[]); |
| HRESULT SetThreadContext([in] DWORD threadID, [in] ULONG32 contextSize, [in] BYTE context[]); |
| HRESULT ReadMemory([in] CORDB_ADDRESS address, [in] DWORD size, [out] BYTE buffer[], [out] SIZE_T *read); |
| HRESULT WriteMemory([in] CORDB_ADDRESS address, [in] DWORD size, [in] BYTE buffer[], [out] SIZE_T *written); |
| HRESULT ClearCurrentException([in] DWORD threadID); |
| HRESULT EnableLogMessages([in]BOOL fOnOff); |
| HRESULT ModifyLogSwitch([in] WCHAR *pLogSwitchName, |
| [in]LONG lLevel); |
| HRESULT EnumerateAppDomains([out] ICorDebugAppDomainEnum **ppAppDomains); |
| HRESULT GetObject([out] ICorDebugValue **ppObject); |
| HRESULT ThreadForFiberCookie([in] DWORD fiberCookie, [out] ICorDebugThread **ppThread); |
| HRESULT GetHelperThreadID([out] DWORD *pThreadID); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(3d6f5f63-7538-11d3-8d5b-00104b35e7ef), |
| pointer_default(unique) |
| ] |
| interface ICorDebugAppDomain : ICorDebugController |
| { |
| HRESULT GetProcess([out] ICorDebugProcess **ppProcess); |
| HRESULT EnumerateAssemblies([out] ICorDebugAssemblyEnum **ppAssemblies); |
| HRESULT GetModuleFromMetaDataInterface([in] IUnknown *pIMetaData, |
| [out] ICorDebugModule **ppModule); |
| HRESULT EnumerateBreakpoints([out] ICorDebugBreakpointEnum **ppBreakpoints); |
| HRESULT EnumerateSteppers([out] ICorDebugStepperEnum **ppSteppers); |
| HRESULT IsAttached([out] BOOL *pbAttached); |
| HRESULT GetName([in] ULONG32 cchName, [out] ULONG32 *pcchName, [out] WCHAR szName[]); |
| HRESULT GetObject([out] ICorDebugValue **ppObject); |
| HRESULT Attach(); |
| HRESULT GetID([out] ULONG32 *pId); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(3d6f5f60-7538-11d3-8d5b-00104b35e7ef), |
| pointer_default(unique) |
| ] |
| interface ICorDebugManagedCallback : IUnknown |
| { |
| HRESULT Breakpoint([in] ICorDebugAppDomain *pAppDomain, |
| [in] ICorDebugThread *pThread, |
| [in] ICorDebugBreakpoint *pBreakpoint); |
| |
| typedef enum CorDebugStepReason |
| { |
| STEP_NORMAL, |
| STEP_RETURN, |
| STEP_CALL, |
| STEP_EXCEPTION_FILTER, |
| STEP_EXCEPTION_HANDLER, |
| STEP_INTERCEPT, |
| STEP_EXIT |
| } CorDebugStepReason; |
| |
| HRESULT StepComplete([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread, |
| [in] ICorDebugStepper *pStepper, [in] CorDebugStepReason reason); |
| HRESULT Break([in] ICorDebugAppDomain *pAppDomain, |
| [in] ICorDebugThread *thread); |
| HRESULT Exception([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread, |
| [in] BOOL unhandled); |
| HRESULT EvalComplete([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread, |
| [in] ICorDebugEval *pEval); |
| HRESULT EvalException([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread, |
| [in] ICorDebugEval *pEval); |
| HRESULT CreateProcess([in] ICorDebugProcess *pProcess); |
| HRESULT ExitProcess([in] ICorDebugProcess *pProcess); |
| HRESULT CreateThread([in] ICorDebugAppDomain *pAppDomain,[in] ICorDebugThread *thread); |
| HRESULT ExitThread([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *thread); |
| HRESULT LoadModule([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugModule *pModule); |
| HRESULT UnloadModule([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugModule *pModule); |
| HRESULT LoadClass([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugClass *c); |
| HRESULT UnloadClass([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugClass *c); |
| HRESULT DebuggerError([in] ICorDebugProcess *pProcess, [in] HRESULT errorHR, |
| [in] DWORD errorCode); |
| |
| typedef enum LoggingLevelEnum |
| { |
| LTraceLevel0 = 0, |
| LTraceLevel1, |
| LTraceLevel2, |
| LTraceLevel3, |
| LTraceLevel4, |
| LStatusLevel0 = 20, |
| LStatusLevel1, |
| LStatusLevel2, |
| LStatusLevel3, |
| LStatusLevel4, |
| LWarningLevel = 40, |
| LErrorLevel = 50, |
| LPanicLevel = 100 |
| } LoggingLevelEnum; |
| |
| typedef enum LogSwitchCallReason |
| { |
| SWITCH_CREATE, |
| SWITCH_MODIFY, |
| SWITCH_DELETE |
| } LogSwitchCallReason; |
| |
| HRESULT LogMessage([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread, |
| [in] LONG lLevel, [in] WCHAR *pLogSwitchName, [in] WCHAR *pMessage); |
| HRESULT LogSwitch([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread, |
| [in] LONG lLevel, [in] ULONG ulReason, [in] WCHAR *pLogSwitchName, |
| [in] WCHAR *pParentName); |
| HRESULT CreateAppDomain([in] ICorDebugProcess *pProcess, [in] ICorDebugAppDomain *pAppDomain); |
| HRESULT ExitAppDomain([in] ICorDebugProcess *pProcess, [in] ICorDebugAppDomain *pAppDomain); |
| HRESULT LoadAssembly([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugAssembly *pAssembly); |
| HRESULT UnloadAssembly([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugAssembly *pAssembly); |
| HRESULT ControlCTrap([in] ICorDebugProcess *pProcess); |
| HRESULT NameChange([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread); |
| HRESULT UpdateModuleSymbols([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugModule *pModule, |
| [in] IStream *pSymbolStream); |
| HRESULT EditAndContinueRemap([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread, |
| [in] ICorDebugFunction *pFunction, [in] BOOL fAccurate); |
| |
| HRESULT BreakpointSetError([in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread, |
| [in] ICorDebugBreakpoint *pBreakpoint, [in] DWORD dwError); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(250E5EEA-DB5C-4C76-B6F3-8C46F12E3203), |
| pointer_default(unique) |
| ] |
| interface ICorDebugManagedCallback2 : IUnknown |
| { |
| HRESULT FunctionRemapOpportunity([in] ICorDebugAppDomain *pAppDomain, |
| [in] ICorDebugThread *pThread, [in] ICorDebugFunction *pOldFunction, |
| [in] ICorDebugFunction *pNewFunction, [in] ULONG32 oldILOffset); |
| |
| HRESULT CreateConnection([in] ICorDebugProcess *pProcess, [in] CONNID dwConnectionId, |
| [in] WCHAR *pConnName); |
| |
| HRESULT ChangeConnection([in] ICorDebugProcess *pProcess, [in] CONNID dwConnectionId ); |
| |
| HRESULT DestroyConnection([in] ICorDebugProcess *pProcess, [in] CONNID dwConnectionId ); |
| |
| |
| typedef enum CorDebugExceptionCallbackType |
| { |
| DEBUG_EXCEPTION_FIRST_CHANCE = 1, |
| DEBUG_EXCEPTION_USER_FIRST_CHANCE = 2, |
| DEBUG_EXCEPTION_CATCH_HANDLER_FOUND = 3, |
| DEBUG_EXCEPTION_UNHANDLED = 4 |
| } CorDebugExceptionCallbackType; |
| |
| typedef enum CorDebugExceptionFlags |
| { |
| DEBUG_EXCEPTION_CAN_BE_INTERCEPTED = 0x0001 |
| } CorDebugExceptionFlags; |
| |
| HRESULT Exception( [in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread, |
| [in] ICorDebugFrame *pFrame, [in] ULONG32 nOffset, |
| [in] CorDebugExceptionCallbackType dwEventType, [in] DWORD dwFlags ); |
| |
| typedef enum CorDebugExceptionUnwindCallbackType |
| { |
| DEBUG_EXCEPTION_UNWIND_BEGIN = 1, |
| DEBUG_EXCEPTION_INTERCEPTED = 2 |
| } CorDebugExceptionUnwindCallbackType; |
| |
| HRESULT ExceptionUnwind( [in] ICorDebugAppDomain *pAppDomain, [in] ICorDebugThread *pThread, |
| [in] CorDebugExceptionUnwindCallbackType dwEventType, |
| [in] DWORD dwFlags ); |
| |
| HRESULT FunctionRemapComplete([in] ICorDebugAppDomain *pAppDomain, |
| [in] ICorDebugThread *pThread, [in] ICorDebugFunction *pFunction); |
| |
| HRESULT MDANotification([in] ICorDebugController * pController, |
| [in] ICorDebugThread *pThread, [in] ICorDebugMDA * pMDA |
| ); |
| |
| }; |
| [ |
| object, |
| local, |
| uuid(3d6f5f61-7538-11d3-8d5b-00104b35e7ef), |
| pointer_default(unique) |
| ] |
| interface ICorDebug : IUnknown |
| { |
| HRESULT Initialize(); |
| HRESULT Terminate(); |
| HRESULT SetManagedHandler([in] ICorDebugManagedCallback *pCallback); |
| HRESULT SetUnmanagedHandler([in] ICorDebugUnmanagedCallback *pCallback); |
| HRESULT CreateProcess([in] LPCWSTR lpApplicationName, [in] LPWSTR lpCommandLine, |
| [in] LPSECURITY_ATTRIBUTES lpProcessAttributes, |
| [in] LPSECURITY_ATTRIBUTES lpThreadAttributes, |
| [in] BOOL bInheritHandles, [in] DWORD dwCreationFlags, |
| [in] PVOID lpEnvironment, [in] LPCWSTR lpCurrentDirectory, |
| [in] LPSTARTUPINFOW lpStartupInfo, |
| [in] LPPROCESS_INFORMATION lpProcessInformation, |
| [in] CorDebugCreateProcessFlags debuggingFlags, |
| [out] ICorDebugProcess **ppProcess); |
| |
| HRESULT DebugActiveProcess([in] DWORD id, [in] BOOL win32Attach, |
| [out] ICorDebugProcess **ppProcess); |
| HRESULT EnumerateProcesses([out] ICorDebugProcessEnum **ppProcess); |
| HRESULT GetProcess([in] DWORD dwProcessId, [out] ICorDebugProcess **ppProcess); |
| HRESULT CanLaunchOrAttach([in] DWORD dwProcessId, [in] BOOL win32DebuggingEnabled); |
| }; |
| |
| |
| [ |
| object, |
| local, |
| uuid(CC7BCAE8-8A68-11d2-983C-0000F808342D), |
| pointer_default(unique) |
| ] |
| interface ICorDebugBreakpoint : IUnknown |
| { |
| HRESULT Activate([in] BOOL bActive); |
| HRESULT IsActive([out] BOOL *pbActive); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(CC7BCAE9-8A68-11d2-983C-0000F808342D), |
| pointer_default(unique) |
| ] |
| interface ICorDebugFunctionBreakpoint : ICorDebugBreakpoint |
| { |
| HRESULT GetFunction([out] ICorDebugFunction **ppFunction); |
| HRESULT GetOffset([out] ULONG32 *pnOffset); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(CC7BCAEA-8A68-11d2-983C-0000F808342D), |
| pointer_default(unique) |
| ] |
| interface ICorDebugModuleBreakpoint : ICorDebugBreakpoint |
| { |
| HRESULT GetModule([out] ICorDebugModule **ppModule); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(CC7BCAEB-8A68-11d2-983C-0000F808342D), |
| pointer_default(unique) |
| ] |
| interface ICorDebugValueBreakpoint : ICorDebugBreakpoint |
| { |
| HRESULT GetValue([out] ICorDebugValue **ppValue); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(CC7BCAEC-8A68-11d2-983C-0000F808342D), |
| pointer_default(unique) |
| ] |
| interface ICorDebugStepper : IUnknown |
| { |
| HRESULT IsActive([out] BOOL *pbActive); |
| HRESULT Deactivate(); |
| |
| typedef enum CorDebugIntercept |
| { |
| INTERCEPT_NONE = 0x0 , |
| INTERCEPT_CLASS_INIT = 0x01, |
| INTERCEPT_EXCEPTION_FILTER = 0x02, |
| INTERCEPT_SECURITY = 0x04, |
| INTERCEPT_CONTEXT_POLICY = 0x08, |
| INTERCEPT_INTERCEPTION = 0x10, |
| INTERCEPT_ALL = 0xffff |
| } CorDebugIntercept; |
| |
| HRESULT SetInterceptMask([in] CorDebugIntercept mask); |
| |
| typedef enum CorDebugUnmappedStop |
| { |
| STOP_NONE = 0x0, |
| STOP_PROLOG = 0x01, |
| STOP_EPILOG = 0x02, |
| STOP_NO_MAPPING_INFO = 0x04, |
| STOP_OTHER_UNMAPPED = 0x08, |
| STOP_UNMANAGED = 0x10, |
| |
| STOP_ALL = 0xffff, |
| |
| } CorDebugUnmappedStop; |
| |
| HRESULT SetUnmappedStopMask([in] CorDebugUnmappedStop mask); |
| HRESULT Step([in] BOOL bStepIn); |
| |
| typedef struct COR_DEBUG_STEP_RANGE |
| { |
| ULONG32 startOffset, endOffset; |
| } COR_DEBUG_STEP_RANGE; |
| |
| HRESULT StepRange([in] BOOL bStepIn, [in] COR_DEBUG_STEP_RANGE ranges[], [in] ULONG32 cRangeCount); |
| HRESULT StepOut(); |
| HRESULT SetRangeIL([in] BOOL bIL); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(CC7BCB01-8A68-11d2-983C-0000F808342D), |
| pointer_default(unique) |
| ] |
| interface ICorDebugEnum : IUnknown |
| { |
| HRESULT Skip([in] ULONG celt); |
| HRESULT Reset(); |
| HRESULT Clone([out] ICorDebugEnum **ppEnum); |
| HRESULT GetCount([out] ULONG *pcelt); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(63ca1b24-4359-4883-bd57-13f815f58744), |
| pointer_default(unique) |
| ] |
| |
| interface ICorDebugAppDomainEnum : ICorDebugEnum |
| { |
| HRESULT Next([in] ULONG celt, [out] ICorDebugAppDomain *values[], [out] ULONG *pceltFetched); |
| |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(4a2a1ec9-85ec-4bfb-9f15-a89fdfe0fe83), |
| pointer_default(unique) |
| ] |
| interface ICorDebugAssemblyEnum : ICorDebugEnum |
| { |
| HRESULT Next([in] ULONG celt, [out] ICorDebugAssembly *values[], [out] ULONG *pceltFetched); |
| |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(CC7BCB03-8A68-11d2-983C-0000F808342D), |
| pointer_default(unique) |
| ] |
| interface ICorDebugBreakpointEnum : ICorDebugEnum |
| { |
| HRESULT Next([in] ULONG celt, [out] ICorDebugBreakpoint *breakpoints[], [out] ULONG *pceltFetched); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(CC7BCB08-8A68-11d2-983C-0000F808342D), |
| pointer_default(unique) |
| ] |
| interface ICorDebugChainEnum : ICorDebugEnum |
| { |
| HRESULT Next([in] ULONG celt, [out] ICorDebugChain *chains[], [out] ULONG *pceltFetched); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(F0E18809-72B5-11d2-976F-00A0C9B4D50C), |
| pointer_default(unique) |
| ] |
| interface ICorDebugErrorInfoEnum : ICorDebugEnum |
| { |
| HRESULT Next([in] ULONG celt, [out] ICorDebugEditAndContinueErrorInfo *errors[], |
| [out] ULONG *pceltFetched); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(CC7BCB07-8A68-11d2-983C-0000F808342D), |
| pointer_default(unique) |
| ] |
| interface ICorDebugFrameEnum : ICorDebugEnum |
| { |
| HRESULT Next([in] ULONG celt, [out] ICorDebugFrame *frames[], [out] ULONG *pceltFetched); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(CC7BCB09-8A68-11d2-983C-0000F808342D), |
| pointer_default(unique) |
| ] |
| interface ICorDebugModuleEnum : ICorDebugEnum |
| { |
| HRESULT Next([in] ULONG celt, [out] ICorDebugModule *modules[], [out] ULONG *pceltFetched); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(CC7BCB02-8A68-11d2-983C-0000F808342D), |
| pointer_default(unique) |
| ] |
| interface ICorDebugObjectEnum : ICorDebugEnum |
| { |
| HRESULT Next([in] ULONG celt, [out] CORDB_ADDRESS objects[], [out] ULONG *pceltFetched); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(CC7BCB05-8A68-11d2-983C-0000F808342D), |
| pointer_default(unique) |
| ] |
| interface ICorDebugProcessEnum : ICorDebugEnum |
| { |
| HRESULT Next([in] ULONG celt, [out] ICorDebugProcess *processes[], [out] ULONG *pceltFetched); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(CC7BCB04-8A68-11d2-983C-0000F808342D), |
| pointer_default(unique) |
| ] |
| interface ICorDebugStepperEnum : ICorDebugEnum |
| { |
| HRESULT Next([in] ULONG celt, [out] ICorDebugStepper *steppers[], [out] ULONG *pceltFetched); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(CC7BCB06-8A68-11d2-983C-0000F808342D), |
| pointer_default(unique) |
| ] |
| interface ICorDebugThreadEnum : ICorDebugEnum |
| { |
| HRESULT Next([in] ULONG celt, [out] ICorDebugThread *threads[], [out] ULONG *pceltFetched); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(CC7BCAEE-8A68-11d2-983C-0000F808342D), |
| pointer_default(unique) |
| ] |
| interface ICorDebugChain : IUnknown |
| { |
| HRESULT GetThread([out] ICorDebugThread **ppThread); |
| HRESULT GetStackRange([out] CORDB_ADDRESS *pStart, [out] CORDB_ADDRESS *pEnd); |
| HRESULT GetContext([out] ICorDebugContext **ppContext); |
| HRESULT GetCaller([out] ICorDebugChain **ppChain); |
| HRESULT GetCallee([out] ICorDebugChain **ppChain); |
| HRESULT GetPrevious([out] ICorDebugChain **ppChain); |
| HRESULT GetNext([out] ICorDebugChain **ppChain); |
| HRESULT IsManaged([out] BOOL *pManaged); |
| HRESULT EnumerateFrames([out] ICorDebugFrameEnum **ppFrames); |
| HRESULT GetActiveFrame([out] ICorDebugFrame **ppFrame); |
| HRESULT GetRegisterSet([out] ICorDebugRegisterSet **ppRegisters); |
| typedef enum CorDebugChainReason |
| { |
| CHAIN_NONE = 0x000, |
| CHAIN_CLASS_INIT = 0x001, |
| CHAIN_EXCEPTION_FILTER = 0x002, |
| CHAIN_SECURITY = 0x004, |
| CHAIN_CONTEXT_POLICY = 0x008, |
| CHAIN_INTERCEPTION = 0x010, |
| CHAIN_PROCESS_START = 0x020, |
| CHAIN_THREAD_START = 0x040, |
| CHAIN_ENTER_MANAGED = 0x080, |
| CHAIN_ENTER_UNMANAGED = 0x100, |
| CHAIN_DEBUGGER_EVAL = 0x200, |
| CHAIN_CONTEXT_SWITCH = 0x400, |
| CHAIN_FUNC_EVAL = 0x800, |
| } CorDebugChainReason; |
| |
| HRESULT GetReason([out] CorDebugChainReason *pReason); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(CC7BCAEF-8A68-11d2-983C-0000F808342D), |
| pointer_default(unique) |
| ] |
| interface ICorDebugFrame : IUnknown |
| { |
| HRESULT GetChain([out] ICorDebugChain **ppChain); |
| HRESULT GetCode([out] ICorDebugCode **ppCode); |
| HRESULT GetFunction([out] ICorDebugFunction **ppFunction); |
| HRESULT GetFunctionToken([out] mdMethodDef *pToken); |
| HRESULT GetStackRange([out] CORDB_ADDRESS *pStart, [out] CORDB_ADDRESS *pEnd); |
| HRESULT GetCaller([out] ICorDebugFrame **ppFrame); |
| HRESULT GetCallee([out] ICorDebugFrame **ppFrame); |
| HRESULT CreateStepper([out] ICorDebugStepper **ppStepper); |
| }; |
| |
| |
| [ |
| object, |
| local, |
| uuid(CC7BCB0B-8A68-11d2-983C-0000F808342D), |
| pointer_default(unique) |
| ] |
| interface ICorDebugRegisterSet : IUnknown |
| { |
| typedef enum CorDebugRegister |
| { |
| REGISTER_INSTRUCTION_POINTER = 0, |
| REGISTER_STACK_POINTER, |
| REGISTER_FRAME_POINTER, |
| |
| REGISTER_X86_EIP = 0, |
| REGISTER_X86_ESP, |
| REGISTER_X86_EBP, |
| |
| REGISTER_X86_EAX, |
| REGISTER_X86_ECX, |
| REGISTER_X86_EDX, |
| REGISTER_X86_EBX, |
| |
| REGISTER_X86_ESI, |
| REGISTER_X86_EDI, |
| |
| REGISTER_X86_FPSTACK_0, |
| REGISTER_X86_FPSTACK_1, |
| REGISTER_X86_FPSTACK_2, |
| REGISTER_X86_FPSTACK_3, |
| REGISTER_X86_FPSTACK_4, |
| REGISTER_X86_FPSTACK_5, |
| REGISTER_X86_FPSTACK_6, |
| REGISTER_X86_FPSTACK_7, |
| |
| REGISTER_AMD64_RIP = 0, |
| REGISTER_AMD64_RSP, |
| REGISTER_AMD64_RBP, |
| |
| REGISTER_AMD64_RAX, |
| REGISTER_AMD64_RCX, |
| REGISTER_AMD64_RDX, |
| REGISTER_AMD64_RBX, |
| |
| REGISTER_AMD64_RSI, |
| REGISTER_AMD64_RDI, |
| |
| REGISTER_AMD64_R8, |
| REGISTER_AMD64_R9, |
| REGISTER_AMD64_R10, |
| REGISTER_AMD64_R11, |
| REGISTER_AMD64_R12, |
| REGISTER_AMD64_R13, |
| REGISTER_AMD64_R14, |
| REGISTER_AMD64_R15, |
| |
| REGISTER_AMD64_XMM0, |
| REGISTER_AMD64_XMM1, |
| REGISTER_AMD64_XMM2, |
| REGISTER_AMD64_XMM3, |
| REGISTER_AMD64_XMM4, |
| REGISTER_AMD64_XMM5, |
| REGISTER_AMD64_XMM6, |
| REGISTER_AMD64_XMM7, |
| REGISTER_AMD64_XMM8, |
| REGISTER_AMD64_XMM9, |
| REGISTER_AMD64_XMM10, |
| REGISTER_AMD64_XMM11, |
| REGISTER_AMD64_XMM12, |
| REGISTER_AMD64_XMM13, |
| REGISTER_AMD64_XMM14, |
| REGISTER_AMD64_XMM15, |
| |
| REGISTER_IA64_BSP = REGISTER_FRAME_POINTER, |
| |
| REGISTER_IA64_R0 = REGISTER_IA64_BSP + 1, |
| REGISTER_IA64_F0 = REGISTER_IA64_R0 + 128, |
| |
| } CorDebugRegister; |
| |
| HRESULT GetRegistersAvailable([out] ULONG64 *pAvailable); |
| |
| HRESULT GetRegisters([in] ULONG64 mask, [in] ULONG32 regCount, |
| [out] CORDB_REGISTER regBuffer[]); |
| HRESULT SetRegisters([in] ULONG64 mask, [in] ULONG32 regCount, |
| [in] CORDB_REGISTER regBuffer[]); |
| HRESULT GetThreadContext([in] ULONG32 contextSize, [in, out] BYTE context[]); |
| HRESULT SetThreadContext([in] ULONG32 contextSize, [in] BYTE context[]); |
| } |
| |
| [ |
| object, |
| local, |
| uuid(CC7BCAF6-8A68-11d2-983C-0000F808342D), |
| pointer_default(unique) |
| ] |
| interface ICorDebugEval : IUnknown |
| { |
| HRESULT CallFunction([in] ICorDebugFunction *pFunction, [in] ULONG32 nArgs, |
| [in] ICorDebugValue *ppArgs[]); |
| HRESULT NewObject([in] ICorDebugFunction *pConstructor, [in] ULONG32 nArgs, |
| [in] ICorDebugValue *ppArgs[]); |
| HRESULT NewObjectNoConstructor([in] ICorDebugClass *pClass); |
| HRESULT NewString([in] LPCWSTR string); |
| HRESULT NewArray([in] CorElementType elementType, [in] ICorDebugClass *pElementClass, |
| [in] ULONG32 rank, [in] ULONG32 dims[], [in] ULONG32 lowBounds[]); |
| HRESULT IsActive([out] BOOL *pbActive); |
| HRESULT Abort(); |
| HRESULT GetResult([out] ICorDebugValue **ppResult); |
| HRESULT GetThread([out] ICorDebugThread **ppThread); |
| HRESULT CreateValue([in] CorElementType elementType, [in] ICorDebugClass *pElementClass, |
| [out] ICorDebugValue **ppValue); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(6DC3FA01-D7CB-11d2-8A95-0080C792E5D8), |
| pointer_default(unique) |
| ] |
| interface ICorDebugEditAndContinueSnapshot : IUnknown |
| { |
| HRESULT CopyMetaData([in] IStream *pIStream, [out] GUID *pMvid); |
| HRESULT GetMvid([out] GUID *pMvid); |
| HRESULT GetRoDataRVA([out] ULONG32 *pRoDataRVA); |
| HRESULT GetRwDataRVA([out] ULONG32 *pRwDataRVA); |
| HRESULT SetPEBytes([in] IStream *pIStream); |
| HRESULT SetILMap([in] mdToken mdFunction, [in] ULONG cMapSize, [in] COR_IL_MAP map[]); |
| HRESULT SetPESymbolBytes([in] IStream *pIStream); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(dba2d8c1-e5c5-4069-8c13-10a7c6abf43d), |
| pointer_default(unique) |
| ] |
| interface ICorDebugModule : IUnknown |
| { |
| HRESULT GetProcess([out] ICorDebugProcess **ppProcess); |
| HRESULT GetBaseAddress([out] CORDB_ADDRESS *pAddress); |
| HRESULT GetAssembly([out] ICorDebugAssembly **ppAssembly); |
| HRESULT GetName([in] ULONG32 cchName, [out] ULONG32 *pcchName, [out] WCHAR szName[]); |
| HRESULT EnableJITDebugging([in] BOOL bTrackJITInfo, [in] BOOL bAllowJitOpts); |
| HRESULT EnableClassLoadCallbacks([in] BOOL bClassLoadCallbacks); |
| HRESULT GetFunctionFromToken([in] mdMethodDef methodDef, [out] ICorDebugFunction **ppFunction); |
| HRESULT GetFunctionFromRVA([in] CORDB_ADDRESS rva, [out] ICorDebugFunction **ppFunction); |
| HRESULT GetClassFromToken([in] mdTypeDef typeDef, [out] ICorDebugClass **ppClass); |
| HRESULT CreateBreakpoint([out] ICorDebugModuleBreakpoint **ppBreakpoint); |
| HRESULT GetEditAndContinueSnapshot([out] ICorDebugEditAndContinueSnapshot **ppEditAndContinueSnapshot); |
| HRESULT GetMetaDataInterface([in] REFIID riid, [out] IUnknown **ppObj); |
| HRESULT GetToken([out] mdModule *pToken); |
| HRESULT IsDynamic([out] BOOL *pDynamic); |
| HRESULT GetGlobalVariableValue([in] mdFieldDef fieldDef, [out] ICorDebugValue **ppValue); |
| HRESULT GetSize([out] ULONG32 *pcBytes); |
| HRESULT IsInMemory([out] BOOL *pInMemory); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(CC7BCAF5-8A68-11d2-983C-0000F808342D), |
| pointer_default(unique) |
| ] |
| interface ICorDebugClass : IUnknown |
| { |
| HRESULT GetModule([out] ICorDebugModule **pModule); |
| HRESULT GetToken([out] mdTypeDef *pTypeDef); |
| HRESULT GetStaticFieldValue([in] mdFieldDef fieldDef, [in] ICorDebugFrame *pFrame, |
| [out] ICorDebugValue **ppValue); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(df59507c-d47a-459e-bce2-6427eac8fd06), |
| pointer_default(unique) |
| ] |
| interface ICorDebugAssembly : IUnknown |
| { |
| HRESULT GetProcess([out] ICorDebugProcess **ppProcess); |
| HRESULT GetAppDomain([out] ICorDebugAppDomain **ppAppDomain); |
| HRESULT EnumerateModules([out] ICorDebugModuleEnum **ppModules); |
| HRESULT GetCodeBase([in] ULONG32 cchName, [out] ULONG32 *pcchName, [out] WCHAR szName[]); |
| HRESULT GetName([in] ULONG32 cchName, [out] ULONG32 *pcchName, [out] WCHAR szName[]); |
| }; |
| |
| |
| [ |
| object, |
| local, |
| uuid(CC7BCAF3-8A68-11d2-983C-0000F808342D), |
| pointer_default(unique) |
| ] |
| interface ICorDebugFunction : IUnknown |
| { |
| HRESULT GetModule([out] ICorDebugModule **ppModule); |
| HRESULT GetClass([out] ICorDebugClass **ppClass); |
| HRESULT GetToken([out] mdMethodDef *pMethodDef); |
| HRESULT GetILCode([out] ICorDebugCode **ppCode); |
| HRESULT GetNativeCode([out] ICorDebugCode **ppCode); |
| HRESULT CreateBreakpoint([out] ICorDebugFunctionBreakpoint **ppBreakpoint); |
| HRESULT GetLocalVarSigToken([out] mdSignature *pmdSig); |
| HRESULT GetCurrentVersionNumber([out] ULONG32 *pnCurrentVersion); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(5263E909-8CB5-11d3-BD2F-0000F80849BD), |
| pointer_default(unique) |
| ] |
| interface ICorDebugUnmanagedCallback : IUnknown |
| { |
| HRESULT DebugEvent([in] LPDEBUG_EVENT pDebugEvent, [in] BOOL fOutOfBand); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(8D600D41-F4F6-4cb3-B7EC-7BD164944036), |
| pointer_default(unique) |
| ] |
| interface ICorDebugEditAndContinueErrorInfo : IUnknown |
| { |
| HRESULT GetModule([out] ICorDebugModule **ppModule); |
| HRESULT GetToken([out]mdToken *pToken); |
| HRESULT GetErrorCode([out]HRESULT *pHr); |
| HRESULT GetString([in] ULONG32 cchString, [out] ULONG32 *pcchString, |
| [out] WCHAR szString[]); |
| } |
| |
| [ |
| object, |
| local, |
| uuid(18AD3D6E-B7D2-11d2-BD04-0000F80849BD), |
| pointer_default(unique) |
| ] |
| interface ICorDebugObjectValue : ICorDebugValue |
| { |
| HRESULT GetClass([out] ICorDebugClass **ppClass); |
| HRESULT GetFieldValue([in] ICorDebugClass *pClass, [in] mdFieldDef fieldDef, |
| [out] ICorDebugValue **ppValue); |
| HRESULT GetVirtualMethod([in] mdMemberRef memberRef, [out] ICorDebugFunction **ppFunction); |
| HRESULT GetContext([out] ICorDebugContext **ppContext); |
| HRESULT IsValueClass([out] BOOL *pbIsValueClass); |
| HRESULT GetManagedCopy([out] IUnknown **ppObject); |
| HRESULT SetFromManagedCopy([in] IUnknown *pObject); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(CC7BCB00-8A68-11d2-983C-0000F808342D), |
| pointer_default(unique) |
| ] |
| interface ICorDebugContext : ICorDebugObjectValue |
| { |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(CC7BCAF4-8A68-11d2-983C-0000F808342D), |
| pointer_default(unique) |
| ] |
| interface ICorDebugCode : IUnknown |
| { |
| HRESULT IsIL([out] BOOL *pbIL); |
| HRESULT GetFunction([out] ICorDebugFunction **ppFunction); |
| HRESULT GetAddress([out] CORDB_ADDRESS *pStart); |
| HRESULT GetSize([out] ULONG32 *pcBytes); |
| HRESULT CreateBreakpoint([in] ULONG32 offset, [out] ICorDebugFunctionBreakpoint **ppBreakpoint); |
| HRESULT GetCode([in] ULONG32 startOffset, [in] ULONG32 endOffset, |
| [in] ULONG32 cBufferAlloc, [out] BYTE buffer[], [out] ULONG32 *pcBufferSize); |
| HRESULT GetVersionNumber([out] ULONG32 *nVersion); |
| HRESULT GetILToNativeMapping([in] ULONG32 cMap, [out] ULONG32 *pcMap, |
| [out] COR_DEBUG_IL_TO_NATIVE_MAP map[]); |
| HRESULT GetEnCRemapSequencePoints([in] ULONG32 cMap,[out] ULONG32 *pcMap, |
| [out] ULONG32 offsets[]); |
| }; |
| |
| [ |
| object, |
| local, |
| uuid(CC726F2F-1DB7-459b-B0EC-05F01D841B42), |
| pointer_default(unique) |
| ] |
| interface ICorDebugMDA : IUnknown |
| { |
| HRESULT GetName([in] ULONG32 cchName, [out] ULONG32 * pcchName, [out] WCHAR szName[]); |
| |
| HRESULT GetDescription([in] ULONG32 cchName, [out] ULONG32 * pcchName, [out] WCHAR szName[]); |
| |
| HRESULT GetXML([in] ULONG32 cchName, [out] ULONG32 * pcchName, [out] WCHAR szName[]); |
| |
| typedef enum CorDebugMDAFlags |
| { |
| MDA_FLAG_SLIP = 0x2 |
| } CorDebugMDAFlags; |
| |
| HRESULT GetFlags([in] CorDebugMDAFlags * pFlags); |
| |
| HRESULT GetOSThreadId([out] DWORD * pOsTid); |
| }; |