传入的结束呼叫请求

当远程客户端关闭呼叫时,本地调用管理器或 MCM 驱动程序必须向本地客户端指示此传入请求。 为了指示此类请求,调用管理器调用 NdisCmDispatchIncomingCloseCall ,并将 CloseStatus 设置为 NDIS_STATUS_SUCCESS (请参阅下图) 。

说明通过呼叫管理器关闭呼叫的传入请求的关系图。

MCM 驱动程序调用 NdisMCmDispatchIncomingCloseCall 以指示传入请求关闭呼叫 (请参阅下图) 。

说明通过 MCM 驱动程序关闭呼叫的传入请求的关系图。

呼叫管理器或 MCM 驱动程序还可以调用 Ndis (M) CmDispatchIncomingCloseCall

  • 如果确定面向连接的客户端正在请求调用参数中不可接受的更改,则从其 ProtocolCmIncomingCallComplete 函数中,以响应先前由调用管理器或 MCM 驱动程序指示的传入调用 (请参阅传入 请求以更改调用参数) 。

  • 如果异常网络状况迫使呼叫管理器断开活动呼叫。

调用 Ndis (M) CmDispatchIncomingCloseCall 会导致 NDIS 在该连接上调用面向连接的客户端的 ProtocolClIncomingCloseCall 函数。 ProtocolClIncomingCloseCall 应执行任何协议确定的操作,例如通知其自己的客户端或客户端连接中断。 如果要关闭的调用是由客户端创建的多点 VC, 则 ProtocolClIncomingCloseCall 必须调用 NdisClDropParty 一次或多次,直到只有一方保留在 VC 上 (请参阅 从多点调用) 中删除参与方

然后,如果 VC 是由客户端创建的多点 VC,则 ProtocolClIncomingCloseCall 必须调用 NdisClClCloseCall (,并具有 VC 上最后一方句柄,) 确认客户端不再尝试发送或期望接收此特定 VC 上的数据。 如果调用管理器或 MCM 驱动程序创建了此 VC, 则 ProtocolClIncomingCloseCall 应在调用 NdisClCloseCall 后返回控制权。 调用管理器或 MCM 驱动程序还必须停用 VC (请参阅 停用 VC) 。

如果客户端最初为传出呼叫创建了此 VC,并且 CloseStatus NDIS_STATUS_SUCCESS, 则 ProtocolClIncomingCloseCall 可以选择使用 NdisCoDeleteVc (请参阅 删除 VC) 或为另一个调用重复使用 VC。 如果未NDIS_STATUS_SUCCESS CloseStatus则 ProtocolClIncomingCloseCall 必须调用 NdisCoDeleteVc

如果呼叫管理器或 MCM 驱动程序最初为传入呼叫创建了此 VC,则调用管理器或 MCM 驱动程序可以选择通过分别调用 NdisCoDeleteVcNdisMCmDeleteVc来删除 VC