Partilhar via


Visão geral do provedor de serviços TAPI

Os aplicativos TAPI residem em seu próprio espaço de processo. As aplicações TAPI carregam o Tapi32.dll ou Tapi3.dll no seu processo, e a TAPI comunica-se com a TAPISRV através de uma interface RPC privada. Um TSP é executado no contexto da TAPISRV. Um determinado TSP pode residir em uma máquina diferente da máquina do usuário e é acessado usando um TSP remoto. O TAPISRV é implementado como um processo de serviço dentro do SVCHOST. Um MSP vive dentro do 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 pelo TAPISRV ou pela DLL TAPI.

Alguns provedores de serviços implementam operações específicas para o hardware envolvido. TAPI 2.x fornece acesso a tais operações através 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).

TSP autónomo e fluxo de controlo e informação de TSP/MSP emparelhado

O diagrama a seguir ilustra o progresso de uma chamada de entrada que envolve um TSP e um MSP.

chamada recebida com um tsp e um msp

Configuração de chamadas recebidas

  • O TSP envia uma mensagem LINE_NEWCALL para TAPISRV. O estado da chamada é LINECALLSTATE_OFFERING.
  • A TAPISRV notifica os clientes da chamada.
  • TAPI3 cria o objeto TAPI Call e, em seguida, 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. O método retorna um ponteiro IUnknown para o objeto de chamada do MSP.
  • TAPI3 agrega o objeto MSP Call no objeto TAPI Call, disponibilizando interfaces como ITStreamControl para o aplicativo. Em seguida, notifica o pedido da nova chamada.

O aplicativo pode então usar métodos como ITStream::SelectTerminal para concluir os preparativos para a conclusão da chamada.

Conclusão de Chamadas Entrantes

  • O aplicativo chama ITBasicCallControl::Answer.
  • 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 TSP/MSP, o TSP inicia os fluxos.

Comunicação TSP/MSP durante o progresso da chamada

Depois que a chamada está em andamento, o TSP e o MSP se comunicam passando buffers opacos através do TAPISRV e TAPI3.

  • O TSP envia informação ao MSP enviando a mensagem LINE_SENDMSPDATA para o TAPISRV.
  • O MSP recebe informações do TSP através do ITMSPAddress::ReceiveTSPData método. 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 a TAPI 3.
  • O TSP recebe informações do MSP através da função TSPI_lineReceiveMSPData.

O processo exato e o conteúdo da comunicação entre prestadores de serviços são específicos de um determinado conjunto de TSP/MSP.

Observação

Para chamadas de saída, o MSP normalmente tem conhecimento da 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 necessitarem trocar informações relativas a uma chamada específica, o TSP deve iniciar a comunicação.