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 值也会转换为反斜杠字符。
除非 UnicodeString 和 MultiByteString 指针等效,否则 RtlMultiByteToUnicodeN 不会修改源字符串。 返回的 Unicode 字符串不是以 null 结尾的。
与 RtlMultiByteToUnicodeSize 一样, RtlMultiByteToUnicodeN 仅支持映射到系统启动时安装的当前系统 ANSI 代码页的预编译 Unicode 字符。
有关其他字符串处理例程的信息,请参阅 运行时库 (RTL) 例程。
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
标头 | ntifs.h (包括 Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe (内核模式) ;Ntdll.dll (用户模式) |
IRQL | < DISPATCH_LEVEL |