Bibliotecas de extensão EngExtCpp
Uma biblioteca de extensões EngExtCpp é uma DLL que usa a estrutura de extensão EngExtCpp encontrada em EngExtCpp.h. Quando essa biblioteca é carregada pelo mecanismo do depurador, seus métodos e funções podem fornecer funcionalidade extra ou automação de tarefas ao executar a depuração do modo de usuário ou do modo kernel no Microsoft Windows.
A estrutura de extensão EngExtCpp é criada com base na estrutura de extensão DbgEng. Ele oferece a mesma API do mecanismo de depurador para interação com o mecanismo do depurador. mas também fornece recursos adicionais para tornar as tarefas comuns mais simples.
Se você executou uma instalação completa das Ferramentas de Depuração para Windows, uma extensão engExtCpp de exemplo chamada "extcpp" pode ser encontrada no subdk\samples\extcpp do diretório de instalação.
EXT_CLASS e ExtExtension
No núcleo de uma biblioteca de extensões EngExtCpp está uma única instância da classe EXT_CLASS . Uma biblioteca de extensões EngExtCpp fornecerá a implementação dessa classe, que contém todos os comandos e métodos de extensão para estruturas de formatação exportadas pela biblioteca.
EXT_CLASS é uma subclasse de ExtExtension. A única instância dessa classe é criada usando a macro EXT_DECLARE_GLOBALS que deve aparecer exatamente uma vez nos arquivos de origem da biblioteca de extensões.
Quando a biblioteca de extensões é carregada, o método Initialize da classe é chamado pelo mecanismo e o método Uninitialize é chamado antes de descarregar a classe. Além disso, os métodos OnSessionActive, OnSessionInactive, OnSessionAccessible e OnSessionInaccessible são chamados pelo mecanismo para notificar a biblioteca de extensão do estado da sessão de depuração.
Comandos de extensão
A classe EXT_CLASS pode conter vários métodos usados para executar comandos de extensão. Cada comando de extensão é declarado na classe EXT_CLASS usando a macro EXT_COMMAND_METHOD . A implementação de um comando é definida usando a macro EXT_COMMAND .
Estruturas conhecidas
A classe EXT_CLASS pode conter vários métodos que usam o protótipo ExtKnownStructMethod . Os métodos podem ser usados pelo mecanismo para formatar instâncias de determinados tipos de estrutura para saída.
Valores fornecidos
A classe EXT_CLASS pode conter vários métodos que usam o protótipo ExtProvideValueMethod . Os métodos podem ser usados pelo mecanismo para avaliar alguns pseudo-registros fornecidos pela extensão.