Freigeben über


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.

Hinweis Sie müssen die Funktion mithilfe des typs PROTOCOL_CL_OPEN_AF_COMPLETE_EX deklarieren. Weitere Informationen finden Sie im folgenden Abschnitt "Beispiele".
 

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.
Wenn der Versuch des Clients, einen AF zu öffnen, fehlschlägt, bereinigt NDIS den gespeicherten Zustand, bevor ProtocolClOpenAfCompleteEx-aufgerufen wird. In diesem Fall kann ProtocolClOpenAfCompleteEx- die Ressourcen freigeben, die der Client für seinen Aufruf an NdisClOpenAddressFamilyEx zugewiesen hat, oder sie für die Wiederverwendung vorbereiten.

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

Siehe auch

NdisClOpenAddressFamilyEx

NdisClRegisterSap-

NdisCoCreateVc

NdisCoOidRequest

ProtocolCmOpenAf-

ProtocolCoAfRegisterNotify