États de liaison d’un pilote de protocole
Un pilote de protocole NDIS doit prendre en charge les états opérationnels suivants pour chaque liaison qu’il gère :
Non liée
Ouverture
En cours d’exécution
Fermeture
Suspension en cours
Suspendu
Redémarrage
Les illustrations suivantes illustrent la relation entre ces états.
Les éléments suivants définissent les états de liaison du pilote de protocole :
L’état Unbound est l’état initial d’une liaison. Dans cet état, le pilote de protocole attend que NDIS appelle la fonction ProtocolBindAdapterEx . Une fois que NDIS a appelé ProtocolBindAdapterEx, la liaison passe à l’état Ouverture. Une fois qu’une opération de dissociage est terminée, une liaison revient à l’état Non lié à partir de l’état Fermant.
Dans l’état Ouverture , un pilote de protocole alloue des ressources pour la liaison et tente d’ouvrir l’adaptateur miniport. Une fois que NDIS a appelé la fonction ProtocolBindAdapterEx du pilote, la liaison passe à l’état Ouverture. Si le pilote de protocole ne parvient pas à se lier à l’adaptateur miniport, la liaison retourne à l’état Non lié. Si le pilote se lie correctement à l’adaptateur miniport, la liaison passe à l’état Suspendu.
Dans l’état En cours d’exécution , un pilote de protocole effectue un traitement d’envoi et de réception normal pour une liaison. Lorsque la liaison est à l’état Redémarrage et que le pilote est prêt à effectuer des opérations d’envoi et de réception, la liaison passe à l’état En cours d’exécution.
Dans l’état Closing , le pilote de protocole ferme la liaison à l’adaptateur miniport, puis libère les ressources pour la liaison. Une fois que NDIS a appelé la fonction ProtocolUnbindAdapterEx du pilote de protocole, la liaison passe à l’état Closing. Une fois que le pilote de protocole a terminé les opérations de dissocié, la liaison passe à l’état Non lié.
Dans l’état de suspension , un pilote de protocole effectue toutes les opérations nécessaires pour arrêter les opérations d’envoi et de réception d’une liaison. Lorsqu’une liaison est à l’état En cours d’exécution et que NDIS envoie au pilote de protocole une notification de pause PnP, la liaison passe à l’état de suspension. Le pilote de protocole doit attendre que toutes ses demandes d’envoi en attente se terminent. Un pilote de protocole ne peut pas échouer une opération de pause. Une fois l’opération de pause terminée, la liaison passe à l’état Suspendu.
Dans l’état Suspendu , le pilote de protocole n’effectue pas d’opérations d’envoi ou de réception pour une liaison. Lorsqu’une liaison est à l’état de suspension et qu’une opération de pause est terminée, la liaison passe à l’état Suspendu. Lorsqu’une liaison est à l’état Ouverture et qu’une opération d’ouverture se termine correctement, la liaison passe à l’état Suspendu. Si NDIS envoie au pilote de protocole une notification de redémarrage PnP pour la liaison, la liaison passe à l’état Redémarrage. Si NDIS appelle la fonction ProtocolUnbindAdapterEx du pilote, la liaison passe à l’état Closing.
Dans l’état Redémarrage , un pilote de protocole effectue toutes les opérations requises pour redémarrer les opérations d’envoi et de réception d’une liaison. Lorsqu’une liaison est à l’état Suspendu et que NDIS envoie au pilote de protocole une notification de redémarrage PnP, la liaison passe à l’état Redémarrage. Si le redémarrage échoue, la liaison retourne à l’état Suspendu. Si le redémarrage réussit, la liaison passe à l’état En cours d’exécution.