Freigeben über


Warteschlangenzustände virtueller NDIS-Computer

Dieses Thema bietet eine Übersicht über den Betriebsstatus von NDIS-VM-Warteschlangen (VMQs). Weitere Informationen zu Warteschlangenzuständen finden Sie im Abschnitt Schreiben von VMQ-Treibern im Thema Warteschlangenzustände und Vorgänge.

Für jede Warteschlange muss ein Netzwerkadapter die folgenden Betriebszustände unterstützen:

  • Nicht definiert

  • Zugeordnet

  • Set

  • Angehalten

  • Wird ausgeführt

  • Beenden von DMA

  • Befreien

Die folgende Abbildung zeigt die Beziehungen zwischen diesen Zuständen.

Diagramm mit NDIS-VM-Warteschlangenzuständen und deren Beziehungen

Im Folgenden werden die Adapterzustände definiert:

Undefined
Nicht definiert ist der Anfangszustand einer Warteschlange. In diesem Zustand wird die Warteschlange nicht zugeordnet. Eine Warteschlange (mit Ausnahme der Standardwarteschlange, die immer vorhanden ist) ist nicht definiert, bis der Miniporttreiber eine Warteschlangenzuordnungsanforderung empfängt. Außerdem ist es undefiniert, nachdem der freie Vorgang abgeschlossen ist und alle Empfangshinweise, die gestartet wurden, abgeschlossen sind.

Zugeordnet
Eine Warteschlange befindet sich im Status Zugeordnet nach einer Zuordnungsanforderung und bevor Filter für die Warteschlange festgelegt sind. Der Filter kann auch den Status Zugeordnet eingeben, wenn sich die Warteschlange im Status Set befindet und der letzte Filter in der Warteschlange gelöscht wird. Die Warteschlange wechselt in den Status Angehalten, wenn der Miniporttreiber eine Zuordnungsanforderung vollständig empfängt, während sich der Miniporttreiber im Status Zugeordnet befindet. Die Warteschlange wechselt in den Status Stop DMA, wenn der Miniporttreiber eine kostenlose Warteschlangenanforderung empfängt.

Set
Im Status Set wird eine Warteschlange zugewiesen, und mindestens ein Filter ist für die Warteschlange festgelegt, aber der Miniporttreiber hat noch keine vollständige OID für die Zuordnung erhalten. Die Warteschlange wechselt in den Status Ausgeführt, wenn sie eine Zuordnungsanforderung vollständig empfängt. Die Warteschlange wechselt in den Status Zugeordnet, wenn der letzte Filter in der Warteschlange gelöscht ist. Beachten Sie, dass die Warteschlange nicht freigegeben werden kann, während Filter für die Warteschlange festgelegt sind.

Angehalten
Im Zustand Angehalten wird die Warteschlange zugeordnet, aber ihr Miniporttreiber gibt keine empfangenen Pakete an, da keine Filter für die Warteschlange festgelegt sind. Der Miniporttreiber kann den Status "Angehalten" entweder vom Status "Zugeordnet" oder vom Status "Ausgeführt" wechseln. Die Warteschlange wechselt in den Status Ausführen, wenn sie eine Filtersatzanforderung empfängt. Die Warteschlange wechselt in den Status Stop DMA, wenn sie eine kostenlose Warteschlangenanforderung empfängt.

Wird ausgeführt
Im Status "Ausführen" hat eine Warteschlange Filter festgelegt, die Warteschlangenzuordnung ist abgeschlossen, und der Netzwerkadapter gibt Empfangspakete an. Die Warteschlange wechselt in den Zustand Angehalten, wenn der letzte Filter in der Warteschlange gelöscht wird. Beachten Sie, dass die Warteschlange nicht freigegeben werden kann, während Filter für die Warteschlange festgelegt sind. Außerdem kann der Miniporttreiber den DMA beenden, wenn der letzte Filter gelöscht ist. Der Miniporttreiber sollte in diesem Fall jedoch nicht die DMA-Statusanzeige zum Beenden senden.

Beenden von DMA
Im Status "DMA beenden " hat der Miniporttreiber eine kostenlose Warteschlangenanforderung erhalten, und die DMA-Aktivität muss beendet werden. Der Miniporttreiber muss eine DMA-Statusanzeige zum Beenden senden. Nachdem der Miniporttreiber die status-Anzeige gesendet hat, befindet sich die Warteschlange im Status Freeing. Beachten Sie, dass der DMA wahrscheinlich bereits beendet wurde, als der letzte Filter gelöscht wurde. Der Miniporttreiber sollte jedoch nur den status-Hinweis senden, wenn er die kostenlose Warteschlangenanforderung empfängt.

Befreien
Im Status Freeing wartet ein Miniporttreiber darauf, dass alle ausstehenden Empfangsanzeigen in einer Warteschlange abgeschlossen und die Ressourcen freigegeben werden, die der Warteschlange zugeordnet sind. Nachdem alle Ressourcen freigegeben wurden, wechselt die Warteschlange in den Zustand Undefined.