ZwOpenThreadTokenEx 函数 (ntifs.h)

ZwOpenThreadTokenEx 例程将打开与线程关联的访问令牌。

语法

NTSYSAPI NTSTATUS ZwOpenThreadTokenEx(
  [in]  HANDLE      ThreadHandle,
  [in]  ACCESS_MASK DesiredAccess,
  [in]  BOOLEAN     OpenAsSelf,
  [in]  ULONG       HandleAttributes,
  [out] PHANDLE     TokenHandle
);

参数

[in] ThreadHandle

要打开其访问令牌的线程的句柄。 句柄必须具有THREAD_QUERY_INFORMATION访问权限。 使用 NtCurrentThread 宏指定当前线程。

[in] DesiredAccess

ACCESS_MASK 结构,指定对访问令牌的请求访问类型。 这些请求的访问类型与令牌的任意访问控制列表(DACL)进行比较,以确定授予或拒绝哪些访问权限。

[in] OpenAsSelf

一个布尔值,指定是针对调用 ZwOpenThreadToken Ex 的线程的安全上下文,还是针对调用线程的进程的安全上下文进行访问检查。

如果此参数 FALSE,则使用调用线程的安全上下文执行访问检查。 如果线程正在模拟客户端,则此安全上下文可以是客户端进程的上下文。 如果此参数 TRUE,则使用调用线程的进程的安全上下文进行访问检查。

[in] HandleAttributes

所创建句柄的属性。 目前仅支持OBJ_KERNEL_HANDLE。 如果调用方未在系统进程上下文中运行,则必须为此参数指定OBJ_KERNEL_HANDLE。

[out] TokenHandle

指向调用方分配的变量的指针,该变量接收新打开的访问令牌的句柄。

返回值

ZwOpenThreadTokenEx 返回STATUS_SUCCESS或适当的错误状态。 可能的错误状态代码包括:

返回代码 描述
STATUS_ACCESS_DENIED ThreadHandle 没有THREAD_QUERY_INFORMATION访问权限。
STATUS_CANT_OPEN_ANONYMOUS 客户端请求 SecurityAnonymous 模拟级别。 但是,无法打开匿名令牌。 有关详细信息,请参阅 SECURITY_IMPERSONATION_LEVEL
STATUS_INVALID_HANDLE ThreadHandle 不是有效的句柄。
STATUS_INVALID_PARAMETER 指定的 HandleAttributes 不包括OBJ_KERNEL_HANDLE。
STATUS_NO_TOKEN 尝试打开与当前不模拟客户端的线程关联的令牌。
STATUS_OBJECT_TYPE_MISMATCH ThreadHandle 不是线程句柄。

言论

ZwOpenThreadTokenEx 打开与线程关联的访问令牌,并返回该令牌的句柄。

OpenAsSelf 参数允许服务器进程在客户端进程为 SECURITY_IMPERSONATION_LEVEL 枚举类型指定 SecurityIdentification 模拟级别时打开客户端进程的访问令牌。 如果没有此参数,调用过程将无法使用客户端的安全上下文打开客户端的访问令牌,因为无法使用 SecurityIdentification 模拟级别打开执行级对象。

通过调用 ZwOpenThreadTokenEx 获取的任何句柄最终都必须通过调用 ZwClose释放。

在系统进程以外的进程上下文中运行的驱动程序例程必须为 ZwOpenThreadTokenExHandleAttributes 参数设置OBJ_KERNEL_HANDLE属性。 这会将 ZwOpenThreadTokenEx 返回的句柄 限制为内核模式下运行的进程。 否则,该句柄可由运行驱动程序的上下文的进程访问。

有关安全和访问控制的详细信息,请参阅适用于驱动程序开发人员 Windows 安全模型,以及有关 Windows SDK 中这些主题的文档。

注意

如果在用户模式下调用 ZwOpenThreadTokenEx 函数,则应使用名称“NtOpenThreadTokenEx”而不是“ZwOpenThreadTokenEx”。

对于内核模式驱动程序的调用,NtXxxZwXxx 版本的 Windows 本机系统服务例程的行为方式可能以不同的方式处理和解释输入参数。 有关 NtXxxZwXxx 例程之间的关系的详细信息,请参阅 使用 Nt 和 Zw 版本的本机系统服务例程

要求

要求 价值
最低支持的客户端 Windows XP
目标平台 普遍
标头 ntifs.h (include Ntifs.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 符合性规则 HwStorPortProhibitedDIS(storport)PowerIrpDDis(wdm)

另请参阅

< ACCESS_MASK

ACL

PsDereferencePrimaryToken

SECURITY_IMPERSONATION_LEVEL

使用本机系统服务例程的 Nt 和 Zw 版本

ZwClose

ZwOpenProcessTokenEx