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 dititipkan 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.

Mengembalikan nilai

WdfIoQueueReadyNotify mengembalikan STATUS_SUCCESS jika operasi berhasil. Jika tidak, metode ini mungkin mengembalikan salah satu nilai berikut:

Menampilkan kode Deskripsi
STATUS_INVALID_PARAMETER
Driver menyediakan handel yang tidak valid.
STATUS_INVALID_DEVICE_REQUEST
Nilai ini dikembalikan jika salah satu hal berikut ini terjadi:
 

Metode ini juga mungkin 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

   
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)

Lihat juga

EvtIoQueueState

WDF_IO_QUEUE_CONFIG

WdfIoQueueRetrieveNextRequest

WdfIoQueueRetrieveRequestByFileObject