Partilhar via


Criar um VC

Antes de fazer uma chamada de saída, um cliente orientado por conexão inicia a criação de uma conexão virtual (VC). Antes de indicar uma chamada de entrada para um cliente orientado para a conexão, um gestor de chamadas ou um driver MCM inicia a criação de um Canal Virtual (VC). Depois de o VC ter sido configurado e ativado, os dados do cliente podem ser transmitidos ou recebidos no VC.

Um gestor de chamadas ou um controlador MCM também pode iniciar a criação de um VC no qual as mensagens de sinalização são trocadas com componentes de rede, como um comutador de rede.

Client-Initiated Criação de um VC

Antes de fazer uma chamada com NdisClMakeCall , um cliente orientado à conexão chama NdisCoCreateVc para iniciar a criação de um VC.

A figura a seguir mostra um cliente de um gerente de chamadas iniciando a criação de um VC.

Diagrama mostrando um cliente de um gerente de chamadas iniciando a criação de um VC.

A figura a seguir mostra um cliente de um driver MCM iniciando a criação de um VC.

Diagrama que mostra um cliente de um driver MCM iniciando a criação de um VC.

Quando um cliente orientado a conexões de um gestor de chamadas invoca NdisCoCreateVc, o NDIS, numa operação síncrona, chama a função ProtocolCoCreateVc do gestor de chamadas e a função MiniportCoCreateVc do driver do miniport subjacente (consulte a primeira figura neste tópico). O NDIS passa um NdisVcHandle que representa o VC tanto para o ProtocolCoCreateVc quanto para o MiniportCoCreateVc. Se a chamada para NdisCoCreateVc for bem-sucedida, o NDIS retornará o NdisVcHandle para NdisCoCreateVc.

ProtocolCoCreateVc aloca e inicializa quaisquer recursos dinâmicos e estruturas que o gerenciador de chamadas requer para executar operações subsequentes em um VC que será ativado. MiniportCoCreateVc aloca e inicializa todos os recursos que o driver de miniporta requer para manter informações de estado sobre o VC. Tanto ProtocolCoCreateVc quanto MiniportCoCreateVc armazenam o NdisVcHandle .

Quando um cliente orientado a conexão de um driver MCM, a chamada para NdisCoCreateVc faz com que o NDIS chame a função ProtocolCoCreateVc do driver MCM (consulte Client-Initiated Criação de um VC (MCM Driver Present)). Nesse caso, ProtocolCoCreateVc executa a alocação e inicialização necessárias de recursos para o VC. Não há nenhuma chamada (interna ou não) para MiniportCoCreateVc, porque um driver MCM não fornece tal função.

Call Manager-Initiated: Criação de um VC

Antes de indicar uma chamada de entrada para um cliente orientado para a ligação com NdisCmDispatchIncomingCall, um gestor de chamadas chama NdisCoCreateVc para iniciar a criação de um VC (veja a figura a seguir).

Diagrama mostrando um gerente de chamadas iniciando a criação de um VC.

Quando um gestor de chamadas chama NdisCoCreateVc, o NDIS chama, como uma operação síncrona, a função ProtocolCoCreateVc do cliente orientado para a conexão que registou o SAP no qual a chamada está a ser recebida, bem como a função MiniportCoCreateVc do miniport subjacente. O NDIS passa um NdisVcHandle que representa o VC tanto para ProtocolCoCreateVc como para MiniportCoCreateVc . Se a chamada para NdisCoCreateVc for bem-sucedida, o NDIS retornará o NdisVcHandle para NdisCoCreateVc .

MCM Driver-Initiated Criação de um VC

Antes de indicar uma chamada de entrada para um cliente orientado à conexão com NdisMCmDispatchIncomingCall , um driver MCM chama NdisMCmCreateVc para iniciar a criação de um VC (veja a figura a seguir).

Diagrama mostrando um driver MCM iniciando a criação de um VC.

Quando um driver MCM chama NdisMCmCreateVc, o NDIS chama, como uma operação síncrona antes que NdisMCmCreateVc retorne, a função ProtocolCoCreateVc do cliente orientado a conexão que registou o SAP em que a chamada está a ser recebida. NDIS passa um NdisVcHandle que representa o VC para ProtocolCoCreateVc. Se a chamada para NdisMCmCreateVc for bem-sucedida, o NDIS retornará NdisVcHandle para NdisMCmCreateVc.

ProtocolCoCreateVc aloca e inicializa quaisquer recursos dinâmicos e estruturas que o cliente necessite para executar operações subsequentes no VC. ProtocolCoCreateVc também armazena o NdisVcHandle .

Observe que, quando um driver MCM cria um VC para trocar mensagens de sinalização com um componente de rede, não utiliza chamadas Ndis Xxx para este propósito. Na verdade, um driver MCM não usa chamadas Ndis Xxx para criar, ativar, desativar ou excluir tais VCs. Em vez disso, um driver MCM executa essas operações internamente. Tais VC são, por conseguinte, opacos para o NDIS.