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 (包括 Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe (内核模式) ;Ntdll.dll (用户模式)
IRQL <= APC_LEVEL

另请参阅

ACL

RtlCreateSecurityDescriptor

RtlLengthSecurityDescriptor

RtlSelfRelativeToAbsoluteSD

RtlSetDaclSecurityDescriptor

RtlSetOwnerSecurityDescriptor

RtlValidSecurityDescriptor