Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresář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
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í.
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.
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.
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.
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.
(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.
(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.
(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í.
(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.
(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.
(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.
(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.
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í.
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čů 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í |
|---|
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í). |
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é.