Макрос NdisMCmMakeCallComplete (ndis.h)

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

Синтаксис

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

Параметры

_S_

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

_VH_

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

_PH_

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

_CC_

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

_CP_

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

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

None

Remarks

Драйвер MCM должен вызывать NdisMCmMakeCallComplete с NDIS_STATUS_SUCCESS, только если он готов к передаче данных в VC. То есть драйвер MCM договорился с сетью о том, чтобы установить параметры вызова для VC, настроить сетевую карту для этих параметров вызова и вызвать NdisMCmActivateVc , чтобы уведомить NDIS об активации VC.

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

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

Если драйвер MCM передает ошибку, например NDIS_STATUS_FAILURE, для состояния, он должен считать NdisPartyHandle, если таковой имеется, недопустимым, когда NdisMCmMakeCallComplete возвращает управление. Cm может освободить (или повторно инициализировать для повторного использования) все ресурсы, выделенные для поддержания состояния для данной стороны после того, как NdisMCmMakeCallComplete вернет управление. Функция ProtocolCoDeleteVc драйвера MCM будет впоследствии вызвана для освобождения всех ресурсов, выделенных драйвером мини-порта для отслеживания состояния созданного клиентом VC, когда драйвер MCM передает состояние ошибки в NdisMCmMakeCallComplete.

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

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

Требования

Требование Значение
Минимальная версия клиента Поддерживается для драйверов NDIS 6.0 и NDIS 5.1 (см. раздел NdisMCmMakeCallComplete (NDIS 5.1)) в Windows Vista. Поддерживается для драйверов NDIS 5.1 (см. раздел NdisMCmMakeCallComplete (NDIS 5.1)) в Windows XP.
Целевая платформа Персональный компьютер
Верхняя часть ndis.h (включая Ndis.h)
IRQL <= DISPATCH_LEVEL
Правила соответствия DDI Irql_MCM_Function(ndis)

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

CO_CALL_PARAMETERS

NdisAllocateFromNPagedLookasideList

NdisClMakeCall

NdisCmMakeCallComplete

ProtocolClMakeCallComplete

ProtocolCmMakeCall

ProtocolCoDeleteVc