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 |