Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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