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

请参见

其他资源

调试接口

调试(非托管 API 参考)