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.
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 Verbindungsrisses angibt, was in der Regel NDIS_STATUS_SUCCESS ist, um anzugeben, dass die Remotepartei des Anrufs angefordert wurde, dass die Verbindung geschlossen wird. Jeder andere Wert gibt an, dass Probleme im Netzwerk dazu geführt haben, dass der Anrufmanager die Verbindung beendet hat.
[in] ProtocolVcContext
Gibt das Handle für den Kontextbereich des Clients pro VC für die VC an, für die die Verbindung geschlossen wird. Unabhängig vom Wert von CloseStatus-kann der Client weder Daten über die vc senden noch empfangen, die von der NdisVcHandle, die er in diesem Kontextbereich gespeichert hat.
[in] CloseData
Zeiger auf einen Puffer, der eine protokollspezifische Close-Nachricht enthält, möglicherweise eine vom Remoteclient, den der Anrufmanager über das Netzwerk empfangen hat, oder dieser Parameter kann NULL-sein.
Wenn CloseStatus- NDIS_STATUS_SUCCESS ist, wird dieser Parameter NULL-, wenn das zugrunde liegende Netzwerkmedium beim Schließen einer Verbindung keine Übertragung von Daten unterstützt. Ein bestimmter Anrufmanager kann jedoch eine Struktur definieren, um zusätzliche Diagnoseinformationen an seine Clients zu Übergeben, die durch Probleme im Netzwerk verursacht werden.
[in] Size
Gibt die Größe in Byte des Puffers bei CloseData-, Null an, wenn CloseData-NULL-ist.
Rückgabewert
Nichts
Bemerkungen
Ein Aufruf von ProtocolClIncomingCloseCall gibt an, dass die folgende aufgetreten ist:
- Der Anrufmanager hat eine Anforderung über das Netzwerk erhalten, eine hergestellte Verbindung zu schließen, die durch die NdisVcHandle- identifiziert wird, die der Client in seinem Kontextbereich pro VC in ProtocolVcContext gespeichert hat.
- Der Anrufmanager hat festgestellt, dass Netzwerkprobleme weitere Datenübertragungen an der etablierten Verbindung verhindern.
Unabhängig davon, ob es sich bei dem angegebenen VC um eine Einzelpunkt- oder Multipointverbindung handelt, muss ProtocolClIncomingCloseCall-NdisClCloseCall- aufrufen, um zu bestätigen, dass der Client weder versucht zu senden noch davon auszugehen, dass Daten zu dieser bestimmten VC empfangen werden. Wenn der Anruf-Manager diese VC erstellt hat, sollte ProtocolClIncomingCloseCall- die Steuerung zurückgeben, nachdem er NdisClCloseCallaufgerufen hat. 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 Anruf erstellt hat, kann ProtocolClIncomingCloseCall- eine der folgenden Aktionen ausführen, nachdem er NdisClDropParty so oft wie nötig aufgerufen hat, falls erforderlich, und NdisClCloseCall:
- Wenn CloseStatus- NDIS_STATUS_SUCCESS ist, zerlegen Sie die VC mit NdisCoDeleteVc- und geben Sie entweder den Kontextbereich des Clients pro VC frei, oder bereiten Sie ihn für die Wiederverwendung in einem nachfolgenden Aufruf von NdisCoCreateVcvor.
- Wenn CloseStatus- NDIS_STATUS_SUCCESS ist, behalten Sie die VC, die der Client erstellt hat, und bereiten sie für die Wiederverwendung in einem nachfolgenden Aufruf von NdisClMakeCallvor.
- Zerlegen Sie andernfalls die VC mit NdisCoDeleteVc und lassen Sie den Kontextbereich pro VC los, wenn der Anrufmanager darauf hingewiesen hat, dass das Netzwerk in betrieblich geworden ist.
beispiele für
Um eine ProtocolClIncomingCloseCall--Funktion zu definieren, müssen Sie zuerst eine Funktionsdeklaration bereitstellen, die den Typ der Funktion identifiziert, die Sie definieren. Windows stellt eine Reihe von Funktionstypen für Treiber bereit. Durch das Deklarieren einer Funktion mithilfe der Funktionstypen können Codeanalyse für Treiber, statische Treiberüberprüfung (SDV) und andere Überprüfungstools Fehler finden, und es ist eine Anforderung zum Schreiben von Treibern für das Windows-Betriebssystem.Um beispielsweise eine ProtocolClIncomingCloseCall--Funktion zu definieren, die den Namen "MyClIncomingCloseCall" hat, verwenden Sie den PROTOCOL_CL_INCOMING_CLOSE_CALL Typ, 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 wird in der Ndis.h-Headerdatei definiert. Um Fehler genauer zu identifizieren, wenn Sie die Codeanalysetools ausführen, müssen Sie der Funktionsdefinition die Use_decl_annotations Anmerkung hinzufügen. Die Use_decl_annotations Anmerkung stellt sicher, dass die Anmerkungen, die auf den PROTOCOL_CL_INCOMING_CLOSE_CALL Funktionstyp in der Headerdatei angewendet werden, verwendet 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_annotationsfinden Sie unter Annotating Function Behavior.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte 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- | Fenster |
Header- | ndis.h (include Ndis.h) |
IRQL- | <= DISPATCH_LEVEL |