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。 也就是说, lpbDaclPresent 可以是 TRUE ,而 pDaclNULL,这意味着 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

另请参阅

GetSecurityDescriptorControl

GetSecurityDescriptorGroup

GetSecurityDescriptorLength

GetSecurityDescriptorOwner

GetSecurityDescriptorSacl

InitializeSecurityDescriptor

IsValidSecurityDescriptor

低级别访问控制

低级别访问控制函数

SECURITY_DESCRIPTOR

SECURITY_DESCRIPTOR_CONTROL

SetSecurityDescriptorDacl