Partage 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 la durée d’ouverture d’une ligne, de nombreux appels peuvent être établis, puis fermés ou supprimés. Pendant 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 possédant un handle de l’appel a fermé ce handle, ou peut-être parce que le pilote miniport a appelé MiniportHaltEx ou MiniportResetEx. Si le nœud distant interrompt un appel en cours, le pilote miniport doit informer les couches supérieures du démantèlement 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é en raison d’une application appelant la fonction TAPI lineDrop . Cet appel de fonction TAPI entraîne le pilote NDPROXY à appeler la fonction NdisClCloseCall et à transmettre un handle qui représente le VC de l'appel. NDIS appelle à son tour la fonction ProtocolCmCloseCall du pilote Miniport CoNDIS WAN. Le pilote miniport doit retourner NDIS_STATUS_PENDING à NPDROXY afin que le pilote miniport puisse terminer NdisClCloseCall de façon asynchrone.

Le protocole ProtocolCmCloseCall du pilote miniport doit communiquer avec les périphériques de contrôle réseau pour terminer 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 ProtocoleCmCloseCall peut appeler la fonction NdisMCmCloseCallComplete pour terminer la fermeture de l’appel.

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

Fermeture d’une ligne

Une ligne est fermée lorsque le dernier programme utilisant un descripteur ouvert pour la ligne a fermé ce descripteur. Une ligne est fermée à la suite d’une application appelant la fonction TAPI lineClose . Cet appel de fonction TAPI entraîne le lancement par le pilote NPDROXY de 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 nettoyer leur état.

Fermeture d’une session

L’arrêt de session peut être initié par les couches supérieures ou un pilote miniport CoNDIS WAN. Une fois le dernier processus client détaché du module de téléphonie de niveau supérieur, le pilote NPDROXY sera informé qu’il doit mettre fin à 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 mettre fin à toutes les activités qu’il a actuellement en cours sur l’adaptateur spécifié et libérer les ressources associées. Après avoir appelé NdisClCloseAddressFamily, le client doit considérer le handle de la famille d’adresses TAPI comme non valide.

L’arrêt de session initié par le pilote peut se produire si le pilote miniport est déchargé dans sa fonction MiniportHaltEx . En règle générale, le pilote miniport effectuerait toutes les demandes NDPROXY en suspens et informerait NDISWAN que tous les appels sont en cours de fermeture. Si le pilote miniport était rechargé ultérieurement, il passerait par le même processus d’initialisation 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 des appareils de ligne d’un adaptateur (par exemple, le nombre d’appareils de ligne pris en charge) a été modifiée à la volée.