Udostępnij przez


Konfigurowanie zarządzania energią NetAdapterCx

Wszystkie sterowniki klienta NetAdapterCx to sterowniki programu Windows Driver Framework (WDF) z funkcją zarządzania energią podobną do wszystkich sterowników WDF. Sterowniki NetAdapterCx wymagają dodatkowych konfiguracji zasilania specyficznych dla sieci zgodnie z opisem w tym artykule.

Typowe urządzenie sieciowe obsługuje trzy typowe funkcje zarządzania energią:

Ustawianie możliwości zasilania karty sieciowej

Po skonfigurowaniu funkcji zarządzania energią WDF następnym krokiem jest ustawienie możliwości zasilania karty sieciowej. Możliwości zasilania są podzielone na dwie kategorie: możliwości odciążania protokołu niskiej mocy i możliwości budzenia.

Możliwości odciążania protokołu o niskiej mocy

Aby uzyskać podstawowe informacje na temat sposobu korzystania z tej funkcji przez stos sieciowy systemu Windows, zobacz Protocol Offloads for NDIS Power Management.

Sterowniki klienta ustawiają możliwości odciążania protokołu niskiego zużycia energii, wywołując następujące metody odpowiednie dla ich sprzętu:

Możliwości uruchamiania

Sterowniki klienta wywołają dowolną z następujących metod, aby ustawić możliwości wznawiania obsługiwane przez ich sprzęt, gdy urządzenie jest w stanie niskiego zasilania (Dx):

Zużycie energii i opóźnienie wznawiania

Gdy urządzenie sieciowe znajduje się w Dx, nadal zużywa moc, aby wykonać odciążanie i uzbrajać funkcję wznawiania. Gdy urządzenie inicjuje wybudzanie ze stanu Dx, istnieje opóźnienie, zanim urządzenie będzie mogło ponownie przesyłać pakiety. Im głębszy jest wewnętrzny stan zasilania urządzenia, tym mniej energii zużywa ono będąc w Dx, ale tym dłuższe jest opóźnienie wznawiania.

W poniższej tabeli opisano ogólne wytyczne dotyczące kompromisu między zużyciem energii a opóźnieniem wznawiania dla każdej funkcji wznawiania.

Ważne

Niektóre informacje odnoszą się do wstępnie wydanego produktu, który może zostać znacząco zmodyfikowany przed wydaniem na rynku. Firma Microsoft nie udziela żadnych gwarancji, wyraźnych ani dorozumianych, w odniesieniu do dostarczonych informacji. Aby uzyskać więcej informacji na temat określonego typu urządzenia, zapoznaj się z dokumentacją specyficzną dla nośnika i programem Windows Hardware Compatibility Program (WHCP).

Możliwość wybudzania Zdarzenia budzenia Pobór mocy Wznawianie opóźnienia
Filtr pakietów Wszystkie pakiety są zgodne ze skonfigurowanym filtrem ReceivePacketFilter Wartość powinna być niższa niż w stanie D0, a urządzenie musi być przechowywane w odpowiednim stanie, aby oczekiwane opóźnienie wznowienia było bardzo małe. <= 10 ms
Bitmapa Każdy pakiet pasuje do skonfigurowanego wzorca mapy bitowej Wartość powinna być niższa dla PacketFilter w stanie uzbrojenia, ponieważ ma większą elastyczność w przypadku opóźnień przy wznawianiu. <= 300 ms
MagicPacket Pakiet magiczny Podobnie jak bitmapa <= 300 ms
MediaChange Nośnik połączony lub odłączony Podobnie jak bitmapa <= 300 ms

W poniższym przykładzie pokazano, jak sterownik klienta może uruchomić swoje możliwości zasilania. Robi to podczas uruchamiania karty sieciowej, ale przed wywołaniem polecenia NetAdapterStart. W tym przykładzie sterownik klienta ustawia swoją mapę bitową, zmianę multimediów i możliwości wznawiania filtru pakietów.

