驅動程式驗證器

驅動程式驗證程式會監視 Windows 核心模式驅動程式和圖形驅動程式,以偵測可能會損毀系統的不合法函式呼叫或動作。 驅動程式驗證程式可以將 Windows 驅動程式受限於各種錯誤和測試,以尋找不正確的行為。 您可以設定要執行的測試,這可讓您透過大量壓力負載或更簡化的測試來放置驅動程式。 您也可以同時在多個驅動程式或一個驅動程式上執行驅動程式驗證程式。

警告

  • 執行驅動程式驗證程式可能會導致電腦當機。
  • 您應該只在您用於測試和偵錯的電腦上執行驅動程式驗證器。
  • 您必須位於電腦上的 Administrators 群組中,才能使用驅動程式驗證程式。

我可以在哪裡下載驅動程式驗證程式?

您不需要下載驅動程式驗證程式,因為它隨附于 %WinDir%\system32\ 中大部分版本的 Windows,Verifier.exe。 (驅動程式驗證器未隨附于 Windows 10 S 中,因此我們建議改為在Windows 10上測試驅動程式行為。) 驅動程式驗證器不會個別散發為下載套件。

如需適用于Windows 10和舊版 Windows 驅動程式驗證器變更的相關資訊,請參閱驅動程式驗證器:新功能

使用驅動程式驗證器的時機

在整個驅動程式開發和測試中執行驅動程式驗證器。 更具體來說,請針對下列用途使用驅動程式驗證器:

  • 若要在開發週期早期找出問題,當問題較容易且成本較低時,請加以修正。

  • 針對測試失敗和電腦當機進行疑難排解和偵錯。

  • 若要在部署驅動程式以使用 WDK、Visual Studio 和Windows Hardware Lab Kit (Windows HLK) 或Windows 硬體認證套件的測試 (進行Windows 8.1) 時監視行為。 如需測試驅動程式的詳細資訊,請參閱 測試驅動程式

如何啟動驅動程式驗證器

您應該只在測試電腦或正在測試和偵錯的電腦上執行驅動程式驗證程式。 若要從驅動程式驗證器獲得最大好處,您應該使用核心偵錯工具並聯機到測試電腦。 如需偵錯工具的詳細資訊,請參閱 Windows (WinDbg、KD、CDB、NTSD) 偵錯工具

  1. 選取 [以系統管理員身分執行],然後輸入驗證程式以開啟驅動程式驗證程式管理員,以啟動命令提示字元視窗。

  2. 選取 [ 建立標準設定 ] (預設工作) ,然後選取 [ 下一步]。

    您也可以選擇 [建立自訂設定 ] 以從預先定義的設定中選取,或選取個別選項。 如需詳細資訊,請參閱 驅動程式驗證器選項和規則類別選取驅動程式驗證器選項

  3. [選取要驗證的驅動程式] 底下,選擇下表所述的其中一個選取配置。

    選項 建議使用
    自動選取未簽署的驅動程式

    適用于在執行不需要已簽署驅動程式之 Windows 版本的電腦上進行測試。

    自動選取針對舊版 Windows 建置的驅動程式

    適用于測試驅動程式與較新版本 Windows 的相容性。

    自動選取此電腦上安裝的所有驅動程式

    根據系統上測試的驅動程式數目,提供最大涵蓋範圍。 此選項適用于驅動程式可以與其他裝置或系統上的驅動程式互動的測試案例。

    此選項也可以耗盡特殊 區和某些資源追蹤可用的資源。 測試所有驅動程式也會對系統效能造成負面影響。

    從清單中選取驅動程式名稱

    在大部分情況下,您會想要指定要測試哪些驅動程式。

    選取裝置堆疊中的所有驅動程式可讓 增強型 I/O 驗證 選項追蹤物件並檢查合規性,因為偵測到錯誤時,會在堆疊中的每個驅動程式之間傳遞 I/O 要求封包 (IRP) ,如此可在偵測到錯誤時提供更詳細的詳細資料。

    如果您要執行可測量系統或驅動程式效能計量的測試案例,或是想要配置可用於偵測記憶體損毀或資源追蹤問題的最大資源數目 (,請選取單一驅動程式,例如死結或 mutex) 。 一次在一個驅動程式上使用 特殊集 區和 I/O 驗證 選項會更有效率。

  4. 如果您選擇 [從清單中選取驅動程式名稱],請選取 [ 下一步],然後選取一或多個特定的驅動程式。

  5. 選取 [完成],然後重新開機電腦。

