Erstellen einer VC
Vor dem Tätigen eines ausgehenden Anrufs initiiert ein verbindungsorientierter Client die Erstellung einer virtuellen Verbindung (VIRTUAL Connection, VC). Vor dem Angeben eines eingehenden Anrufs bei einem verbindungsorientierten Client initiiert ein Anruf-Manager oder ein MCM-Treiber die Erstellung einer VC. Nachdem die VC eingerichtet und aktiviert wurde, können Clientdaten auf der VC übertragen oder empfangen werden.
Ein Anruf-Manager oder ein MCM-Treiber kann auch die Erstellung einer VC initiieren, auf der Signalmeldungen mit Netzwerkkomponenten wie einem Netzwerkswitch ausgetauscht werden.
Client-Initiated Erstellung einer VC
Vor dem Tätigen eines Anrufs mit NdisClMakeCall ruft ein verbindungsorientierter Client NdisCoCreateVc auf, um die Erstellung einer VC zu initiieren.
Die folgende Abbildung zeigt einen Client eines Anruf-Managers, der die Erstellung einer VC initiiert.
Die folgende Abbildung zeigt einen Client eines MCM-Treibers, der die Erstellung einer VC initiiert.
Wenn ein verbindungsorientierter Client eines Anruf-Managers NdisCoCreateVc aufruft, ruft NDIS als synchronen Vorgang die ProtocolCoCreateVc-Funktion des Aufruf-Managers und die MiniportCoCreateVc-Funktion des zugrunde liegenden Miniporttreibers auf (siehe erste Abbildung in diesem Thema). NDIS übergibt ein NdisVcHandle , das die VC darstellt, an ProtocolCoCreateVc und MiniportCoCreateVc. Wenn der Aufruf von NdisCoCreateVc erfolgreich ist, gibt NDIS das NdisVcHandle an NdisCoCreateVc zurück.
ProtocolCoCreateVc weist und initialisiert alle dynamischen Ressourcen und Strukturen, die der Aufruf-Manager benötigt, um nachfolgende Vorgänge für eine VC auszuführen, die aktiviert wird. MiniportCoCreateVc weist alle Ressourcen zu, die der Miniporttreiber benötigt, um Zustandsinformationen zur VC zu verwalten. Sowohl ProtocolCoCreateVc als auch MiniportCoCreateVc speichern NdisVcHandle .
Bei einem verbindungsorientierten Client eines MCM-Treibers bewirkt der Aufruf von NdisCoCreateVc , dass NDIS die ProtocolCoCreateVc-Funktion des MCM-Treibers aufruft (siehe Client-Initiated Creation of a VC (MCM Driver Present)). In diesem Fall führt ProtocolCoCreateVc die erforderliche Zuordnung und Initialisierung von Ressourcen für die VC durch. MiniportCoCreateVc wird nicht (intern oder anderweitig) aufgerufen, da ein MCM-Treiber eine solche Funktion nicht zur Verfügung stellt.
Aufrufen Manager-Initiated Erstellung einer VC
Vor dem Angeben eines eingehenden Anrufs bei einem verbindungsorientierten Client mit NdisCmDispatchIncomingCall ruft ein Anruf-Manager NdisCoCreateVc auf, um die Erstellung einer VC zu initiieren (siehe folgende Abbildung).
Wenn ein Anruf-Manager NdisCoCreateVc aufruft, ruft NDIS als synchronen Vorgang die ProtocolCoCreateVc-Funktion des verbindungsorientierten Clients auf, der den SAP registriert hat, auf dem der Aufruf empfangen wird, sowie die MiniportCoCreateVc-Funktion des zugrunde liegenden Miniports. NDIS übergibt ein NdisVcHandle , das die VC darstellt, an ProtocolCoCreateVc und MiniportCoCreateVc. Wenn der Aufruf von NdisCoCreateVc erfolgreich ist, gibt NDIS das NdisVcHandle an NdisCoCreateVc zurück.
MCM Driver-Initiated Erstellen einer VC
Bevor er einen eingehenden Aufruf eines verbindungsorientierten Clients mit NdisMCmDispatchIncomingCall angibt, ruft ein MCM-Treiber NdisMCmCreateVc auf, um die Erstellung einer VC zu initiieren (siehe folgende Abbildung).
Wenn ein MCM-Treiber NdisMCmCreateVc aufruft, ruft NDIS als synchroner Vorgang auf, bevor NdisMCmCreateVc zurückgibt, die ProtocolCoCreateVc-Funktion des verbindungsorientierten Clients, der den SAP registriert hat, für den der Aufruf empfangen wird. NDIS übergibt ein NdisVcHandle , das die VC darstellt, an ProtocolCoCreateVc. Wenn der Aufruf von NdisMCmCreateVc erfolgreich ist, gibt NDIS das NdisVcHandle an NdisMCmCreateVc zurück.
ProtocolCoCreateVc ordnet und initialisiert alle dynamischen Ressourcen und Strukturen, die der Client für nachfolgende Vorgänge auf der VC benötigt. ProtocolCoCreateVc speichert auch NdisVcHandle .
Beachten Sie, dass ein MCM-Treiber keine NdisXxx-Aufrufe zum Austauschen von Signalmeldungen mit einer Netzwerkkomponente erstellt, um eine VC zu erstellen. Tatsächlich verwendet ein MCM-Treiber keine NdisXxx-Aufrufe , um solche VCs zu erstellen, zu aktivieren, zu deaktivieren oder zu löschen. Stattdessen führt ein MCM-Treiber diese Vorgänge intern aus. Solche VCs sind daher für NDIS undurchsichtig.