Partager via


Bibliothèques d’extensions EngExtCpp

Une bibliothèque d’extensions EngExtCpp est une DLL qui utilise l’infrastructure d’extension EngExtCpp trouvée dans EngExtCpp.h. Lorsque cette bibliothèque est chargée par le moteur de débogueur, ses méthodes et fonctions peuvent fournir des fonctionnalités supplémentaires ou une automatisation des tâches tout en effectuant un débogage en mode utilisateur ou en mode noyau sur Microsoft Windows.

L’infrastructure d’extension EngExtCpp est basée sur l’infrastructure d’extension DbgEng. Il offre la même API du moteur de débogueur pour l’interaction avec le moteur de débogueur. mais il fournit également des fonctionnalités supplémentaires pour simplifier les tâches courantes.

Si vous avez effectué une installation complète des outils de débogage pour Windows, un exemple d’extension EngExtCpp appelé « extcpp » se trouve dans le sous-répertoire sdk\samples\extcpp du répertoire d’installation.

EXT_CLASS et ExtExtension

Au cœur d’une bibliothèque d’extensions EngExtCpp se trouve une seule instance de la classe EXT_CLASS. Une bibliothèque d’extensions EngExtCpp fournit l’implémentation de cette classe, qui contient toutes les commandes et méthodes d’extension pour la mise en forme des structures exportées par la bibliothèque.

EXT_CLASS est une sous-classe d’ExtExtension. La instance unique de cette classe est créée à l’aide de la macro EXT_DECLARE_GLOBALS qui doit apparaître exactement une fois dans les fichiers sources de la bibliothèque d’extensions.

Lorsque la bibliothèque d’extensions est chargée, la méthode Initialize de la classe est appelée par le moteur et la méthode Uninitialize est appelée avant de décharger la classe. En outre, les méthodes OnSessionActive, OnSessionInactive, OnSessionAccessible et OnSessionInaccessible sont appelées par le moteur pour informer la bibliothèque d’extensions de l’état de la session de débogage.

Commandes d’extension

La classe EXT_CLASS peut contenir un certain nombre de méthodes utilisées pour exécuter des commandes d’extension. Chaque commande d’extension est déclarée dans la classe EXT_CLASS à l’aide de la macro EXT_COMMAND_METHOD . L’implémentation d’une commande est définie à l’aide de la macro EXT_COMMAND .

Structures connues

La classe EXT_CLASS peut contenir un certain nombre de méthodes qui utilisent le prototype ExtKnownStructMethod . Les méthodes peuvent être utilisées par le moteur pour mettre en forme des instances de certains types de structure pour la sortie.

Valeurs fournies

La classe EXT_CLASS peut contenir un certain nombre de méthodes qui utilisent le prototype ExtProvideValueMethod . Les méthodes peuvent être utilisées par le moteur pour évaluer certains pseudo-registres fournis par l’extension.