Illesztőprogram-ellenőrző beállításai és szabályosztályai

Ez a témakör az Illesztőprogram-ellenőrző választható funkcióit és szabályosztályait ismerteti. A standard beállítások használatakor elérhető beállítások listáját a Standard beállítások című témakörben találja.

Megjegyzés:

Bizonyos automatikus ellenőrzések mindig egy ellenőrzött illesztőprogramon lesznek végrehajtva, függetlenül attól, hogy mely beállítások lettek kiválasztva. Ha az illesztőprogram nem megfelelő IRQL-en használ memóriát, helytelenül hívja meg vagy oldja fel a pörgetési zárakat és a memórialefoglalásokat, helytelenül váltja a vermeket, vagy felszabadítja a memóriakészletet az időzítők első eltávolítása nélkül, az Illesztőprogram-ellenőrző észleli ezt a viselkedést. Az illesztőprogram eltávolításakor a Verifier ellenőrzi, hogy megfelelően adta-e ki az erőforrásait.

Szabályosztályok engedélyezése /ruleclasses használatával

A Windows 10 17627-es és újabb verziójától kezdve a következő szintaxissal engedélyezheti a szabályosztályokat:

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

Vegye figyelembe, hogy ha több osztályt engedélyez (az alábbi pozitív decimális egész számmal jelölve), az egyes egész számokat szóköz karakterrel kell elválasztania.

Ezeknek a szabályosztályoknak a leírása alább található.

Standard szabályosztályok

Szabályosztály Decimális azonosító
Speciális készlet 1
Az IRQL-ellenőrzés kényszerítése 2
Csoportkövetés 4
I/O-ellenőrzés 5
Holtpont észlelése 6
DMA-ellenőrzés 8
Biztonsági ellenőrzések 9
Egyéb ellenőrzések 12
DDI-megfelelőség ellenőrzése 18
WDF-ellenőrzés 34

További szabályosztályok

Ezek a szabályosztályok konkrét forgatókönyv-tesztelésre szolgálnak. A szabályosztályok (*) jelöléséhez i/O-ellenőrzés szükséges (5), amely automatikusan engedélyezve lesz. A (**) jelöléssel jelölt jelzők támogatják az egyes szabályok letiltását.

Szabályosztály Decimális azonosító
Randomizált alacsony erőforrások szimulációja 3
Függőben lévő I/O-kérelmek kényszerítése (*) 10
IRP-naplózás 11
Invariáns MDL-verem ellenőrzése (*) 14
Invariáns MDL-ellenőrzés illesztőprogramhoz (*) 15
A Power keretrendszer késleltetéses fuzzingja 16
Port/miniport felület ellenőrzése 17
Szisztematikus alacsony erőforrás-szimuláció 19
DDI-megfelelőség ellenőrzése (további) 20
Kernel-szinkronizálás késleltetési fuzzingja 24
Virtuális gép kapcsoló ellenőrzése 25
Kódintegritási ellenőrzések 26
Illesztőprogram-elkülönítési ellenőrzések (36-os verzió szükséges) 33
További IRQL-ellenőrzés 35
A DIF engedélyezése 36

Választható funkció- és szabályosztály-leírások

Speciális készlet

Ha ez a beállítás engedélyezve van, az Illesztőprogram-ellenőrző lefoglalja az illesztőprogram memóriakérelmeinek többségét egy speciális készletből. Ez a speciális készlet figyeli a memóriatúllépéseket, a memória-lefutásokat és a felszabadítása után elérhető memóriát.

IRQL-ellenőrzés kényszerítése

Ha ez a beállítás engedélyezve van, az Illesztőprogram-ellenőrző a lapozható kód érvénytelenítésével rendkívüli memóriaterhelést gyakorol az illesztőprogramra. Ha az illesztőprogram nem megfelelő IRQL-sel vagy pörgetési zárral próbál hozzáférni a lapozott memóriához, az Illesztőprogram-ellenőrző észleli ezt a viselkedést.

Alacsony erőforrások szimulációja (a Windows 8.1 randomizált alacsony erőforrás-szimulációja )

Ha ez a beállítás engedélyezve van, az Illesztőprogram-ellenőrző véletlenszerűen meghiúsítja a készletfoglalási kérelmeket és más erőforrás-kérelmeket. Ezeknek a foglalási hibáknak a rendszerbe való injektálásával a Driver Verifier teszteli, hogy az illesztőprogram képes-e megbirkózni az alacsony erőforrás-helyzettel.

Készletkövetés

Ha ez a beállítás engedélyezve van, az Illesztőprogram-ellenőrző ellenőrzi, hogy az illesztőprogram felszabadította-e minden memóriafoglalását, amikor ki van töltve. Ez feltárja a memóriavesztéseket.

I/O-ellenőrzés

