IHostSecurityManager::OpenThreadToken 方法

打开与当前正在执行的线程关联的自由访问标记。

HRESULT OpenThreadToken (
    [in]  DWORD    dwDesiredAccess, 
    [in]  BOOL     bOpenAsSelf, 
    [out] HANDLE   *phThreadToken
);

参数

  • dwDesiredAccess
    [in] 访问值的掩码,这些值指定请求的线程标记访问类型。 这些值在 Win32 OpenThreadToken 函数中定义。 根据标记的自由访问控制列表 (DACL) 对请求的访问类型进行协调,以确定要授予或拒绝哪些访问类型。

  • bOpenAsSelf
    [in] true 指定应使用调用线程的进程安全上下文执行访问检查;false 指定应使用调用线程本身的安全上下文执行访问检查。 如果线程正在模拟客户端,则此安全上下文可以是一个客户端进程的安全上下文。

  • phThreadToken
    [out] 指向新打开的访问标记的指针。

返回值

HRESULT

说明

S_OK

OpenThreadToken 已成功返回。

HOST_E_CLRNOTAVAILABLE

公共语言运行时 (CLR) 尚未加载到进程中或者处于无法运行托管代码或成功处理调用的状态。

HOST_E_TIMEOUT

调用超时。

HOST_E_NOT_OWNER

调用方不拥有锁。

HOST_E_ABANDONED

事件在被阻止的线程或纤程正在等待它时被取消。

E_FAIL

发生了未知的灾难性故障。 如果某方法返回 E_FAIL,CLR 便无法再在进程中使用。 对宿主方法的后续调用都将返回 HOST_E_CLRNOTAVAILABLE。

备注

除了 Win32 函数允许调用方向任意线程传入句柄,而 IHostSecurityManager::OpenThreadToken 仅打开与调用线程关联的标记之外,IHostSecurityManager::OpenThreadToken 与对应的同名 Win32 函数的行为类似。

HANDLE 类型不符合 COM,也就是说,其大小特定于操作系统,并且需要自定义封送处理。 因此,此标记仅在 CLR 和宿主之间的进程内使用。

要求

**平台:**请参见 .NET Framework 系统要求

**头文件:**MSCorEE.h

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

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

请参见

参考

IHostSecurityContext 接口

IHostSecurityManager 接口