RtlMultiByteToUnicodeN 函数 (ntifs.h)

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

语法

NTSYSAPI NTSTATUS RtlMultiByteToUnicodeN(
  [out]           PWCH       UnicodeString,
  [in]            ULONG      MaxBytesInUnicodeString,
  [out, optional] PULONG     BytesInUnicodeString,
  [in]            const CHAR *MultiByteString,
  [in]            ULONG      BytesInMultiByteString
);

参数

[out] UnicodeString

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

[in] MaxBytesInUnicodeString

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

[out, optional] BytesInUnicodeString

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

[in] MultiByteString

指向要翻译的字符串的指针。

[in] BytesInMultiByteString

MultiByteString 中字符串的大小(以字节为单位)。

返回值

RtlMultiByteToUnicodeN 返回STATUS_SUCCESS。

注解

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

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

如果当前系统代码页定义了单字节字符集,则范围0x00到0x7f的所有 ANSI 字符在相应的 Unicode 字符串中只是零扩展,以加快转换操作的速度。 即使当前单字节代码页将此字符定义为日元符号,此类代码页中0x5c的 ANSI 值也会转换为反斜杠字符。

除非 UnicodeStringMultiByteString 指针等效,否则 RtlMultiByteToUnicodeN 不会修改源字符串。 返回的 Unicode 字符串不是以 null 结尾的。

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

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

要求

要求
目标平台 通用
标头 ntifs.h (包括 Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe (内核模式) ;Ntdll.dll (用户模式)
IRQL < DISPATCH_LEVEL

另请参阅

RtlMultiByteToUnicodeSize

RtlUnicodeToMultiByteN