Bagikan melalui


Penangan Permintaan

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

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

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

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

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

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

EvtIoDefault
Kerangka kerja memanggil fungsi panggilan balik EvtIoDefault antrean I/O ketika ada permintaan yang tersedia, jika driver belum menyediakan fungsi panggilan balik khusus jenis permintaan terkait.

Driver mendaftarkan fungsi panggilan balik ketika memanggil WdfIoQueueCreate untuk membuat antrean I/O untuk perangkat.

Masing-masing fungsi panggilan balik ini menerima dua argumen input: handel ke permintaan I/O yang dikirimkan kerangka kerja ke driver dan handel ke antrean I/O yang menyimpan permintaan. Fungsi panggilan balik dapat menentukan perangkat target dengan memanggil WdfIoQueueGetDevice.

Kerangka kerja memanggil penangan permintaan driver Anda dalam konteks utas arbitrer. Driver tidak boleh menunggu jangka waktu yang lama saat dijalankan dalam konteks utas arbitrer. Dalam beberapa kasus, driver Anda mungkin menggunakan objek dispatcher kernel sebagai mekanisme sinkronisasi. Untuk informasi tentang kapan driver Anda dapat menunggu objek dispatcher, dan apa yang harus dilakukan ketika tidak dapat, lihat Pengantar Objek Dispatcher Kernel.