增強型 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 來測試驅動程式程式碼路徑 Bug。

  • 將假篩選插入每個 WDM 堆疊。

顯示增強的 I/O 驗證錯誤

增強型 I/O 驗證攔截的驅動程式錯誤會以與 層級 2 I/O 驗證攔截的驅動程式錯誤相同方式顯示。

在藍色畫面上,這些錯誤是由訊息 IO 系統驗證錯誤 和字串 WDM DRIVER ERRORXXX所指出,其中 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
    

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

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

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

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