Rutinitas DispatchRead, DispatchWrite, dan DispatchReadWrite

Rutinitas DispatchRead dan DispatchWrite driver menangani IRP dengan kode fungsi I/O masing-masing IRP_MJ_READ dan IRP_MJ_WRITE. Atau, gabungan rutinitas DispatchReadWrite dapat menangani RUNPS untuk kedua kode fungsi I/O ini.

Setiap driver perangkat tempat data dapat ditransfer ke sistem harus memiliki rutinitas DispatchRead . Setiap driver perangkat tempat data dapat ditransfer dari sistem harus memiliki rutinitas DispatchWrite . Setiap driver yang mentransfer data di kedua arah dapat memiliki gabungan rutinitas DispatchReadWrite .

Driver tingkat bawah menangani permintaan IRP_MJ_READ dan IRP_MJ_WRITE secara asinkron. Oleh karena itu, rutinitas DispatchRead dan/atau DispatchWrite dalam driver tingkat tertinggi harus meneruskan permintaan ini untuk pemrosesan lebih lanjut, asalkan permintaan memiliki parameter yang valid di lokasi tumpukan I/O driver dari IRP.

Apakah driver mengatur objek perangkatnya untuk I/O buffer atau langsung memengaruhi caranya menangani permintaan transfer. Secara khusus, driver yang menggunakan I/O langsung untuk melakukan operasi DMA mungkin perlu membagi permintaan transfer besar menjadi urutan operasi transfer yang lebih kecil untuk memenuhi permintaan IRP_MJ_READ atau IRP_MJ_WRITE . Untuk informasi selengkapnya, lihat Teknik Input/Output.

Subbagian berikut membahas beberapa pertimbangan desain dan implementasi untuk rutinitas DispatchReadWrite dalam driver perangkat tingkat terendah yang menggunakan I/O buffer dan I/O langsung, serta pada driver tingkat lebih tinggi yang berlapis di atasnya:

Menangani Transfer Secara Asinkron

DispatchReadWrite Menggunakan I/O Buffered

DispatchReadWrite Menggunakan I/O Langsung

DispatchReadWrite di driver Higher-Level

Ringkasan Rutinitas Pengiriman Baca/Tulis