Sdílet prostřednictvím


Možnosti a třídy pravidel pro ověření ovladače

Toto téma popisuje volitelné funkce a třídy pravidel v rámci nástroje Driver Verifier. Seznam možností zahrnutých při použití standardního nastavení najdete v části Standardní nastavení.

Poznámka:

Některé automatické kontroly se vždy provádějí u ovladače, který se ověřuje, bez ohledu na to, které možnosti byly vybrány. Pokud ovladač používá paměť při nesprávném nastavení IRQL, nesprávně volá nebo uvolňuje spinlocky a přidělení paměti, nesprávně přepíná zásobníky nebo uvolňuje paměťový fond bez předchozího odebrání časovačů, Driver Verifier toto chování zjistí. Když je ovladač vyložen, Driver Verifier zkontroluje, zda správně uvolnil své prostředky.

Povolení tříd pravidel pomocí /ruleclasses

Počínaje Windows 10 verze 17627 a novějším můžete povolit třídy pravidel s následující syntaxí:

/ruleclasses or /rc [<ruleclass_1> <ruleclass_2> ... <ruleclass_k>]

Všimněte si, že při povolování více tříd (reprezentovány kladným celým číslem níže) oddělte každé kladné celé číslo znakem mezery.

Popisy těchto tříd pravidel najdete níže.

Standardní třídy pravidel

Třída pravidel Decimální ID
Speciální fond 1
Vynucení kontroly IRQL 2
Sledování fondu 4
Ověřování vstupně-výstupních operací 5
Detekce vzájemného zablokování 6
Kontrola DMA 8
Kontroly zabezpečení 9
Různé kontroly 12
Kontrola souladu s předpisy DDI 18
Ověřování WDF 34

Další třídy pravidel

Tyto třídy pravidel jsou určeny pro konkrétní testování scénářů. Třídy pravidel jsou označené (*) vyžadují ověřování vstupně-výstupních operací (5), které se automaticky povolí. Příznaky označené pomocí (**) podporují zakázání jednotlivých pravidel.

Třída pravidla Decimální ID
Simulace s náhodně rozdělenými omezenými zdroji 3
Vynucení zpracování čekajících požadavků na vstup/výstup (*) 10
Protokolování IRP 11
Invariantní kontrola MDL pro zásobník (*) 14
Invariantní ověření MDL pro ovladač (*) 15
Zpoždění fuzzování pro energetický rámec 16
Kontrola rozhraní portu nebo miniportu 17
Systematická simulace nízkých zdrojů 19
Kontrola dodržování předpisů DDI (další) 20
Zpoždění synchronizace jádra fuzzing dvacet čtyři
Ověření přepínače virtuálního počítače 25
Kontroly integrity kódu 26
Kontroly izolace řidiče (vyžaduje 36) 33
Další kontrola IRQL 35
Povolte DIF 36

Volitelné popisy funkcí a tříd pravidel

Speciální bazén

Pokud je tato možnost povolena, nástroj Verifier přiděluje většinu požadavků na paměť ovladače ze speciálního poolu. Tento speciální fond se monitoruje pro přetečení paměti, podtečení paměti a paměť, ke které se přistupuje po uvolnění.

Vynucení kontroly IRQL

Pokud je tato možnost povolená, Driver Verifier způsobí extrémní zatížení paměti na ovladači tím, že zneplatní stránkovatelný kód. Pokud se ovladač pokusí získat přístup ke stránkované paměti v nesprávném prostředí IRQL nebo při držení spinlocku, Driver Verifier toto chování zjistí.

Simulace nízkých prostředků ( označovaná jako randomizovaná simulace nízkých prostředků ve Windows 8.1)

Pokud je tato možnost povolená, nástroj Driver Verifier náhodně způsobí selhání žádostí o přidělení paměti a dalších žádostí o prostředky. Vložením těchto chyb přidělení do systému program Driver Verifier otestuje schopnost ovladače vyrovnat se se situací s nízkými prostředky.

Sledování poolu

Je-li tato možnost aktivována, nástroj Driver Verifier zkontroluje, zda ovladač uvolnil všechny své paměťové alokace, když je odvolán. Tím se odhalí úniky paměti.

Ověřování vstupně-výstupních operací

