GetSecurityDescriptorDacl 函数 (securitybaseapi.h)
GetSecurityDescriptorDacl 函数检索指向指定安全描述符 (DACL) 自由访问控制列表的指针。
语法
BOOL GetSecurityDescriptorDacl(
[in] PSECURITY_DESCRIPTOR pSecurityDescriptor,
[out] LPBOOL lpbDaclPresent,
[out] PACL *pDacl,
[out] LPBOOL lpbDaclDefaulted
);
参数
[in] pSecurityDescriptor
指向包含 DACL 的SECURITY_DESCRIPTOR 结构的指针。 该函数检索指向它的指针。
[out] lpbDaclPresent
指向指示指定安全描述符中存在 DACL 的值的指针。 如果 lpbDaclPresent 为 TRUE,则安全描述符包含 DACL,并且此函数中的剩余输出参数接收有效值。 如果 lpbDaclPresent 为 FALSE,则安全描述符不包含 DACL,其余输出参数不会接收有效值。
对于 lpbDaclPresent,值为 TRUE 并不意味着 pDacl 不是 NULL。 也就是说, lpbDaclPresent 可以是 TRUE ,而 pDacl 为 NULL,这意味着 NULL DACL 生效。 NULL DACL 隐式允许对对象的所有访问,并且与空 DACL 不同。 空 DACL 不允许访问对象。 有关创建适当的 DACL 的信息,请参阅 创建 DACL。
[out] pDacl
指向 访问控制列表 的指针 (ACL) 。 如果存在 DACL,该函数会将 pDacl 指向的指针设置为安全描述符的 DACL 地址。 如果 DACL 不存在,则不存储任何值。
如果函数将 NULL 值存储在 pDacl 指向的指针中,则安全描述符具有 NULL DACL。 NULL DACL 隐式允许对对象的所有访问。
如果应用程序需要非 NULL DACL,但遇到 NULL DACL,则应用程序应安全失败,不允许访问。
[out] lpbDaclDefaulted
如果存在安全描述符的 DACL,则指向设置为SECURITY_DESCRIPTOR_CONTROL结构中 SE_DACL_DEFAULTED 标志值的标志的指针。 如果此标志为 TRUE,则 DACL 是默认机制检索的;如果 为 FALSE,则由用户显式指定 DACL。
返回值
如果函数成功,该函数将返回非零。
如果函数失败,它将返回零。 要获得更多的错误信息,请调用 GetLastError。
要求
最低受支持的客户端 | Windows XP [桌面应用|UWP 应用] |
最低受支持的服务器 | Windows Server 2003 [桌面应用|UWP 应用] |
目标平台 | Windows |
标头 | securitybaseapi.h (包括 Windows.h) |
Library | Advapi32.lib |
DLL | Advapi32.dll |