Freigeben über


_CrtSetReportFile

Nachdem Sie _CrtSetReportMode verwendet haben, um _CRTDBG_MODE_FILE anzugeben, können Sie das Dateihandle angeben, um den Meldungstext zu empfangen. _CrtSetReportFile wird auch von _CrtDbgReport, _CrtDbgReportW verwendet, um das Ziel des Texts anzugeben (nur Debugversion).

Syntax

_HFILE _CrtSetReportFile(
   int reportType,
   _HFILE reportFile
);

Parameter

reportType
Berichtstyp: _CRT_WARN, _CRT_ERROR und _CRT_ASSERT.

reportFile
Neue Berichtsdatei für reportType.

Rückgabewert

Nach erfolgreichem Abschluss gibt _CrtSetReportFile die vorherige Berichtsdatei zurück, die für den Berichtstyp definiert ist, der in reportType angegeben wird. Wenn ein ungültiger Wert für reportType übergeben wird, ruft diese Funktion den Handler für ungültigen Parameter auf, wie in Parametervalidierung. Wenn die weitere Ausführung zugelassen wird, wird errno auf EINVAL festgelegt, und die Funktion gibt _CRTDBG_HFILE_ERROR beschrieben. Weitere Informationen finden Sie untererrno, _doserrno, _sys_errlistund _sys_nerr.

Hinweise

_CrtSetReportFile wird mit der _CrtSetReportMode-Funktion verwendet, um das Ziel oder die Ziele für einen angegebenen Berichtstyp zu definieren, der von _CrtDbgReport generiert wird. Wenn Sie _CrtSetReportMode aufrufen, um den _CRTDBG_MODE_FILE Berichtsmodus für einen bestimmten Berichtstyp zuzuweisen, rufen Sie auch _CrtSetReportFile auf, um die Zieldatei oder den Zieldatenstrom anzugeben. Wenn _DEBUG nicht definiert ist, werden Aufrufe von _CrtSetReportFile während der Vorverarbeitung entfernt.

In der folgenden Liste werden die verfügbaren Optionen für reportFile sowie das resultierende Verhalten von _CrtDbgReport aufgeführt. Diese Optionen werden als Bitflags in Crtdbg.h definiert.

  • Dateihandle

    Ein Handle für die Datei, die das Ziel der Meldungen ist. Es wird nicht versucht, die Gültigkeit des Handles zu überprüfen. Sie müssen das Handle für die Datei öffnen und schließen. Zum Beispiel:

    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

    Schreibt Meldungen an stderr, die wie folgt umgeleitet werden können:

    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

    Schreibt Meldungen für stdout, die umgeleitet werden können.

  • _CRTDBG_REPORT_FILE

    Gibt den aktuellen Berichtsmodus zurück.

Sie können die Berichtsdatei steuern, die von jedem Berichtstyp separat verwendet wird. Beispielsweise ist es möglich, anzugeben, dass ein reportType _CRT_ERROR Bericht von Berichten durchlaufen stderrwird, während ein reportType _CRT_ASSERT Bericht über ein benutzerdefiniertes Dateihandle oder einen Datenstrom erstellt wird.

Anforderungen

Routine Erforderlicher Header Optionaler Header
_CrtSetReportFile <crtdbg.h> <errno.h>

Die Konsole wird in UWP-Apps (Universelle Windows-Plattform) nicht unterstützt. Die mit der Konsole verknüpften Standardstreamhandles stdin, stdout und stderr müssen umgeleitet werden, bevor sie von C-Laufzeitfunktionen in UWP-Apps verwendet werden können. Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Bibliotheken: Nur Debugversionen der CRT-Bibliotheksfunktionen.

Weitere Informationen

Debugroutinen