Share via


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

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

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

パラメーター

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

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

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

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

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

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

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

環境

モード

カーネルモードのみ

Targets

ライブデバッグのみ

プラットフォーム

x86 ベースのプロセッサ

追加情報

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

解説

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

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

指定されたファイルが正しいドライバー置換マップ ファイル形式である場合、デバッガーはファイルの内容をロードし、ドライバー置換マップとして使用します。 このマップは、デバッガーを終了するか、別の .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 オペレーティング システムでサポートされています。