Schreiben von EngExtCpp-Erweiterungen
Die EngExtCpp-Erweiterungsbibliothek kann jeden C++-Standardcode enthalten. Es kann auch die C++-Schnittstellen enthalten, die in den Headerdateien engextcpp.h und dbgeng.h angezeigt werden, zusätzlich zu den C-Funktionen, die in der Headerdatei wdbgexts.h angezeigt werden. Sowohl dbgeng.h als auch wdbgexts.h sind in engextcpp.h enthalten.
Eine vollständige Liste der Schnittstellen in dbgeng.h, die in einem Erweiterungsbefehl verwendet werden können, finden Sie unter Referenz zu Debugger-Engine.
Eine vollständige Liste der Funktionen in wdbgexts.h, die in einem Erweiterungsbefehl verwendet werden können, finden Sie unter WdbgExts Functions. Einige dieser Funktionen werden in 32-Bit- und 64-Bit-Versionen angezeigt. In der Regel enden die 64-Bit-Versionen auf "64", und die 32-Bit-Versionen haben keine numerische Endung , z. B. ReadIoSpace64 und ReadIoSpace. Beim Aufrufen einer wdbgexts.h-Funktion aus einer DbgEng-Erweiterung sollten Sie immer den Funktionsnamen verwenden, der auf "64" endet. Dies liegt daran, dass die Debugger-Engine unabhängig von der Zielplattform immer intern 64-Bit-Zeiger verwendet. Beim Einschließen von wdbgexts.h wählt engextcpp.h die 64-Bit-Version der API aus. Die globale ExtensionApis-Variable , die von der WDbgExts-API verwendet wird, wird beim Eintritt in eine EngExtCpp-Methode automatisch initialisiert und beim Beenden gelöscht.
Wenn eine EngExtCpp-Erweiterung mit DbgEng-Remoteschnittstellen verwendet wird, sind die WDbgExts-Schnittstellen nicht verfügbar, und die ExtensionApis-Struktur kann auf null gesetzt werden. Wenn von einer EngExtCpp-Erweiterung erwartet wird, dass sie in einer solchen Umgebung funktioniert, sollte die Verwendung der WDbgExts-API vermieden werden.
Hinweis Sie dürfen nicht versuchen, DbgHelp- oder ImageHlp-Routinen über eine Debuggererweiterung aufzurufen. Das Aufrufen dieser Routinen wird nicht unterstützt und kann zu einer Vielzahl von Problemen führen.