Bagikan melalui


Rutinitas DispatchRead, DispatchWrite, dan DispatchReadWrite

Fungsi DispatchRead dan DispatchWrite driver menangani IRP dengan kode fungsi I/O IRP_MJ_READ dan IRP_MJ_WRITE. Atau, rutin gabungan DispatchReadWrite dapat menangani IRP 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 rutinitas DispatchReadWrite gabungan.

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 menyiapkan 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 Berpenyangga

DispatchReadWrite Menggunakan I/O Langsung

DispatchReadWrite pada Driver Higher-Level

Ringkasan Rutinitas Pengiriman Baca/Tulis