EngExtCpp 拡張機能の作成
EngExtCpp 拡張ライブラリには、任意の標準 C++ コードを含めることができます。 wdbgexts.h ヘッダー ファイルに表示される C 関数に加えて、engextcpp.h および dbgeng.h ヘッダー ファイルに表示される C++ インターフェイスを含めることもできます。 engextcpp.h から、dbgeng.h と wdbgexts.h の両方が含められています。
拡張コマンドで使用できる dbgeng.h のインターフェイスの詳細な一覧については、「デバッガー エンジン リファレンス」をご覧ください。
拡張コマンドで使用できる wdbgexts.h の関数の詳細な一覧については、「WdbgExts 関数」をご覧ください。 これらの関数の数字は、32 ビット バージョンと 64 ビット バージョンで表示されます。 通常、64 ビット バージョンは "64" で終わり、32 ビット バージョンは末尾に数字がありません (たとえば、ReadIoSpace64 と ReadIoSpace)。 DbgEng 拡張から wdbgexts.h 関数を呼び出す場合、必ず "64" で終わる関数名を使用する必要があります。 これは、デバッガー エンジンが、ターゲット プラットフォームに関係なく、必ず 64 ビット ポインターを内部的に使用するためです。 wdbgexts.h を含めるとき、engextcpp.h は API の 64 ビット バージョンを選択します。 WDbgExts API によって使用される ExtensionApis グローバル変数は、EngExtCpp メソッドへのエントリで自動的に初期化され、終了時にクリアされます。
リモート DbgEng インターフェイスで EngExtCpp 拡張を使用する場合、WDbgExts インターフェイスは使用できません。ExtensionApis 構造をゼロにすることができます。 EngExtCpp 拡張がこのような環境で機能することが予想される場合、WDbgExts API の使用を避ける必要があります。
注 デバッガー拡張から DbgHelp または ImageHlp ルーチンを呼び出そうとしないでください。 これらのルーチンの呼び出しはサポートされていないため、さまざまな問題が発生する可能性があります。