RtlConvertSidToUnicodeString 函数 (ntifs.h)

RtlConvertSidToUnicodeString 例程生成安全标识符的可打印 Unicode 字符串表示形式, (SID) 。

语法

NTSYSAPI NTSTATUS RtlConvertSidToUnicodeString(
  [in, out] PUNICODE_STRING UnicodeString,
  [in]      PSID            Sid,
  [in]      BOOLEAN         AllocateDestinationString
);

参数

[in, out] UnicodeString

指向 UNICODE_STRING 结构的指针,该结构包含生成的 Unicode 字符串。 仅当 AllocateDestinationStringTRUE 时,才会设置 UnicodeString-MaximumLength> 成员。

[in] Sid

指向要转换为 Unicode 的 SID 结构的指针, (SID 结构不受影响) 。

[in] AllocateDestinationString

一个布尔标志,指示此例程是否会分配 UnicodeString 缓冲区。 如果为 TRUE,则仅分配 UnicodeString-Buffer> 成员,并且调用方必须分配 UnicodeString 结构的其余部分。

返回值

RtlConvertSidToUnicodeString 例程可以返回以下值之一:

返回代码 说明
STATUS_SUCCESS
转换成功。
STATUS_BUFFER_OVERFLOW
如果 AllocateDestinationStringFALSE ,并且调用方提供的 UnicodeString 缓冲区太小,无法容纳转换后的 Unicode 字符串,则返回此值。
STATUS_NO_MEMORY
如果 AllocateDestinationStringTRUE ,并且内存不足,无法分配 UnicodeString 缓冲区,则返回此值。
STATUS_INVALID_SID
指定的 SID 结构在结构上无效。

注解

生成的 Unicode 字符串将采用两种形式之一。 如果 SID 的 IdentifierAuthority 成员的值小于或等于 2^32,则 IdentifierAuthority 成员将以十进制形式生成。 例如,IdentifierAuthority 为 281,736 的 SID 生成:

 S-1-281736-12-72-9-110

否则,IdentifierAuthority 将生成十六进制。 例如,IdentifierAuthority 为 173,495,281,736 的 SID 生成:

 S-1-0x28651FE848-12-72-9-110

SID 中的所有其他成员都将以十进制形式生成。

如果 AllocateDestinationStringTRUE,则必须使用 RtlFreeUnicodeString 解除分配分配的缓冲区。

要求

要求
最低受支持的客户端 Windows 2000
目标平台 通用
标头 ntifs.h (包括 Ntifs.h、FltKernel.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

另请参阅

RtlFreeUnicodeString

SID

UNICODE_STRING