Ha ez a beállítás aktív, a Driver Verifier speciális készletből kiosztja az illesztőprogram IRP-jeit, és figyeli az illesztőprogram I/O-kezelését. Ez észleli az I/O-rutinok illegális vagy inkonzisztens használatát.

Holtpont észlelése

Ha ez a beállítás aktív, a Driver Verifier figyeli a sofőr pörgetési zárak, mutexek és gyors mutexek használatát. Ez azt észleli, hogy az illesztőprogram kódja egy ponton holtpontot okozhat-e.

Továbbfejlesztett I/O-ellenőrzés

Ha ez a lehetőség aktív, a Driver Verifier figyeli több I/O Manager-rutin hívásait, és elvégzi a PnP-integrációs protokollok, a power IRP-k és a WMI IRP-k stressztesztjét. A Windows operációs rendszer Windows 7-es és újabb verzióiban a bővített I/O-ellenőrzés összes funkciója az I/O-ellenőrzés részeként jelenik meg, és már nem érhető el, és nem szükséges ezt a lehetőséget választani az Driver Verifier Managerben vagy a parancssorból.

DMA-ellenőrzés

Ha ez a beállítás aktív, a Driver Verifier figyeli a DMA-rutinok illesztőprogram általi használatát. Ez észleli a DMA-pufferek, adapterek és térképregisztrálások helytelen használatát.

Biztonsági ellenőrzések

(Windows Vista és újabb verziók) Ha ez a beállítás aktív, az Illesztőprogram-ellenőrző olyan gyakori hibákat keres, amelyek biztonsági réseket eredményezhetnek, például a felhasználói módú címekre való hivatkozást kernelmódú rutinok alapján.

Egyéb ellenőrzések

(Windows Vista és újabb verziók) Ha ez a beállítás aktív, az Illesztőprogram-ellenőrző megkeresi az illesztőprogram összeomlásának gyakori okait, például a szabad memória helytelen kezelését.

Kényszeríts rá a függőben lévő I/O-kérelmekre

(Windows Vista és újabb verziók) Ha ez a beállítás aktív, az Illesztőprogram-ellenőrző teszteli az illesztőprogram válaszát STATUS_PENDING visszaadott értékekre az IoCallDriver-nak küldött véletlenszerű hívások STATUS_PENDING visszaadásával.

IRP-naplózás

(Windows Server 2003 és újabb verziók) Ha ez a beállítás aktív, az Illesztőprogram-ellenőrző figyeli az illesztőprogramok IRP-k használatát, és létrehozza az IRP-használat naplóját.

Storport-ellenőrzés

(Windows Vista és újabb verziók) Ha ez a beállítás aktív, a Driver Verifier monitorozza a Storport miniport illesztőprogramját az exportált Storport rutinok helytelen használata, a túlzott késések és a Storport-kérelmek helytelen kezelése érdekében.

Power Framework Delay Fuzzing

(Windows 8-tól kezdve) Ha ez a beállítás aktív, a Driver Verifier véletlenszerűen variálja a szálak ütemezését az energiagazdálkodási keretrendszert (PoFx) használó illesztőprogramok egyidejűségi hibáinak feltárásához. Ez a lehetőség nem ajánlott olyan illesztőprogramok esetében, amelyek nem használják közvetlenül az energiagazdálkodási keretrendszert (PoFx)..

DDI-megfelelőség ellenőrzése

(Windows 8-tól kezdve) Ha ez a beállítás aktív, az Illesztőprogram-ellenőrző olyan eszközillesztő-illesztői (DDI) szabályokat alkalmaz, amelyek ellenőrzik az illesztőprogram és az operációs rendszer kernelfelülete közötti megfelelő interakciót.

Invariáns MDL Veremellenőrzés

(Windows 8-tól kezdve) Az Invariant MDL Stack-ellenőrzése beállítás figyeli, hogy az illesztőprogram hogyan kezeli az invariáns MDL-puffereket az illesztőprogram-veremen. Az illesztőprogram-ellenőrző képes észlelni az invariáns MDL-pufferek illegális módosítását. A beállítás használatához az I/O-ellenőrzést legalább egy illesztőprogramon engedélyezni kell.

MDL invariáns ellenőrzése illesztőprogramhoz

(Windows 8-tól kezdve) Az Invariant MDL Illesztőprogram-ellenőrzése beállítás figyeli, hogy az illesztőprogram hogyan kezeli az invariáns MDL-puffereket illesztőprogramonként. Ez a beállítás észleli az invariáns MDL-pufferek illegális módosítását. A beállítás használatához engedélyeznie kell az I/O-ellenőrzést legalább egy illesztőprogramon.

Stack-alapú hibainjektálás

