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

NdisCmActivateVc передает предоставленные CM параметры вызова, включая параметры мультимедиа, для конкретного VC в базовый драйвер минипорта.

Синтаксис

NDIS_STATUS NdisCmActivateVc(
  [in]      NDIS_HANDLE         NdisVcHandle,
  [in, out] PCO_CALL_PARAMETERS CallParameters
);

Параметры

[in] NdisVcHandle

Указывает дескриптор, определяющий VC, для которого необходимо задать параметры вызова. Диспетчер вызовов получил этот дескриптор из NdisCoCreateVc для входящего вызова или в качестве входного параметра функции ProtocolCoCreateVc для исходящего вызова, инициированного клиентом.

[in, out] CallParameters

Указатель на выделенный CM резидентный буфер, отформатированный как структура типа CO_CALL_PARAMETERS, содержащая все параметры носителя, которые базовый драйвер минипорта использует для активации VC.

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

Когда NdisCmActivateVc возвращает что-либо, кроме NDIS_STATUS_PENDING, диспетчер вызовов должен выполнить внутренний вызов к его Функция ProtocolCmActivateVcComplete . В противном случае NDIS вызывает функцию ProtocolCmActivateVcComplete cm после завершения этой операции.

Комментарии

NdisCmActivateVc уведомляет базовый драйвер минипорта о настройке параметров вызова и мультимедиа на только что созданном VC или изменении параметров установленного виртуального сервера. NDIS перенаправляет заданные параметры вызова и дескриптор VC в функцию MiniportCoActivateVc базового драйвера минипорта, которая настраивает все необходимые ресурсы для отслеживания состояния VC и делает себя и сетевой адаптер готовым к передаче данных на виртуальном сервере.

Автономная cm всегда вызывает NdisCmActivateVc после установки подключения к виртуальному каналу, но до отправки или получения данных в этом VC. В течение всего времени подключения CM может много раз вызывать NdisCmActivateVc с тем же NdisVcHandle при изменении условий в сети и (или) всякий раз, когда клиент вызывает NdisClModifyCallQoS. При каждом таком вызове NdisCmActivateVc функция MiniportCoActivateVc базового драйвера miniport должна выполнять одно из следующих действий:

  • Обновите состояние, которое драйвер минипорта поддерживает о параметрах вызова, до новых значений, предоставленных диспетчером вызовов, если драйвер минипорта может продолжать выполнять передачу в VC в соответствии с недавно измененными параметрами вызова.
  • Завершите вызов, если драйвер минипорта не может продолжать выполнять передачу в соответствии с ограничениями заданных параметров вызова.
Если базовый драйвер минипорта не выполняет запрос на задание или сброс параметров вызова, диспетчер вызовов может изменить исходную спецификацию в CallParameters и снова вызвать NdisCmActivateVc . Ограничение на количество повторных попыток активации VC диспетчером вызовов зависит от реализации.

Для исходящего вызова, инициированного клиентом, автономная cm обычно вызывает NdisCmActivateVc сразу после обмена пакетами, подтвердив согласованное соглашение с удаленным целевым объектом вызова или успешную настройку вызова на коммутаторе, прежде чем уведомлять NDIS (и клиент) о завершении исходящего вызова с помощью NdisCmMakeCallComplete. Для входящего звонка диспетчер вызовов обычно вызывает NdisCmActivateVc после успешного вызова NdisCoCreateVc и перед вызовом. NdisCmDispatchIncomingCall.

В процессе настройки исходящего вызова и пока любой VC остается активированным, клиент может запросить изменения параметров вызова для этого VC, например, вызвав NdisClModifyCallQos. После проверки допустимости заданных параметров вызова для любого такого запроса автономный диспетчер вызовов должен вызвать NdisCmActivateVc , чтобы передать измененные параметры вызова в базовый драйвер мини-порта.

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

Требования

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

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

CO_CALL_PARAMETERS

MiniportCoActivateVc

NdisClMakeCall

NdisClModifyCallQos

NdisCmDeactivateVc

NdisCmDispatchIncomingCall

NdisCoCreateVc

NdisMCmActivateVc

ProtocolCmActivateVcComplete

ProtocolCoCreateVc