编写 DbgEng 扩展代码

DbgEng 扩展 命令可以包含任何标准 C++ 代码。 除了 wdbgexts.h 头文件中出现的 C 函数外,它们还可以包括 dbgeng.h 头文件中出现的 C++ 接口。

如果打算使用 wdbgexts.h 中的函数,则需要在包含 wdbgexts.h 之前定义KDEXT_64BIT。 例如:

#define KDEXT_64BIT
#include wdbgexts.h
#include dbgeng.h

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

有关 wdbgexts.h 中可在扩展命令中使用的函数的完整列表,请参阅 WdbgExts 函数。 其中许多函数出现在 32 位版本和 64 位版本中。 通常,64 位版本以“64”结尾,32 位版本没有数字结尾,例如 ReadIoSpace64ReadIoSpace。 从 DbgEng 扩展调用 wdbgexts.h 函数时,应始终使用以“64”结尾的函数名称。 这是因为 调试器引擎 始终在内部使用 64 位指针,而不考虑目标平台。

如果在 DbgEng 扩展中包含 wdbgexts.h,则应在扩展 DLL 初始化期间调用 GetWindbgExtensionApis64 (请参阅 DebugExtensionInitialize) 。

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