_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 によって生成される特定のレポートの種類の送信先を定義するために使用されます。 特定のレポートの種類の _CRTDBG_MODE_FILE レポート モードを割り当てるために _CrtSetReportMode が呼び出された場合は、ターゲットとして使用する特定のファイルまたはストリームを定義するために _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
現在のレポート モードを返します。
各レポートの種類によって使用されるレポート ファイルを個別に制御できます。 たとえば、_CRT_ERROR の reportType は stderr にレポートされるよう指定し、_CRT_ASSERT の reportType はユーザー定義ファイルのハンドルまたはストリームにレポートされるように指定することができます。
必要条件
ルーチン |
必須ヘッダー |
オプション ヘッダー |
---|---|---|
_CrtSetReportFile |
<crtdbg.h> |
<errno.h> |
コンソールは、Windows ストア アプリではサポートされていません。 コンソール (stdin、stdout、および stderr) に関連付けられている標準ストリームのハンドルは、C ランタイム関数によって Windows ストア アプリで使用する前に、リダイレクトする必要があります。 互換性の詳細については、「互換性」を参照してください。
ライブラリ:CRT ライブラリの機能 のデバッグ バージョンのみ。
同等の .NET Framework 関数
使用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。