Freigeben über


WdfIoQueueDrainSynchronously-Funktion (wdfio.h)

[Gilt für KMDF und UMDF]

Die WdfIoQueueDrainSynchronously-Methode bewirkt, dass das Framework die Warteschlange von E/A-Anforderungen an eine E/A-Warteschlange beendet, während bereits in die Warteschlange eingereihte Anforderungen übermittelt und verarbeitet werden können. Die Methode gibt zurück, nachdem alle Anforderungen abgeschlossen oder abgebrochen wurden.

Syntax

VOID WdfIoQueueDrainSynchronously(
  [in] WDFQUEUE Queue
);

Die Parameter

[in] Queue

Ein Handle zu einem Framework-Warteschlangenobjekt.

Rückgabewert

Nichts

Bemerkungen

Wenn der Treiber ein ungültiges Objekthandle bereitstellt, tritt eine Fehlerüberprüfung auf.

Nachdem ein Treiber WdfIoQueueDrainSynchronouslyaufgerufen hat, beendet das Framework das Hinzufügen von E/A-Anforderungen zur angegebenen Warteschlange. Wenn das Framework zusätzliche Anforderungen für die Warteschlange empfängt, wird es mit einem Abschlussstatuswert von STATUS_INVALID_DEVICE_STATE abgeschlossen.

Der Treiber sollte keine andere Methode aufrufen, die den Warteschlangenzustand ändert, z. B. WdfIoQueuePurge- oder WdfIoQueueStart-, bevor der Aufruf von WdfIoQueueDrainSynchronous ly zurückgegeben wurde.

Als bewährte Methode sollten Sie nur WdfIoQueueDrainSynchronously aufrufen, wenn Sie sicher sind, dass die ausstehenden E/A-Anforderungen der Warteschlange zeitnah abgeschlossen werden. Verwenden Sie andernfalls WdfIoQueuePurgeSynchronously. Weitere Informationen finden Sie unter Verwalten von E/A-Warteschlangen.

Nachdem ein Treiber eine E/A-Warteschlange entladen hat, kann sie die Warteschlange neu starten, indem sie WdfIoQueueStartaufruft.

Rufen Sie nicht WdfIoQueueDrainSynchronously aus den folgenden Funktionen des Warteschlangenobjektereignisrückrufs auf, unabhängig von der Warteschlange, der die Ereignisrückruffunktion zugeordnet ist:

EvtIoDefaultEvtIoDeviceControlEvtIoInternalDeviceControlEvtIoReadEvtIoWrite

Beispiele

Im folgenden Codebeispiel wird eine E/A-Warteschlange entladen.

WdfIoQueueDrainSynchronously(queue);

Anforderungen

Anforderung Wert
Zielplattform universell
Minimale KMDF-Version 1.0
Mindest-UMDF-Version 2.0
Kopfzeile wdfio.h (einschließen Wdf.h)
Bibliothek Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
DDI-Complianceregeln ChangeQueueState(kmdf), DriverCreate(kmdf), EvtSurpriseRemoveNoSuspendQueue(kmdf), KmdfIrql (kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), NoCancelFromEvtSurpriseRemove(kmdf)

Siehe auch

WdfIoQueueDrain