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 的 SID 生成了 281,736:

 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)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

另请参阅

RtlFreeUnicodeString

SID

UNICODE_STRING