Partilhar via


Escrevendo extensões EngExtCpp

A biblioteca de extensões 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. Dbgeng.h e wdbgexts.h estão incluídos em engextcpp.h.

Para obter uma lista completa de interfaces em dbgeng.h que podem ser usadas em um 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 WdbgExts Functions. Várias 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 um final numérico , 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 desmarcada 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 poderá ser zerada. Se espera-se que uma extensão EngExtCpp funcione nesse ambiente, ela deve evitar o uso da API WDbgExts.

Nota Você não deve tentar chamar nenhuma rotina DbgHelp ou ImageHlp de qualquer extensão do depurador. Não há suporte para chamar essas rotinas e pode causar uma variedade de problemas.