IHostTaskManager::CallNeedsHostHook 方法

使主机能够指定公共语言运行时 (CLR) 是否可以内联对非托管函数的指定调用。

语法

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

参数

target
[in] 要调用的非托管函数的映射可移植可执行 (PE) 文件中的地址。

pbCallNeedsHostHook
[out] 指向布尔值的指针,该值指示主机是否需要挂接调用。

返回值

HRESULT 说明
S_OK 已成功返回 CallNeedsHostHook
HOST_E_CLRNOTAVAILABLE CLR 未加载到进程中,或 CLR 处于无法运行托管代码或无法成功处理调用的状态。
HOST_E_TIMEOUT 调用超时。
HOST_E_NOT_OWNER 调用方未持有锁。
HOST_E_ABANDONED 阻塞的线程或纤程正在等待某一事件,而该事件已被取消。
E_FAIL 发生了未知的灾难性故障。 当方法返回 E_FAIL 时,进程中无法再使用 CLR。 后续调用承载方法会返回 HOST_E_CLRNOTAVAILABLE。

注解

为了帮助优化代码执行,CLR 在编译期间对每个平台调用进行分析,以确定调用是否可以内联。 CallNeedsHostHook 允许主机通过要求挂接对非托管函数的调用来覆盖该决定。 如果主机需要挂钩,则运行时不会内联调用。

在必须调整浮点状态的情况下,或者在接收到通知指示调用正在进入主机无法跟踪运行时对内存的请求或所使用任何锁的状态时,主机通常需要一个挂钩。 当主机要求挂接调用时,运行时通过使用对 EnterRuntimeLeaveRuntimeReverseEnterRuntimeReverseLeaveRuntime 的调用来通知主机与托管代码之间的转换。

要求

平台:请参阅系统要求

标头:MSCorEE.h

库:作为资源包含在 MSCorEE.dll 中

.NET Framework 版本:自 2.0 起可用

另请参阅