Client-Initiated Anforderung zum Schließen eines Anrufs
Wenn ein Client einen mehrpunktigen Aufruf schließt, mit dem noch mehrere Parteien verbunden sind, muss er zuerst NdisClDropParty so oft wie nötig aufrufen, um alle außer der letzten Partei aus dem Anruf zu löschen (siehe Löschen einer Partei aus einem Multipoint-Anruf).
Ein Client initiiert das Schließen eines Anrufs mit NdisClCloseCall. Die folgende Abbildung zeigt einen Client, der das Schließen eines Anrufs über einen Anruf-Manager initiiert.
Die nächste Abbildung zeigt einen Client, der das Schließen eines Anrufs über einen MCM-Treiber initiiert.
Ein verbindungsorientierter Client ruft NdisClCloseCall in der Regel unter einem der folgenden Umstände auf:
So schließen Sie einen eingerichteten ausgehenden oder eingehenden Anruf.
Über die ProtocolClIncomingCloseCall-Funktion , um einen eingerichteten Aufruf abreißen (siehe Eingehende Anforderung zum Schließen eines Anrufs).
Über die Funktion ProtocolClIncomingCallQoSChange können Sie einen eingerichteten Aufruf abbrechen, wenn eine QoS-Änderung, die der Remoteanbieter vorschlägt, inakzeptabel ist (siehe Eingehende Anforderung zum Ändern von Anrufparametern).
Über die Funktion ProtocolClModifyCallQoSComplete können Sie einen eingerichteten Aufruf abreißen, wenn eine QoS-Änderung, die der Client vorschlägt, für die Remotepartei inakzeptabel ist (siehe Clientinitiierte Anforderung zum Ändern von Aufrufparametern).
Der Aufruf von NdisClCloseCall eines Clients bewirkt, dass NDIS die ProtocolCmCloseCall-Funktion des Anruf-Managers oder MCM-Treibers aufruft. ProtocolCmCloseCall muss mit Netzwerksteuerungsgeräten kommunizieren, um eine Verbindung zwischen dem lokalen Knoten und einem Remoteknoten zu beenden.
Wenn ProtocolCmCloseCall ein expliziter CallMgrPartyContext übergeben wird, ist der beendete Aufruf ein Mehrpunktaufruf. Der Anruf-Manager oder MCM-Treiber muss die erforderliche Netzwerkkommunikation mit seiner Netzwerkhardware durchführen, je nach Medientyp, um den Anruf als Mehrpunktanruf zu beenden.
NDIS kann ProtocolCmCloseCall einen Zeiger an einen Puffer übergeben, der Vom Client im Aufruf von NdisClClose bereitgestellte Daten enthält. Diese Daten können Diagnosedaten sein, die angeben, warum der Aufruf geschlossen wurde, oder andere Daten, die für das Signalisierungsprotokoll erforderlich sind. ProtocolCmCloseCall muss solche Daten über das Netzwerk senden, bevor die Anrufbeendigung abgeschlossen wird. Wenn das gleichzeitige Senden von Daten mit einer beendeten Verbindung nicht unterstützt wird, sollte ein Anruf-Manager oder MCM-Treiber NDIS_STATUS_INVALID_DATA zurückgeben.
ProtocolCmCloseCall kann synchron oder wahrscheinlich asynchron mit NdisCmCloseCallComplete (im Fall eines Anruf-Managers) oder NdisMCmCloseCallComplete (im Fall eines MCM-Treibers) abgeschlossen werden. Ein Aufruf von Ndis(M)CmCloseCallComplete bewirkt, dass NDIS die ProtocolClCloseCallComplete-Funktion des Clients aufruft .
Der Anruf-Manager oder MCM-Treiber muss dann die Deaktivierung der für den Anruf verwendeten VC initiieren, indem NdisCmDeactivateVc bzw. NdisMCmDeactivateVc aufgerufen wird (siehe Deaktivieren einer VC). Der Ersteller des VC (Client, Anruf-Manager oder MCM-Treiber) kann dann optional das Löschen der VC initiieren (siehe Löschen einer VC).