NdisClRegisterSap-Funktion (ndis.h)
NdisClRegisterSap einen SAP registriert, auf dem der Client eingehende Anrufe von einem Remoteknoten empfangen kann.
Syntax
NDIS_STATUS NdisClRegisterSap(
[in] NDIS_HANDLE NdisAfHandle,
[in] NDIS_HANDLE ProtocolSapContext,
[in] PCO_SAP Sap,
[out] PNDIS_HANDLE NdisSapHandle
);
Parameter
[in] NdisAfHandle
Gibt das von NdisClOpenAddressFamilyExzurückgegebene Handle an, das implizit den Anruf-Manager identifiziert, mit dem der SAP registriert werden soll.
[in] ProtocolSapContext
Gibt das Handle für einen vom Anrufer bereitgestellten residenten Kontextbereich an, in dem der Client den Status für diesen SAP verwaltet, nachdem er geöffnet wurde. NDIS übergibt dieses Handle in allen nachfolgenden Aufrufen dieses SAP an den Client zurück, wenn der Aufruf von NdisClRegisterSap erfolgreich ist.
[in] Sap
Zeiger auf eine vom Kunden bereitgestellte Spezifikation für die zu öffnende SAP, formatiert als Struktur vom Typ CO_SAP.
[out] NdisSapHandle
Zeiger auf eine Variable, in der ein Handle auf den neu registrierten SAP zurückgegeben wird, wenn dieser Aufruf erfolgreich ausgeführt wird.
Rückgabewert
Wenn NdisClRegisterSap alles andere zurückgibt als NDIS_STATUS_PENDING, sollte der Client einen internen Aufruf an seine ProtocolClRegisterSapComplete-Funktion. Andernfalls ruft NDIS die ProtocolClRegisterSapComplete- funktion des Clients auf, wenn dieser Vorgang abgeschlossen ist.
Bemerkungen
Mit einem Aufruf von NdisClRegisterSapfordert ein Client Benachrichtigungen über eingehende Anrufe an einem bestimmten SAP an. NDIS leitet die angegebenen SAP-Informationen zur Überprüfung an die ProtocolCmRegisterSap--Funktion des Anrufmanagers weiter. Wenn der angegebene SAP bereits verwendet wird oder der Anrufmanager die vom Kunden bereitgestellte Spezifikation bei Sapnicht erkennt, schlägt der Anrufmanager diese Anforderung fehl.
DAS SAP-Format ist mittelabhängig und spezifisch für die Adressfamilie, die vom Anrufmanager unterstützt wird, die registrierte SAPs anschließend verwendet, um eingehende Anrufe an den entsprechenden Client weiterzuleiten. Ein Anrufmanager kann SAPs für etablierte PVCs registrieren, ohne je nach zugrunde liegendem Medium andere Netzwerkkomponenten zu kontaktieren.
Wenn der Aufruf von NdisClRegisterSap erfolgreich ist, muss der Client das bei NdisSapHandle zurückgegebene Handle speichern, da es ein erforderlicher Parameter ist, um NdisClDeregisterSap. Aufrufer von NdisClRegisterSap übergeben in der Regel einen Zeiger an eine Variable im clientverteilten Statusbereich bei ProtocolSapContext, sodass NDIS ihn auf den NdisSapHandle- festlegen kann, wenn dieser Aufruf erfolgreich ist. NDIS übergibt die angegebene ProtocolSapContext- an die registrierten ProtocolCl/Co-Xxx--Funktionen des Clients in allen nachfolgenden Aufrufen dieses SAP, bis der Client NdisClDeregisterSapaufruft.
In der Regel ruft ein Client NdisClRegisterSap- aus seiner ProtocolAfRegisterNotify- funktion auf, die dem erfolgreichen Aufruf von NdisClOpenAddressFamilyExfolgt. Durch die Registrierung eines oder mehrerer SAPs kann der Client seine eingehenden Anrufe empfangen, sobald der Anrufmanager sie über das Netzwerk empfängt.
Im Gegensatz zu vom Client initiierten ausgehenden Anrufen ruft ein Client NdisCoCreateVc- nicht auf, bevor er NdisClRegisterSap-aufruft. Bei eingehenden Anrufen initiiert der Anrufmanager die Erstellung der VC wie folgt:
- Beim Empfang eines eingehenden Anrufs in einem registrierten SAP ruft der Anrufmanager zuerst NdisCoCreateVc-auf, wodurch NDIS die ProtocolCoCreateVc--Funktion des Clients aufruft.
- Wenn die VC eingerichtet und aktiviert wurde, ruft der Anrufmanager NdisCmDispatchIncomingCallauf, wodurch NDIS den Client aufruft ProtocolClIncomingCall-Funktion.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Unterstützt für NDIS 6.0- und NDIS 5.1-Treiber (siehe NdisClRegisterSap (NDIS 5.1)) in Windows Vista. Unterstützt für NDIS 5.1-Treiber (siehe NdisClRegisterSap (NDIS 5.1)) in Windows XP. |
Zielplattform- | Desktop |
Header- | ndis.h (include Ndis.h) |
Library | Ndis.lib |
IRQL- | <= DISPATCH_LEVEL |
DDI-Complianceregeln | Irql_Protocol_Driver_Function(ndis) |