NdisClCloseCall-Funktion (ndis.h)

NdisClCloseCall fordert an, dass ein Aufruf auf der angegebenen VC abgerissen wird.

Syntax

NDIS_STATUS NdisClCloseCall(
  [in]           NDIS_HANDLE NdisVcHandle,
  [in, optional] NDIS_HANDLE NdisPartyHandle,
  [in, optional] PVOID       Buffer,
  [in]           UINT        Size
);

Parameter

[in] NdisVcHandle

Handle mit der VC des Aufrufs, der geschlossen oder getrennt wird. Dieses Handle wurde von NDIS bereitgestellt, als die VC ursprünglich mit NdisCoCreateVc erstellt wurde, sei es vom Client zur Vorbereitung für einen ausgehenden Anruf oder vom Anruf-Manager zur Vorbereitung auf das Senden eines eingehenden Anrufs an den Client.

[in, optional] NdisPartyHandle

Handle mit der letzten Partei, die auf einer Mehrpunkt-VC oder NULL gelöscht werden soll. Wenn es sich um eine Mehrpunkt-VC handelt, hat der Client dieses Handle entweder von einem vorherigen Aufruf von NdisClMakeCall oder NdisClAddParty abgerufen.

[in, optional] Buffer

Zeiger auf einen vom Aufrufer zugewiesenen Puffer, der alle Daten enthält, die an die Partei auf dem Remoteknoten übertragen werden sollen, wenn die Verbindung geschlossen wird. Je nach zugrunde liegendem Medium kann dieser Zeiger NULL sein.

[in] Size

Gibt die Größe in Bytes unter Puffer null an, wenn BufferNULL ist.

Rückgabewert

Wenn NdisClCloseCall etwas anderes als NDIS_STATUS_PENDING zurückgibt, sollte der Client einen internen Aufruf an seine ProtocolClCloseCallComplete-Funktion . Andernfalls ruft NDIS die ProtocolClCloseCallComplete-Funktion des Clients auf, wenn dieser Vorgang abgeschlossen ist.

Hinweise

Clients rufen in der Regel NdisClCloseCall in einem der folgenden Umstände auf:

  • Um einen eingerichteten Anruf zu schließen, unabhängig davon, ob der Anruf vom Client mit NdisClMakeCall initiiert oder von einem Remotepeer angeboten und vom Client akzeptiert wurde ProtocolClIncomingCall-Funktion .
  • Wählen Sie in der Liste ProtocolClIncomingCloseCall-Funktion , um einen etablierten Aufruf abreißen zu können.

    Dies tritt auf, wenn die Remotepartei einen eingehenden Anruf schließt, den die Remotepartei ursprünglich initiiert hat und den der Client akzeptiert hat. Bei vom Client initiierten ausgehenden Anrufen tritt dies entweder auf, wenn die Remotepartei die Punkt-zu-Punkt-Verbindung auf dem Remoteknoten schließt oder wenn die letzte verbleibende Partei auf einer Multipoint-VC den Aufruf auf dem Remoteknoten schließt.

  • Wählen Sie in der Liste ProtocolClMakeCallComplete-Funktion zum Abreißen eines vom Client initiierten Versuchs, einen ausgehenden Aufruf auszuführen.

    Dies tritt auf, wenn der Anruf-Manager die vom Client angegebenen Aufrufparameter geändert hat, die an NdisClMakeCall übergeben wurden und der Client diese Änderungen für nicht akzeptabel hält.

  • Über die ProtocolClIncomingQoSChange-Funktion , um einen eingerichteten Aufruf abreißen zu können.

    Dies tritt auf, wenn eine von der anderen Partei auf der VC vorgeschlagene QoS-Änderung für den Client inakzeptabel ist.

  • Wählen Sie in der Liste ProtocolClModifyCallQoSComplete-Funktion , um einen eingerichteten Aufruf zu beenden.

    Dies tritt auf, wenn eine vom Client vorgeschlagene QoS-Änderung für die VC nicht akzeptiert wird und die vom CM geänderte QoS an ProtocolClModifyCallQoSComplete für den Client inakzeptabel ist.

