Freigeben über


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

Weitere Ressourcen

Schreiben von Hookfunktionen zum Debuggen