//
// Set bitmap wake capabilities
//
NET_ADAPTER_WAKE_BITMAP_CAPABILITIES bitmapCapabilities;
NET_ADAPTER_WAKE_BITMAP_CAPABILITIES_INIT(&bitmapCapabilities);

bitmapCapabilities.BitmapPattern = TRUE;
bitmapCapabilities.MaximumPatternCount = deviceContext->PowerFiltersSupported;
bitmapCapabilities.MaximumPatternSize = 256;

NetAdapterWakeSetBitmapCapabilities(Adapter, &bitmapCapabilities);

//
// Set media change wake capabilities
//
NET_ADAPTER_WAKE_MEDIA_CHANGE_CAPABILITIES mediaChangeCapabilities;
NET_ADAPTER_WAKE_MEDIA_CHANGE_CAPABILITIES_INIT(&mediaChangeCapabilities);

mediaChangeCapabilities.MediaConnect = TRUE;
mediaChangeCapabilities.MediaDisconnect = TRUE;

NetAdapterWakeSetMediaChangeCapabilities(Adapter, &mediaChangeCapabilities);

//
// Set packet filter wake capabilities
//
if(deviceContext->SelectiveSuspendSupported)
{
    NET_ADAPTER_WAKE_PACKET_FILTER_CAPABILITIES packetFilterCapabilities;
    NET_ADAPTER_WAKE_PACKET_FILTER_CAPABILITIES_INIT(&packetFilterCapabilities);

    packetFilterCapabilities.PacketFilterMatch = TRUE;

    NetAdapterWakeSetPacketFilterCapabilities(Adapter, &packetFilterCapabilities);
}

Klient może opcjonalnie zarejestrować EVT_NET_DEVICE_PREVIEW_POWER_OFFLOAD i EVT_NET_DEVICE_PREVIEW_WAKE_SOURCE funkcje wywołania zwrotnego, aby akceptować lub odrzucać przychodzące odciążania procesów protokołu i wzorce budzenia.

Wzorce odciążania i wznawiania protokołu programowania

Podczas włączania sekwencji zasilania urządzeniasterownik iteruje przez włączone wzorce wznawiania i odciążanie zasilania protokołu i programuje je do sprzętu. Sterownik wykonuje to w funkcjach wywołania zwrotnego EvtDeviceArmWakeFromS0 oraz EvtDeviceArmWakeFromSx.

W poniższym przykładzie pokazano, jak sterownik klienta może przeglądać listę wzorców wznawiania w celu sprawdzenia, czy w liście znajduje się wpis wznawiania przez pakiet magiczny, a następnie przeglądać listę offloadów zasilania w celu przetworzenia offloadu protokołu IPv4 ARP.

NTSTATUS
EvtDeviceArmWakeFromSx(
    WDFDEVICE     Device
)
{
    NETADAPTER adapter = GetDeviceContext(Device)->Adapter;

    //
    // Process wake source list
    //
    NET_WAKE_SOURCE_LIST wakeSourceList;
    NET_WAKE_SOURCE_LIST_INIT(&wakeSourceList);

    NetDeviceGetWakeSourceList(Device, &wakeSourceList);

    for(UINT32 i = 0; i < NetWakeSourceListGetCount(&wakeSourceList); i++)
    {
        NETWAKESOURCE wakeSource = NetWakeSourceListGetElement(&wakeSourceList, i);
        NET_WAKE_SOURCE_TYPE const wakeSourceType = NetWakeSourceGetType(wakeSource);

        if(wakeSourceType == NetWakeSourceTypeMagicPacket)
        {
            // Enable magic packet wake for the adapter
            ..
            //
        }
    }

    //
    // Process power offload list
    //
    NET_POWER_OFFLOAD_LIST powerOffloadList;
    NET_POWER_OFFLOAD_LIST_INIT(&powerOffloadList);

    NetDeviceGetPowerOffloadList(Device, &powerOffloadList);

    for(UINT32 i = 0; i < NetPowerOffloadListGetCount(&powerOffloadList); i++)
    {
        NETPOWEROFFLOAD powerOffload = NetPowerOffloadListGetElement(&powerOffloadList, i);
        NET_POWER_OFFLOAD_TYPE const powerOffloadType = NetPowerOffloadGetType(powerOffload);

        if(powerOffloadType == NetPowerOffloadTypeArp)
        {
            // Enable ARP protocol offload for the adapter
            ..
            //
        }
    }

    return STATUS_SUCCESS;
}

