DispatchRead-, DispatchWrite- und DispatchReadWrite-Routinen
Die DispatchRead - und DispatchWrite-Routinen eines Treibers verarbeiten IRPs mit E/A-Funktionscodes von IRP_MJ_READ bzw. IRP_MJ_WRITE. Alternativ kann eine kombinierte DispatchReadWrite-Routine IRPs für beide 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, auf den Daten aus dem System übertragen werden können, muss über eine DispatchWrite-Routine verfügen. Jeder Treiber, der Daten in beide Richtungen überträgt, kann über eine kombinierte DispatchReadWrite-Routine verfügen.
Treiber auf niedrigerer Ebene verarbeiten 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, sofern die Anforderung über gültige Parameter am E/A-Stapelspeicherort des IRP dieses Treibers verfügt.
Ob ein Treiber seine Geräteobjekte für gepufferte oder direkte E/A-Vorgänge einrichtet, wirkt sich auf die Verarbeitung von Übertragungsanforderungen aus. Insbesondere ein Treiber, der direkte E/A für DMA-Vorgänge verwendet, muss möglicherweise große Übertragungsanforderungen in eine Sequenz 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 der niedrigsten Ebene erläutert, die gepufferte E/A und direkte E/A verwenden, sowie in übergeordneten Treibern, die darüber liegen:
Asynchrones Behandeln von Übertragungen
DispatchReadWrite mit gepufferten E/A-Vorgängen
DispatchReadWrite mit direkter E/A
DispatchReadWrite in Higher-Level-Treibern
Zusammenfassung der Lese-/Schreibroutinen für die Verteilung