Partilhar via


Desativar um VC

Um gestor de chamadas chama NdisCmDeactivateVc como um passo essencial para fechar uma chamada de entrada ou de saída, normalmente após a troca de pacotes com componentes de rede que destrói a chamada (consulte Client-Initiated Pedido para fechar uma chamada e Pedido de entrada para fechar uma chamada). Um driver MCM faz a mesma coisa chamando NdisMCmDeactivateVc.

A chamada para NdisCmDeactivateVc faz com que o NDIS chame a função MiniportCoDeactivateVc do driver de miniporta subjacente (veja a figura a seguir). MiniportCoDeactivateVc comunica com o seu adaptador de rede para encerrar toda a comunicação através deste VC (por exemplo, limpar os buffers de receção ou de envio no adaptador).

Diagrama mostrando um gestor de chamadas que inicia a desativação do VC.

Antes de desativar um VC, o controlador de miniporta deve concluir todas as transferências pendentes no VC. Ou seja, o driver de miniporta deve esperar até que tenha concluído todos os envios em andamento e até que todos os pacotes de recebimento que ele indicou sejam devolvidos a ele. Depois de desativar o VC, o driver da miniporta não pode indicar receções ou transmissões no VC.

Observe que MiniportCoDeactivateVc não exclui o VC. O criador (cliente, gestor de chamadas ou controlador MCM) de um determinado VC que não será reutilizado chama NdisCoDeleteVc para destruir esse VC. Um VC desativado pode ser reativado por um cliente orientado à conexão, um gestor de chamadas ou um driver MCM.

MiniportCoDeactivateVc pode ser concluído de forma síncrona ou assíncrona. Uma chamada para NdisMCoDeactivateVcComplete. faz com que o NDIS chame a função ProtocolCmDeactivateVcComplete do gestor de chamadas que solicitou originalmente a desativação do VC. A conclusão da desativação significa que todos os parâmetros de chamada para o VC usados na ativação não são mais válidos. Qualquer uso adicional do VC é proibido, exceto para reativá-lo com um novo conjunto de parâmetros de chamada.

Quando um driver MCM faz uma chamada para NdisMCmDeactivateVc, informa ao NDIS que desativou um VC ou alterou os parâmetros de chamada em um VC estabelecido (veja a figura a seguir). O NDIS conclui a sequência de desativação chamando a função de ProtocolCmDeactivateVcComplete do driver MCM.

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

Um driver MCM não chama NdisMCmDeactivateVc para desativar VCs usados para trocar mensagens de sinalização entre o driver MCM e componentes de rede, como um switch. Um driver MCM desativa um VC de sinalização internamente sem chamar nenhuma função NdisXxx.