生成 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 -- 这样引擎就可以调用 OnSessionActive、OnSessionInactive、OnSessionAccessible 和 OnSessionInaccessible 方法,以通知扩展库对调试会话状态的更改。
help -- 这样 EngExtCpp 扩展框架就可以自动提供 !help 扩展。
即使不需要这些函数提供的功能,也可以导出这些函数。 此外,如果不导出函数,则函数提供的功能将丢失。
必须导出 DebugExtensionInitialize,调试器引擎才能将 DLL 识别为有效的 DbgEng 扩展 DLL。