Fungsi WdfIoQueueReadyNotify (wdfio.h)
[Berlaku untuk KMDF dan UMDF]
Metode WdfIoQueueReadyNotify mendaftarkan (atau membatalkan pendaftaran) fungsi panggilan balik peristiwa yang dipanggil kerangka kerja setiap kali antrean I/O tertentu yang sebelumnya kosong menerima satu atau beberapa permintaan I/O.
Sintaks
NTSTATUS WdfIoQueueReadyNotify(
[in] WDFQUEUE Queue,
[in, optional] PFN_WDF_IO_QUEUE_STATE QueueReady,
[in, optional] WDFCONTEXT Context
);
Parameter
[in] Queue
Handel ke objek antrean kerangka kerja.
[in, optional] QueueReady
Penunjuk ke fungsi panggilan balik EvtIoQueueState yang disediakan driver, jika driver mendaftar untuk pemberitahuan siap, atau NULL jika driver membatalkan pendaftaran.
[in, optional] Context
Penunjuk yang tidak ditagih ke informasi konteks yang disediakan driver yang diteruskan kerangka kerja ke fungsi panggilan balik EvtIoQueueState , jika driver mendaftar untuk pemberitahuan siap, atau NULL jika driver membatalkan pendaftaran.
Nilai kembali
WdfIoQueueReadyNotify mengembalikan STATUS_SUCCESS jika operasi berhasil. Jika tidak, metode ini mungkin mengembalikan salah satu nilai berikut:
Menampilkan kode | Deskripsi |
---|---|
|
Driver menyediakan handel yang tidak valid. |
|
Nilai ini dikembalikan jika salah satu hal berikut ini terjadi:
|
Metode ini juga dapat mengembalikan nilai NTSTATUS lainnya.
Pemeriksaan bug terjadi jika driver menyediakan handel objek yang tidak valid.
Keterangan
Setelah driver memanggil WdfIoQueueReadyNotify untuk mendaftarkan fungsi panggilan balik EvtIoQueueState , kerangka kerja memanggil fungsi panggilan balik setiap kali status antrean yang ditentukan berubah dari kosong menjadi tidak kosong. Secara khusus, kerangka kerja memanggil EvtIoQueueState ketika permintaan tiba pada antrean kosong, bahkan jika driver masih memiliki permintaan yang dikirim sebelumnya dari antrean yang belum selesai. Anda dapat memodifikasi IRQL tempat panggilan balik berjalan dengan menentukan ExecutionLevel di WDF_OBJECT_ATTRIBUTES pada waktu pembuatan antrean. Untuk informasi selengkapnya, lihat bagian Keterangandi EVT_WDF_IO_QUEUE_STATE.
Kerangka kerja tidak memanggil EvtIoQueueState saat antrean yang ditentukan dihentikan. Saat antrean dimulai, kerangka kerja memanggil EvtIoQueueState jika antrean tidak kosong.
Driver Anda dapat memanggil WdfIoQueueReadyNotify hanya untuk antrean I/O yang menggunakan metode pengiriman manual .
Fungsi panggilan balik EvtIoQueueState biasanya memanggil WdfIoQueueRetrieveNextRequest atau WdfIoQueueRetrieveRequestByFileObject dalam perulangan untuk mengambil semua permintaan yang telah tiba sejak terakhir kali fungsi panggilan balik dijalankan.
Untuk menghentikan kerangka kerja memanggil fungsi panggilan balik EvtIoQueueState , driver harus memanggil WdfIoQueueReadyNotify lagi dengan parameter QueueReady diatur ke NULL. Namun, driver harus terlebih dahulu memanggil WdfIoQueueStop atau WdfIoQueueStopSynchronously untuk menghentikan antrean I/O. Driver kemudian dapat memanggil WdfIoQueueStart untuk memulai ulang antrean.
Ketika driver memanggil WdfIoQueueReadyNotify untuk mendaftarkan fungsi panggilan balik EvtIoQueueState , dimungkinkan bagi kerangka kerja untuk memanggil fungsi panggilan balik sebelum WdfIoQueueReadyNotify kembali.
Untuk informasi selengkapnya tentang metode WdfIoQueueReadyNotify , lihat Metode Pengiriman untuk Permintaan I/O.
Contoh
Contoh kode berikut mendaftarkan fungsi EvtIoQueueReady driver, sehingga fungsi ini akan dipanggil ketika antrean I/O yang ditentukan menerima permintaan I/O.
Status = WdfIoQueueReadyNotify(
ReadQueue,
EvtIoQueueReady,
myQueueContext
);
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Versi KMDF minimum | 1,0 |
Versi UMDF minimum | 2.0 |
Header | wdfio.h (termasuk Wdf.h) |
Pustaka | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <= DISPATCH_LEVEL |
Aturan kepatuhan DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |