Freigeben über


NdisClCloseCall-Funktion (ndis.h)

NdisClCloseCall fordert an, dass ein Aufruf der angegebenen VC heruntergerissen werden soll.

Syntax

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

Parameter

[in] NdisVcHandle

Behandeln Sie den VC des Anrufs, der geschlossen oder getrennt wird. Dieser Handle wurde von NDIS bereitgestellt, als die VC ursprünglich mit NdisCoCreateVcerstellt wurde, unabhängig davon, ob der Client einen ausgehenden Anruf vorbereitet oder vom Anrufmanager zur Vorbereitung auf die Versendung eines eingehenden Anrufs an den Client vorbereitet wurde.

[in, optional] NdisPartyHandle

Handle to the last party to be dropped on a multipoint VC or NULL. Wenn es sich um eine vc mit mehreren Punkt handelt, hat der Client dieses Handle entweder aus einem vorherigen Aufruf von NdisClMakeCall oder NdisClAddParty-abgerufen.

[in, optional] Buffer

Zeigen Sie 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 Byte bei Puffer-null an, wenn Puffer-NULL-ist.

Rückgabewert

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

Bemerkungen

Clients rufen in der Regel NdisClCloseCall- in einem der folgenden Situationen auf:

  • Um einen etablierten Anruf zu schließen, ob der Anruf vom Client mit NdisClMakeCall initiiert wurde oder von einem Remotepeer angeboten und vom Client akzeptiert wurde ProtocolClIncomingCall-Funktion.
  • Vom ProtocolClIncomingCloseCall Funktion, um einen etablierten Aufruf zu zerreißen.

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

  • Vom ProtocolClMakeCallComplete--Funktion, um einen vom Client initiierten Versuch, einen ausgehenden Aufruf zu tätigen, abreißen.

    Dies tritt auf, wenn der Anrufmanager die clientspezifischen Aufrufparameter geändert hat, die an NdisClMakeCall übergeben wurden, und der Client findet diese Änderungen inakzeptabel.

  • Von der ProtocolClIncomingQoSChange Funktion, um einen etablierten Aufruf zu zerreißen.

    Dies tritt auf, wenn eine QoS-Änderung, die von der anderen Partei auf dem VC vorgeschlagen wird, für den Client nicht akzeptabel ist.

  • Vom ProtocolClModifyCallQoSComplete--Funktion, um einen etablierten Aufruf zu zerreißen.

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

Vor dem Aufrufen von NdisClCloseCallmuss ein Protokoll sicherstellen, dass alle ausstehenden Sendepakete an seine ProtocolCoSendNetBufferListsComplete Funktion. (Pakete, die über NdisCoSendNetBufferLists gesendet werden, werden immer asynchron an ProtocolCoSendNetBufferListsCompletezurückgegeben.) Nach dem Aufrufen von NdisClCloseCalldarf ein Protokoll nicht NdisCoSendNetBufferLists aufrufen, um Pakete an die VC zu senden, auf die von NdisClCloseCallverwiesen wird.

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

Um einen etablierten Aufruf für einen vom Client erstellten Multipoint-VC zu zerlegen, muss der Client NdisClDropParty eine oder mehrere Male aufrufen, um alle, aber die letzte Partei auf dem VC freizugeben, bevor er NdisClCloseCallaufruft. Der Anrufmanager schlägt die Anforderung eines Clients fehl, einen Multipoint-Anruf zu schließen, wenn die angegebene VC immer noch mehr als eine Partei verbunden ist. Die NdisPartyHandle- an NdisClCloseCall übergeben wurde, kann ein beliebiger gültiger Handle sein, den der Client aus den vorherigen Aufrufen von NdisClAddParty oder NdisClMakeCall mit dem angegebenen NdisVcHandle abgerufen hat.

Da Remoteparteien einer clientinitiierten Multipoint-Aufrufanforderung, dass ihre Verbindungen geschlossen werden, ruft NDIS die ProtocolClDropParty- des Clients auf, solange mehrere ausstehende Parteien auf dem vom Client erstellten Multipoint VC vorhanden sind. Wenn die letzte verbleibende Remotepartei die Verbindung schließt, ruft NDIS den Client auf. ProtocolClIncomingCloseCall-Funktion. Folglich muss die ProtocolClIncomingCloseCall Funktion eines Clients, der Multipointverbindungen einrichte, die letzte verbleibende Partei auf ihren Multipoint-VCs identifizieren und die entsprechende NdisPartyHandle- an NdisClCloseCallübergeben.

Nachdem der Client eine NdisPartyHandle- mit NdisClCloseCall-veröffentlicht hat, kann er die Ressourcen für den zustandsbasierten Zustand freigeben (oder erneut initialisieren). Der Client kann die ressourcen pro VC jedoch nicht auf ähnliche Weise freigeben oder wiederverwenden, wenn er mit NdisClCloseCall initiiert wurde, da die NdisVcHandle, die nicht wiederverwendet werden kann, um einen anderen Aufruf auszuführen, da sie als Schließen gekennzeichnet ist, noch gültig ist, bis die VC zerstört wird. Entweder muss der Client NdisCoDeleteVc- aufrufen, wenn er den VC für einen ausgehenden Aufruf erstellt hat, bevor er loslässt oder seine pro VC-Ressourcen neu initialisiert, oder der Client muss die Veröffentlichung oder Erneutitialisierung dieser Ressourcen zurückstellen, bis seine ProtocolCoDeleteVc--Funktion aufgerufen wird.

Anforderungen

Anforderung Wert
mindestens unterstützte 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
Header- ndis.h (include Ndis.h)
Library Ndis.lib
IRQL- <= DISPATCH_LEVEL
DDI-Complianceregeln Irql_Protocol_Driver_Function(ndis)

Siehe auch

NdisClDropParty

NdisClMakeCall

NdisClModifyCallQoS-

NdisCoDeleteVc

NdisCoSendNetBufferLists

ProtocolClCloseCallComplete-

ProtocolClIncomingCallQoSChange

ProtocolClIncomingCloseCall

ProtocolClIncomingDropParty

ProtocolClMakeCallComplete-

ProtocolClModifyCallQoSComplete-

ProtocolCmCloseCall-

ProtocolCoSendNetBufferListsComplete-