RtlAbsoluteToSelfRelativeSD 函数 (ntifs.h)

RtlAbsoluteToSelfRelativeSD 例程通过使用绝对格式的安全描述符作为模板,以自相对格式创建新的安全描述符。

语法

NTSYSAPI NTSTATUS RtlAbsoluteToSelfRelativeSD(
  [in]      PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor,
  [out]     PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor,
  [in, out] PULONG               BufferLength
);

参数

[in] AbsoluteSecurityDescriptor

指向调用方分配的缓冲区的指针,该缓冲区包含绝对格式的 SECURITY_DESCRIPTOR 结构。 RtlAbsoluteToSelfRelativeSD 以相对格式创建此安全描述符的版本,而无需修改原始描述符。

[out] SelfRelativeSecurityDescriptor

指向调用方分配的缓冲区的指针,该缓冲区以相对格式接收安全描述符。

[in, out] BufferLength

指向调用方分配的变量的指针,该变量指定由 SelfRelativeSecurityDescriptor 参数指向的缓冲区的大小(以字节为单位)。 如果缓冲区不够大来容纳安全描述符,RtlAbsoluteToSelfRelativeSD 将返回STATUS_BUFFER_TOO_SMALL并将此变量设置为所需的最小大小。

返回值

RtlAbsoluteToSelfRelativeSD 返回STATUS_SUCCESS或适当的 NTSTATUS 值,例如以下值之一:

返回代码 描述
STATUS_BAD_DESCRIPTOR_FORMAT
AbsoluteSecurityDescriptor 参数指向的缓冲区不包含绝对格式的SECURITY_DESCRIPTOR结构。 STATUS_BAD_DESCRIPTOR_FORMAT是错误代码。
STATUS_BUFFER_TOO_SMALL
SelfRelativeSecurityDescriptor 参数指向的缓冲区太小,无法以相对格式包含安全描述符。 STATUS_BUFFER_TOO_SMALL是错误代码。

言论

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

若要使用自相对格式的安全描述符作为模板以绝对格式创建新的安全描述符,请使用 RtlSelfRelativeToAbsoluteSD

有关安全性和访问控制的详细信息,请参阅 Microsoft Windows SDK 文档。

要求

要求 价值
最低支持的客户端 Windows Server 2003 SP1
目标平台 普遍
标头 ntifs.h (include Ntifs.h)
NtosKrnl.lib
DLL NtosKrnl.exe(内核模式):Ntdll.dll(用户模式)
IRQL <= APC_LEVEL

另请参阅

ACL

RtlCreateSecurityDescriptor

RtlLengthSecurityDescriptor

RtlSelfRelativeToAbsoluteSD

RtlSetDaclSecurityDescriptor

RtlSetOwnerSecurityDescriptor

RtlValidSecurityDescriptor