生成 EngExtCpp 扩展

EngExtCpp 扩展库的生成方式与 DbgEng 扩展库几乎相同。 有关详细信息,请参阅生成 DbgEng 扩展

使用 EngExtCpp 实现代码 (engextcpp.cpp) ,而不是与静态库链接。

由于 EngExtCpp 扩展框架是基于 DbgEng 扩展框架生成的,因此 EngExtCpp 扩展 DLL 应导出与 DbgEng 扩展 DLL 相同的函数。

每个扩展都应该导出。 使用 EXT_COMMAND 宏定义扩展函数时,此宏还会创建与扩展名称相同的 C 函数。 此函数应从 DLL 导出。

以下由 engextcpp 提供的函数应从 EngExtCpp DLL 中导出。

  • DebugExtensionInitialize -- 这样就可以调用 Initialize 方法来初始化库。

  • DebugExtensionUnitialize -- 这样就可以调用 Uninitialize 方法来取消初始化库。

  • KnownStructOutputEx -- 这样引擎就可以调用 ExtKnownStructMethod 方法来格式化已知的输出结构。

  • DebugExtensionNotify -- 这样引擎就可以调用 OnSessionActiveOnSessionInactiveOnSessionAccessibleOnSessionInaccessible 方法,以通知扩展库对调试会话状态的更改。

  • help -- 这样 EngExtCpp 扩展框架就可以自动提供 !help 扩展。

即使不需要这些函数提供的功能,也可以导出这些函数。 此外,如果不导出函数,则函数提供的功能将丢失。

必须导出 DebugExtensionInitialize,调试器引擎才能将 DLL 识别为有效的 DbgEng 扩展 DLL。