Compartilhar via


Bibliotecas de extensão EngExtCpp

Uma biblioteca de extensões EngExtCpp é uma DLL que usa a estrutura de extensão EngExtCpp encontrada no EngExtCpp.h. Quando essa biblioteca é carregada pelo motor de depuração, seus métodos e funções podem fornecer funcionalidade extra ou automação de tarefas ao executar a depuração no modo de usuário ou no modo núcleo no Windows da Microsoft.

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 de 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" poderá ser encontrada no subdk\samples\extcpp subdiretório 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ão 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ão.

Quando a biblioteca de extensão é 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.