Freigeben über


PROTOCOL_CL_INCOMING_CLOSE_CALL Rückruffunktion (ndis.h)

Die ProtocolClIncomingCloseCall-Funktion wird von allen verbindungsorientierten NDIS-Clients verwendet. Alle diese Clients müssen über voll funktionsfähige ProtocolClIncomingCloseCall-Funktionen verfügen.

Hinweis Sie müssen die Funktion mit dem PROTOCOL_CL_INCOMING_CLOSE_CALL-Typ deklarieren. Weitere Informationen finden Sie im folgenden Abschnitt Beispiele.
 

Syntax

PROTOCOL_CL_INCOMING_CLOSE_CALL ProtocolClIncomingCloseCall;

void ProtocolClIncomingCloseCall(
  [in] NDIS_STATUS CloseStatus,
  [in] NDIS_HANDLE ProtocolVcContext,
  [in] PVOID CloseData,
  [in] UINT Size
)
{...}

Parameter

[in] CloseStatus

Gibt den status an, der die Ursache des Verbindungsabbruchs angibt. Dieser wird normalerweise NDIS_STATUS_SUCCESS, um anzugeben, dass die Remotepartei des Anrufs das Schließen der Verbindung angefordert hat. Jeder andere Wert gibt an, dass Probleme im Netzwerk dazu geführt haben, dass der Anruf-Manager die Verbindung beendet hat.

[in] ProtocolVcContext

Gibt das Handle für den Pro-VC-Kontextbereich des Clients für die VC an, für die die Verbindung geschlossen wird. Unabhängig vom Wert von CloseStatus kann der Client weder Daten auf der VC senden noch empfangen, die von der in diesem Kontextbereich gespeicherten NdisVcHandle festgelegt wurde.

[in] CloseData

Zeiger auf einen Puffer mit einer protokollspezifischen Close-Nachricht, die möglicherweise vom Remoteclient bereitgestellt wird, den der Anruf-Manager über das Netzwerk empfangen hat, oder dieser Parameter kann NULL sein.

Wenn CloseStatus NDIS_STATUS_SUCCESS ist, ist dieser Parameter NULL , wenn das zugrunde liegende Netzwerkmedium beim Schließen einer Verbindung keine Datenübertragungen unterstützt. Jeder bestimmte Anruf-Manager kann jedoch eine Struktur definieren, um zusätzliche Diagnoseinformationen an seine Clients bei Aufrufabbruchs zu übergeben, die durch Probleme im Netzwerk verursacht werden.

[in] Size

Gibt die Größe des Puffers in Bytes bei CloseData an, null, wenn CloseDataNULL ist.

Rückgabewert

Keine

Bemerkungen

Ein Aufruf von ProtocolClIncomingCloseCall gibt an, dass folgendes aufgetreten ist:

  • Der Anruf-Manager hat über das Netzwerk eine Anforderung zum Schließen einer eingerichteten Verbindung erhalten, die durch die NdisVcHandle identifiziert wurde, die der Client in seinem pro VC-Kontextbereich unter ProtocolVcContext gespeichert hat.
  • Der Anruf-Manager hat erkannt, dass Netzwerkprobleme weitere Datenübertragungen bei der eingerichteten Verbindung verhindern.
In beiden Fällen sollte ProtocolClIncomingCloseCall alle protokollbestimmten Vorgänge ausführen, z. B. die Benachrichtigung der eigenen Clients des Clients, dass die Verbindung unterbrochen wird. Wenn es sich bei dem zu schließenden Aufruf beispielsweise um eine vom Client erstellte Mehrpunkt-VC handelt, muss ProtocolClIncomingCloseCallNdisClDropParty ein oder mehrere Male aufrufen, bis nur eine einzelne Partei auf ihrer Multipoint-VC verbleibt.

