Partager via


Arrêt de CoNDIS TAPI

Une session TAPI commence une fois qu’un pilote miniport CoNDIS WAN a énuméré ses fonctionnalités TAPI à une application. Au sein d’une session, une ou plusieurs lignes peuvent être ouvertes et un ou plusieurs appels peuvent être établis. Pendant qu’une ligne est ouverte, de nombreux appels peuvent être établis, puis fermés ou supprimés. Au cours d’une session, une ou plusieurs lignes peuvent passer de l’ouverture à la fermeture plusieurs fois. La façon dont un pilote miniport gère ces transitions est décrite dans cette section.

Fermeture d’un appel

Un appel in-process peut être fermé par le nœud local ou par le nœud distant. L’appel peut être fermé sur le nœud local, soit parce que la dernière application avec un handle à l’appel a fermé le handle, soit parce que miniportHaltEx ou MiniportResetEx du pilote miniport a été appelé. Si le nœud distant bloque un appel in-process, le pilote miniport doit informer les couches supérieures de l’arrêt de l’appel.

Si une application sur le nœud local ferme l’appel, elle doit déconnecter l’appel. Un appel est déconnecté suite à l’appel d’une application appelant la fonction tapi lineDrop . Cet appel de fonction TAPI amène le pilote NDPROXY à appeler la fonction NdisClCloseCall et à passer un handle qui représente le vc pour l’appel. NDIS appelle à son tour la fonction ProtocolCmCloseCall du pilote miniport Du WAN CoNDIS. Le pilote miniport doit retourner NDIS_STATUS_PENDING à NDPROXY afin qu’il puisse effectuer NdisClCloseCall de manière asynchrone.

ProtocolCmCloseCall du pilote miniport 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. Le pilote miniport doit ensuite appeler la fonction NdisMCmDeactivateVc pour lancer la désactivation du vc utilisé pour l’appel.

Une fois la connexion terminée par le pilote miniport, son ProtocolCmCloseCall peut appeler la fonction NdisMCmCloseCallComplete pour terminer la fermeture de l’appel.

Si le nœud distant raccroche un appel in-process, le pilote miniport appelle la fonction NdisCmDispatchIncomingCloseCall pour informer NDISWAN et NDPROXY de supprimer l’appel entrant.

Fermeture d’une ligne

Une ligne est fermée lorsque la dernière application avec un handle ouvert à la ligne a fermé le handle. Une ligne est fermée à la suite d’une application appelant la fonction TAPI lineClose . Cet appel de fonction TAPI amène le pilote NDPROXY à lancer la fermeture de tous les appels sur cette ligne, comme décrit dans la section précédente. Le pilote miniport doit supprimer ces appels et propre leur état.

Fermeture d'une session

L’arrêt de session peut être initié par les couches supérieures ou par un pilote miniport CoNDIS WAN. Une fois le dernier processus client détaché du module téléphonie de niveau supérieur, le pilote NDPROXY est informé qu’il doit terminer sa session avec chacun des adaptateurs inscrits. Pour ce faire, le pilote NDPROXY appelle la fonction NdisClCloseAddressFamily et transmet le handle à la famille d’adresses TAPI. NDIS appelle à son tour la fonction ProtocolCmCloseAf du pilote miniport. Le pilote miniport doit arrêter toutes les activités connexes qu’il a en cours sur l’adaptateur spécifié et libérer toutes les ressources pertinentes. Après avoir appelé NdisClCloseAddressFamily, le client doit considérer le handle de la famille d’adresses TAPI non valide.

L’arrêt de session initié par le pilote peut se produire si le pilote miniport est en cours de déchargement dans sa fonction MiniportHaltEx . En règle générale, le pilote miniport répond à toutes les demandes NDPROXY en suspens et informe NDISWAN que tous les appels sont en cours de fermeture. Si le pilote miniport était rechargé plus tard, il passerait par le même processus d’initialisation que celui décrit précédemment.

Le pilote miniport CoNDIS WAN peut également lancer l’arrêt de session s’il a subi une reconfiguration dynamique nécessitant une réinitialisation complète de tous les clients et pilotes. Par exemple, si la modélisation de l’appareil de ligne d’un adaptateur (par exemple, le nombre d’appareils de ligne pris en charge) a été modifiée à la volée.