PROTOCOL_CL_OPEN_AF_COMPLETE_EX Rückruffunktion (ndis.h)
Die ProtocolClOpenAfCompleteEx--Funktion schließt das Öffnen einer Adressfamilie (AF) ab, die gestartet wurde, als ein CoNDIS-Client die funktion NdisClOpenAddressFamilyEx.
Syntax
PROTOCOL_CL_OPEN_AF_COMPLETE_EX ProtocolClOpenAfCompleteEx;
void ProtocolClOpenAfCompleteEx(
[in] NDIS_HANDLE ProtocolAfContext,
[in] NDIS_HANDLE NdisAfHandle,
[in] NDIS_STATUS Status
)
{...}
Parameter
[in] ProtocolAfContext
Ein vom Client bereitgestelltes Handle für seinen Kontextbereich für eine Adress-AF. Der Client hat diesen Kontextbereich zugewiesen und dieses Handle in seinem Aufruf an NDIS übergeben. NdisClOpenAddressFamilyEx Funktion.
[in] NdisAfHandle
Ein von NDIS bereitgestellter Handle für einen AF, wenn Status- NDIS_STATUS_SUCCESS ist. Andernfalls ist dieser Parameter NULL-. Dieses Handle stellt eine Zuordnung dar, die NDIS zwischen dem Client und einem Anruf-Manager erstellt hat, der an einen CoNDIS-Miniportadapter gebunden ist. Wenn das Handle nicht NULL-ist, muss der Client das Handle für die Verwendung in nachfolgenden Aufrufen von NdisCl-Xxx- und NdisCo-Xxx--Funktionen speichern.
[in] Status
Der letzte Status des Aufrufs des Clients an NdisClOpenAddressFamilyEx, der eine der folgenden Sein kann:
NDIS_STATUS_SUCCESS
Der AF wurde geöffnet, sodass der Client seinen Zustand bei ProtocolAfContext- initialisieren und das zurückgegebene Handle von NdisAfHandle in nachfolgenden Aufrufen von NdisClXxx und NdisCoXxx Funktionen wie NdisCoOidRequestverwenden kann.
NDIS_STATUS_RESOURCES
Der angeforderte Vorgang ist fehlgeschlagen, da NDIS oder der Anrufmanager nicht genügend Arbeitsspeicher zuordnen oder den Zustand initialisieren konnte, den einer von ihnen verwendet, um den Af-Zustand des Clients nachzuverfolgen, der ProtocolAfContext- angibt.
NDIS_STATUS_FAILURE
NDIS hat den Anruf fehlgeschlagen, möglicherweise aus einem der folgenden Gründe:
- Der angegebene AF stimmt nicht mit einem AF überein, der für den zugrunde liegenden Miniporttreiber registriert wurde, an den der Aufrufer gebunden ist.
- Die Adapterbindung des Anrufers wird geschlossen.
- Der Anrufmanager, der den angegebenen AF registriert hat, schließt die Bindung an den zugrunde liegenden Miniportadapter.
Rückgabewert
Nichts
Bemerkungen
Die ProtocolClOpenAfCompleteEx--Funktion ist für CoNDIS-Clients erforderlich. CoNDIS-Clients müssen ProtocolClOpenAfCompleteEx- bereitstellen, um die asynchronen Vorgänge auszuführen, die die Clients durch Aufrufen der NdisClOpenAddressFamilyEx Funktion.
NDIS ruft ProtocolClOpenAfCompleteEx- auf, um anzugeben, dass einige oder alle der folgenden Ereignisse aufgetreten sind:
- Wenn alle Parameter, die der Client enthält ProtocolCoAfRegisterNotify-Funktion, die an die NdisClOpenAddressFamilyEx-Funktion übergeben wurde, wurde NDIS als ProtocolCmOpenAf--Funktion des Aufruf-Managers bezeichnet, die den angegebenen AF soeben bei NDIS registriert hat.
- Der Anrufmanager hat die Spezifikation untersucht, dass die ProtocolCoAfRegisterNotify Funktion des Clients an NdisClOpenAddressFamilyEx am AddressFamily Parameter übergeben und zurückgegeben hat, ob es für diesen Aufruf-Manager an NDIS gültig war.
Andernfalls sollte ProtocolClOpenAfCompleteEx- den vom Client festgelegten Zustand einrichten, den der Client für nachfolgende Vorgänge für den neu geöffneten AF benötigt. Insbesondere muss der Client das Handle aus dem NdisAfHandle Parameter speichern, in der Regel im ProtocolAfContext Kontextbereich des Clients.
Wenn der Client eingehende Anrufe akzeptiert, kann er einen SAP-Statusbereich (Per-Service Access Point) zuweisen und die NdisClRegisterSap--Funktion aufrufen. Wenn der Client ausgehende Anrufe vorgibt, kann er einen Statusbereich für virtuelle Verbindungen (VC) zuweisen und eine VC mit der NdisCoCreateVc--Funktion erstellen, um eine eingehende Anforderung von einem der eigenen Clients vorzubereiten, um einen ausgehenden Anruf an einen Remoteknoten durchzuführen.
NDIS ruft ProtocolClOpenAfCompleteEx- bei IRQL = PASSIVE_LEVEL auf.
beispiele für
Um eine ProtocolClOpenAfCompleteEx--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 ProtocolClOpenAfCompleteEx--Funktion zu definieren, die den Namen "MyClOpenAfCompleteEx" hat, verwenden Sie den PROTOCOL_CL_OPEN_AF_COMPLETE_EX Typ wie in diesem Codebeispiel gezeigt:
PROTOCOL_CL_OPEN_AF_COMPLETE_EX MyClOpenAfCompleteEx;
Implementieren Sie dann Ihre Funktion wie folgt:
_Use_decl_annotations_
VOID
MyClOpenAfCompleteEx(
NDIS_HANDLE ProtocolAfContext,
NDIS_HANDLE NdisAfHandle,
NDIS_STATUS Status
)
{...}
Der PROTOCOL_CL_OPEN_AF_COMPLETE_EX 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_CL_OPEN_AF_COMPLETE_EX 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 in NDIS 6.0 und höher. |
Zielplattform- | Fenster |
Header- | ndis.h (include Ndis.h) |
IRQL- | PASSIVE_LEVEL |