(Csak Windows 8 és WDK 8 esetén érhető el) A Stack Based Failure Injection beállítás erőforráshibákat injektál kernel módú illesztőprogramokban. Ez a beállítás egy speciális KmAutoFail.sysillesztőprogramot használ a Illesztőprogram-ellenőrzővel együtt az illesztőprogram hibakezelési útvonalainak behatolásához.

Szisztematikus alacsony erőforrás-szimuláció

(Windows 8.1-től kezdve) A rendszerszintű alacsony erőforrás-szimulációs lehetőség erőforráshibákat injektál kernel módú illesztőprogramokban.

NDIS/WIFI-ellenőrzés

(Windows 8.1-től kezdve) Ha ez a beállítás aktív, az Illesztőprogram-ellenőrző NDIS- és vezeték nélküli HÁLÓZATI (WIFI) szabályok készletét alkalmazza, amelyek ellenőrzik az NDIS miniportillesztő és az operációs rendszer kernele közötti megfelelő interakciót.

Kernel-szinkronizálás késleltetése

(Windows 8.1-től kezdve) Ez a beállítás véletlenszerűen randomizálja a szálütemezéseket az illesztőprogramok egyidejűségi hibáinak észleléséhez.

Virtuálisgép-kapcsoló ellenőrzése

(Windows 8.1-től kezdve) Ez a beállítás a Hyper-V Bővíthető kapcsolón belül futó szűrőillesztőket (bővíthető kapcsolóbővítményeket) figyeli.

Port/Miniport felület ellenőrzése

A port/miniport interfész ellenőrzése lehetővé teszi a Driver Verifier számára, hogy megvizsgálja a DDI interfészt a PortCls.sys és a hang miniport-illesztőprogramjai között, valamint a ks.sys és az AVStream miniport-illesztőprogramjai között. Lásd: Az AVStream-illesztőprogramok szabályai és a hangillesztőkre vonatkozó szabályok.

Kódintegritási ellenőrzés

Ha virtualizációalapú biztonságot használ a kódintegritás elkülönítésére, a kernelmemória csak a kódintegritási ellenőrzéssel válik végrehajthatóvá. Ez azt jelenti, hogy a kernel memórialapjai soha nem írhatók és végrehajthatóak (W+X), és a végrehajtható kód nem módosítható közvetlenül. A kódintegritási ellenőrzések biztosítják a kódintegritási szabályok kompatibilitását, és észlelik a szabálysértéseket.

WDF-ellenőrzés

A WDF-ellenőrzés ellenőrzi, hogy egy kernelmódú illesztőprogram megfelelően követi-e a Kernel-Mode Illesztőprogram-keretrendszer (KMDF) követelményeit.

További IRQL-ellenőrzés

A további IRQL-ellenőrzés kiegészíti a PASSIVE_LEVEL számára a DDI megfelelőségi ellenőrzési IRQL-szabályokat. Két szabályból áll:

  • Az IrqlIoRtlZwPassive szabály azt határozza meg, hogy az illesztőprogram csak akkor hívja meg a szabályban felsorolt DDI-ket, ha az IRQL = PASSIVE_LEVEL címen fut.
  • Az IrqlNtifsApcPassive szabály meghatározza, hogy az illesztőprogram csak akkor hívja meg a szabályban felsorolt DDI-kat, ha az IRQL = PASSIVE_LEVEL vagy az IRQL <= APC_LEVEL.

Illesztőprogram-elkülönítési ellenőrzések

Az illesztőprogram-elkülönítés ellenőrzése kritikus fontosságú a Windows-illesztőprogramok futtatókörnyezeti illesztőprogram-csomagelkülönítési követelményeinek érvényesítéséhez. További információt a Windows-illesztőprogramok fejlesztésének első lépései című témakörben talál. Az ellenőrzések figyelik a beállításjegyzék olyan olvasásait és írásait, amelyek nem engedélyezettek az izolált illesztőprogram-csomagokhoz.

Normál beállítások

A standard beállításokban szereplő beállítások

Speciális készlet

IRQL-ellenőrzés kényszerítése

Készletkövetés

I/O-ellenőrzés

Holtpont észlelése

Továbbfejlesztett I/O-ellenőrzés (Windows 7-ben és újabb verziókban ez a beállítás automatikusan aktiválódik az I/O-ellenőrzés kiválasztásakor)

DMA-ellenőrzés

Biztonsági ellenőrzések

Egyéb ellenőrzések (Windows Vista és újabb verziók)

DDI-megfelelőség ellenőrzése (Windows 8-tól kezdve)

Az I/O-ellenőrzést igénylő illesztőprogram-ellenőrző beállításai

Négy lehetőség közül választhat, amelyekhez először engedélyeznie kell az I/O-ellenőrzést. Ha az I/O-ellenőrzés nincs engedélyezve, ezek a beállítások nem engedélyezettek.