Unterschiede bei virtuellen Verbindungen
Ein Anrufmanager verwendet Signalisierungs-VCs , um Signalnachrichten an und von Netzwerkentitäten wie Switches zu senden und zu empfangen. Die Signalisierungs-VCs eines Anrufmanagers sind für NDIS sichtbar. Der Anruf-Manager muss alle VCs mit Aufrufen von NDIS erstellen, aktivieren, deaktivieren und löschen. Die Signalisierungs-VCs eines MCM-Treibers sind jedoch nicht transparent für NDIS. Ein MCM-Treiber erstellt, aktiviert, deaktiviert und löscht keine Signal-VCs mit Aufrufen von NDIS. Stattdessen führt ein MCM-Treiber solche Vorgänge intern aus. Ein MCM-Treiber muss NDIS aufrufen, um Vorgänge für VCs auszuführen, die zum Senden oder Empfangen von Clientdaten verwendet werden. Dies liegt daran, dass NDIS Client-VCs nachverfolgen muss.
Da der MCM-Treiber sowohl ein Anruf-Manager als auch ein Miniporttreiber ist, sind bestimmte verbindungsorientierte Funktionen redundant. Insbesondere MiniportCoCreateVc und MiniportCoDeleteVc sind redundant und werden daher nicht von einem MCM-Treiber bereitgestellt. VC-Vorgänge werden wie folgt behandelt:
Die Funktionen ProtocolCoCreateVc und ProtocolCoDeleteVc eines MCM-Treibers, wenn ein Client die Erstellung oder Löschung einer Vc anfordert.
NdisMCmCreateVc und NdisMCmDeleteVc , wenn der MCM-Treiber eine Vc erstellt oder löscht.
NdisMCmActivateVc und NdisCmDeactivateVc , wenn der MCM-Treiber eine Vc aktiviert oder deaktiviert.
Ein MCM-Treiber muss eine MiniportCoOidRequest-Funktion für einen Client zum Abfragen oder Festlegen von Miniporttreiberinformationen und eine MiniportCoSendNetBufferLists-Funktion zum Verarbeiten von Sendevorgängen von einem Client bereitstellen.