IHostSecurityManager::SetSecurityContext 方法
设置当前执行线程的安全上下文。
语法
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。 |
备注
CLR 在多种方案下调用 SetSecurityContext
。 执行类和模块构造函数和终结器前,CLR 调用 SetSecurityContext
以避免主机执行失败。 然后,执行构造函数或终结器后,使用对 SetSecurityContext
的另一个调用将安全上下文重置为其初始状态。 输入输出完成端口也是类似模式。 如果主机实现 IHostIoCompletionManager,则 CLR 在主机调用 ICLRIOCompletionManager::OnComplete 后调用 SetSecurityContext
。
在工作线程的异步点,CLR 在 ThreadPool.QueueUserWorkItem 或 IHostThreadPoolManager::QueueUserWorkItem 内调用 SetSecurityContext
,具体取决于主机或 CLR 是否正在实现线程池。
要求
平台:请参阅系统要求。
标头:MSCorEE.h
库:作为资源包含在 MSCorEE.dll 中
.NET Framework 版本:自 2.0 起可用