Détection du code pouvant être paginable

Pour détecter le code qui s’exécute à IRQL >= DISPATCH_LEVEL, utilisez la macro PAGED_CODE . En mode débogage, cette macro génère un message si le code s’exécute à IRQL >= DISPATCH_LEVEL. Ajoutez la macro en tant que première instruction d’une routine pour marquer l’ensemble de la routine comme code paginé, comme le montre l’exemple suivant :

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

Pour vous assurer que vous effectuez cette opération correctement, exécutez le vérificateur de pilotes sur votre pilote terminé avec l’option Forcer la vérification IRQL activée. Cette option permet au système de supprimer automatiquement tout le code paginable chaque fois que le pilote déclenche IRQL pour DISPATCH_LEVEL ou au-dessus. À l’aide du vérificateur de pilotes, vous pouvez rapidement trouver les bogues de pilote dans cette zone. Sinon, ces bogues ne sont généralement trouvés que par les clients et ils peuvent souvent être très difficiles à reproduire.