Demande entrante de fermeture d’un appel
Lorsque le client distant ferme un appel, le gestionnaire d’appels local ou le pilote MCM doit indiquer cette demande entrante au client local. Pour indiquer une telle demande, un gestionnaire d’appels appelle NdisCmDispatchIncomingCloseCall avec closeStatus défini sur NDIS_STATUS_SUCCESS (voir la figure suivante).
Un pilote MCM appelle NdisMCmDispatchIncomingCloseCall pour indiquer une demande entrante de fermeture d’un appel (voir la figure suivante).
Un gestionnaire d’appels ou un pilote MCM peut également appeler Ndis(M)CmDispatchIncomingCloseCall :
À partir de sa fonction ProtocolCmIncomingCallComplete s’il détermine que le client orienté connexion demande une modification inacceptable des paramètres d’appel en réponse à un appel entrant précédemment indiqué par le gestionnaire d’appels ou le pilote MCM (voir Demande entrante de modification des paramètres d’appel).
Si des conditions réseau anormales forcent le gestionnaire d’appels à supprimer les appels actifs.
L’appel à Ndis(M)CmDispatchIncomingCloseCall amène NDIS à appeler la fonction ProtocolClIncomingCloseCall du client orienté connexion sur cette connexion. ProtocolClIncomingCloseCall doit effectuer toutes les opérations déterminées par le protocole, telles que la notification de son ou de ses propres clients que la connexion est rompue. Si l’appel à fermer est un vc multipoint créé par le client, ProtocolClIncomingCloseCall doit appeler NdisClDropParty une ou plusieurs fois jusqu’à ce qu’une seule partie reste sur le VC (voir Suppression d’une partie à partir d’un appel multipoint).
ProtocolClIncomingCloseCall doit ensuite appeler NdisClCloseCall (avec le handle à la dernière partie sur le vc si le vc est un vc multipoint créé par le client) pour reconnaître que le client ne tentera plus d’envoyer ou de s’attendre à recevoir des données sur ce vc particulier. Si le gestionnaire d’appels ou le pilote MCM a créé ce vc, ProtocolClIncomingCloseCall doit retourner le contrôle après avoir appelé NdisClCloseCall. Le gestionnaire d’appels ou le pilote MCM doivent également désactiver le vc (voir Désactivation d’un vc).
Si le client a créé à l’origine cette vc pour un appel sortant et que CloseStatus est NDIS_STATUS_SUCCESS, ProtocolClIncomingCloseCall peut éventuellement détruire le vc avec NdisCoDeleteVc (voir Suppression d’un vc) ou réutiliser le vc pour un autre appel. Si CloseStatus n’est pas NDIS_STATUS_SUCCESS, ProtocolClIncomingCloseCall doit appeler NdisCoDeleteVc.
Si le gestionnaire d’appels ou le pilote MCM a créé à l’origine ce vc pour un appel entrant, le gestionnaire d’appels ou le pilote MCM peut éventuellement supprimer le vc en appelant respectivement NdisCoDeleteVc ou NdisMCmDeleteVc.