客户端发起的结束呼叫请求

如果客户端关闭了多个方仍连接的多点调用,则必须根据需要多次调用 NdisClDropParty ,以便从呼叫中删除除最后一方之外的所有方, (看到 从多点呼叫) 中删除群

客户端使用 NdisCloseCall 启动调用的关闭。 下图显示了通过呼叫管理器启动呼叫关闭的客户端。

diagram illustrating a client initiating the closing of a call through a call manager.

下图显示了通过 MCM 驱动程序启动调用关闭的客户端。

diagram illustrating a client initiating the closing of a call through an mcm driver.

面向连接的客户端通常在以下任一情况下调用 NdisCloseCall

客户端对 NdisCloseCall 的调用会导致 NDIS 调用调用管理器或 MCM 驱动程序的 ProtocolCmCloseCall 函数。 ProtocolCmCloseCall 必须与网络控制设备通信,以终止本地节点与远程节点之间的连接。

如果 ProtocolCmCloseCall 传递显式 CallMgrPartyContext,则终止的调用是多点调用。 呼叫管理器或 MCM 驱动程序必须与其网络硬件(根据媒体类型)执行任何必要的网络通信,才能将呼叫终止为多点呼叫。

NDIS 可以将 ProtocolCmCloseCall 传递给一个指针,该缓冲区包含客户端在调用 NdisClose 时提供的数据。 此数据可以是诊断数据,指示调用为何已关闭或信号协议所需的任何其他数据。 ProtocolCmCloseCall 必须在完成调用终止之前跨网络发送任何此类数据。 如果不支持与终止的连接并发发送数据,则调用管理器或 MCM 驱动程序应返回NDIS_STATUS_INVALID_DATA。

在 MCM 驱动程序) 的情况下,如果调用管理器) 或 NdisMCmCloseCallComplete (,ProtocolCmCloseCallCall 可以同步完成,或者更可能异步地使用 NdisCmCloseCallComplete (。 调用 Ndis (M) CmCloseCallComplete 会导致 NDIS 调用客户端的 ProtocolCloseCallComplete 函数。

然后,调用管理器或 MCM 驱动程序必须分别通过调用 NdisCmDeactivateVc 或 NdisMCmDeactivateVc 来启动用于调用的 VC 停用, (请参阅停用 VC) 。 然后,VC (客户端、调用管理器或 MCM 驱动程序的创建者) 可以选择启动删除 VC (请参阅 删除 VC) 。