Disattivazione di un VC
Un gestore chiamate NdisCmDeactivateVc come passaggio essenziale per chiudere una chiamata in uscita o in ingresso, in genere dopo lo scambio di pacchetti con i componenti di rete che rimuove la chiamata (vedere Richiesta avviata dal client per chiudere una chiamata e richiesta in ingresso per chiudere una chiamata). Un driver MCM fa la stessa cosa chiamando NdisMCmDeactivateVc.
La chiamata a NdisCmDeactivateVc causa la chiamata a NDIS per chiamare la funzione MiniportCoDeactivateVc del driver sottostante (vedere la figura seguente). MiniportCoDeactivateVc comunica con la scheda di rete per terminare tutte le comunicazioni in questo VC (ad esempio, cancellare la ricezione o l'invio di buffer nella scheda).
Prima di disattivare un VC, il driver miniport deve completare eventuali trasferimenti in sospeso nel VC. Vale a dire, il driver miniport deve attendere fino a quando non ha completato tutti gli invii in corso e fino a quando tutti i pacchetti di ricezione indicati vengono restituiti a esso. Dopo aver disattivato il VC, il driver miniport non può indicare la ricezione o la trasmissione di invii nel VC.
Si noti che MiniportCoDeactivateVc non elimina il VC. Autore (client, gestione chiamate o driver MCM) di un determinato VC che non verrà riutilizzato chiama NdisCoDeleteVc per eliminare tale VC. Un VC disattivato può essere riattivato da un client orientato alla connessione, da un gestore chiamate o da un driver MCM.
MiniportCoDeactivateVc può completare in modo sincrono o asincrono. Chiamata a NdisMCoDeactivateVcComplete. fa sì che NDIS chiami la funzione ProtocolCmDeactivateVcComplete del gestore chiamate che originariamente richiedeva la disattivazione del vc. Il completamento della disattivazione significa che tutti i parametri di chiamata per il vc usato per l'attivazione non sono più validi. Qualsiasi ulteriore uso del VC è vietato tranne riattivarlo con un nuovo set di parametri di chiamata.
La chiamata di un driver MCM a NdisMCmDeactivateVc informa NDIS che ha disattivato un VC o modificato i parametri di chiamata in un VC stabilito (vedere la figura seguente). NDIS completa la sequenza di disattivazione chiamando la funzione ProtocolCmDeactivateVcComplete del driver MCM.
Un driver MCM non chiama NdisMCmDeactivateVc per disattivare le macchine virtuali usate per lo scambio di messaggi di segnalazione tra il driver MCM e i componenti di rete, ad esempio un commutatore. Un driver MCM disattiva un segnale VC internamente senza chiamare alcuna funzione NdisXxx .