IHostTaskManager::LeaveRuntime 方法
通知宿主当前正在执行的任务即将离开公共语言运行时 (CLR) 并进入非托管代码。
重要事项 |
---|
一个对应的 IHostTaskManager::EnterRuntime 调用将通知宿主当前正在执行的任务正在重新进入托管代码。 |
HRESULT LeaveRuntime (
[in] SIZE_T target
);
参数
- target
[in] 要调用的非托管函数的映射可迁移可执行文件中的地址。
返回值
HRESULT |
说明 |
---|---|
S_OK |
LeaveRuntime 已成功返回。 |
HOST_E_CLRNOTAVAILABLE |
CLR 尚未加载到进程中或者处于无法运行托管代码或成功处理调用的状态。 |
HOST_E_TIMEOUT |
调用超时。 |
HOST_E_NOT_OWNER |
调用方不拥有锁。 |
HOST_E_ABANDONED |
事件在被阻止的线程或纤程正在等待它时被取消。 |
E_FAIL |
发生了未知的灾难性故障。 如果某方法返回 E_FAIL,CLR 便无法再在进程中使用。 对宿主方法的后续调用都将返回 HOST_E_CLRNOTAVAILABLE。 |
E_OUTOFMEMORY |
没有可用于完成请求分配的足够内存。 |
备注
来往于非托管代码的调用序列可以嵌套。 例如,下面的列表描述了一个假想的场景,其中对 LeaveRuntime、IHostTaskManager::ReverseEnterRuntime、IHostTaskManager::ReverseLeaveRuntime 和 IHostTaskManager::EnterRuntime 的调用序列使宿主能够识别嵌套的层。
操作 |
对应的方法调用 |
---|---|
托管的 Visual Basic 可执行文件使用平台调用来调用用 C 编写的非托管函数。 |
IHostTaskManager::LeaveRuntime |
非托管的 C 函数调用以 C# 编写的托管 DLL 中的方法。 |
IHostTaskManager::ReverseEnterRuntime |
托管的 C# 函数同样使用平台调用来调用用 C 编写的另一个非托管函数。 |
IHostTaskManager::LeaveRuntime |
第二个非托管的函数将执行返回到该 C# 函数。 |
IHostTaskManager::EnterRuntime |
该 C# 函数将执行返回第一个非托管的函数。 |
IHostTaskManager::ReverseLeaveRuntime |
第一个非托管的函数将执行返回 Visual Basic 程序。 |
IHostTaskManager::EnterRuntime |
要求
**平台:**请参见 .NET Framework 系统要求。
**头文件:**MSCorEE.h
**库:**作为一项资源包含在 MSCorEE.dll 中
**.NET Framework 版本:**4、3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0