RtlUnicodeToMultiByteN 函数 (ntifs.h)

RtlUnicodeToMultiByteN 例程使用当前系统 ANSI 代码页(ACP)将指定的 Unicode 字符串转换为新的字符串。 转换后的字符串不一定来自多字节字符集。

语法

NTSYSAPI NTSTATUS RtlUnicodeToMultiByteN(
  [out]           PCHAR  MultiByteString,
  [in]            ULONG  MaxBytesInMultiByteString,
  [out, optional] PULONG BytesInMultiByteString,
  [in]            PCWCH  UnicodeString,
  [in]            ULONG  BytesInUnicodeString
);

参数

[out] MultiByteString

指向调用方分配的缓冲区的指针,用于接收转换后的字符串。 MultiByteString 缓冲区不得与 UnicodeString 缓冲区重叠。

[in] MaxBytesInMultiByteString

要写入到 MultiByteString的最大字节数。 如果此值导致转换后的字符串被截断,RtlUnicodeToMultiByteN 不会返回错误状态。

[out, optional] BytesInMultiByteString

指向调用方分配的变量的指针,该变量接收已转换字符串的长度(以字节为单位)。 此参数是可选的,可以 NULL

[in] UnicodeString

指向要转换的 Unicode 源字符串的指针。

[in] BytesInUnicodeString

UnicodeString处的字符串的大小(以字节为单位)。

返回值

RtlUnicodeToMultiByteN 返回STATUS_SUCCESS。

言论

RtlUnicodeToMultiByteN 使用系统启动时安装的当前系统 ANSI 代码页转换给定的 Unicode 字符串。

尽管 BytesInMultiByteString 是可选的,并且可以 NULL,但调用方应为其提供存储,因为接收的长度可用于确定转换是否成功。

此例程不会修改源字符串。 如果给定的 BytesInUnicodeString 包含 NULL 终止符,并且给定的 MaxBytesInMultiByteString 不会导致截断,则它将返回以 null 结尾的多字节字符串。

RtlUnicodeToMultiByteSize一样,RtlUnicodeToMultiByteN 仅支持映射到系统启动时安装的当前系统 ANSI 代码页的预编译 Unicode 字符。

有关其他字符串处理例程的信息,请参阅 Run-Time Library (RTL) 例程

要求

要求 价值
目标平台 普遍
标头 ntifs.h (包括 Fltkernel.h、 Ntifs.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL < DISPATCH_LEVEL

另请参阅

RtlMultiByteToUnicodeN

RtlUnicodeToMultiByteSize

RtlUpcaseUnicodeToMultiByteN