ExtExtension::* ExtKnownStructMethod-Rückruffunktion (engextcpp.hpp)
Die ExtKnownStructMethod-Rückrufmethode wird von der Engine aufgerufen, um eine instance einer Struktur für die Ausgabe in einer einzelnen Zeile zu formatieren.
Syntax
ExtExtension::* ExtKnownStructMethod Extextension::*Extknownstructmethod;
void Extextension::*Extknownstructmethod(
[in] PCSTR TypeName,
[in] ULONG Flags,
[in] ULONG64 Offset
)
{...}
Parameter
[in] TypeName
Gibt den Namen des Typs der Struktur an, auf die durch Offset verwiesen wird. Dies entspricht dem TypeName-Feld der ExtKnownStruct-Struktur , die zum Registrieren dieser Rückrufmethode verwendet wird.
[in] Flags
Gibt Bitflags an, die angeben, wie die Ausgabe formatiert werden soll. Derzeit ist dies auf DEBUG_KNOWN_STRUCT_GET_SINGLE_LINE_OUTPUT festgelegt, was angibt, dass die Ausgabe für die Ausgabe in einer einzelnen Zeile formatiert werden soll.
[in] Offset
Gibt den Speicherort im Speicher des Ziels der instance der Struktur an, die für die Ausgabe formatiert werden soll.
Rückgabewert
Keine
Bemerkungen
Die Debugger-Engine erwartet, dass die Ausgabe für den Druck in einer einzelnen Zeile formatiert wird, daher erwartet sie keine Zeilenumbrüche für die formatierte Struktur.
Die formatierte Ausgabe dieser Methode sollte in den Puffer m_AppendBuffer – einem Member von ExtExtension – platziert werden.
Instanzen dieser Rückrufmethode werden bei der Engine mithilfe einer instance der ExtKnownStruct-Struktur registriert, die von der Initialize-Methode in das Array m_KnownStructs (ein Member von ExtExtension) eingefügt wird. Die ExtKnownStruct-Struktur gibt auch den Namen des Strukturtyps an, den diese Methode formatiert.
Wenn die Debugger-Engine eine bekannte Strukturmethode aufruft, umschließt sie den Aufruf in einen try/except-Block . Dies schützt die Engine vor einigen Arten von Fehlern im Erweiterungscode. Da die Erweiterungsaufrufe jedoch im selben Thread wie die Engine ausgeführt werden, können sie dennoch zu einem Absturz führen.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Desktop |
Kopfzeile | engextcpp.hpp (include Engextcpp.hpp) |