Freigeben über


PROTOCOL_CO_AF_REGISTER_NOTIFY Rückruffunktion (ndis.h)

Die ProtocolCoAfRegisterNotify-Funktion wird von verbindungsorientierten NDIS-Clients verwendet. Alle verbindungsorientierten NDIS-Clients müssen über voll funktionsfähige ProtocolCoAfRegisterNotify-Funktionen verfügen . Eigenständige verbindungsorientierte Anruf-Manager verfügen über registrierte ProtocolCoAfRegisterNotify-Funktionen , die einfach die Steuerung zurückgeben.

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

Syntax

PROTOCOL_CO_AF_REGISTER_NOTIFY ProtocolCoAfRegisterNotify;

VOID() ProtocolCoAfRegisterNotify(
  [in] NDIS_HANDLE ProtocolBindingContext,
  [in] PCO_ADDRESS_FAMILY AddressFamily
)
{...}

Parameter

[in] ProtocolBindingContext

Gibt das Handle für den vom Client zugewiesenen Kontextbereich an, in dem das Clientprotokoll den Laufzeitzustand pro Bindung beibehält. Die ProtocolBindAdapterEx-Funktion des Clients hat dieses Handle bereitgestellt, als NdisOpenAdapterEx aufgerufen wurde.

[in] AddressFamily

Zeiger auf einen Puffer, der die Unterstützung des Signalisierungsprotokolls beschreibt, die von einem Anruf-Manager bereitgestellt wird, der diese Dienste gerade bei NDIS registriert hat, indem er aufruft NdisCmRegisterAddressFamilyEx oder NdisMCmRegisterAddressFamilyEx.

Rückgabewert

Keine

Bemerkungen

Ein Aufruf von ProtocolCoAfRegisterNotify kündigt die Anrufverwaltungsdienste eines bestimmten Anruf-Managers oder MCM-Treibers auf einer zugrunde liegenden verbindungsorientierten NIC an, an die der Client gebunden ist.

ProtocolCoAfRegisterNotify untersucht die Daten bei AddressFamily , um zu ermitteln, ob der Client die Dienste dieses bestimmten Anruf-Managers verwenden kann. Ob der Client Änderungen an den (M)CM-bereitgestellten Daten bei AddressFamily vornehmen kann, hängt von der jeweiligen Signalisierungsprotokollunterstützung des Anrufmanagers ab.

Wenn der Client die angebotenen Anrufverwaltungsdienste für inakzeptabel hält, gibt ProtocolCoAfRegisterNotify die Steuerung zurück, und NDIS kann ProtocolCoAfRegisterNotify erneut mit demselben ProtocolBindingContext-Handle und einer AF-Spezifikation aufrufen, die von diesem oder einem anderen Anruf-Manager bereitgestellt wird, der ebenfalls an den selben zugrunde liegenden Miniporttreiber gebunden ist. Andernfalls weist ProtocolAfRegisterNotify einen pro AF-Kontextbereich für den Client zu und ruft NdisClOpenAddressFamilyEx mit dem AddressFamily-Zeiger auf. Wenn dieser Aufruf erfolgreich ist, hat der Client seine ProtocolClXxx-Funktionen bei NDIS für nachfolgende verbindungsorientierte Vorgänge unter Verwendung der Dienste dieses Aufruf-Managers registriert.

Beispielsweise kann ProtocolCoAfRegisterNotify oder ProtocolClOpenAfCompleteEx aufrufen. NdisInitializeNPagedLookasideList ein oder mehrere Male in Vorbereitung auf dynamische Zuordnungen und Releases von Kontextbereichen pro SAP, pro VC und/oder pro Partei, die der Client anschließend benötigt.

Wenn es eingehende Anrufe akzeptiert, wird das ProtocolCoAfRegisterNotify eines Clients oder Die ProtocolClOpenAfCompleteEx-Funktion registriert in der Regel einen oder mehrere SAPs beim Anruf-Manager. Nach dem Öffnen des AF des Anruf-Managers kann der Client mit der Zuordnung eines SAP-Statusbereichs fortfahren und NdisClRegisterSap ein oder mehrere Male mit dem von NdisClOpenAddressFamilyEx abgerufenenNdisAfHandle aufrufen. Wenn er ausgehende Anrufe durchführt, kann der Client mit der Zuordnung eines Statusbereichs pro VC fortfahren und eine VC mit NdisCoCreateVc in Erwartung einer eingehenden Anforderung von einem seiner eigenen Clients erstellen, um einen ausgehenden Anruf an einen Remoteknoten zu tätigen.

Beispiele

Um eine ProtocolCoAfRegisterNotify-Funktion zu definieren, müssen Sie zunächst 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 ProtocolCoAfRegisterNotify-Funktion mit dem Namen "MyCoAfRegisterNotify" zu definieren, verwenden Sie den typ PROTOCOL_CO_AF_REGISTER_NOTIFY , wie in diesem Codebeispiel gezeigt:

PROTOCOL_CO_AF_REGISTER_NOTIFY MyCoAfRegisterNotify;

Implementieren Sie dann Ihre Funktion wie folgt:

_Use_decl_annotations_
VOID
 MyCoAfRegisterNotify(
    NDIS_HANDLE  ProtocolBindingContext,
    PCO_ADDRESS_FAMILY  AddressFamily
    )
  {...}

Der PROTOCOL_CO_AF_REGISTER_NOTIFY 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_CO_AF_REGISTER_NOTIFY 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 ProtocolCoAfRegisterNotify (NDIS 5.1)) in Windows Vista. Unterstützt für NDIS 5.1-Treiber (siehe ProtocolCoAfRegisterNotify (NDIS 5.1)) in Windows XP.
Zielplattform Windows
Kopfzeile ndis.h (einschließlich Ndis.h)
IRQL PASSIVE_LEVEL

Weitere Informationen

CO_ADDRESS_FAMILY

NdisClOpenAddressFamilyEx

NdisClRegisterSap

NdisCmRegisterAddressFamilyEx

NdisCoCreateVc

NdisInitializeNPagedLookasideList NdisMCmRegisterAddressFamilyEx

NdisOpenAdapterEx

ProtocolBindAdapterEx

ProtocolClOpenAfCompleteEx