Freigeben über


Löschen einer VC

Nur der verbindungsorientierte Client, Anruf-Manager oder MCM-Treiber, der die Erstellung einer virtuellen Verbindung (VC) initiiert hat, kann das Löschen dieser VC initiieren. Ein Client löscht daher eine VC, die er zuvor für einen ausgehenden Anruf erstellt hat. Ein Anruf-Manager oder MCM-Treiber löscht eine VC, die er zuvor für einen eingehenden Anruf über das Netzwerk erstellt hat, und ein Anrufmanager löscht eine VC, die er zuvor für den Austausch von Signalnachrichten über das Netzwerk erstellt hat. (Ein MCM-Treiber ruft NDIS nicht auf, um eine VC zu löschen, die er für den Austausch von Signalnachrichten erstellt hat. Der MCM-Treiber löscht eine solche VC mit einem internen Vorgang, der für NDIS undurchsichtig ist.)

Ein verbindungsorientierter Client oder Anruf-Manager initiiert das Löschen einer VC mit NdisCoDeleteVc.

Die folgende Abbildung zeigt einen Client eines Anruf-Managers, der das Löschen einer VC initiiert.

Diagramm: Client eines Anruf-Managers, der das Löschen einer VC initiiert.

Die folgende Abbildung zeigt einen Client eines MCM-Treibers, der das Löschen einer VC initiiert.

Diagramm: Client eines MCM-Treibers, der das Löschen einer VC initiiert.

Die folgende Abbildung zeigt einen Anruf-Manager, der das Löschen einer VC initiiert.

Diagramm eines Anrufmanagers, der das Löschen einer VC initiiert.

Wenn ein Client oder Anruf-Manager NdisCoDeleteVc aufruft oder wenn ein MCM-Treiber NdisMCmDeleteVc aufruft, darf es keine ausstehenden Anrufe auf der angegebenen VC geben, und diese VC muss bereits deaktiviert worden sein. Um diese Anforderungen zu erfüllen, müssen die folgenden Bedingungen erfüllt sein:

Der Aufruf von NdisCoDeleteVc eines Client- oder Anruf-Managers bewirkt, dass NDIS sowohl die MiniportCoDeleteVc-Funktion des zugrunde liegenden Miniporttreibers als auch die ProtocolCoDeleteVc-Funktion des Clients oder Anrufmanagers aufruft, mit dem der Aufrufer NdisVcHandle teilt (siehe die drei vorherigen Abbildungen).

MiniportCoDeleteVc gibt alle Ressourcen frei, die für die VC zugewiesen sind, sowie den Kontext des Miniporttreibers für die VC. ProtocolCoDeleteVc gibt alle Ressourcen frei, die der Client oder Anruf-Manager zum Ausführen von Vorgängen und zum Nachverfolgen des Zustands für die VC verwendet hat. Sowohl MiniportCoDeleteVc als auch ProtocolCoDeleteVc sind synchrone Funktionen, die NDIS_STATUS_PENDING nicht zurückgeben können.

Ein MCM-Treiber initiiert das Löschen einer VC mit NdisMCmDeleteVc (siehe folgende Abbildung).

Diagramm eines MCM-Treibers, der das Löschen einer VC initiiert.

Der Aufruf eines MCM-Treibers an NdisMCmDeleteVc bewirkt, dass NDIS die ProtocolCoDeleteVc-Funktion des Clients aufruft, mit dem der MCM-Treiber die NdisVcHandle freigegeben hat.

Wenn NdisCoDeleteVc oder NdisMCmDeleteVc das Steuerelement zurückgibt, ist NdisVcHandle nicht mehr gültig.