Richiesta in ingresso per chiudere una chiamata
Quando il client remoto chiude una chiamata, il gestore chiamate locale o il driver MCM devono indicare questa richiesta in ingresso al client locale. Per indicare tale richiesta, un gestore chiamate chiama NdisCmDispatchIncomingCloseCall con CloseStatus impostato su NDIS_STATUS_SUCCESS (vedere la figura seguente).
Un driver MCM chiama NdisMCmDispatchIncomingCloseCall per indicare una richiesta in ingresso per chiudere una chiamata (vedere la figura seguente).
Un gestore chiamate o un driver MCM può anche chiamare Ndis(M)CmDispatchIncomingCloseCall:
Dalla funzione ProtocolCmIncomingCallComplete se determina che il client orientato alla connessione richiede una modifica inaccettabile nei parametri di chiamata in risposta a una chiamata in ingresso indicata in precedenza dal gestore chiamate o dal driver MCM (vedere Richiesta in ingresso per modificare i parametri di chiamata).
Se condizioni di rete anomale forzano il gestore chiamate a rimuovere le chiamate attive.
La chiamata a Ndis(M)CmDispatchIncomingCloseCall fa sì che NDIS chiami la funzione ProtocolClIncomingCloseCall del client orientato alla connessione in tale connessione. ProtocolClIncomingCloseCall deve eseguire qualsiasi operazione determinata dal protocollo, ad esempio notificando al client o ai client che la connessione viene interrotta. Se la chiamata da chiudere è un vc multipunto creato dal client, ProtocolClIncomingCloseCall deve chiamare NdisClDropParty una o più volte finché non rimane solo una singola parte nel vc (vedere Eliminazione di una parte da una chiamata multipoint).
ProtocolClIncomingCloseCall deve quindi chiamare NdisClCloseCall(con l'handle all'ultima parte nel vc se vc è un vc multipoint creato dal client) per confermare che il client non tenterà più di inviare o prevedere di ricevere dati in questo particolare vc. Se il gestore chiamate o il driver MCM ha creato questo vc, ProtocolClIncomingCloseCall deve restituire il controllo dopo aver chiamato NdisClCloseCall. Anche il gestore chiamate o il driver MCM devono disattivare il vc (vedere Disattivazione di un vc).
Se il client ha originariamente creato questo vc per una chiamata in uscita e CloseStatus è NDIS_STATUS_SUCCESS, ProtocolClIncomingCloseCall può facoltativamente eliminare il vc con NdisCoDeleteVc(vedere Eliminazione di un vc) o riutilizzare il vc per un'altra chiamata. Se CloseStatus non è NDIS_STATUS_SUCCESS, ProtocolClIncomingCloseCall deve chiamare NdisCoDeleteVc.
Se il gestore chiamate o il driver MCM ha originariamente creato questo vc per una chiamata in arrivo, il gestore chiamate o il driver MCM possono facoltativamente eliminare il vc chiamando rispettivamente NdisCoDeleteVc o NdisMCmDeleteVc.