共用方式為


對應驅動程式檔案

取代驅動程式檔案可能很困難。 通常,您必須開機至 Microsoft Windows 安全性群組建、取代驅動程式二進位檔,然後再開機。

使用對應檔案存在替代方法。 您可以使用這個對應方法來取代任何核心模式驅動程式 (,包括顯示驅動程式) 、任何 Windows 子系統驅動程式或任何其他核心模式模組。 為了簡單起見,這些檔案在本主題中稱為 驅動程式 ,即使您可以將此方法用於任何核心模式模組也一樣。

每當 WinDbg 或 KD 附加為核心偵錯工具時,就可以使用此方法。 您也可以在開機驅動程式上使用這個方法,但比較困難。 如需如何搭配開機驅動程式使用此方法的詳細資訊,請參閱取代開機驅動程式。

若要使用驅動程式取代對應來取代驅動程式檔案,請執行下列動作:

  1. 建立 驅動程式取代對應檔。 此檔案是文字檔,列出目的電腦上的驅動程式,以及主機電腦上的取代驅動程式。 您可以取代任意數目的驅動程式。 例如,您可能會在主機電腦的 d:\Map_Files 目錄中建立名為 Mymap.ini 的檔案,其中包含下列資訊。

    map
    \Systemroot\system32\drivers\videoprt.sys
    \\myserver\myshare\new_drivers\videoprt.sys
    

    如需此檔案語法的詳細資訊,請參閱驅動程式取代對應檔案格式。

  2. 設定目的電腦的核心偵錯連線,並在主機電腦上啟動核心偵錯工具 (KD 或 WinDbg) 。 (您不需要實際中斷目的電腦。)

  3. 執行下列其中一項動作來載入驅動程式取代對應檔案:

    • 啟動核心偵錯工具之前,請先設定_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 命令) ,否則變更不會有任何作用 (。