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 バッファーが重複している場合、関数の動作は未定義です。
SHUnicodeToTChar は 、SHUnicodeToUnicode と同じに定義されます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional、Windows XP [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server、Windows Server 2003 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | shlwapi.h |
[DLL] | Shlwapi.dll (バージョン 5.0 以降) |
こちらもご覧ください
StringCchLength