Condividi tramite


Rilevamento del codice che può essere soggetto a paginazione

Per rilevare il codice eseguito in IRQL >= DISPATCH_LEVEL, usare la macro PAGED_CODE. In modalità di debug, questa macro genera un messaggio se il codice viene eseguito in IRQL >= DISPATCH_LEVEL. Aggiungere la macro come prima istruzione in una routine per contrassegnare l'intera routine come codice di paging, come illustrato nell'esempio seguente:

NTSTATUS 
MyDriverXxx( 
    IN OUT PVOID ParseContext OPTIONAL, 
    OUT PHANDLE Handle 
    ) 
{ 
    NTSTATUS Status; 
 
    PAGED_CODE(); 
. 
. 
. 
} 

Per assicurarsi di eseguire correttamente questa operazione, eseguire l' Driver Verifier sul driver finito con l'opzione Forza controllo IRQL abilitata. Questa opzione fa sì che il sistema estrae automaticamente tutto il codice paginabile ogni volta che il driver innalza l'IRQL a DISPATCH_LEVEL o superiore. Usando Driver Verifier, è possibile trovare rapidamente eventuali bug del driver in questa area. In caso contrario, questi bug vengono in genere trovati solo dai clienti e spesso possono essere molto difficili da riprodurre.