Activación de una credencial verificable
Después de crear una conexión virtual (VC) (consulte Creación de una credencial verificable), debe activarse antes de que se puedan transmitir o recibir datos en él. Un administrador de llamadas inicia la activación de una credencial verificable mediante una llamada a NdisCmActivateVc(consulte la ilustración siguiente).
Un controlador MCM inicia la activación de una credencial verificable mediante una llamada a NdisMCmActivateVc(consulte la ilustración siguiente).
Un administrador de llamadas o un controlador MCM podrían iniciar la reactivación de una credencial verificable activa si el cliente local o un usuario remoto negocian correctamente un cambio en los parámetros de llamada en esa credencial verificable (consulte Solicitud iniciada por el cliente para cerrar una llamada y una solicitud entrante para cambiar los parámetros de llamada). El administrador de llamadas o el controlador MCM pueden llamar a Ndis(M)CmActivateVc muchas veces para que una sola credencial verificable cambie los parámetros de llamada de una llamada ya activa.
En el caso de una llamada saliente iniciada por el cliente, un administrador de llamadas o un controlador MCM normalmente llama a Ndis(M)CmActivateVc inmediatamente después del intercambio de paquetes que confirma un contrato negociado con el destino remoto de la llamada o la correcta configuración de llamadas en el conmutador. El administrador de llamadas o el controlador MCM llama a Ndis(M)CmActivateVc antes de que notifique a NDIS (y al cliente) de finalización de llamadas salientes con Ndis(M)CmMakeCallComplete(consulte Realización de una llamada). Para una llamada entrante, un administrador de llamadas o un controlador MCM normalmente llama a Ndis(M)CmActivateVc después de llamar a NdisCo(MCm)CreateVc correctamente y antes de llamar a Ndis(M)CmDispatchIncomingCall(vea Indicación de una llamada entrante).
Una llamada del administrador de llamadas a NdisCmActivateVc hace que NDIS llame a la función MiniportCoActivateVc del controlador de miniport subyacente. MiniportCoActivateVc debe validar los parámetros de llamada para este VC para comprobar que el adaptador puede admitir la llamada solicitada. Si los parámetros de llamada son aceptables, MiniportCoActivateVc se comunica con su adaptador según sea necesario para preparar el adaptador para recibir o transmitir datos a través de la conexión virtual (por ejemplo, programar búferes de recepción). Si no se admiten los parámetros de llamada solicitados, el controlador de minipuerto produce un error en la solicitud.
MiniportCoActivateVc puede completarse de forma sincrónica o asincrónica. La llamada a NdisMCoActivateVcComplete hace que NDIS llame a la función ProtocolCmActivateVcComplete del administrador de llamadas. ProtocolCmActivateVcComplete debe comprobar el estado devuelto por NdisMCoActivateVcComplete para asegurarse de que la conexión virtual se ha activado correctamente. Si el controlador de minipuerto no ha activado correctamente la credencial verificable, el administrador de llamadas no debe intentar comunicarse a través de la credencial verificable. ProtocolCmActivateVcComplete también debe completar cualquier procesamiento requerido por el medio de red para asegurarse de que la conexión virtual está lista para la transmisión de datos antes de devolver el control a NDIS.
Una llamada del controlador MCM a NdisMCmActivateVc informa a NDIS de que ha configurado parámetros de llamada y multimedia en una credencial verificable recién creada o ha cambiado los parámetros de llamada en una credencial verificable establecida. Esta acción notifica a NDIS que el controlador MCM ha hecho una NIC lista para transferencias en la credencial verificable. NDIS completa la secuencia de activación mediante una llamada a la función ProtocolCmActivateVcComplete del controlador MCM.
Un controlador MCM llama a NdisMCmActivateVc para activar solo las máquinas virtuales usadas para transmitir o recibir datos de cliente, pero no para activar las máquinas virtuales usadas para intercambiar mensajes de señalización entre el controlador MCM y los componentes de red, como un conmutador. Un controlador MCM activa un VC de señalización internamente sin llamar a ninguna función NdisXxx . Por lo tanto, cualquier VC que un controlador MCM configure para sus propios fines de señalización es opaco para NDIS.