ntPrivilegeCheck 函数 (ntifs.h)

NtPrivilegeCheck 保留供系统使用。

语法

__kernel_entry NTSYSCALLAPI NTSTATUS NtPrivilegeCheck(
  [in]      HANDLE         ClientToken,
  [in, out] PPRIVILEGE_SET RequiredPrivileges,
  [out]     PBOOLEAN       Result
);

参数

[in] ClientToken

表示尝试访问的客户端的令牌对象的句柄。 必须从通信会话层(例如从 LPC 端口或本地命名管道)获取此句柄,以防止可能发生的安全策略冲突。

[in, out] RequiredPrivileges

指向 PRIVILEGE_SET 结构的指针。 此结构的 Privilege 成员是LUID_AND_ATTRIBUTES结构的数组。 在调用 SePrivilegeCheck 之前,请使用 Privilege 数组来指示检查的权限集。 如果必须启用所有特权,则将 Control 成员设置为 PRIVILEGE_SET_ALL_NECESSARY;或将其设置为零(如果启用任何一个特权已足够)。

[out] Result

接收一个布尔标志,该标志指示客户端是否具有所有指定的特权。 值为 TRUE 表示客户端具有所有指定的权限;否则返回 FALSE 值。

返回值

NtPrivilegeCheck 在成功完成时返回STATUS_SUCCESS。 否则,它将返回一个错误代码,如下所示。

返回代码 说明
STATUS_PRIVILEGE_NOT_HELD 调用方没有足够的权限使用此特权系统服务。

注解

访问令牌包含与令牌关联的帐户拥有的特权列表。 可以启用或禁用这些特权;默认情况下,大多数处于禁用状态。 NtPrivilegeCheck 仅检查已启用的权限。 若要获取访问令牌拥有的所有已启用和禁用特权的列表,请调用 SeQueryInformationToken

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

要求

要求
最低受支持的客户端 Windows XP
标头 ntifs.h
Library NtosKrnl.lib
DLL NtosKrnl.exe

另请参阅

LUID_AND_ATTRIBUTES

PRIVILEGE_SET

SECURITY_SUBJECT_CONTEXT

SeAccessCheck

SeAppendPrivileges

SeFreePrivileges

SeQueryInformationToken

SeSinglePrivilegeCheck