Scrittura di estensioni EngExtCpp

La libreria di estensioni EngExtCpp può includere qualsiasi codice C++ standard. Può anche includere le interfacce C++ visualizzate nei file di intestazione engextcpp.h e dbgeng.h, oltre alle funzioni C visualizzate nel file di intestazione wdbgexts.h. Sia dbgeng.h che wdbgexts.h sono inclusi in engextcpp.h.

Per un elenco completo delle interfacce in dbgeng.h che possono essere usate in un comando di estensione, vedere Informazioni di riferimento sul motore di debugger.

Per un elenco completo delle funzioni in wdbgexts.h che può essere usato in un comando di estensione, vedere Funzioni WdbgExts. Alcune di queste funzioni vengono visualizzate nelle versioni a 32 bit e nelle versioni a 64 bit. In genere, le versioni a 64 bit terminano con "64" e le versioni a 32 bit non hanno terminazioni numeriche, ad esempio ReadIoSpace64 e ReadIoSpace. Quando si chiama una funzione wdbgexts.h da un'estensione DbgEng, è consigliabile usare sempre il nome della funzione che termina con "64". Questo perché il motore del debugger usa sempre puntatori a 64 bit internamente, indipendentemente dalla piattaforma di destinazione. Quando si include wdbgexts.h, engextcpp.h seleziona la versione a 64 bit dell'API. La variabile globale ExtensionApis usata dall'API WDbgExts viene inizializzata automaticamente all'ingresso in un metodo EngExtCpp e cancellata all'uscita.

Quando viene usata un'estensione EngExtCpp con interfacce DbgEng remote, le interfacce WDbgExts non saranno disponibili e la struttura ExtensionApis può essere zero. Se si prevede che un'estensione EngExtCpp funzioni in un ambiente di questo tipo, è consigliabile evitare di usare l'API WDbgExts.

Nota Non è necessario tentare di chiamare routine DbgHelp o ImageHlp da qualsiasi estensione del debugger. La chiamata a queste routine non è supportata e può causare diversi problemi.