ICLRDebugging::OpenVirtualProcess 方法
获取 ICorDebugProcess 接口,该接口与进程中加载的公共语言运行时 (CLR) 模块对应。
HRESULT OpenVirtualProcess(
[in] ULONG64 moduleBaseAddress,
[in] IUnknown * pDataTarget,
[in] ICLRDebuggingLibraryProvider * pLibraryProvider,
[in] CLR_DEBUGGING_VERSION * pMaxDebuggerSupportedVersion,
[in] REFIID riidProcess,
[out, iid_is(riidProcess)] IUnknown ** ppProcess,
[in, out] CLR_DEBUGGING_VERSION * pVersion,
[out] CLR_DEBUGGING_PROCESS_FLAGS * pdwFlags);
参数
moduleBaseAddress
[in] 目标进程中的模块的基址。 如果指定的模块不是 CLR 模块,则将返回 COR_E_NOT_CLR。pDataTarget
[in] 一个数据目标抽象化,可让托管调试器检查进程状态。 调试器必须实现 ICorDebugDataTarget 接口。 应实现 ICLRDebuggingLibraryProvider 接口以支持要调试的 CLR 尚未在计算机上本地安装的情况。pLibraryProvider
[in] 一个库提供程序回调接口,可用来根据需要查找和加载特定于版本的调试库。 此参数仅在 ppProcess 或 pFlags 不是 null 时是必需的。pMaxDebuggerSupportedVersion
[in] 此调试器可调试的 CLR 的最高版本。 您应从此调试器支持的最新的 CLR 版本指定主要版本、次要版本和内部版本,并将修订号设置为 65535 以便适应将来使用的 CLR 服务版本。riidProcess
[in] 要检索的 ICorDebugProcess 接口的 ID。 目前,唯一接受的值为:IID_CORDEBUGPROCESS3、IID_CORDEBUGPROCESS2 和 IID_CORDEBUGPROCESS。ppProcess
[out] 一个指向由 riidProcess 标识的 COM 接口的指针。pVersion
[in, out] CLR 的版本。 在输入时,此值可为 null。 它还可以指向 CLR_DEBUGGING_VERSION 结构,在此情况下,必须将该结构的 wStructVersion 字段初始化为 0(零)。在输出时,将使用 CLR 的版本信息填充返回的 CLR_DEBUGGING_VERSION 结构。
pdwFlags
[out] 有关指定运行时的信息标志。 有关标志的说明,请参见 CLR_DEBUGGING_PROCESS_FLAGS 这一主题。
返回值
此方法将返回以下特定的 HRESULT 以及用于指示方法失败的 HRESULT 错误。
HRESULT |
说明 |
---|---|
S_OK |
该方法成功完成。 |
E_POINTER |
pDataTarget 为 null。 |
CORDBG_E_LIBRARY_PROVIDER_ERROR |
ICLRDebuggingLibraryProvider 回调将返回一个错误或不提供有效句柄。 |
CORDBG_E_MISSING_DATA_TARGET_INTERFACE |
pDataTarget 不为此版本的运行时实现必需的数据目标接口。 |
CORDBG_E_NOT_CLR |
所指示的模块不是 CLR 模块。 在因内存已损坏、CLR 模块不可用或 CLR 版本高于填充码版本而导致检测不到 CLR 模块时,也会返回此 HRESULT。 |
CORDBG_E_UNSUPPORTED_DEBUGGING_MODEL |
此运行时版本不支持该调试模型。 目前,早于 .NET Framework 4 版的 CLR 版本不支持该调试模型。 在出现此错误后,pwszVersion 输出参数仍将设置为正确的值。 |
CORDBG_E_UNSUPPORTED_FORWARD_COMPAT |
CLR 的版本高于此调试器要求支持的版本。 在出现此错误后,pwszVersion 输出参数仍将设置为正确的值。 |
E_NO_INTERFACE |
riidProcess 接口不可用。 |
CORDBG_E_UNSUPPORTED_VERSION_STRUCT |
CLR_DEBUGGING_VERSION 结构不包含 wStructVersion 的已识别值。 此时,唯一接受的值为 0。 |
要求
**平台:**请参见 .NET Framework 系统要求。
头文件: CorDebug.idl、CorDebug.h
**库:**CorGuids.lib
**.NET Framework 版本:**4