Freigeben über


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.