驅動程式驗證器選項和規則類別
本主題描述驅動程式驗證器內的選擇性功能和規則類別。 如需使用標準 設定 時所包含的選項清單,請參閱標準設定。
注意
不論已選取哪些選項,某些 自動檢查 一律會在正在驗證的驅動程式上執行。 如果驅動程式在不正確的 IRQL 中使用記憶體,則不正確地呼叫或釋放微調鎖定和記憶體配置、不正確地切換堆疊或釋放記憶體集區,而不需要先移除計時器,驅動程式驗證器就會偵測到此行為。 卸載驅動程式時,驅動程式驗證器會檢查是否已正確釋放其資源。
使用 /ruleclasses 啟用規則類別
從 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 和更新版本) 當此選項為作用中時,驅動程式驗證程式會傳回STATUS_PENDING傳回值的回應,方法是傳回 ioCallDriver的隨機呼叫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) 開始,[驅動程式的不變數 MDL 檢查]選項會監視驅動程式如何處理每個驅動程式的不變異 MDL 緩衝區。 此選項會偵測不合法的非變異 MDL 緩衝區修改。 若要使用此選項,您必須至少在一個驅動程式上啟用 I/O 驗證。
(只有 Windows 8 和 WDK 8) 堆疊型失敗插入選項會在核心模式驅動程式中插入資源失敗。 此選項會搭配 驅動程式驗證器 使用特殊的驅動程式KmAutoFail.sys,來滲透驅動程式錯誤處理路徑。
(從 Windows 8.1) 系統化的低資源模擬選項開始,會在核心模式驅動程式中插入資源失敗。
(從 Windows 8.1) 開始,當此選項為作用中時,驅動程式驗證器會套用一組 NDIS 和無線區域網路 (WIFI) 規則,以檢查 NDIS 迷你埠驅動程式與作業系統核心之間的適當互動。
(從 Windows 8.1) 此選項會隨機化執行緒排程,以協助偵測驅動程式中的並行錯誤。
(從 Windows 8.1) 開始此選項會監視在Hyper-V 可延伸交換器內執行的可延伸交換器) 擴充功能 (篩選驅動程式。
埠/迷你埠介面檢查可讓驅動程式驗證程式檢查PortCls.sys與其音訊迷你埠驅動程式之間的 DDI 介面,以及ks.sys及其 AVStream 迷你埠驅動程式。 請參閱 AVStream 驅動程式的規則和音訊驅動程式的規則。
使用虛擬化型安全性隔離程式碼完整性時,核心記憶體可以成為可執行檔的唯一方式是透過程式碼完整性驗證。 這表示核心記憶體頁面永遠不能是可寫入的,而且無法直接修改 W+X (W+X) 和可執行檔程式碼。 程式碼完整性檢查可確保這些程式碼完整性規則的相容性,並偵測違規。
WDF 驗證會檢查核心模式驅動程式是否遵循 Kernel-Mode Driver Framework (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 和更新版本 (其他檢查) |
從 Windows 8) 開始進行DDI 合規性檢查 ( |
需要 I/O 驗證的驅動程式驗證器選項
有四個選項會要求您先啟用 I/O 驗證。 如果未啟用 I/O 驗證,則不會啟用這些選項。