RtlOemToUnicodeN 函数 (ntifs.h)

RtlOemToUnicodeN 例程使用当前系统 OEM 代码页将指定的源字符串转换为 Unicode 字符串。

语法

NTSYSAPI NTSTATUS RtlOemToUnicodeN(
  [out]           PWCH   UnicodeString,
  [in]            ULONG  MaxBytesInUnicodeString,
  [out, optional] PULONG BytesInUnicodeString,
  [in]            PCCH   OemString,
  [in]            ULONG  BytesInOemString
);

参数

[out] UnicodeString

指向调用方分配的缓冲区的指针,该缓冲区接收转换后的字符串。

[in] MaxBytesInUnicodeString

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

[out, optional] BytesInUnicodeString

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

[in] OemString

指向要转换为 Unicode 的 OEM 源字符串的指针。 如果当前代码页描述单字节字符集,则此指针可以是 与 UnicodeString 相同的地址。

[in] BytesInOemString

OemString 中字符串的长度(以字节为单位)。

返回值

如果 OemString 中的完整字符串已成功转换并在 UnicodeString 中返回,RtlOemToUnicodeN 将返回STATUS_SUCCESS。 否则,如果必须截断目标字符串以适应给定 的 MaxBytesInUnicodeString,则它可以返回STATUS_BUFFER_OVERFLOW。 STATUS_BUFFER_OVERFLOW是警告 NTSTATUS 值。

注解

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

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

对于返回值 STATUS_SUCCESS,BytesInUnicodeString 的值(如果有)指示返回的 Unicode 字符串的长度,而不是给定的 MaxBytesInUnicodeString

除非 UnicodeStringOemString 指针等效,否则此例程不会修改源字符串。 如果未截断返回的 Unicode 字符串,则以 null 结尾。

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

要求

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

另请参阅

RtlOemStringToCountedUnicodeString

RtlOemStringToUnicodeString

RtlUnicodeToOemN