RtlGetDaclSecurityDescriptor 函数 (ntifs.h)

RtlGetDaclSecurityDescriptor 例程返回指向安全描述符的任意 ACL (DACL) 的指针。

语法

NTSYSAPI NTSTATUS RtlGetDaclSecurityDescriptor(
  [in]  PSECURITY_DESCRIPTOR SecurityDescriptor,
  [out] PBOOLEAN             DaclPresent,
  [out] PACL                 *Dacl,
  [out] PBOOLEAN             DaclDefaulted
);

参数

[in] SecurityDescriptor

指向要返回其 DACL 的SECURITY_DESCRIPTOR 的指针。

[out] DaclPresent

指向布尔变量的指针,该变量指示指定安全描述符中是否存在 DACL。 如果此变量收到 TRUE,则安全描述符包含 DACL,其余输出参数接收有效值。 如果此变量收到 FALSE,则安全描述符不包含 DACL,并且剩余的输出参数不会接收有效值。

[out] Dacl

指向接收安全描述符 DACL 地址的变量的指针。 如果安全描述符没有 DACL,则此变量不会接收值。 如果安全描述符具有 NULL DACL,则此变量接收 NULLNULL DACL 隐式允许对对象的所有访问。

[out] DaclDefaulted

指向一个布尔变量的指针,该变量接收安全描述符SECURITY_DESCRIPTOR_CONTROL结构中SE_DACL_DEFAULTED标志的值。 如果此标志为 TRUE,则默认机制检索 DACL。 如果为 FALSE,则表示 DACL 由用户显式指定。 仅当 *Dacl 收到非 NULL 值时,此值才有效。

返回值

RtlGetDaclSecurityDescriptor 返回STATUS_SUCCESS或相应的 NTSTATUS 值,如下所示:

返回代码 说明
STATUS_UNKNOWN_REVISION
安全描述符的修订级别未知或不受支持。 这是错误代码。

注解

*DaclPresent 的值为 TRUE 并不意味着 *Dacl 为非 NULL。 也就是说, *DaclPresent 可以为 TRUE ,而 *DaclNULL,这意味着 NULL DACL 有效。 NULL DACL 隐式允许对对象的所有访问,与空 DACL 不同。 空 DACL 不允许访问对象。

有关安全性和访问控制的详细信息,请参阅 面向驱动程序开发人员的 Windows 安全模型 和 Windows SDK 中有关这些主题的文档。

要求

要求
最低受支持的客户端 Windows Server 2003 SP1
目标平台 通用
标头 ntifs.h (包括 Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

另请参阅

ACL

RtlCreateSecurityDescriptor

RtlLengthSecurityDescriptor

RtlSetDaclSecurityDescriptor

RtlValidSecurityDescriptor

SECURITY_DESCRIPTOR