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)。 如果 DaclPresent 为 TRUE,则安全描述符中的SE_DACL_PRESENT标志设置为 TRUE ,其余可选参数 不会被 忽略。 有关SE_DACL_PRESENT标志的详细信息,请参阅 SECURITY_DESCRIPTOR_CONTROL。
[in, optional] Dacl
指向安全描述符的 DACL 的指针。 如果此参数为 NULL,则安全描述符中的 DACL 指针设置为 NULL。 NULL DACL 指针无条件地授予对对象的所有访问权限,与空 DACL 不同。 空 DACL 拒绝对对象的所有访问。 如果 Dacl 为非 NULL,则调用方提供的 ACL 结构由安全描述符引用,但不会复制到该描述符中。 调用方可以从分页系统内存分配 ACL 结构,并且可以调用 RtlCreateAcl 例程来初始化结构。
❗警告❗设置 NULL DACL 允许无限制访问对象,因此,应仅在安全评估验证这是可接受的结果的战略方案中使用。 请考虑使用 空 DACL,默认为默认拒绝所有访问。
[in, optional] DaclDefaulted
DACL 是由某些默认机制提供的,还是由调用方显式指定。 如果此参数为 TRUE,则 DACL 由默认机制提供。 如果 DaclDefaulted 为 FALSE,则调用方显式指定 DACL。 RtlSetDaclSecurityDescriptor 将此参数指定的值复制到安全描述符中的SE_DACL_DEFAULTED控制标志。 有关SE_DACL_DEFAULTED标志的详细信息,请参阅 SECURITY_DESCRIPTOR_CONTROL。
返回值
RtlSetDaclSecurityDescriptor 可以返回以下状态值之一。
| 返回代码 | 说明 |
|---|---|
|
调用成功完成。 |
|
安全描述符的修订未知。 |
|
安全描述符不是绝对格式安全描述符。 |
要求
| 要求 | 价值 |
|---|---|
| 最低支持的客户端 | 从 Windows 2000 开始可用。 |
| 目标平台 | 普遍 |
| 标头 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
| 图书馆 | NtosKrnl.lib |
| DLL | NtosKrnl.exe(内核模式):Ntdll.dll(用户模式) |
| IRQL | PASSIVE_LEVEL |