Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse 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