Freigeben über


EngExtCpp-Erweiterungsbibliotheken

Eine EngExtCpp-Erweiterungsbibliothek ist eine DLL, die das EngExtCpp-Erweiterungsframework in EngExtCpp.h verwendet. Wenn diese Bibliothek von der Debugger-Engine geladen wird, können ihre Methoden und Funktionen zusätzliche Funktionen oder Automatisierung von Aufgaben bereitstellen, während sie das Debuggen im Benutzermodus oder Kernelmodus unter Microsoft Windows ausführen.

Das EngExtCpp-Erweiterungsframework basiert auf dem DbgEng-Erweiterungsframework. Es bietet die gleiche Debugger-Engine-API für die Interaktion mit der Debugger-Engine. es bietet aber auch zusätzliche Features, um allgemeine Aufgaben zu vereinfachen.

Wenn Sie eine vollständige Installation der Debugtools für Windows durchgeführt haben, finden Sie im Unterverzeichnis sdk\samples\extcpp des Installationsverzeichnisses eine Beispielerweiterung für EngExtCpp mit dem Namen "extcpp".

EXT_CLASS und ExtExtension

Der Kern einer EngExtCpp-Erweiterungsbibliothek ist eine einzelne instance der EXT_CLASS-Klasse. Eine EngExtCpp-Erweiterungsbibliothek stellt die Implementierung dieser Klasse bereit, die alle Erweiterungsbefehle und -methoden für Formatierungsstrukturen enthält, die von der Bibliothek exportiert werden.

EXT_CLASS ist eine Unterklasse von ExtExtension. Der einzelne instance dieser Klasse wird mithilfe des makros EXT_DECLARE_GLOBALS erstellt, das in den Quelldateien für die Erweiterungsbibliothek genau einmal angezeigt werden muss.

Wenn die Erweiterungsbibliothek geladen wird, wird die Initialize-Methode der -Klasse von der Engine aufgerufen, und die Uninitialize-Methode wird aufgerufen, bevor die Klasse entladen wird. Darüber hinaus werden die Methoden OnSessionActive, OnSessionInactive, OnSessionAccessible und OnSessionInaccessible von der Engine aufgerufen, um die Erweiterungsbibliothek über den Status der Debugsitzung zu benachrichtigen.

Erweiterungsbefehle

Die EXT_CLASS-Klasse kann eine Reihe von Methoden enthalten, die zum Ausführen von Erweiterungsbefehlen verwendet werden. Jeder Erweiterungsbefehl wird in der EXT_CLASS-Klasse mithilfe des makros EXT_COMMAND_METHOD deklariert. Die Implementierung eines Befehls wird mithilfe des Makros EXT_COMMAND definiert.

Bekannte Strukturen

Die EXT_CLASS-Klasse kann eine Reihe von Methoden enthalten, die den ExtKnownStructMethod-Prototyp verwenden. Die Methoden können von der Engine verwendet werden, um Instanzen bestimmter Strukturtypen für die Ausgabe zu formatieren.

Bereitgestellte Werte

Die EXT_CLASS-Klasse kann eine Reihe von Methoden enthalten, die den ExtProvideValueMethod-Prototyp verwenden. Die Methoden können von der Engine verwendet werden, um einige Pseudoregister auszuwerten, die von der Erweiterung bereitgestellt werden.