Bibliotecas de extensiones engExtCpp
Una biblioteca de extensiones EngExtCpp es un archivo DLL que usa el marco de extensión EngExtCpp que se encuentra en EngExtCpp.h. Cuando el motor del depurador carga esta biblioteca, sus métodos y funciones pueden proporcionar funcionalidad adicional o automatización de tareas al realizar la depuración en modo de usuario o en modo kernel en Microsoft Windows.
El marco de extensión EngExtCpp se basa en el marco de extensión dbgEng. Ofrece la misma API del motor de depurador para la interacción con el motor del depurador. pero también proporciona características adicionales para simplificar las tareas comunes.
Si ha realizado una instalación completa de herramientas de depuración para Windows, se puede encontrar una extensión engExtCpp de ejemplo denominada "extcpp" en el subdirectorio sdk\samples\extcpp del directorio de instalación.
EXT_CLASS y ExtExtension
En el núcleo de una biblioteca de extensiones EngExtCpp es una única instancia de la clase EXT_CLASS . Una biblioteca de extensiones EngExtCpp proporcionará la implementación de esta clase, que contiene todos los comandos y métodos de extensión para dar formato a estructuras exportadas por la biblioteca.
EXT_CLASS es una subclase de ExtExtension. La única instancia de esta clase se crea con la macro EXT_DECLARE_GLOBALS que debe aparecer exactamente una vez en los archivos de origen de la biblioteca de extensiones.
Cuando se carga la biblioteca de extensiones, el motor llama al método Initialize de la clase y se llama al método Uninitialize antes de descargar la clase. Además, el motor llama a los métodos OnSessionActive, OnSessionInactive, OnSessionAccessible y OnSessionInaccessible para notificar a la biblioteca de extensiones el estado de la sesión de depuración.
Comandos de extensión
La clase EXT_CLASS puede contener varios métodos que se usan para ejecutar comandos de extensión. Cada comando de extensión se declara en la clase EXT_CLASS mediante la macro EXT_COMMAND_METHOD . La implementación de un comando se define mediante la macro EXT_COMMAND .
Estructuras conocidas
La clase EXT_CLASS puede contener varios métodos que usan el prototipo ExtKnownStructMethod . El motor puede usar los métodos para dar formato a instancias de determinados tipos de estructura para la salida.
Valores proporcionados
La clase EXT_CLASS puede contener varios métodos que usan el prototipo ExtProvideValueMethod . El motor puede usar los métodos para evaluar algunos pseudo-registros proporcionados por la extensión.