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 der Warteschlange befindliche 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
);

Parameter

[in] Queue

Ein Handle für ein Framework-Warteschlangenobjekt.

Rückgabewert

Keine

Bemerkungen

Eine Fehlerüberprüfung tritt auf, wenn der Treiber ein ungültiges Objekthandle bereitstellt.

Nachdem ein Treiber WdfIoQueueDrainSynchronously aufgerufen 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, schließt es diese mit dem Status-Wert STATUS_INVALID_DEVICE_STATE ab.

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

Als bewährte Methode sollten Sie WdfIoQueueDrainSynchronously nur 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 er die Warteschlange durch Aufrufen von WdfIoQueueStart neu starten.

Rufen Sie WdfIoQueueDrainSynchronly nicht aus den folgenden Ereignisrückruffunktionen des Warteschlangenobjekts 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
KMDF-Mindestversion 1.0
UMDF-Mindestversion 2.0
Kopfzeile wdfio.h (einschließen von 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)

Weitere Informationen

WdfIoQueueDrain