_CrtSetReportHook
更新 : 2007 年 11 月
クライアント定義のレポート関数を C ランタイム デバッグのレポート プロセスにフックしてインストールします (デバッグ バージョンだけ)。
_CRT_REPORT_HOOK _CrtSetReportHook(
_CRT_REPORT_HOOK reportHook
);
パラメータ
- reportHook
C ランタイム デバッグのレポート プロセスに新しくフックするクライアント定義のレポート関数。
戻り値
前回のクライアント定義レポート関数を返します。
解説
_CrtSetReportHook を使用すると、アプリケーションは独自のレポート関数を C ランタイム デバッグ ライブラリのレポート プロセスにフックできます。その結果、_CrtDbgReport が呼び出されてデバッグ レポートを生成するたびに、アプリケーションのレポート関数が最初に呼び出されます。この機能によって、アプリケーションは、デバッグ レポートにフィルタをかけて特定の割り当て型だけを抽出することも、_CrtDbgReport では指定できない出力先にレポートを送信することもできます。_DEBUG が未定義の場合、_CrtSetReportHook の呼び出しはプリプロセスで削除されます。
_CrtSetReportHook のより堅牢なバージョンについては、_CrtSetReportHook2 を参照してください。
_CrtSetReportHook 関数は、reportHook で指定されたクライアント定義のレポート関数を新しくインストールし、前回のクライアント定義フックを返します。クライアント定義のレポート フック関数のプロトタイプの宣言例を次に示します。
int YourReportHook( int reportType, char *message, int *returnValue );
reportType は、デバッグ レポートの種類 (_CRT_WARN、_CRT_ERROR、または _CRT_ASSERT) です。message は、レポートに出力されるデバッグ ユーザー メッセージであり、完全にアセンブルされています。returnValue は、クライアント定義レポート関数によって指定された値で、_CrtDbgReport が返します。指定できるレポートの種類の詳細については、_CrtSetReportMode 関数を参照してください。
クライアント定義レポート関数がデバッグ メッセージのすべてを処理したために、これ以上レポート処理を行う必要がない場合は、TRUE を返します。FALSE が返された場合、_CrtDbgReport が呼び出されて、レポートの種類、レポート モード、およびレポート ファイルの現在の設定を使用してデバッグ レポートが生成されます。また、_CrtDbgReport の戻り値を returnValue に指定すると、アプリケーションはデバッグ ブレークの発生も制御できます。デバッグ レポートの設定方法および生成方法の詳細については、_CrtSetReportMode、_CrtSetReportFile、および _CrtDbgReport を参照してください。
フックをサポートするその他のランタイム関数の使い方の詳細と、独自のクライアント定義フック関数の記述方法については、「デバッグ用フック関数の作成」を参照してください。
メモ : |
---|
アプリケーションが /clr でコンパイルされ、アプリケーションがメイン関数を出た後でレポート関数が呼び出された場合、レポート関数が CRT 関数を呼び出すと、CLR が例外をスローします。 |
必要条件
ルーチン |
必須ヘッダー |
---|---|
_CrtSetReportHook |
<crtdbg.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
ライブラリ
C ランタイム ライブラリのデバッグ バージョンのみ。
使用例
_CrtSetReportHook の使用例については、「report サンプル : C ランタイムのデバッグ レポート関数」を参照してください。
.NET Framework の相当するアイテム
適用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。