次の方法で共有


CHString::FormatMessageW(UINT,...) メソッド (chstring.h)

[CHString クラスは WMI プロバイダー フレームワークの一部であり、現在最終的な状態と見なされています。これらのライブラリに影響を与える、セキュリティ関連以外の問題に対しては、それ以上の開発、機能強化、または更新プログラムは利用できません。 すべての新しい開発には、MI API を使用する必要があります。]

FormatMessageW メソッドは、メッセージ文字列を書式設定します。

構文

void  throw(CHeap_Exception) FormatMessageW(
  UINT nFormatID,
  ...  
);

パラメーター

nFormatID

書式設定されていないメッセージ テキストが含まれる文字列リソース識別子。

...

引数リスト。

戻り値

CHeap_Exception

注釈

FormatMessageW メソッドには、入力としてメッセージ定義が必要です。 メッセージ定義は、 lpszFormat または nFormatID で識別される文字列リソースによって決定されます。 メソッドは、書式設定されたメッセージ テキストを CHString 文字列にコピーし、要求された場合は埋め込み挿入シーケンスを処理します。

各挿入には、 lpszFormat または nFormatID パラメーターの後に対応するパラメーターが必要です。 メッセージ テキスト内では、メッセージを動的に書式設定するための複数のエスケープ シーケンスがサポートされています。 これらのエスケープ シーケンスとその意味の説明については、Windows FormatMessage 関数のトピックを参照してください。

メモ セキュリティ攻撃への露出を減らすには、常に FormatMessageW の書式指定文字列を使用します。 たとえば、 FormatMessageW(input) は悪用可能であり、 FormatMessageW("%s", input) は利用できません。 書式指定文字列には、ユーザー指定の文字列を使用しないでください。 ローカライズなどの目的で書式指定文字列が格納されている場合は、文字列が未承認の書き込みアクセスから保護されていることを確認します。 関数が標準出力ではなく文字列に書き込む場合は、書式指定文字列で末尾の "%s" を使用しないようにする必要がある場合があります。

次のコード例は、 CHString::FormatMessageW の使用方法を示しています。

CHString str;
int nAsked = 5;
int nAgree = 4;

str.FormatMessageW(L"%1!d! of %2!d! developers agree: Golf is %3%!", 
   nAgree, nAsked, L"Best");
assert(str == L"4 of 5 developers agree: Golf is Best!");

要件

要件
Header chstring.h

こちらもご覧ください

CHString

CHString::Format