Membuat Antrean I/O

Objek antrean kerangka kerja mewakili antrean I/O , yang merupakan kontainer untuk permintaan I/O yang diterima driver. Setiap driver dapat membuat satu atau beberapa antrean I/O untuk setiap perangkat. Objek antrean kerangka kerja menentukan serangkaian fungsi panggilan balik peristiwa yang dapat disediakan driver dan serangkaian metode objek yang dapat dipanggil driver.

Ketika kerangka kerja menerima permintaan I/O yang diarahkan ke salah satu perangkat driver, kerangka kerja menempatkan permintaan dalam antrean I/O yang sesuai. Jika driver Anda mendaftarkan satu atau beberapa penangan permintaan , kerangka kerja dapat memberi tahu driver Anda setiap kali permintaan I/O tersedia. Atau, driver Anda dapat memeriksa antrian masukan/keluaran untuk permintaan.

Sebagian besar driver membuat antrean I/O di fungsi panggilan balik EvtDriverDeviceAdd. Untuk membuat antrean I/O untuk perangkat, driver memanggil metode WdfIoQueueCreate pada objek antrean kerangka kerja (yang bertugas membuat objek antrean kerangka kerja). Driver memasok struktur WDF_IO_QUEUE_CONFIG ke metode . Struktur ini berisi informasi konfigurasi tentang antrian, seperti metode penjadwalan antrian dan pointer ke penangan permintaan yang kerangka kerja panggil saat permintaan tersedia dalam antrian. Struktur ini juga menunjukkan apakah antrean akan dikelola dayanya yaitu dan apakah driver mendukung buffer dengan panjang nol untuk permintaan I/O antrean.

Jika driver mengatur DefaultQueue anggota struktur WDF_IO_QUEUE_CONFIG ke TRUE, antrean tersebut akan menjadi antrean I/O default perangkat . Jika driver Anda membuat antrean I/O default, sistem akan menempatkan semua permintaan I/O dari perangkat ke dalam antrean ini, kecuali Anda membuat antrean tambahan untuk menerima beberapa permintaan. Driver dapat memperoleh handle ke antrean I/O default dari perangkat dengan memanggil metode WdfDeviceGetDefaultQueue.

Jika Anda ingin menggunakan lebih dari satu antrean I/O untuk perangkat, driver dapat memanggil WdfIoQueueCreate untuk membuat objek antrean sebanyak yang Anda butuhkan. Jika driver membuat beberapa antrean, ia dapat memanggil WdfDeviceConfigureRequestDispatching, yang menginstruksikan framework untuk mengarahkan jenis-jenis permintaan yang berbeda ke antrean yang berbeda. Misalnya, Anda dapat menentukan bahwa semua permintaan baca akan dikirimkan ke satu antrean dan semua permintaan tulis akan dikirimkan ke antrean lain.

Jika driver Anda membuat serangkaian antrean I/O dan panggilan WdfDeviceConfigureRequestDispatching untuk mengarahkan setiap jenis permintaan yang dapat diterima driver Anda ke antrean tertentu, driver tidak memerlukan antrean default.

Jika driver Anda adalah driver fungsi dan tidak menyediakan antrean I/O untuk permintaan jenis tertentu, maka kerangka sistem akan menyelesaikan permintaan jenis tersebut dengan nilai status penyelesaian STATUS_INVALID_DEVICE_REQUEST. Jika driver Anda adalah driver filter dan telah memanggil WdfFdoInitSetFilter, kerangka kerja secara otomatis meneruskan permintaan ini ke driver berikutnya yang lebih rendah di tumpukan driver. Jadi, misalnya, driver filter yang tidak memproses permintaan baca tidak harus memberikan antrean I/O yang menerima permintaan baca.

Untuk contoh-contoh bagaimana para pengemudi dapat menggunakan antrian I/O, lihat Contoh Penggunaan Antrian I/O.