Sdílet prostřednictvím


Spuštění modulu filtru

Pokud chcete spustit pozastavený modul filtru, NDIS volá funkci FilterSetModuleOptions ovladače filtru, pokud existuje, a potom volání funkce FilterRestart . Modul filtru zadá stav Restarting při spuštění ve funkci FilterRestart .

Pokud ovladač poskytl vstupní bod pro FilterSetModuleOptions, může ovladač změnit částečnou charakteristiku modulu filtru. Další informace naleznete v tématu režim obejití dat.

Když volá funkci FilterRestart ovladače filtru, NDIS předá ukazatel na strukturu typu NDIS_RESTART_ATTRIBUTES ovladači filtru v členu RestartAttributes struktury NDIS_FILTER_RESTART_PARAMETERS. Ovladače filtru mohou upravit atributy restartování určené podkladovými ovladači. Další informace o úpravě atributů restartování naleznete v tématu FilterRestart.

Poznámka NDIS volá FilterSetModuleOptions pro všechny moduly filtru v zásobníku před voláním funkce FilterRestart pro všechny moduly filtru v zásobníku.

NDIS spustí modul filtru jako součást operace Plug and Play pro restartování zásobníku ovladačů. Přehled restartování zásobníku ovladačů najdete v tématu Restartování zásobníku ovladačů.

Jménem modulu filtru, který je ve stavu Restartování, řidič filtru:

  • Dokončí všechny operace potřebné k restartování normálních operací odesílání a příjmu.

    Další informace o operacích odesílání a přijímání naleznete v tématu Modul operací odesílání a přijímání filtru.

  • Může číst nebo zapisovat konfigurovatelné parametry pro modul filtru.

  • Může přijímat indikace síťových dat. Ovladač může tato data zkopírovat a zařadit do fronty a později oznámit vyšším ovladačům, nebo může tato data zahodit.

  • Neměli byste zahájit žádné nové přijímací indikace.

  • Měly by odmítnout všechny nové požadavky odeslané do funkce FilterSendNetBufferLists okamžitě voláním funkce NdisFSendNetBufferListsComplete . Je třeba v každé NET_BUFFER_LIST nastavit úplný stav na NDIS_STATUS_PAUSED.

  • Může poskytovat indikace stavu pomocí funkce NdisFIndicateStatus.

    Další informace o indikátorech stavu najdete v tématu indikace stavu modulu filtru.

  • Měly by zpracovávat požadavky OID ve funkci FilterOidRequest.

    Další informace o požadavcích OID naleznete v tématu Modul filtru: požadavky OID.

  • Neměli byste inicializovat žádné nové žádosti o odeslání.

  • Měl by okamžitě vrátit nové přijímací indikace NDIS voláním funkce NdisFReturnNetBufferLists. V případě potřeby může ovladač před jejich vrácením zkopírovat takové indikace příjmu.

  • Může provádět požadavky OID na podkladové ovladače pro nastavení nebo dotazování aktualizovaných konfiguračních informací.

  • Měla by zpracovávat indikátory stavu ve své funkci FilterStatus.

  • Měla by indikovat NDIS_STATUS_SUCCESS nebo stav selhání. Pokud se modul filtru nerestartuje, NDIS ho odpoje a pokud se jedná o povinný filtr, NDIS ukončí celý zásobník ovladačů.

Jakmile ovladač filtru úspěšně restartuje operace odesílání a příjmu, musí dokončit operaci restartování. Ovladač filtru může operaci restartování dokončit synchronně nebo asynchronně vrácením NDIS_STATUS_SUCCESS nebo NDIS_STATUS_PENDING z FilterRestartu.

Pokud ovladač vrátí NDIS_STATUS_PENDING, musí po dokončení operace restartování volat funkci NdisFRestartComplete . V tomto případě ovladač předá konečný stav operace restartování do NdisFRestartComplete.

Po dokončení operace restartování je modul filtru ve stavu Spuštěno . Ovladač obnoví normální zpracování odesílání a příjmu.

NDIS neinicializuje jiné operace Plug and Play, jako je připojení, odpojení nebo pozastavení, zatímco ovladač filtru je ve stavu Restartování. NDIS může iniciovat žádosti o pozastavení, jakmile je ovladač filtru ve stavu Spuštěno . Další informace o pozastavení modulu filtru najdete v tématu Pozastavení modulu filtru.