Condividi tramite


Client-Initiated richiesta di modifica dei parametri di chiamata

Un client richiede una modifica della qualità del servizio (QoS) in una connessione virtuale attiva con NdisClModifyCallQoS.

Nella figura seguente viene illustrato il client di un gestore chiamate che richiede una modifica della qualità del servizio.

Diagramma che mostra un client di un gestore chiamate che richiede una modifica QoS in un vc attivo.

La figura seguente illustra il client di un driver MCM che richiede una modifica della qualità del servizio.

Diagramma che illustra un client di un driver MCM che richiede una modifica QoS in un vc attivo.

Nella chiamata a NdisClModifyCallQoS il client fornisce:

  • Parametro NdisVcHandle che identifica il vc.

  • Puntatore a una struttura CO_CALL_PARAMETERS che contiene i parametri di chiamata richiesti dal client.

Le circostanze in cui un client può richiedere una modifica in QoS sono determinate dal protocollo di segnalazione.

La chiamata a NdisClModifyCallQoS fa sì che NDIS chiami la funzione ProtocolCmModifyCallQoS del gestore chiamate o del driver MCM, che inserisce la struttura NdisVcHandle e memorizzata nel buffer CO_CALL_PARAMETERS che il client passa a NdisClModifyCallQoS. ProtocolCmModifyQoS comunica con i dispositivi di controllo di rete o altri agenti specifici del supporto, come richiesto dal supporto, per modificare i parametri di chiamata specifici del supporto per una connessione virtuale stabilita.

Dopo aver comunicato con la rete e aver determinato che le modifiche sono state apportate correttamente, un gestore chiamate deve chiamare NdisCmActivateVc(e un driver MCM deve chiamare NdisMCmActivateVc) per attivare il vc specificato con i nuovi parametri di chiamata.

Se la rete non accetta i nuovi parametri di chiamata o se il driver miniport sottostante non può accettare i parametri, il gestore chiamate o il driver MCM deve ripristinare lo stato esistente prima di eventuali modifiche e restituire NDIS_STATUS_FAILURE.

Per indicare lo stato della richiesta del client per modificare QoS, un gestore chiamate NdisCmModifyCallQoSComplete e un driver MCM chiama NdisMCmModifyCallQoSComplete. In questa chiamata il gestore chiamate o il driver MCM passa:

  • Un NDIS_STATUS che indica lo stato della richiesta.

  • NdisVcHandle che identifica il vc.

  • Puntatore a una struttura CO_CALL_PARAMETERS che contiene i parametri di chiamata per il vc.

Se consentito dal protocollo di segnalazione, il gestore chiamate o il driver MCM possono passare di nuovo i parametri di chiamata modificati al client. Queste modifiche possono essere il prodotto della negoziazione con la rete o possono essere fornite dal call manager o dal driver MCM stesso. Un gestore chiamate o un driver MCM deve indicare che i parametri di chiamata sono stati modificati impostando il flag CALL_PARAMETERS_CHANGED nella struttura CO_CALL_PARAMETERS.

La chiamata a Ndis(M)CmModifyCallQoSComplete fa sì che NDIS chiami la funzione ProtocolClModifyCallQoSComplete del client. NDIS passa quanto segue a ProtocolClModifyCallQoSComplete:

  • Un NDIS_STATUS che indica lo stato della richiesta del client per modificare il QoS.

  • Handle ProtocolVcContext che identifica il vc.

  • Puntatore a una struttura CO_CALL_PARAMETERS che contiene i parametri di chiamata passati dal gestore chiamate o dal driver MCM a Ndis(M)CmModifyCallQoSComplete.

Se il flag CALL_PARAMETERS_CHANGED è impostato nella struttura CO_CALL_PARAMETERS, il client deve esaminare i parametri di chiamata restituiti e determinare se le modifiche sono accettabili. Se la chiamata del client a NdisClModifyCallQoS ha esito positivo, ProtocolClModifyCallQoSComplete può accettare la modifica QoS semplicemente restituendo il controllo . In caso contrario, ProtocolClModifyCallQoSComplete può impegnarsi in un'ulteriore negoziazione con il gestore chiamate, se consentito dal protocollo di segnalazione e purché lo sviluppatore del client inserisca un limite ragionevole sul numero di possibili rinegoziazioni. In alternativa, ProtocolClModifyCallQoSComplete può semplicemente rimuovere la chiamata con NdisClCloseCall(vedere Richiesta avviata dal client per chiudere una chiamata) ogni volta che il gestore chiamate rifiuta una richiesta di modifica del QoS e il QoS stabilito in precedenza è diventato inaccettabile per il client.