Adapterzustände eines Miniporttreibers
Für jeden von ihm verwalteten Miniportadapter muss ein NDIS-Miniporttreiber die folgenden Betriebszustände unterstützen:
Gestoppt
Herunterfahren
Wird initialisiert...
Angehalten
Neustarten
Wird ausgeführt
Status „Wird angehalten“
Die folgende Abbildung zeigt die Zusammenhänge zwischen diesen Zuständen.
Hinweis Der Vorgang zum Zurücksetzen wirkt sich nicht auf den Betriebszustand des Miniportadapters aus. Außerdem kann sich der Status des Adapters ändern, während ein Zurücksetzungsvorgang ausgeführt wird. Beispielsweise kann NDIS den Pausenhandler eines Treibers aufrufen, wenn ein Zurücksetzungsvorgang ausgeführt wird. In diesem Fall kann der Treiber entweder den Reset- oder den Pausenvorgang in beliebiger Reihenfolge ausführen und dabei die normalen Anforderungen für jeden Vorgang erfüllen. Bei einem Zurücksetzungsvorgang kann der Treiber Anforderungspakete nicht senden oder sie in die Warteschlange stellen und später abschließen. Beachten Sie jedoch, dass ein überlastender Treiber keinen Pausenvorgang abschließen kann, während seine Übertragungspakete ausstehen.
Im Folgenden werden die Adapterzustände definiert:
Angehalten ist der Anfangszustand aller Miniportadapter. Wenn sich ein Miniportadapter im Zustand Angehalten befindet und NDIS die MiniportInitializeEx-Funktion des Treibers aufruft, um den Miniportadapter zu initialisieren, wechselt der Miniportadapter in den Initialisierungszustand. Wenn MiniportInitializeEx fehlschlägt, kehrt der Miniportadapter in den Zustand Angehalten zurück. Wenn sich der Miniportadapter im Zustand Angehalten befindet und NDIS die MiniportHaltEx-Funktion aufruft, kehrt der Miniportadapter in den Zustand Angehalten zurück.
Ein Miniportadapter im Zustand Herunterfahren kann erst verwendet werden, wenn das System heruntergefahren und neu gestartet wird. Wenn sich der Miniportadapter im Zustand Angehalten, Neustarten, Ausführen oder Anhalten befindet und NDIS die MiniportShutdownEx-Funktion des Miniporttreibers aufruft, wechselt der Miniportadapter in den Zustand Herunterfahren.
Im Initialisierungszustand schließt ein Miniporttreiber alle Vorgänge ab, die zum Initialisieren eines Miniportadapters erforderlich sind. Wenn sich ein Miniportadapter im Zustand Angehalten befindet und die NDIS die MiniportInitializeEx-Funktion des Miniporttreibers aufruft, wechselt der Miniportadapter in den Initialisierungszustand. Wenn MiniportInitializeEx erfolgreich ist, wechselt der Miniportadapter in den Zustand Angehalten. Wenn MiniportInitializeEx fehlschlägt, kehrt der Miniportadapter in den Zustand Angehalten zurück.
Wenn sich ein Miniportadapter im Zustand Angehalten befindet, gibt ein Miniporttreiber keine empfangenen Netzwerkdaten an und akzeptiert keine Sendeanforderungen. Wenn sich ein Miniportadapter im Zustand Pausing befindet und der Pausenvorgang abgeschlossen ist, wechselt der Miniportadapter in den Zustand Angehalten. Wenn sich ein Miniportadapter im Initialisierungszustand befindet und MiniportInitializeEx erfolgreich ist, wechselt der Miniportadapter in den Zustand Angehalten. Wenn NDIS die MiniportRestart-Funktion des Miniporttreibers aufruft, wechselt der Miniportadapter vom Zustand Angehalten in den Status Neustarten. Wenn NDIS die MiniportHaltEx-Funktion des Miniporttreibers aufruft, wechselt der Miniportadapter vom Zustand Angehalten in den Zustand Angehalten.
Im Zustand Neustarten schließt ein Miniporttreiber alle Vorgänge ab, die zum Neustarten von Sende- und Empfangsvorgängen für einen Miniportadapter erforderlich sind. Wenn sich ein Miniportadapter im Zustand Angehalten befindet und NDIS die MiniportRestart-Funktion des Treibers aufruft, wechselt der Miniportadapter in den Zustand Neustarten. Wenn der Neustart fehlschlägt, kehrt der Miniportadapter in den Zustand Angehalten zurück. Wenn der Neustart erfolgreich war, wechselt der Miniportadapter in den Status Ausführung.
Im Ausführungszustand führt ein Miniporttreiber die normale Sende- und Empfangsverarbeitung für einen Miniportadapter aus. Wenn sich der Miniportadapter im Status Neustarten befindet und der Treiber bereit ist, Sende- und Empfangsvorgänge auszuführen, wechselt der Miniportadapter in den Status "Ausführen".
Im Zustand Pausing schließt ein Miniporttreiber alle Vorgänge ab, die zum Beenden von Sende- und Empfangsvorgängen für einen Miniportadapter erforderlich sind. Der Treiber muss warten, bis NDIS alle ausstehenden Empfangsanzeigen zurückgibt. Wenn sich ein Miniportadapter im Status Running befindet und NDIS die MiniportPause-Funktion des Treibers aufruft, wechselt der Miniportadapter in den Zustand Anhalten. Ein Miniporttreiber kann bei einem Pausenvorgang nicht fehlschlagen. Wenn der Pausenvorgang abgeschlossen ist, wechselt der Miniportadapter in den Zustand Angehalten.