SeAccessCheckFromStateEx 检查请求的访问权限是否可以授予受安全描述符和可选对象所有者保护的对象。
语法
BOOLEAN SeAccessCheckFromStateEx(
PSECURITY_DESCRIPTOR SecurityDescriptor,
PACCESS_TOKEN PrimaryToken,
PACCESS_TOKEN ClientToken,
ACCESS_MASK DesiredAccess,
ACCESS_MASK PreviouslyGrantedAccess,
PPRIVILEGE_SET *Privileges,
PGENERIC_MAPPING GenericMapping,
KPROCESSOR_MODE AccessMode,
PACCESS_MASK GrantedAccess,
PNTSTATUS AccessStatus
);
参数
SecurityDescriptor
[in]指向包含保护所访问对象的安全信息 SECURITY_DESCRIPTOR 结构的指针。
PrimaryToken
[in]指向主令牌的不透明 ACCESS_TOKEN 结构的指针。 此结构提供执行访问检查所需的令牌信息。
ClientToken
[in_opt]指向客户端令牌的不透明ACCESS_TOKEN结构的可选指针。
DesiredAccess
[in]一个 ACCESS_MASK 值,该值指定要检查的所需访问权限。
PreviouslyGrantedAccess
[in]一个 ACCESS_MASK 值,该值指定用户已授予的任何访问权限;例如,由于持有特权。
Privileges
[out]指向返回特权集的 PRIVILEGE_SET 结构的指针,以指示用作访问验证一部分的任何特权。
GenericMapping
[in]指向与此对象类型关联的 GENERIC_MAPPING 结构的指针。
AccessMode
[in]一个KPROCESSOR_MODE值,该值指定要在检查中使用的处理器模式。 AccessMode 可以是 KernelMode,也可以 UserMode。 较低级别的驱动程序应指定 KernelMode。
GrantedAccess
[out]指向指示已授予访问权限的返回 ACCESS_MASK 值的指针。
AccessStatus
[out]指向可返回的 NT 状态值的指针,指示为何拒绝访问。 请参阅“备注”。
返回值
如果允许访问,SeAccessCheckFromStateEx 返回 TRUE;如果不允许访问,则返回 FALSE。
言论
SeAccessCheckFromStateEx 可能会针对以下权限执行测试,具体取决于请求的访问:
- SeTakeOwnershipPrivilege
- SeSecurityPrivilege
此例程还可以检查调用方是对象的所有者,以便授予WRITE_DAC还是READ_CONTROL访问权限。
如果此例程返回 FALSE,则调用方应使用返回 AccessStatus 作为其返回值。 也就是说,调用方应避免硬编码返回值STATUS_ACCESS_DENIED或任何其他特定STATUS_XXX 值。
此例程可能从 DPC 级别调用,因此不能分页。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 2000 |
标头 | ntifs.h |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |