Condividi tramite


Rilevamento del codice che può essere paginabile

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 a pagina, 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 il verificatore driver sul driver completato con l'opzione Force IRQL Check abilitata. Questa opzione causa la pagina automatica di tutto il codice visualizzabile a pagina ogni volta che il driver genera IRQL in DISPATCH_LEVEL o versioni successive. Usando il verificatore driver, è possibile trovare rapidamente eventuali bug del driver in questa area. In caso contrario, questi bug vengono in genere trovati solo dai clienti e possono spesso essere molto difficili da riprodurre.