W drodze z powrotem do wysokiej mocy sterownik zwykle wyłącza wcześniej zaprogramowane odciążenia mocy i wzorce budzenia w odpowiednich funkcjach zwrotnych EvtDeviceDisarmWakeFromSx i EvtDeviceDisarmWakeFromS0. Polecenia NetDeviceGetPowerOffloadList i NetDeviceGetWakeSourceList mogą służyć do pobierania odciążania zasilania protokołu i wzorca wznawiania wywołań zwrotnych.

Raportowanie przyczyny wznawiania

Ważne

Jest obowiązkowe, aby sterowniki klientów zgłaszały przyczynę pobudki do NetAdapterCx.

Gdy sprzęt karty sieciowej wznawia system, sterownik klienta musi zgłosić do NetAdapterCx, jakie źródło obudzenia było jego przyczyną. W przypadku większości źródeł wznawiania sterowniki używają struktury NET_ADAPTER_WAKE_REASON_PACKET do opisania pakietu sieciowego, który wyzwolił wznawianie.

Jeśli NET_WAKE_SOURCE_TYPE jest:

Scenariusze zarządzania energią dla nowoczesnego systemu rezerwowego

Ważne

W przypadku nowoczesnej platformy rezerwowej sterownik urządzenia sieciowego musi:

Aby uzyskać pełne wymagania dotyczące trybu Modern Standby dla danego typu urządzenia, zapoznaj się z dokumentacją specyficzną dla danego medium i WHCP.

System operacyjny jest odpowiedzialny za decyzje dotyczące zasad zasilania urządzenia sieciowego. Na przykład system operacyjny kontroluje, kiedy urządzenie musi przejść do trybu Dx i na jakie typy zdarzeń sieciowych urządzenie powinno wybudzać się. Obowiązkiem sterownika urządzenia jest niezawodne wykonanie sekwencji przejścia zasilania na żądanie systemu operacyjnego, a następnie poprawne zaprogramowanie sprzętu dla warunku wznowienia ustawionego przez system operacyjny.

System operacyjny podejmuje decyzje dotyczące zasad zasilania na podstawie szerokiego zestawu czynników, w tym zasad zasilania całego systemu i wyborów użytkowników. Poniżej przedstawiono niektóre typowe zasady zasilania używane dla urządzeń sieciowych w nowoczesnym systemie rezerwowym:

Ważne

Te zasady zasilania mogą ulec zmianie wraz z aktualizacjami systemu operacyjnego, a poniższe informacje są udostępniane jako przykład. Należy unikać zależności od konkretnych zachowań typu end-to-end systemu operacyjnego.

  • Gdy ekran komputera jest włączony i urządzenie sieciowe pozostaje bezczynne, system operacyjny zwraca się do urządzenia o przejście do stanu Dx i przygotowuje je do wybudzenia przez PacketFilter i MediaChange.

  • Gdy komputer przejdzie do nowoczesnego trybu uśpienia, a urządzenie sieciowe jest w stanie bezczynności, system operacyjny prosi kartę sieciową o przejście do stanu Dx i przygotowuje ją do obsługi mapy bitowej, MediaChange i Magic Packet wake.

  • Gdy komputer przejdzie do hibernacji, system operacyjny prosi kartę sieciową, aby przejść do Dx i ustawia ją na "Magic Packet wake."

Uwaga: Sterowniki klienta NetAdapterCx kontrolują widoczność zakładki zarządzania energią. Aby uzyskać więcej informacji, zobacz Kontrola użytkownika zachowania urządzenia w trybie bezczynności i wybudzania.