Schreiben von SynchCritSection-Routinen
Treiber verwenden ihre SynchCritSection-Routinen für zwei grundlegende Zwecke:
Programmieren eines Geräts für einen E/A-Vorgang
Zugreifen auf Freigegebene Zustandsinformationen
Wie bei einer ISR muss eine SynchCritSection-Routine so schnell wie möglich ausgeführt werden und nur das tun, was zum Einrichten von Geräteregistern oder aktualisieren von Kontextdaten erforderlich ist, bevor sie zurückgegeben wird.
Da KeSynchronizeExecution die Interrupt-Spinsperre eines Gerätetreibers während der Ausführung der SynchCritSection-Routine enthält, kann die ISR des Treibers erst ausgeführt werden, wenn die SynchCritSection-Routine die Steuerung zurückgibt.
Für alle empfangenen IRP sollte ein Gerätetreiber so viel E/A-Verarbeitung wie möglich ausführen, entweder am IRQL PASSIVE_LEVEL in seinen Dispatchroutinen (oder möglicherweise gerätededizierten Threads) oder bei IRQL DISPATCH_LEVEL in seinen StartIo-Routinen und DPC-Routinen.
Weitere Informationen zur Synchronisierung kritischer Abschnitte finden Sie unter Verwenden von Drehsperren: Ein Beispiel.