функция обратного вызова PROTOCOL_CL_INCOMING_CALL (ndis.h)
Функция ProtocolClIncomingCall используется клиентами, ориентированными на подключение, которые принимают входящие вызовы. Такие клиенты должны иметь функции ProtocolClIncomingCall . В противном случае зарегистрированная функция ProtocolClIncomingCall такого драйвера протокола может просто вернуть NDIS_STATUS_NOT_SUPPORTED.
Синтаксис
PROTOCOL_CL_INCOMING_CALL ProtocolClIncomingCall;
NDIS_STATUS ProtocolClIncomingCall(
[in] NDIS_HANDLE ProtocolSapContext,
[in] NDIS_HANDLE ProtocolVcContext,
[in, out] PCO_CALL_PARAMETERS CallParameters
)
{...}
Параметры
[in] ProtocolSapContext
Указывает дескриптор, изначально предоставленный клиентом при регистрации SAP, который диспетчер звонков сопоставлял с этим предложением входящего вызова.
[in] ProtocolVcContext
Указывает дескриптор для области контекста клиента по VC, ранее возвращенной в NDIS функцией ProtocolCoCreateVc .
[in, out] CallParameters
Указатель на буфер, отформатированный в виде CO_CALL_PARAMETERS структуры, которая содержит параметры вызова для этого предлагаемого вызова.
Возвращаемое значение
ProtocolClIncomingCall может возвращать один из следующих кодов состояния:
Код возврата | Описание |
---|---|
|
Клиент принял предложение о входящем вызове. |
|
Клиент обрабатывает этот запрос асинхронно и вызывает Функция NdisClIncomingCallComplete после завершения операции закрытия. |
|
Клиент отклонил предложение о входящем вызове по какой-либо причине, определенной драйвером. |
Комментарии
Вызов ProtocolClIncomingCall указывает, что диспетчер вызовов получил запрос по сети от однорангового узла сигнализации на установление соединения с этим клиентом. То есть запрос на настройку такого подключения был направлен в SAP, ранее зарегистрированный в диспетчере вызовов этим клиентом.
В зависимости от протокола сигнализации, поддерживаемого диспетчером вызовов, ProtocolClIncomingCall может изменять параметры трафика в рамках процесса согласования принятия входящего предложения звонка и (или), если диспетчер звонков поддерживает QoS, спецификацию качества обслуживания в CallParameters . Клиент должен скопировать все необходимые сведения из этой буферизованной структуры, если он принимает предлагаемый вызов.
Предположим, что диспетчер вызовов находит изменения клиента( если таковые имеются) приемлемыми, NDIS затем вызывает функцию ProtocolClIncomingCallConnected клиента, когда становится возможной для передачи данных в активном VC, представляющем соединение с клиентом на удаленном узле, который изначально инициировал предложение вызова. Если клиент возвращает недопустимые измененные параметры вызова, диспетчер вызовов может разорвать VC, созданный для этого предложения, тем самым вызывая вызовы клиента.Вместо этого функции ProtocolClIncomingCloseCall и ProtocolCoDeleteVc.
Примеры
Чтобы определить функцию ProtocolClIncomingCall , необходимо сначала предоставить объявление функции, определяющее тип определяемой функции. Windows предоставляет набор типов функций для драйверов. Объявление функции с помощью типов функций помогает анализу кода для драйверов, средству проверки статических драйверов (SDV) и другим средствам проверки находить ошибки, и это требование для написания драйверов для операционной системы Windows.Например, чтобы определить функцию ProtocolClIncomingCall с именем MyClIncomingCall, используйте тип PROTOCOL_CL_INCOMING_CALL , как показано в следующем примере кода:
PROTOCOL_CL_INCOMING_CALL MyClIncomingCall;
Затем реализуйте функцию следующим образом:
_Use_decl_annotations_
NDIS_STATUS
MyClIncomingCall(
NDIS_HANDLE ProtocolSapContext,
NDIS_HANDLE ProtocolVcContext,
PCO_CALL_PARAMETERS CallParameters
)
{...}
Тип функции PROTOCOL_CL_INCOMING_CALL определяется в файле заголовка Ndis.h. Чтобы более точно определить ошибки при запуске средств анализа кода, обязательно добавьте заметку Use_decl_annotations в определение функции. Заметка Use_decl_annotations гарантирует использование заметок, которые применяются к типу функции PROTOCOL_CL_INCOMING_CALL в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в разделе Объявление функций с помощью типов ролей функций для драйверов NDIS.
Сведения о Use_decl_annotations см. в статье О поведении функции.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Поддерживается для драйверов NDIS 6.0 и NDIS 5.1 (см. ProtocolClIncomingCall (NDIS 5.1)) в Windows Vista. Поддерживается для драйверов NDIS 5.1 (см. ProtocolClIncomingCall (NDIS 5.1)) в Windows XP. |
Целевая платформа | Windows |
Header | ndis.h (включая Ndis.h) |
IRQL | <= DISPATCH_LEVEL |