Freigeben über


Erstellen von EngExtCpp-Erweiterungen

Die EngExtCpp-Erweiterungsbibliotheken werden fast auf die gleiche Weise wie die DbgEng-Erweiterungsbibliotheken erstellt. Weitere Informationen finden Sie unter Erstellen von DbgEng-Erweiterungen.

Der EngExtCpp-Implementierungscode (engextcpp.cpp) wird anstelle einer Verknüpfung mit einer statischen Bibliothek verwendet.

Da das EngExtCpp-Erweiterungsframework auf dem DbgEng-Erweiterungsframework basiert, sollte eine EngExtCpp-Erweiterungs-DLL dieselben Funktionen wie eine DbgEng-Erweiterungs-DLL exportieren.

Jede Erweiterung sollte exportiert werden. Wenn Sie das Makro EXT_COMMAND verwenden, um eine Erweiterungsfunktion zu definieren, erstellt dieses Makro auch eine C-Funktion mit demselben Namen wie die Erweiterung. Diese Funktion sollte aus der DLL exportiert werden.

Die folgenden Funktionen werden von engextcpp bereitgestellt, sollten aus der EngExtCpp-DLL exportiert werden.

  • DebugExtensionInitialize , damit die Initialize-Methode aufgerufen werden kann, um die Bibliothek zu initialisieren.

  • DebugExtensionUnitialize – damit die Uninitialize-Methode aufgerufen werden kann, um die Bibliothek zu initialisieren.

  • KnownStructOutputEx , damit die Engine die ExtKnownStructMethod-Methoden aufrufen kann, um bekannte Strukturen für die Ausgabe zu formatieren.

  • DebugExtensionNotify , damit die Engine die Methoden OnSessionActive, OnSessionInactive, OnSessionAccessible und OnSessionInaccessible aufrufen kann, um die Erweiterungsbibliothek über Änderungen am Zustand der Debugsitzung zu benachrichtigen.

  • help – damit das EngExtCpp-Erweiterungsframework automatisch eine !help-Erweiterung bereitstellen kann.

Diese Funktionen können auch dann exportiert werden, wenn die von ihnen bereitgestellte Funktionalität nicht benötigt wird. Wenn sie nicht exportiert werden, geht außerdem die von ihnen bereitgestellte Funktionalität verloren.

DebugExtensionInitialize muss exportiert werden, damit die Debugger-Engine die DLL als gültige DbgEng-Erweiterungs-DLL erkennt.