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


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

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

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

Синтаксис

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 может возвращать один из следующих кодов состояния:

Код возврата Описание
NDIS_STATUS_SUCCESS
Клиент принял предложение о входящем вызове.
NDIS_STATUS_PENDING
Клиент обрабатывает этот запрос асинхронно и вызывает Функция NdisClIncomingCallComplete после завершения операции закрытия.
NDIS_STATUS_XXX
Клиент отклонил предложение о входящем вызове по какой-либо причине, определенной драйвером.

Комментарии

Вызов 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

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

CO_CALL_PARAMETERS

NdisClIncomingCallComplete

NdisClRegisterSap

NdisCmDispatchIncomingCall

NdisMCmDispatchIncomingCall

ProtocolClCallConnected

ProtocolClIncomingCloseCall

ProtocolCoCreateVc

ProtocolCoDeleteVc