Hookfunktionen für Clientblöcke
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. |
Wenn Sie die in _CLIENT_BLOCK-Blöcken gespeicherten Daten überprüfen oder als Bericht ausgeben möchten, können Sie speziell für diesen Zweck eine Funktion schreiben. Der Prototyp dieser Funktion muss etwa wie der folgende, in CRTDBG.H definierte Prototyp aussehen:
void YourClientDump(void *, size_t)
Das bedeutet, dass die Hookfunktion einen void-Zeiger auf den Anfang des Reservierungsblocks sowie einen Wert vom Typ size_t, der die Reservierungsgröße angibt, akzeptieren und void zurückgeben muss. Der restliche Inhalt dieser Funktion ist Ihnen freigestellt.
Nachdem Sie die Hookfunktion mithilfe von _CrtSetDumpClient installiert haben, wird sie bei jedem Dump eines _CLIENT_BLOCK-Blocks aufgerufen. Mithilfe von _CrtReportBlockType können Sie anschließend Informationen zum Typ oder Untertyp der im Dump ausgegebenen Blöcke abrufen.
Der Zeiger auf die Funktion, den Sie an _CrtSetDumpClient übergeben, ist vom Typ _CRT_DUMP_CLIENT, wie in Crtdbg.h definiert:
typedef void (__cdecl *_CRT_DUMP_CLIENT)
(void *, size_t);
Siehe auch
Aufgaben
crt_dbg2-Beispiel: C-Laufzeit – Debuggen von Hookfunktionen