對應驅動程式檔案
取代驅動程式檔案可能很困難。 通常,您必須開機至 Microsoft Windows 安全性群組建、取代驅動程式二進位檔,然後再開機。
使用對應檔案存在替代方法。 您可以使用這個對應方法來取代任何核心模式驅動程式 (,包括顯示驅動程式) 、任何 Windows 子系統驅動程式或任何其他核心模式模組。 為了簡單起見,這些檔案在本主題中稱為 驅動程式 ,即使您可以將此方法用於任何核心模式模組也一樣。
每當 WinDbg 或 KD 附加為核心偵錯工具時,就可以使用此方法。 您也可以在開機驅動程式上使用這個方法,但比較困難。 如需如何搭配開機驅動程式使用此方法的詳細資訊,請參閱取代開機驅動程式。
若要使用驅動程式取代對應來取代驅動程式檔案,請執行下列動作:
建立 驅動程式取代對應檔。 此檔案是文字檔,列出目的電腦上的驅動程式,以及主機電腦上的取代驅動程式。 您可以取代任意數目的驅動程式。 例如,您可能會在主機電腦的 d:\Map_Files 目錄中建立名為 Mymap.ini 的檔案,其中包含下列資訊。
map \Systemroot\system32\drivers\videoprt.sys \\myserver\myshare\new_drivers\videoprt.sys
如需此檔案語法的詳細資訊,請參閱驅動程式取代對應檔案格式。
設定目的電腦的核心偵錯連線,並在主機電腦上啟動核心偵錯工具 (KD 或 WinDbg) 。 (您不需要實際中斷目的電腦。)
執行下列其中一項動作來載入驅動程式取代對應檔案:
啟動核心偵錯工具之前,請先設定_NT_KD_FILES 環境變數 。
D:\Debugging Tools for Windows> set _NT_KD_FILES=d:\Map_Files\mymap.ini D:\Debugging Tools for Windows> kd
啟動核心偵錯工具之後,請使用 .kdfiles (設定驅動程式取代對應) 命令。
D:\Debugging Tools for Windows> kd kd> .kdfiles d:\Map_Files\mymap.ini KD file associations loaded from 'd:\Map_Files\mymap.ini'
您也可以使用 .kdfiles 命令來顯示目前的驅動程式取代對應檔案,或刪除驅動程式取代對應。 如果您未使用此命令,對應會持續存在,直到您結束偵錯工具為止。
完成此程式之後,驅動程式更換對應就會生效。
每當目的電腦即將載入驅動程式時,它會查詢核心偵錯工具,以判斷此驅動程式是否已對應。 如果驅動程式已對應,則會透過核心連線傳送取代檔案,並透過舊驅動程式檔案複製。 然後載入新的驅動程式。
驅動程式取代對應檔案格式
驅動程式取代對應檔中的三行會指出每個驅動程式檔案取代。
第一行是由 「map」 一詞所組成。
第二行會指定目的電腦上舊驅動程式的路徑和檔案名。
第三行會指定新驅動程式的完整路徑。 此驅動程式可以位於主機電腦或其他伺服器上。
您可以任意次數重複這項資訊模式。
路徑和檔案名不區分大小寫,而實際的驅動程式檔案名可能不同。 您在第三行上指定的檔案會複製到目的電腦即將載入該驅動程式時,第二行所指定的檔案。
Kdfiles 會嘗試比對儲存在 Service Control Manager (SCM) 資料庫中的檔案名。 SCM 資料庫中的名稱與傳遞給 MmLoadSystemImage 的名稱相同。
在Windows 10和更新版本的偵錯工具中,驅動程式對應可動態比對驅動程式名稱,並判斷適當的路徑。 不需要指定完整路徑,而且副檔名是選擇性的。 您可以使用上述任何專案來比對 NT 檔案系統驅動程式。
- Ntfs
- NTFS
- ntfs.sys
- windows\system32\drivers\ntfs.sys
您可以使用上述任何專案來比對 NT 核心驅動程式。
- ntoskrnl
- NTOSKRNL
- ntoskrnl.sys
- windows\system32\drivers\ntoskrnl.sys
地圖檔案可以包含空白行,而且可以包含以數位記號開頭的批註行 (#) 。 不過,在檔案中出現 「map」 之後,下兩行必須是舊的驅動程式和新驅動程式。 空白行和批註行無法中斷三行對應區塊。
下列範例顯示驅動程式取代對應檔。
# Use the # for comments like this one
map
\Systemroot\system32\drivers\videoprt.sys
e:\MyNewDriver\binaries\videoprt.sys
map
\Systemroot\system32\mydriver.sys
\\myserver\myshare\new_drivers\mydriver0031.sys
# This is replacing a beep driver
map
\??\c:\windows\system32\beep.sys
\\myserver\myshare\new_drivers\new_beep.sys
驅動程式取代對應檔案必須是文字檔,但您可以使用任何檔案名和副檔名 (.ini、.txt、.map 等等) 。
其他附注
發生驅動程式替代時,核心偵錯工具中會出現訊息。
如果您在 WinDbg) 中使用 CTRL+D (或 WinDbg) 中的 CTRL+ALT+D (,您會看到取代要求的詳細資訊。 如果您不確定您列出的名稱是否符合 SCM 資料庫中的名稱,這項資訊會很有用。
您可以啟用 bcdedit bootdebug 選項,以檢視適用于取代核心、hal 或開機驅動程式的早期開機資訊。
bcdedit -bootdebug on
如需詳細資訊,請參閱 BCDEdit 選項參考。
如果核心偵錯工具結束時,就不會再進行驅動程式取代。 不過,已取代的任何驅動程式都不會還原成其舊的二進位檔,因為驅動程式檔案實際上會被覆寫。
此驅動程式取代功能會自動略過 WINDOWS 檔案保護 () 。
您不需要重新開機目的電腦。 無論驅動程式是否已重新開機,目的電腦載入驅動程式時,都會發生驅動程式取代。 當然,大部分驅動程式會在開機程式期間載入,因此在實際情況下,您應該在載入對應檔之後重新開機目的電腦。
如果定義_NT_KD_FILES變數,則會在啟動核心偵錯工具時讀取指定的驅動程式取代對應檔。 如果您發出 .kdfiles 命令,則會立即讀取指定的檔案。 此時,偵錯工具會確認檔案具有基本地圖/線條/線條格式。 但在替代發生之前,不會驗證實際的路徑和檔案名。
讀取對應檔之後,偵錯工具會儲存其內容。 如果您在此時間點之後變更此檔案,除非您重新發出 .kdfiles 命令) ,否則變更不會有任何作用 (。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應