デバッガー拡張機能コマンドの使用
デバッガー拡張コマンドの使用は、デバッガー コマンドの使用と非常に似ています。 コマンドは [デバッガー コマンド] ウィンドウに入力され、このウィンドウに出力が生成されるか、ターゲット アプリケーションまたはターゲット コンピューターに変更が生成されます。
実際のデバッガー拡張コマンドは、デバッガーによって呼び出される DLL 内のエントリ ポイントです。
デバッガー拡張機能は、次の構文によって呼び出されます。
![module.]extension [arguments]
モジュール名の後に .dll ファイル名拡張子を付けることはできません。 モジュールにフルパスが含まれる場合、既定の文字列サイズ制限は 255 文字です。
モジュールは、まだ読み込まれていない場合には、LoadLibrary(モジュール) の呼び出しを使用してデバッガーに読み込まれます。 デバッガーは拡張ライブラリを読み込んだ後、GetProcAddress 関数を呼び出して、拡張モジュール内の拡張名を見つけます。 拡張機能名は大文字と小文字が区別され、拡張モジュールの .def ファイルに表示されているとおりに正確に入力する必要があります。 拡張アドレスが見つかった場合は、拡張機能が呼び出されます。
検索順序
モジュール名が指定されていない場合、デバッガーはこのエクスポート用に読み込まれた拡張モジュールを検索します。
既定の検索順序は次のとおりです。
すべてのオペレーティング システムおよび両方のモードで動作する拡張モジュール (Dbghelp.dll と winnext\ext.dll)。
すべてのモードで動作するが、オペレーティング システム固有の拡張モジュール。 Windows XP 以降のバージョンの Windows の場合、これは winxp\exts.dll です。
すべてのオペレーティング システムで動作するが、モード固有の拡張モジュール。 カーネル モードの場合、これは winext\kext.dll です。 ユーザー モードの場合、これは winext\uext.dll です。
オペレーティング システム固有でもありモード固有でもある拡張モジュール。 次の表は、このモジュールを指定したものです。
ユーザー モード | カーネル モード |
---|---|
winxp\ntsdexts.dll | winxp\kdexts.dll |
拡張モジュールは、アンロードされると検索チェーンから削除されます。 拡張モジュールは、読み込まれると検索順序の先頭に追加されます。 .setdll (既定の拡張 DLL の設定) コマンドを使用すると、任意のモジュールを検索チェーンの最上位に昇格させることができます。 このコマンドを繰り返し使用すると、検索チェーンを完全に制御できます。
.chain (既定の拡張 DLL の一覧表示) コマンドを使用すると、読み込まれたすべての拡張モジュールの一覧を現在の検索順序で表示できます。
読み込まれた拡張モジュールのいずれにも含まれていない拡張コマンドを実行しようとすると、「エクスポートが見つかりません」というエラー メッセージが表示されます。