编写 EngExtCpp 扩展

EngExtCpp 扩展库可以包含任何标准 C++ 代码。 除了 wdbgexts.h 头文件中出现的 C 函数外,它还包括出现在 engextcpp.h 和 dbgeng.h 头文件中的 C++ 接口。 dbgeng.h 和 wdbgexts.h 均包含在 engextcpp.h 中。

有关 dbgeng.h 中可在扩展命令中使用的接口的完整列表,请参阅 调试器引擎参考

有关 wdbgexts.h 中可在扩展命令中使用的函数的完整列表,请参阅 WdbgExts 函数。 其中许多函数出现在 32 位版本和 64 位版本中。 通常,64 位版本以“64”结尾,32 位版本没有数字结尾,例如 ReadIoSpace64ReadIoSpace。 从 DbgEng 扩展调用 wdbgexts.h 函数时,应始终使用以“64”结尾的函数名称。 这是因为 调试器引擎 始终在内部使用 64 位指针,而不考虑目标平台。 包含 wdbgexts.h 时,engextcpp.h 选择 64 位版本的 API。 WDbgExts API 使用的 ExtensionApis 全局变量在进入 EngExtCpp 方法时自动初始化,并在退出时清除。

当 EngExtCpp 扩展与远程 DbgEng 接口一起使用时,WDbgExts 接口将不可用, 并且 ExtensionApis 结构可以归零。 如果 EngExtCpp 扩展预期在此类环境中正常运行,则应避免使用 WDbgExts API。

注意 不得尝试从任何调试器扩展调用任何 DbgHelp 或 ImageHlp 例程。 不支持调用这些例程,可能会导致各种问题。