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。 如果 lpbDaclPresentTRUE,则安全描述符包含 DACL,并且此函数中的剩余输出参数接收有效值。 如果 lpbDaclPresentFALSE,则安全描述符不包含 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

另请参阅

GetSecurityDescriptorControl

GetSecurityDescriptorGroup

GetSecurityDescriptorLength

GetSecurityDescriptorOwner

GetSecurityDescriptorSacl

InitializeSecurityDescriptor

IsValidSecurityDescriptor

低级别访问控制

低级别访问控制函数

SECURITY_DESCRIPTOR

SECURITY_DESCRIPTOR_CONTROL

SetSecurityDescriptorDacl