SeAccessCheckFromStateEx 函数 (ntifs.h)

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

另请参阅

SeAccessCheck

SeAccessCheckFromState