驅動程式的 DispatchRead 和 DispatchWrite 常式會分別處理 I/O 函式碼為 IRP_MJ_READ 和 IRP_MJ_WRITE 的 IRP。 或者,組合的 DispatchReadWrite 常式可以處理這兩個 I/O 功能代碼的 IRP。
可將資料傳輸至系統的裝置的每個驅動程式都必須有 DispatchRead 常式。 可從系統傳輸資料的裝置的每個驅動程式都必須有 DispatchWrite 常式。 任何在兩個方向傳輸數據的驅動程式都可以有組合的 DispatchReadWrite 常式。
較低層級的驅動程式會以非同步方式處理 IRP_MJ_READ 和 IRP_MJ_WRITE 要求。 因此,最高層級驅動程式中的 DispatchRead 和/或 DispatchWrite 常式必須傳遞這些要求以進行進一步處理,前提是要求在該驅動程式的 IRP I/O 堆疊位置中具有有效的參數。
驅動程式是否為緩衝或直接 I/O 設定其裝置物件,會影響其處理傳輸要求的方式。 特別是,使用直接 I/O 來執行 DMA 作業的驅動程式可能需要將大型傳輸要求分割成一系列較小的傳輸作業,才能滿足 IRP_MJ_READ 或 IRP_MJ_WRITE 要求。 如需詳細資訊,請參閱 輸入/輸出技術。
下列小節討論使用緩衝 I/O 和直接 I/O 的最低層級裝置驅動程式中 DispatchReadWrite 常式的一些設計和實作考慮,以及分層在其上方的較高層級驅動程式中:
DispatchReadWrite 使用緩衝 I/O
DispatchReadWrite 使用 Direct I/O