.kdfiles (ドライバー置換マップの設定)

.kdfiles コマンドはファイルを読み取り、その内容をドライバー置換マップとして使用します。

.kdfiles MapFile
.kdfiles -m OldDriver NewDriver
.kdfiles -s SaveFile
.kdfiles -c
.kdfiles

パラメーター

MapFile
読み取るドライバー置換マップ ファイルを指定します。

-m
ドライバー置換の関連付けを現在の関連付けリストに追加します。

OldDriver
ターゲット コンピューター上の以前のドライバーのパスとファイル名を指定します。 の構文 オールドドライバー 後の最初の行と同じです 地図 ドライバー置換ファイル内。 この構文の詳細については、「 ドライバー ファイルのマッピング.

NewDriver
新しいドライバーのパスとファイル名を指定します。 このドライバーは、ホスト コンピューター上または他のネットワーク上の場所に存在できます。 の構文 ニュードライバー 後の2行目と同じです地図 ドライバー置換ファイル内。 この構文の詳細については、「 ドライバー ファイルのマッピング.

-s
ファイルを作成し、現在のドライバー置換の関連付けをそのファイルに書き込みます。

SaveFile
作成するファイルの名前を指定します。

-c
既存のドライバー置換マップを削除します。 (このオプションはマップ ファイル自体を変更しません。代わりに、このオプションはデバッガーの現在のマップ設定をクリアします。)

Environment

モード

カーネル モードのみ

Targets

ライブデバッグのみ

プラットフォーム

x86 ベースのプロセッサ

追加情報

ドライバー置換および他のカーネル モード モジュールの置換の詳細と例、ドライバー置換マップ ファイルの形式の説明、およびこの機能を使用する際の制限については、次を参照してください ドライバー ファイルのマッピング.

解説

を使用する場合は、 .kdfiles コマンドをパラメーターなしで実行すると、デバッガーは現在のドライバー置換マップ ファイルのパスと名前、および現在の置換関連付けのセットを表示します。

このコマンドを実行すると、指定された マップファイルファイルが読み取られます。 ファイルが見つからない場合、またはファイルに適切な形式のテキストが含まれていない場合、デバッガーは「ファイルの関連付けを読み込めません」というメッセージを表示します。

指定されたファイルが正しいドライバー置換マップ ファイル形式である場合、デバッガーはファイルの内容をロードし、ドライバー置換マップとして使用します。 このマップは、デバッガを終了するか、別のコマンドを発行するまで残ります。 .kdfiles 指示。

ファイルが読み取られた後、ドライバー置換マップは、ファイルに対する後続の変更の影響を受けません (これらの変更の後に別の変更が行われない限り) .kdfiles 指示)。

ユーザーモードファイルの置換

ユーザー モード ファイル置換は、Windows のバージョン 2004 で追加されました。 このサポートにより、次のユーザー モード ファイルを .kdfile に置き換えることができます。

  • ユーザー モード DLL (NTDLL および KnownDll も含む)
  • CreateProcess のメイン プロセス イメージであるユーザー モード EXE

ユーザー モードの .kdfiles サポートを使用するには、まず、 !gflag +ksl デバッガ コマンドを使用するか、レジストリで ksl グローバル フラグを設定します。 gflag の詳細については、次を参照してください。 !gflag.

次の例は、一般的な使用法を示しています。

.kdfiles -m system32\userdll C:\myfiles\my_native_userdll.dll
.kdfiles -m system32\userdll \\server\share\my_native_userdll.dll
.kdfiles -m syswow64\ntdll.dll \\server\share\my_x86_wow64_ntdll.dll
.kdfiles -m system32\userbase.dll \\server\share\my_native_userbase.dll

ユーザー モード .kdfiles は、ファイルの一致の失敗を無視し、失敗が発生してもエラー メッセージを表示しません。

ユーザー モードの .kdfile の .kdfile パスを適切に修飾するように注意してください。 (system32\ntdll.dll ではなく) ntdll.dll だけを一致させるのは悪い考えです。そうしないと、Wow64 NTDLL がネイティブのものに置き換えられてしまいます。 他のあいまいな部分文字列の一致でも同様の状況が発生する可能性があります。

ビルド 20172 以降、ユーザー モードの .kdfiles メカニズムは、1 回の試行が失敗するまでデバッガーからファイルをプルしようとします。その後、デバッガが手動で介入してターゲット システムの状態を変更することなく、取得に失敗したファイル名がブート セッションで再試行されることはありません。 以前のビルドでは、ユーザー モードの .kdfiles メカニズムは、ブート セッションごとに指定されたファイル名の取得を (成功したかどうかに関係なく) 1 回試行します。 これらのポリシーは、kdfiles リストにないファイル、または特定のファイルをすでにロードしている可能性のあるプロセスからの共有違反などにより置換のためにアクセスできないファイルについて、デバッガと通信するオーバーヘッドを削減します。 この動作のため、通常は、ファイルが最初に参照される前に、事前に .kdfiles リストを取り込むようにファイルを構成することをお勧めします。

すでに使用されているディスク ファイルを置き換えることができないなどの制限に注意してください。多くのシステム DLL は、最初にロードされた後は簡単にホット スワップ可能ではないため、gflags +ksl オプションをプリセットし、.kdfiles を使用して任意のファイルを置き換えます。ユーザーモードバイナリを起動時に直接実行します。

ブート デバッグの有効化の詳細については、次を参照してください。 BCDEdit /bootdebug.

システムのパフォーマンスへの影響を最小限に抑えるために、高速/低遅延の KD トランスポート KDNET の使用をお勧めします。

要件

バージョン

Windows XP 以降のバージョンの Windows オペレーティング システムでサポートされています。