TAPI 服务提供商概述

TAPI 应用程序驻留在其自己的进程空间中。 TAPI 应用程序将Tapi32.dll或Tapi3.dll加载到其进程中,TAPI 通过专用 RPC 接口与 TAPISRV 通信。 TSP 在 TAPISRV 的上下文中运行。 给定的 TSP 可能驻留在用户计算机以外的计算机上,并使用远程 TSP 进行访问。 TAPISRV 在 SVCHOST 中作为服务进程实现。 MSP 位于应用程序的进程空间内,并且始终是本地的。

TSP/MSP 配对可以被视为具有虚拟专用通信路径。 可以使用 TAPISRV 或 TAPI DLL 不解释的不透明缓冲区在两者之间发送信息。

某些服务提供商实现特定于硬件的操作。 TAPI 2.x 通过 lineDevSpecificphoneDevSpecific 函数提供对此类操作的访问。 TAPI 3.x 公开 特定于提供程序的接口

下图演示了控件和信息流,其中显示了一个独立 TSP (Unimodem) 和一个 TSP/MSP 配对 (H.323) 。

stand-alone tsp and paired tsp/msp flow of control and information

下图演示了涉及 TSP 和 MSP 的传入调用的进度。

incoming call with a tsp and an msp

传入呼叫设置

  • TSP 将 LINE_NEWCALL 消息发送到 TAPISRV。 调用状态LINECALLSTATE_OFFERING。
  • TAPISRV 通知客户端呼叫。
  • TAPI3 创建 TAPI 调用对象,然后调用 由 MSP 实现的 ITMSPAddress::CreateMSPCall
  • MSP 基于调用所需的 媒体类型 创建 MSP Call 对象和默认流。 它返回指向 MSP 调用对象的 IUnknown 指针。
  • TAPI3 将 MSP Call 对象聚合到 TAPI 调用对象中,使 ITStreamControl 等接口可供应用程序使用。 然后,它会通知新调用的应用程序。

然后,应用程序可以使用 ITStream::SelectTerminal 等方法完成调用完成准备工作。

传入呼叫完成

调用过程中的 TSP/MSP 通信

调用正在进行后,TSP 和 MSP 通过 TAPISRV 和 TAPI3 传递不透明缓冲区进行通信。

  • TSP 通过将 LINE_SENDMSPDATA 消息发送到 TAPISRV,将信息发送到 MSP。
  • MSP 通过 ITMSPAddress::ReceiveTSPData 方法从 TSP 接收信息。 如果数据与 MSP 调用对象相关,则会将指向 MSP 调用对象的接口指针作为该方法的参数提供。
  • MSP 通过将MSP_TSP_DATA事件发送到 TAPI 3,将信息发送到 TSP。
  • TSP 通过 TSPI_lineReceiveMSPData 函数从 MSP 接收信息。

服务提供商之间的通信确切过程和内容特定于给定的 TSP/MSP 集。

注意

对于传出呼叫,MSP 通常知道 TSP 之前的呼叫。 如果在通知 TSP 调用之前,MSP 尝试与 TSP 通信,则通信将失败。 当 MSP 和 TSP 需要交换有关特定调用的信息时,TSP 应启动通信。