PROTOCOL_CL_ADD_PARTY_COMPLETE Rückruffunktion (ndis.h)
Die ProtocolClAddPartyComplete-Funktion ist für verbindungsorientierte NDIS-Clients erforderlich, die Multipointverbindungen einrichten. Solche Clients müssen über ProtocolClAddPartyComplete-Funktionen verfügen, um die asynchronen Vorgänge abzuschließen, die sie mit NdisClAddParty initiieren. Andernfalls kann die vom Protokolltreiber registrierte ProtocolClAddPartyComplete-Funktion einfach die Steuerung zurückgeben.
Syntax
PROTOCOL_CL_ADD_PARTY_COMPLETE ProtocolClAddPartyComplete;
void ProtocolClAddPartyComplete(
[in] NDIS_STATUS Status,
[in] NDIS_HANDLE ProtocolPartyContext,
[in] NDIS_HANDLE NdisPartyHandle,
[in] PCO_CALL_PARAMETERS CallParameters
)
{...}
Parameter
[in] Status
Gibt die endgültige status des vom Client initiierten Add-Party-Vorgangs an. Dies kann eine der folgenden Sein:
NDIS_STATUS_SUCCESS
Die angegebene Partei wurde der aktiven Multipoint-VC des Clients hinzugefügt.
NDIS_STATUS_RESOURCES
NDIS konnte nicht genügend Ressourcen zuweisen, um die neue Partei nachzuverfolgen.
NDIS_STATUS_FAILURE
Der Client hat ein ungültiges NdisVcHandle an NdisClAddParty übergeben.
NDIS_STATUS_XXX
Die ProtocolCmAddParty-Funktion des Aufruf-Managers hat einen CM-bestimmten Wert zurückgegeben, um anzugeben, warum die Partei nicht zur Vc hinzugefügt werden konnte.
[in] ProtocolPartyContext
Gibt das vom Client bereitgestellte Handle an, das ursprünglich an NdisClAddParty übergeben wurde.
[in] NdisPartyHandle
Wenn Status NDIS_STATUS_SUCCESS ist, stellt dieses von NDIS bereitgestellte Handle die Zuordnung zwischen dem Anrufmanager und dem Client in Bezug auf diese Partei dar. Andernfalls ist der Versuch, eine Partei hinzuzufügen, fehlgeschlagen, und der Client sollte diesen Parameter als ungültiges Handle betrachten.
[in] CallParameters
Zeiger auf eine Struktur vom Typ CO_CALL_PARAMETERS, die ursprünglich vom Client für den Aufruf von NdisClAddParty eingerichtet, aber möglicherweise später vom Anrufmanager geändert wurde.
Rückgabewert
Keine
Bemerkungen
Ein Aufruf von ProtocolClAddPartyComplete gibt den Abschluss des asynchronen Vorgangs an, der initiiert wurde, wenn der Client NdisClAddParty aufgerufen hat. Wenn der Eingabestatus auf einen anderen Wert als NDIS_STATUS_SUCCESS festgelegt ist, kann ProtocolClAddPartyComplete die vom Client zugewiesenen Puffer unter ProtocolPartyContext und CallParameters freigeben oder wiederverwenden.
Wenn der Versuch, eine Partei hinzuzufügen, erfolgreich war, sollte ProtocolClAddPartyComplete die Eingabe NdisPartyHandle für nachfolgende Aufrufe von NDIS-Bibliotheksfunktionen für diese Partei im Bereich ProtocolPartyContext des Clients speichern. Beispielsweise muss der Client dieses Handle in einem nachfolgenden Aufruf von NdisClDropParty schließlich übergeben, es sei denn, die Remotepartei, die er darstellt, schließt zuerst ihre Verbindung.
Die Struktur bei CallParameters wurde ursprünglich vom Client zugeordnet und initialisiert, der diesen Zeiger an übergeben hat.
NdisClAddParty. Der Anruf-Manager hat jedoch möglicherweise die vom Client bereitgestellten Werte geändert, um die Ergebnisse der Cm-Aushandlung mit dem Netzwerk oder mit einem Signalpeer während der Verarbeitung der Add-Party-Anforderung des Clients widerzuspiegeln. Um zu bestimmen, ob der Aufruf-Manager Änderungen vorgenommen hat, kann ProtocolClAddPartyComplete den Flags-Member dieser Struktur überprüfen, ob CALL_PARAMETERS_CHANGED festgelegt ist. Wenn dies der Fall ist, muss ProtocolClAddPartyComplete den Parteistatus aktualisieren, den der Client für diesen Aufruf unter ProtocolPartyContext verwaltet, es sei denn, er findet die Änderungen des CM inakzeptabel. Das jeweilige Signalisierungsprotokoll bestimmt, was der Client in diesem Fall tun kann. Normalerweise ruft ein Client NdisClDropParty auf, wenn er die durch CM geänderten Aufrufparameter für nicht akzeptabel hält.
Abhängig vom Signalisierungsprotokoll des Anruf-Managers können die Datenverkehrsparameter bei CallParameters für alle Parteien bei einer bestimmten Mehrpunktverbindung identisch sein. Das heißt, da der Client eines solchen Anruf-Managers Parteien zu einer Mehrpunktverbindung hinzufügt, die der Client ursprünglich mit NdisClMakeCall eingerichtet hat, kann er nur die Zieladresse jeder Partei angeben und die Datenverkehrsparameter bei jedem Aufruf von NdisClAddParty wie ursprünglich für die Multipoint-VC eingerichtet lassen.
Beispiele
Um eine ProtocolClAddPartyComplete-Funktion zu definieren, müssen Sie zunächst eine Funktionsdeklaration bereitstellen, die den Typ der zu definierenden Funktion identifiziert. Windows bietet eine Reihe von Funktionstypen für Treiber. 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 Voraussetzung für das Schreiben von Treibern für das Windows-Betriebssystem.Um beispielsweise eine ProtocolClAddPartyComplete-Funktion mit dem Namen "MyClAddPartyComplete" zu definieren, verwenden Sie den typ PROTOCOL_CL_ADD_PARTY_COMPLETE , wie in diesem Codebeispiel gezeigt:
PROTOCOL_CL_ADD_PARTY_COMPLETE MyClAddPartyComplete;
Implementieren Sie dann Ihre Funktion wie folgt:
_Use_decl_annotations_
VOID
MyClAddPartyComplete(
NDIS_STATUS Status,
NDIS_HANDLE ProtocolPartyContext,
NDIS_HANDLE NdisPartyHandle,
PCO_CALL_PARAMETERS CallParameters
)
{...}
Der PROTOCOL_CL_ADD_PARTY_COMPLETE Funktionstyp ist in der Headerdatei Ndis.h definiert. Um Fehler beim Ausführen der Codeanalysetools genauer zu identifizieren, müssen Sie der Funktionsdefinition die anmerkung Use_decl_annotations hinzufügen. Die Use_decl_annotations-Anmerkung stellt sicher, dass die Anmerkungen verwendet werden, die auf den PROTOCOL_CL_ADD_PARTY_COMPLETE 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 ProtocolClAddPartyComplete (NDIS 5.1)) in Windows Vista. Unterstützt für NDIS 5.1-Treiber (siehe ProtocolClAddPartyComplete (NDIS 5.1)) in Windows XP. |
Zielplattform | Windows |
Kopfzeile | ndis.h (include Ndis.h) |
IRQL | <= DISPATCH_LEVEL |