Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Alle NetAdapterCx-clientstuurprogramma's zijn WDF-stuurprogramma's (Windows Driver Framework) met energiebeheerfunctionaliteit die vergelijkbaar is met alle WDF-stuurprogramma's. NetAdapterCx-stuurprogramma's vereisen aanvullende netwerkspecifieke energieconfiguraties, zoals beschreven in dit artikel.
Een typisch netwerkapparaat ondersteunt drie algemene energiebeheerfuncties:
Het netwerkapparaat kan de status Dx (lager vermogen) opgeven wanneer het besturingssysteem de instructies geeft.
Het clientstuurprogramma registreert optionele WDF-gebeurtenis-callbacks om meldingen over energieovergangen te ontvangen, zoals beschreven in Ondersteuning van PnP en Energiebeheer in Functiedrivers.
Als het netwerkapparaat de Dx-status kan invoeren terwijl het systeem in de werkende status (S0) blijft, moet het clientstuurprogramma niet-actieve uitschakeling ondersteunen. Zie Ondersteunen van idle power-down. Naast het standaardgebruikersbeheer van apparaat-inactiviteit en ontwaakgedrag dat beschikbaar is voor alle WDF-apparaten, biedt NetAdapterCx extra netwerkspecifieke inactiviteit via *IdleRestriction , zoals gedefinieerd in gestandaardiseerde INF-trefwoorden voor Energiebeheer.
Wanneer het netwerkapparaat de status Dx heeft, kan het een ontwaaksignaal activeren als er een vooraf geconfigureerde wake-voorwaarde is opgetreden.
Voor meer informatie over hoe een WDF-apparaat het systeem uit een systeembrede lage energie status kan halen, zie Ondersteunen van Systeemontwaken.
NetAdapterCx biedt API's voor het clientstuurprogramma om te declareren voor welke netwerkgebeurtenissen de hardware wake-ondersteuning heeft. Zie Energiemogelijkheden van de netwerkadapter instellen.
Wanneer het netwerkapparaat de status Dx heeft, kan het nog steeds reageren op een aantal veelgebruikte netwerkaanvragen om de aanwezigheid van het hostsysteem op het netwerk te behouden zonder het hostsysteem op te roepen. Zie Energiemogelijkheden van de netwerkadapter instellen.
Energiemogelijkheden van de netwerkadapter instellen
Nadat u de WDF-functionaliteit voor energiebeheer hebt geconfigureerd, is de volgende stap het instellen van de energiemogelijkheden van de netwerkadapter. Energiemogelijkheden zijn onderverdeeld in twee categorieën: offloadmogelijkheden van het low power-protocol en ontwaakmogelijkheden.
Offloadmogelijkheden van het low power-protocol
Voor achtergrondinformatie over hoe de Windows-netwerkstack gebruikmaakt van deze mogelijkheid, zie Protocol Offloads voor NDIS Power Management.
Clientstuurprogramma's stellen hun offloadmogelijkheden voor laag vermogen-protocollen in door de volgende geschikte methoden voor hun hardware aan te roepen.
Ontwaakmogelijkheden
Clientstuurprogramma's roepen een van de volgende methoden aan om de wekfunctionaliteiten in te stellen die door hun hardware worden ondersteund wanneer het apparaat zich in een lage energietoestand bevindt (Dx):
- NetAdapterWakeSetBitmapCapabilities
- NetAdapterWakeSetMagicPacketCapabilities
- NetAdapterWakeSetMediaChangeCapabilities
- NetAdapterWakeSetPacketFilterCapabilities
Energieverbruik en hervatting latentietijd
Wanneer het netwerkapparaat zich in Dx bevindt, verbruikt het nog steeds stroom om ontkoppeling en voorbereiding uit te voeren voor activering uit slaapstand. Nadat het apparaat ontwaakt van Dx, is er een vertraging voordat het apparaat pakketten opnieuw kan overdragen. Hoe dieper het interne energieniveau waar het apparaat in gaat, hoe minder energie het verbruikt in Dx, maar hoe langer de hervattingslatentie.
In de volgende tabel worden de algemene richtlijnen beschreven met betrekking tot de afweging tussen energieverbruik en hervattingslatentie voor elke ontwaakmogelijkheid.
Belangrijk
Sommige informatie heeft betrekking op vooraf uitgegeven producten die aanzienlijk kunnen worden gewijzigd voordat ze commercieel worden vrijgegeven. Microsoft geeft geen garanties, expliciet of impliciet, met betrekking tot de verstrekte informatie. Raadpleeg de mediaspecifieke documentatie en het Windows Hardware Compatibility Program (WHCP) voor meer informatie over een specifiek apparaattype.
| Ontwaakmogelijkheid | Wake Events | Stroomverbruik | Hervatten van latentie |
|---|---|---|---|
| PacketFilter | Elk pakket komt overeen met de geconfigureerde ReceivePacketFilter | Moet lager zijn dan wanneer in D0 en het apparaat in de juiste staat moet worden bewaard, zodat de latentie van het hervatten erg klein is | <= 10 ms |
| Bitmapafbeelding | Elk pakket komt overeen met het geconfigureerde bitmappatroon | Moet lager zijn dan wanneer ingeschakeld voor PacketFilter omdat deze meer ruimte heeft in latentie bij hervatten. | <= 300 ms |
| MagicPacket | Magicpakket | Vergelijkbaar met Bitmap | <= 300 ms |
| MediaChange | Verbonden of losgekoppelde media | Vergelijkbaar met Bitmap | <= 300 ms |
In het volgende voorbeeld ziet u hoe een clientstuurprogramma de energiemogelijkheden kan initialiseren. Dit doet u tijdens het starten van de netadapter, maar voordat u NetAdapterStart aanroept. In dit voorbeeld stelt het clientstuurprogramma de mogelijkheden voor bitmap, mediawijziging en ontwaakmogelijkheden voor pakketfilters in.
//
// 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);
}
De client kan eventueel EVT_NET_DEVICE_PREVIEW_POWER_OFFLOAD en EVT_NET_DEVICE_PREVIEW_WAKE_SOURCE callback-functies registreren om binnenkomende protocol-offloads en ontwaakpatronen te accepteren of af te wijzen.
Ontlaad- en wekpatronen voor programmeerprotocollen
Tijdens het uitschakelen van de stroomafschakeling van het apparaat doorloopt het stuurprogramma de ingeschakelde wake-patronen en protocolvermogenoverdracht en programmeert deze in de hardware. De bestuurder doet dit in de functies EvtDeviceArmWakeFromS0 en EvtDeviceArmWakeFromSx callback.
In het volgende voorbeeld ziet u hoe een clientstuurprogramma door de wake-patroonlijst kan itereren om te controleren op een wake-on-magic-packet-vermelding en vervolgens door de power-offload-lijst kan itereren om de offload van het IPv4 ARP-protocol te verwerken.
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;
}
Op weg terug naar hoog vermogen schakelt de bestuurder normaal gesproken de eerder geprogrammeerde protocol stroom offloads en wake patronen in de bijbehorende EvtDeviceDisarmWakeFromSx en EvtDeviceDisarmWakeFromS0 callbacks uit. NetDeviceGetPowerOffloadList en NetDeviceGetWakeSourceList kunnen worden gebruikt om het protocol power offloads en wake-patroon in de callbacks op te halen.
Reden voor wakker worden rapporteren
Belangrijk
Het is verplicht dat clientstuurprogramma's de reden voor ontwaking aan NetAdapterCx rapporteren.
Wanneer de NIC-hardware het systeem ontwaakt, moet het clientstuurprogramma rapporteren aan NetAdapterCx die de wake-bron heeft geactiveerd. Voor de meeste wake-bronnen gebruiken stuurprogramma's de NET_ADAPTER_WAKE_REASON_PACKET structuur om het netwerkpakket te beschrijven dat de wake heeft geactiveerd.
Als de NET_WAKE_SOURCE_TYPE is:
NetWakeSourceTypeBitmapPattern, roept NET_ADAPTER_WAKE_REASON_PACKET_INIT aan om de NET_ADAPTER_WAKE_REASON_PACKET structuur te initialiseren. Roep NetAdapterReportWakeReasonPacket aan om deze wake-reden te melden.
NetWakeSourceTypeMagicPacket roept NET_ADAPTER_WAKE_REASON_MAGIC_PACKET_INIT aan om de NET_ADAPTER_WAKE_REASON_PACKET structuur te initialiseren. Roep NetAdapterReportWakeReasonPacket aan om deze wake-reden te melden.
NetWakeSourceTypePacketFilterMatch roept NET_ADAPTER_WAKE_REASON_FILTER_PACKET_INIT aan om de NET_ADAPTER_WAKE_REASON_PACKET structuur te initialiseren. Roep NetAdapterReportWakeReasonPacket aan om deze wake-reden te melden.
NetWakeSourceTypeMediaChange, roep NetAdapterReportWakeReasonMediaChange aan om deze wake reason te melden.
Energiebeheerscenario's voor modern stand-bysysteem
Belangrijk
Voor modern stand-byplatform moet het netwerkapparaatstuurprogramma het volgende doen:
- Roep WdfDeviceInitSetPnpPowerEventCallbacks aan om power callbacks te registreren.
- Roep WdfDeviceAssignS0IdleSettings aan om apparaat inactiviteit te ondersteunen wanneer het systeem de werkende status (S0) heeft.
- Roep WdfDeviceInitSetPowerPolicyEventCallbacks aan om wake-up callbacks te registreren.
- Ondersteuning voor offloadmogelijkheden van het low power-protocol die geschikt zijn voor het apparaattype.
- Ondersteuning voor ontwaakmogelijkheden die geschikt zijn voor het apparaattype.
Raadpleeg de mediaspecifieke documentatie en WHCP voor de volledige moderne stand-byvereisten voor uw apparaattype.
Het besturingssysteem is verantwoordelijk voor beslissingen over het energiebeleid van het netwerkapparaat. Het besturingssysteem bepaalt bijvoorbeeld wanneer een apparaat naar Dx moet gaan en op welke typen netwerk gebeurtenissen het apparaat moet worden geactiveerd. De verantwoordelijkheid van het apparaatstuurprogramma is om de stroomovergangsreeks betrouwbaar uit te voeren wanneer dit door het besturingssysteem wordt aangevraagd en vervolgens de hardware van het besturingssysteem correct te programmeren voor de ontwaakvoorwaarde die is ingesteld door het besturingssysteem.
Het besturingssysteem neemt beslissingen over energiebeleid op basis van een brede set factoren, waaronder systeembreed energiebeleid en gebruikerskeuzen. Hier volgen enkele algemene energiebeleidsregels die worden gebruikt voor netwerkapparaten op een modern stand-bysysteem:
Belangrijk
Dit energiebeleid kan worden gewijzigd met updates van het besturingssysteem en de volgende informatie wordt als voorbeeld gegeven. Afhankelijkheden van specifiek end-to-end gedrag van het besturingssysteem moeten worden vermeden.
Wanneer het pc-scherm is ingeschakeld en het netwerkapparaat inactief is, vraagt het besturingssysteem het apparaat naar Dx te gaan en het te koppelen aan PacketFilter en MediaChange wake.
Wanneer de pc Modern Standby ingaat en het netwerkapparaat inactief is, vraagt het besturingssysteem de NIC om naar de Dx-toestand te gaan en deze voor Bitmap, MediaChange en Magic Packet-ontwaken in te stellen.
Wanneer de pc naar de sluimerstand gaat, vraagt het besturingssysteem de NIC om naar Dx te gaan en deze te bewapenen voor Magic Packet wake.
Opmerking: NetAdapterCx-clientstuurprogramma's bepalen de zichtbaarheid van het tabblad Energiebeheer. Zie Gebruikersbeheer van apparaatinactiviteit en ontwaakgedrag voor meer informatie.