Написание кода расширения DbgEng
Команды расширения DbgEng могут включать любой стандартный код C++. Они также могут включать интерфейсы C++, которые отображаются в файле заголовка dbgeng.h, в дополнение к функциям C, которые отображаются в файле заголовка wdbgexts.h.
Если вы планируете использовать функции из wdbgexts.h, необходимо определить KDEXT_64BIT перед включением wdbgexts.h. Пример:
#define KDEXT_64BIT
#include wdbgexts.h
#include dbgeng.h
Полный список интерфейсов в dbgeng.h, которые можно использовать в команде расширения, см. в справочнике по обработчику отладчика.
Полный список функций в wdbgexts.h, которые можно использовать в команде расширения, см. в разделе Функции WdbgExts. Ряд этих функций отображается в 32-разрядных и 64-разрядных версиях. Как правило, 64-разрядные версии заканчиваются на "64", а 32-разрядные версии не имеют числового окончания, например ReadIoSpace64 и ReadIoSpace. При вызове функции wdbgexts.h из расширения DbgEng всегда следует использовать имя функции, заканчивающееся на "64". Это связано с тем, что подсистема отладчика всегда использует 64-разрядные указатели внутри системы, независимо от целевой платформы.
Если вы включили wdbgexts.h в расширение DbgEng, необходимо вызвать Метод GetWindbgExtensionApis64 во время инициализации библиотеки DLL расширения (см. Раздел DebugExtensionInitialize).
Примечание Не следует пытаться вызывать подпрограммы DbgHelp или ImageHlp из любого расширения отладчика. Вызов этих процедур не поддерживается и может привести к различным проблемам.