функция обратного вызова 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_XXXX
Клиент отклонил предложение входящего вызова по какой-либо причине, определяемой драйвером.

Remarks

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