Compartilhar via


Excluindo uma VC

Somente o cliente orientado à conexão, o gerenciador de chamadas ou o driver MCM que iniciou a criação de um VC (circuito virtual) pode iniciar a exclusão dessa VC. Portanto, um cliente exclui uma VC que ele criou anteriormente para uma chamada de saída, um gerenciador de chamadas ou driver MCM exclui uma VC que ele criou anteriormente para uma chamada de entrada pela rede e um gerenciador de chamadas exclui uma VC que ele criou anteriormente para trocar mensagens de sinalização pela rede. (Um driver MCM não chama o NDIS para excluir uma VC que ele criou para trocar mensagens de sinalização. O driver MCM exclui essa VC com uma operação interna opaca ao NDIS.)

Um cliente orientado a conexões ou um gerenciador de chamadas inicia a exclusão de uma VC com NdisCoDeleteVc.

A figura a seguir mostra um cliente de um gerenciador de chamadas iniciando a exclusão de uma VC.

Diagrama mostrando um cliente de um gerenciador de chamadas iniciando a exclusão de uma VC.

A figura a seguir mostra um cliente de um driver MCM iniciando a exclusão de uma VC.

Diagrama mostrando um cliente de um driver MCM iniciando a exclusão de uma VC.

A figura a seguir mostra um gerenciador de chamadas iniciando a exclusão de uma VC.

Diagrama mostrando um gerenciador de chamadas iniciando a exclusão de uma VC.

Quando um cliente ou gerenciador de chamadas chama NdisCoDeleteVc ou quando um driver MCM chama NdisMCmDeleteVc, não deve haver chamadas pendentes na VC fornecida e essa VC já deve ter sido desativada. Atender a esses requisitos implica que as seguintes condições são atendidas:

A chamada do cliente ou do gerenciador de chamadas para NdisCoDeleteVc faz com que o NDIS chame a função MiniportCoDeleteVc do driver de miniport subjacente e a função ProtocolCoDeleteVc do cliente ou gerenciador de chamadas com a qual o chamador compartilha o NdisVcHandle (consulte as três figuras anteriores).

MiniportCoDeleteVc libera todos os recursos alocados para a VC, bem como o contexto do driver de miniporto para a VC. ProtocolCoDeleteVc libera todos os recursos que o cliente ou o gerenciador de chamadas usou para executar operações no e acompanhar o estado da VC. MiniportCoDeleteVc e ProtocolCoDeleteVc são funções síncronas que não podem retornar NDIS_STATUS_PENDING.

Um driver MCM inicia a exclusão de uma VC com NdisMCmDeleteVc (consulte a figura a seguir).

Diagrama mostrando um driver MCM iniciando a exclusão de uma VC.

Uma chamada de driver MCM para NdisMCmDeleteVc faz com que o NDIS chame a função ProtocolCoDeleteVc do cliente com o qual o driver MCM compartilhou o NdisVcHandle .

Quando NdisCoDeleteVc ou NdisMCmDeleteVc retorna o controle, o NdisVcHandle não é mais válido.