Partager via


Client-Initiated demande de fermeture d’un appel

Si un client ferme un appel multipoint auquel plusieurs parties sont toujours connectées, il doit d’abord appeler NdisClDropParty autant de fois que nécessaire pour supprimer toutes les parties sauf la dernière partie de l’appel (voir Suppression d’une partie à partir d’un appel multipoint).

Un client lance la fermeture d’un appel avec NdisClCloseCall. La figure suivante montre un client qui lance la fermeture d’un appel par le biais d’un gestionnaire d’appels.

diagramme illustrant un client qui lance la fermeture d’un appel via un gestionnaire d’appels.

La figure suivante montre un client qui lance la fermeture d’un appel via un pilote MCM.

diagramme illustrant un client qui lance la fermeture d’un appel via un pilote mcm.

Un client orienté connexion appelle généralement NdisClCloseCall dans l’une des circonstances suivantes :

L’appel d’un client à NdisClCloseCall amène NDIS à appeler la fonction ProtocolCmCloseCall du gestionnaire d’appels ou du pilote MCM. ProtocolCmCloseCall doit communiquer avec les périphériques de contrôle réseau pour arrêter une connexion entre le nœud local et un nœud distant.

Si ProtocolCmCloseCall reçoit un CallMgrPartyContext explicite, l’appel en cours d’arrêt est un appel multipoint. Le gestionnaire d’appels ou le pilote MCM doit effectuer toute communication réseau nécessaire avec son matériel réseau, en fonction de son type de média, pour terminer l’appel en tant qu’appel multipoint.

NDIS peut passer ProtocolCmCloseCall un pointeur vers une mémoire tampon contenant les données fournies par le client dans l’appel à NdisClClose. Ces données peuvent être des données de diagnostic qui indiquent pourquoi l’appel a été fermé ou toute autre donnée requise par le protocole de signalisation. ProtocolCmCloseCall doit envoyer ces données sur le réseau avant de terminer l’arrêt de l’appel. Si l’envoi de données en même temps qu’une connexion en cours d’arrêt n’est pas pris en charge, un gestionnaire d’appels ou un pilote MCM doit retourner NDIS_STATUS_INVALID_DATA.

ProtocolCmCloseCall peut se terminer de manière synchrone ou, plus probablement, de manière asynchrone avec NdisCmCloseCallComplete(dans le cas d’un gestionnaire d’appels) ou NdisMCmCloseCallComplete (dans le cas d’un pilote MCM). Un appel à Ndis(M)CmCloseCallComplete amène NDIS à appeler la fonction ProtocolClCloseCallComplete du client.

Le gestionnaire d’appels ou le pilote MCM doit ensuite lancer la désactivation du vc utilisé pour l’appel en appelant respectivement NdisCmDeactivateVc ou NdisMCmDeactivateVc(voir Désactivation d’un vc). Le créateur du vc (client, gestionnaire d’appels ou pilote MCM) peut éventuellement lancer la suppression du vc (voir Suppression d’un vc).