注册 SAP

如果客户端接受传入调用,其 ProtocolClOpenAfCompleteEx 函数通常通过调用 NdisClRegisterSap 向调用管理器注册一个或多个 SAP。

下图显示了注册 SAP 的呼叫管理器的客户端。

说明注册 SAP 的呼叫管理器的客户端的关系图。

下图显示了注册 SAP 的 MCM 驱动程序的客户端。

显示注册 SAP 的 MCM 驱动程序的客户端的关系图。

通过调用 NdisClRegisterSap,客户端请求特定 SAP 上的传入调用的通知。 NDIS 将客户端提供的 SAP 信息转发到调用管理器或 MCM 驱动程序的 ProtocolCmRegisterSap 函数进行验证。 如果给定的 SAP 已在使用中,或者调用管理器或 MCM 驱动程序无法识别客户端提供的 SAP 规范,则调用管理器或 MCM 驱动程序会失败此请求。

ProtocolCmRegisterSap 中,调用管理器或 MCM 驱动程序可能与网络控制设备或其他特定于媒体的代理通信,以便在网络上为面向连接的客户端注册 SAP。 ProtocolCmRegisterSap 还存储表示 SAP 的 NDIS 提供的 NdisSapHandle

ProtocolCmRegisterSap 可以同步或异步完成。 若要异步完成,调用管理器的 ProtocolCmRegisterSap 函数调用 NdisCmRegisterSapComplete。 MCM 驱动程序的 ProtocolCmRegisterSap 函数调用 NdisMCmRegisterSapComplete。 调用 Ndis (M) CmRegisterSapComplete 会导致 NDIS 调用客户端的 ProtocolClRegisterSapComplete 函数。

如果客户端对 NdisClRegisterSap 的调用成功,则 NDIS 会向客户端返回表示 SAP 的 NdisSapHandle。

在呼叫管理器代表面向连接的客户端注册 SAP 后,它会通过调用 NdisCmDispatchIncomingCall 通知该客户端定向到该 SAP 的传入呼叫套餐。 MCM 驱动程序调用 NdisMCmDispatchIncomingCall (请参阅 指示传入呼叫) 。 即使 SAP 注册仍处于挂起状态,客户端也可以接收 SAP 上的传入调用;即,在调用其 ProtocolClRegisterSapComplete 函数之前。