Att starta en filtermodul

För att starta en pausad filtermodul anropar NDIS filterdrivrutinens FilterSetModuleOptions funktion (om någon) följt av ett anrop till funktionen FilterRestart. Filtermodulen anger tillståndet Starta om i början av körningen i funktionen FilterRestart.

Om drivrutinen angav en startpunkt för FilterSetModuleOptionskan drivrutinen ändra den partiella egenskapen för en filtermodul. Mer information finns i Data Bypass-läge.

När den anropar en filterdrivrutins funktion FilterRestart skickar NDIS en pekare till en NDIS_RESTART_ATTRIBUTES struktur för att filtrera drivrutinen i RestartAttributes medlem i NDIS_FILTER_RESTART_PARAMETERS-strukturen. Filterdrivrutiner kan ändra de omstartsattribut som anges av underliggande drivrutiner. Mer information om hur du ändrar omstartsattribut finns i FilterRestart.

Obs NDIS anropar FilterSetModuleOptions för alla filtermoduler i en stack innan NDIS anropar funktionen FilterRestart för alla filtermoduler i stacken.

NDIS startar en filtermodul som en del av en Plug and Play-åtgärd för att starta om en drivrutinsstack. En översikt över hur du startar om drivrutinsstacken finns i Starta om en drivrutinsstack.

Filterdrivrutinen, på uppdrag av en filtermodul som är i tillståndet Omstart:

  • Slutför alla åtgärder som krävs för att starta om normala sändnings- och mottagningsåtgärder.

    Mer information om sänd- och mottagningsoperationer i filtermodulen finns i Filtermodul Sänd- och Mottagningsoperationer.

  • Kan läsa eller skriva konfigurerbara parametrar för filtermodulen.

  • Kan ta emot indikeringar för nätverksdata. Drivrutinen kan kopiera och köa sådana data och ange dem för överliggande drivrutiner senare, eller så kan den förkasta data.

  • Bör inte initiera några nya mottagnings indikationer.

  • Bör avvisa alla nya skicka begäranden som görs till dess FilterSendNetBufferLists funktion omedelbart genom att anropa funktionen NdisFSendNetBufferListsComplete. Den bör ange fullständig status i varje NET_BUFFER_LIST till NDIS_STATUS_PAUSED.

  • Kan ge statusindikationer med funktionen NdisFIndicateStatus.

    Mer information om statusinformation finns i Filter Module Status Indications.

  • Ska hantera OID-begäranden i funktionen FilterOidRequest.

    Mer information om OID-begäranden finns i filtermodulens OID-begäranden.

  • Bör inte initiera några nya sändningsbegäranden.

  • Ska omedelbart returnera nya indikationer till NDIS genom att anropa funktionen NdisFReturnNetBufferLists. Om det behövs kan drivrutinen kopiera sådana mottagningsindikationer innan den returnerar dem.

  • Kan göra OID-begäranden till de underliggande drivrutinerna för att ange eller fråga uppdaterad konfigurationsinformation.

  • Ska hantera statusinformation i funktionen FilterStatus.

  • Ska ange NDIS_STATUS_SUCCESS eller felstatus. Om en filtermodul inte startar om, kopplar NDIS från den. Om det är ett tvingande filter, avslutar NDIS hela drivrutinsstacken.

När filterdrivrutinen har startat om sändnings- och mottagningsåtgärderna måste den slutföra omstarten. Filterdrivrutinen kan slutföra omstartsåtgärden antingen synkront genom att returnera NDIS_STATUS_SUCCESS, eller asynkront genom att returnera NDIS_STATUS_PENDING från FilterRestart.

Om drivrutinen returnerar NDIS_STATUS_PENDING måste den anropa funktionen NdisFRestartComplete när omstarten har slutförts. I det här fallet skickar drivrutinen den slutliga statusen för omstartsåtgärden till NdisFRestartComplete.

När omstarten är klar är filtermodulen i driftläget Körs. Drivrutinen återupptar normal bearbetning av skicka och ta emot.

NDIS initierar inte andra Plug and Play-åtgärder, till exempel bifoga, koppla från eller pausa begäranden, medan filterdrivrutinen är i tillståndet Starta om. NDIS kan initiera pausbegäranden när en filterdrivrutin befinner sig i tillståndet Körs. Mer information om hur du pausar en filtermodul finns i Pausa en filtermodul.