Share via


Démarrage d’un module de filtre

Pour démarrer un module de filtre suspendu, NDIS appelle la fonction FilterSetModuleOptions du pilote de filtre, le cas échéant, suivie d’un appel à la fonction FilterRestart . Le module de filtre passe à l’état Redémarrage au début de l’exécution dans la fonction FilterRestart .

Si le pilote a fourni un point d’entrée pour FilterSetModuleOptions, il peut modifier la caractéristique partielle d’un module de filtre. Pour plus d’informations, consultez Mode de contournement des données.

Lorsqu’il appelle la fonction FilterRestart d’un pilote de filtre, NDIS passe un pointeur vers une structure de NDIS_RESTART_ATTRIBUTES pour filtrer le pilote dans le membre RestartAttributes de la structure NDIS_FILTER_RESTART_PARAMETERS . Les pilotes de filtre peuvent modifier les attributs de redémarrage spécifiés par les pilotes sous-jacents. Pour plus d’informations sur la modification des attributs de redémarrage, consultez FilterRestart.

Note NDIS appelle FilterSetModuleOptions pour tous les modules de filtre d’une pile avant que NDIS appelle la fonction FilterRestart pour n’importe quel module de filtre dans la pile.

NDIS démarre un module de filtre dans le cadre d’une opération de Plug-and-Play pour redémarrer une pile de pilotes. Pour obtenir une vue d’ensemble du redémarrage de la pile de pilotes, consultez Redémarrage d’une pile de pilotes.

Pour le compte d’un module de filtre à l’état Redémarrage , le pilote de filtre :

  • Effectue toutes les opérations requises pour redémarrer les opérations d’envoi et de réception normales.

    Pour plus d’informations sur les opérations d’envoi et de réception, consultez Filtrer les opérations d’envoi et de réception des modules.

  • Peut lire ou écrire des paramètres configurables pour le module de filtre.

  • Peut recevoir des indications de données réseau. Le pilote peut copier et mettre en file d’attente ces données et les indiquer à des pilotes trop tard, ou il peut ignorer les données.

  • Ne doit pas lancer de nouvelles indications de réception.

  • Doit rejeter immédiatement toutes les nouvelles demandes d’envoi effectuées à sa fonction FilterSendNetBufferLists en appelant la fonction NdisFSendNetBufferListsComplete . Il doit définir la status complète dans chaque NET_BUFFER_LIST sur NDIS_STATUS_PAUSED.

  • Peut fournir des indications status avec la fonction NdisFIndicateStatus.

    Pour plus d’informations sur les indications status, consultez Filtrer les indications d’état du module.

  • Doit gérer les requêtes OID dans la fonction FilterOidRequest .

    Pour plus d’informations sur les requêtes OID, consultez Filtrer les requêtes OID du module.

  • Ne doit pas lancer de nouvelles demandes d’envoi.

  • Doit renvoyer immédiatement de nouvelles indications de réception à NDIS en appelant la fonction NdisFReturnNetBufferLists . Si nécessaire, le pilote peut copier ces indications de réception avant de les retourner.

  • Peut effectuer des requêtes OID aux pilotes sous-jacents pour définir ou interroger les informations de configuration mises à jour.

  • Doit gérer status indications dans sa fonction FilterStatus.

  • Doit indiquer NDIS_STATUS_SUCCESS ou un status d’échec. Si un module de filtre ne redémarre pas, NDIS le détache et, s’il s’agit d’un filtre obligatoire, NDIS met fin à l’intégralité de la pile des pilotes.

Une fois que le pilote de filtre a correctement redémarré les opérations d’envoi et de réception, il doit terminer l’opération de redémarrage. Le pilote de filtre peut effectuer l’opération de redémarrage de manière synchrone ou asynchrone en retournant NDIS_STATUS_SUCCESS ou NDIS_STATUS_PENDING respectivement à partir de FilterRestart.

Si le pilote retourne NDIS_STATUS_PENDING, il doit appeler la fonction NdisFRestartComplete une fois l’opération de redémarrage terminée. Dans ce cas, le pilote transmet la dernière status de l’opération de redémarrage à NdisFRestartComplete.

Une fois l’opération de redémarrage terminée, le module de filtre est à l’état En cours d’exécution . Le pilote reprend le traitement normal de l’envoi et de la réception.

NDIS ne lance pas d’autres opérations de Plug-and-Play, telles que les demandes d’attachement, de détachement ou de pause, alors que le pilote de filtre est à l’état Redémarrage. NDIS peut lancer des demandes de pause une fois qu’un pilote de filtre est à l’état En cours d’exécution . Pour plus d’informations sur la suspension d’un module de filtre, consultez Suspension d’un module de filtre.