IRP_MJ_WRITE

Setiap driver perangkat yang mentransfer data dari sistem ke perangkatnya harus menangani permintaan tulis dalam rutinitas DispatchWrite atau DispatchReadWrite , karena harus ada driver tingkat lebih tinggi yang berlapis di atas driver perangkat tersebut.

Ketika Dikirim

Setiap kali setelah keberhasilan penyelesaian permintaan buat.

Mungkin, aplikasi mode pengguna atau komponen Win32 dengan handel untuk objek file yang mewakili objek perangkat target telah meminta transfer data ke perangkat. Mungkin, driver tingkat yang lebih tinggi telah membuat dan menyiapkan IRP tulis.

Parameter Input

Lokasi tumpukan I/O driver di IRP menunjukkan berapa banyak byte yang akan ditransfer di Parameters.Write.Length.

Beberapa driver menggunakan nilai di Parameters.Write.Key untuk mengurutkan permintaan tulis masuk ke dalam urutan yang ditentukan driver dalam antrean perangkat atau dalam antrean internal IRP yang dikelola driver.

Jenis driver tertentu juga menggunakan nilai di Parameters.Write.ByteOffset, yang menunjukkan offset awal untuk operasi transfer. Misalnya, lihat topik IRP_MJ_WRITE dalam dokumentasi Installable File System (IFS).

Bergantung pada apakah driver perangkat yang mendasar menyiapkan Bendera objek perangkat target dengan DO_BUFFERED_IO atau dengan DO_DIRECT_IO, data ditransfer dari salah satu hal berikut:

  • Buffer di Irp-AssociatedIrp.SystemBuffer>, jika driver menggunakan I/O buffer

  • Buffer yang dijelaskan oleh MDL di Irp-MdlAddress>, jika driver perangkat yang mendasar menggunakan I/O langsung (DMA atau PIO)

Parameter Output

Tidak ada

Operasi

Pada penerimaan permintaan tulis, driver tingkat yang lebih tinggi mengatur lokasi tumpukan I/O di IRP untuk driver yang lebih rendah berikutnya, atau membuat dan menyiapkan IRP tambahan untuk satu atau beberapa driver yang lebih rendah. Ini dapat mengatur rutinitas IoCompletion-nya , yang bersifat opsional untuk IRP input tetapi diperlukan untuk IRP yang dibuat driver, dengan memanggil IoSetCompletionRoutine. Kemudian, driver meneruskan permintaan ke driver berikutnya yang lebih rendah dengan IoCallDriver.

Pada penerimaan permintaan tulis, driver perangkat mentransfer data dari memori sistem ke perangkatnya. Driver perangkat mengatur bidang Informasi blok status I/O ke jumlah byte yang ditransfer ketika menyelesaikan IRP.

Persyaratan

Header

Wdm.h (termasuk Wdm.h, Ntddk.h, atau Ntifs.h)

Lihat juga

DispatchReadWrite

DispatchWrite

IoCallDriver

IoCompletion

IoSetCompletionRoutine