IRP_MJ_WRITE
將資料從系統傳輸至其裝置的每個設備磁碟機都必須處理 DispatchWrite 或 DispatchReadWrite 常式中的寫入要求,如同在這類設備磁碟機上階層式任何較高層級驅動程式一樣。
傳送時
在成功完成建立要求之後的任何時間。
可能是使用者模式應用程式或 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) |