SHUnicodeToAnsi 関数 (shlwapi.h)

[この関数は、Windows XP および Windows Server 2003 を通じて使用できます。 以降のバージョンの Windows では変更または使用できない場合があります。]

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

構文

int SHUnicodeToAnsi(
  [in]  PCWSTR pwszSrc,
  [out] PSTR   pszDst,
        int    cchBuf
);

パラメーター

[in] pwszSrc

種類: PCWSTR

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

[out] pszDst

種類: PSTR

この関数が正常に返されると、変換された文字を受け取るバッファーへのポインター。 バッファーは、cchBuf パラメーターで指定された CHAR 文字の数を格納するのに十分な大きさである必要があります 。終端の null 文字のスペースも含まれます。

cchBuf

型: int

pszDst が指すバッファーに含めることができる CHAR 値の数。 パラメーターに割り当てられる値は、0 より大きくする必要があります。

戻り値

型: int

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

注釈

セキュリティの警告: この関数を誤って使用すると、アプリケーションのセキュリティが損なわれる可能性があります。 たとえば、 pszDst バッファーが cchBuf で指定された文字数を格納するのに十分な大きさでない場合、バッファー オーバーランが発生する可能性があります。 バッファー オーバーランは、アクセス違反が発生した場合に、アプリケーションに対するサービス拒否攻撃を引き起こす可能性があります。 最悪の場合、バッファー オーバーランにより、特に pszDst がスタック ベースのバッファーである場合に、攻撃者が実行可能コードをプロセスに挿入する可能性があります。 さらに、バッファーに対して大きすぎる場合、出力文字列は自動的に切り捨てられます。 これにより、正規化やその他のセキュリティの脆弱性が発生する可能性があります。

pszDst バッファーが、変換された出力文字列全体を格納するのに十分な大きさでない場合、バッファーに合わせて文字列が切り捨てられます。 戻り文字列が切り捨てられていることを検出する方法はありません。 文字列が切り捨てられた場合でも、文字列は常に null で終了します。 この関数は、DBCS 文字ペアの先行バイトと証跡バイトの間で切り捨てないように注意します。 その場合は、cchBuf-1 文字のみが返されます。

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

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

要件

要件
サポートされている最小のクライアント 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