Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ein verbindungsorientierter NDIS-Client, der eingehende Aufrufe akzeptiert, muss über eine ProtocolClRegisterSapComplete--Funktion verfügen, um die asynchronen Vorgänge auszuführen, die mit NdisClRegisterSap-initiiert werden. Andernfalls kann eine solche registrierte ProtocolClRegisterSapComplete--Funktion einfach die Steuerung zurückgeben.
Syntax
PROTOCOL_CL_REGISTER_SAP_COMPLETE ProtocolClRegisterSapComplete;
VOID ProtocolClRegisterSapComplete(
[in] NDIS_STATUS Status,
[in] NDIS_HANDLE ProtocolSapContext,
[in] PCO_SAP Sap,
[in] NDIS_HANDLE NdisSapHandle
)
{...}
Parameter
[in] Status
Gibt den endgültigen Status des Clientaufrufs an NdisClRegisterSap-an, der eine der folgenden Sein kann:
NDIS_STATUS_SUCCESS
Der SAP wurde sowohl bei NDIS als auch beim Anrufmanager registriert, der anschließend anruft NdisCmDispatchIncomingCall, wenn ein eingehendes Anrufangebot an den angegebenen SAP weitergeleitet wird, wodurch NDIS den Kunden anrufen kann ProtocolClIncomingCall-Funktion.
NDIS_STATUS_RESOURCES
NDIS oder der Anrufmanager konnten die erforderlichen Ressourcen nicht zuordnen und/oder initialisieren, um die SAP zu registrieren und zu verwalten.
NDIS_STATUS_INVALID_DATA
Der Client hat bei Sap an NDIS eine ungültige Spezifikation angegeben, die zur Überprüfung an die ProtocolCmRegisterSap--Funktion des Anrufmanagers weitergeleitet wurde.
NDIS_STATUS_XXX
Fehler beim Versuch, den angegebenen SAP zu registrieren, und NDIS hat diesen CM-ermittelten Fehlerstatus an den Client weitergegeben.
[in] ProtocolSapContext
Gibt das Handle für den Kontextbereich des Clients pro SAP an, den der Client ursprünglich an NDIS übermittelt hat, wenn er NdisClRegisterSap-aufgerufen hat. Wenn die Registrierung erfolgreich ist, behält NDIS dieses Kontexthandle bei und verwendet es anschließend in Aufrufen der ProtocolClIncomingCall--Funktion des Clients, die sich auf diese SAP bezieht.
[in] Sap
Zeigen Sie auf den vom Client zugewiesenen Puffer, der die Spezifikation für das öffnende SAP enthält. Der Client hat diesen Zeiger ursprünglich an NdisClRegisterSap-übergeben.
[in] NdisSapHandle
Wenn Status NDIS_STATUS_SUCCESS ist, gibt sie einen NDIS-bereitgestellten gültigen Handle für diesen registrierten SAP an, effektiv eine Zuordnung mit NDIS zwischen dem Client und einem bestimmten Anrufmanager für den clientspezifischen SAP. Andernfalls ist dieser Parameter NULL-. Der Client muss für einen späteren Aufruf von NdisClDeregisterSapein gültiges Handle speichern, vorzugsweise in seinem ProtocolSap-.
Rückgabewert
Nichts
Bemerkungen
NDIS ruft ProtocolClRegisterSapComplete- auf, um anzugeben, dass der vorherige Aufruf des Clients an NdisClRegisterSap- von NDIS verarbeitet wurde und, wenn NDIS den Anruf nicht fehlschlug, durch den Anrufmanager, mit dem der Client die NdisAfHandle teilt,, dass er an NdisClRegisterSapübergeben wurde.
Um eingehende Anrufe über eine verbindungsorientierte NIC zu empfangen, wird der Client ProtocolCoAfRegisterNotify oder ProtocolClOpenAfCompleteEx--Funktion registriert in der Regel eine oder mehrere SAPs beim Anruf-Manager.
Um jeden SAP zu registrieren, ruft der Client NdisClRegisterSapauf und übergibt die NdisAfHandle-, die den Anruf-Manager identifiziert, von dem der Client Benachrichtigungen über eingehende Anrufe erhalten möchte, und NDIS gibt den Client ein NdisSapHandle an den registrierten SAP zurück, wenn der Aufruf des Clients an NdisClRegisterSap erfolgreich ist. ProtocolClRegisterSapComplete- muss jedes gültige NdisSapHandle-speichern, in der Regel im ProtocolSapContext Bereich des Clients, damit er den SAP später mit NdisClDeregisterSapfreigeben kann.
Das Format eines SAP ist für den Anrufmanager spezifisch. Wenn der Anrufmanager den SAP nicht erkennt, dass der Client versucht, sich zu registrieren, oder wenn der angegebene SAP bereits verwendet wird, kann der Anrufmanager die SAP-Registrierung fehlschlagen.
ProtocolClRegisterSapComplete sollte die Eingabe Status auf NDIS_STATUS_SUCCESS überprüfen, bevor Sie fortfahren. Wenn der Versuch, den SAP zu registrieren, fehlgeschlagen ist,
ProtocolClRegisterSapComplete kann entweder den SAP-Kontextbereich und den Puffer bei Sap freigeben, den der Client zugewiesen hat, oder sie für die Wiederverwendung in einem anderen Aufruf von NdisClRegisterSapvorbereiten.
Ein Client kann eingehende Anrufe an sap empfangen, auch wenn die SAP-Registrierung noch aussteht, d. h., bevor die ProtocolClRegisterSapComplete--Funktion aufgerufen wird.
beispiele für
Um eine ProtocolClRegisterSapComplete--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 ProtocolClRegisterSapComplete--Funktion zu definieren, die den Namen "MyClRegisterSapComplete" hat, verwenden Sie den PROTOCOL_CL_REGISTER_SAP_COMPLETE Typ, wie in diesem Codebeispiel gezeigt:
PROTOCOL_CL_REGISTER_SAP_COMPLETE MyClRegisterSapComplete;
Implementieren Sie dann Ihre Funktion wie folgt:
_Use_decl_annotations_
VOID
MyClRegisterSapComplete(
NDIS_STATUS Status,
NDIS_HANDLE ProtocolSapContext,
PCO_SAP Sap,
NDIS_HANDLE NdisSapHandle
)
{...}
Der PROTOCOL_CL_REGISTER_SAP_COMPLETE Funktionstyp wird in der Headerdatei Ndis.h 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_REGISTER_SAP_COMPLETE 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 für NDIS 6.0- und NDIS 5.1-Treiber (siehe ProtocolClRegisterSapComplete (NDIS 5.1)) in Windows Vista. Unterstützt für NDIS 5.1-Treiber (siehe ProtocolClRegisterSapComplete (NDIS 5.1)) in Windows XP. |
| Zielplattform- | Fenster |
| Header- | ndis.h (include Ndis.h) |
| IRQL- | <= DISPATCH_LEVEL |