共用方式為


ICLRDebugging::OpenVirtualProcess 方法

取得 ICorDebugProcess 介面,這個介面對應至處理序中載入的 Common Language Runtime (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] 目標處理序中模組的基底位址 (Base Address)。 如果指定的模組不是 CLR 模組,則會傳回 COR_E_NOT_CLR。

  • pDataTarget
    [in] 資料目標抽象,允許 Managed 偵錯工具檢查處理序狀態。 偵錯工具必須實作 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_DEBUGGING_VERSION 結構會填入 CLR 的版本資訊。

  • 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 版本比 Shim 版本還新而無法偵測到 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

請參閱

其他資源

偵錯介面

偵錯 (Unmanaged API 參考)