获取与进程中加载的公共语言运行时 (CLR) 模块对应的 ICorDebugProcess 接口。
Syntax
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]目标进程中模块的基址。
pDataTarget [in]允许托管调试器检查进程状态的数据目标抽象。 调试器必须实现 ICorDebugDataTarget 接口。 应实现 ICLRDebuggingLibraryProvider 接口,以支持在计算机上本地未安装正在调试的 CLR 的方案。
pLibraryProvider [in]库提供程序回调接口,允许按需定位和加载特定于版本的调试库。 仅当或pFlags不是null时ppProcess,才需要此参数。
pMaxDebuggerSupportedVersion [in]此调试器可以调试的最高 CLR 版本。 应指定此调试器支持的最新 CLR 版本中的主要版本、次要版本和内部版本,并将修订号设置为 65535,以适应将来的就地 CLR 服务版本。
riidProcess [in]要检索的 ICorDebugProcess 接口的 ID。 目前,唯一接受的值是 IID_CORDEBUGPROCESS3, IID_CORDEBUGPROCESS2以及 IID_CORDEBUGPROCESS。
ppProcess [out]指向 COM 接口的指针,该接口由 riidProcess.
pVersion [in, out]CLR 的版本。 在输入时,此值可以是 null。 它还可能指向 CLR_DEBUGGING_VERSION 结构,在这种情况下,必须将结构的 wStructVersion 字段初始化为 0(零)。
输出时,返回 CLR_DEBUGGING_VERSION 的结构将填充 CLR 的版本信息。
pdwFlags [out]有关指定运行时的信息性标志。 有关标志的说明,请参阅 CLR_DEBUGGING_PROCESS_FLAGS。
返回值
此方法返回以下特定的 HRESULT 以及指示方法失败的 HRESULT 错误。
| HRESULT | Description |
|---|---|
| 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 模块时,也会返回此 HRESULT,因为内存已损坏,模块不可用,或者 CLR 版本晚于填充码版本。 |
| 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。 |
例外
注解
要求
平台:请参阅系统要求。
页眉: CorDebug.idl、CorDebug.h
图书馆: CorGuids.lib
.NET Framework 版本: 自 4 起可用
.NET 版本: 自 .NET Core 2.1 起可用