レポート用のフック関数
このトピックの内容は、次の製品に該当します。
エディション |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
Express |
ネイティブのみ |
||||
Pro、Premium、Ultimate |
ネイティブのみ |
_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 ランタイムのデバッグのフック関数