次の方法で共有


SHUnicodeToUnicode 関数 (shlwapi.h)

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

Unicode 文字列をコピーします。

構文

int SHUnicodeToUnicode(
  [in]  PCWSTR pwzSrc,
  [out] PWSTR  pwzDst,
        int    cwchBuf
);

パラメーター

[in] pwzSrc

種類: PCWSTR

出力バッファーにコピーされる null で終わる Unicode 文字列へのポインター。

[out] pwzDst

種類: PWSTR

コピーされた文字を受け取る出力バッファーへのポインター。 バッファーは、cwchBuf で指定された WCHAR 文字の数を格納するのに十分な大きさである必要があります。これには、終端の null 文字のスペースも含まれます。

cwchBuf

型: int

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

戻り値

型: int

出力バッファーに書き込まれた WCHAR 文字の数 (終端の null 文字を含む) を返します。 失敗した場合は 0 を返します。

注釈

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

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

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

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

SHUnicodeToTChar、SHUnicodeToUnicode と同じに定義されます。

要件

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

こちらもご覧ください

StringCbCopy

StringCbCopyEx

StringCbCopyN

StringCbCopyNEx

StringCbLength

StringCchCopy

StringCchCopyEx

StringCchCopyN

StringCchCopyNEx

StringCchLength