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)

Lihat juga

EvtIoCanceledOnQueue

EvtIoQueueState

WdfIoQueueStart

WdfIoQueueStopAndPurgeSynchronously