Stany wiązania sterownika protokołu
Sterownik protokołu NDIS musi obsługiwać następujące stany operacyjne dla każdego powiązania zarządzanego przez sterownik:
Niezwiązany
Otwarcie
Bieganie
Zamykanie
Wstrzymywanie
Wstrzymano
Ponowne uruchomienie
Na poniższych ilustracjach przedstawiono relację między tymi stanami.
Poniżej zdefiniowano stany powiązania sterownika protokołu:
Stan Unbound jest początkowym stanem powiązania. W tym stanie sterownik protokołu czeka, aż NDIS wywoła funkcję ProtocolBindAdapterEx. Po wywołaniu przez NDIS ProtocolBindAdapterEx, wiązanie wchodzi w stan Otwierania. Po zakończeniu operacji unbind powiązanie powraca do stanu Unbound ze stanu zamykania.
W stanie : Otwarcie sterownik protokołu przydziela zasoby do powiązania i próbuje otworzyć adapter miniportu. Po wywołaniu funkcji ProtocolBindAdapterEx sterownika przez NDIS, powiązanie wchodzi w stan otwierania. Jeśli sterownik protokołu nie może się powiązać z kartą miniportu, powiązanie powróci do stanu Niepowiązany. Jeśli sterownik zostanie pomyślnie powiązany z adapterem miniportu, powiązanie przechodzi do stanu Wstrzymano.
W stanie Uruchomionym sterownik protokołu wykonuje standardowe przetwarzanie wysyłania i odbierania dla połączenia. Gdy powiązanie jest w stanie ponownego uruchamiania, a sterownik jest gotowy do wykonywania operacji wysyłania i odbierania, powiązanie wchodzi w stan działania.
W stanie Zamykanie sterownik protokołu zamyka powiązanie z adapterem miniportu, a następnie zwalnia zasoby związane z powiązaniem. Po tym jak NDIS wywołuje funkcję ProtocolUnbindAdapterEx sterownika protokołu, powiązanie wchodzi w stan zamykania się. Po zakończeniu operacji odłączania przez sterownik protokołu, powiązanie przechodzi w stan Niepowiązany.
W stanie wstrzymania sterownik protokołu wykonuje wszystkie operacje wymagane do zatrzymania operacji wysyłania i odbierania dla powiązania. Gdy powiązanie znajduje się w stanie uruchomiony i NDIS wysyła sterownikowi protokołu powiadomienie o wstrzymaniu PnP, powiązanie wchodzi w stan wstrzymanie. Sterownik protokołu musi czekać na ukończenie wszystkich zaległych żądań wysyłania. Sterownik protokołu nie może zakończyć się niepowodzeniem operacji wstrzymania. Po zakończeniu operacji wstrzymania powiązanie przechodzi w stan Wstrzymano.
W stanie Pauza sterownik protokołu nie wykonuje operacji wysyłania ani odbierania dla danego powiązania. Gdy powiązanie znajduje się w stanie Wstrzymywania i operacja wstrzymania zostanie ukończona, powiązanie przechodzi w stan Wstrzymano. Gdy powiązanie znajduje się w stanie Otwierania i operacja otwierania zakończy się pomyślnie, powiązanie przechodzi w stan Wstrzymane. Jeśli usługa NDIS wysyła sterownikowi protokołu powiadomienie o ponownym uruchomieniu PnP dla powiązania, powiązanie wchodzi w stan ponowne uruchamianie. Jeśli NDIS wywołuje funkcję sterownika ProtocolUnbindAdapterEx, powiązanie wchodzi w stan zamykania.
W stanie Restart sterownik protokołu wykonuje wszystkie operacje wymagane do wznowienia funkcji wysyłania i odbierania dla powiązania. Gdy powiązanie jest w stanie Wstrzymanie i NDIS wysyła sterownikowi protokołu powiadomienie o ponownym uruchomieniu PnP, powiązanie przechodzi w stan Ponowne uruchamianie. Jeśli ponowne uruchomienie zakończy się niepowodzeniem, powiązanie powróci do stanu Wstrzymano. Jeśli ponowne uruchomienie zakończy się pomyślnie, powiązanie zostanie wprowadzone w stanie Uruchomiony.