NdisCmMakeCallComplete-Funktion (ndis.h)
NdisCmMakeCallComplete gibt die letzte status der Anforderung eines Clients zurück, für die der Anrufmanager zuvor NDIS_STATUS_PENDING zurückgegeben hat, um einen ausgehenden Anruf zu tätigen.
Syntax
void NdisCmMakeCallComplete(
[in] NDIS_STATUS Status,
[in] NDIS_HANDLE NdisVcHandle,
[in, optional] NDIS_HANDLE NdisPartyHandle,
[in, optional] NDIS_HANDLE CallMgrPartyContext,
[in] PCO_CALL_PARAMETERS CallParameters
);
Parameter
[in] Status
Gibt den endgültigen status des Verbindungsversuchs an, entweder NDIS_STATUS_SUCCESS oder ein cm-bestimmter NDIS_STATUS_ XXX außer NDIS_STATUS_PENDING.
[in] NdisVcHandle
Gibt das Handle für die vom Client erstellte VC an, die der Aufruf-Manager ursprünglich als Eingabeparameter für seine ProtocolCoCreateVc-Funktion abgerufen hat. In jüngerer Zeit hat der CM dieses Handle aus seinem Pro-VC-Zustand abgerufen, der durch den callMgrVcContext festgelegt wurde, der an seine ProtocolCmMakeCall-Funktion übergeben wurde.
[in, optional] NdisPartyHandle
Gibt das Handle für die anfängliche Partei auf der vom Client erstellten Multipoint-VC an, die der Aufruf-Manager als Eingabeparameter für seine ProtocolCmMakeCall-Funktion abgerufen hat. Wenn der angegebene NdisVcHandle eine Punkt-zu-Punkt-VC darstellt, lautete dieser Parameter NULL.
[in, optional] CallMgrPartyContext
Gibt das vom CM bereitgestellte Handle für einen vom Aufrufer zugewiesenen residenten Kontextbereich an, in dem der CM die Statusinformationen pro Partei verwaltet, oder NULL , wenn NdisPartyHandleNULL ist. Bei einer Multipoint-VC übergibt NDIS dieses vom CM bereitgestellte CallManagerPartyContext-Handle in allen nachfolgenden Aufrufen der ProtocolCmXxx-Funktionen , die diese Partei betreffen. Andernfalls ignoriert NDIS diesen Parameter.
[in] CallParameters
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 eigenständiger Anrufmanager sollte NdisMCmMakeCallComplete nur mit NDIS_STATUS_SUCCESS aufrufen, wenn der zugrunde liegende Miniporttreiber bereit ist, Datenübertragungen auf der Vc durchzuführen. Das heißt, der Anruf-Manager hat mit dem Netzwerk ausgehandelt, um Aufrufparameter für den Vc festzulegen und NdisCmActivateVc erfolgreich aufgerufen.
Ein eigenständiger Anruf-Manager muss NdisCmMakeCallComplete 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 den Nachweis erst dann zum Durchführen von Übertragungen verwenden, wenn der CM NdisCmMakeCallComplete mit NDIS_STATUS_SUCCESS aufruft .
Selbst wenn der Verbindungsversuch fehlschlägt, können weder NDIS noch der Client die Ressourcen freigeben, die sie zugeordnet haben, um den Zustand aufrechtzuerhalten, bis der Aufruf des CM an NdisCmMakeCallComplete einen Aufruf dieses Clients verursacht. ProtocolClMakeCallComplete-Funktion . Tatsächlich führt das Versäumnis, NdisCmMakeCallComplete für einen fehlgeschlagenen Versuch, eine solche Verbindung einzurichten, aufzurufen, auch im Anruf-Manager zu einem Speicherverlust; Dadurch wird verhindert, dass der Client die für den fehlgeschlagenen ausgehenden Aufruf erstellte Vc-Instanz abreißt, sodass der CM nicht aufgerufen wird, um die ressourcen freizugeben, die er für diesen Nachweis zugewiesen hat.
Wenn der CM einen Fehler wie NDIS_STATUS_FAILURE für den Status übergibt, sollte die NdisPartyHandle ggf. ungültig sein, sobald NdisCmMakeCallComplete aufgerufen wird. Der CM kann alle Ressourcen freigeben (oder zur Wiederverwendung neu initialisieren), die ihm zugeordnet sind, um den Zustand für die angegebene Partei beizubehalten, wenn NdisCmMakeCallComplete die Steuerung zurückgibt. Die ProtocolCoDeleteVc-Funktion des CM wird anschließend aufgerufen, um alle Ressourcen freizugeben, die der CM für die Nachverfolgung des Zustands der vom Client erstellten VC zugewiesen hat, wenn der CM einen Fehler status an NdisCmMakeCallComplete übergibt.
Im Zuge der Einrichtung eines clientinitiierten ausgehenden Aufrufs kann der CM die vom Client bereitgestellten Aufrufparameter ändern, die ursprünglich an seine ProtocolCmMakeCall-Funktion übergeben wurden. Wenn dies der Fall ist, muss der CM seine Änderungen im Puffer bei CallParameters übergeben, wenn er NdisCmMakeCallComplete aufruft. Wenn der Client diese geänderten Aufrufparameter für inakzeptabel findet, wird der Aufruf gelöscht, was auch einen Aufruf der ProtocolCoDeleteVc-Funktion des CM verursacht.
Nur eigenständige Anrufmanager, die sich bei NDIS als Protokolltreiber registrieren, können NdisCmMakeCallComplete aufrufen. Miniport-Treiber, die integrierte Anrufverwaltung unterstützen, rufen an Stattdessen NdisMCmMakeCallComplete .
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Unterstützt für NDIS 6.0- und NDIS 5.1-Treiber (siehe NdisCmMakeCallComplete (NDIS 5.1)) in Windows Vista. Unterstützt für NDIS 5.1-Treiber (siehe NdisCmMakeCallComplete (NDIS 5.1)) in Windows XP. |
Zielplattform | Desktop |
Kopfzeile | ndis.h (include Ndis.h) |
Bibliothek | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI-Complianceregeln | Irql_CallManager_Function(ndis) |