Partilhar via


Escrevendo extensões EngExtCpp

A biblioteca de extensão EngExtCpp pode incluir qualquer código C++ padrão. Ele também pode incluir as interfaces C++ que aparecem nos arquivos de cabeçalho engextcpp.h e dbgeng.h, além das funções C que aparecem no arquivo de cabeçalho wdbgexts.h. Tanto dbgeng.h quanto wdbgexts.h estão incluídos no engextcpp.h.

Para obter uma lista completa de interfaces em dbgeng.h que podem ser usadas num comando de extensão, consulte Referência do Mecanismo de Depurador.

Para obter uma lista completa de funções em wdbgexts.h que podem ser usadas em um comando de extensão, consulte Funções WdbgExts. Algumas dessas funções aparecem em versões de 32 bits e versões de 64 bits. Normalmente, as versões de 64 bits terminam em "64" e as versões de 32 bits não têm terminação numérica -- por exemplo, ReadIoSpace64 e ReadIoSpace. Ao chamar uma função wdbgexts.h de uma extensão DbgEng, você sempre deve usar o nome da função que termina em "64". Isso ocorre porque o mecanismo de depurador sempre usa ponteiros de 64 bits internamente, independentemente da plataforma de destino. Ao incluir wdbgexts.h, engextcpp.h seleciona a versão de 64 bits da API. A variável global ExtensionApis usada pela API WDbgExts é inicializada automaticamente na entrada de um método EngExtCpp e limpa na saída.

Quando uma extensão EngExtCpp é usada com interfaces DbgEng remotas, as interfaces WDbgExts não estarão disponíveis e a estrutura ExtensionApis pode ser zerada. Se se espera que uma extensão EngExtCpp funcione em tal ambiente, ela deve evitar o uso da API WDbgExts.

Observação Você não deve tentar chamar nenhuma rotina DbgHelp ou ImageHlp de qualquer extensão do depurador. Chamar essas rotinas não é suportado e pode causar uma variedade de problemas.