SeAccessCheckFromState 函数 (ntifs.h)
SeAccessCheckFromState 检查是否可以向受安全描述符和可选对象所有者保护的对象授予请求的访问权限。
语法
BOOLEAN SeAccessCheckFromState(
PSECURITY_DESCRIPTOR SecurityDescriptor,
PTOKEN_ACCESS_INFORMATION PrimaryTokenInformation,
PTOKEN_ACCESS_INFORMATION ClientTokenInformation,
ACCESS_MASK DesiredAccess,
ACCESS_MASK PreviouslyGrantedAccess,
PPRIVILEGE_SET *Privileges,
PGENERIC_MAPPING GenericMapping,
KPROCESSOR_MODE AccessMode,
PACCESS_MASK GrantedAccess,
PNTSTATUS AccessStatus
);
参数
SecurityDescriptor
[in]指向 SECURITY_DESCRIPTOR 结构的指针,该结构包含保护所访问对象的安全信息。
PrimaryTokenInformation
[in]指向从主令牌捕获 的TOKEN_ACCESS_INFORMATION 结构的指针。 此结构提供执行访问检查所需的令牌信息。
ClientTokenInformation
[in_opt]指向从客户端令牌捕获 的 TOKEN_ACCESS_INFORMATION 结构的可选指针。
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 状态值的指针,可返回该值指示拒绝访问的原因。 请参阅“备注”。
返回值
如果允许访问,SeAccessCheckFromState 返回 TRUE;如果不允许访问,则返回 FALSE。
注解
SeAccessCheckFromState 可能会针对以下权限执行测试,具体取决于请求的访问:
- SeTakeOwnershipPrivilege
- Sesecurityprivilege
此例程还可能检查调用方是对象的所有者,以便授予WRITE_DAC或READ_CONTROL访问权限。
如果此例程返回 FALSE,则调用方应使用返回的 AccessStatus 作为其返回值。 也就是说,调用方应避免对返回值STATUS_ACCESS_DENIED或任何其他特定的STATUS_XXX 值进行硬编码。
可以从 DPC 级别调用此例程,因此不能分页。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 |
标头 | ntifs.h (包括 ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |