Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
La figura seguente mostra un client che effettua una chiamata in uscita tramite un gestore chiamate.
La figura seguente mostra un client che effettua una chiamata in uscita tramite un driver MCM.
Prima di effettuare una chiamata in uscita, un client orientato alla connessione deve:
Inizializzare i parametri di chiamata in una struttura di tipo CO_CALL_PARAMETERS. Il gestore chiamate o il driver MCM utilizza in genere i parametri di chiamata specificati dal client per configurare la chiamata e per derivare i parametri multimediali da usare dal driver miniport.
Avviare la creazione di un VC con NdisCoCreateVc.
Al successo del ritorno di NdisCoCreateVc, il client chiama NdisClMakeCall per avviare la chiamata (vedere le due figure in questa sezione).
Nella chiamata a NdisClMakeCall, il client passa un puntatore alla struttura CO_CALL_PARAMETERS inizializzata in precedenza. Il client passa anche un NdisVcHandle (restituito da NdisCoCreateVc) che identifica il vc in cui il client trasmetterà (e forse riceverà) i dati per la chiamata. Se il client effettua una chiamata multipoint (una chiamata a più parti remote), passa anche un ProtocolPartyContext che specifica un handle a un'area di contesto residente allocata dal client, dove il client manterrà lo stato per ogni parte, specificamente per la parte iniziale sul VC multipoint.
La chiamata a NdisClMakeCall fa sì che NDIS inoltri la richiesta alla funzione ProtocolCmMakeCall del gestore chiamate o del driver MCM con cui il client condivide il NdisVcHandle specificato. ProtocolCmMakeCall deve convalidare i parametri di chiamata di input configurati dal client.
ProtocolCmMakeCall comunica (scambia messaggi di segnalazione) con i dispositivi di controllo di rete per stabilire una connessione. Un gestore delle chiamate chiama NdisCoSendNetBufferLists per avviare tale scambio (vedere Invio di strutture NET_BUFFER dai driver CoNDIS). Un driver MCM non chiama mai NdisCoSendNetBufferLists. Trasmette invece i dati direttamente attraverso la rete.
Il gestore chiamate o il driver MCM possono modificare i parametri di chiamata forniti dal client durante la negoziazione con i componenti di rete pertinenti e possono restituire parametri di traffico diversi rispetto al client originariamente assegnato a NdisClMakeCall(vedere richiesta in ingresso per modificare i parametri di chiamata).
Un esplicito NdisPartyHandle passato a ProtocolCmMakeCall indica che il VC creato dal client verrà usato per una chiamata multipunto. Il gestore chiamate o il driver MCM devono allocare e inizializzare le risorse necessarie per mantenere le informazioni sullo stato di ogni partecipante e controllare la chiamata multipunto.
Dopo che un gestore delle chiamate ha eseguito tutte le comunicazioni necessarie con l'hardware di rete richiesto dal proprio supporto, deve chiamare NdisCmActivateVc per avviare l'attivazione del VC su cui i dati delle chiamate saranno inviati e forse ricevuti. Un driver MCM deve chiamare NdisMCmActivateVc.
Quando il driver miniport sottostante è pronto per effettuare trasferimenti di dati nel VC (ovvero dopo l'attivazione del vc), un gestore chiamate chiama NdisCmMakeCallCompletee un driver MCM chiama NdisMCmMakeCallComplete. A questo punto, il gestore chiamate o il driver MCM dovrebbe aver negoziato con la rete per stabilire i parametri di chiamata per il VC e il driver miniport sottostante dovrebbe aver completato l'attivazione del vc.
Nella chiamata a Ndis(M)CmMakeCallComplete, il gestore chiamate o il driver MCM passa i parametri di chiamata per VC come puntatore a una struttura di tipo CO_CALL_PARAMETERS. Se il gestore chiamate ha modificato i parametri di chiamata come originariamente specificato dal client, può inviare una notifica al client impostando il flag CALL_PARAMETERS_CHANGED nella struttura CO_CALL_PARAMETERS.
Una chiamata a Ndis(M)CmMakeCallComplete fa sì che NDIS chiami la funzione ProtocolClMakeCallComplete del client che ha originato la chiamata in uscita. Una chiamata a ProtocolClMakeCallComplete indica che il gestore chiamate ha completato l'elaborazione della richiesta del client per stabilire una connessione virtuale con NdisClMakeCall.
Se il tentativo del client di stabilire una chiamata in uscita è riuscito, ProtocolClMakeCallComplete deve controllare il flag CALL_PARAMETERS_CHANGED per determinare se i parametri di chiamata originariamente specificati dal client sono stati modificati. Se il flag è impostato, a indicare che i parametri di chiamata sono stati modificati, ProtocolClMakeCallComplete deve esaminare i parametri di chiamata restituiti per determinare se sono accettabili per questa connessione.
Se i parametri di chiamata sono accettabili, ProtocolClMakeCallComplete restituisce semplicemente il controllo. Se i parametri di chiamata non sono accettabili e se il protocollo di segnalazione consente la rinegoziazione a questo punto, il client può chiamare NdisClModifyCallQoS per richiedere una modifica nei parametri di chiamata (vedere Client-Initiated Request to Close a Call). Se il protocollo di segnalazione non consente la rinegoziazione di parametri di chiamata non accettabili, ProtocolClMakeCallComplete deve rimuovere la chiamata con NdisClCloseCall(vedere Client-Initiated Richiesta di chiusura di una chiamata).