Pokud je tato možnost aktivní, nástroj Driver Verifier přiděluje ovladači IRP ze speciálního fondu a monitoruje zpracování vstupně-výstupních operací ovladače. Tím se zjistí nezákonné nebo nekonzistentní použití vstupně-výstupních rutin.

Detekce zablokování

Pokud je tato možnost aktivní, Driver Verifier monitoruje použití spinových zámků, mutexů a rychlých mutexů. Zjistí se, jestli kód ovladače může v určitém okamžiku způsobit zablokování.

Rozšířené ověřování vstupně-výstupních operací

Pokud je tato možnost aktivní, Driver Verifier monitoruje volání několika rutin Správce V/V a provádí zátěžové testování PnP IRPs, power IRPs a WMI IRPs. Ve Windows 7 a novějších verzích operačního systému Windows jsou všechny funkce rozšířeného ověřování vstupně-výstupních operací zahrnuty jako součást ověřování vstupně-výstupních operací a už není k dispozici ani není nutné tuto možnost vybrat ve Správci ověření ovladače nebo z příkazového řádku.

Ověření DMA

Pokud je tato možnost aktivní, nástroj Driver Verifier monitoruje použití rutin DMA ovladače. Zjistí se tak nesprávné použití vyrovnávacích pamětí DMA, adaptérů a registrů map.

Kontroly zabezpečení

(Windows Vista a novější) Pokud je tato možnost aktivní, nástroj Driver Verifier hledá běžné chyby, které můžou vést k ohrožením zabezpečení, například odkaz na adresy uživatelského režimu rutinami režimu jádra.

Různé kontroly

(Windows Vista a novější) Pokud je tato možnost aktivní, ovladač Verifier hledá běžné příčiny chybových ukončení ovladačů, jako je například nesprávné zacházení s uvolněnou pamětí.

Vynucení nevyřízených I/O požadavků

(Windows Vista a novější) Pokud je tato možnost aktivní, Driver Verifier otestuje odpověď ovladače na návratové hodnoty STATUS_PENDING vrácením STATUS_PENDING pro náhodně vybraná volání IoCallDriver.

IRP protokolování

(Windows Server 2003 a novější) Pokud je tato možnost aktivní, nástroj Driver Verifier monitoruje použití IRP ovladačem a vytvoří protokol o jejich použití.

Ověření Storport

(Windows Vista a novější) Pokud je tato možnost aktivní, ovladač Verifier monitoruje ovladač miniportu Storport pro nesprávné použití exportovaných rutin Storportu, nadměrné zpoždění a nesprávné zpracování požadavků Storport.

Zpoždění v Power Frameworku

(Počínaje Windows 8) Pokud je tato možnost aktivní, Driver Verifier náhodně mění pořadí vláken, aby pomohl odhalit chyby souběžnosti v ovladačích, které používají architekturu řízení spotřeby (PoFx). Tato možnost se nedoporučuje pro ovladače, které přímo nevyužívají architekturu řízení spotřeby (PoFx)..

Kontrola dodržování předpisů DDI

(Počínaje Windows 8) Pokud je tato možnost aktivní, ovladač Verifier použije sadu pravidel rozhraní ovladače zařízení (DDI), která kontrolují správnou interakci mezi ovladačem a rozhraním jádra operačního systému.

Invariantní kontrola MDL pro stack

(Počínaje Windows 8) Invariant MDL – Kontrola zásobníku sleduje, jak ovladač zpracovává invariantní vyrovnávací paměti MDL v zásobníku ovladačů. Verifikátor ovladače dokáže rozpoznat neplatnou změnu invariantních vyrovnávacích pamětí MDL. Pokud chcete tuto možnost použít, musí být u alespoň jednoho ovladače povolené ověřování vstupně-výstupních operací.

Invariantní kontrola MDL pro ovladač

(Počínaje Windows 8) Volba Invariant MDL Checking for Driver monitoruje, jak ovladač zpracovává invariantní vyrovnávací paměti MDL pro každý ovladač zvlášť. Tato možnost detekuje neplatnou úpravu invariantních vyrovnávacích pamětí MDL. Pokud chcete tuto možnost použít, musíte povolit ověřování vstupně-výstupních operací alespoň u jednoho ovladače.

Injekce selhání založená na zásobníku

