Aggiunta di un party a una chiamata multipoint
Un client richiede di aggiungere un'entità a una chiamata multipoint con NdisClAddParty. Un client può aggiungere un'entità solo a una chiamata multipoint esistente, ovvero una chiamata per cui il client ha fornito un oggetto ProtocolPartyContext a NdisClMakeCall(vedere Effettuare una chiamata).
Nella figura seguente viene illustrato un client di un gestore chiamate che richiede di aggiungere un'entità a una chiamata multipunto.
La figura seguente illustra un client di un driver MCM che richiede di aggiungere una parte alla chiamata multipoint.
Prima di chiamare NdisClAddParty, un client deve allocare e inizializzare l'area di contesto per l'aggiunta dell'entità. I client passano in genere un puntatore a un'area di contesto come ProtocolPartyContext e un puntatore a una variabile all'interno di tale area di contesto come parametri NdisPartyHandle quando chiamano NdisClAddParty.
Oltre a NdisVcHandle e ProtocolPartyContext, il client passa parametri di chiamata (una struttura di CO_CALL_PARAMETERS memorizzata nel buffer) a NdisClAddParty. Il supporto di rete sottostante determina se un client può specificare parametri di traffico per entità in un vc multipoint.
La chiamata a NdisClAddParty fa sì che NDIS inoltra questa richiesta alla funzione ProtocolCmAddParty del gestore chiamate o del driver MCM con cui il client condivide l'oggetto NdisVcHandle specificato. NDIS passa quanto segue a ProtocolCmAddParty:
CallMgrVcContext che indica il vc per la chiamata.
Puntatore a una struttura CO_CALL_PARAMETERS che contiene i parametri di chiamata passati dal client a NdisClAddParty.
NdisPartyHandle che identifica la parte da aggiungere.
ProtocolCmAddParty alloca e inizializza tutte le risorse dinamiche necessarie per l'entità da aggiungere alla chiamata. Da ProtocolCmAddParty, un gestore chiamate o un driver MCM comunica con dispositivi di controllo di rete o altri agenti specifici del supporto, se necessario, per aggiungere la parte specificata alla chiamata multipoint.
Se il client ha passato parametri di chiamata che non corrispondono a quelli già stabiliti per vc multipoint, il gestore chiamate o il driver MCM possono, ad esempio:
Configurare i parametri di traffico per entità se il supporto di rete sottostante supporta questa funzionalità nelle macchine virtuali multipoint.
Reimpostare i parametri di traffico forniti dal client a quelli originariamente stabiliti per il vc.
Modificare i parametri di chiamata per il vc e per ogni parte attualmente connessa.
Non riuscire il tentativo del client di aggiungere un'entità.
ProtocolCmAddParty può completare in modo sincrono o, più probabilmente, in modo asincrono con NdisCmAddPartyComplete, nel caso di un gestore chiamate o NdisMCmAddPartyComplete, nel caso di un driver MCM. Indipendentemente dal fatto che il gestore chiamate o il driver MCM completi l'operazione in modo sincrono o asincrono, passa i parametri di chiamata memorizzati nel buffer a NDIS.
La chiamata a Ndis(M)CmAddPartyComplete fa sì che NDIS chiami la funzione ProtocolClAddPartyComplete del client. Se la richiesta del client di aggiungere l'entità ha avuto esito positivo e se il protocollo di segnalazione consente al gestore chiamate o al driver MCM di modificare i parametri di chiamata, ProtocolClAddPartyComplete deve testare il flag CALL_PARAMETERS_CHANGED nella struttura di CO_CALL_PARAMETERS memorizzata nel buffer per determinare se i parametri di chiamata sono stati modificati. Il protocollo di segnalazione determina le operazioni che il client può eseguire se rileva le modifiche apportate a CO_CALL_PARAMETERS inaccettabile. In genere, un client chiama NdisClDropParty in questo caso (vedere Eliminazione di un party da una chiamata multipoint).