Condividi tramite


Attivazione di un VC

Dopo aver creato una connessione virtuale (VC) (vedere Creazione di un VC), è necessario attivare prima che i dati possano essere trasmessi o ricevuti su di esso. Un gestore chiamate avvia l'attivazione di un VC chiamando NdisCmActivateVc(vedere la figura seguente).

Diagramma che illustra un gestore chiamate che avvia l'attivazione VC.

Un driver MCM avvia l'attivazione di un VC chiamando NdisMCmActivateVc(vedere la figura seguente).

Diagramma che illustra un driver MCM che avvia l'attivazione di VC.

Un gestore chiamate o un driver MCM potrebbe avviare la riattivazione di un VC attivo se il client locale o una parte remota negozia correttamente una modifica nei parametri di chiamata in tale VC (vedere Richiesta avviata dal client per chiudere una chiamata e una richiesta in ingresso per modificare i parametri di chiamata). Il gestore chiamate o il driver MCM possono chiamare Ndis(M)CmActivateVc molte volte per un singolo VC per modificare i parametri di chiamata per una chiamata già attiva.

Per una chiamata in uscita avviata dal client, un gestore chiamate o un driver MCM in genere chiama Ndis(M)CmActivateVc immediatamente dopo lo scambio di pacchetti che conferma un accordo negoziato con la destinazione remota della chiamata o la corretta configurazione della chiamata al commutatore. Il gestore chiamate o il driver MCM chiama Ndis(M)CmActivateVc prima di notificare NDIS (e il client) del completamento della chiamata in uscita con Ndis(M)CmMakeCallComplete(vedere Creazione di una chiamata). Per una chiamata in ingresso, un gestore chiamate o un driver MCM chiama in genere Ndis(M)CmActivateVc dopo aver chiamato NdisCo(MCm)CreateVc e prima di chiamare Ndis(M)CmDispatchIncomingCall(vedere Indicazione di una chiamata in ingresso).

La chiamata di un gestore chiamate a NdisCmActivateVc causa la chiamata di NDIS alla funzione MiniportCoActivateVc del driver miniport sottostante. MiniportCoActivateVc deve convalidare i parametri di chiamata per questo VC per verificare che l'adattatore possa supportare la chiamata richiesta. Se i parametri di chiamata sono accettabili, MiniportCoActivateVc comunica con la relativa scheda in base alle esigenze per preparare la scheda per ricevere o trasmettere dati nella connessione virtuale, ad esempio i buffer di ricezione della programmazione. Se non è possibile supportare i parametri di chiamata richiesti, il driver miniport non riesce la richiesta.

MiniportCoActivateVc può completare in modo sincrono o asincrono. La chiamata a NdisMCoActivateVcComplete fa in modo che NDIS chiami la funzione ProtocolCmActivateVcComplete di ProtocolCmActivateVcComplete di Gestione chiamate. ProtocolCmActivateVcComplete deve controllare lo stato restituito da NdisMCoActivateVcComplete per assicurarsi che la connessione virtuale sia stata attivata correttamente. Se il driver miniport non ha attivato correttamente il VC, il gestore chiamate non deve tentare di comunicare tramite VC. ProtocolCmActivateVcComplete deve completare anche qualsiasi elaborazione richiesta dal supporto di rete per assicurarsi che la connessione virtuale sia pronta per la trasmissione dei dati prima di restituire il controllo a NDIS.

Una chiamata del driver MCM a NdisMCmActivateVc informa NDIS che ha configurato parametri di chiamata e supporti in un VC appena creato o modifica i parametri di chiamata in un VC stabilito. Questa azione informa NDIS che il driver MCM ha creato una scheda di interfaccia di rete pronta per i trasferimenti nel VC. NDIS completa la sequenza di attivazione chiamando la funzione ProtocolCmActivateVcComplete del driver MCM.

Un driver MCM chiama NdisMCmActivateVc per attivare solo le macchine virtuali usate per la trasmissione e/o la ricezione dei dati client, ma non per attivare le macchine virtuali usate per lo scambio di messaggi tra il driver MCM e i componenti di rete, ad esempio un commutatore. Un driver MCM attiva un segnale VC internamente senza chiamare alcuna funzione NdisXxx . Qualsiasi VC configurato da un driver MCM per scopi di segnalazione propri è quindi opaco a NDIS.