Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
NDIS wywołuje funkcję obsługi MiniportIdleNotification, aby powiadomić sterownik, że podstawowa karta sieciowa jest bezczynna. Aby uzyskać więcej informacji na temat tej operacji, zobacz Zarządzanie selektywnym wstrzymaniem powiadomienia o bezczynności NDIS.
Po wydaniu powiadomienia o bezczynności sterownik miniportu realizuje selektywne wstrzymanie usługi NDIS, kiedy spełnione są następujące warunki:
NDIS anuluje powiadomienie o bezczynności przez wywołanie funkcji obsługi MiniportCancelIdleNotification podstawowego sterownika miniportu.
Sterownik miniportu sam kończy powiadomienie o bezczynności. Przyczyny tego działania są specyficzne dla projektowania i wymagań sterownika i adaptera. Na przykład sterownik może ukończyć powiadomienie o bezczynności, jeśli wykryje aktywność odbioru na karcie sieciowej.
Uwaga Sterownik miniportu nie może jawnie anulować powiadomienia o bezczynności. Kiedy usługa NDIS anuluje powiadomienie o bezczynności, sterownik miniportowy musi ukończyć powiadomienie, jak opisano w tym temacie. Aby uzyskać więcej informacji, odszukaj Anulowanie selektywnego zawieszenia notyfikacji bezczynności NDIS.
W obu przypadkach sterownik miniportu musi zakończyć powiadomienie o bezczynności, aby przywrócić adapter do stanu pełnej mocy. Aby ukończyć powiadomienie o bezczynności, sterownik miniportu musi anulować wszystkie pakiety żądań we/wy specyficzne dla magistrali (IRPs), które mogły wcześniej być wysłane dla tego powiadomienia. Na koniec sterownik wywołuje NdisMIdleNotificationComplete, aby powiadomić NDIS, że karta sieciowa może zostać przełączona w stan pełnego zasilania.
Na przykład sterownik miniportu dla karty sieciowej USB kończy procedurę powiadomienia o stanie bezczynności, wykonując następujące kroki:
Sterownik miniportu anuluje oczekujące żądanie bezczynności USB (IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION) IRP. Sterownik miniportu wcześniej wydał ten IRP do bazowego sterownika magistrali USB, gdy NDIS wywołał funkcję MiniportIdleNotification sterownika. Sterownik miniportu anuluje ten IRP, wywołując IoCancelIrp.
Gdy sterownik magistrali anuluje żądanie bezczynności IRP USB, wywołuje procedurę kończenia sterownika miniportu dla IRP. To wywołanie powiadamia sterownik, że protokół IRP został ukończony, a karta sieciowa może przejść do stanu pełnego zasilania. W kontekście procedury zakończenia sterownik wywołuje NdisMIdleNotificationComplete, aby powiadomić NDIS, że karta sieciowa może zostać przeniesiona do stanu pełnego zasilania.
Aby uzyskać więcej informacji na temat implementowania procedury uzupełniania żądania bezczynności USB IRP, zobacz Implementowanie procedury uzupełniania żądania bezczynności USB IRP.
Uwaga W zależności od zależności anulowania żądań bezczynności specyficznych dla magistrali, sterownik miniportu wywołuje NdisMIdleNotificationComplete albo synchronicznie w kontekście wywołania do MiniportCancelIdleNotification lub asynchronicznie po tym, jak MiniportCancelIdleNotification zakończy działanie.
Gdy sterownik miniportu anuluje wszystkie żądania We/Wy specyficzne dla magistrali powiązane z powiadomieniem bezczynności, wywołuje NdisMIdleNotificationComplete. To wywołanie powiadamia NDIS o zakończeniu powiadomienia o stanie bezczynności. NDIS następnie wykonuje operację selektywnego wstrzymania, zmieniając stan karty sieciowej do stanu pełnego zasilania.
Po wywołaniu NdisMIdleNotificationComplete usługa NDIS wykonuje następujące czynności:
NDIS wystawia polecenie IRP_MN_SET_POWER do bazowego sterownika magistrali. Ten IRP żąda kierowcy autobusu, aby ustawił stan zasilania karty sieciowej na PowerDeviceD0.
Usługa NDIS wystawia żądanie ustawienia identyfikatora obiektu (OID) OID_PNP_SET_POWER do sterownika miniportu. W tym żądaniu OID NDIS wskazuje, że karta sieciowa przechodzi teraz do stanu pełnego zasilania NdisDeviceStateD0.
Gdy sterownik obsługuje to żądanie zestawu identyfikatorów OID, przygotowuje adapter do pracy przy pełnej mocy. Obejmuje to przywrócenie silników odbioru i wysyłania do takiego samego stanu, w jakim znajdowały się przed przejściem do stanu niskiej mocy. Następnie sterownik kończy żądanie OID przy użyciu NDIS_STATUS_SUCCESS.
Na poniższej ilustracji przedstawiono kroki, które są wykonywane, gdy sterownik miniportu zakończy powiadomienie o bezczynności dla karty sieciowej USB.
Uwaga Gdy sterownik miniportu zakończy bezczynne powiadomienie, nie powinien wywoływać NdisMIdleNotificationConfirm dla powiadomienia o bezczynności, które wcześniej zakończono wywołaniem NdisMIdleNotificationComplete.