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 可以是 KernelModeUserMode。 较低级别的驱动程序应指定 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

另请参阅

SeAccessCheck

SeAccessCheckFromStateEx