NdisMCmMakeCallComplete-Makro (ndis.h)

NdisMCmMakeCallComplete gibt den letzten status der Clientanforderung zurück, für die der MCM-Treiber zuvor NDIS_STATUS_PENDING zurückgegeben hat, um einen ausgehenden Anruf zu tätigen.

Syntax

void NdisMCmMakeCallComplete(
   _S_,
   _VH_,
   _PH_,
   _CC_,
   _CP_
);

Parameter

_S_

Gibt den letzten status des Verbindungsversuchs an, entweder NDIS_STATUS_SUCCESS oder ein beliebiger aufruferbezogener NDIS_STATUS_ XXX außer NDIS_STATUS_PENDING.

_VH_

Gibt das Handle für den vom Client erstellten VC an, den der MCM-Treiber als Eingabeparameter für seine ProtocolCoCreateVc-Funktion und neuerdings von callMgrVcContext an seine ProtocolCmMakeCall-Funktion übergeben hat.

_PH_

Gibt das Handle für die erste Partei auf der vom Client erstellten Mehrpunkt-VC an, die der MCM-Treiber als Eingabeparameter für seine ProtocolCmMakeCall-Funktion abgerufen hat. Wenn der angegebene NdisVcHandle eine Punkt-zu-Punkt-VC darstellt, lautet dieser Parameter NULL.

_CC_

Gibt das Handle für einen vom Aufrufer zugewiesenen residenten Kontextbereich an, in dem der MCM-Treiber die statusspezifischen Informationen verwaltet, oder dieser Parameter ist NULL , wenn NdisPartyHandleNULL ist. Bei einer Mehrpunkt-VC übergibt NDIS dieses vom MCM-Treiber bereitgestellte CallManagerPartyContext-Handle in allen nachfolgenden Aufrufen der ProtocolCmXxx-Funktionen , die diese Partei betreffen. Wenn Status etwas anderes als NDIS_STATUS_SUCCESS ist, ignoriert NDIS diesen Parameter.

_CP_

Zeiger auf eine Struktur vom Typ CO_CALL_PARAMETERS , die die für diese Verbindung eingerichteten Aufrufparameter angibt, wenn Status NDIS_STATUS_SUCCESS ist.

Rückgabewert

Keine

Bemerkungen

Ein MCM-Treiber sollte NdisMCmMakeCallComplete nur mit NDIS_STATUS_SUCCESS aufrufen, wenn er bereit ist, Datenübertragungen auf der VC durchzuführen. Das heißt, der MCM-Treiber hat mit dem Netzwerk ausgehandelt, um die Aufrufparameter für die VC festzulegen, eine NIC für diese Aufrufparameter eingerichtet und NdisMCmActivateVc aufgerufen, um NDIS über die VC-Aktivierung zu benachrichtigen.

Ein MCM-Treiber muss NdisMCmMakeCallComplete aufrufen, wenn seine ProtocolCmMakeCall-Funktion zuvor NDIS_STATUS_PENDING für den angegebenen NdisVcHandle zurückgegeben hat. Der Client, der den ausstehenden ausgehenden Anruf initiiert hat, kann die VC nicht zum Durchführen von Übertragungen verwenden, bis der Miniporttreiber NdisMCmMakeCallComplete mit NDIS_STATUS_SUCCESS aufruft .

Selbst wenn bei der versuchten Verbindung ein Fehler aufgetreten ist, können weder NDIS noch der Client die Ressourcen freigeben, die sie zugewiesen haben, um den Zustand aufrechtzuerhalten, bis der Aufruf des MCM-Treibers an NdisMCmMakeCallComplete einen Aufruf dieses Clients verursacht. ProtocolClMakeCallComplete-Funktion . In der Tat führt die Vernachlässigung, NdisMCmMakeCallComplete für einen fehlgeschlagenen Versuch, eine solche Verbindung einzurichten, zu einem Speicherverlust im MCM-Treiber. Dadurch wird verhindert, dass der Client die VC herunterreißt, die er für den fehlgeschlagenen ausgehenden Aufruf erstellt hat, sodass die ProtocolCoDeleteVc-Funktion des MCM-Treibers nicht aufgerufen wird, um die Ressourcen freizugeben, die der Miniporttreiber für diese VC zugewiesen hat.

Wenn der MCM-Treiber einen Fehler wie NDIS_STATUS_FAILURE für den Status übergibt, muss er NdisPartyHandle als ungültig betrachten, falls vorhanden, wenn NdisMCmMakeCallComplete die Steuerung zurückgibt. Der CM kann alle Ressourcen freigeben (oder zur Wiederverwendung neu initialisieren), die er zugewiesen hat, um den Zustand für die angegebene Partei aufrechtzuerhalten, nachdem NdisMCmMakeCallComplete die Steuerung zurückgegeben hat. Die ProtocolCoDeleteVc-Funktion des MCM-Treibers wird anschließend aufgerufen, um alle Ressourcen freizugeben, die der Miniporttreiber für die Nachverfolgung des Status des vom Client erstellten VC zugewiesen hat, wenn der MCM-Treiber einen Fehler status an NdisMCmMakeCallComplete übergibt.

Beim Einrichten eines vom Client initiierten ausgehenden Aufrufs kann der MCM-Treiber die vom Client bereitgestellten Aufrufparameter ändern, die ursprünglich an seine ProtocolCmMakeCall-Funktion übergeben wurden. Wenn dies der Fall ist, muss der MCM-Treiber seine Änderungen im Puffer unter CallParameters übergeben, wenn er NdisMCmMakeCallComplete aufruft. Wenn der Client diese geänderten Aufrufparameter für inakzeptabel hält, wird er den Aufruf abreißen, was auch einen Aufruf der ProtocolCoDeleteVc-Funktion des MCM-Treibers verursacht.

Nur verbindungsorientierte Miniporttreiber, die integrierte Unterstützung für die Anrufverwaltung bieten, können NdisMCmMakeCallComplete aufrufen. Eigenständige Anrufmanager, die sich bei NDIS als Protokolltreiber registrieren, rufen stattdessen NdisCmMakeCallComplete auf.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Unterstützt für NDIS 6.0- und NDIS 5.1-Treiber (siehe NdisMCmMakeCallComplete (NDIS 5.1)) in Windows Vista. Unterstützt für NDIS 5.1-Treiber (siehe NdisMCmMakeCallComplete (NDIS 5.1)) in Windows XP.
Zielplattform Desktop
Kopfzeile ndis.h (einschließlich Ndis.h)
IRQL <= DISPATCH_LEVEL
DDI-Complianceregeln Irql_MCM_Function(ndis)

Weitere Informationen

CO_CALL_PARAMETERS

NdisAllocateFromNPagedLookasideList

NdisClMakeCall

NdisCmMakeCallComplete

ProtocolClMakeCallComplete

ProtocolCmMakeCall

ProtocolCoDeleteVc