IRP_MJ_WRITE

將資料從系統傳輸至其裝置的每個設備磁碟機都必須處理 DispatchWriteDispatchReadWrite 常式中的寫入要求,如同在這類設備磁碟機上階層式任何較高層級驅動程式一樣。

傳送時

在成功完成建立要求之後的任何時間。

可能是使用者模式應用程式或 Win32 元件具有代表目標裝置物件之檔案物件的控制碼,要求資料傳輸至裝置。 可能,較高層級的驅動程式已建立並設定寫入 IRP。

輸入參數

IRP 中的驅動程式 I/O 堆疊位置會指出在 Parameters.Write.Length上傳送多少個位元組。

某些驅動程式會使用 Parameters.Write.Key 的值,將傳入的寫入要求排序為設備佇列中的驅動程式決定順序,或以驅動程式管理的 IRP 內部佇列排序。

某些類型的驅動程式也會使用 Parameters.Write.ByteOffset的值,這表示傳輸作業的起始位移。 例如,請參閱可安裝檔案系統 (IFS) 檔中的IRP_MJ_WRITE主題。

視基礎設備磁碟機設定目標裝置物件的 標與DO_BUFFERED_IO或DO_DIRECT_IO而定,資料會從下列其中一項傳輸:

  • 如果驅動程式使用緩衝 I/O,則為 Irp-AssociatedIrp.SystemBuffer >上的緩衝區

  • 如果基礎設備磁碟機使用直接 I/O (DMA 或 PIO) , 則 Irp-MdlAddress > 上的 MDL所描述的緩衝區

輸出參數

作業

收到寫入要求時,較高層級的驅動程式會在下一個較低驅動程式的 IRP 中設定 I/O 堆疊位置,或建立並設定一或多個較低驅動程式的額外 IRP。 它可藉由呼叫IoSetCompletionRoutine來設定其IoCompletion常式,這是輸入 IRP 的選擇性,但驅動程式建立 IRP 的必要專案。 然後,驅動程式會使用 IoCallDriver將要求傳遞至下一個較低的驅動程式。

收到寫入要求時,設備磁碟機會將資料從系統記憶體傳輸到其裝置。 設備 磁碟機會將 I /O 狀態欄塊的資訊欄位設定為完成 IRP 時傳輸的位元組數目。

規格需求

標頭

Wdm.h (包括 Wdm.h、Ntddk.h 或 Ntifs.h)

另請參閱

DispatchReadWrite

DispatchWrite

IoCallDriver

IoCompletion

IoSetCompletionRoutine