Dela via


Tvinga IRQL-kontroll

Även om drivrutiner i kernelläge inte får åtkomst till växlingsbart minne vid en hög IRQL eller när du håller i ett spinnlås, kan en sådan åtgärd inte märkas om sidan faktiskt inte har trimmats från arbetsuppsättningen och bläddrats ut till disken.

När Force IRQL-kontroll är aktiverat ger drivrutinsverifieraren extremt tryck på användningen av systemminnet. När en drivrutin som verifieras begär ett spinnlås, anropar KeSynchronizeExecution eller höjer IRQL till DISPATCH_LEVEL eller högre, trimmas all systemväxlingsbar pool, kod och data (vilket inkluderar drivrutinens växlingsbara kod och data) från arbetsuppsättningen. Om drivrutinen försöker komma åt något av det här minnet utfärdar drivrutinsverifieraren en buggkontroll.

Från och med Windows Vista gör det här alternativet också att drivrutinsverifieraren identifieras när vissa synkroniseringsobjekt ingår i sidbart minne. Dessa synkroniseringsobjekt kan inte pagineras eftersom operativsystemets kärna har åtkomst till dem på upphöjd IRQL. Drivrutinsverifieraren kan identifiera de sidbara strukturerna KTIMER, PRKMUTEX, PKSPIN_LOCK, PRKEVENT, PKSPIN_LOCK, PRKSEMAPHORE, PERESOURCE och FAST_MUTEX .

Detta tryck på minnesanvändningen påverkar inte direkt drivrutiner som inte har valts för verifiering. När en drivrutin som inte har valts för verifiering genererar IRQL utlöses inte trimningsåtgärden. Men när en drivrutin som verifieras genererar IRQL, trimmar drivrutinsverifieraren sidor som kan användas av drivrutiner som inte verifieras. Så fel som begås av förare som inte verifieras kan ibland upptäckas när det här alternativet är aktivt.

Övervaka IRQL-höjningar och spinnlås

Antalet IRQL-höjningar, spinnlås och anrop till KeSynchronizeExecution som görs av drivrutiner som verifieras kan övervakas. Antalet gånger som drivrutinsverifieraren har trimmat sidbart minne från arbetsuppsättningen kan också övervakas. Den här statistiken kan visas av Driver Verifier Manager, Verifier.exe kommandoraden eller i en loggfil. Mer information finns i Övervaka globala räknare .

Kernel-felsökningstillägget !verifier kan också användas för att övervaka den här statistiken. Den visar liknande information som för Driver Verifier Manager. I Windows XP och senare visar tillägget !verifier 0x8 en logg över de senaste IRQL-ändringarna som gjorts av drivrutiner som verifieras. Information om tillägg för felsökning finns i Windows-felsökning.

Anropa KeEnterCriticalRegion eller KeLeaveCriticalRegion på DISPATCH_LEVEL eller högre

KeEnterCriticalRegion och KeLeaveCriticalRegion är API:er som du kan använda för att synkronisera körningen av en kritisk sekvens av drivrutinskod med leveransen av vanliga kernel-asynkrona proceduranrop (API:er). API:erna KeEnterCriticalRegion och KeLeaveCriticalRegion kan inte anropas på IRQL = DISPATCH_LEVEL eller senare. Att anropa KeEnterCriticalRegion eller KeLeaveCriticalRegion på DISPATCH_LEVEL eller högre kan resultera i att systemet hänger eller minneskorruption.

Från och med Windows 7 identifierar drivrutinsverifierare anrop till dessa API:er vid DISPATCH_LEVEL eller senare om alternativet Tvinga IRQL-kontroll är aktiverat.

aktivera det här alternativet

Du kan aktivera funktionen Force IRQL-kontroll för en eller flera drivrutiner med hjälp av Driver Verifier Manager eller kommandoraden Verifier.exe. Mer information finns i Välja alternativ för drivrutinsverifierare.

  • På kommandoraden

    På kommandoraden representeras alternativet Tvinga IRQL-kontroll av bit 1 (0x2). Om du vill aktivera Force IRQL-kontroll använder du ett flaggvärde på 0x2 eller lägger till 0x2 i flaggvärdet. Till exempel:

    verifier /flags 0x2 /driver MyDriver.sys
    

    Funktionen är aktiv efter nästa start.

    Du kan också aktivera och inaktivera Force IRQL-kontroll utan att starta om datorn genom att lägga till parametern /volatile i kommandot. Till exempel:

    verifier /volatile /flags 0x2 /adddriver MyDriver.sys
    

    Den här inställningen gäller omedelbart, men går förlorad när du stänger av eller startar om datorn. Mer information finns i Använda flyktiga inställningar.

    Funktionen Force IRQL-kontroll ingår också i standardinställningarna. Till exempel:

    verifier /standard /driver MyDriver.sys
    
  • Använda Drivrutinsverifieringshanteraren

    1. Starta hanteraren för drivrutinsverifierare. Skriv Verifier i ett kommandotolkfönster.
    2. Välj Skapa anpassade inställningar (för kodutvecklare) och klicka sedan på Nästa.
    3. Välj Välj enskilda inställningar i en fullständig lista.
    4. Välj (check) Framtvinga IRQL-kontroll.

    Funktionen Force IRQL-kontroll ingår också i standardinställningarna. Om du vill använda den här funktionen klickar du på Skapa standardinställningar i Drivrutinsverifierarhanteraren.