以非同步方式處理傳輸
除了最高層級的驅動程式之外,所有驅動程式都會以非同步方式處理 IRP_MJ_READ 和 IRP_MJ_WRITE 要求。 即使是最高層級驅動程式中的 DispatchRead 和 DispatchWrite 常式,也無法等候較低層級的驅動程式完成處理非同步讀取或寫入要求;他們必須將這類要求傳遞給較低的驅動程式,並傳回STATUS_PENDING。
同樣地,最低層級設備磁碟機的 DispatchReadWrite 常式必須將傳送要求傳遞至處理裝置 I/O 要求的其他驅動程式常式,然後傳回STATUS_PENDING。
較高層級的驅動程式有時必須設定部分傳輸 IRP,並將它們傳遞至較低的驅動程式。 只有在較低驅動程式已完成部分傳輸要求時,較高層級驅動程式才能完成原始的讀取/寫入 IRP。
例如,需要 SCSI 類別驅動程式的 DispatchReadWrite 常式,才能將超過基礎 HBA 傳輸功能的大型傳輸要求分割成一組部分傳輸要求。 類別驅動程式必須在部分傳輸 IRP 中設定參數,讓 SCSI 埠/迷你埠驅動程式可以在單一 DMA 作業中滿足每個部分傳輸要求。
使用 DMA 或 PIO 的其他設備磁碟機可能也需要自行分割大型傳輸要求。
如需使用 DMA 和 PIO 的詳細資訊,請參閱 輸入/輸出技術。