TAPI サービス プロバイダーの概要

TAPI アプリケーションは、独自のプロセス空間に存在します。 TAPI アプリケーションは、プロセスにTapi32.dllまたはTapi3.dllを読み込み、TAPI はプライベート RPC インターフェイスを介して TAPISRV と通信します。 TSP は TAPISRV のコンテキストで実行されます。 指定された TSP は、ユーザーのコンピューター以外のコンピューターに存在し、リモート TSP を使用してアクセスできます。 TAPISRV は、SVCHOST 内のサービス プロセスとして実装されます。 MSP はアプリケーションのプロセス空間内にあり、常にローカルです。

TSP/MSP ペアは、仮想プライベート通信パスを持つと見なすことができます。 TAPISRV または TAPI DLL によって解釈されない不透明なバッファーを使用して、2 つの間で情報を送信できます。

一部のサービス プロバイダーは、関連するハードウェアに固有の操作を実装します。 TAPI 2.x では、 lineDevSpecific 関数または phoneDevSpecific 関数を使用して、このような操作にアクセスできます。 TAPI 3.x では、 プロバイダー固有のインターフェイスが公開されます。

次の図は、1 つのスタンドアロン TSP (Unimodem) と 1 つの TSP/MSP ペア (H.323) を示す、コントロールと情報のフローを示しています。

スタンドアロン tsp と、制御と情報のペア tsp/msp フロー

次の図は、TSP と MSP の両方を含む着信呼び出しの進行状況を示しています。

tsp と msp を使用した着信呼び出し

着信のセットアップ

  • TSP は、 LINE_NEWCALL メッセージを TAPISRV に送信します。 呼び出し状態がLINECALLSTATE_OFFERING。
  • TAPISRV は、呼び出しをクライアントに通知します。
  • TAPI3 は TAPI Call オブジェクトを作成し、MSP によって実装される ITMSPAddress::CreateMSPCall を呼び出します。
  • MSP は、呼び出しに必要な メディアの種類 に基づいて、MSP 呼び出しオブジェクトと既定のストリームを作成します。 MSP 呼び出しオブジェクトへの IUnknown ポインターを返します。
  • TAPI3 は MSP Call オブジェクトを TAPI Call オブジェクトに集約し、 ITStreamControl などのインターフェイスをアプリケーションで使用できるようにします。 その後、新しい呼び出しをアプリケーションに通知します。

アプリケーションでは、 ITStream::SelectTerminal などのメソッドを使用して、呼び出しの完了の準備を完了できます。

着信通話の完了

  • アプリケーションは ITBasicCallControl::Answer を呼び出します。
  • TAPI3 は lineAnswer を呼び出します。
  • TAPISERV は TSPI_lineAnswerを呼び出します。
  • TSP は通話ストリーミングを開始します。 通常、TSP は対応する MSP にメッセージを送信し、MSP はストリームを開始します。 一部の TSP/MSP 実装では、TSP によってストリームが開始されます。

通話の進行状況中の 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 セットに固有です。

Note

発信呼び出しの場合、MSP は通常、TSP の前に呼び出しについて認識します。 MSP が呼び出しについて TSP に通知される前に TSP と通信しようとすると、通信は失敗します。 MSP と TSP が特定の呼び出しに関する情報を交換する必要がある場合、TSP は通信を開始する必要があります。