共用方式為


IHostTaskManager::CallNeedsHostHook 方法

讓主應用程式得以指定 Common Language Runtime (CLR) 是否可以將指定的呼叫內嵌到 Unmanaged 函式。

HRESULT CallNeedsHostHook (
    [in]  SIZE_T target, 
    [out] BOOL   *pbCallNeedsHostHook
);

參數

  • target
    [in] 要呼叫的 Unmanaged 函式的對應可移植執行檔 (PE) 內的位址。

  • pbCallNeedsHostHook
    [out] 布林值的指標,指出主應用程式是否需要攔截呼叫。

傳回值

HRESULT

描述

S_OK

CallNeedsHostHook 已成功傳回。

HOST_E_CLRNOTAVAILABLE

CLR 尚未載入至處理序中,或者此 CLR 目前的狀態無法執行 Managed 程式碼或成功處理呼叫。

HOST_E_TIMEOUT

呼叫已逾時。

HOST_E_NOT_OWNER

呼叫端不具備鎖定功能。

HOST_E_ABANDONED

已封鎖執行緒或 Fiber 在等候事件時,該事件已遭取消。

E_FAIL

發生了未知、重大的錯誤。 當方法傳回 E_FAIL 時,便無法在處理序內使用 CLR。 對裝載方法的後續呼叫會傳回 HOST_E_CLRNOTAVAILABLE。

備註

為了將程式碼的執行最佳化,CLR 會在編譯期間對每一個平台叫用呼叫執行分析,以判斷該呼叫是否可以內嵌。 CallNeedsHostHook 可讓主應用程式透過要求攔截 Unmanaged 函式的呼叫來覆寫該決策。 如果主應用程式需要攔截程序,則執行階段不會內嵌該呼叫。

主應用程式通常在必須調整浮點狀態的地方需要攔截程序,或是在接收到以下告知時需要攔截程序:有呼叫正在進入一個狀態,在此狀態下,主應用程式無法追蹤執行階段對於記憶體或任何佔用鎖定的要求。 當主應用程式需要攔截呼叫時,執行階段會向主應用程式告知,使用 EnterRuntimeLeaveRuntimeReverseEnterRuntimeReverseLeaveRuntime 呼叫與 Managed 程式碼之間的來回轉換。

需求

**平台:**請參閱 .NET Framework 系統需求

**標頭:**MSCorEE.h

程式庫:包含做為 MSCorEE.dll 中的資源

**.NET Framework 版本:**4、3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0

請參閱

參考

ICLRTask 介面

ICLRTaskManager 介面

IHostTask 介面

IHostTaskManager 介面