SHAnsiToUnicode 関数 (shlwapi.h)

[この関数は、Windows XP と Windows Server 2003 を通じて使用できます。 それ以降のバージョンの Windows では、変更または使用できない可能性があります。

ANSI コード ページから Unicode コード ページに文字列を変換します。

構文

int SHAnsiToUnicode(
  [in]  PCSTR pszSrc,
  [out] PWSTR pwszDst,
        int   cwchBuf
);

パラメーター

[in] pszSrc

種類: PCSTR

Unicode に変換する null で終わる ANSI 文字列へのポインター。

[out] pwszDst

種類: PWSTR

ANSI 文字が Unicode (WCHAR) に変換された後、この関数が正常に返されるときに pszSrc で指定された文字列を受け取るバッファーへのポインター。 バッファーは、 cwchBuf パラメーターで指定された Unicode 文字の数 (終端の null 文字を含む) を格納するのに十分な大きさにする必要があります。

cwchBuf

型: int

pwszDst が指すバッファーに含めることができる Unicode 文字の数。 このパラメーターには、0 より大きい値を指定する必要があります。

戻り値

型: int

pwszDst に書き込まれた Unicode 文字の数 (終端の null 文字を含む) を返します。 失敗した場合は 0 を返します。

注釈

セキュリティの警告: この関数を誤って使用すると、アプリケーションのセキュリティが損なわれる可能性があります。 たとえば、 pwszDst バッファーが cwchBuf で指定された文字数を格納するのに十分な大きさでない場合、バッファー オーバーランが発生する可能性があります。 バッファー オーバーランは、アクセス違反が発生した場合に、アプリケーションに対するサービス拒否攻撃を引き起こす可能性があります。 最悪の場合、バッファー オーバーランにより、特に pwszDst がスタック ベースのバッファーである場合に、攻撃者が実行可能コードをプロセスに挿入できる可能性があります。 文字列全体をコピーする場合、sizeof はバイト数を返します。これは cwchBuf パラメーターに使用する正しい値ではありません。 代わりに、sizeof(pwszDst)/sizeof(WCHAR) を使用します。 この手法では、 pwszDst がポインターではなく配列であることを前提としています。

pwszDst バッファーが、変換された出力文字列全体を格納するのに十分な大きさでない場合は、バッファーに合わせて文字列が切り捨てられます。 戻り文字列が切り捨てられたことを検出する方法はありません。 文字列が切り捨てられた場合でも、文字列は常に null で終了します。 これにより、 cwchBuf 文字を pwszDst にコピーすることが保証されます。 Unicode サロゲート ペアの途中で文字列を切り捨てないようにする試みは行われません。

pszSrc バッファーと pwszDst バッファーが重複している場合、関数の動作は未定義です。

メモ 関数が、文字列の終端の null 文字に続く出力バッファー内の文字を変更していないと想定しないでください。 文字列の終端 null 文字の後に続く出力バッファーの内容は、バッファー内の最後の文字まで未定義です。
 
SHAnsiToTChar、SHAnsiToUnicode と同じに定義されます。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional、Windows XP [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server、Windows Server 2003 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー shlwapi.h
[DLL] Shlwapi.dll (バージョン 5.0 以降)

こちらもご覧ください

MultiByteToWideChar

StringCbCopy

StringCbCopyEx

StringCbCopyN

StringCbCopyNEx

StringCbLength

StringCchCopy

StringCchCopyEx

StringCchCopyN

StringCchCopyNEx

StringCchLength