Compartir a través de


Creación de extensiones engExtCpp

Las bibliotecas de extensiones engExtCpp se compilan casi de la misma manera que las bibliotecas de extensiones de DbgEng. Para obtener más información, vea Building DbgEng Extensions.

El código de implementación de EngExtCpp (engextcpp.cpp) se usa en lugar de vincular con una biblioteca estática.

Dado que el marco de extensión EngExtCpp se basa en el marco de extensión DbgEng, un archivo DLL de extensión EngExtCpp debe exportar las mismas funciones que un archivo DLL de extensión DbgEng.

Se debe exportar cada extensión. Cuando se usa la macro EXT_COMMAND para definir una función de extensión, esta macro también crea una función de C con el mismo nombre que la extensión. Esta función se debe exportar desde el archivo DLL.

Las siguientes funciones se proporcionan mediante engextcpp se deben exportar desde el archivo DLL engExtCpp.

  • DepurarExtensionInitialize : para que se pueda llamar al método Initialize para inicializar la biblioteca.

  • DepurarExtensionUnitialize : para que se pueda llamar al método Uninitialize para anular la inicialización de la biblioteca.

  • KnownStructOutputEx : para que el motor pueda llamar a los métodos ExtKnownStructMethod para dar formato a estructuras conocidas para la salida.

  • DebugExtensionNotify : para que el motor pueda llamar a los métodos OnSessionActive, OnSessionInactive, OnSessionAccessible y OnSessionInaccessible para notificar a la biblioteca de extensiones los cambios en el estado de la sesión de depuración.

  • help : para que el marco de extensión EngExtCpp pueda proporcionar automáticamente una extensión !help .

Estas funciones se pueden exportar incluso si no se necesita la funcionalidad que proporcionan. Además, si no se exportan, se perderá la funcionalidad que proporcionan.

DebugExtensionInitialize debe exportarse para que el motor del depurador reconozca el archivo DLL como un archivo DLL de extensión dbgEng válido.