Modulzustände eines Filtertreibers
Ein NDIS-Filtertreiber muss die folgenden Betriebszustände für jedes Filtermodul (instance eines Filtertreibers) unterstützen, das vom Treiber verwaltet wird:
Getrennt
anfügen?
Angehalten
Neustarten
Wird ausgeführt
Status „Wird angehalten“
Die folgende Abbildung zeigt die Beziehungen zwischen diesen Zuständen.
Im Folgenden werden die Filtermodulzustände definiert:
Getrennt
Der Status Getrennt ist der Anfangszustand eines Filtermoduls. Wenn sich ein Filtermodul in diesem Zustand befindet, kann NDIS die FilterAttach-Funktion des Filtertreibers aufrufen, um das Filtermodul an den Treiberstapel anzufügen. Wenn NDIS die FilterAttach-Funktion eines Filtertreibers aufruft, wechselt das Filtermodul in den Anfügenden Zustand. Wenn der Anfügungsvorgang fehlschlägt, kehrt das Filtermodul in den Zustand Getrennt zurück. Wenn sich das Modul im Zustand Angehalten befindet und NDIS die FilterDetach-Funktion aufruft, kehrt das Modul in den Status Getrennt zurück.
anfügen?
Wenn sich ein Filtermodul im Anfügen-Zustand befindet, bereitet ein Filtertreiber das Anfügen des Moduls an den Treiberstapel vor. Nachdem die Vorbereitung des Filtermoduls abgeschlossen ist, wechselt das Filtermodul in den Zustand Angehalten. Wenn ein Fehler auftritt (z. B. weil die erforderlichen Ressourcen nicht verfügbar sind), kehrt das Filtermodul in den Status Getrennt zurück.
Angehalten
Wenn sich ein Filtermodul im Zustand Angehalten befindet, führt das Filtermodul keine Sende- oder Empfangsvorgänge aus. Wenn sich ein Filtermodul im Anfügen-Zustand befindet und FilterAttach erfolgreich ist, wechselt das Filtermodul in den Zustand Angehalten . Wenn sich ein Filtermodul im Zustand Anhalten befindet und der Pausenvorgang abgeschlossen ist, wechselt das Filtermodul in den Zustand Angehalten . Wenn sich ein Filtermodul im Zustand Angehalten befindet und NDIS die FilterRestart-Funktion des Filtertreibers aufruft, wechselt das Filtermodul in den Status Neustarten . Wenn sich ein Filtermodul im Zustand Angehalten befindet und NDIS den FilterDetach-Handler des Treibers aufruft, wechselt das Filtermodul in den Status Getrennt .
Neustart
Im Status Neustarten schließt ein Filtertreiber alle Vorgänge ab, die zum Neustarten von Sende- und Empfangsvorgängen für ein Filtermodul erforderlich sind. Wenn sich ein Filtermodul im Zustand Angehalten befindet und NDIS die FilterRestart-Funktion des Treibers aufruft, wechselt ein Filtermodul in den Status Neustart. Wenn der Neustart fehlschlägt, kehrt das Filtermodul in den Zustand Angehalten zurück. Wenn der Neustart erfolgreich ist, wechselt das Filtermodul in den Status Wird ausgeführt.
Wird ausgeführt
Im Status Wird ausgeführt führt ein Filtertreiber die normale Sende- und Empfangsverarbeitung für ein Filtermodul aus. Wenn sich das Filtermodul im Status Neustart befindet und der Treiber bereit ist, Sende- und Empfangsvorgänge auszuführen, wechselt das Filtermodul in den Status Wird ausgeführt.
Anhalten
Im Zustand Anhalten schließt ein Filtertreiber alle Vorgänge ab, die zum Beenden von Sende- und Empfangsvorgängen für ein Filtermodul erforderlich sind. Der Filtertreiber muss warten, bis alle ausstehenden Sendeanforderungen abgeschlossen sind und dass NDIS alle ausstehenden Empfangsanzeigen zurückgibt. Wenn sich ein Filtermodul im Zustand Wird ausgeführt befindet und NDIS die FilterPause-Funktion des Treibers aufruft, wechselt das Filtermodul in den Zustand Anhalten. Ein Filtertreiber kann bei einem Pausenvorgang nicht fehlschlagen. Nach Abschluss des Pausenvorgangs wechselt das Filtermodul in den Zustand Angehalten.