E/A-Warteschlangenzustände
Das Framework definiert die folgenden Zustände für E/A-Warteschlangen:
Im leerlauf
Die E/A-Warteschlange enthält keine E/A-Anforderungen, und der Treiber verarbeitet keine Anforderungen, die er von der E/A-Warteschlange empfangen hat.
Bereit
Die E/A-Warteschlange kann E/A-Anforderungen vom Framework empfangen und E/A-Anforderungen an den Treiber übermitteln.
Gestoppt
Die E/A-Warteschlange kann E/A-Anforderungen vom Framework empfangen, aber keine E/A-Anforderungen an den Treiber übermitteln, und der Treiber verarbeitet keine Anforderungen, die er von der E/A-Warteschlange erhalten hat.
Entwässert
Die E/A-Warteschlange ist leer, sie kann keine neuen E/A-Anforderungen vom Framework empfangen, und alle E/A-Anforderungen, die sich in der E/A-Warteschlange befanden, wurden an den Treiber übermittelt.
Gelöscht
Die E/A-Warteschlange ist leer, sie kann keine neuen E/A-Anforderungen vom Framework empfangen, und alle E/A-Anforderungen, die sich in der E/A-Warteschlange befanden, wurden abgebrochen.
Das Framework kann eine neue E/A-Warteschlange auf den Status Bereit festlegen, nachdem Ihr Treiber WdfIoQueueCreate aufgerufen hat. Stromverwaltete E/A-Warteschlangen wechseln jedoch nur dann in den Status Bereit, wenn sich das Gerät im Betriebszustand (D0) befindet.
Der Treiber kann den Status einer E/A-Warteschlange wie folgt ändern:
Aufrufen von WdfIoQueueStop oder WdfIoQueueStopSynchronously , um die Warteschlange in ihren beendeten Zustand zu versetzen.
Aufrufen von WdfIoQueueDrain oder WdfIoQueueDrainSynchronously , um die Warteschlange in den Zustand "Leer" zu versetzen.
Aufrufen von WdfIoQueuePurge oder WdfIoQueuePurgeSynchronously , um die Warteschlange in den gelöschten Zustand zu versetzen.
Aufrufen von WdfIoQueueStart , um die Warteschlange in den Zustand "Bereit" zurückzugeben.
Um den aktuellen Status einer E/A-Warteschlange zu erhalten, kann Ihr Treiber WdfIoQueueGetState aufrufen.