EngExtCpp 扩展库

EngExtCpp 扩展库是一个 DLL,它使用 EngExtCpp.h 中的 EngExtCpp 扩展框架。 当调试器引擎加载此库时,其方法和函数可以在 Microsoft Windows 上执行用户模式或内核模式调试时提供额外的功能或任务自动化。

EngExtCpp 扩展框架构建在 DbgEng 扩展框架之上。 它提供用于与调试器引擎交互的相同调试器引擎 API。 但它还提供其他功能,使常见任务更简单。

如果执行了 Windows 调试工具的完整安装,则可以在安装目录的 sdk\samples\extcpp 子目录中找到名为“extcpp”的示例 EngExtCpp 扩展。

EXT_CLASS 和 ExtExtension

EngExtCpp 扩展库的核心是 EXT_CLASS 类的单个实例。 EngExtCpp 扩展库将提供此类的实现,该类包含库导出的格式设置结构的所有扩展命令和方法。

EXT_CLASS是 ExtExtension 的子类。 此类的单个实例是使用 EXT_DECLARE_GLOBALS 宏创建的,该宏必须在扩展库的源文件中恰好出现一次。

加载扩展库时,引擎会调用 类的 Initialize 方法,在卸载类之前调用 Uninitialize 方法。 此外,引擎调用 OnSessionActiveOnSessionInactiveOnSessionAccessibleOnSessionInaccessible 方法来通知扩展库调试会话的状态。

扩展命令

EXT_CLASS 类可以包含许多用于执行扩展命令的方法。 使用 EXT_COMMAND_METHOD 宏在 EXT_CLASS 类中声明每个扩展命令。 命令的实现是使用 EXT_COMMAND 宏定义的。

已知结构

EXT_CLASS 类可以包含许多使用 ExtKnownStructMethod 原型的方法。 引擎可以使用这些方法来设置某些结构类型的实例的格式以供输出。

提供的值

EXT_CLASS 类可以包含许多使用 ExtProvideValueMethod 原型的方法。 引擎可以使用这些方法来评估扩展提供的一些伪寄存器。