États de module d’un pilote de filtre
Un pilote de filtre NDIS doit prendre en charge les états opérationnels suivants pour chaque module de filtre (instance d’un pilote de filtre) que le pilote gère :
Détachée
attachement
Suspendu
Redémarrage
En cours d’exécution
Suspension en cours
La figure suivante montre les relations entre ces états.
L’élément suivant définit les états du module de filtre :
Détachée
L’état Détaché est l’état initial d’un module de filtre. Lorsqu’un module de filtre est dans cet état, NDIS peut appeler la fonction FilterAttach du pilote de filtre pour attacher le module de filtre à la pile de pilotes. Lorsque NDIS appelle la fonction FilterAttach d’un pilote de filtre, le module de filtre entre dans l’état Attachement. Si l’opération d’attachement échoue, le module de filtre retourne à l’état Détaché. Lorsque le module est à l’état Suspendu et que NDIS appelle la fonction FilterDetach , le module retourne à l’état Détaché.
attachement
Lorsqu’un module de filtre est à l’état Attachement , un pilote de filtre se prépare à attacher le module à la pile de pilotes. Une fois la préparation du module de filtre terminée, le module de filtre passe à l’état Suspendu. Si un échec se produit (par exemple, parce que les ressources requises ne sont pas disponibles), le module de filtre retourne à l’état Détaché.
Pause
Lorsqu’un module de filtre est à l’état Suspendu , le module de filtre n’effectue pas d’opérations d’envoi ou de réception. Lorsqu’un module de filtre est à l’état Attachement et que FilterAttach réussit, le module de filtre entre dans l’état Suspendu . Lorsqu’un module de filtre est à l’état de mise en pause et que l’opération de pause se termine, le module de filtre entre dans l’état Suspendu . Lorsqu’un module de filtre est à l’état Suspendu et que NDIS appelle la fonction FilterRestart du pilote de filtre, le module de filtre entre dans l’état Redémarrage . Lorsqu’un module de filtre est à l’état Suspendu et que NDIS appelle le gestionnaire FilterDetach du pilote, le module de filtre entre dans l’état Détaché .
Redémarrage
Dans l’état Redémarrage , un pilote de filtre effectue toutes les opérations requises pour redémarrer les opérations d’envoi et de réception d’un module de filtre. Lorsqu’un module de filtre est à l’état Suspendu et que NDIS appelle la fonction FilterRestart du pilote, un module de filtre entre dans l’état Redémarrage. Si le redémarrage échoue, le module de filtre retourne à l’état Suspendu. Si le redémarrage réussit, le module de filtre entre dans l’état En cours d’exécution.
En cours d’exécution
Dans l’état En cours d’exécution , un pilote de filtre effectue un traitement d’envoi et de réception normal pour un module de filtre. Lorsque le module de filtre est à l’état Redémarrage et que le pilote est prêt à effectuer des opérations d’envoi et de réception, le module de filtre entre dans l’état En cours d’exécution.
Pause
Dans l’état Suspension , un pilote de filtre effectue toutes les opérations nécessaires pour arrêter les opérations d’envoi et de réception d’un module de filtre. Le pilote de filtre doit attendre que toutes ses demandes d’envoi en attente se terminent et que NDIS retourne toutes ses indications de réception en suspens. Lorsqu’un module de filtre est à l’état En cours d’exécution et que NDIS appelle la fonction FilterPause du pilote, le module de filtre entre dans l’état Suspension. Un pilote de filtre ne peut pas échouer une opération de pause. Une fois l’opération de pause terminée, le module de filtre entre dans l’état Suspendu.