_CrtSetReportFile
_CrtSetReportMode
を使用して _CRTDBG_MODE_FILE
を指定すると、メッセージ テキストを受け取るためのファイル ハンドルを指定できるようになります。 _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
によって生成される特定のレポート タイプの 1 つまたは複数の出力先を定義するために使用されます。 特定のレポート タイプの _CRTDBG_MODE_FILE
レポート モードを割り当てるために _CrtSetReportMode
を呼び出す場合は、出力先ファイルまたはストリームを指定するために _CrtSetReportFile
も呼び出します。 _DEBUG
が定義されていない場合、_CrtSetReportFile
の呼び出しは前処理で削除されます。
以下のリストは reportFile
で利用可能な選択肢と、結果となる _CrtDbgReport
の動作を示しています。 これらのオプションは、Crtdbg.h でビット フラグとして定義されています。
ファイル ハンドル
メッセージの送信先となるファイルのハンドル。 ハンドルの有効性は検証されません。 ファイルのハンドルを開いたり閉じたりする必要があります。 次に例を示します。
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
現在のレポート モードを返します。
各レポート タイプで使用されるレポート ファイルは個別に制御できます。 たとえば、_CRT_ERROR
の reportType
は stderr
を通してレポートを行い、_CRT_ASSERT
の reportType
はユーザー定義のハンドルまたはストリームを通してレポートを行うように指定することができます。
要件
ルーチンによって返される値 | 必須ヘッダー | オプション ヘッダー |
---|---|---|
_CrtSetReportFile |
<crtdbg.h> | <errno.h> |
ユニバーサル Windows プラットフォーム (UWP) アプリではコンソールがサポートされていません。 コンソール (stdin
、stdout
、stderr
) に関連付けられている標準ストリームのハンドルは、C ランタイム関数によって UWP アプリで使用される前に、リダイレクトする必要があります。 互換性の詳細については、「 Compatibility」を参照してください。
ライブラリ: CRT ライブラリ機能だけのデバッグ バージョン。