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


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

Функция ProtocolClModifyCallQoSComplete используется клиентами NDIS, ориентированными на подключение, которые могут динамически изменять качество обслуживания при подключении. Такие клиенты должны иметь функции ProtocolClModifyCallQoSComplete для выполнения асинхронных операций, которые они инициируют с помощью NdisClModifyCallQoS. В противном случае зарегистрированная функция ProtocolClModifyCallQoSComplete такого драйвера протокола может просто вернуть управление.

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

Синтаксис

PROTOCOL_CL_MODIFY_CALL_QOS_COMPLETE ProtocolClModifyCallQosComplete;

void ProtocolClModifyCallQosComplete(
  [in] NDIS_STATUS Status,
  [in] NDIS_HANDLE ProtocolVcContext,
  [in] PCO_CALL_PARAMETERS CallParameters
)
{...}

Параметры

[in] Status

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

NDIS_STATUS_SUCCESS

QoS было изменено в соответствии с запросом клиента.

NDIS_STATUS_RESOURCES

NDIS или диспетчеру вызовов не удалось изменить качество обслуживания, так как один из них не мог динамически выделять достаточные ресурсы.

NDIS_STATUS_INVALID_DATA

Недопустимые параметры вызова, предоставленные клиентом NdisClModifyCallQoS .

NDIS_STATUS_FAILURE

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

NDIS_STATUS_XXX

Диспетчеру вызовов не удалось изменить качество обслуживания, и NDIS распространила на клиент состояние сбоя, определяемое CM.

[in] ProtocolVcContext

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

[in] CallParameters

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

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

None

Remarks

Вызов ProtocolClModifyCallQoSComplete указывает, что диспетчер вызовов завершил обработку инициированного клиентом запроса на изменение качества обслуживания в активном VC. Например, если базовый сетевой носитель поддерживает динамические изменения качества обслуживания, клиент может в любое время запросить изменения в активном виртуальном сервере.

Если вызов клиента к NdisClModifyCallQoS завершается успешно, ProtocolClModifyCallQoSComplete может принять изменение качества обслуживания, просто вернув элемент управления. В противном случае ProtocolClModifyCallQoSComplete может участвовать в дальнейших переговорах с диспетчером вызовов, если разработчик клиента налагает разумное ограничение на количество возможных повторных переговоров. Кроме того, ProtocolClModifyCallQoSComplete может просто прервать вызов с помощью NdisCloseCall всякий раз, когда диспетчер вызовов отклоняет запрос на изменение качества обслуживания, и ранее установленное качество обслуживания становится неприемлемым для клиента.

Примеры

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

Например, чтобы определить функцию ProtocolClModifyCallQoSComplete с именем MyClModifyCallQoSComplete, используйте тип PROTOCOL_CL_MODIFY_CALL_QOS_COMPLETE , как показано в этом примере кода:

PROTOCOL_CL_MODIFY_CALL_QOS_COMPLETE MyClModifyCallQoSComplete;

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

_Use_decl_annotations_
VOID
 MyClModifyCallQoSComplete(
    NDIS_STATUS  Status,
    NDIS_HANDLE  ProtocolVcContext,
    PCO_CALL_PARAMETERS  CallParameters
    )
  {...}

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

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

Требования

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

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

CO_CALL_PARAMETERS

NdisClCloseCall

NdisClModifyCallQoS

NdisCmModifyCallQoSComplete

NdisMCmModifyCallQoSComplete

ProtocolCmModifyCallQoS

ProtocolCoCreateVc