通过


IHostSecurityManager::SetSecurityContext 方法

设置当前正在执行的线程的安全上下文。

Syntax

HRESULT SetSecurityContext (
    [in]  EContextType eContextType,
    [out] IHostSecurityContext** ppSecurityContext
);

参数

eContextType [in] EContextType 值之一,指示公共语言运行时(CLR)放置在主机上的上下文类型。

ppSecurityContext [out]指向新 IHostSecurityContext 对象的地址的指针。

返回值

HRESULT 说明
S_OK SetSecurityContext 已成功返回。
HOST_E_CLRNOTAVAILABLE CLR 尚未加载到进程中,或者 CLR 处于无法运行托管代码或成功处理调用的状态。
HOST_E_TIMEOUT 调用超时。
HOST_E_NOT_OWNER 调用方不拥有锁。
HOST_E_ABANDONED 当阻塞的线程或光纤正在等待该事件时,事件已取消。
E_FAIL 发生了未知的灾难性故障。 当方法返回E_FAIL时,CLR 在进程中不再可用。 对宿主方法的后续调用返回HOST_E_CLRNOTAVAILABLE。

注解

在多个方案中调用 SetSecurityContext CLR。 在执行类和模块构造函数和终结器之前,CLR 将调用 SetSecurityContext 以保护主机免受执行失败的影响。 然后,它通过使用对构造函数或终结器的另一个调用 SetSecurityContext将安全上下文重置为其原始状态。 I/O 完成时会出现类似的模式。 如果主机实现 IHostIoCompletionManager,则主机调用 ICLRIoCompletionManager::OnComplete 之后的 CLR 调用SetSecurityContext

在工作线程中的异步点,CLR 在 IHostThreadPoolManager::QueueUserWorkItemThreadPool.QueueUserWorkItem调用SetSecurityContext,具体取决于主机还是 CLR 正在实现线程池。

要求

平台:请参阅系统要求

页眉: MSCorEE.h

图书馆: 作为资源包含在 MSCorEE.dll

.NET Framework 版本: 自 2.0 起可用

另见