Client-Initiated solicitud para cambiar los parámetros de llamada
Un cliente solicita un cambio en la calidad del servicio (QoS) en una conexión virtual activa (VC) con NdisClModifyCallQoS.
En la ilustración siguiente se muestra el cliente de un administrador de llamadas que solicita un cambio en la calidad del servicio.
En la ilustración siguiente se muestra el cliente de un controlador MCM que solicita un cambio en la calidad del servicio.
En la llamada a NdisClModifyCallQoS, el cliente proporciona:
Parámetro NdisVcHandle que identifica la credencial verificable.
Puntero a una estructura de CO_CALL_PARAMETERS que contiene los parámetros de llamada que solicita el cliente.
Las circunstancias en las que un cliente puede solicitar un cambio en QoS se determinan mediante el protocolo de señalización.
La llamada a NdisClModifyCallQoS hace que NDIS llame a la función ProtocolCmModifyCallQoS del controlador del administrador de llamadas o MCM, que introduce la estructura de NdisVcHandle y almacenada en búfer CO_CALL_PARAMETERS que el cliente pasa a NdisClModifyCallQoS. ProtocolCmModifyQoS se comunica con dispositivos de control de red u otros agentes específicos de medios, según sea necesario por sus medios, para modificar los parámetros de llamada específicos de medios para una conexión virtual establecida.
Después de comunicarse con la red y determinar que los cambios se realizaron correctamente, un administrador de llamadas debe llamar a NdisCmActivateVc(y un controlador MCM debe llamar a NdisMCmActivateVc) para activar el VC especificado con los nuevos parámetros de llamada.
Si la red no acepta los nuevos parámetros de llamada o si el controlador de miniport subyacente no puede aceptar los parámetros, el administrador de llamadas o el controlador MCM deben restaurar la credencial verificable al estado que existía antes de que se intentaran las modificaciones y devolver NDIS_STATUS_FAILURE.
Para indicar el estado de la solicitud del cliente para cambiar QoS, un administrador de llamadas llama a NdisCmModifyCallQoSComplete y un controlador MCM llama a NdisMCmModifyCallQoSComplete. En esta llamada, el administrador de llamadas o el controlador MCM pasan:
Un NDIS_STATUS que indica el estado de la solicitud.
NdisVcHandle que identifica la credencial verificable.
Puntero a una estructura de CO_CALL_PARAMETERS que contiene los parámetros de llamada para la credencial verificable.
Si el protocolo de señalización lo permite, el administrador de llamadas o el controlador MCM pueden pasar parámetros de llamada modificados al cliente. Estas modificaciones pueden ser el producto de la negociación con la red o pueden ser suministradas por el administrador de llamadas o el propio controlador MCM. Un administrador de llamadas o un controlador MCM deben indicar que los parámetros de llamada se han modificado estableciendo la marca CALL_PARAMETERS_CHANGED en la estructura CO_CALL_PARAMETERS.
La llamada a Ndis(M)CmModifyCallQoSComplete hace que NDIS llame a la función ProtocolClModifyCallQoSComplete del cliente. NDIS pasa lo siguiente a ProtocolClModifyCallQoSComplete:
Un NDIS_STATUS que indica el estado de la solicitud del cliente para cambiar el QoS.
Un identificador ProtocolVcContext que identifica la credencial verificable.
Puntero a una estructura de CO_CALL_PARAMETERS que contiene los parámetros de llamada pasados por el administrador de llamadas o el controlador MCM a Ndis(M)CmModifyCallQoSComplete.
Si la marca CALL_PARAMETERS_CHANGED se establece en la estructura CO_CALL_PARAMETERS, el cliente debe examinar los parámetros de llamada devueltos y determinar si las modificaciones son aceptables. Si la llamada del cliente a NdisClModifyCallQoS se realiza correctamente, ProtocolClModifyCallQoSComplete puede aceptar el cambio de QoS simplemente devolviendo el control. De lo contrario, ProtocolClModifyCallQoSComplete puede participar en una negociación adicional con el administrador de llamadas si lo permite el protocolo de señalización y siempre que el desarrollador del cliente coloque algún límite razonable en el número de posibles renegociaciones. Como alternativa, ProtocolClModifyCallQoSComplete simplemente puede anular la llamada con NdisClCloseCall(consulte Solicitud iniciada por el cliente para cerrar una llamada) cada vez que el administrador de llamadas rechaza una solicitud para cambiar el QoS y el QoS establecido anteriormente se ha vuelto inaceptable para el cliente.