PROTOCOL_CM_CLOSE_AF Rückruffunktion (ndis.h)
Die ProtocolCmCloseAf--Funktion ist eine erforderliche Funktion, die pro geöffnete Ressourcen für eine Adressfamilie freigibt, die von einem Anrufmanager unterstützt wird.
Syntax
PROTOCOL_CM_CLOSE_AF ProtocolCmCloseAf;
NDIS_STATUS ProtocolCmCloseAf(
[in] NDIS_HANDLE CallMgrAfContext
)
{...}
Parameter
[in] CallMgrAfContext
Gibt das Handle für den Kontextbereich des Anrufmanagers an, der ursprünglich von der ProtocolCmOpenAf--Funktion des Anrufmanagers an NDIS übermittelt wurde.
Rückgabewert
ProtocolCmCloseAf den Status seiner Vorgänge als eine der folgenden Werte zurück:
Rückgabecode | Beschreibung |
---|---|
|
Gibt an, dass der Anrufmanager alle Ressourcen erfolgreich freigegeben oder deaktiviert hat, die im Namen des verbindungsorientierten Clients zugeordnet sind, der diese Instanz der Adressfamilie geöffnet hat. |
|
Gibt an, dass die Anforderung zum Schließen der geöffneten Instanz der Adressfamilie asynchron abgeschlossen wird. Der Anrufmanager muss anrufen NdisCmCloseAddressFamilyComplete, wenn alle diese Vorgänge abgeschlossen wurden. |
Bemerkungen
ProtocolCmCloseAf veröffentlicht und/oder deaktiviert alle Ressourcen, die vom Aufruf-Manager in der ProtocolCmOpenAf--Funktion zugeordnet wurden. Der Anrufmanager sollte auch alle anderen Aktionen rückgängig machen, die er im Namen des verbindungsorientierten Clients ausgeführt hat, wenn die Adressfamilie vom betreffenden Client geöffnet wurde.
Wenn noch offene Anforderungen oder Verbindungen in einer Adressfamilie vorhanden sind, die in der CallMgrAfContextgespeichert ist, kann ein Anrufmanager auf die Anforderung eines Kunden antworten, um die Adressfamilie auf eine der folgenden Arten zu schließen:
- Der Anrufmanager kann die Anforderung mit NDIS_STATUS_NOT_ACCEPTED fehlschlagen.
- Der Anrufmanager kann NDIS_STATUS_PENDING zurückgeben. Nachdem der Client alle Anrufe geschlossen und alle SAPs deregistert hat, kann der Anrufmanager die Adressfamilie schließen und NdisCmCloseAddressFamilyComplete oder NdisMCmCloseAddressFamilyComplete, um den Client zu benachrichtigen. Dies ist die bevorzugte Antwort.
beispiele für
Um eine ProtocolCmCloseAf--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 ProtocolCmCloseAf--Funktion zu definieren, die den Namen "MyCmCloseAf" hat, verwenden Sie den PROTOCOL_CM_CLOSE_AF Typ, wie in diesem Codebeispiel gezeigt:
PROTOCOL_CM_CLOSE_AF MyCmCloseAf;
Implementieren Sie dann Ihre Funktion wie folgt:
_Use_decl_annotations_
NDIS_STATUS
MyCmCloseAf(
NDIS_HANDLE CallMgrAfContext
)
{...}
Der PROTOCOL_CM_CLOSE_AF 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 Funktionstyp PROTOCOL_CM_CLOSE_AF 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 ProtocolCmCloseAf (NDIS 5.1)) in Windows Vista. Unterstützt für NDIS 5.1-Treiber (siehe ProtocolCmCloseAf (NDIS 5.1)) in Windows XP. |
Zielplattform- | Fenster |
Header- | ndis.h (include Ndis.h) |
IRQL- | <= DISPATCH_LEVEL |