Aktivieren einer VC
Nachdem eine virtuelle Verbindung (VC) erstellt wurde (siehe Erstellen einer VC), muss sie aktiviert werden, bevor Daten übertragen oder empfangen werden können. Ein Anruf-Manager initiiert die Aktivierung einer VC durch Aufrufen von NdisCmActivateVc (siehe folgende Abbildung).
Ein MCM-Treiber initiiert die Aktivierung einer VC durch Aufruf von NdisMCmActivateVc (siehe folgende Abbildung).
Ein Anruf-Manager oder MCM-Treiber kann die Reaktivierung einer aktiven VC initiieren, wenn der lokale Client oder eine Remotepartei erfolgreich eine Änderung der Anrufparameter für diese VC aushandelt (siehe Clientinitiierte Anforderung zum Schließen eines Anrufs und eingehende Anforderung zum Ändern von Anrufparametern). Der Anruf-Manager oder MCM-Treiber kann Ndis(M)CmActivateVc mehrmals aufrufen, damit eine einzelne VC die Anrufparameter für einen bereits aktiven Anruf ändern kann.
Bei einem vom Client initiierten ausgehenden Anruf ruft ein Anruf-Manager oder ein MCM-Treiber in der Regel Ndis(M)CmActivateVc direkt nach dem Paketaustausch auf, um eine ausgehandelte Vereinbarung mit dem Remoteziel des Anrufs oder eine erfolgreiche Anrufeinrichtung auf dem Switch zu bestätigen. Der Anruf-Manager oder MCM-Treiber ruft Ndis(M)CmActivateVc auf, bevor er NDIS (und den Client) über den Abschluss ausgehender Anrufe mit Ndis(M)CmMakeCallComplete benachrichtigt(siehe Tätigen eines Anrufs). Bei einem eingehenden Anruf ruft ein Anruf-Manager oder MCM-Treiber normalerweise Ndis(M)CmActivateVc auf, nachdem er NdisCo(MCm)CreateVc erfolgreich aufgerufen hat und bevor er Ndis(M)CmDispatchIncomingCall aufruft(siehe Anzeigen eines eingehenden Anrufs).
Der Aufruf von NdisCmActivateVc durch einen Anruf-Manager bewirkt, dass NDIS die MiniportCoActivateVc-Funktion des zugrunde liegenden Miniporttreibers aufruft. MiniportCoActivateVc muss die Aufrufparameter für diese VC überprüfen, um zu überprüfen, ob der Adapter den angeforderten Aufruf unterstützen kann. Wenn die Aufrufparameter akzeptabel sind, kommuniziert MiniportCoActivateVc bei Bedarf mit dem Adapter, um den Adapter für den Empfang oder die Übertragung von Daten über die virtuelle Verbindung vorzubereiten (z. B. Programmieren von Empfangspuffern). Wenn die angeforderten Aufrufparameter nicht unterstützt werden können, schlägt der Miniporttreiber die Anforderung fehl.
MiniportCoActivateVc kann synchron oder asynchron abgeschlossen werden. Durch den Aufruf von NdisMCoActivateVcComplete ruft NDIS die ProtocolCmActivateVcComplete-Funktion des Aufruf-Managers auf. ProtocolCmActivateVcComplete muss die von NdisMCoActivateVcComplete zurückgegebene status überprüfen, um sicherzustellen, dass die virtuelle Verbindung erfolgreich aktiviert wurde. Wenn der Miniporttreiber die VC nicht erfolgreich aktiviert hat, darf der Anrufmanager nicht versuchen, über die VC zu kommunizieren. ProtocolCmActivateVcComplete muss auch alle für die Netzwerkmedien erforderlichen Verarbeitungen abschließen, um sicherzustellen, dass die virtuelle Verbindung für die Datenübertragung bereit ist, bevor die Steuerung an NDIS zurückgegeben wird.
Der Aufruf eines MCM-Treibers an NdisMCmActivateVc informiert NDIS darüber, dass er Aufruf- und Medienparameter für eine neu erstellte VC eingerichtet oder die Aufrufparameter für eine etablierte VC geändert hat. Diese Aktion benachrichtigt NDIS, dass der MCM-Treiber eine NIC für Übertragungen auf der VC bereit gemacht hat. NDIS schließt die Aktivierungssequenz ab, indem die ProtocolCmActivateVcComplete-Funktion des MCM-Treibers aufgerufen wird.
Ein MCM-Treiber ruft NdisMCmActivateVc auf, um nur VCs zu aktivieren, die zum Senden und/oder Empfangen von Clientdaten verwendet werden, aber nicht, um VCs zu aktivieren, die für den Austausch von Signalnachrichten zwischen dem MCM-Treiber und Netzwerkkomponenten wie einem Switch verwendet werden. Ein MCM-Treiber aktiviert eine Signal-VC intern, ohne eine NdisXxx-Funktion aufzurufen. Jede VC, die ein MCM-Treiber für eigene Signalisierungszwecke eingerichtet hat, ist daher für NDIS undurchsichtig.