Detectando código que pode ser paginável

Para detectar o código executado em IRQL >= DISPATCH_LEVEL, use a macro PAGED_CODE . No modo de depuração, essa macro gerará uma mensagem se o código for executado em IRQL >= DISPATCH_LEVEL. Adicione a macro como a primeira instrução em uma rotina para marcar toda a rotina como código paginado, como mostra o exemplo a seguir:

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

Para garantir que você esteja fazendo isso corretamente, execute o Verificador de Driver em seu driver concluído com a opção Forçar Verificação IRQL habilitada. Essa opção faz com que o sistema remova automaticamente todos os códigos pagináveis sempre que o driver gera IRQL para DISPATCH_LEVEL ou superior. Usando o Verificador de Driver, você pode encontrar rapidamente quaisquer bugs de driver nessa área. Caso contrário, esses bugs normalmente serão encontrados apenas por clientes e eles geralmente podem ser muito difíceis de reproduzir.