Hookfunktionen für Berichte
Aktualisiert: November 2007
Dieses Thema gilt für folgende Anwendungsbereiche:
Edition |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
Nur "Systemeigen" |
|||
Standard |
Nur "Systemeigen" |
|||
Pro und Team |
Nur "Systemeigen" |
Tabellenlegende:
Vorhanden |
|
Nicht vorhanden |
|
Befehl oder Befehle, die standardmäßig ausgeblendet sind. |
Eine mithilfe von _CrtSetReportHook installierte Hookfunktion für Berichte wird jedes Mal aufgerufen, wenn durch _CrtDbgReport ein Debugbericht generiert wird. Sie können mit dieser Funktion u. a. Berichte filtern, um bestimmte Reservierungstypen herauszustellen. Der Prototyp einer Hookfunktion für Berichte sollte etwa wie folgt aussehen:
int YourReportHook(int nRptType, char *szMsg, int *retVal);
Der an _CrtSetReportHook übergebene Zeiger ist vom Typ _CRT_REPORT_HOOK, wie in CRTDBG.H definiert:
typedef int (__cdecl *_CRT_REPORT_HOOK)(int, char *, int *);
Wenn die Hookfunktion von der Laufzeitbibliothek aufgerufen wird, enthält das nRptType-Argument die Berichtskategorie (_CRT_WARN, _CRT_ERROR oder _CRT_ASSERT); szMsg enthält einen Zeiger auf eine vollständig assemblierte Berichtsmeldungszeichenfolge, und retVal gibt an, ob _CrtDbgReport nach der Berichtgenerierung die normale Ausführung fortsetzen oder den Debugger starten soll. (Bei einem retVal-Wert von 0 (null) wird die Ausführung fortgesetzt und bei einem Wert von 1 wird der Debugger gestartet.)
Wenn die betreffende Meldung vollständig vom Hook behandelt wird, sodass kein weiterer Bericht erforderlich ist, muss er TRUE zurückgeben. Wenn FALSE zurückgegeben wird, gibt _CrtDbgReport die Meldung wie üblich aus.
Siehe auch
Aufgaben
crt_dbg2-Beispiel: C-Laufzeit – Debuggen von Hookfunktionen