Функция 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 клиента после завершения этой операции.

Remarks

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

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

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

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

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

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

Требования

   
Минимальная версия клиента Поддерживается для драйверов 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