Compilazione di estensioni EngExtCpp

Le librerie di estensioni EngExtCpp vengono create quasi allo stesso modo delle librerie di estensioni DbgEng. Per altre informazioni, vedere Compilazione di estensioni DbgEng.

Il codice di implementazione EngExtCpp (engextcpp.cpp) viene usato invece di collegarsi a una libreria statica.

Poiché il framework di estensione EngExtCpp è basato sul framework di estensione DbgEng, una DLL di estensione EngExtCpp deve esportare le stesse funzioni di una DLL di estensione DbgEng.

Ogni estensione deve essere esportata. Quando si utilizza la macro EXT_COMMAND per definire una funzione di estensione, questa macro crea anche una funzione C con lo stesso nome dell'estensione. Questa funzione deve essere esportata dalla DLL.

Le funzioni seguenti sono fornite da engextcpp devono essere esportate dalla DLL EngExtCpp.

  • DebugExtensionInitialize : in modo che il metodo Initialize possa essere chiamato per inizializzare la libreria.

  • DebugExtensionUninitialize : in modo che il metodo Uninitialize possa essere chiamato per disinizializzare la libreria.

  • KnownStructOutputEx : in modo che il motore possa chiamare i metodi ExtKnownStructMethod per formattare le strutture note per l'output.

  • DebugExtensionNotify: in modo che il motore possa chiamare i metodi OnSessionActive, OnSessionInactive, OnSessionAccessible e OnSessionInaccessible per notificare alla libreria di estensioni le modifiche apportate allo stato della sessione di debug.

  • help - in modo che il framework di estensione EngExtCpp possa fornire automaticamente un'estensione !help .

Queste funzioni possono essere esportate anche se le funzionalità fornite non sono necessarie. Inoltre, se non vengono esportati, le funzionalità fornite andranno perse.

DebugExtensionInitialize deve essere esportato affinché il motore del debugger riconosca la DLL come DLL di estensione DbgEng valida.