将参与方添加到多点呼叫

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

下图显示了请求将参与方添加到多点呼叫的呼叫管理器的客户端。

diagram illustrating a client of a call manager requesting to add a party to multipoint call.

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

diagram illustrating a client of an mcm driver requesting to add a party to multipoint call.

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

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

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

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

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

  • 一个 NdisPartyHandle ,用于标识要添加的参与方。

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

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

  • 如果基础网络介质在多点 VM 上支持此功能,请设置每方流量参数。

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

  • 更改 VC 的调用参数,以及当前连接的每一方。

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

在调用管理器或 NdisMCmAddPartyComplete 的情况下,ProtocolCmAddPartyParty 可以同步完成,或者更可能使用 NdisCmAddPartyComplete 异步完成。 无论调用管理器还是 MCM 驱动程序同步或异步完成操作,它都会将缓冲调用参数传递给 NDIS。

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