Übersicht über TAPI-Dienstanbieter
TAPI-Anwendungen befinden sich in ihrem eigenen Prozessbereich. TAPI-Anwendungen laden die Tapi32.dll oder Tapi3.dll in ihren Prozess, und TAPI kommuniziert mit TAPISRV über eine private RPC-Schnittstelle. Ein TSP wird im Kontext von TAPISRV ausgeführt. Ein angegebener TSP kann sich auf einem anderen Computer als dem Computer des Benutzers befinden und über einen Remote-TSP aufgerufen werden. TAPISRV wird als Dienstprozess in SVCHOST implementiert. Ein MSP befindet sich im Prozessbereich der Anwendung und ist immer lokal.
Ein TSP-/MSP-Paar kann als virtueller privater Kommunikationspfad betrachtet werden. Informationen können zwischen den beiden mithilfe von nicht transparenten Puffern gesendet werden, die weder von TAPISRV noch von der TAPI-DLL interpretiert werden.
Einige Dienstanbieter implementieren Vorgänge, die spezifisch für die betroffene Hardware sind. TAPI 2.x ermöglicht den Zugriff auf solche Vorgänge über die Funktion lineDevSpecific oder phoneDevSpecific. TAPI 3.x macht anbieterspezifische Schnittstellen verfügbar.
Das folgende Diagramm veranschaulicht den Fluss von Steuerelementen und Informationen mit einem eigenständigen TSP (Unimodem) und einem TSP-/MSP-Paar (H.323).

Das folgende Diagramm veranschaulicht den Fortschritt eines eingehenden Anrufs, der sowohl einen TSP als auch einen MSP umfasst.

Setup für eingehende Anrufe
- Der TSP sendet eine LINE _ NEWCALL-Nachricht an TAPISRV. Der Aufrufstatus lautet LINECALLSTATE _ OFFERING.
- TAPISRV benachrichtigt Clients über den Aufruf.
- TAPI3 erstellt das TAPI Call-Objekt und ruft dann ITMSPAddress::CreateMSPCallauf, das vom MSP implementiert wird.
- Der MSP erstellt ein MSP-Aufrufobjekt und Standardstreams basierend auf den für den Aufruf erforderlichen Medientypen. Sie gibt einen IUnknown-Zeiger auf das MSP-Aufrufobjekt zurück.
- TAPI3 aggregiert das MSP-Aufrufobjekt in das TAPI Call-Objekt und macht Schnittstellen wie ITStreamControl für die Anwendung verfügbar. Anschließend wird die Anwendung über den neuen Aufruf benachrichtigt.
Die Anwendung kann dann Methoden wie ITStream::SelectTerminal verwenden, um die Vorbereitungen für die Beendigung des Aufrufs abzuschließen.
Abschluss des eingehenden Anrufs
- Die Anwendung ruft ITBasicCallControl::Answerauf.
- TAPI3 ruft lineAnswer auf.
- TAPISERV ruft TSPI _ lineAnswer auf.
- Der TSP initiiert das Aufrufstreaming. In der Regel sendet der TSP eine Nachricht an den entsprechenden MSP, und der MSP startet die Streams. In einigen TSP-/MSP-Implementierungen startet der TSP die Streams.
TSP/MSP-Kommunikation während des Anruffortschritts
Nachdem der Aufruf ausgeführt wird, kommunizieren der TSP und der MSP, indem sie nicht transparente Puffer über TAPISRV und TAPI3 übergeben.
- Der TSP sendet Informationen an den MSP, indem er die LINE _ SENDMSPDATA-Nachricht an TAPISRV sendet.
- Der MSP empfängt Informationen vom TSP über die ITMSPAddress::ReceiveTSPData-Methode. Wenn die Daten mit einem MSP-Aufrufobjekt verknüpft sind, wird ein Schnittstellenzeiger auf das MSP-Aufrufobjekt als Parameter dieser Methode bereitgestellt.
- Der MSP sendet Informationen an den TSP, indem er ein _ MSP-TSP _ DATA-Ereignis an TAPI 3 sendet.
- Der TSP empfängt Informationen vom MSP über die _ TSPI-Funktion lineReceiveMSPData.
Der genaue Prozess und inhalt der Kommunikation zwischen Dienstanbietern ist spezifisch für einen bestimmten TSP/MSP-Satz.
Hinweis
Bei ausgehenden Aufrufen kennt der MSP in der Regel den Anruf vor dem TSP. Wenn der MSP versucht, mit dem TSP zu kommunizieren, bevor der TSP über einen Aufruf informiert wird, schlägt die Kommunikation fehl. Wenn der MSP und der TSP Informationen zu einem bestimmten Aufruf austauschen müssen, sollte der TSP die Kommunikation initiieren.