Registrieren und Öffnen einer Adressfamilie
Ein Anrufmanager muss eine Adressfamilie für jede NIC registrieren, auf der er Anruf-Manager-Dienste für verbindungsorientierte Clients bereitstellt. Ebenso muss ein MCM-Treiber eine Adressfamilie für die von ihm verwaltete Netzwerkkarte registrieren.
Durch das Registrieren einer Adressfamilie bewirkt ein Anrufmanager oder MCM-Treiber, dass NDIS die Dienste des Anrufmanagers oder MCM-Treibers für alle verbindungsorientierten Clients angibt, die an den Adapter gebunden sind.
Wenn ein verbindungsorientierter Client die von einem Anrufmanager oder MCM-Treiber angekündigten Dienste verwenden kann, kann er eine Adressfamilie mit dem Anrufmanager oder MCM-Treiber öffnen.
Registrieren einer Adressfamilie von einem Anruf-Manager
Nachdem die ProtocolBindAdapterEx-Funktion an einen zugrunde liegenden Miniporttreiber mit NdisOpenAdapterEx gebunden wurde, ruft ein Anruf-Manager NdisCmRegisterAddressFamilyEx auf, um eine Adressfamilie für die Bindung zu registrieren (siehe folgende Abbildung).
Der Aufruf von NdisCmRegisterAddressFamilyEx kündigt die spezifischen Signalisierungsdienste des Anrufmanagers an. Ein Aufruf-Manager muss bei jedem Aufruf seiner ProtocolBindAdapterEx-Funktion eine Adressfamilie registrieren und erfolgreich mit NdisOpenAdapterEx an eine NIC binden.
Der Anrufmanager kann mehrere Adressfamilien in allen Miniporttreibern unterstützen, an die er gebunden ist. Der Anrufmanager kann auch mehrere Adressfamilien in einer einzelnen NIC unterstützen, an die er gebunden ist. Der Anrufmanager muss die gleichen Einstiegspunkte für jede Adressfamilie in der Bindung registrieren. Nur ein Anrufmanager kann einen bestimmten Typ von Adressfamilie für Clients unterstützen, die an einen bestimmten Miniporttreiber gebunden sind. Weitere Informationen zum Registrieren von Einstiegspunkten für einen Anrufmanager finden Sie unter CoNDIS-Registrierung.
Registrieren einer Adressfamilie von einem MCM-Treiber
Ein MCM-Treiber ruft NdisMCmRegisterAddressFamilyEx über seine MiniportInitializeEx-Funktion auf, nachdem er seine Miniport-Treibereinstiegspunkte bei NdisMRegisterMiniportDriver registriert hat. Weitere Informationen zu Regsitering-Einstiegspunkten finden Sie unter CoNDIS-Registrierung. Ein MCM-Treiber ruft NdisMCmRegisterAddressFamilyEx einmal auf, um seine Dienste für verbindungsorientierte Clients anzukündigen (siehe folgende Abbildung).
Ein Miniporttreiber einer Netzwerkkarte, die über eine on-board-verbindungsorientierte Signalisierungsunterstützung verfügt, kann sich selbst als MCM-Treiber registrieren, obwohl möglicherweise ein Anrufmanager verfügbar ist. Auf diese Weise entfernt ein solcher MCM-Treiber den Anrufmanager als Anrufmanager für diese NIC.
Öffnen einer Adressfamilie
Der Aufruf eines Anruf-Managers oder MCM-Treibers an Ndis(M)CmRegisterAddressFamily bewirkt, dass NDIS die ProtocolCoAfRegisterNotify-Funktion jedes verbindungsorientierten Clients für die Bindung aufruft (wie in zwei vorherigen Abbildungen dargestellt).
ProtocolCoAfRegisterNotify untersucht die Adressfamiliendaten, um zu bestimmen, ob der Client die Dienste dieses bestimmten CM- oder MCM-Treibers verwenden kann. Ob der Client Änderungen an den (M)CM-bereitgestellten Adressfamiliendaten vornehmen kann, hängt von der jeweiligen Signalisierungsprotokollunterstützung des Anruf-Managers oder MCM-Treibers ab.
Wenn der Client die angebotenen Anrufverwaltungsdienste für akzeptabel hält, weist ProtocolCoAfRegisterNotify dem Client einen Kontextbereich pro AF zu und ruft NdisClOpenAddressFamilyEx auf. NdisClOpenAddressFamilyEx registriert die verbindungsorientierten Einstiegspunkte des Clients nicht bei NDIS. Weitere Informationen zum Registrieren verbindungsorientierter Einstiegspunkte bei NDIS finden Sie unter CoNDIS-Registrierung.
Der Aufruf von NdisClOpenAddressFamilyEx bewirkt, dass NDIS die ProtocolCmOpenAf-Funktion des Anruf-Managers oder MCM-Treibers aufruft (wie bereits in den beiden vorherigen Abbildungen dargestellt). ProtocolCmOpenAf stellt sicher, dass der Client eine gültige Adressfamilie übergeben hat, und ordnet und initialisiert die Ressourcen, die zum Ausführen von Vorgängen im Namen des Clients erforderlich sind, der diese instance der Adressfamilie öffnet. ProtocolCmOpenAf speichert auch ein von NDIS bereitgestelltes NdisAfHandle , das die Zuordnung zwischen dem Anruf-Manager und dem Client für die offene Adressfamilie darstellt.
ProtocolCmOpenAf kann synchron oder asynchron abgeschlossen werden. Zum asynchronen Abschluss ruft die ProtocolCmOpenAf-Funktion eines Anruf-Managers NdisCmOpenAddressFamilyComplete auf; Die ProtocolCmOpenAf-Funktion eines MCM-Treibers ruft NdisMCmOpenAddressFamilyComplete auf. Der Aufruf von Ndis(M)CmOpenAddressFamilyComplete bewirkt, dass NDIS die ProtocolOpenAfComplete-Funktion des Clients aufruft , der ursprünglich NdisClOpenAddressFamilyEx aufgerufen hat.
Wenn der Aufruf des Clients an NdisClOpenAddressFamilyEx erfolgreich ist, gibt NDIS an den Client eine NdisAfHandle zurück, die die Zuordnung zwischen dem Anrufmanager und dem Client für die Offene Adressfamilie darstellt.
Wenn ein Client eingehende Anrufe akzeptiert, registriert er in der Regel mindestens einen SAPs von seiner ProtocolClOpenAfCompleteEx-Funktion , indem er NdisClRegisterSap nach dem erfolgreichen Aufruf von NdisClOpenAddressFamilyEx aufruft.
Wenn ein Client ausgehende Aufrufe durchführt, kann er einen oder mehrere VCs in seiner ProtocolClOpenAfCompleteEx-Funktion erstellen, um eine Anforderung durch einen oder mehrere clients zum Tätigen eines ausgehenden Anrufs zu erwarten.