次の方法で共有


_CrtSetReportFile

_CrtSetReportMode を使用して _CRTDBG_MODE_FILE を指定すると、メッセージ テキストを受け取るためのファイル ハンドルを指定できるようになります。 _CrtSetReportFile は、テキストの出力先を指定するために _CrtDbgReport_CrtDbgReportW によっても使用されます (デバッグ バージョンのみ)。

構文

_HFILE _CrtSetReportFile(
   int reportType,
   _HFILE reportFile
);

パラメーター

reportType
レポートの種類: _CRT_WARN_CRT_ERROR、および _CRT_ASSERT

reportFile
reportType の新しいレポート ファイル。

戻り値

正常に終了した場合、_CrtSetReportFilereportType で指定したレポートの種類に対して定義された前のレポート ファイルを返します。 reportType に対して無効な値が渡されると、「パラメーターの検証」で説明されているように、この関数は無効パラメーター ハンドラーを呼び出します。 実行の継続が許可された場合、errnoEINVAL に設定され、関数は _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_ERRORreportTypestderr を通してレポートを行い、_CRT_ASSERTreportType はユーザー定義のハンドルまたはストリームを通してレポートを行うように指定することができます。

要件

ルーチンによって返される値 必須ヘッダー オプション ヘッダー
_CrtSetReportFile <crtdbg.h> <errno.h>

ユニバーサル Windows プラットフォーム (UWP) アプリではコンソールがサポートされていません。 コンソール (stdinstdoutstderr) に関連付けられている標準ストリームのハンドルは、C ランタイム関数によって UWP アプリで使用される前に、リダイレクトする必要があります。 互換性の詳細については、「 Compatibility」を参照してください。

ライブラリ: CRT ライブラリ機能だけのデバッグ バージョン。

関連項目

デバッグ ルーチン