驅動程式驗證器選項和規則類別
本主題描述驅動程式驗證器內的選擇性功能和規則類別。 如需使用標準設定時所包含的選項清單,請參閱標準設定。
注意
不論已選取哪些選項,某些 自動檢查 一律會在正在驗證的驅動程序上執行。 如果驅動程式在不正確的 IRQL 中使用記憶體,則不正確地呼叫或釋放微調鎖定和記憶體配置、不正確地切換堆棧,或釋放記憶體集區而不先移除定時器,驅動程式驗證器會偵測到此行為。 卸除驅動程式時,驅動程式驗證器會檢查是否已正確釋放其資源。
使用 /ruleclasss 啟用規則類別
從 Windows 10 版本 17627 和更新版本開始,您可以使用下列語法來啟用規則類別:
/ruleclasses or /rc [<ruleclass_1> <ruleclass_2> ... <ruleclass_k>]
請注意,啟用多個類別時(以下面的正十進位整數表示),請使用空格字元分隔每個整數。
您可以在下方找到這些規則類別的描述。
標準規則類別
規則類別 | 十進位標識碼 |
---|---|
特殊集區 | 1 |
強制 IRQL 檢查 | 2 |
集區追蹤 | 4 |
I/O 驗證 | 5 |
鎖死偵測 | 6 |
DMA 檢查 | 8 |
安全性檢查 | 9 |
其他檢查 | 12 |
DDI 合規性檢查 | 18 |
WDF 驗證 | 34 |
其他規則類別
這些規則類別適用於特定案例測試。 規則類別會標示為 ≦ 需要自動啟用的 I/O 驗證 (5)。 標示為 (**) 的旗標支援停用個別規則。
規則類別 | 十進位標識碼 |
---|---|
隨機低資源模擬 | 3 |
強制擱置 I/O 要求 ≦ | 10 |
IRP 記錄 | 11 |
堆疊的不變異 MDL 檢查 * | 14 |
驅動程式的不變異 MDL 檢查 。 | 15 |
Power Framework 延遲模糊 | 16 |
埠/迷你埠介面檢查 | 17 |
系統低資源模擬 | 19 |
DDI 合規性檢查 (其他) | 20 |
核心同步處理延遲模糊 | 24 |
VM 交換器驗證 | 25 |
程序代碼完整性檢查 | 26 |
驅動程式隔離檢查 (需要 36) | 33 |
其他 IRQL 檢查 | 35 |
啟用 DIF | 36 |
選擇性功能和規則類別描述
啟用此選項時,驅動程式驗證器會從特殊集區配置大部分驅動程式的記憶體要求。 此特殊集區會監視記憶體滿溢、記憶體不足,以及釋放後存取的記憶體。
啟用此選項時,驅動程式驗證器會藉由使可分頁程序代碼失效,對驅動程式施加極端的記憶體壓力。 如果驅動程式嘗試在錯誤的 IRQL 存取分頁記憶體,或在按住微調鎖定時存取分頁記憶體,驅動程式驗證器會偵測到此行為。
低資源模擬 (在 Windows 8.1 中稱為 隨機化低資源模擬 )
啟用此選項時,驅動程式驗證器會隨機失敗集區配置要求和其他資源要求。 藉由將這些配置錯誤插入系統,驅動程式驗證器會測試驅動程式應付低資源狀況的能力。
啟用此選項時,驅動程式驗證器會檢查驅動程式是否已在卸載時釋放其所有記憶體配置。 這會顯示記憶體流失。
當此選項為使用中時,驅動程式驗證器會從特殊集區配置驅動程式的 IRP,並監視驅動程式的 I/O 處理。 這會偵測 I/O 例程的不合法或不一致使用。
當此選項為使用中時,驅動程式驗證器會監視驅動程式使用微調鎖定、Mutex 和快速 Mutex。 這會偵測驅動程式的程式代碼是否有可能在某個時間點造成死結。
當此選項為使用中時,驅動程式驗證器會監視數個 I/O 管理員例程的呼叫,並執行 PnP IRP、電源 IRP 和 WMI IRP 的壓力測試。 在 Windows 7 和更新版本的 Windows 作業系統中,增強式 I/O 驗證的所有功能都會包含在 I/O 驗證中 ,而且不再需要在驅動程式驗證 程式管理員或命令行中選取此選項。
當此選項為使用中時,驅動程式驗證器會監視驅動程式使用 DMA 例程。 這會偵測 DMA 緩衝區、配接器和地圖緩存器的不當使用。
(Windows Vista 和更新版本)當此選項為使用中時,驅動程式驗證器會尋找可能導致安全性弱點的常見錯誤,例如核心模式例程對使用者模式地址的參考。
(Windows Vista 和更新版本)當此選項處於使用中狀態時,驅動程式驗證器會尋找驅動程式當機的常見原因,例如未處理已釋放的記憶體。
(Windows Vista 和更新版本)當此選項為使用中時,驅動程式驗證器會傳回 ioCallDriver 隨機呼叫STATUS_PENDING,以測試驅動程式對STATUS_PENDING傳回值的回應。
(Windows Server 2003 及更新版本)當此選項為使用中時,驅動程式驗證器會監視驅動程式對 IRP 的使用,並建立 IRP 使用的記錄。
(Windows Vista 和更新版本)當此選項為使用中時,驅動程式驗證器會監視 Storport 迷你埠驅動程式,以不當使用導出的 Storport 例程、過度延遲,以及不當處理 Storport 要求。
(從 Windows 8 開始)當此選項為使用中時,驅動程式驗證器會隨機化線程排程,以協助清除使用電源管理架構 (PoFx) 之驅動程式中的並行錯誤。 不建議針對未直接使用電源管理架構 (PoFx) 的驅動程式使用此選項。
(從 Windows 8 開始)當此選項為使用中時,驅動程式驗證器會套用一組設備驅動器介面 (DDI) 規則,以檢查驅動程式與操作系統核心介面之間的適當互動。
(從 Windows 8 開始)Invariant MDL Checking for Stack 選項會監視驅動程式如何處理跨驅動程式堆疊的不變異 MDL 緩衝區。 驅動程式驗證器可以偵測不可變 MDL 緩衝區的非法修改。 若要使用此選項,必須在至少一個驅動程式上啟用I/O驗證。
(從 Windows 8 開始)Invariant MDL Checking for Driver 選項會監視驅動程式如何處理每個驅動程式的不變異 MDL 緩衝區。 此選項會偵測不可變 MDL 緩衝區的非法修改。 若要使用此選項,您必須在至少一個驅動程式上啟用 I/O 驗證。
(僅適用於 Windows 8 和 WDK 8)堆疊 型失敗插入 選項會在核心模式驅動程式中插入資源失敗。 此選項會使用特殊的驅動程式,KmAutoFail.sys搭配 驅動程式驗證器 來滲透驅動程式錯誤處理路徑。
(從Windows 8.1開始) 系統低資源模擬 選項會在核心模式驅動程式中插入資源失敗。
(從Windows 8.1開始)當此選項為使用中時,驅動程式驗證器會套用一組 NDIS 和無線 LAN (WIFI) 規則,以檢查 NDIS 迷你埠驅動程式與操作系統核心之間的適當互動。
(從Windows 8.1開始)此選項會隨機化線程排程,以協助偵測驅動程式中的並行錯誤。
(從Windows 8.1開始)此選項會監視在 Hyper-V 可延伸交換器內執行的篩選驅動程式(可延伸交換器擴充功能)。
埠/迷你埠介面檢查可讓驅動程式驗證器檢查PortCls.sys與其音訊迷你埠驅動程序之間的 DDI 介面,以及ks.sys及其 AVStream 迷你埠驅動程式。 請參閱 AVStream 驅動程式的規則和音訊驅動程序的規則。
使用虛擬化式安全性來隔離程序代碼完整性時,核心記憶體變成可執行檔的唯一方式是透過程式代碼完整性驗證。 這表示核心記憶體頁面永遠無法寫入且可執行程式代碼 (W+X) 和可執行程式碼無法直接修改。 程式代碼完整性檢查可確保這些程式碼完整性規則的相容性,並偵測違規。
WDF 驗證會檢查內核模式驅動程式是否符合內核模式驅動程序架構 (KMDF) 需求。
其他 IRQL 檢查
額外的 IRQL 檢查可增強 PASSIVE_LEVEL的 DDI 合規性檢查 IRQL 規則。 它包含兩個規則:
- IrqlIoRtlZwPassive 規則指定只有當驅動程式在 IRQL = PASSIVE_LEVEL 執行時,才會呼叫規則中列出的 DIS。
- IrqlNtifsApcPassive 規則指定只有當驅動程式在 IRQL = PASSIVE_LEVEL或 IRQL <= APC_LEVEL執行時,才會呼叫規則中列出的 DIS。
驅動程式隔離檢查對於驗證 Windows 驅動程式的運行時間驅動程式套件隔離需求非常重要。如需詳細資訊,請參閱 開始使用開發 Windows 驅動程式。 檢查會監視隔離驅動程式套件不允許的登錄讀取和寫入。
標準設定
標準設定中包含的選項 |
---|
增強的 I/O 驗證 (在 Windows 7 和更新版本中,當您選取 [I/O 驗證] 時,會自動啟用此選項) |
其他檢查 (Windows Vista 和更新版本) |
DDI 合規性檢查 (從 Windows 8 開始) |
需要 I/O 驗證的驅動程式驗證器選項
有四個選項會要求您先啟用 I/O 驗證。 如果未啟用 I/O 驗證,則不會啟用這些選項。