Sdílet prostřednictvím


Invariantní kontrola MDL pro stack

Možnost kontroly invariantních MDL vyrovnávacích pamětí sledováním zásobníku monitoruje, jak ovladač zpracovává tyto paměti v rámci 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í.

Poznámka Tato možnost je dostupná od Windows 8.

Možnost Kontrola zásobníku invariantního MDL zajišťuje, že ovladače dodržují pravidla pro invariantní vyrovnávací paměti MDL pouze v okamžiku, kdy požadavek opouští zásobník ovladačů.

Když se v rutině IoCallDriver poprvé zobrazí IRP s invariantní MDL, vypočítá se jedinečný podpis z obsahu invariantní vyrovnávací paměti MDL a uloží se do interní databáze. Pokud během dokončování IRP v rutině IoCompleteRequest IRP stále obsahuje invariantní MDL, pro který jsme zaznamenali podpis, Ověřovač ovladače ověří, že se vyrovnávací paměť nezměnila.

Invariantní vyrovnávací paměť pro požadavek na zápis nelze upravit po celou dobu životnosti protokolu IRP. U požadavku na čtení nelze v cestě k odeslání upravit neměnnou vyrovnávací paměť, takže porovnání podpisu vyrovnávací paměti se provádí při posledním volání IoCallDriver.

Možnost kontroly invariantního MDL zásobníku ověřuje invarianci MDL vyrovnávací paměti v celém zásobníku ovladačů, bez ohledu na to, co se stane s vyrovnávací pamětí během průchodu jednotlivými ovladači v zásobníku. Tato možnost je globální a nelze ji vynutit selektivně podle jednotlivých ovladačů. Možnost Invariant MDL Check for Stack může zachytit pouze porušení, aniž by bylo možné určit ovladač, který porušil invarianci vyrovnávací paměti. K určení chybného ovladače použijte možnost Invariant MDL Check for Driver , která ověřuje invariance obsahu vyrovnávací paměti při každém volání IoCallDriver a IoCompleteRequest DDI.

aktivovat tuto možnost

Funkci Invariant MDL Checking for Stack můžete aktivovat pro jeden nebo více ovladačů pomocí Správce ověření ovladačů nebo příkazového řádku Verifier.exe. Chcete-li zapnout nebo vypnout kontrolu invariantního MDL pro zásobník, musíte restartovat počítač. Další informace naleznete v tématu Výběr možností ověření ovladače.

Pokud chcete aktivovat invariantní kontrolu MDL zásobníku, musíte také aktivovat Ověřování I/O.

  • Na příkazovém řádku

    Na příkazovém řádku je invariantní kontrola MDL pro zásobník reprezentována 0x00002000 (bit 13). Pokud chcete aktivovat invariantní kontrolu MDL pro zásobník, použijte hodnotu příznaku 0x00002010 nebo přidejte 0x00002010 k hodnotě příznaku. Tato hodnota aktivuje ověřování vstupně-výstupních operací (0x10) a invariantní kontrolu MDL pro stack (0x00002000). Například:

    verifier /flags 0x00002010 /driver MyDriver.sys
    

    Funkce bude aktivní po dalším spuštění.

  • Použití Správce ověřovatele ovladačů

    1. Spusťte Správce ověřovatele ovladačů. Do okna příkazového řádku zadejte ověřitel .
    2. Vyberte Vytvořit vlastní nastavení (pro vývojáře kódu) a potom klikněte na Další.
    3. Vyberte jednotlivá nastavení z úplného seznamu.
    4. Vyberte (zaškrtněte) ověřování vstupně-výstupních operací a invariantní kontrolu MDL pro zásobník.
    5. Restartujte počítač.