注意

搭配 Windows 20150 版到 25126 使用驅動程式驗證程式時,如果您選取 ntoskrnl ,可能會收到不正確狀態錯誤。
若要避免此問題:取消選取 ntoskrnl 或升級至組建 25126 之後的 Windows 版本。

在命令提示字元中執行驅動程式驗證程式

您也可以在命令提示字元視窗中執行驅動程式驗證器,而不啟動驅動程式驗證器管理員。 例如,若要在名為 myDriver.sys的驅動程式上使用標準設定來執行驅動程式驗證程式,您可以使用下列命令:

verifier /standard /driver myDriver.sys

如需命令列選項的詳細資訊,請參閱 驅動程式驗證器命令語法

如何控制驅動程式驗證器

您可以使用驅動程式驗證器管理員或命令列來控制驅動程式驗證器。 若要啟動驅動程式驗證器管理員,請參閱本主題稍早 的如何啟動驅動程式驗證程式

針對下列每個動作,您可以使用驅動程式驗證器管理員或輸入命令列。

若要停止或重設驅動程式驗證程式

  1. [驅動程式驗證器管理員]中,選取 [ 刪除現有的設定],然後選取 [ 完成]。

    在命令提示字元中,輸入下列命令:

    verifier /reset
    
  2. 重新啟動電腦。

若要檢視驅動程式驗證器統計資料

[驅動程式驗證器管理員] 中,選取 [ 顯示目前已驗證驅動程式的相關資訊],然後選取 [ 下一步]。 繼續選取 [ 下一步 ] 會顯示其他資訊。

在命令提示字元中,輸入下列命令:

verifier /query

檢視驅動程式驗證程式設定

[驅動程式驗證器管理員]中,選取 [ 顯示現有的設定],然後選取 [ 下一步]。

在命令提示字元中,輸入下列命令:

verifier /querysettings

如何偵錯驅動程式驗證器違規

若要從驅動程式驗證器獲得最大好處,您應該使用核心偵錯工具,並將它連線到測試電腦。 如需 Windows 偵錯工具的概觀,請參閱 針對 Windows (WinDbg、KD、CDB、NTSD) 偵錯工具

如果 Driver Verifier 偵測到違規,它會產生錯誤檢查來停止電腦。 這是提供您最能偵錯問題的資訊。 當您的核心偵錯工具連線到執行驅動程式驗證程式的測試電腦,而驅動程式驗證程式偵測到違規時,Windows 會中斷偵錯工具,並顯示錯誤的簡短描述。

驅動程式驗證程式偵測到的所有違規都會導致錯誤檢查。 這通常是錯誤檢查0xC4。 如需詳細資訊,請參閱 偵錯錯誤檢查0xC4:DRIVER_VERIFIER_DETECTED_VIOLATION錯誤檢查0xC4:DRIVER_VERIFIER_DETECTED_VIOLATION

其他常見的錯誤檢查碼包括:

如需詳細資訊,請參閱 在啟用驅動程式驗證器時處理錯誤檢查

當您啟動新的偵錯會話時,請使用偵錯工具擴充命令 !analyze。 在核心模式中, !analyze 命令會顯示最新錯誤檢查的相關資訊。 若要顯示其他資訊,若要協助識別錯誤驅動程式,請在kd >提示字元中將 option -v新增至命令:

kd> !analyze -v

除了!analyze之外,您可以在kd >提示字元中輸入下列偵錯工具延伸模組,以檢視驅動程式驗證器特有的資訊:

  • !verifier 傾印擷取的驅動程式驗證器統計資料。 使用 !verifier -? 來顯示所有可用的選項。

    kd> !verifier
    
  • !deadlock 會顯示與驅動程式驗證器死結偵測功能所追蹤之鎖定或物件相關的資訊。 使用 !deadlock -? 來顯示所有可用的選項。

    kd> !deadlock
    
  • !iovirp [address] 會顯示與 I/O 驗證器所追蹤之 IRP 相關的資訊。 例如:

    kd> !iovirp 947cef68
    
  • 查閱違反 的 DDI 合規性檢查 規則。 (RuleID 一律是錯誤檢查的第一個引數。) DDI 合規性檢查的所有規則識別碼都是 nn 格式0x200nn

驅動程式驗證器選項

驅動程式驗證器命令語法

使用驅動程式驗證器

控制驅動程式驗證器

DDI 合規性檢查