Penangan Permintaan

Jika driver Anda telah menentukan metode pengiriman berurutan atau paralel untuk antrean I /O, kerangka kerja memanggil fungsi callback yang disediakan driver setiap kali siap untuk mengirimkan salah satu permintaan antrean ke pengemudi.

Untuk setiap antrean I/O, driver dapat menyediakan satu atau beberapa fungsi callback berikut, yang disebut penangan permintaan:

EvtIoRead
Kerangka kerja memanggil fungsi callback EvtIoRead antrean I/O saat permintaan baca tersedia dalam antrean.

EvtIoWrite
Kerangka kerja memanggil fungsi callback EvtIoWrite antrean I/O saat permintaan tulis tersedia dalam antrean.

EvtIoDeviceControl
Kerangka kerja memanggil fungsi callback EvtIoDeviceControl antrean I/O saat permintaan kontrol I/O perangkat tersedia dalam antrean.

EvtIoInternalDeviceControl
Kerangka kerja memanggil fungsi callback EvtIoInternalDeviceControl antrean I/O saat permintaan kontrol I/O perangkat internal tersedia dalam antrean.

EvtIoDefault
Kerangka kerja memanggil fungsi callback EvtIoDefault antrean I/O saat permintaan apa pun tersedia, jika driver belum menyediakan fungsi callback khusus jenis permintaan terkait.

Driver mendaftarkan fungsi callback saat memanggil WdfIoQueueCreate untuk membuat antrean I/O untuk perangkat.

Masing-masing fungsi callback ini menerima dua argumen input: pegangan ke permintaan I / O yang dikirimkan kerangka kerja ke driver dan pegangan ke antrian I / O yang menahan permintaan. Fungsi callback dapat menentukan perangkat target dengan memanggil WdfIoQueueGetDevice.

Kerangka kerja memanggil penangan permintaan driver Anda dalam konteks utas arbitrer. Pengemudi tidak boleh menunggu untuk jangka waktu yang lama saat mengeksekusi dalam konteks utas sewenang-wenang. Dalam beberapa kasus, driver Anda mungkin menggunakan objek operator kernel sebagai mekanisme sinkronisasi. Untuk informasi tentang kapan driver Anda dapat menunggu objek operator, dan apa yang harus dilakukan ketika tidak bisa, lihat Pengenalan Objek Pengiriman Kernel.