Compartir a través de


Cierre de TAPI de CoNDIS

Una sesión de TAPI comienza después de que un controlador de miniporte coNDIS WAN haya enumerado sus funcionalidades tapi en una aplicación. Dentro de una sesión, se pueden abrir una o varias líneas y se pueden establecer una o varias llamadas. Durante el tiempo en que se abre una línea, se pueden establecer muchas llamadas y, a continuación, cerrar o quitar. Durante una sesión, una o varias líneas pueden pasar por transiciones de abierta a cerrada muchas veces. En esta sección se describe cómo un controlador de minipuerto controla estas transiciones.

Cerrar una llamada

El nodo local o el nodo remoto pueden cerrar una llamada en proceso. La llamada se puede cerrar en el nodo local, ya sea porque se ha llamado a la última aplicación con un identificador a la llamada, o quizás porque se ha llamado al miniportador MiniportHaltEx o MiniportResetEx . Si el nodo remoto bloquea una llamada en proceso, el controlador de minipuerto debe informar a las capas superiores para anular la llamada.

Si una aplicación del nodo local cierra la llamada, debe desconectarla. Una llamada se desconecta como resultado de una aplicación que llama a la función lineDrop tapi. Esta llamada de función TAPI hace que el controlador NDPROXY llame a la función NdisClCloseCall y pase un identificador que represente el VC de la llamada. A su vez, NDIS llama a la función ProtocolCmCloseCall del controlador de miniporte CoNDIS WAN. El controlador de minipuerto debe devolver NDIS_STATUS_PENDING a NDPROXY para que el controlador de miniporte pueda completar NdisClCloseCall de forma asincrónica.

ProtocolCmCloseCall del controlador de miniporte debe comunicarse con los dispositivos de control de red para finalizar una conexión entre el nodo local y un nodo remoto. A continuación, el controlador de minipuerto debe llamar a la función NdisMCmDeactivateVc para iniciar la desactivación del VC usado para la llamada.

Una vez que el controlador de miniporte finaliza la conexión, su ProtocolCmCloseCall puede llamar a la función NdisMCmCloseCallComplete para completar el cierre de la llamada.

Si el nodo remoto bloquea una llamada en proceso, el controlador de minipuerto llama a la función NdisCmDispatchIncomingCloseCall para informar a NDISWAN y NDPROXY para anular la llamada entrante.

Cerrar una línea

Una línea se cierra cuando la última aplicación con un identificador abierto a la línea ha cerrado el identificador. Una línea se cierra como resultado de una aplicación que llama a la función lineClose tapi. Esta llamada de función TAPI hace que el controlador NDPROXY inicie el cierre de todas las llamadas en esa línea, como se describe en la sección anterior. El controlador de minipuerto debe quitar esas llamadas y limpiar su estado.

Cerrar una sesión

La terminación de la sesión se puede iniciar mediante las capas superiores o un controlador de miniporte de CoNDIS WAN. Después de que el último proceso de cliente se haya desasociado del módulo de telefonía de nivel superior, se informará al controlador NDPROXY de que debe finalizar su sesión con cada uno de los adaptadores registrados. Para ello, el controlador NDPROXY llama a la función NdisClCloseAddressFamily y pasa el identificador a la familia de direcciones TAPI. A su vez, NDIS llama a la función ProtocolCmCloseAf del controlador de miniporte. El controlador de minipuerto debe finalizar las actividades relacionadas que tiene en curso en el adaptador especificado y liberar los recursos pertinentes. Después de llamar a NdisClCloseAddressFamily, el cliente debe considerar el identificador de la familia de direcciones TAPI no válida.

La terminación de sesión iniciada por el controlador puede producirse si el controlador de miniporte se está descargando en su función MiniportHaltEx . Normalmente, el controlador de minipuerto completaría las solicitudes pendientes de NDPROXY y notificaría a NDISWAN que todas las llamadas se están cerrando. Si el controlador de miniporte se vuelve a cargar más tarde, pasará por el mismo proceso de inicialización descrito anteriormente.

El controlador de miniporte coNDIS WAN también puede iniciar la terminación de la sesión si se ha sometido a una reconfiguración dinámica que requiere una reinicialización completa de todos los clientes y controladores. Por ejemplo, si se cambió el modelado de dispositivos de línea de un adaptador (por ejemplo, el número de dispositivos de línea admitidos) sobre la marcha.