Fungsi WdfIoQueueDrainSynchronously (wdfio.h)

[Berlaku untuk KMDF dan UMDF]

Metode WdfIoQueueDrainSynchronously menyebabkan kerangka kerja berhenti mengantre permintaan I/O ke antrean I/O, sambil memungkinkan permintaan yang sudah diantrekan dikirim dan diproses. Metode ini kembali setelah semua permintaan selesai atau dibatalkan.

Sintaks

void WdfIoQueueDrainSynchronously(
  [in] WDFQUEUE Queue
);

Parameter

[in] Queue

Handel ke objek antrean kerangka kerja.

Nilai kembali

Tidak ada

Keterangan

Pemeriksaan bug terjadi jika driver menyediakan handel objek yang tidak valid.

Setelah driver memanggil WdfIoQueueDrainSynchronously, kerangka kerja berhenti menambahkan permintaan I/O ke antrean yang ditentukan. Jika kerangka kerja menerima permintaan tambahan untuk antrean, kerangka kerja menyelesaikannya dengan nilai status penyelesaian STATUS_INVALID_DEVICE_STATE.

Driver tidak boleh memanggil metode lain yang mengubah status antrean, seperti WdfIoQueuePurge atau WdfIoQueueStart, sebelum panggilan ke WdfIoQueueDrainSynchronously telah kembali.

Sebagai praktik terbaik, Anda hanya boleh memanggil WdfIoQueueDrainSynchronously ketika Anda yakin bahwa permintaan I/O antrean yang tertunda akan selesai tepat waktu. Jika tidak, gunakan WdfIoQueuePurgeSynchronously. Untuk informasi selengkapnya, lihat Mengelola Antrean I/O.

Setelah driver mengosongkan antrean I/O, driver dapat memulai ulang antrean dengan memanggil WdfIoQueueStart.

Jangan panggil WdfIoQueueDrainSynchronously dari fungsi panggilan balik peristiwa objek antrean berikut, terlepas dari antrean yang dikaitkan dengan fungsi panggilan balik peristiwa:

EvtIoDefaultEvtIoDeviceControlEvtIoInternalDeviceControlEvtIoReadEvtIoWrite

Contoh

Contoh kode berikut menguras antrean I/O.

WdfIoQueueDrainSynchronously(queue);

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 PASSIVE_LEVEL
Aturan kepatuhan DDI ChangeQueueState(kmdf), DriverCreate(kmdf), EvtSurpriseRemoveNoSuspendQueue(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), NoCancelFromEvtSurpriseRemove(kmdf)

Lihat juga

WdfIoQueueDrain