CoNDIS TAPI 关闭

在 CoNDIS WAN 微型端口驱动程序将其 TAPI 功能枚举到应用程序后,TAPI 会话开始。 在会话中,可以打开一个或多个行,并且可以建立一个或多个调用。 在线路打开期间,可以建立许多调用,然后关闭或删除。 在会话期间,一个或多个行可以多次经历从打开到关闭的转换。 本部分介绍了微型端口驱动程序如何处理此类转换。

关闭呼叫

进程内调用可由本地节点或远程节点关闭。 调用可以在本地节点上关闭,因为具有调用句柄的最后一个应用程序已关闭句柄,或者可能是因为微型端口驱动程序的 MiniportHaltExMiniportResetEx 已调用。 如果远程节点挂起进程内调用,微型端口驱动程序必须通知上层断开调用。

如果本地节点上的应用程序关闭调用,则必须断开调用的连接。 由于应用程序调用 TAPI lineDrop 函数,调用断开连接。 此 TAPI 函数调用会导致 NDPROXY 驱动程序调用 NdisClClCloseCall 函数,并传递表示调用的 VC 的句柄。 NDIS 依次调用 CoNDIS WAN 微型端口驱动程序的 ProtocolCmCloseCall 函数。 微型端口驱动程序应将NDIS_STATUS_PENDING返回到 NDPROXY,以便微型端口驱动程序可以异步完成 NdisClClClall

微型端口驱动程序的 ProtocolCmCloseCall 必须与网络控制设备通信,以终止本地节点与远程节点之间的连接。 然后,微型端口驱动程序必须调用 NdisMCmDeactivateVc 函数,以启动用于调用的 VC 的停用。

微型端口驱动程序终止连接后,其 ProtocolCmCloseCall 可以调用 NdisMCmCloseCallComplete 函数来完成调用关闭。

如果远程节点挂起进程内调用,微型端口驱动程序会调用 NdisCmDispatchIncomingCloseCall 函数,以通知 NDISWAN 和 NDPROXY 取消传入呼叫。

关闭行

当最后一个具有打开行句柄的应用程序关闭了句柄时,将关闭行。 由于应用程序调用 TAPI lineClose 函数,导致行关闭。 此 TAPI 函数调用会导致 NDPROXY 驱动程序启动该行上所有调用的关闭,如上一部分所述。 微型端口驱动程序应删除这些调用并清理其状态。

关闭会话

会话终止可由上层或 CoNDIS WAN 微型端口驱动程序启动。 在最后一个客户端进程从更高级别的电话服务模块分离后,NDPROXY 驱动程序将收到通知,它必须终止其与每个已注册适配器的会话。 为此,NDPROXY 驱动程序调用 NdisClClCloseAddressFamily 函数并将句柄传递给 TAPI 地址系列。 NDIS 依次调用微型端口驱动程序的 ProtocolCmCloseAf 函数。 微型端口驱动程序应终止它在指定适配器上正在进行的任何相关活动,并释放任何相关资源。 调用 NdisClClCloseAddressFamily 后,客户端应将 TAPI 地址系列的句柄视为无效。

如果微型端口驱动程序在其 MiniportHaltEx 函数中卸载,则可能会发生驱动程序发起的会话终止。 通常,微型端口驱动程序将完成任何未完成的 NDPROXY 请求,并通知 NDISWAN 所有调用都已结束。 如果稍后再次重新加载微型端口驱动程序,它将经历前面所述的相同初始化过程。

如果 CoNDIS WAN 微型端口驱动程序进行了一些动态重新配置,因此需要对所有客户端和驱动程序进行完全重新初始化,则 CoNDIS WAN 微型端口驱动程序也可能启动会话终止。 例如,如果适配器的线路设备建模 (,则支持) 的线路设备数会动态更改。