Vor dem Aufrufen von NdisClCloseCall muss ein Protokoll sicherstellen, dass alle ausstehenden Sendepakete an seine ProtocolCoSendNetBufferListsComplete-Funktion . (Pakete, die über NdisCoSendNetBufferLists gesendet werden, werden immer asynchron an ProtocolCoSendNetBufferListsComplete zurückgegeben.) Nach dem Aufruf von NdisClCloseCall darf ein Protokoll NdisCoSendNetBufferLists nicht aufrufen, um Pakete auf der VC zu senden, auf die von NdisClCloseCall verwiesen wird.

Der Aufruf von NdisClCloseCall eines Clients bewirkt, dass NDIS NdisVcHandle als schließend markiert und die ProtocolCmCloseCall-Funktion des CM aufruft.

Um einen etablierten Aufruf einer vom Client erstellten Mehrpunkt-VC zu beenden, muss der Client NdisClDropParty mindestens ein Mal aufrufen, um alle bis auf die letzte Partei auf der VC freizugeben, bevor NdisClCloseCall aufgerufen wird. Der Anruf-Manager schlägt die Anforderung eines Clients zum Schließen eines mehrpunktigen Anrufs fehl, wenn für die angegebene VC noch mehrere Parteien verbunden sind. Das an NdisClCloseCall übergebene NdisPartyHandle kann ein beliebiges gültiges Handle sein, das der Client aus den vorherigen Aufrufen von NdisClAddParty oder NdisClMakeCall mit dem angegebenen NdisVcHandle abgerufen hat.

Wenn Remoteparteien eines vom Client initiierten Mehrpunktaufrufs anfordern, dass ihre Verbindungen geschlossen werden, ruft NDIS die ProtocolClDropParty-Funktion dieses Clients auf, solange mehr als eine ausstehende Partei auf der vom Client erstellten Multipoint-VC vorhanden ist. Wenn die letzte verbleibende Remotepartei ihre Verbindung schließt, ruft NDIS die des Clients auf. ProtocolClIncomingCloseCall-Funktion stattdessen. Folglich muss die ProtocolClIncomingCloseCall-Funktion eines jeden Clients, der Multipointverbindungen eingerichtet hat, die letzte verbleibende Partei auf ihren Multipoint-VCs identifizieren und die entsprechende NdisPartyHandle an NdisClCloseCall übergeben.

Nachdem der Client ein NdisPartyHandle mit NdisClCloseCall freigegeben hat, kann er die Ressourcen für den von der Gruppe verwalteten Zustand freigeben (oder zur Wiederverwendung neu initialisieren). Der Client kann seine Ressourcen pro VC jedoch nach Abschluss des mit NdisClCloseCall initiierten Vorgangs nicht in ähnlicher Weise freigeben oder wiederverwenden, da das NdisVcHandle, das nicht für einen weiteren Aufruf wiederverwendet werden kann, da es als schließend markiert ist, weiterhin gültig ist, bis die VC zerstört wird. Entweder muss der Client NdisCoDeleteVc aufrufen, wenn er die VC für einen ausgehenden Aufruf erstellt hat, bevor er freigegeben wird, oder seine Ressourcen pro VC neu initialisiert, oder der Client muss die Freigabe oder Erneute Initialisierung dieser Ressourcen zurückstellen, bis seine ProtocolCoDeleteVc-Funktion aufgerufen wird.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Unterstützt für NDIS 6.0- und NDIS 5.1-Treiber (siehe NdisClCloseCall (NDIS 5.1)) in Windows Vista. Unterstützt für NDIS 5.1-Treiber (siehe NdisClCloseCall (NDIS 5.1)) in Windows XP.
Zielplattform Desktop
Kopfzeile ndis.h (einschließlich Ndis.h)
Bibliothek Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI-Complianceregeln Irql_Protocol_Driver_Function(ndis)

Weitere Informationen

NdisClDropParty

NdisClMakeCall

NdisClModifyCallQoS

NdisCoDeleteVc

NdisCoSendNetBufferLists

ProtocolClCloseCallComplete

ProtocolClIncomingCallQoSChange

ProtocolClIncomingCloseCall

ProtocolClIncomingDropParty

ProtocolClMakeCallComplete

ProtocolClModifyCallQoSComplete

ProtocolCmCloseCall

ProtocolCoSendNetBufferListsComplete