функция обратного вызова PROTOCOL_CM_MODIFY_QOS_CALL (ndis.h)
Требуется функция ProtocolCmModifyCallQoS . ПротоколCmModifyCallQoS вызывается NDIS , когда клиент, ориентированный на подключение, запрашивает изменение параметров вызова для существующего виртуального подключения (VC). Если базовый сетевой носитель не поддерживает QoS, ProtocolCmModifyQoS должен просто вернуть NDIS_STATUS_NOT_SUPPORTED.
Синтаксис
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 возвращает состояние своих операций в виде одного из следующих значений:
Код возврата | Описание |
---|---|
|
Указывает, что диспетчер вызовов успешно изменил параметры вызова с сетью на параметры вызова, указанные в CallParameters . |
|
Указывает, что диспетчер вызовов выполнит запрос на асинхронное изменение параметров вызова. Когда диспетчер вызовов завершил все операции, необходимые для изменения параметров вызова, он должен вызвать NdisCmModifyCallQoSComplete. |
|
Указывает, что диспетчеру вызовов не удалось изменить параметры вызова VC, так как динамически выделенные ресурсы были недоступны. |
|
Указывает, что диспетчеру вызовов не удалось изменить параметры вызова VC, так как параметры вызова, предоставленные в CallParameters , были недопустимыми или недопустимыми. |
|
Указывает, что не удалось задать параметры вызова, указанные из-за сбоя в сети или в другом сетевом компоненте, ориентированном на подключение. |
Комментарии
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) |