Partilhar via


Desativando uma VC

Um gerenciador de chamadas chama NdisCmDeactivateVc como uma etapa essencial para fechar uma chamada de saída ou de entrada, normalmente após a troca de pacotes com componentes de rede que derrubam a chamada (consulte Solicitação iniciada pelo cliente para fechar uma chamada e solicitação 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 miniport subjacente (consulte a figura a seguir). MiniportCoDeactivateVc comunica-se com seu adaptador de rede para encerrar toda a comunicação através dessa VC (por exemplo, limpar buffers de recebimento ou envio no adaptador).

Diagrama mostrando um gerenciador de chamadas iniciando a desativação de VC.

Antes de desativar uma VC, o driver de miniporto deve concluir todas as transferências pendentes na VC. Ou seja, o driver de miniporto deve aguardar até concluir todos os envios em andamento e até que todos os pacotes de recebimento indicados sejam retornados a ele. Depois de desativar a VC, o driver de miniporto não pode indicar recebimentos ou envios de transmissão na VC.

Observe que MiniportCoDeactivateVc não exclui a VC. O criador (cliente, gerenciador de chamadas ou driver MCM) de uma VC específica que não será reutilizado chama NdisCoDeleteVc para destruir essa VC. Uma VC desativada pode ser reativada por um cliente orientado a conexões, um gerenciador 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 gerenciador de chamadas que originalmente solicitou a desativação de VC. A conclusão da desativação significa que todos os parâmetros de chamada para a VC usada na ativação não são mais válidos. Qualquer uso adicional da VC é proibido, exceto para reativar com um novo conjunto de parâmetros de chamada.

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

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

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