Partilhar via


Ativar um VC

Após a criação de uma conexão virtual (VC) (consulte Criando um VC), ela deve ser ativada antes que os dados possam ser transmitidos ou recebidos nela. Um gestor de chamadas inicia a ativação de um VC chamando NdisCmActivateVc(veja a figura seguinte).

Diagrama ilustrando um gestor de chamadas que inicia a ativação do VC.

Um driver MCM inicia a ativação de um VC chamando NdisMCmActivateVc (veja a figura a seguir).

Diagrama ilustrando um driver MCM iniciando a ativação do VC.

Um gestor de chamadas ou um driver MCM pode iniciar a reativação de um VC ativo se o cliente local ou uma entidade remota negociar com êxito uma alteração nos parâmetros de chamada nesse VC (consulte Client-Initiated Pedido para Fechar uma Chamada e Pedido de Entrada para Alterar Parâmetros de Chamada). O gestor de chamadas ou driver MCM pode chamar Ndis(M)CmActivateVc várias vezes para um único VC, a fim de alterar os parâmetros de chamada para uma chamada já ativa.

Para uma chamada de saída iniciada pelo cliente, um gerente de chamadas ou um driver MCM geralmente chama Ndis(M)CmActivateVc imediatamente após a troca de pacotes, confirmando um acordo negociado com o destino remoto da chamada ou a configuração bem-sucedida da chamada no switch. O gestor de chamadas ou driver MCM chama Ndis(M)CmActivateVc antes de notificar o NDIS (e o cliente) da conclusão da chamada de saída com Ndis(M)CmMakeCallComplete(consulte Realização de uma Chamada). Para uma chamada de entrada, um gerenciador de chamadas ou driver MCM geralmente chama Ndis(M)CmActivateVc depois de ter chamado NdisCo(MCm)CreateVc com êxito e antes de chamar Ndis(M)CmDispatchIncomingCall(consulte Indicando uma chamada de entrada).

Uma chamada do gestor de chamadas para NdisCmActivateVc faz com que o NDIS ative a função MiniportCoActivateVc do controlador de miniporta subjacente. MiniportCoActivateVc deve validar os parâmetros de chamada para este VC para verificar se o adaptador pode suportar a chamada solicitada. Se os parâmetros de chamada forem aceitáveis, MiniportCoActivateVc se comunica com seu adaptador conforme necessário para preparar o adaptador para receber ou transmitir dados através da conexão virtual (por exemplo, programação de buffers de recebimento). Se os parâmetros de chamada solicitados não puderem ser suportados, o driver de miniporta falhará na solicitação.

MiniportCoActivateVc pode ser concluída de forma síncrona ou assíncrona. A chamada para NdisMCoActivateVcComplete faz com que o NDIS chame a função ProtocolCmActivateVcComplete do gestor de chamadas. ProtocolCmActivateVcComplete deve verificar o status retornado pelo NdisMCoActivateVcComplete para garantir que a conexão virtual foi ativada com êxito. Se o driver de miniporta não ativou com êxito o VC, o gerenciador de chamadas não deve tentar se comunicar através do VC. ProtocolCmActivateVcComplete também deve concluir qualquer processamento exigido pela mídia de rede para garantir que a conexão virtual esteja pronta para a transmissão de dados antes de retornar o controle ao NDIS.

Uma chamada de driver MCM para NdisMCmActivateVc informa ao NDIS que configurou parâmetros de chamada e mídia em um VC recém-criado ou alterou os parâmetros de chamada em um VC estabelecido. Esta ação notifica o NDIS de que o driver MCM tornou uma NIC pronta para transferências no VC. O NDIS conclui a sequência de ativação chamando a função ProtocolCmActivateVcComplete do driver MCM.

Um driver MCM chama NdisMCmActivateVc para ativar apenas VCs usados para transmitir e/ou receber dados do cliente, mas não para ativar VCs usados para trocar mensagens de sinalização entre o driver MCM e componentes de rede, como um switch. Um driver MCM ativa um VC de sinalização internamente sem invocar qualquer função NdisXxx. Qualquer VC que um driver MCM configure para os seus próprios fins de sinalização é, portanto, opaco para o NDIS.