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) |