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