Panoramica del provider di servizi TAPI
Le applicazioni TAPI risiedono nello spazio di elaborazione personalizzato. Le applicazioni TAPI caricano l'Tapi32.dll o Tapi3.dll nel processo e TAPI comunica con TAPISRV tramite un'interfaccia RPC privata. Un TSP viene eseguito nel contesto di TAPISRV. Un TSP specificato può risiedere in un computer diverso dal computer dell'utente ed è accessibile usando un TSP remoto. TAPISRV viene implementato come processo di servizio all'interno di SVCHOST. Un MSP si trova all'interno dello spazio di elaborazione dell'applicazione ed è sempre locale.
Una coppia TSP/MSP può essere considerata come avere un percorso di comunicazione privato virtuale. Le informazioni possono essere inviate tra i due buffer opachi che non vengono interpretati da TAPISRV o dalla DLL TAPI.
Alcuni provider di servizi implementano operazioni specifiche dell'hardware coinvolto. TAPI 2.x fornisce l'accesso a tali operazioni tramite la funzione lineDevSpecific o phoneDevSpecific . TAPI 3.x espone interfacce specifiche del provider.
Il diagramma seguente illustra il flusso di controlli e informazioni, che mostra un TSP autonomo (Unimodem) e una coppia TSP/MSP (H.323).
Il diagramma seguente illustra lo stato di avanzamento di una chiamata in ingresso che implica sia un TSP che un MSP.
Installazione di chiamate in ingresso
- Il TSP invia un messaggio di LINE_NEWCALL a TAPISRV. Lo stato della chiamata è LINECALLSTATE_OFFERING.
- TAPISRV notifica ai client della chiamata.
- TAPI3 crea l'oggetto CALL TAPI, quindi chiama ITMSPAddress::CreateMSPCall, implementato da MSP.
- Msp crea un oggetto Call MSP e flussi predefiniti in base ai tipi di supporti necessari per la chiamata. Restituisce un puntatore IUnknown all'oggetto chiamata MSP.
- TAPI3 aggrega l'oggetto CALL MSP nell'oggetto CALL TAPI, rendendo disponibili interfacce come ITStreamControl per l'applicazione. Invia quindi una notifica all'applicazione della nuova chiamata.
L'applicazione può quindi usare metodi come ITStream::SelectTerminal per completare le operazioni di preparazione per il completamento delle chiamate.
Completamento chiamata in ingresso
- L'applicazione chiama ITBasicCallControl::Answer.
- TAPI3 chiama lineAnswer.
- TAPISERV chiama TSPI_lineAnswer.
- Il TSP avvia lo streaming di chiamate. In genere, il provider di servizi di rete invia un messaggio al corrispondente MSP e l'MSP avvia i flussi. In alcune implementazioni TSP/MSP, il TSP avvia i flussi.
Comunicazione TSP/MSP durante lo stato di avanzamento della chiamata
Dopo che la chiamata è in corso, il TSP e l'MSP comunicano passando buffer opachi tramite TAPISRV e TAPI3.
- Il TSP invia informazioni all'MSP inviando il messaggio di LINE_SENDMSPDATA a TAPISRV.
- L'MSP riceve informazioni dal TSP tramite il metodo ITMSPAddress::ReceiveTSPData . Se i dati sono correlati a un oggetto chiamata MSP, viene fornito un puntatore dell'interfaccia all'oggetto chiamata MSP come parametro di tale metodo.
- L'MSP invia informazioni al TSP inviando un evento MSP_TSP_DATA a TAPI 3.
- Il TSP riceve informazioni dall'MSP tramite la funzione di TSPI_lineReceiveMSPData .
Il processo esatto e il contenuto della comunicazione tra provider di servizi è specifico per un determinato set TSP/MSP.
Nota
Per le chiamate in uscita, l'MSP conosce in genere la chiamata prima del TSP. Se l'MSP tenta di comunicare con il TSP prima che il TSP venga informato su una chiamata, la comunicazione avrà esito negativo. Quando l'MSP e il TSP devono scambiare informazioni relative a una chiamata specifica, il TSP deve avviare la comunicazione.