Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Bár a kernel módú illesztőprogramok nem férnek hozzá a lapozható memóriához magas IRQL-ben vagy pörgetési zár mellett, előfordulhat, hogy ez a művelet nem észlelhető, ha az oldalt ténylegesen nem vágták ki a munkakészletből, és nem lapozták ki a lemezre.
Ha engedélyezve van az IRQL-ellenőrzés kényszerítése, a Driver Verifier rendkívüli nyomást gyakorol a rendszermemória használatára. Amikor egy ellenőrzött illesztőprogram spin-zárolást kér, meghívja a KeSynchronizeExecutionfüggvényt, vagy az IRQL szintjét DISPATCH_LEVEL vagy annál magasabbra emeli, a rendszer minden lapozható készletet, kódot és adatot (beleértve az illesztőprogram lapozható kódját és adatait) eltávolítja a munkakészletből. Ha az illesztőprogram megpróbál hozzáférni a memória bármelyikéhez, az Illesztőprogram-ellenőrző hibaellenőrzést ad ki.
A Windows Vista-tól kezdve ez a beállítás azt is eredményezi, hogy az Illesztőprogram-ellenőrző észleli, ha bizonyos szinkronizálási objektumok szerepelnek a lapozható memóriában. Ezeket a szinkronizálási objektumokat nem lehet lapra tenni, mert az operációs rendszer kernele emelt szintű IRQL-en éri el őket. Az illesztőprogram-ellenőrző képes észlelni a lapozható KTIMER, PRKMUTEX, PKSPIN_LOCK, PRKEVENT, PKSPIN_LOCK, PRKSEMAPHORE, PERESOURCE és FAST_MUTEX struktúrákat.
Ez a memóriahasználatra gyakorolt nyomás nem fogja közvetlenül befolyásolni azokat az illesztőprogramokat, amelyeket nem jelöltek ki ellenőrzésre. Ha egy nem ellenőrzésre kijelölt illesztőprogram elindítja az IRQL-t, az nem indítja el a vágási műveletet. Ha azonban egy ellenőrzött illesztőprogram növeli az IRQL-t, az Illesztőprogram-ellenőrző levágja a nem ellenőrzött illesztőprogramok által használható oldalakat. Ezért előfordulhat, hogy a nem ellenőrzött illesztőprogramok által elkövetett hibák időnként megjelennek, ha ez a beállítás aktív.
Az IRQL-emelések és a spin lockok monitorozása
A vizsgált illesztőprogramok által indított IRQL-emelések, pörgetési zárolások és KeSynchronizeExecution hívások száma megfigyelhető. Az illesztőprogram-ellenőrző által a munkakészletből levágott lapozható memória száma is monitorozható. Ezeket a statisztikákat a Driver Verifier Manager, a Verifier.exe parancssor vagy egy naplófájl jelenítheti meg. Részletekért lásd Globális számlálók figyelése.
A kernel hibakereső bővítménye !verifier ezen statisztikák figyelésére is használható. A Driver Verifier Managerhez hasonló információkat jelenít meg. Windows XP-ben és újabb verziókban a !verifier 0x8 bővítmény megjeleníti az illesztőprogramok által végrehajtott legutóbbi IRQL-módosítások naplóját. További információ a hibakereső bővítményekről: Windows hibakeresési.
KeEnterCriticalRegion vagy KeLeaveCriticalRegion hívása a DISPATCH_LEVEL-en vagy magasabb szinten
KeEnterCriticalRegion és KeLeaveCriticalRegion olyan API-k, amelyekkel szinkronizálható az illesztőprogram-kód kritikus sorozatának végrehajtása a szokásos kernel-aszinkron eljáráshívások (API-k) kézbesítésével. A KeEnterCriticalRegion és KeLeaveCriticalRegion API-k nem hívhatók meg IRQL = DISPATCH_LEVEL vagy újabb értéken. A KeEnterCriticalRegion vagy KeLeaveCriticalRegion hívása DISPATCH_LEVEL szinten vagy annál magasabb szinteken rendszerlefagyást vagy memóriasérülést okozhat.
A Windows 7-től kezdődően az Illesztőprogram-ellenőrző észleli ezen API-k hívásait DISPATCH_LEVEL vagy annál magasabb szinten, ha az IRQL-ellenőrzés kényszerítése lehetőség engedélyezve van.
A beállítás aktiválása
Egy vagy több illesztőprogramhoz aktiválhatja az IRQL-ellenőrzés kényszerítése funkciót a Driver Verifier Manager vagy a Verifier.exe parancssor használatával. További információ: Illesztőprogram-ellenőrző beállításainak kiválasztása.
A parancssorban
A parancssorban az IRQL-ellenőrzés kényszerített aktiválását a 1. bit (0x2)jelzi. Az IRQL-ellenőrzés kényszerítéséhez használjon egy 0x2 jelzőértéket, vagy adjon a jelzőértékhez 0x2-t. Például:
verifier /flags 0x2 /driver MyDriver.sysA funkció a következő rendszerindítás után aktív lesz.
Az IRQL-ellenőrzés kényszerítése a számítógép újraindítása nélkül is aktiválható és inaktiválható, ha hozzáadja a /illékony paramétert a parancshoz. Például:
verifier /volatile /flags 0x2 /adddriver MyDriver.sysEz a beállítás azonnal érvénybe lép, de a számítógép leállítása vagy újraindításakor elveszik. További részletekért lásd Illékony beállítások használata.
Az IRQL-ellenőrzés kényszerítése funkció a standard beállításokban is megtalálható. Például:
verifier /standard /driver MyDriver.sysA Driver Verifier Manager használata
- Indítsa el a Meghajtó Ellenőrző Kezelőt. Írja be Verifier parancssori ablakba.
- Válassza Egyéni beállítások létrehozása (kódfejlesztőknek) lehetőséget, majd kattintson a Továbbgombra.
- Válassza Az egyes beállítások kiválasztása teljes listából.
- Jelölje be (kattintson) a IRQL ellenőrzés kényszerítéselehetőséget.
Az IRQL-ellenőrzés kényszerítése funkció a standard beállításokban is megtalálható. A funkció használatához a Driver Verifier Managerben kattintson a Standard beállítások létrehozásaelemre.