Erkennen von Code, der auslagerungsfähig sein kann

Verwenden Sie das Makro PAGED_CODE, um Code zu erkennen, der unter IRQL >= DISPATCH_LEVEL ausgeführt wird. Im Debugmodus generiert dieses Makro eine Meldung, wenn der Code unter IRQL >= DISPATCH_LEVEL ausgeführt wird. Fügen Sie das Makro als erste Anweisung in einer Routine hinzu, um die gesamte Routine als ausgelagerten Code zu markieren, wie das folgende Beispiel zeigt:

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

Um sicherzustellen, dass Sie dies ordnungsgemäß tun, führen Sie die Treiberüberprüfung für Ihren fertigen Treiber mit aktivierter Option IRQL-Überprüfung erzwingen aus. Diese Option bewirkt, dass das System automatisch den gesamten auslagerungsfähigen Code ausgibt, wenn der Treiber IRQL auf DISPATCH_LEVEL oder höher anhebt. Mithilfe der Treiberüberprüfung können Sie alle Treiberfehler in diesem Bereich schnell finden. Andernfalls werden diese Fehler in der Regel nur von Kunden gefunden und sind häufig sehr schwer zu reproduzieren.