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 字符。

有关其他字符串处理例程的信息,请参阅 运行时库 (RTL) 例程

要求

要求
目标平台 通用
标头 ntifs.h (包括 Fltkernel.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL < DISPATCH_LEVEL

另请参阅

RtlMultiByteToUnicodeN

RtlUnicodeToMultiByteSize

RtlUpcaseUnicodeToMultiByteN