Поделиться через


функция обратного вызова PROTOCOL_CM_MODIFY_QOS_CALL (ndis.h)

Требуется функция ProtocolCmModifyCallQoS . ПротоколCmModifyCallQoS вызывается NDIS , когда клиент, ориентированный на подключение, запрашивает изменение параметров вызова для существующего виртуального подключения (VC). Если базовый сетевой носитель не поддерживает QoS, ProtocolCmModifyQoS должен просто вернуть NDIS_STATUS_NOT_SUPPORTED.

Примечание Функцию необходимо объявить с помощью типа PROTOCOL_CM_MODIFY_QOS_CALL . Дополнительные сведения см. в следующем разделе Примеры.
 

Синтаксис

PROTOCOL_CM_MODIFY_QOS_CALL ProtocolCmModifyQosCall;

NDIS_STATUS ProtocolCmModifyQosCall(
  [in] NDIS_HANDLE CallMgrVcContext,
  [in] PCO_CALL_PARAMETERS CallParameters
)
{...}

Параметры

[in] CallMgrVcContext

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

[in] CallParameters

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

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

ProtocolCmModifyQoS возвращает состояние своих операций в виде одного из следующих значений:

Код возврата Описание
NDIS_STATUS_SUCCESS
Указывает, что диспетчер вызовов успешно изменил параметры вызова с сетью на параметры вызова, указанные в CallParameters .
NDIS_STATUS_PENDING
Указывает, что диспетчер вызовов выполнит запрос на асинхронное изменение параметров вызова. Когда диспетчер вызовов завершил все операции, необходимые для изменения параметров вызова, он должен вызвать NdisCmModifyCallQoSComplete.
NDIS_STATUS_RESOURCES
Указывает, что диспетчеру вызовов не удалось изменить параметры вызова VC, так как динамически выделенные ресурсы были недоступны.
NDIS_STATUS_INVALID_DATA
Указывает, что диспетчеру вызовов не удалось изменить параметры вызова VC, так как параметры вызова, предоставленные в CallParameters , были недопустимыми или недопустимыми.
NDIS_STATUS_FAILURE
Указывает, что не удалось задать параметры вызова, указанные из-за сбоя в сети или в другом сетевом компоненте, ориентированном на подключение.

Комментарии

ProtocolCmModifyQoS взаимодействует с сетевыми устройствами управления или другими агентами, зависящими от носителя, в случае необходимости, для изменения параметров вызова конкретного носителя для установленного виртуального подключения. Если диспетчер вызовов требуется для взаимодействия с агентами управления сетью (другими словами, сетевым коммутатором), он должен использовать виртуальное подключение к агентам управления сетью, установленным в функции ProtocolBindAdapterEx . Автономные диспетчеры вызовов обмениваются данными с сетевыми агентами путем вызова NdisCoSendNetBufferLists. Драйверы мини-портов с встроенной поддержкой управления вызовами никогда не вызывают NdisCoSendNetBufferLists. Вместо этого такой драйвер просто передает данные по сети целевому сетевому агенту.

После обмена данными с сетью и при успешном выполнении изменений диспетчер вызовов должен вызвать NdisCmActivateVc с новыми параметрами вызова. Это уведомляет NDIS и (или) драйвер мини-порта, ориентированный на подключение, о том, что параметры вызова изменились, и предоставляет драйверу мини-порта возможность проверить эти параметры.

Если сеть не может принять новые параметры вызова или базовый драйвер мини-порта не может принять параметры, диспетчер вызовов должен восстановить виртуальное подключение в состоянии, которое существовало до попытки внесения каких-либо изменений, и вернуть NDIS_STATUS_FAILURE.

Примеры

Чтобы определить функцию ProtocolCmModifyCallQoS , необходимо сначала предоставить объявление функции, определяющее тип определяемой функции. Windows предоставляет набор типов функций для драйверов. Объявление функции с помощью типов функций помогает анализу кода для драйверов, средству проверки статических драйверов (SDV) и другим средствам проверки находить ошибки, и это требование для написания драйверов для операционной системы Windows.

Например, чтобы определить функцию ProtocolCmModifyCallQoS с именем MyCmModifyCallQoS, используйте тип PROTOCOL_CM_MODIFY_QOS_CALL , как показано в следующем примере кода:

PROTOCOL_CM_MODIFY_QOS_CALL MyCmModifyCallQoS;

Затем реализуйте функцию следующим образом:

_Use_decl_annotations_
NDIS_STATUS
 MyCmModifyCallQoS(
    NDIS_HANDLE  CallMgrVcContext,
    PCO_CALL_PARAMETERS  CallParameters
    )
  {...}

Тип функции PROTOCOL_CM_MODIFY_QOS_CALL определен в файле заголовка Ndis.h. Чтобы более точно определить ошибки при запуске средств анализа кода, не забудьте добавить заметку Use_decl_annotations в определение функции. Заметка Use_decl_annotations гарантирует использование заметок, которые применяются к типу функции PROTOCOL_CM_MODIFY_QOS_CALL в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в статье Объявление функций с помощью типов ролей функций для драйверов NDIS.

Сведения о Use_decl_annotations см. в статье Поведение функции с заметками.

Требования

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

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

NdisCmActivateVc

NdisCmModifyCallQoSComplete

NdisCoSendNetBufferLists

ProtocolCoCreateVc