此功能僅適用於 Windows XP 和更高版本的 Windows 作業系統。
在 Windows 7 和更新版本的 Windows 作業系統中,當您選取 [I/O 驗證] 時,會自動啟用增強型 I/O 驗證。 無法或不需要將其選取為個別選項。
啟用增強型 I/O 驗證時,驅動程式驗證器會監視數個 I/O 管理員常式的呼叫,並執行 PnP IRP、電源 IRP 和 WMI IRP 的壓力測試。
在 Windows Vista 和 Windows XP 中,增強型 I/O 驗證會獨立於 I/O 驗證啟用,但選取這兩個選項可提供驅動程式中 I/O 介面方法的完整測試。
增強型 I/O 驗證的特點
驅動程式驗證器會在您啟用增強型 I/O 驗證時新增下列檢查。
監視所有 IRP,以確保驅動程式僅在且只有在呼叫 IoMarkIrpPending 時傳回 STATUS_PENDING。
監視 IoDeleteDevice 的使用,以確認驅動程式不會多次刪除相同的裝置,並偵測裝置物件的不當分離和刪除。
確認驅動程式是否正確地撤銷所有 IoSkipCurrentIrpStackLocation 呼叫。
新的應力和測試包括:
打亂已枚舉裝置的順序,以確保隨插即用(PnP)驅動程式不會假設裝置的啟動順序。
在 PnP 和電源 IRP 完成時調整其狀態,以攔截從其分派常式傳回不正確狀態的驅動程式。
傳送假的 Power IRP 用來測試驅動程式程式碼中的路徑錯誤。
傳送虛擬的 WMI IRP 來測試驅動程式程式碼路徑中的問題。
將偽過濾器插入每個 WDM 堆疊。
顯示增強的 I/O 驗證錯誤
增強 I/O 驗證攔截的驅動程式錯誤會以與 層級 2 I/O 驗證攔截錯誤相同的方式顯示。
在藍色畫面上, 訊息 IO 系統驗證錯誤 和字串 WDM 驅動程式錯誤XXX 會指出這些錯誤,其中 XXX 是 I/O 錯誤碼。
在損毀傾印檔案中,訊息 BugCheck 0xC9 (DRIVER_VERIFIER_IOMANAGER_VIOLATION) 會指出這些錯誤,以及 I/O 錯誤碼。 在此情況下,I/O 錯誤碼會顯示為錯誤檢查的第一個參數0xC9。
在核心調試程式 (KD 或 WinDbg) 中,這些錯誤是由訊息 WDM DRIVER ERROR 和描述性文字字串所記下。 當核心調試程式作用中時,可以忽略層級 2 錯誤並繼續系統作業。 (這在其他任何錯誤檢查中都是不可能的。)
藍色畫面、當機傾印檔案和核心除錯工具也會顯示其他資訊。 如需所有 I/O 驗證層級 2 錯誤訊息的完整描述,請參閱 錯誤檢查0xC9。
啟用此選項
您可以使用驅動程式驗證器管理員或 Verifier.exe 命令行,為一或多個驅動程式啟用增強的 I/O 驗證功能。 如需詳細資訊,請參閱 選取驅動程式驗證器選項。
注意 在 Windows 7 和更新版本的 Windows作系統中,當您選取 [I/O 驗證] 時,會自動啟用增強的 I/O 驗證。 無法或不需要將其選取為個別選項。
在命令行
在命令行中,增強的 I/O 驗證選項是由 位 6 (0x40) 表示。 若要啟用增強式 I/O 驗證,請使用旗標值 0x40,或將0x40新增至旗標值。 例如:
verifier /flags 0x40 /driver MyDriver.sys下一次開機之後,此功能將會處於作用中狀態。
在 Windows Vista 和更新版本的 Windows 上,您也可以藉由將 /volatile 參數新增至 命令,來啟動和停用增強 I/O 驗證,而不需要重新啟動計算機。 例如:
verifier /volatile /flags 0x40 /adddriver MyDriver.sys此設定會立即生效,但會在您關閉或重新啟動電腦時遺失。 如需詳細資訊,請參閱 使用動態設定。
使用驅動程式驗證器管理員
- 啟動驅動程式驗證器管理員。 在命令提示字元視窗中輸入 驗證程式。
- 選取 [建立自定義設定] (適用於程式代碼開發人員), 然後按 [ 下一步]。
- 選擇 從完整清單中選取個別設定。
- 選取 [檢查] 增強的 I/O 驗證。
標準設定中也包含 DMA 驗證功能。 若要使用此功能,請在 [驅動程序驗證器管理員] 中,按兩下 [建立標準設定]。