_CrtSetReportFile
更新 : 2007 年 11 月
_CRTDBG_MODE_FILE を _CrtSetReportMode で指定すると、メッセージ テキストを受け取るファイル ハンドルを指定できます。_CrtSetReportFile は、_CrtDbgReport、_CrtDbgReportW でテキストの出力先を指定するためにも使用します (デバッグ バージョンのみ)。
_HFILE _CrtSetReportFile(
int reportType,
_HFILE reportFile
);
パラメータ
reportType
レポートの種類。_CRT_WARN、_CRT_ERROR、および _CRT_ASSERT。reportFile
reportType の新しいレポート ファイル。
戻り値
正常に実行された場合、_CrtSetReportFile は reportType で指定されたレポートの種類で前回定義されていたレポート ファイルを返します。reportType に無効な値が渡されると、この関数は、「パラメータの検証」に説明されているように、無効なパラメータ ハンドラを呼び出します。実行の継続が許可された場合、errno が EINVAL に設定され、関数から _CRTDBG_HFILE_ERROR が返されます。詳細については、「errno、_doserrno、_sys_errlist、および _sys_nerr」を参照してください。
解説
_CrtSetReportFile は _CrtSetReportMode 関数と組み合わせて、_CrtDbgReport が生成する特定のレポートの種類の出力先を定義するために使用します。_CrtSetReportMode を呼び出して _CRTDBG_MODE_FILE レポート モードを特定のレポートの種類に割り当てた場合は、_CrtSetReportFile を呼び出して出力先となるファイルまたはストリームを定義する必要があります。_DEBUG が未定義の場合、_CrtSetReportFile の呼び出しはプリプロセスで削除されます。
reportFile の選択肢と _CrtDbgReport の動作結果を次の表に示します。これらのオプションは、Crtdbg.h でビット フラグとして定義されています。
file handle
メッセージの出力先となるファイルへのハンドル。ハンドルの有効性は検査されません。ファイルへのハンドルは、アプリケーションで開いたり閉じたりする必要があります。次に例を示します。HANDLE hLogFile; hLogFile = CreateFile("c:\\log.txt", GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_WARN, hLogFile); _RPT0(_CRT_WARN,"file message\n"); CloseHandle(hLogFile);
_CRTDBG_FILE_STDERR
メッセージを stderr に書き込み、それを次のようにしてリダイレクトできます。freopen( "c:\\log2.txt", "w", stderr); _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_FILE); _CrtSetReportFile(_CRT_ERROR, _CRTDBG_FILE_STDERR); _RPT0(_CRT_ERROR,"1st message\n");
_CRTDBG_FILE_STDOUT
メッセージを stdout に書き込み、それをリダイレクトできます。_CRTDBG_REPORT_FILE
現在のレポート モードを返します。
レポート ファイルは、レポートの種類ごとに制御できます。たとえば、reportType が _CRT_ERROR の場合は stderr にレポートし、reportType が _CRT_ASSERT の場合はユーザー定義のファイル ハンドルまたはストリームにレポートできます。
必要条件
ルーチン |
必須ヘッダー |
オプション ヘッダー |
---|---|---|
_CrtSetReportFile |
<crtdbg.h> |
<errno.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
ライブラリ:C ランタイム ライブラリ のデバッグ バージョンのみ。
使用例
report サンプル : C ランタイムのデバッグ レポート関数 を参照してください。
.NET Framework の相当するアイテム
適用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。