(K dispozici pouze v systémech Windows 8 a WDK 8) Možnost injekce selhání na základě zásobníku vkládá chyby prostředků do ovladačů režimu jádra. Tato možnost používá speciální ovladač, KmAutoFail.sys, ve spojení s Driver Verifier k průniku do cest zpracování chyb ovladače.

Systematická simulace nízkých zdrojů

(Počínaje Windows 8.1) Možnost simulace systematických nízkých prostředků vkládá selhání prostředků do ovladačů režimu jádra.

Ověřování NDIS/WIFI

(Počínaje Windows 8.1) Pokud je tato možnost aktivní, ovladač Verifier použije sadu pravidel NDIS a bezdrátové sítě LAN (WIFI), která kontrolují správnou interakci mezi ovladačem miniportu NDIS a jádrem operačního systému.

Zpoždění synchronizace jádra

(Počínaje verzí Windows 8.1) Tato možnost náhodně mění rozvrhy vláken, aby pomohla detekovat chyby souběžnosti v ovladačích.

Ověření přepínače virtuálního počítače

(Počínaje Windows 8.1) Tato možnost monitoruje ovladače filtru (rozšíření rozšiřitelného přepínače), které běží uvnitř přepínačeHyper-V Extensible Switch.

Kontrola rozhraní portu nebo miniportu

Kontrola rozhraní port/miniport umožňuje nástroji Driver Verifier kontrolovat rozhraní DDI mezi ovladači PortCls.sys a jeho audio miniportovými ovladači a mezi ks.sys a jeho AVStream miniportovými ovladači. Viz Pravidla pro ovladače AVStream a Pravidla pro zvukové ovladače.

Kontrola integrity kódu

Pokud k izolaci integrity kódu používáte zabezpečení založené na virtualizaci, jediným způsobem, jak se může stát spustitelná paměť jádra, je ověření integrity kódu. To znamená, že stránky paměti jádra nemohou být nikdy zapisovatelné a spustitelné soubory (W+X) a spustitelný kód nelze přímo upravit. Integrita kódu kontroluje kompatibilitu těchto pravidel integrity kódu a zjišťuje porušení.

Verifikace WDF

Ověření WDF zkontroluje, jestli ovladač režimu jádra správně splňuje požadavky rozhraní KMDF (Kernel-Mode Driver Framework).

Další kontrola IRQL

Další kontrola IRQL rozšiřuje pravidla IRQL kontroly dodržování předpisů DDI pro PASSIVE_LEVEL. Skládá se ze dvou pravidel:

  • Pravidlo IrqlIoRtlZwPassive stanovuje, že ovladač volá DDIs uvedené v pravidle pouze tehdy, když běží na úrovni IRQL = PASSIVE_LEVEL.
  • Pravidlo IrqlNtifsApcPassive určuje, že ovladač volá rozhraní DDI uvedená v pravidle pouze tehdy, když se spouští na úrovni IRQL = PASSIVE_LEVEL nebo IRQL <= APC_LEVEL.

Kontroly izolace ovladačů

Kontroly izolace ovladačů jsou důležité pro ověření požadavků na izolaci balíčků ovladačů modulu runtime pro ovladače systému Windows. Další informace najdete v tématu Začínáme s vývojem ovladačů systému Windows. Kontroly monitorují čtení a zápisy registru, které nejsou povoleny pro izolované balíčky ovladačů.

Standardní nastavení

Možnosti zahrnuté ve standardním nastavení

Speciální bazén

Vynucení kontroly IRQL

Sledování poolu

Ověřování vstupně-výstupních operací

Detekce zablokování

Rozšířené ověřování vstupně-výstupních operací (ve Windows 7 a novějších verzích se tato možnost aktivuje automaticky, když vyberete ověřování vstupně-výstupních operací).

Ověření DMA

Kontroly zabezpečení

Různé kontroly (Windows Vista a novější)

Kontrola dodržování předpisů DDI (počínaje Windows 8)

Možnosti ověření ovladače, které vyžadují ověřování vstupně-výstupních operací

Existují čtyři možnosti, které vyžadují, abyste nejprve povolili ověřování vstupně-výstupních operací. Pokud není povolené ověřování vstupně-výstupních operací, tyto možnosti nejsou povolené.