Partilhar via


Criando extensões EngExtCpp

As bibliotecas de extensão EngExtCpp são criadas quase da mesma maneira que as bibliotecas de extensão DbgEng. Para obter mais informações, consulte Criando extensões DbgEng.

O código de implementação engExtCpp (engextcpp.cpp) é usado em vez de vincular a uma biblioteca estática.

Como a estrutura de extensão EngExtCpp é criada com base na estrutura de extensão DbgEng, uma DLL de extensão EngExtCpp deve exportar as mesmas funções que uma DLL de extensão DbgEng.

Cada extensão deve ser exportada. Quando você usa a macro EXT_COMMAND para definir uma função de extensão, essa macro também cria uma função C com o mesmo nome que a extensão. Essa função deve ser exportada da DLL.

As funções a seguir são fornecidas pelo engextcpp devem ser exportadas da DLL EngExtCpp.

  • DebugExtensionInitialize – para que o método Initialize possa ser chamado para inicializar a biblioteca.

  • DebugExtensionUnitialize – para que o método Uninitialize possa ser chamado para não inicializar a biblioteca.

  • KnownStructOutputEx – para que o mecanismo possa chamar os métodos ExtKnownStructMethod para formatar estruturas conhecidas para saída.

  • DebugExtensionNotify – para que o mecanismo possa chamar os métodos OnSessionActive, OnSessionInactive, OnSessionAccessible e OnSessionInaccessible para notificar a biblioteca de extensões de alterações no estado da sessão de depuração.

  • ajuda – para que a estrutura de extensão EngExtCpp possa fornecer automaticamente uma extensão !help .

Essas funções podem ser exportadas mesmo que a funcionalidade fornecida não seja necessária. Além disso, se eles não forem exportados, a funcionalidade fornecida será perdida.

DebugExtensionInitialize deve ser exportado para que o mecanismo de depurador reconheça a DLL como uma DLL de extensão DbgEng válida.