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。 也就是说,*DaclPresentTRUE,而 *DaclNULL,这意味着 NULL DACL 生效。 NULL DACL 隐式允许对对象的所有访问,并且与空 DACL 不同。 空 DACL 不允许访问对象。

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

要求

要求 价值
最低支持的客户端 Windows Server 2003 SP1
目标平台 普遍
标头 ntifs.h (include Ntifs.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

另请参阅

ACL

RtlCreateSecurityDescriptor

RtlLengthSecurityDescriptor

RtlSetDaclSecurityDescriptor

RtlValidSecurityDescriptor

SECURITY_DESCRIPTOR