Programmieren eines Geräts für einen E/A-Vorgang
Verwenden Sie die folgenden allgemeinen Richtlinien zum Entwerfen, Schreiben und Aufrufen von SynchCritSection-Routinen , die ein Gerät für E/A-Vorgänge programmieren:
Eine SynchCritSection-Routine , die das Gerät für E/A-Vorgänge programmiert, muss die Steuerung so schnell wie möglich zurückgeben.
Aus diesem Grund sollte die SynchCritSection-Routine nur das tun, was zum Einrichten des Geräts für E/A erforderlich ist. Daher sollte der Treiber alle IRP-Vorverarbeitung ausführen, Zustandsinformationen für andere Treiberroutinen initialisieren und Hardwareressourcen erwerben, bevor er die SynchCritSection-Routine aufruft .
Ein Gerätetreiber kann über mehrere SynchCritSection-Routinen verfügen, um das Gerät zu programmieren.
Beispielsweise kann der Treiber eines Geräts, für das sich das Einrichten einer Leseanforderung deutlich vom Einrichten bestimmter Gerätesteuerungsanforderungen unterscheidet, über separate SynchCritSection-Routinen verfügen, um sein Gerät für jeden Anforderungstyp zu programmieren.
Jede SynchCritSection-Routine muss die Steuerung so schnell wie möglich zurückgeben, da das Ausführen einer SynchCritSection-Routine verhindert, dass der ISR des Treibers ausgeführt wird.
Sie sollten keine einzelne große , universelle SynchCritSection-Routine mit einer switch-Anweisung oder vielen geschachtelten if. schreiben. Dann.. else-Anweisungen , um zu bestimmen, welche Vorgänge ausgeführt werden oder welche Zustandsinformationen aktualisiert werden sollen. Andererseits sollten Sie das Schreiben zahlreicher SynchCritSection-Routinen vermeiden, die nur ein einzelnes Geräteregister programmieren.