Freigeben über


WdfIoQueueStopAndPurge-Funktion (wdfio.h)

[Gilt für KMDF und UMDF]

Die WdfIoQueueStopAndPurge-Methode verhindert, dass eine E/A-Warteschlange neue Anforderungen liefert, und bricht vorhandene nicht verarbeitete Anforderungen und treibereigene abbrechbare Anforderungen ab, aber die Warteschlange empfängt und speichert neue Anforderungen.

Syntax

void WdfIoQueueStopAndPurge(
  [in]           WDFQUEUE               Queue,
  [in, optional] PFN_WDF_IO_QUEUE_STATE StopAndPurgeComplete,
  [in, optional] WDFCONTEXT             Context
);

Parameter

[in] Queue

Ein Handle für ein Framework-Warteschlangenobjekt.

[in, optional] StopAndPurgeComplete

Ein Zeiger auf eine vom Treiber bereitgestellte EvtIoQueueState-Rückruffunktion . Dieser Parameter ist optional und kann NULL sein.

[in, optional] Context

Ein nicht typisierter Zeiger auf vom Treiber bereitgestellte Kontextinformationen, die das Framework an die Rückruffunktion EvtIoQueueState übergibt. Dieser Parameter ist optional und kann NULL sein.

Rückgabewert

Keine

Bemerkungen

Die WdfIoQueueStopAndPurge-Methode verhindert, dass eine E/A-Warteschlange E/A-Anforderungen an den Treiber liefert, während der Warteschlange neue Anforderungen hinzugefügt werden können.

Darüber hinaus werden nicht verarbeitete Anforderungen in der Warteschlange und abbrechbare Anforderungen im Besitz des Treibers (Anforderungen, die an den Treiber übermittelt wurden, der nicht abgeschlossen oder nicht wieder in die Warteschlange gestellt wurde) abgebrochen. Wenn neue Anforderungen hinzugefügt werden, während WdfIoQueueStopAndPurge ausgeführt wird, werden diese neuen Anforderungen erst übermittelt, wenn der Treiber WdfIoQueueStart aufruft.

Im Gegensatz dazu bricht die WdfIoQueueStop-Methode nicht verarbeitete Anforderungen in der Warteschlange oder treibereigene abbrechbare Anforderungen ab.

Wenn diese Methode bewirkt, dass das Framework eine nicht verarbeitete Anforderung in einer Warteschlange abbricht, ruft das Framework die EvtIoCanceledOnQueue-Rückruffunktion des Treibers für diese Warteschlange auf, sofern der Treiber eine bereitgestellt hat.

Wenn der Treiber eine EvtIoQueueState-Rückruffunktion bereitstellt, ruft das Framework diese auf, nachdem alle Anforderungen, die an den Treiber übermittelt wurden, abgeschlossen oder abgebrochen wurden.

Mit der WdfIoQueueStopAndPurge-Methode kann die Warteschlange neue Anforderungen empfangen, auch wenn die Warteschlange keine neuen Anforderungen vor dem Treiber WdfIoQueueStopAndPurge empfangen hat. Beispielsweise kann ein Treiber WdfIoQueueDrain aufrufen, wodurch das Framework das Hinzufügen neuer E/A-Anforderungen zur Warteschlange beendet. Der nachfolgende Aufruf von WdfIoQueueStopAndPurge durch den Treiber bewirkt, dass das Framework das Hinzufügen von Anforderungen zur Warteschlange fortsetzen kann.

Im Gegensatz dazu bewirkt WdfIoQueuePurge , dass das Framework das Hinzufügen von E/A-Anforderungen zur angegebenen Warteschlange beendet.

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

Beispiele

Im folgenden Codebeispiel wird eine angegebene E/A-Warteschlange beendet und gelöscht. Nachdem alle Anforderungen, die an den Treiber übermittelt wurden, abgeschlossen oder abgebrochen wurden, ruft das Framework die EvtIoQueueStateStopAndPurge-Funktion eines Treibers auf.

WDFCONTEXT stopandpurgeContext;

stopandpurgeContext = &myContext;

WdfIoQueueStopAndPurge(
               queue,
               EvtIoQueueStateStopAndPurge,
               stopandpurgeContext
               );

Anforderungen

Anforderung Wert
Zielplattform Universell
KMDF-Mindestversion 1.11
UMDF-Mindestversion 2.0
Kopfzeile wdfio.h (einschließen von Wdf.h)
Bibliothek Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
DDI-Complianceregeln ChangeQueueState(kmdf), DriverCreate(kmdf), EvtSurpriseRemoveNoSuspendQueue(kmdf), NoCancelFromEvtSurpriseRemove(kmdf)

Weitere Informationen

EvtIoCanceledOnQueue

EvtIoQueueState

WdfIoQueueStart

WdfIoQueueStopAndPurgeSynchronously