seAccessCheck 函数 (wdm.h)

SeAccessCheck 例程确定是否可向受安全描述符和对象所有者保护的对象授予所请求的访问权限。

语法

BOOLEAN SeAccessCheck(
  [in]  PSECURITY_DESCRIPTOR      SecurityDescriptor,
  [in]  PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext,
  [in]  BOOLEAN                   SubjectContextLocked,
  [in]  ACCESS_MASK               DesiredAccess,
  [in]  ACCESS_MASK               PreviouslyGrantedAccess,
  [out] PPRIVILEGE_SET            *Privileges,
  [in]  PGENERIC_MAPPING          GenericMapping,
  [in]  KPROCESSOR_MODE           AccessMode,
  [out] PACCESS_MASK              GrantedAccess,
  [out] PNTSTATUS                 AccessStatus
);

参数

[in] SecurityDescriptor

指向描述保护所访问对象的安全描述符 的SECURITY_DESCRIPTOR 结构的指针。

[in] SubjectSecurityContext

指向指定主题捕获的安全上下文 的SECURITY_SUBJECT_CONTEXT 结构的指针。

[in] SubjectContextLocked

指示用户的主题上下文是否已锁定,因此不必再次锁定。

[in] DesiredAccess

为调用方尝试获取的访问权限指定 ACCESS_MASK 位掩码。 如果调用方设置MAXIMUM_ALLOWED位,则例程将执行所有 DACL 检查。 但是,除非调用方通过设置ACCESS_SYSTEM_SECURITY或WRITE_OWNER位来专门请求它们,否则例程不会执行任何特权检查。

[in] PreviouslyGrantedAccess

指定已授予访问权限 的ACCESS_MASK 位掩码,例如由于拥有特权而授予的访问权限。

[out] Privileges

指向要设置为将用作访问验证一部分 的PRIVILEGE_SET结构的PRIVILEGE_SET 结构的地址的调用方提供的变量的指针,或者此参数可以为 NULL。 返回的缓冲区(如果有)必须由具有 SeFreePrivileges 的调用方释放。

[in] GenericMapping

指向与此对象类型关联的 GENERIC_MAPPING 结构的指针。 此值指定每个GENERIC_XXX 访问权限所暗示的特定访问权限。

[in] AccessMode

指定要在检查中使用的访问模式,即 UserModeKernelMode

[out] GrantedAccess

指向指示已授予访问权限的返回访问掩码的指针。 如果调用方指定MAXIMUM_ALLOWED, 并且 SecurityDescriptor 中的 DACL 为 NULL,则例程将返回GENERIC_ALL加上调用方显式请求的任何其他访问。

[out] AccessStatus

指向指示为何拒绝访问的状态值的指针。

返回值

如果允许访问, SeAccessCheck 将返回 TRUE

备注

SeAccessCheck 可能会针对 SeTakeOwnershipPrivilegeSeSecurityPrivilege 执行特权测试,具体取决于所请求的访问。 它可能会在操作系统的未来版本中执行其他特权测试。

此例程还可以检查调用方是对象的所有者,以便授予WRITE_DAC还是READ_CONTROL访问权限。

如果此例程返回 FALSE,调用方应使用返回的 AccessStatus 作为其返回值。 也就是说,调用方应避免硬编码STATUS_ACCESS_DENIED或任何其他特定STATUS_XXX 值的返回值。

要求

   
最低受支持的客户端 在 Windows 2000 和更高版本的 Windows 中可用。
目标平台 通用
标头 wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 符合性规则 HwStorPortProhibitedDDIS (storport) PowerIrpDDis (wdm)

另请参阅

ACCESS_MASK

GENERIC_MAPPING

IoGetFileObjectGenericMapping

PRIVILEGE_SET

SECURITY_DESCRIPTOR

SECURITY_SUBJECT_CONTEXT

SeFreePrivileges

SeValidSecurityDescriptor