Функция NdisCmMakeCallComplete (ndis.h)

NdisCmMakeCallComplete возвращает окончательное состояние запроса клиента, для которого диспетчер вызовов ранее вернул NDIS_STATUS_PENDING, чтобы выполнить исходящий вызов.

Синтаксис

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
);

Параметры

[in] Status

Указывает окончательное состояние попытки установить подключение либо NDIS_STATUS_SUCCESS, либо любой определяемой CM NDIS_STATUS_ XXX , кроме NDIS_STATUS_PENDING.

[in] NdisVcHandle

Указывает дескриптор созданного клиентом VC, который диспетчер вызовов изначально получил в качестве входного параметра для его функции ProtocolCoCreateVc . В последнее время CM получил этот дескриптор из своего состояния per-VC, заданного CallMgrVcContext , переданного в функцию ProtocolCmMakeCall .

[in, optional] NdisPartyHandle

Указывает дескриптор для исходной стороны в созданном клиентом мультиpoint VC, который диспетчер вызовов, полученный в качестве входного параметра для функции ProtocolCmMakeCall . Если заданный объект NdisVcHandle представляет VC типа "точка — точка", этот параметр имеет значение NULL.

[in, optional] CallMgrPartyContext

Указывает дескриптор, предоставленный CM, в выделенной вызывающей стороной области контекста резидента, в которой CM будет поддерживать сведения о состоянии для каждой стороны, или NULL , если NdisPartyHandle имеет значение NULL. Для многоточечных VC NDIS передает этот дескриптор CallManagerPartyContext , предоставляемый CM, во всех последующих вызовах функций ProtocolCmXxx , которые касаются этой стороны. В противном случае NDIS игнорирует этот параметр.

[in] CallParameters

Указатель на структуру типа CO_CALL_PARAMETERS , указывающую параметры вызова, настроенные для этого подключения, если состояние NDIS_STATUS_SUCCESS.

Возвращаемое значение

None

Remarks

Автономный диспетчер вызовов должен вызывать NdisMCmMakeCallComplete с NDIS_STATUS_SUCCESS только в том случае, если базовый драйвер мини-порта готов к передаче данных в VC. То есть диспетчер вызовов согласуется с сетью для установления параметров вызова для VC и называется NdisCmActivateVc успешно.

Автономный диспетчер вызовов должен вызывать NdisCmMakeCallComplete , если его функция ProtocolCmMakeCall ранее возвращала NDIS_STATUS_PENDING для заданного NdisVcHandle . Клиент, который инициировал ожидающий исходящий вызов, не может использовать VC для передачи, пока CM не вызовет NdisCmMakeCallComplete с NDIS_STATUS_SUCCESS.

Даже если произошел сбой подключения, ни NDIS, ни клиент не могут освободить ресурсы, выделенные для поддержания состояния, пока вызов CM к NdisCmMakeCallComplete не вызовет вызов этого клиента.Функция ProtocolClMakeCallComplete. На самом деле, пренебрежение вызовом NdisCmMakeCallComplete для неудачной попытки настройки такого подключения также приводит к утечке памяти в диспетчере вызовов; Он предотвращает удаление клиента, созданного для неудавшегося исходящего вызова, поэтому CM не вызывается для освобождения ресурсов, выделенных для этого VC.

Если CM передает ошибку, например NDIS_STATUS_FAILURE, для состояния, она должна учитывать значение NdisPartyHandle(если таковое имеется), недопустимое сразу после вызова NdisCmMakeCallComplete. CM может освободить (или повторно инициализировать для повторного использования) все ресурсы, выделенные для поддержания состояния для данной стороны, когда NdisCmMakeCallComplete возвращает элемент управления. Затем функция ProtocolCoDeleteVc CM будет вызвана для освобождения всех ресурсов, выделенных CM для отслеживания состояния созданного клиентом VC, когда CM передает состояние ошибки NdisCmMakeCallComplete.

При настройке исходящего вызова, инициированного клиентом, CM может изменять предоставленные клиентом параметры вызова, изначально переданные в функцию ProtocolCmMakeCall . Если это так, CM должен передать изменения в буфер в CallParameters при вызове NdisCmMakeCallComplete. Если клиент находит эти измененные параметры вызова неприемлемыми, он разорвет вызов, который также вызывает вызов функции ProtocolCoDeleteVc CM.

Только автономные диспетчеры вызовов, которые регистрируются в NDIS в качестве драйверов протокола, могут вызывать NdisCmMakeCallComplete. Драйверы минипорта, обеспечивающие встроенную поддержку управления звонками Вместо этого NdisMCmMakeCallComplete .

Требования

   
Минимальная версия клиента Поддерживается для драйверов NDIS 6.0 и NDIS 5.1 (см. статью NdisCmMakeCallComplete (NDIS 5.1)) в Windows Vista. Поддерживается для драйверов NDIS 5.1 (см. NdisCmMakeCallComplete (NDIS 5.1)) в Windows XP.
Целевая платформа Рабочий стол
Заголовок ndis.h (включая Ndis.h)
Библиотека Ndis.lib
IRQL <= DISPATCH_LEVEL
Правила соответствия DDI Irql_CallManager_Function(ndis)

См. также раздел

CO_CALL_PARAMETERS

NdisAllocateFromNPagedLookasideList

NdisClMakeCall

NdisMCmMakeCallComplete

ProtocolClMakeCallComplete

ProtocolCmMakeCall

ProtocolCoDeleteVc