Функция NdisClRegisterSap (ndis.h)

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

Синтаксис

NDIS_STATUS NdisClRegisterSap(
  [in]  NDIS_HANDLE  NdisAfHandle,
  [in]  NDIS_HANDLE  ProtocolSapContext,
  [in]  PCO_SAP      Sap,
  [out] PNDIS_HANDLE NdisSapHandle
);

Параметры

[in] NdisAfHandle

Указывает дескриптор, возвращаемый NdisClOpenAddressFamilyEx, который неявно идентифицирует диспетчер вызовов, с помощью которого необходимо зарегистрировать SAP.

[in] ProtocolSapContext

Указывает дескриптор предоставляемой вызывающим абонентом области контекста, в которой клиент сохраняет состояние для этого SAP после его открытия. NDIS передает этот дескриптор клиенту во всех последующих вызовах sap, если вызов NdisClRegisterSap будет успешным.

[in] Sap

Указатель на предоставленную клиентом спецификацию для открытия SAP, отформатированную как структуру типа CO_SAP.

[out] NdisSapHandle

Указатель на переменную, в которой возвращается дескриптор недавно зарегистрированного SAP, если этот вызов выполнен успешно.

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

Когда NdisClRegisterSap возвращает что-либо, отличное от NDIS_STATUS_PENDING, клиент должен выполнить внутренний вызов к егоФункция ProtocolClRegisterSapComplete. В противном случае NDIS вызывает функцию ProtocolClRegisterSapComplete клиента после завершения этой операции.

Примечания

При вызове NdisClRegisterSap клиент запрашивает уведомления о входящих вызовах в определенном SAP. NDIS перенаправит указанную информацию SAP в функцию ProtocolCmRegisterSap диспетчера вызовов для проверки. Если указанный SAP уже используется или если диспетчер вызовов не распознает указанную клиентом спецификацию в Sap, диспетчер вызовов завершается сбоем этого запроса.

Формат SAP зависит от среды и зависит от семейства адресов, поддерживаемого диспетчером вызовов, который впоследствии использует зарегистрированные SAP для маршрутизации входящих вызовов соответствующему клиенту. Диспетчер вызовов может регистрировать SAP для установленных PVCS, не связываясь с другими сетевыми компонентами в зависимости от базового носителя.

Если вызов NdisClRegisterSap выполнен успешно, клиент должен сохранить дескриптор, возвращенный в NdisSapHandle , так как это обязательный параметр для NdisClDeregisterSap. Вызывающие объект NdisClRegisterSap обычно передают указатель на переменную в области состояния, выделенной клиентом, в ProtocolSapContext, чтобы NDIS может задать для него значение NdisSapHandle , если этот вызов выполнен успешно. NDIS передает заданный ProtocolSapContext в зарегистрированные функции ProtocolCl/CoXxx клиента во всех последующих вызовах sap, пока клиент не вызовет NdisClDeregisterSap.

Обычно клиент вызывает NdisClRegisterSap из функции ProtocolAfRegisterNotify после успешного вызова NdisClOpenAddressFamilyEx. Регистрация одного или нескольких SAP позволяет клиенту получать входящие вызовы, как только диспетчер вызовов получает их по сети.

В отличие от исходящих вызовов, инициированных клиентом, клиент не вызывает NdisCoCreateVc перед вызовом NdisClRegisterSap. Для входящих вызовов диспетчер вызовов инициирует создание VC следующим образом:

  • При получении входящего вызова в зарегистрированной SAP диспетчер вызовов сначала вызывает NdisCoCreateVc, что приводит к вызову функции ProtocolCoCreateVc клиента NDIS.
  • Когда VC настроен и активирован, диспетчер вызовов вызывает NdisCmDispatchIncomingCall, что приводит к вызову клиента NDIS.Функция ProtocolClIncomingCall.

Требования

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

См. также

CO_SAP

NdisClDeregisterSap

NdisClMakeCall

NdisCmDispatchIncomingCall

NdisCoCreateVc

ProtocolClIncomingCall

ProtocolClRegisterSapComplete

ProtocolCmRegisterSap

ProtocolCoAfRegisterNotify

ProtocolCoCreateVc