Unabhängig davon, ob es sich bei der angegebenen VC um eine Einzelpunkt- oder Mehrpunktverbindung handelt, muss ProtocolClIncomingCloseCallNdisClCloseCall aufrufen, um zu bestätigen, dass der Client weder versucht, Daten zu dieser bestimmten VC zu senden noch zu erwarten. Wenn der Anruf-Manager diese VC erstellt hat, sollte ProtocolClIncomingCloseCall die Steuerung zurückgeben, nachdem NdisClCloseCall aufgerufen wurde. Es liegt in der Verantwortung des Anrufmanagers, alle erstellten VC zu zerstören oder wiederzuverwenden.

Wenn der Client diese VC ursprünglich für einen ausgehenden Aufruf erstellt hat, kann ProtocolClIncomingCloseCall eine der folgenden Aktionen ausführen, nachdem er NdisClDropParty so oft wie nötig aufgerufen hat, falls vorhanden, und NdisClCloseCall:

  • Wenn CloseStatus NDIS_STATUS_SUCCESS ist, reißen Sie die VC mit NdisCoDeleteVc herunter, und lassen Sie entweder den Kontextbereich pro VC des Clients frei, oder bereiten Sie ihn für die Wiederverwendung in einem nachfolgenden Aufruf von NdisCoCreateVc vor.
  • Wenn CloseStatus NDIS_STATUS_SUCCESS ist, behalten Sie die VC bei, die der Client erstellt hat, und bereiten Sie den jeweiligen VC-Kontextbereich für die Wiederverwendung in einem nachfolgenden Aufruf von NdisClMakeCall vor.
  • Andernfalls reißen Sie die VC mit NdisCoDeleteVc ab, und geben Sie den Kontextbereich pro VC frei, wenn der Anrufmanager angegeben hat, dass das Netzwerk in Betrieb ist.

Beispiele

Um eine ProtocolClIncomingCloseCall-Funktion zu definieren, müssen Sie zuerst eine Funktionsdeklaration bereitstellen, die den Typ der zu definierenden Funktion identifiziert. Windows stellt eine Reihe von Funktionstypen für Treiber bereit. Das Deklarieren einer Funktion mithilfe der Funktionstypen hilft der Codeanalyse für Treiber, der statischen Treiberüberprüfung (Static Driver Verifier , SDV) und anderen Überprüfungstools, Fehler zu finden, und es ist eine Anforderung zum Schreiben von Treibern für das Windows-Betriebssystem.

Um beispielsweise eine ProtocolClIncomingCloseCall-Funktion mit dem Namen "MyClIncomingCloseCall" zu definieren, verwenden Sie den typ PROTOCOL_CL_INCOMING_CLOSE_CALL , wie in diesem Codebeispiel gezeigt:

PROTOCOL_CL_INCOMING_CLOSE_CALL MyClIncomingCloseCall;

Implementieren Sie dann Ihre Funktion wie folgt:

_Use_decl_annotations_
VOID
 MyClIncomingCloseCall(
    NDIS_STATUS  CloseStatus,
    NDIS_HANDLE  ProtocolVcContext,
    PVOID  CloseData,
    UINT  Size
    )
  {...}

Der PROTOCOL_CL_INCOMING_CLOSE_CALL Funktionstyp ist in der Headerdatei Ndis.h definiert. Um Fehler beim Ausführen der Codeanalysetools genauer zu identifizieren, fügen Sie der Funktionsdefinition die Use_decl_annotations Anmerkung hinzu. Die Use_decl_annotations Anmerkung stellt sicher, dass die Anmerkungen verwendet werden, die auf den PROTOCOL_CL_INCOMING_CLOSE_CALL Funktionstyp in der Headerdatei angewendet werden. Weitere Informationen zu den Anforderungen für Funktionsdeklarationen finden Sie unter Deklarieren von Funktionen mithilfe von Funktionsrollentypen für NDIS-Treiber.

Informationen zu Use_decl_annotations finden Sie unter Verhalten von Funktionen mit Anmerkungen.

Anforderungen

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

Weitere Informationen

NdisClCloseCall

NdisClDropParty

NdisClMakeCall

NdisCmDispatchIncomingCloseCall

NdisCoCreateVc

NdisCoDeleteVc

NdisFreeMemory

NdisFreeToNPagedLookasideList NdisMCmDispatchIncomingCloseCall

ProtocolClDropPartyComplete

ProtocolCoDeleteVc