Freigeben über


DispatchRead-, DispatchWrite- und DispatchReadWrite-Routinen

Die DispatchRead - und DispatchWrite-Routinen eines Treibers verarbeiten IRPs mit I/O-Funktionscodes von IRP_MJ_READ bzw. IRP_MJ_WRITE. Alternativ kann eine kombinierte DispatchReadWrite-Routine IRPs für beide dieser E/A-Funktionscodes verarbeiten.

Jeder Treiber eines Geräts, von dem Daten an das System übertragen werden können, muss über eine DispatchRead-Routine verfügen. Jeder Treiber eines Geräts, an das Daten vom System übertragen werden können, muss über eine DispatchWrite-Routine verfügen. Jeder Treiber, der Daten in beide Richtungen überträgt, kann eine kombinierte DispatchReadWrite-Routine aufweisen.

Treiber auf niedrigerer Ebene behandeln IRP_MJ_READ und IRP_MJ_WRITE Anforderungen asynchron. Daher müssen DispatchRead - und/oder DispatchWrite-Routinen in Treibern der höchsten Ebene diese Anforderungen zur weiteren Verarbeitung übergeben, vorausgesetzt, die Anforderung verfügt über gültige Parameter an der I/O-Stapelposition des IRP dieses Treibers.

Ob ein Treiber seine Geräteobjekte für gepufferte oder direkte E/A-Vorgänge einrichtet, wirkt sich darauf aus, wie er Übertragungsanforderungen verarbeitet. Insbesondere muss ein Treiber, der direkte E/A verwendet, um DMA-Vorgänge auszuführen, große Übertragungsanforderungen in eine Folge kleinerer Übertragungsvorgänge aufteilen, um eine IRP_MJ_READ - oder IRP_MJ_WRITE-Anforderung zu erfüllen. Weitere Informationen finden Sie unter "Eingabe-/Ausgabetechniken".

In den folgenden Unterabschnitten werden einige der Entwurfs- und Implementierungsüberlegungen für DispatchReadWrite-Routinen in Gerätetreibern auf niedrigster Ebene erläutert, die gepufferte E/A und direkte E/A verwenden, sowie in über ihnen übereinander angeordneten Treibern auf höherer Ebene:

Asynchrones Behandeln von Übertragungen

DispatchReadWrite mit gepufferten E/A-Vorgängen

DispatchReadWrite mit direkten E/A-Vorgängen

DispatchReadWrite in Higher-Level Treiber

Zusammenfassung der Lese-/Schreib-Dispatch-Routinen