TAPI 應用程式位於自己的進程空間中。 TAPI 應用程式會將 Tapi32.dll 或 Tapi3.dll 載入其進程,而TAPI會透過私人 RPC 介面與 TAPISRV 通訊。 TSP 會在 TAPISRV 的環境中執行。 指定的 TSP 可能位於用戶電腦以外的電腦上,並使用遠端 TSP 存取。 TAPISRV 是在 SVCHOST 中實作的服務程序。 MSP 位於應用程式的進程空間內,並且始終是本機的。
TSP/MSP 配對可視為具有虛擬私人通訊路徑。 您可以使用 TAPISRV 或 TAPI DLL 未解譯的不透明緩衝區,在兩者之間傳送資訊。
某些服務提供者會實作與硬體相關的特定作業。 TAPI 2.x 可透過 lineDevSpecific 或 phoneDevSpecific 函式來存取這類作業。 TAPI 3.x 會公開 提供者特定的介面。
下圖說明控件和資訊的流程,其中顯示一個獨立 TSP (Unimodem) 和一個 TSP/MSP 配對 (H.323)。
下圖說明涉及 TSP 和 MSP 的連入呼叫進度。
來電設定
- TSP 會將 LINE_NEWCALL 訊息傳送至 TAPISRV。 呼叫狀態 是 LINECALLSTATE_OFFERING。
- TAPISRV 會通知用戶端有呼叫。
- TAPI3 會建立TAPI Call對象,然後呼叫由 MSP 實作 的 ITMSPAddress::CreateMSPCall。
- MSP 會根據呼叫所需的 媒體類型,建立 MSP Call 物件和預設數據流。 它會傳回 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 透過向 TAPI 3 傳送 MSP_TSP_DATA 事件,將資訊傳送至 TSP。
- TSP 會透過 TSPI_lineReceiveMSPData 函式從 MSP 接收資訊。
服務提供者之間的確切程式和通訊內容是特定 TSP/MSP 集合特有的。
注意
對於外撥電話,MSP 通常會比 TSP 更早知道有這通電話。 如果 MSP 嘗試在通知 TSP 呼叫之前與 TSP 通訊,則通訊將會失敗。 當 MSP 和 TSP 需要交換有關特定呼叫的資訊時,TSP 應該起始通訊。