将参与方添加到多点呼叫

客户端请求使用 NdisClAddParty 将参与方添加到多点调用。 客户端只能将参与方添加到现有的多点调用中,即客户端为其提供了 ProtocolPartyContext 的调用 NdisClMakeCall (请参阅 发出呼叫) 。

下图显示了调用管理器的客户端请求将一方添加到多点调用。

显示请求将一方添加到多点调用的呼叫管理器的客户端的关系图。

下图显示了请求将参与方添加到多点调用的 MCM 驱动程序的客户端。

描述 MCM 驱动程序客户端的示意图,该客户端请求将一方添加到多点调用。

在调用 NdisClAddParty 之前,客户端必须为要添加的参与方分配并初始化其上下文区域。 客户端在调用 NdisClAddParty 时,通常会将指向此类上下文区域的指针(如 ProtocolPartyContext)和指向该上下文区域中变量的指针作为 NdisClAddPartyHandle 参数。

除了 NdisVcHandleProtocolPartyContext 外,客户端还会将调用参数 (缓冲 CO_CALL_PARAMETERS 结构) 传递给 NdisClAddParty。 基础网络媒体确定客户端是否可以在多点 VC 上指定每方流量参数。

调用 NdisClAddParty 会导致 NDIS 将此请求转发到客户端共享给定 NdisVcHandle 的调用管理器或 MCM 驱动程序的 ProtocolCmAddParty 函数。 NDIS 将以下内容传递给 ProtocolCmAddParty

  • 一个 CallMgrVcContext,指示调用的 VC。

  • 指向CO_CALL_PARAMETERS结构的指针,该结构包含客户端传递给 NdisClAddParty 的调用参数。

  • 标识要添加的参与方的 NdisPartyHandle

ProtocolCmAddParty 分配并初始化要添加到调用的参与方所需的任何动态资源。 在 ProtocolCmAddParty 中,呼叫管理器或 MCM 驱动程序会根据需要与网络控制设备或其他媒体特定的代理进行通信,以将指定的一方添加到多点调用。

如果客户端传入的调用参数与已为多点 VC 建立的参数不匹配,则调用管理器或 MCM 驱动程序可以,例如:

  • 如果基础网络媒体支持多点 VC 上的此功能,请设置每方流量参数。

  • 将客户端提供的流量参数重置为最初为 VC 建立的流量参数。

  • 更改 VC 及其上当前连接的各方的调用参数。

  • 客户端尝试添加参与方失败。

对于调用管理器,ProtocolCmAddParty 可以通过 NdisCmAddPartyComplete 以同步方式完成,或者更可能的是异步完成,对于 MCM 驱动程序,则使用 NdisMCmAddPartyComplete。 无论调用管理器或 MCM 驱动程序是同步还是异步完成操作,它都会将缓冲调用参数传递给 NDIS。

调用 Ndis (M) CmAddPartyComplete 会导致 NDIS 调用客户端的 ProtocolClAddPartyComplete 函数。 如果客户端添加参与方的请求成功,并且信号协议允许调用管理器或 MCM 驱动程序修改调用参数, 则 ProtocolClAddPartyComplete 应在缓冲CO_CALL_PARAMETERS结构中测试CALL_PARAMETERS_CHANGED标志,以确定是否修改了调用参数。 信号协议确定客户端在发现对CO_CALL_PARAMETERS不可接受的修改时可以执行的操作。 通常,在本例中,客户端调用 NdisClDropParty (请参阅 从多点调用) 中删除参与方