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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk