Sdílet prostřednictvím


Zpracování neočekávaného odebrání síťové karty (Windows 7 a novější verze)

V systémech Windows 7 a Windows Server 2008 R2 a novějších se NDIS může účastnit neočekávaného odebrání síťové karty (NIC) jinak než v předchozích verzích Windows. NDIS provádí revidovaný postup neočekávaného odebrání, pokud je některá z následujících podmínek splněna:

  • Operační systém je Windows 8 nebo Windows Server 2012 nebo novější.
  • Operační systém je Windows 7 a oprava hotfix pro KB2471472 byla nainstalována.
  • Operační systém je Windows 7 a síťový adaptér je mobilní širokopásmové zařízení (MBB).

Pokud nejsou splněny žádné z těchto podmínek, NDIS se účastní procesu neočekávaného odebrání stejně jako v předchozích verzích Windows. Další informace o tomto postupu naleznete v tématu Zpracování neočekávaného odebrání síťové karty (Windows Vista).

Následující kroky popisují aktualizovaný postup, jakým se NDIS účastní neočekávaného odebrání síťového adaptéru:

  1. Správce PnP vydá požadavek IRP_MN_SURPRISE_REMOVAL na zásobník zařízení pro NIC.

  2. Když NDIS obdrží tento IRP, volá funkci FilterNetPnPEvent nejnižšího ovladače filtru, který je připojen k síťové kartě v zásobníku ovladačů. V tomto volání NDIS určuje kód události NetEventQueryRemoveDevice.

    Poznámka NDIS tento krok provádí pouze pro ovladače filtru, které inzerují vstupní bod pro funkci FilterNetPnPEvent. Ovladač filtru inzeruje tento vstupní bod, když volá funkci NdisFRegisterFilterDriver.

  3. V rámci volání funkce FilterNetPnPEvent musí ovladač filtru zavolat NdisFNetPnPEvent, aby přesměroval událost NetEventQueryRemoveDevice k dalšímu ovladači filtru v zásobníku ovladačů. To způsobí, že služba NDIS zavolá funkci ovladače filtru FilterNetPnPEvent s kódem události NetEventQueryRemoveDevice.

    Poznámka NDIS provede tento krok pouze pro následující ovladač filtru ve stacku ovladačů, který oznamuje vstupní bod pro funkci FilterNetPnPEvent.

  4. Každý ovladač filtru v zásobníku ovladačů opakuje předchozí krok, dokud nejvyšší ovladač filtru v zásobníku nepředá událost NetEventQueryRemoveDevice.

    V takovém případě NDIS volá funkci ProtocolNetPnPEvent všech ovladačů protokolu, které jsou svázané se síťovým adaptérem. V tomto volání NDIS určuje kód události NetEventQueryRemoveDevice.

  5. NDIS volá funkci MiniportDevicePnPEventNotify s kódem události NdisDevicePnPEventSurpriseRemoved. Ovladač miniportu by měl poznamenat, že zařízení bylo fyzicky odebráno. Pokud je ovladač miniportu ovladačem NDIS-WDM, měl by zrušit všechny nevyřízené IRP, které odeslal podkladovému ovladači sběrnice.

  6. NDIS provádí následující kroky:

    1. Pozastaví všechny ovladače protokolu, které jsou vázané na síťovou kartu.

    2. Pozastaví všechny ovladače filtrů, které jsou připojeny k síťové kartě.

    3. Pozastaví ovladač miniportu síťové karty.

    4. Volá funkci ProtocolUnbindAdapterEx všech ovladačů protokolu, které jsou svázané s síťovým adaptérem.

    5. Volá funkci FilterDetach filtrů všech modulů, které jsou připojené k NIC.

  7. Jakmile jsou všechny ovladače protokolu a filtru odpojené a odstraněné od síťové karty, NDIS volá funkci miniportového ovladače MiniportHaltEx. NDIS nastaví parametr HaltAction v MiniportHaltEx na NdisHaltDeviceSurpriseRemoved.

  8. NDIS posílá požadavek IRP_MN_SURPRISE_REMOVAL k objektu nižší úrovně zařízení ve stacku. Po přijetí vráceného požadavku IRP_MN_SURPRISE_REMOVAL z dalšího dolního objektu zařízení v zásobníku zařízení NDIS dokončí požadavek IRP_MN_SURPRISE_REMOVAL.

  9. Správce PnP vydá žádost IRP_MN_REMOVE_DEVICE o odebrání softwarové reprezentace (objektů zařízení atd.) síťové karty.

  10. NDIS odešle požadavek IRP_MN_REMOVE_DEVICE do dalšímu nižšímu objektu zařízení ve stohu.

  11. Když NDIS obdrží dokončenou žádost IRP_MN_REMOVE_DEVICE z dalšího nižšího zařízení ve stohu, NDIS zničí funkční zařízení (FDO), které vytvořilo pro síťovou kartu.