Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Pokud ovladač miniportu podporuje indikace důvodů probuzení NDIS (NDIS_STATUS_PM_WAKE_REASON), musí tento stav vygenerovat ihned poté, co síťový adaptér vygeneruje událost probuzení a obnoví se do stavu plného napájení.
Poznámka Podpora stavových indikací důvodů probuzení NDIS je volitelná pro miniportové ovladače mobilního širokopásmového připojení (MB).
Ovladač miniportu se konfiguruje s parametry řízení spotřeby (PM) prostřednictvím požadavku na nastavení identifikátoru objektu (OID) OID_PM_PARAMETERS. Tento požadavek OID určuje parametry PM prostřednictvím struktury NDIS_PM_PARAMETERS.
Struktura NDIS_PM_PARAMETERS určuje parametry pro následující typy událostí probuzení.
Události probuzení přijatého paketu
Síťový adaptér vygeneruje událost probuzení, pokud obdrží paket, který odpovídá vzoru wake-on-LAN (WOL). Vzory WOL zahrnují následující:
Vzory WOL nezávislé na síťovém médiu, jako jsou magické pakety nebo vzory dat TCP/IP v obsahu paketů. Například struktura NDIS_PM_PARAMETERS může určit vzor WOL pro rámec TCP SYN.
Vzory WOL specifické pro média, jako je paket identifikátoru požadavku EAPOL nebo zpráva SMS (služba mobilního širokopásmového připojení, MB).
Vzory zástupných znaků, které odpovídají filtru příjmu zadanému prostřednictvím požadavku OID OID_GEN_CURRENT_PACKET_FILTER.
Poznámka Pro tento typ označení stavu důvodu probuzení musí být síťový adaptér schopen uložit přijatý paket. Ovladač musí vrátit přijatý paket v rámci indikace stavu.
Vzory WOL jsou určeny prostřednictvím složky EnabledWoLPacketPatterns ve struktuře NDIS_PM_PARAMETERS.
Mediálně specifické události probuzení
Síťový adaptér generuje událost probuzení z důvodu specifickému pro média, například odpojení od přístupového bodu 802.11 (AP) nebo přijetí zprávy SMS ze širokopásmové mobilní sítě.
Události probouzení tohoto typu jsou specifikovány prostřednictvím člena MediaSpecificWakeUpEvents struktury NDIS_PM_PARAMETERS.
Události probuzení nezávislé na médiu
Síťový adaptér vyvolává událost probuzení z důvodu bez ohledu na médium, například připojení k médiu nebo odpojení.
Události probuzení tohoto typu jsou určeny prostřednictvím člena WakeUpFlags struktury NDIS_PM_PARAMETERS.
Pokud síťový adaptér vygeneroval signál probuzení, musí ovladač miniportu vydat NDIS_STATUS_PM_WAKE_REASON indikace stavu. Ovladač to dělá, když zpracovává požadavek sady OID OID_PNP_SET_POWER pro přechod adaptéru do stavu plného napájení.
Poznámka Ovladač miniportu musí vydat NDIS_STATUS_PM_WAKE_REASON informace o stavu předtím, než vydá indikaci stavu, která souvisí s událostí probuzení. Pokud byla například událost probuzení způsobena změnou stavu připojení k médiu, musí ovladač miniportu vydat indikaci stavu NDIS_STATUS_LINK_STATE, jakmile vydá indikaci stavu NDIS_STATUS_PM_WAKE_REASON.
Pokud ovladač miniportu vydá NDIS_STATUS_PM_WAKE_REASON indikaci stavu, musí postupovat takto:
Ovladač miniportu musí přidělit vyrovnávací paměť, která je dostatečně velká, aby obsahovala následující:
Struktura NDIS_PM_WAKE_REASON.
Struktura NDIS_PM_WAKE_PACKET spolu s přijatým wake paketem, který způsobil generování události probuzení síťovým adaptérem.
Poznámka Ovladač miniportu nemusí přidělovat toto místo ve vyrovnávací paměti, pokud indikuje události probuzení specifické pro média nebo nezávislé na médiích.
Ovladač miniportu inicializuje strukturu NDIS_PM_WAKE_REASON na začátku pufru. Ovladač nastaví člena WakeReason na hodnotu NDIS_PM_WAKE_REASON_TYPE, která určuje typ události při probuzení.
Pokud například ovladač miniportu indikuje přijatou událost probuzení paketu, musí nastavit WakeReason člena na NdisWakeReasonPacket. V opačném případě ovladač nastaví člen WakeReason na hodnotu výčtu, která nejlépe popisuje událost probuzení specifickou pro médium nebo nezávislou na médiu.
Pokud miniportový ovladač vydává NDIS_STATUS_PM_WAKE_REASON stavové oznámení pro přijatou událost probuzení paketu, musí postupovat následovně:
Ovladač miniportu nastaví člen InfoBufferOffset na posun struktury NDIS_PM_WAKE_PACKET, která následuje strukturu NDIS_PM_WAKE_REASON ve vyrovnávací paměti.
Poznámka Ovladač miniportu musí zarovnat začátek struktury NDIS_PM_WAKE_PACKET na 64bitové hranici.
Ovladač miniportu nastaví prvek InfoBufferSize na velikost struktury NDIS_PM_WAKE_PACKET a přidá velikost paketu, který způsobil událost probuzení.
Ovladač miniportu inicializuje strukturu NDIS_PM_WAKE_PACKET následující po struktuře NDIS_PM_WAKE_REASON ve vyrovnávací paměti.
Ovladač miniportu nastaví členy struktury NDIS_PM_WAKE_PACKET následujícím způsobem:
PatternId člen je nastaven na identifikátor vzoru WOL, který odpovídá packetu pro probuzení. Tento identifikátor je určen členem struktury PatternIdNDIS_PM_WOL_PATTERN, který je předán ovladači při nastavení OID požadavku OID_PM_ADD_WOL_PATTERN.
Člen PatternFriendlyName je nastaven na popis vzorce probuzení, který je čitelný pro uživatele a který je určen členem PatternId. Tuto hodnotu určuje FriendlyName člen struktury NDIS_PM_WOL_PATTERN.
Poznámka Ovladač miniportu nemusí inicializovat tohoto člena. NDIS nastaví člen PatternFriendlyName na správnou hodnotu předtím, než předá strukturu NDIS_PM_WAKE_PACKET nadřazeným ovladačům.
OriginalPacketSize člen je nastaven na délku paketu přijatý síťovým adaptérem.
SavedPacketSize parametr musí být nastaven na délku paketu, který je hlášen prostřednictvím indikace stavu NDIS_STATUS_PM_WAKE_REASON.
Poznámka Hodnota tohoto členu nesmí být větší než hodnota, kterou nastavil ovladač miniportu v členu MaxWoLPacketSaveBuffer struktury NDIS_PM_CAPABILITIES. Ovladač vrátí tuto strukturu, když hlásí své možnosti indikace paketů probuzení. Další informace naleznete v tématu Schopnosti indikace stavu důvodu probuzení.
SavedPacketOffset člen musí být nastaven na posun v jednotkách bajtů k probouzecímu paketu, který následuje za strukturou NDIS_PM_WAKE_PACKET.
Poznámka Ovladač miniportu musí zarovnat začátek probudícího paketu na 64bitové hranici ve vyrovnávací paměti.
Miniport zkopíruje probouzecí paket do vyrovnávací paměti na ofset určený členem SavedPacketOffset.
Pokud ovladač miniportu vydává indikaci o stavu NDIS_STATUS_PM_WAKE_REASON při události probuzení specifické pro média nebo nezávislé na médiích, nastaví členy struktury NDIS_PM_WAKE_REASONInfoBufferOffset a InfoBufferSize na nulu.
Ovladač miniportu inicializuje strukturu NDIS_STATUS_INDICATION. Ovladač nastaví člen StatusCode na NDIS_STATUS_PM_WAKE_REASON. Ovladač také nastaví StatusBuffer člen, který odkazuje na vyrovnávací paměť, a nastaví StatusBufferLength na délku vyrovnávací paměti v bajtech.
Ovladač miniportu volá NdisMIndicateStatusEx a předává ukazatel na strukturu NDIS_STATUS_INDICATION v parametru StatusIndication.
Poznámka Po vydání indikace stavu NDIS_STATUS_PM_WAKE_REASON miniport ovladačem pro probuzení události způsobené přijatým paketem, musí tento přijatý paket indikovat voláním NdisMIndicateReceiveNetBufferLists.