更新:2007 年 11 月
提供与公共语言运行库 (CLR) 目标项进行交互的方法。
interface ICLRDataTarget : IUnknown {
HRESULT GetCurrentThreadID (
[out] ULONG32 *threadID
);
HRESULT GetImageBase (
[in, string] LPCWSTR imagePath,
[out] CLRDATA_ADDRESS *baseAddress
);
HRESULT GetMachineType (
[out] ULONG32 *machineType
);
HRESULT GetPointerSize (
[out] ULONG32 *pointerSize
);
HRESULT GetThreadContext (
[in] ULONG32 threadID,
[in] ULONG32 contextFlags,
[in] ULONG32 contextSize,
[out, size_is(contextSize)]
BYTE *context
);
HRESULT GetTLSValue (
[in] ULONG32 threadID,
[in] ULONG32 index,
[out] CLRDATA_ADDRESS *value
);
HRESULT ReadVirtual (
[in] CLRDATA_ADDRESS address,
[out, size_is(bytesRequested), length_is(*bytesRead)]
BYTE *buffer,
[in] ULONG32 bytesRequested,
[out] ULONG32 *bytesRead
);
HRESULT Request (
[in] ULONG32 reqCode,
[in] ULONG32 inBufferSize,
[in, size_is(inBufferSize)]
BYTE *inBuffer,
[in] ULONG32 outBufferSize,
[out, size_is(outBufferSize)]
BYTE *outBuffer
);
HRESULT SetThreadContext (
[in] ULONG32 threadID,
[in] ULONG32 contextSize,
[in, size_is(contextSize)]
BYTE *context
);
HRESULT SetTLSValue (
[in] ULONG32 threadID,
[in] ULONG32 index,
[in] CLRDATA_ADDRESS value
);
HRESULT WriteVirtual (
[in] CLRDATA_ADDRESS address,
[in, size_is(bytesRequested)]
BYTE *buffer,
[in] ULONG32 bytesRequested,
[out] ULONG32 *bytesWritten
);
};
方法
方法 |
说明 |
---|---|
获取当前线程的操作系统标识符。 |
|
获取指定映像的内存基址。 |
|
获取目标进程正在使用的指令集类型的标识符。 |
|
获取指向当前目标的指针的大小(以字节为单位)。 |
|
获取一个指针,该指针指向具有指定标识符的线程的上下文。 |
|
为指定线程获取位于线程本地存储区 (TLS) 中指定索引处的值。 |
|
将指定的虚拟内存地址中的数据读入指定缓冲区。 |
|
由公共语言运行库 (CLR) 数据访问服务调用以请求操作(如实现所定义)。 |
|
设置目标进程中指定线程的当前上下文。 |
|
在目标进程中指定线程的线程本地存储区 (TLS) 中设置一个值。 |
|
将指定的缓冲区中的数据写入指定的虚拟内存地址。 |
备注
API 客户端(即调试器)必须为特定的目标项相应地实现此接口。例如,活动进程将与内存转储具有不同实现。
要求
**平台:**请参见 .NET Framework 系统要求。
**头文件:**ClrData.idl
**库:**CorGuids.lib
**.NET Framework 版本:**3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0