Partager via


Génération d’extensions EngExtCpp

Les bibliothèques d’extensions EngExtCpp sont générées presque de la même façon que les bibliothèques d’extension DbgEng. Pour plus d’informations, consultez Génération d’extensions DbgEng.

Le code d’implémentation EngExtCpp (engextcpp.cpp) est utilisé au lieu d’une liaison avec une bibliothèque statique.

Étant donné que l’infrastructure d’extension EngExtCpp est basée sur l’infrastructure d’extension DbgEng, une DLL d’extension EngExtCpp doit exporter les mêmes fonctions qu’une DLL d’extension DbgEng.

Chaque extension doit être exportée. Lorsque vous utilisez la macro EXT_COMMAND pour définir une fonction d’extension, cette macro crée également une fonction C portant le même nom que l’extension. Cette fonction doit être exportée à partir de la DLL.

Les fonctions suivantes sont fournies par engextcpp doivent être exportées à partir de la DLL EngExtCpp.

  • DebugExtensionInitialize :- afin que la méthode Initialize puisse être appelée pour initialiser la bibliothèque.

  • DebugExtensionUnitialize : pour que la méthode Uninitialize puisse être appelée pour annuler l’initialisation de la bibliothèque.

  • KnownStructOutputEx : afin que le moteur puisse appeler les méthodes ExtKnownStructMethod pour mettre en forme les structures connues pour la sortie.

  • DebugExtensionNotify : afin que le moteur puisse appeler les méthodes OnSessionActive, OnSessionInactive, OnSessionAccessible et OnSessionInaccessible pour informer la bibliothèque d’extensions des modifications apportées à l’état de la session de débogage.

  • help : pour que l’infrastructure d’extension EngExtCpp puisse fournir automatiquement une extension !help .

Ces fonctions peuvent être exportées même si les fonctionnalités qu’elles fournissent ne sont pas nécessaires. En outre, s’ils ne sont pas exportés, les fonctionnalités qu’ils fournissent seront perdues.

DebugExtensionInitialize doit être exporté pour que le moteur de débogueur reconnaisse la DLL en tant que DLL d’extension DbgEng valide.