Fungsi WdfIoQueueStopAndPurge (wdfio.h)
[Berlaku untuk KMDF dan UMDF]
Metode WdfIoQueueStopAndPurge mencegah antrean I/O mengirimkan permintaan baru dan membatalkan permintaan yang tidak diolah dan permintaan yang dapat dibatalkan milik driver yang ada, tetapi antrean menerima dan menyimpan permintaan baru.
Sintaks
void WdfIoQueueStopAndPurge(
[in] WDFQUEUE Queue,
[in, optional] PFN_WDF_IO_QUEUE_STATE StopAndPurgeComplete,
[in, optional] WDFCONTEXT Context
);
Parameter
[in] Queue
Handel ke objek antrean kerangka kerja.
[in, optional] StopAndPurgeComplete
Penunjuk ke fungsi panggilan balik EvtIoQueueState yang disediakan driver. Parameter ini bersifat opsional dan dapat berupa NULL.
[in, optional] Context
Penunjuk yang tidak dity ke informasi konteks yang disediakan driver yang diteruskan kerangka kerja ke fungsi panggilan balik EvtIoQueueState . Parameter ini bersifat opsional dan dapat berupa NULL.
Nilai kembali
Tidak ada
Keterangan
Metode WdfIoQueueStopAndPurge mencegah antrean I/O mengirimkan permintaan I/O ke driver sambil memungkinkan permintaan baru ditambahkan ke antrean.
Selain itu, membatalkan permintaan yang tidak diolah dalam antrean dan permintaan yang dapat dibatalkan milik driver (permintaan yang dikirimkan kepada driver yang belum selesai atau diantrekan kembali). Jika permintaan baru ditambahkan saat WdfIoQueueStopAndPurge sedang berlangsung, permintaan baru ini tidak dikirimkan sampai driver memanggil WdfIoQueueStart.
Sebaliknya, metode WdfIoQueueStop tidak membatalkan permintaan yang tidak diolah dalam antrean atau permintaan yang dapat dibatalkan milik driver.
Jika metode ini menyebabkan kerangka kerja membatalkan permintaan yang tidak diolah dalam antrean, kerangka kerja memanggil fungsi panggilan balik EvtIoCanceledOnQueue driver untuk antrean tersebut, jika driver telah menyediakannya.
Jika driver menyediakan fungsi panggilan balik EvtIoQueueState , kerangka kerja memanggilnya setelah semua permintaan yang dikirimkan ke driver telah selesai atau dibatalkan.
Metode WdfIoQueueStopAndPurge memungkinkan antrean untuk menerima permintaan baru, bahkan jika antrean tidak menerima permintaan baru sebelum driver bernama WdfIoQueueStopAndPurge. Misalnya, driver mungkin memanggil WdfIoQueueDrain, yang menyebabkan kerangka kerja berhenti menambahkan permintaan I/O baru ke antrean. Panggilan berikutnya dari driver WdfIoQueueStopAndPurge menyebabkan kerangka kerja melanjutkan penambahan permintaan ke antrean.
Sebaliknya, WdfIoQueuePurge menyebabkan kerangka kerja berhenti menambahkan permintaan I/O ke antrean yang ditentukan.
Pemeriksaan bug terjadi jika driver menyediakan handel objek yang tidak valid.
Contoh
Contoh kode berikut menghentikan dan menghapus menyeluruh antrean I/O tertentu. Setelah semua permintaan yang dikirimkan ke driver telah selesai atau dibatalkan, kerangka kerja memanggil fungsi EvtIoQueueStateStopAndPurge driver.
WDFCONTEXT stopandpurgeContext;
stopandpurgeContext = &myContext;
WdfIoQueueStopAndPurge(
queue,
EvtIoQueueStateStopAndPurge,
stopandpurgeContext
);
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Versi KMDF minimum | 1.11 |
Versi UMDF minimum | 2.0 |
Header | wdfio.h (termasuk Wdf.h) |
Pustaka | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <=DISPATCH_LEVEL |
Aturan kepatuhan DDI | ChangeQueueState(kmdf), DriverCreate(kmdf), EvtSurpriseRemoveNoSuspendQueue(kmdf), NoCancelFromEvtSurpriseRemove(kmdf) |