Visão geral do provedor de serviços TAPI
Os aplicativos TAPI residem em seu próprio espaço de processo. Os aplicativos TAPI carregam o Tapi32.dll ou Tapi3.dll em seu processo, e o TAPI se comunica com TAPISRV por meio de uma interface RPC privada. Um TSP é executado no contexto de TAPISRV. Um determinado TSP pode residir em um computador diferente do computador do usuário e é acessado usando um TSP remoto. TAPISRV é implementado como um processo de serviço no SVCHOST. Um MSP reside no espaço de processo do aplicativo e é sempre local.
Um par TSP/MSP pode ser considerado como tendo um caminho de comunicação virtual privada. As informações podem ser enviadas entre os dois usando buffers opacos que não são interpretados por TAPISRV ou pela DLL tapi.
Alguns provedores de serviços implementam operações específicas para o hardware envolvido. O TAPI 2.x fornece acesso a essas operações por meio da função lineDevSpecific ou phoneDevSpecific . O TAPI 3.x expõe interfaces específicas do provedor.
O diagrama a seguir ilustra o fluxo de controles e informações, mostrando um TSP autônomo (Unimodem) e um par TSP/MSP (H.323).
O diagrama a seguir ilustra o progresso de uma chamada de entrada que envolve um TSP e um MSP.
Configuração de chamada de entrada
- O TSP envia uma mensagem de LINE_NEWCALL para TAPISRV. O estado da chamada é LINECALLSTATE_OFFERING.
- TAPISRV notifica os clientes da chamada.
- O TAPI3 cria o objeto TapI Call e chama ITMSPAddress::CreateMSPCall, que é implementado pelo MSP.
- O MSP cria um objeto msp call e fluxos padrão com base nos tipos de mídia necessários para a chamada. Ele retorna um ponteiro IUnknown para o objeto de chamada MSP.
- O TAPI3 agrega o objeto MSP Call ao objeto TAPI Call, disponibilizando interfaces como ITStreamControl para o aplicativo. Em seguida, ele notifica o aplicativo da nova chamada.
Em seguida, o aplicativo pode usar métodos como ITStream::SelectTerminal para concluir os preparativos para a conclusão da chamada.
Conclusão de chamada de entrada
- O aplicativo chama ITBasicCallControl::Answer.
- O TAPI3 chama lineAnswer.
- TAPISERV chama TSPI_lineAnswer.
- O TSP inicia o streaming de chamadas. Normalmente, o TSP envia uma mensagem para o MSP correspondente e o MSP inicia os fluxos. Em algumas implementações de TSP/MSP, o TSP inicia os fluxos.
Comunicação TSP/MSP durante o progresso da chamada
Depois que a chamada estiver em andamento, o TSP e o MSP se comunicam passando buffers opacos por meio de TAPISRV e TAPI3.
- O TSP envia informações para o MSP enviando a mensagem LINE_SENDMSPDATA para TAPISRV.
- O MSP recebe informações do TSP por meio do método ITMSPAddress::ReceiveTSPData . Se os dados estiverem relacionados a um objeto de chamada MSP, um ponteiro de interface para o objeto de chamada MSP será fornecido como um parâmetro desse método.
- O MSP envia informações para o TSP enviando um evento MSP_TSP_DATA para o TAPI 3.
- O TSP recebe informações do MSP por meio da função TSPI_lineReceiveMSPData .
O processo exato e o conteúdo da comunicação entre provedores de serviços são específicos para um determinado conjunto TSP/MSP.
Observação
Para chamadas de saída, o MSP normalmente sabe sobre a chamada antes do TSP. Se o MSP tentar se comunicar com o TSP antes que o TSP seja informado sobre uma chamada, a comunicação falhará. Quando o MSP e o TSP precisam trocar informações sobre uma chamada específica, o TSP deve iniciar a comunicação.