Функция 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 или изменении VC. NDIS перенаправляет заданные параметры вызова и дескриптор VC в базовую функцию драйвера минипорта MiniportCoActivateVc, которая настраивает все необходимые ресурсы для отслеживания состояния VC и делает себя и сетевой адаптер готовым для передачи данных в VC.
Автономный CM всегда вызывает NdisCmActivateVc после установления подключения к VC, но до отправки или получения данных в этом VC. На протяжении всего подключения CM может вызывать NdisCmActivateVc много раз с тем же NdisVcHandle в качестве условий изменения сети и (или) всякий раз, когда клиент вызывает NdisClModifyCallQoS. При каждом вызове NdisCmActivateVcбазовый функции минипорта MiniportCoActivateVc должен выполнять одно из следующих действий:
- Обновите состояние, которое драйвер минипорта сохраняет о параметрах вызова до новых значений, предоставленных диспетчером вызовов, если драйвер минипорта может продолжать передавать данные в VC в соответствии с недавно измененными параметрами вызова.
- Сбой вызова, если мини-драйвер не может продолжать передавать данные в соответствии с ограничениями заданных параметров вызова.
Для исходящего вызова, инициированного клиентом, автономный CM обычно вызывает NdisCmActivateVc сразу после обмена пакетами, подтверждающий согласование соглашения с удаленным целевым объектом вызова или успешной настройкой вызова на коммутаторе, прежде чем уведомлять NDIS (и клиент) о завершении исходящего вызова с NdisCmMakeCallComplete. Для входящего вызова диспетчер вызовов обычно вызывает NdisCmActivateVc после вызова NdisCoCreateVc и перед вызовом NdisCmDispatchIncomingCall.
В процессе настройки исходящего вызова и в то время как любой VC остается активированным, клиент может запросить изменения параметров вызова для этого VC, например путем вызова NdisClModifyCallQos. После проверки допустимости заданных параметров вызова для любого такого запроса автономный диспетчер вызовов должен вызвать NdisCmActivateVc, чтобы передать измененные параметры вызова в базовый минипорт-драйвер.
Только автономные диспетчеры вызовов, которые регистрируют себя в качестве драйверов протокола NDIS, могут вызывать NdisCmActivateVc. Вместо этого драйверы мини-порта, ориентированные на подключение, которые обеспечивают встроенную поддержку управления вызовами, NdisMCmActivateVc.