Функция 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 зависит от среднего уровня и зависит от семейства адресов, поддерживаемого диспетчером вызовов, который впоследствии использует зарегистрированные SSP для маршрутизации входящих вызовов соответствующему клиенту. Диспетчер звонков может регистрировать 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, в результате чего 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) |