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.
NetAdapterCx poskytuje efektivní způsob, jak resetovat a obnovit nefunkční síťová zařízení prostřednictvím resetování zařízení na úrovni platformy (PLDR). Bez restartování celého systému Windows operace PLDR ruší zásobník ovlivněných síťových zařízení, aby se jejich hardware a ovladače restartovaly z prázdného stavu. NetAdapterCx také umožňuje klientským ovladačům shromažďovat diagnostiku z neúspěšných zařízení před resetováním na úrovni platformy.
PlDR se aktivuje při zjištění neobvyklého chování zařízení. Může ho aktivovat některý z těchto:
Operační systém (OS). Například může na straně operačního systému dojít k aktivaci PLDR, když je datový paket uvíznutý v ovladači příliš dlouho.
Nezávislé klientské ovladače dodavatele hardwaru (IHV). Například klientské ovladače mohou požádat NetAdapterCx o aktivaci PLDR, když ovladač zjistí, že jeho zařízení nereaguje na jeho řídicí příkaz.
Aby se zajistilo uživatelsky přívětivé řešení problémů a obnovení u zařízení, doporučujeme, aby nezávislí výrobci hardware (IHVs) a výrobci originálního vybavení (OEMs) podporovali PLDR pro svá síťová zařízení. Další informace o PLDR naleznete v tématu Resetování a obnovení zařízení. NetAdapterCx neobnoví síťová zařízení prostřednictvím resetování zařízení na úrovni funkce.
Registrace volitelného zpětného volání pro sběr diagnostických dat
V rámci procesu resetování a obnovení netAdapterCx může klientský ovladač shromáždit diagnostiku specifickou pro zařízení z neúspěšného zařízení před resetováním na úrovni platformy. IHV a Microsoft mohou tato data použít při analýze po selhání ke zlepšení kvality svých produktů.
Registrace NET_DEVICE_RESET_CAPABILITIES
Klientské ovladače potřebují inicializovat a zaregistrovat strukturu NET_DEVICE_RESET_CAPABILITIES ve své funkci zpětného volání EVT_WDF_DRIVER_DEVICE_ADD , aby bylo možné shromažďovat diagnostiku specifickou pro zařízení.
NET_DEVICE_RESET_CAPABILITIES obsahuje:
Jedinečný identifikátor GUID. IHV určuje tento identifikátor GUID a později ho použije k následné identifikaci a načtení diagnostických dat o restartu z výpisu paměti. Například příkaz .enumtag lze použít k načtení diagnostiky.
Funkce pro zpětné volání události EVT_NET_DEVICE_COLLECT_RESET_DIAGNOSTICS. NetAdapterCx vyvolá toto zpětné volání za účelem shromáždění diagnostiky. Pokud klientský ovladač poskytuje zpětné volání EVT_NET_DEVICE_COLLECT_RESET_DIAGNOSTICS, NetAdapterCx ho vyvolá v klientském ovladači pomocí vyhrazeného vlákna.
Následující příklad ukazuje, jak zaregistrovat NET_DEVICE_RESET_CAPABILITIES do NetAdapterCx:
EVT_WDF_DRIVER_DEVICE_ADD EvtWdfDriverDeviceAdd;
EVT_NET_DEVICE_COLLECT_RESET_DIAGNOSTICS EvtDeviceCollectResetDiagnostics;
NTSTATUS EvtWdfDriverDeviceAdd(
WDFDRIVER Driver,
PWDFDEVICE_INIT DeviceInit
)
{
...
NET_DEVICE_RESET_CAPABILITIES resetCapabilities;
NET_DEVICE_RESET_CAPABILITIES_INIT(
&resetCapabilities,
DUMMY_GUID,
EvtDeviceCollectResetDiagnostics);
NetDeviceInitSetResetCapabilities(DeviceInit, &resetCapabilities);
...
}
Informace o inicializaci struktury NET_DEVICE_RESET_CAPABILITIES naleznete v tématu NET_DEVICE_RESET_CAPABILITIES_INIT.
Informace o inzerování struktury NET_DEVICE_RESET_CAPABILITIES do NetAdapterCx najdete v tématu NetDeviceInitSetResetCapabilities.
Proveďte EVT_NET_DEVICE_COLLECT_RESET_DIAGNOSTICS
Proces resetu a obnovení může nastat kdykoli. Proto musí implementace zpětného volání klientského ovladače EVT_NET_DEVICE_COLLECT_RESET_DIAGNOSTICS zvážit následující:
NetAdapterCx synchronizuje zpětné volání EVT_NET_DEVICE_COLLECT_RESET_DIAGNOSTICS s jinými zpětnými voláními, ke kterým může dojít během vypínací sekvence. Klientský ovladač může předpokládat, že NetAdapterCx nevyvolá zpětná volání, jako je zrušení/zastavení fronty paketů, uvolnění hardwaru a odstranění objektů zařízení, dokud EVT_NET_DEVICE_COLLECT_RESET_DIAGNOSTICS nevrátí.
Klientský ovladač musí při sběru diagnostických dat postupovat se zvýšenou opatrností, aby se zabránilo zablokování. Musí vzít v úvahu, že hardware už může být ve stavu selhání.
Je důležité, aby EVT_NET_DEVICE_COLLECT_RESET_DIAGNOSTICS byl dokončen co nejdříve, aby mohl zbývající proces PLDR pokračovat. EVT_NET_DEVICE_COLLECT_RESET_DIAGNOSTICS musí být spolehlivý a musí se vrátit do 3 sekund.
NetAdapterCx vždy vyvolá EVT_NET_DEVICE_COLLECT_RESET_DIAGNOSTICS na PASSIVE_LEVEL.
Pokud chcete odeslat diagnostiku do netAdapterCx, klientský ovladač provede následující kroky:
Předběžné přidělení ploché vyrovnávací paměti z buď stránkovaného nebo nestráňového fondu, aby se shromáždila diagnostika resetování. Ovladač by měl tuto vyrovnávací paměť předem přidělit, aby se zabránilo chybě nedostatku paměti během resetování zařízení.
V rámci zpětného volání EVT_NET_DEVICE_COLLECT_RESET_DIAGNOSTICS odešlete diagnostiku jako vyrovnávací paměť plochých dat voláním rozhraní NETDeviceStoreResetDiagnostics API. Klientský ovladač musí v PASSIVE_LEVEL volat rozhraní API NetDeviceStoreResetDiagnostics .
Uvolněte vyrovnávací paměť dat, jakmile NetDeviceStoreResetDiagnostics vrátí.
Důležité
Rozhraní API NetDeviceStoreResetDiagnostics musí být voláno pouze ve zpětné funkci EVT_NET_DEVICE_COLLECT_RESET_DIAGNOSTICS. Nejde ji také použít k opětovnému odeslání diagnostických dat po předchozích návratech NetDeviceStoreResetDiagnostics . Porušení některé z těchto případů způsobí kontrolu chyb.
Důležité
Omezení velikosti diagnostiky pro resetování je 1 MB.
Jak klientský ovladač požaduje PLDR
Klientský ovladač aktivuje PLDR pomocí rozhraní NetAdapterCx NetDeviceRequestReset API při zjišťování selhání zařízení. NetDeviceRequestReset se okamžitě vrátí klientskému ovladači. Resetovací a obnovovací sekvence popsaná v resetování a obnovovací sekvenci NetAdapterCx se aktivuje asynchronně k volání NetDeviceRequestReset.
V daném okamžiku může dojít pouze k jedné operaci PLDR. Proto následná volání NetDeviceRequestReset nemají žádný účinek, pokud se operace PLDR již spustila.
Volání NetDeviceRequestReset také nemá žádný vliv v případě, že už byla zahájena sekvence vypnutí napájení.
Resetování a obnovení sekvence NetAdapterCx
Když operační systém nebo klientský ovladač aktivuje PLDR, dojde k následující sekvenci:
Shromažďování diagnostiky resetování: NetAdapterCx vyvolá EVT_NET_DEVICE_COLLECT_RESET_DIAGNOSTICS zpětné volání klientského ovladače za účelem shromáždění diagnostiky ze zařízení, které selhalo. Ovladač může například shromáždit snímek firmwaru zařízení. Tento krok je volitelný a dochází pouze v případě, že ovladač klienta zaregistroval strukturu NET_DEVICE_RESET_CAPABILITIES . V opačném případě netAdapterCx tento krok přeskočí.
Provedení PLDR: NetAdapterCx provádí operaci resetování zařízení na úrovni platformy. NetAdapterCx zrestartuje hardware a demontuje vrstvu softwarových zařízení.
Následující diagram znázorňuje sekvenci resetování a obnovení netAdapterCx: