Client-Initiated solicitud para cerrar una llamada
Si un cliente está cerrando una llamada multipunto a la que todavía está conectada más de una entidad, primero debe llamar a NdisClDropParty tantas veces como sea necesario para quitar todo excepto la última parte de la llamada (consulte Quitar una entidad de una llamada multipunto).
Un cliente inicia el cierre de una llamada con NdisClCloseCall. En la ilustración siguiente se muestra un cliente que inicia el cierre de una llamada a través de un administrador de llamadas.
En la ilustración siguiente se muestra un cliente que inicia el cierre de una llamada a través de un controlador MCM.
Un cliente orientado a la conexión normalmente llama a NdisClCloseCall en cualquiera de las siguientes circunstancias:
Para cerrar una llamada saliente o entrante establecida.
Desde la función ProtocolClIncomingCloseCall para anular una llamada establecida (consulte Solicitud entrante para cerrar una llamada).
Desde la función ProtocolClIncomingCallQoSChange para anular una llamada establecida si un cambio de QoS que propone la entidad remota es inaceptable (consulte Solicitud entrante para cambiar parámetros de llamada).
Desde la función ProtocolClModifyCallQoSComplete para anular una llamada establecida si un cambio de QoS que el cliente propone es inaceptable para la parte remota (consulte Solicitud iniciada por el cliente para cambiar los parámetros de llamada).
La llamada de un cliente a NdisClCloseCall hace que NDIS llame a la función ProtocolCmCloseCall del administrador de llamadas o del controlador MCM. ProtocolCmCloseCall debe comunicarse con los dispositivos de control de red para finalizar una conexión entre el nodo local y un nodo remoto.
Si ProtocolCmCloseCall se pasa a callMgrPartyContext explícito, la llamada que se está finalizando es una llamada multipunto. El administrador de llamadas o el controlador MCM deben realizar cualquier comunicación de red necesaria con su hardware de red, según corresponda a su tipo de medio, para finalizar la llamada como una llamada multipunto.
NDIS puede pasar ProtocolCmCloseCall a un puntero a un búfer que contiene los datos proporcionados por el cliente en la llamada a NdisClClose. Estos datos pueden ser datos de diagnóstico que indican por qué se cerró la llamada o cualquier otro dato que requiera el protocolo de señalización. ProtocolCmCloseCall debe enviar dichos datos a través de la red antes de completar la finalización de la llamada. Si no se admite el envío de datos simultáneos con una conexión terminada, un administrador de llamadas o un controlador MCM deben devolver NDIS_STATUS_INVALID_DATA.
ProtocolCmCloseCall puede completarse sincrónicamente o, más probablemente, de forma asincrónica con NdisCmCloseCallComplete(en el caso de un administrador de llamadas) o NdisMCmCloseCallComplete(en el caso de un controlador MCM). Una llamada a Ndis(M)CmCloseCallComplete hace que NDIS llame a la función ProtocolClCloseCallComplete del cliente.
Después, el administrador de llamadas o el controlador MCM deben iniciar la desactivación de la credencial verificable utilizada para la llamada mediante la llamada a NdisCmDeactivateVc o NdisMCmDeactivateVc(consulte Desactivación de una credencial verificable). El creador de la credencial verificable (cliente, administrador de llamadas o controlador MCM) puede iniciar opcionalmente la eliminación de la credencial verificable (consulte Eliminación de una credencial verificable).