Регистрация SAP
Если клиент принимает входящие вызовы, его функция ProtocolClOpenAfCompleteEx обычно регистрирует одну или несколько sap в диспетчере вызовов путем вызова NdisClRegisterSap.
На следующем рисунке показан клиент диспетчера вызовов, регистрирующий SAP.
На следующем рисунке показан клиент драйвера MCM, регистрирующий SAP.
При вызове NdisClRegisterSap клиент запрашивает уведомления о входящих вызовах определенного SAP. NDIS пересылает сведения SAP, предоставленные клиентом, функции ProtocolCmRegisterSap диспетчера вызовов или драйвера MCM для проверки. Если данный SAP уже используется или диспетчер вызовов или драйвер MCM не распознает спецификацию SAP, предоставленную клиентом, диспетчер вызовов или драйвер MCM не сможет выполнить этот запрос.
В ProtocolCmRegisterSap диспетчер вызовов или драйвер MCM может взаимодействовать с устройствами управления сетью или другими агентами мультимедиа для регистрации SAP в сети для клиента, ориентированного на подключение. ProtocolCmRegisterSap также хранит предоставленный NDISSapHandle , представляющий SAP.
ProtocolCmRegisterSap может выполняться синхронно или асинхронно. Для асинхронного выполнения функция ProtocolCmRegisterSap диспетчера вызовов вызывает NdisCmRegisterSapComplete. Функция ProtocolCmRegisterSap драйвера MCM вызывает NdisMCmRegisterSapComplete. Вызов Ndis(M)CmRegisterSapComplete вызывает функцию ProtocolClRegisterSapComplete клиента.
Если вызов клиента к NdisClRegisterSap выполнен успешно, NDIS возвращает клиенту NdisSapHandle, представляющий SAP.
После того как диспетчер вызовов регистрирует SAP от имени клиента, ориентированного на подключение, он уведомляет этого клиента о входящем предложении вызова, направленном на этот SAP, путем вызова NdisCmDispatchIncomingCall. Драйвер MCM вызывает NdisMCmDispatchIncomingCall (см. раздел Указание входящего вызова). Клиент может принимать входящие вызовы в SAP, даже если регистрация SAP все еще находится в состоянии ожидания; то есть до вызова функции ProtocolClRegisterSapComplete .