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