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 (include ntifs.h)
NtosKrnl.lib
DLL NtosKrnl.exe

另请参阅

SeAccessCheck

SeAccessCheckFromStateEx