Функция 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 или любой NDIS_STATUS_ XXX , определяемой CM, за исключением NDIS_STATUS_PENDING.

[in] NdisVcHandle

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

[in, optional] NdisPartyHandle

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

[in, optional] CallMgrPartyContext

Указывает предоставленный CM дескриптор для выделенной вызывающей стороной области контекста, в которой CM будет хранить сведения о состоянии отдельных сторон, или значение NULL , если NdisPartyHandle имеет значение NULL. Для многоточечных VC NDIS передает этот предоставленный CM дескриптор CallManagerPartyContext во всех последующих вызовах функций 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 для неудачной попытки настройки такого подключения также приводит к утечке памяти в диспетчере вызовов; он предотвращает удаление клиентом VC, созданного для неудачного исходящего вызова, поэтому cm не вызывается для освобождения ресурсов, выделенных для этого VC.

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

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

NdisCmMakeCallComplete могут вызывать только автономные диспетчеры вызовов, которые регистрируют себя с помощью NDIS в качестве драйверов протокола. Драйверы мини-порта, обеспечивающие интегрированные вызовы в службу поддержки управления звонками Вместо этого 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