レポート用のフック関数
更新 : 2007 年 11 月
このトピックの内容は、次の製品に該当します。
Edition |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
ネイティブのみ |
|||
Standard |
ネイティブのみ |
|||
Pro/Team |
ネイティブのみ |
表の凡例 :
対象 |
|
該当なし |
|
既定で非表示のコマンド |
_CrtSetReportHook を使用して組み込まれたレポート用のフック関数は、_CrtDbgReportがデバッグ レポートを生成するたびに呼び出されます。レポート用のフック関数を使用して、特定の割り当て型に関するレポートだけを出力できます。レポート用のフック関数には、次のようなプロトタイプが必要です。
int YourReportHook(int nRptType, char *szMsg, int *retVal);
_CrtSetReportHook に渡すポインタは _CRT_REPORT_HOOK 型です。これらは、CRTDBG.H で次のように定義されています。
typedef int (__cdecl *_CRT_REPORT_HOOK)(int, char *, int *);
ランタイム ライブラリが独自のフック関数を呼び出す場合は、引数 nRptType には、レポートの種類 (_CRT_WARN、_CRT_ERROR、または _CRT_ASSERT) が格納されます。引数 szMsg には、レポート用の完全にアセンブルされたメッセージ文字列へのポインタが入ります。また、引数 retVal には、_CrtDbgReport がレポート作成後に通常どおり実行を継続するのか、デバッガを起動するのかを示す値が格納されます。retVal の値が 0 の場合は実行を継続し、1 の場合はデバッガを起動します。
フック関数でメッセージを完全に処理できたため、それ以上レポートを出力する必要がない場合は、TRUE を返すようにします。FALSE を返した場合は、_CrtDbgReport は通常どおりにレポート メッセージを出力します。
参照
処理手順
crt_dbg2 サンプル : C ランタイムのデバッグのフック関数