.kdfiles (Set Driver Replacement Map)
Der Befehl ".kdfiles" liest eine Datei und verwendet den Inhalt als Treiberersetzungszuordnung.
.kdfiles MapFile
.kdfiles -m OldDriver NewDriver
.kdfiles -s SaveFile
.kdfiles -c
.kdfiles
Parameter
MapFile
Gibt die zu lesende Treiberersetzungszuordnungsdatei an.
-m
Fügt der aktuellen Zuordnungsliste eine Treiberersetzungszuordnung hinzu.
OldDriver
Gibt den Pfad und Dateinamen des vorherigen Treibers auf dem Zielcomputer an. Die Syntax für OldDriver entspricht der der ersten Zeile nach der Zuordnung in einer Treiberersetzungsdatei. Weitere Informationen zu dieser Syntax finden Sie unter Zuordnung von Treiberdateien.
NewDriver
Gibt den Pfad und Dateinamen des neuen Treibers an. Dieser Treiber kann sich auf dem Hostcomputer oder an einem anderen Netzwerkspeicherort befinden. Die Syntax für NewDriver entspricht der der zweiten Zeile nach der Zuordnung in einer Treiberersetzungsdatei. Weitere Informationen zu dieser Syntax finden Sie unter Zuordnung von Treiberdateien.
-s
Erstellt eine Datei und schreibt die aktuellen Treiberersetzungszuordnungen in diese Datei.
SaveFile
Gibt den Namen der zu erstellenden Datei an.
-c
Löscht die vorhandene Treiberersetzungszuordnung. (Mit dieser Option wird die Zuordnungsdatei selbst nicht geändert. Stattdessen löscht diese Option die aktuellen Karteneinstellungen des Debuggers.)
Environment
Modi |
Nur Kernelmodus |
Targets |
Nur Livedebugging |
Plattformen |
x86-based processors |
Zusätzliche Informationen
Weitere Informationen und Beispiele für treiberersetzung und den Austausch anderer Kernelmodusmodule, eine Beschreibung des Formats für Treiberersatzzuordnungsdateien und Einschränkungen für die Verwendung dieses Features finden Sie unter Mapping Driver Files.
Hinweise
Wenn Sie den Befehl ".kdfiles" ohne Parameter verwenden, zeigt der Debugger den Pfad und den Namen der aktuellen Treiberersetzungszuordnungsdatei und den aktuellen Satz von Ersetzungszuordnungen an.
Wenn Sie diesen Befehl ausführen, wird die angegebene MapFile-Dateigelesen. Wenn die Datei nicht gefunden wird oder wenn sie keinen Text im richtigen Format enthält, zeigt der Debugger eine Meldung an, die besagt: "Dateizuordnungen können nicht geladen werden".
Wenn sich die angegebene Datei im richtigen Treiberersetzungszuordnungsdateiformat befindet, lädt der Debugger den Inhalt der Datei und verwendet sie als Treiberersetzungszuordnung. Diese Zuordnung bleibt erhalten, bis Sie den Debugger beenden oder bis Sie einen anderen KDfiles-Befehl ausgeben.
Nachdem die Datei gelesen wurde, wird die Treiberersetzungszuordnung von nachfolgenden Änderungen an der Datei nicht beeinflusst (es sei denn, diese Änderungen folgen einem anderen KDfiles-Befehl ).
Ersetzung der Benutzermodusdatei
Der Benutzermodusdateiersetzung wurde in Version 2004 von Windows hinzugefügt. Mit dieser Unterstützung können die folgenden Benutzermodusdateien durch KD-Dateien ersetzt werden.
- Benutzermodus-DLLs (einschließlich NTDLL und KnownDlls)
- Benutzermodus-EXEs, die ein Hauptprozessimage für CreateProcess sind
Um die Unterstützung für den Benutzermodus KDfiles zu verwenden, müssen Sie zuerst das Laden des Kernelsymbols mithilfe des !gflag +ksl
Debuggerbefehls aktivieren oder die globalen ksl-Flags in der Registrierung konfigurieren. Weitere Informationen zu gflag finden Sie unter !gflag.
Die folgenden Beispiele veranschaulichen die allgemeine Verwendung.
.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
Der Benutzermodus .kdfiles ignoriert alle Fehler, die mit einer Datei übereinstimmen, und zeigt keine Fehlermeldung an, wenn ein Fehler auftritt.
Achten Sie darauf, die KDfiles-Pfade für KD-Dateien im Benutzermodus entsprechend zu qualifizieren. Es ist eine schlechte Idee, einfach ntdll.dll (anstelle von system32\ntdll.dll) abzugleichen, da andernfalls die Wow64 NTDLL durch das systemeigene ersetzt wird. Ähnliche Situationen können mit anderen mehrdeutigen Teilzeichenfolgenübereinstimmungen auftreten.
Nach Build 20172 versucht der Mechanismus für den Benutzermodus KDfiles, Dateien aus dem Debugger abzurufen, bis ein Versuch fehlschlägt; anschließend wird der Dateiname, der nicht abgerufen werden konnte, für die Startsitzung nicht erneut versucht, ohne dass der Debugger manuell eingreifen muss, um den Zielsystemstatus zu ändern. Bei früheren Builds versucht der Benutzermodus-.kdfiles-Mechanismus einen Versuch (ob erfolgreich oder nicht), einen bestimmten Dateinamen pro Startsitzung abzurufen. Diese Richtlinien verringern den Aufwand für die Kommunikation mit dem Debugger für Dateien, die sich nicht in der Liste der kdfiles befinden oder für den Austausch nicht zugänglich sind, z. B. aufgrund von Freigabeverletzungen von Prozessen, die möglicherweise bereits eine bestimmte Datei geladen haben. Aufgrund dieses Verhaltens ist es im Allgemeinen ratsam, alle Dateien so zu konfigurieren, dass sie in der KDfiles-Liste vorab abgerufen werden, bevor zuerst darauf verwiesen wird.
Beachten Sie Einschränkungen, dass sie nicht bereits in der Verwendung von Datenträgerdateien usw. ersetzen können. Da viele System-DLLs nicht einfach hot swappable sind, nachdem sie anfangs geladen wurden, legen Sie die Gflags +ksl-Option vor und verwenden KDfiles, um alle Binärdateien im Benutzermodus direkt beim Start zu ersetzen.
Weitere Informationen zum Aktivieren des Startdebuggings finden Sie unter BCDEdit /bootdebug.
Die Verwendung des KD-Transport-KDNET mit hoher Geschwindigkeit/geringer Latenz wird empfohlen, um die Auswirkungen auf die Systemleistung zu minimieren.
Anforderungen
Version |
Unterstützt in Windows XP und höheren Versionen des Windows-Betriebssystems. |