Partager via


Suppression d’une connexion virtuelle (VC)

Seul le client orienté connexion, le gestionnaire d’appels ou le pilote MCM qui a initié la création d’un circuit virtuel (VC) peut initier la suppression de ce VC. Par conséquent, un client supprime un vc qu’il a créé précédemment pour un appel sortant, un gestionnaire d’appels ou un pilote MCM supprime un vc qu’il a créé précédemment pour un appel entrant sur le réseau, et un gestionnaire d’appels supprime un vc qu’il a créé précédemment pour échanger des messages de signalisation sur le réseau. (Un pilote MCM n’appelle pas NDIS pour supprimer un vc qu’il a créé pour échanger des messages de signalisation. Le pilote MCM supprime une telle vc avec une opération interne opaque à NDIS.)

Un client orienté connexion ou un gestionnaire d’appels lance la suppression d’un VC avec NdisCoDeleteVc.

La figure suivante montre un client d’un gestionnaire d’appels qui lance la suppression d’un VC.

Diagramme montrant un client d’un gestionnaire d’appels qui lance la suppression d’un VC.

La figure suivante montre un client d’un pilote MCM qui lance la suppression d’un VC.

Schéma montrant un client d’un pilote MCM lançant la suppression d’un VC.

La figure suivante montre un gestionnaire d’appels lançant la suppression d’un VC.

Diagramme montrant un gestionnaire d’appels qui lance la suppression d’un vc.

Lorsqu’un client ou un gestionnaire d’appels appelle NdisCoDeleteVc ou lorsqu’un pilote MCM appelle NdisMCmDeleteVc, il ne doit pas y avoir d’appels en attente sur le vc donné et que vc doit déjà avoir été désactivé . Pour répondre à ces exigences, cela implique que les conditions suivantes soient satisfaites :

L’appel d’un client ou d’un gestionnaire d’appels à NdisCoDeleteVc entraîne NDIS à appeler à la fois la fonction MiniportCoDeleteVc du pilote miniport sous-jacent et la fonction ProtocolCoDeleteVc du client ou du gestionnaire d'appels avec lequel l’appelant partage le NdisVcHandle (voir les trois figures précédentes).

MiniportCoDeleteVc libère toutes les ressources allouées pour le VC, ainsi que le contexte du pilote de miniport pour le VC. ProtocolCoDeleteVc libère toutes les ressources que le client ou le gestionnaire d’appels a utilisées pour effectuer des opérations sur le VC et pour suivre son état. Tant MiniportCoDeleteVc que ProtocolCoDeleteVc sont des fonctions synchrones qui ne peuvent pas retourner NDIS_STATUS_PENDING.

Un pilote MCM lance la suppression d’un vc avec NdisMCmDeleteVc(voir la figure suivante).

Diagramme montrant un pilote MCM lançant la suppression d’un VC.

L’appel d’un pilote MCM à NdisMCmDeleteVc pousse NDIS à appeler la fonction ProtocolCoDeleteVc du client avec lequel le pilote MCM a partagé le NdisVcHandle.

Quand NdisCoDeleteVc ou NdisMCmDeleteVc retourne le contrôle, le NdisVcHandle n’est plus valide.