MakeAbsoluteSD 函数 (securitybaseapi.h)

MakeAbsoluteSD 函数通过使用自相对格式的安全描述符作为模板,创建绝对格式的安全描述符。

语法

BOOL MakeAbsoluteSD(
  [in]            PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor,
  [out, optional] PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor,
  [in, out]       LPDWORD              lpdwAbsoluteSecurityDescriptorSize,
  [out, optional] PACL                 pDacl,
  [in, out]       LPDWORD              lpdwDaclSize,
  [out, optional] PACL                 pSacl,
  [in, out]       LPDWORD              lpdwSaclSize,
  [out, optional] PSID                 pOwner,
  [in, out]       LPDWORD              lpdwOwnerSize,
  [out, optional] PSID                 pPrimaryGroup,
  [in, out]       LPDWORD              lpdwPrimaryGroupSize
);

参数

[in] pSelfRelativeSecurityDescriptor

指向自相对格式 SECURITY_DESCRIPTOR 结构的指针。 函数创建此安全描述符的绝对格式版本,而无需修改原始安全描述符。

[out, optional] pAbsoluteSecurityDescriptor

指向缓冲区的指针,函数用绝对格式安全描述符的main正文填充该缓冲区。 此信息的格式设置为 SECURITY_DESCRIPTOR 结构。

[in, out] lpdwAbsoluteSecurityDescriptorSize

指向变量的指针,该变量指定 pAbsoluteSD 参数指向的缓冲区的大小。 如果缓冲区对于安全描述符不够大,函数会失败,并将此变量设置为所需的最小大小。

[out, optional] pDacl

指向函数用绝对格式安全描述符 (的 DACL) 自由 访问控制列表 填充的缓冲区的指针。 绝对格式安全描述符的main正文引用此指针。

[in, out] lpdwDaclSize

指向变量的指针,该变量指定 pDacl 参数指向的缓冲区的大小。 如果缓冲区的大小不足以满足访问控制 列表 (ACL) ,则函数将失败,并将此变量设置为所需的最小大小。

[out, optional] pSacl

指向缓冲区的指针,该函数使用绝对格式安全描述符的系统 访问控制列表 (SACL) 填充。 绝对格式安全描述符的main正文引用此指针。

[in, out] lpdwSaclSize

指向变量的指针,该变量指定 pSacl 参数指向的缓冲区的大小。 如果缓冲区对于 ACL 不够大,函数将失败,并将此变量设置为所需的最小大小。

[out, optional] pOwner

指向缓冲区的指针,函数使用绝对格式安全描述符所有者的安全 标识符 (SID) 填充。 绝对格式安全描述符的main正文引用此指针。

[in, out] lpdwOwnerSize

指向变量的指针,该变量指定 pOwner 参数指向的缓冲区的大小。 如果缓冲区对于 SID 不够大,函数将失败,并将此变量设置为所需的最小大小。

[out, optional] pPrimaryGroup

指向缓冲区的指针,函数用绝对格式安全描述符的主组的 SID 填充。 绝对格式安全描述符的main正文引用此指针。

[in, out] lpdwPrimaryGroupSize

指向变量的指针,该变量指定 pPrimaryGroup 参数指向的缓冲区的大小。 如果缓冲区对于 SID 不够大,函数将失败,并将此变量设置为所需的最小大小。

返回值

如果函数成功,该函数将返回非零值。

如果函数失败,则返回零。 要获得更多的错误信息,请调用 GetLastError。 可能的返回代码包括但不限于以下内容。

返回代码/值 说明
ERROR_INSUFFICIENT_BUFFER
0x7A
一个或多个缓冲区太小。

注解

采用绝对格式的安全描述符包含指向它所包含的信息的指针,而不是信息本身。 采用自我相对格式的安全描述符包含连续内存块中的信息。 在自相对安全描述符中, SECURITY_DESCRIPTOR 结构始终启动信息,但安全描述符的其他组件可以按任意顺序遵循该结构。 自我相对安全描述符的组成部分不使用内存地址,而是由安全描述符开头的偏移来标识。 当安全描述符必须存储在软盘上或通过通信协议传输时,此格式非常有用。

将受保护对象复制到各种媒体的服务器可以使用 MakeAbsoluteSD 函数从自相对安全描述符创建绝对安全描述符,并使用 MakeSelfRelativeSD 函数从绝对安全描述符创建自相对安全描述符。

要求

要求
最低受支持的客户端 Windows XP [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2003 [桌面应用 | UWP 应用]
目标平台 Windows
标头 securitybaseapi.h (包括 Windows.h)
Library Advapi32.lib
DLL Advapi32.dll

另请参阅

低级别访问控制

低级别访问控制函数

MakeSelfRelativeSD

SECURITY_DESCRIPTOR