Udostępnij przez


OID_PNP_SET_POWER

Identyfikator OID OID_PNP_SET_POWER powiadamia sterownik miniportu, że jego podstawowa karta sieciowa zostanie przeniesiona do stanu zasilania urządzenia określonego w InformationBuffer. Stan zasilania urządzenia jest określony jako jedna z następujących wartości NDIS_DEVICE_POWER_STATE:

  • NdisDeviceStateD0
  • NdisDeviceStateD1
  • NdisDeviceStateD2
  • NdisDeviceStateD3

Żądanie OID_PNP_SET_POWER może być poprzedzone żądaniem OID_PNP_QUERY_POWER.

Począwszy od serwera NDIS 6.30, usługa NDIS nie zostanie wstrzymana i ponownie uruchomi sterowniki NDIS w stosie sterowników podczas przejścia stanu zasilania, jeśli spełnione są następujące warunki:

  • Podstawowy sterownik miniportu ustawia flagę NDIS_MINIPORT_ATTRIBUTES_NO_PAUSE_ON_SUSPEND w strukturze NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES. Sterownik przekazuje wskaźnik do tej struktury w wywołaniu funkcji NdisMSetMiniportAttributes.

  • Wszystkie nadmierne sterowniki filtrów dołączone do sterownika miniport obsługują NDIS 6.30 lub nowsze wersje NDIS.

  • Wszystkie nadmiernie obsługiwane sterowniki protokołu powiązane ze sterownikiem miniportu obsługują NDIS 6.30 lub nowsze wersje NDIS.

Przejście do stanu Low-Power (D1-D3)

Gdy sterownik miniportu obsługuje zestaw żądań OID_PNP_SET_POWER, aby przejść do stanu niskiego zasilania, musi wykonać następujące czynności:

  • W pełni przygotuj kartę sieciową dla wskazanego stanu zasilania urządzenia sieciowego. Zadanie wykonywane przez sterownik miniportu w celu wykonania tego zadania jest zależne od urządzenia.

  • Poczekaj na wywołania funkcji NdisMIndicateReceiveNetBufferLists, aby powrócić.

  • Poczekaj na ukończenie żądań wysyłania przetworzonych przez kartę sieciową. Po zakończeniu sterownik miniportu musi wywołać funkcję NdisMSendNetBufferListsComplete. Sterownik powinien ustawić element członkowski stanu w każdej strukturze NET_BUFFER_LIST na odpowiednią wartośćNDIS_STATUS_ Xxx.

  • Wykonaj wszystkie oczekujące żądania wysyłania, wywołując funkcję NdisMSendNetBufferListsComplete. Sterownik musi ustawić element członkowski stanu w każdej strukturze NET_BUFFER_LIST, aby NDIS_STATUS_LOW_POWER_STATE.

  • Odrzuć wszystkie nowe żądania wysyłania wysłane do funkcji MiniportSendNetBufferLists natychmiast, wywołując funkcję NdisMSendNetBufferListsComplete. Sterownik musi ustawić element członkowski stanu w każdej strukturze NET_BUFFER_LIST, aby NDIS_STATUS_LOW_POWER_STATE.

Sterownik miniportu obsługujący usługę NDIS 6.30 i nowsze wersje NDIS musi również wykonywać następujące czynności:

  • Nie czekaj na ukończenie oczekujących wskazówek odbioru za pośrednictwem wywołań funkcji MiniportReturnNetBufferLists. Ponadto sterownik miniportu nie może zmienić struktury NET_BUFFER_LIST ani danych dla pakietów oczekujących na ukończenie.

  • Obsłuż żądanie OID_PNP_SET_POWER do stanu niskiego zasilania ze stanów wstrzymania lub uruchomienia karty. Aby uzyskać więcej informacji na temat tych stanów, zobacz Stany kart miniportowych i operacje.

Przed przejściem karty sieciowej do stanu D3 sterownik miniportu musi wyłączyć wszystko pod kontrolą sterownika miniportu, wykonując następujące zadania:

  • Wyłącz przerwania i aparat DMA na karcie sieciowej.

  • Zatrzymaj aparat odbierania na karcie sieciowej.

  • Nie cofaj przydziału ani nie modyfikuj deskryptorów odbierania i pakietów, które są skojarzone z oczekującymi wskazaniami odbioru.

  • Anuluj wszystkie czasomierze NDIS.

Uwaga sterownik miniportu nie może uzyskać dostępu do karty sieciowej po tym, jak sterownik magistrali przesunął kartę sieciową do stanu D3.

Przejście do stanu Full-Power (D0)

Gdy sterownik miniportu obsługuje zestaw żądań OID_PNP_SET_POWER, aby przejść do stanu pełnego zasilania, musi przywrócić silnik odbierający karty sieciowej do tego samego stanu, w jaki silnik odbierający był przed przejściem karty do stanu niskiego zasilania.

Uwaga Sterownik miniportu nie może uzyskać dostępu do żadnych odbierania ani zmieniać ich, które są skojarzone z oczekującymi wskazaniami odbioru.

NDIS wywołuje funkcję MiniportRe start sterownika miniportu po przejściu do stanu pełnego zasilania tylko wtedy, gdy NDIS nazwał funkcję MiniportPause sterownika przed przejściem do stanu niskiego zasilania.

Uwaga Pośredni sterownik musi zawsze zwracać NDIS_STATUS_SUCCESS do zapytania OID_PNP_SET_POWER. Sterownik pośredni nigdy nie powinien propagować żądania OID_PNP_SET_POWER do bazowego sterownika miniportu.

Kody stanu powrotu

Funkcjaminiportu sterownikaMiniportOidRequest zwraca jedną z następujących wartości dla tego żądania:

Termin Opis

NDIS_STATUS_SUCCESS

Sterownik miniportu zakończył żądanie pomyślnie.

NDIS_STATUS_PENDING

Sterownik miniportu zakończy żądanie asynchronicznie. Po zakończeniu całego przetwarzania przez sterownik miniportu żądanie musi zakończyć się powodzeniem, wywołując NdisMOidRequestComplete funkcji, przekazując NDIS_STATUS_SUCCESS dla parametru Status.

NDIS_STATUS_NOT_ACCEPTED

Sterownik miniportu resetuje się.

Wymagania

Wersja

Obsługiwane w przypadku sieci NDIS 5.1 i NDIS 6.0 i nowszych.

Nagłówek

Ntddndis.h (m.in. Ndis.h)

Zobacz też


MiniportInitializeEx

MiniportPause

MiniportRestart

MiniportReturnNetBufferLists

MiniportSendNetBufferLists

NDIS_DEVICE_POWER_STATE

NdisMIndicateReceiveNetBufferLists

NdisMSendNetBufferListsComplete

NET_BUFFER_LIST