增強的 I/O 驗證

此功能僅適用於 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 和 Power IRP 完成時的狀態,以攔截從分派例程傳回不正確狀態的驅動程式。

  • 傳送假 Power IRP 以測試驅動程式程式代碼路徑 Bug。

  • 傳送假的 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 驗證選項是由 Bit 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
    

    此設定會立即生效,但會在您關閉或重新啟動電腦時遺失。 如需詳細資訊,請參閱 使用揮發性設定

  • 使用驅動程式驗證器管理員

    1. 啟動驅動程式驗證器管理員。 在 [命令提示字元] 視窗中輸入 驗證器
    2. 選取 [建立自定義設定] (適用於程式代碼開發人員), 然後按 [ 下一步]。
    3. 從完整清單中選取 [選取個別設定]。
    4. 選取 [檢查] 增強的 I/O 驗證

    標準設定中也包含 DMA 驗證功能。 若要使用此功能,請在 [驅動程序驗證器管理員] 中,按兩下 [ 建立標準設定]。