除了最高層級驅動程式之外,所有驅動程式都會以異步方式處理 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 的詳細資訊,請參閱 輸入/輸出技術。