Compartilhar via


Ativando uma VC

Depois que uma VC (conexão virtual) tiver sido criada (consulte Criando uma VC), ela deverá ser ativada antes que os dados possam ser transmitidos ou recebidos nela. Um gerenciador de chamadas inicia a ativação de uma VC chamando NdisCmActivateVc (consulte a figura a seguir).

Diagrama ilustrando um gerenciador de chamadas iniciando a ativação de VC.

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

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

Um gerenciador de chamadas ou driver MCM poderá iniciar a reativação de uma VC ativa se o cliente local ou uma parte remota negociar com êxito uma alteração nos parâmetros de chamada nessa VC (consulte Solicitação iniciada pelo cliente para fechar uma chamada e solicitação de entrada para alterar parâmetros de chamada). O gerenciador de chamadas ou o driver MCM pode chamar Ndis(M)CmActivateVc muitas vezes para que uma única VC altere os parâmetros de chamada para uma chamada já ativa.

Para uma chamada de saída iniciada pelo cliente, um gerenciador de chamadas ou um driver MCM geralmente chama Ndis(M)CmActivateVc imediatamente após a troca de pacotes confirmando um contrato negociado com o destino remoto da chamada ou configuração de chamada bem-sucedida no comutador. O gerenciador de chamadas ou o driver MCM chama Ndis(M)CmActivateVc antes de notificar o NDIS (e o cliente) de conclusão de chamada de saída com Ndis(M)CmMakeCallComplete (consulte Fazendo 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).

A chamada de um gerenciador de chamadas para NdisCmActivateVc faz com que o NDIS chame a função MiniportCoActivateVc do driver de miniporto subjacente. MiniportCoActivateVc deve validar os parâmetros de chamada para essa VC para verificar se o adaptador pode dar suporte à chamada solicitada. Se os parâmetros de chamada forem aceitáveis, MiniportCoActivateVc se comunicará com seu adaptador conforme necessário para preparar o adaptador para receber ou transmitir dados pela conexão virtual (por exemplo, programar buffers de recebimento). Se não houver suporte para os parâmetros de chamada solicitados, o driver de miniporto falhará na solicitação.

MiniportCoActivateVc pode ser concluído de forma síncrona ou assíncrona. A chamada para NdisMCoActivateVcComplete faz com que o NDIS chame a função ProtocolCmActivateVcComplete do gerenciador de chamadas. ProtocolCmActivateVcComplete deve marcar o status retornado por NdisMCoActivateVcComplete para garantir que a conexão virtual tenha sido ativada com êxito. Se o driver de miniporto não tiver ativado a VC com êxito, o gerenciador de chamadas não deverá tentar se comunicar pela VC. ProtocolCmActivateVcComplete também deve concluir qualquer processamento exigido pela mídia de rede para garantir que a conexão virtual esteja pronta para transmissão de dados antes de retornar o controle para o NDIS.

Uma chamada de driver MCM para NdisMCmActivateVc informa ao NDIS que ele configurou parâmetros de chamada e mídia em uma VC recém-criada ou alterou os parâmetros de chamada em uma VC estabelecida. Essa ação notifica o NDIS de que o driver MCM preparou uma NIC para transferências na 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 usadas para transmitir e/ou receber dados do cliente, mas não para ativar VCs usadas para trocar mensagens de sinalização entre o driver MCM e componentes de rede, como um comutador. Um driver MCM ativa uma VC de sinalização internamente sem chamar nenhuma função NdisXxx . Qualquer VC que um driver MCM configura para suas próprias finalidades de sinalização é, portanto, opaca para o NDIS.