次の方法で共有


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 にできますが、呼び出し元は、変換が成功したかどうかを判断するために受信した長さを使用できるため、そのストレージを提供する必要があります。

現在のシステム コード ページで 1 バイト文字セットが定義されている場合、0x7fに0x00範囲内のすべての ANSI 文字は、変換操作を高速化するために、対応する Unicode 文字列で単にゼロ拡張されます。 このようなコード ページで0x5c ANSI 値は、現在の 1 バイト コード ページで円記号としてこの文字が定義されている場合でも、円記号に変換されます。

RtlMultiByteToUnicodeN は、 UnicodeString ポインターと MultiByteString ポインターが同等でない限り、ソース文字列を変更しません。 返された Unicode 文字列は null で終わるものではありません。

RtlMultiByteToUnicodeSize と同様に、RtlMultiByteToUnicodeN では、システム起動時にインストールされている現在のシステム ANSI コード ページにマップされる事前計算済みの Unicode 文字のみがサポートされます。

その他の文字列処理ルーチンの詳細については、「 ランタイム ライブラリ (RTL) ルーチン」を参照してください。

要件

要件
対象プラットフォーム ユニバーサル
Header ntifs.h (Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe (カーネル モード);Ntdll.dll (ユーザー モード)
IRQL < DISPATCH_LEVEL

こちらもご覧ください

RtlMultiByteToUnicodeSize

RtlUnicodeToMultiByteN