rtlSetDaclSecurityDescriptor 函数 (wdm.h)

RtlSetDaclSecurityDescriptor 例程设置绝对格式安全描述符的 DACL 信息,或者如果安全描述符中已存在 DACL,则将其取代。

语法

NTSYSAPI NTSTATUS RtlSetDaclSecurityDescriptor(
  [in, out]      PSECURITY_DESCRIPTOR SecurityDescriptor,
  [in]           BOOLEAN              DaclPresent,
  [in, optional] PACL                 Dacl,
  [in, optional] BOOLEAN              DaclDefaulted
);

参数

[in, out] SecurityDescriptor

指向 SECURITY_DESCRIPTOR 结构的指针。 此结构是 DACL 要应用到的安全描述符。

[in] DaclPresent

是否指示安全描述符中存在 DACL。 如果此参数为 FALSE则 RtlSetDaclSecurityDescriptor 会将安全描述符中的SE_DACL_PRESENT控制标志设置为 FALSE。 在这种情况下, (Dacl 和 DaclDefaulted) 的其余可选参数将被忽略。 如果 DaclPresentTRUE,则安全描述符中的SE_DACL_PRESENT标志设置为 TRUE ,并且 不会 忽略剩余的可选参数。 有关 SE_DACL_PRESENT 标志的详细信息,请参阅 SECURITY_DESCRIPTOR_CONTROL

[in, optional] Dacl

指向安全描述符的 DACL 的指针。 如果此参数为 NULL,则安全描述符中的 DACL 指针设置为 NULLNULL DACL 指针无条件地授予对对象的所有访问权限,与空 DACL 不同。 空 DACL 拒绝对对象的所有访问。 如果 Dacl 为非 NULL,则调用方提供的 ACL 结构由安全描述符引用,但不会复制到中。 调用方可以从分页系统内存中分配 ACL 结构,并且可以调用 RtlCreateAcl 例程来初始化结构。

[in, optional] DaclDefaulted

DACL 是由某种默认机制提供的,还是由调用方显式指定。 如果此参数为 TRUE,则表示 DACL 由默认机制提供。 如果 DaclDefaultedFALSE,则调用方显式指定 DACL。 RtlSetDaclSecurityDescriptor 将此参数指定的值复制到安全描述符中的SE_DACL_DEFAULTED控件标志。 有关 SE_DACL_DEFAULTED 标志的详细信息,请参阅 SECURITY_DESCRIPTOR_CONTROL

返回值

RtlSetDaclSecurityDescriptor 可以返回以下状态值之一。

返回代码 说明
STATUS_SUCCESS
已成功完成调用。
STATUS_UNKNOWN_REVISION
安全描述符的修订未知。
STATUS_INVALID_SECURITY_DESCR
安全描述符不是绝对格式的安全描述符。

要求

要求
最低受支持的客户端 从 Windows 2000 开始可用。
目标平台 通用
标头 wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe (内核模式) ;Ntdll.dll (用户模式)
IRQL PASSIVE_LEVEL

另请参阅

ACL

RtlCreateAcl

RtlCreateSecurityDescriptor

RtlLengthSecurityDescriptor

RtlValidSecurityDescriptor

SECURITY_DESCRIPTOR

SECURITY_DESCRIPTOR_CONTROL