Поделиться через


Создание расширений EngExtCpp

Библиотеки расширений EngExtCpp создаются почти так же, как библиотеки расширений DbgEng. Дополнительные сведения см. в разделе Создание расширений DbgEng.

Вместо связывания со статической библиотекой используется код реализации EngExtCpp (engextcpp.cpp).

Так как платформа расширений EngExtCpp основана на платформе расширений DbgEng, библиотека DLL расширения EngExtCpp должна экспортировать те же функции, что и библиотека DLL расширения DbgEng.

Каждое расширение должно быть экспортировано. При использовании макроса EXT_COMMAND для определения функции расширения этот макрос также создает функцию C с тем же именем, что и расширение. Эта функция должна быть экспортирована из библиотеки DLL.

Следующие функции, предоставляемые engextcpp, должны быть экспортированы из библиотеки DLL EngExtCpp.

  • DebugExtensionInitialize — позволяет вызвать метод Initialize для инициализации библиотеки.

  • DebugExtensionUnitialize — позволяет вызвать метод Uninitialize для неинициализации библиотеки.

  • KnownStructOutputEx — чтобы обработчик мог вызывать методы ExtKnownStructMethod для форматирования известных структур для вывода.

  • DebugExtensionNotify — это позволяет обработчику вызывать методы OnSessionActive, OnSessionInactive, OnSessionAccessible и OnSessionInaccessible для уведомления библиотеки расширений об изменениях состояния сеанса отладки.

  • help , чтобы платформа расширения EngExtCpp автоматически предоставляла расширение !help .

Эти функции можно экспортировать, даже если предоставляемые ими функции не требуются. Кроме того, если они не экспортируются, предоставляемые ими функциональные возможности будут потеряны.

ОтладкаExtensionInitialize должна быть экспортирована , чтобы обработчик отладчика распознал библиотеку DLL как допустимую библиотеку DLL расширения DbgEng.