Библиотеки расширений EngExtCpp
Библиотека расширений EngExtCpp — это библиотека DLL, использующая платформу расширений EngExtCpp в EngExtCpp.h. Когда эта библиотека загружается подсистемой отладчика, ее методы и функции могут обеспечить дополнительные функциональные возможности или автоматизацию задач при выполнении отладки в пользовательском режиме или режиме ядра в Microsoft Windows.
Платформа расширения EngExtCpp основана на платформе расширений DbgEng. Он предлагает тот же API обработчика отладчика для взаимодействия с подсистемой отладчика. но он также предоставляет дополнительные функции для упрощения распространенных задач.
Если вы выполнили полную установку средств отладки для Windows, пример расширения EngExtCpp с именем extcpp можно найти в подкаталоге sdk\samples\extcpp каталога установки.
EXT_CLASS и extExtension
В основе библиотеки расширений EngExtCpp лежит один экземпляр класса EXT_CLASS . Библиотека расширений EngExtCpp предоставит реализацию этого класса, который содержит все команды расширения и методы для форматирования структур, экспортируемых библиотекой.
EXT_CLASS является подклассом ExtExtension. Единственный экземпляр этого класса создается с помощью макроса EXT_DECLARE_GLOBALS , который должен отображаться ровно один раз в исходных файлах для библиотеки расширений.
При загрузке библиотеки расширений подсистема вызывает метод Initialize класса, а перед выгрузкой класса вызывается метод Uninitialize . Кроме того, подсистема вызывает методы OnSessionActive, OnSessionInactive, OnSessionAccessible и OnSessionInaccessible для уведомления библиотеки расширений о состоянии сеанса отладки.
Команды расширения
Класс EXT_CLASS может содержать ряд методов, используемых для выполнения команд расширения. Каждая команда расширения объявляется в классе EXT_CLASS с помощью макроса EXT_COMMAND_METHOD . Реализация команды определяется с помощью макроса EXT_COMMAND .
Известные структуры
Класс EXT_CLASS может содержать ряд методов, использующих прототип ExtKnownStructMethod . Методы могут использоваться подсистемой для форматирования экземпляров определенных типов структур для вывода.
Предоставленные значения
Класс EXT_CLASS может содержать ряд методов, использующих прототип ExtProvideValueMethod . Методы могут использоваться подсистемой для оценки некоторых псевдорегистров, предоставляемых расширением.