typedef enum
{
CLRDATA_FIELD_DEFAULT = 0x00000000,
-
+
// Identify particular kinds of types. These flags
// are shared between type, field and value.
CLRDATA_FIELD_IS_PRIMITIVE = CLRDATA_TYPE_IS_PRIMITIVE,
};
interface IXCLRDisassemblySupport;
-typedef SIZE_T (__stdcall *CDSTranslateAddrCB)(IXCLRDisassemblySupport *, CLRDATA_ADDRESS, wchar_t *, SIZE_T, DWORDLONG *);
-typedef SIZE_T (__stdcall *CDSTranslateFixupCB)(IXCLRDisassemblySupport *, CLRDATA_ADDRESS, SIZE_T, wchar_t *, SIZE_T, DWORDLONG *);
-typedef SIZE_T (__stdcall *CDSTranslateConstCB)(IXCLRDisassemblySupport *, DWORD, wchar_t *, SIZE_T);
-typedef SIZE_T (__stdcall *CDSTranslateRegrelCB)(IXCLRDisassemblySupport *, unsigned rega, CLRDATA_ADDRESS, wchar_t *, SIZE_T, DWORD *);
+typedef SIZE_T (__stdcall *CDSTranslateAddrCB)(IXCLRDisassemblySupport *, CLRDATA_ADDRESS, WCHAR *, SIZE_T, DWORDLONG *);
+typedef SIZE_T (__stdcall *CDSTranslateFixupCB)(IXCLRDisassemblySupport *, CLRDATA_ADDRESS, SIZE_T, WCHAR *, SIZE_T, DWORDLONG *);
+typedef SIZE_T (__stdcall *CDSTranslateConstCB)(IXCLRDisassemblySupport *, DWORD, WCHAR *, SIZE_T);
+typedef SIZE_T (__stdcall *CDSTranslateRegrelCB)(IXCLRDisassemblySupport *, unsigned rega, CLRDATA_ADDRESS, WCHAR *, SIZE_T, DWORD *);
[
object,
SIZE_T CbDisassemble(CLRDATA_ADDRESS, const void *, SIZE_T);
SIZE_T Cinstruction();
BOOL FSelectInstruction(SIZE_T);
- SIZE_T CchFormatInstr(wchar_t *, SIZE_T);
+ SIZE_T CchFormatInstr(WCHAR *, SIZE_T);
void *PvClient();
HRESULT SetTranslateFixupCallback([in]CDSTranslateFixupCB cb);
HRESULT SetTranslateConstCallback([in]CDSTranslateConstCB cb);
[
object,
local,
- uuid(A3C1704A-4559-4a67-8D28-E8F4FE3B3F62)
+ uuid(A3C1704A-4559-4a67-8D28-E8F4FE3B3F62)
]
interface IXCLRDataDisplay : IUnknown
{
const WCHAR * const annotation );
//produces <element base="base" size="size"/>
HRESULT WriteElementAddress(const char * const element, SIZE_T base, SIZE_T size);
- HRESULT WriteElementAddressNamed(const char * const element, const char * const name,
+ HRESULT WriteElementAddressNamed(const char * const element, const char * const name,
SIZE_T base, SIZE_T size);
- HRESULT WriteElementAddressNamedW(const char * const element, const WCHAR * const name,
+ HRESULT WriteElementAddressNamedW(const char * const element, const WCHAR * const name,
SIZE_T base, SIZE_T size);
HRESULT WriteElementString(const char * const element, const char * const data);
HRESULT WriteElementStringW(const char * const element, const WCHAR * const data);
* the same target state.
*/
HRESULT IsSameObject([in] IXCLRDataProcess* process);
-
+
/*
* Get the managed object representing the process.
*/
HRESULT GetManagedObject([out] IXCLRDataValue** value);
-
+
/*
* Mark the process so that it attempts to reach the
* desired execution state the next time it executes.
*/
HRESULT GetDesiredExecutionState([out] ULONG32* state);
HRESULT SetDesiredExecutionState([in] ULONG32 state);
-
+
/*
* Return an indicator of the type of data referred
* to by the given address.
* the address refers to non-managed-method information.
* Method names can be retrieved by using GetMethodInstanceByAddress
* and GetName on the method instance.
- *
+ *
* Returns S_FALSE if the buffer is not large enough for the name,
* and sets nameLen to be the buffer length needed.
*/
*/
HRESULT GetModuleByAddress([in] CLRDATA_ADDRESS address,
[out] IXCLRDataModule** mod);
-
+
/*
* Look up method instances by native code address.
*/
ULONG32 flags);
HRESULT SetAllCodeNotifications(IXCLRDataModule* mod,
ULONG32 flags);
-
+
/*
* Request notification when a type is
* loaded or unloaded.
[in, size_is(numTokens)] mdTypeDef tokens[],
[in, size_is(numTokens)] ULONG32 flags[],
[in] ULONG32 singleFlags);
-
+
/*
* Request notification when code is generated or
* discarded for a method.
*/
HRESULT GetOtherNotificationFlags([out] ULONG32* flags);
HRESULT SetOtherNotificationFlags([in] ULONG32 flags);
-
+
/*
* Look up method definitions by IL code address.
*/
/*
* Types used in IXCLRDataProcess2 and IXCLRDataExceptionNotification3
*/
-
+
typedef enum
{
GC_MARK_END = 1,
{
/*
* Request notification when a GC is triggered.
- * GcEvtArgs specifies exactly which GC events
+ * GcEvtArgs specifies exactly which GC events
* are of interest.
*/
/*
[out] ULONG32 *nameLen,
[out, size_is(bufLen)] WCHAR name[]);
- /*
+ /*
* Get a unique, stable identifier for this object.
*/
HRESULT GetUniqueID([out] ULONG64* id);
* Get state flags, defined in CLRDataAppDomainFlag.
*/
HRESULT GetFlags([out] ULONG32* flags);
-
+
/*
* Determine whether the given interface represents
* the same target state.
*/
HRESULT IsSameObject([in] IXCLRDataAppDomain* appDomain);
-
+
/*
* Get the managed object representing the app domain.
*/
* Get state flags, defined in CLRDataAssemblyFlag.
*/
HRESULT GetFlags([out] ULONG32* flags);
-
+
/*
* Determine whether the given interface represents
* the same target state.
*/
HRESULT IsSameObject([in] IXCLRDataAssembly* assembly);
-
+
HRESULT Request([in] ULONG32 reqCode,
[in] ULONG32 inBufferSize,
[in, size_is(inBufferSize)] BYTE* inBuffer,
CLRDATA_MODULE_DEFAULT = 0x00000000,
CLRDATA_MODULE_IS_DYNAMIC = 0x00000001,
CLRDATA_MODULE_IS_MEMORY_STREAM = 0x00000002,
+ CLRDATA_MODULE_IS_MAIN_MODULE = 0x00000004,
} CLRDataModuleFlag;
typedef enum
#pragma warning(push)
#pragma warning(disable:28718)
-/*
+/*
* Represents a loaded module.
- *
+ *
* Can be QI'd for a metadata interface or a symbol-store interface.
*/
[
*/
HRESULT GetTypeDefinitionByToken([in] mdTypeDef token,
[out] IXCLRDataTypeDefinition** typeDefinition);
-
+
/*
* Look up methods by name.
*/
HRESULT EnumMethodDefinitionByName([in,out] CLRDATA_ENUM* handle,
[out] IXCLRDataMethodDefinition** method);
HRESULT EndEnumMethodDefinitionsByName([in] CLRDATA_ENUM handle);
-
+
HRESULT StartEnumMethodInstancesByName([in] LPCWSTR name,
[in] ULONG32 flags,
[in] IXCLRDataAppDomain* appDomain,
HRESULT EnumMethodInstanceByName([in,out] CLRDATA_ENUM* handle,
[out] IXCLRDataMethodInstance** method);
HRESULT EndEnumMethodInstancesByName([in] CLRDATA_ENUM handle);
-
+
/*
* Get a method definition by metadata token.
*/
HRESULT EnumDataByName([in,out] CLRDATA_ENUM* handle,
[out] IXCLRDataValue** value);
HRESULT EndEnumDataByName([in] CLRDATA_ENUM handle);
-
+
/*
* Get the module's base name.
*/
* Get state flags, defined in CLRDataModuleFlag.
*/
HRESULT GetFlags([out] ULONG32* flags);
-
+
/*
* Determine whether the given interface represents
* the same target state.
*/
HRESULT IsSameObject([in] IXCLRDataModule* mod);
-
+
/*
* Get the memory regions associated with this module.
*/
#pragma warning(pop)
-/*
+/*
* Represents additional APIs for a loaded module.
- *
+ *
*/
[
object,
*/
HRESULT GetMethodDefinitionByToken([in] mdMethodDef token,
[out] IXCLRDataMethodDefinition** methodDefinition);
-
+
/*
* Enumerate instances of this definition.
*/
* Get standard element type.
*/
HRESULT GetCorElementType([out] CorElementType* type);
-
+
/*
* Get state flags, defined in CLRDataTypeFlag.
*/
HRESULT GetFlags([out] ULONG32* flags);
-
+
/*
* Determine whether the given interface represents
* the same target state.
*/
HRESULT IsSameObject([in] IXCLRDataTypeDefinition* type);
-
+
HRESULT Request([in] ULONG32 reqCode,
[in] ULONG32 inBufferSize,
[in, size_is(inBufferSize)] BYTE* inBuffer,
[out, size_is(nameBufLen)] WCHAR nameBuf[],
[out] IXCLRDataTypeDefinition** type,
[out] ULONG32* flags);
-
+
/*
* Request notification when the given type is
* loaded or unloaded.
HRESULT EnumMethodInstanceByName([in,out] CLRDATA_ENUM* handle,
[out] IXCLRDataMethodInstance** method);
HRESULT EndEnumMethodInstancesByName([in] CLRDATA_ENUM handle);
-
+
/*
* Get the number of static fields in the type.
* OBSOLETE: Use GetNumStaticFields2.
* Get state flags, defined in CLRDataTypeFlag.
*/
HRESULT GetFlags([out] ULONG32* flags);
-
+
/*
* Determine whether the given interface represents
* the same target state.
*/
HRESULT IsSameObject([in] IXCLRDataTypeInstance* type);
-
+
HRESULT Request([in] ULONG32 reqCode,
[in] ULONG32 inBufferSize,
[in, size_is(inBufferSize)] BYTE* inBuffer,
* the same target state.
*/
HRESULT IsSameObject([in] IXCLRDataMethodDefinition* method);
-
+
/*
* Get the latest EnC version of this method.
*/
HRESULT GetLatestEnCVersion([out] ULONG32* version);
-
+
/*
* Get the IL code regions associated with this method.
*/
HRESULT EnumExtent([in, out] CLRDATA_ENUM* handle,
[out] CLRDATA_METHDEF_EXTENT* extent);
HRESULT EndEnumExtents([in] CLRDATA_ENUM handle);
-
+
/*
* Request notification when code is generated or
* discarded for the method.
*/
HRESULT GetCodeNotification([out] ULONG32* flags);
HRESULT SetCodeNotification([in] ULONG32 flags);
-
+
HRESULT Request([in] ULONG32 reqCode,
[in] ULONG32 inBufferSize,
[in, size_is(inBufferSize)] BYTE* inBuffer,
* Get state flags, defined in CLRDataMethodFlag.
*/
HRESULT GetFlags([out] ULONG32* flags);
-
+
/*
* Determine whether the given interface represents
* the same target state.
*/
HRESULT IsSameObject([in] IXCLRDataMethodInstance* method);
-
+
/*
* Get the EnC version of this instance.
*/
HRESULT GetEnCVersion([out] ULONG32* version);
-
+
/*
* Enumerate this method's parameterization.
*/
HRESULT GetILOffsetsByAddress([in] CLRDATA_ADDRESS address,
[in] ULONG32 offsetsLen,
[out] ULONG32 *offsetsNeeded,
- [out, size_is(offsetsLen)]
+ [out, size_is(offsetsLen)]
ULONG32 ilOffsets[]);
HRESULT GetAddressRangesByILOffset([in] ULONG32 ilOffset,
[in] ULONG32 rangesLen,
[out] ULONG32 *rangesNeeded,
- [out, size_is(rangesLen)]
+ [out, size_is(rangesLen)]
CLRDATA_ADDRESS_RANGE addressRanges[]);
HRESULT GetILAddressMap([in] ULONG32 mapLen,
[out] ULONG32 *mapNeeded,
HRESULT EnumExtent([in, out] CLRDATA_ENUM* handle,
[out] CLRDATA_ADDRESS_RANGE* extent);
HRESULT EndEnumExtents([in] CLRDATA_ENUM handle);
-
+
HRESULT Request([in] ULONG32 reqCode,
[in] ULONG32 inBufferSize,
[in, size_is(inBufferSize)] BYTE* inBuffer,
]
interface IXCLRDataTask : IUnknown
{
- /*
- * Get the process for this task.
+ /*
+ * Get the process for this task.
*/
HRESULT GetProcess([out] IXCLRDataProcess** process);
*/
HRESULT GetCurrentAppDomain([out] IXCLRDataAppDomain **appDomain);
- /*
+ /*
* Get a unique, stable identifier for this task.
*/
HRESULT GetUniqueID([out] ULONG64* id);
* the same target state.
*/
HRESULT IsSameObject([in] IXCLRDataTask* task);
-
+
/*
* Get the managed object representing the task.
*/
HRESULT GetManagedObject([out] IXCLRDataValue** value);
-
+
/*
* Mark the task so that it attempts to reach the
* given execution state the next time it executes.
*/
HRESULT GetDesiredExecutionState([out] ULONG32* state);
HRESULT SetDesiredExecutionState([in] ULONG32 state);
-
+
/*
* Create a stack walker to walk this task's stack. The
* flags parameter takes a bitfield of values from the
HRESULT CreateStackWalk([in] ULONG32 flags,
[out] IXCLRDataStackWalk** stackWalk);
- /*
+ /*
* Get the current OS thread ID for this task. If this task is on a fiber,
- * the ID may change over time.
+ * the ID may change over time.
*/
HRESULT GetOSThreadID([out] ULONG32* id);
- /*
+ /*
* Get the current context for this task, controlled by the given flags.
* Returns S_FALSE if the size is not large enough.
*/
[out] ULONG32* contextSize,
[out, size_is(contextBufSize)] BYTE contextBuf[]);
- /*
+ /*
* Destructively set the current context for this task.
*/
HRESULT SetContext([in] ULONG32 contextSize,
typedef enum
{
/* Frame not recognized */
- CLRDATA_SIMPFRAME_UNRECOGNIZED = 0x1,
+ CLRDATA_SIMPFRAME_UNRECOGNIZED = 0x1,
/* Frame corresponds to a managed method */
- CLRDATA_SIMPFRAME_MANAGED_METHOD = 0x2,
+ CLRDATA_SIMPFRAME_MANAGED_METHOD = 0x2,
/* Frame corresponds to runtime-controlled managed code */
CLRDATA_SIMPFRAME_RUNTIME_MANAGED_CODE = 0x4,
CLRDATA_DETFRAME_EXCEPTION_FILTER,
CLRDATA_DETFRAME_SECURITY,
CLRDATA_DETFRAME_CONTEXT_POLICY,
- CLRDATA_DETFRAME_INTERCEPTION,
+ CLRDATA_DETFRAME_INTERCEPTION,
CLRDATA_DETFRAME_PROCESS_START,
CLRDATA_DETFRAME_THREAD_START,
CLRDATA_DETFRAME_TRANSITION_TO_MANAGED,
]
interface IXCLRDataStackWalk : IUnknown
{
- /*
+ /*
* Get the current context of this stack walk.
* This is the original context with any unwinding
* applied to it. As unwinding may only restore
[out] ULONG32* contextSize,
[out, size_is(contextBufSize)] BYTE contextBuf[]);
- /*
+ /*
* Change the current context of this stack walk, allowing the
* debugger to move it to an arbitrary context. Does not actually
* alter the current context of the thread whose stack is being walked.
*/
HRESULT GetStackSizeSkipped([out] ULONG64* stackSizeSkipped);
- /*
+ /*
* Return information about the type of the current frame
*/
HRESULT GetFrameType([out] CLRDataSimpleFrameType* simpleType,
[in] ULONG32 outBufferSize,
[out, size_is(outBufferSize)] BYTE* outBuffer);
- /*
+ /*
* Change the current context of this stack walk, allowing the
* debugger to move it to an arbitrary context. Does not actually
* alter the current context of the thread whose stack is being walked.
]
interface IXCLRDataFrame : IUnknown
{
- /*
+ /*
* Return information about the type of this frame.
*/
HRESULT GetFrameType([out] CLRDataSimpleFrameType* simpleType,
[out] CLRDataDetailedFrameType* detailedType);
- /*
+ /*
* Get the stack walk context as of this frame.
* This is the original context with any unwinding
* applied to it. As unwinding may only restore
[in, size_is(inBufferSize)] BYTE* inBuffer,
[in] ULONG32 outBufferSize,
[out, size_is(outBufferSize)] BYTE* outBuffer);
-
+
/*
* Enumerate the full parameterization of the frame's
* type and method.
]
interface IXCLRDataFrame2 : IUnknown
{
- /*
+ /*
* Retun generic token if available.
*/
HRESULT GetExactGenericArgsToken([out] IXCLRDataValue** genericToken);
* Get state flags, defined in CLRDataExceptionStateFlag.
*/
HRESULT GetFlags([out] ULONG32* flags);
-
+
/*
* For nested exceptions, get the exception that
* was being handled when this exception occurred.
* Get the managed object representing the exception.
*/
HRESULT GetManagedObject([out] IXCLRDataValue** value);
-
+
/*
* Get the standard base type of the exception.
*/
HRESULT GetString([in] ULONG32 bufLen,
[out] ULONG32 *strLen,
[out, size_is(bufLen)] WCHAR str[]);
-
+
HRESULT Request([in] ULONG32 reqCode,
[in] ULONG32 inBufferSize,
[in, size_is(inBufferSize)] BYTE* inBuffer,
* Get state flags, defined in CLRDataValueFlag.
*/
HRESULT GetFlags([out] ULONG32* flags);
-
+
/*
* Get the address of the object.
* Fails unless the object is a single contiguous
*/
HRESULT GetType([out] IXCLRDataTypeInstance **typeInstance);
- /*
+ /*
* Get the number of fields in the object.
* OBSOLETE: Use GetNumFields2.
*/
HRESULT GetNumFields([out] ULONG32 *numFields);
- /*
+ /*
* Gets one field of the object.
*
* Because field ordering is not fixed, can also return name
* For other values there is no associated type.
*/
HRESULT GetAssociatedType([out] IXCLRDataTypeInstance** assocType);
-
+
/*
* String methods that only work for string data values.
*/
- /*
+ /*
* Return the length and contents of the string.
*/
HRESULT GetString([in] ULONG32 bufLen,
interface IXCLRDataExceptionNotification3 : IXCLRDataExceptionNotification2
{
/*
- * The specified GC event was triggered. The GC event is passed in an
+ * The specified GC event was triggered. The GC event is passed in an
* opaque structure, whose structure is given by buffSize
*/
HRESULT OnGcEvent([in] GcEvtArgs gcEvtArgs);
interface IXCLRDataExceptionNotification5 : IXCLRDataExceptionNotification4
{
/*
- * New code was generated for a method. The given address is the start address of
+ * New code was generated for a method. The given address is the start address of
* the native newly jitted code.
*/
HRESULT OnCodeGenerated2([in] IXCLRDataMethodInstance* method, [in] CLRDATA_ADDRESS nativeCodeLocation);
-}
\ No newline at end of file
+}