Compartilhar via


Função lineSetMediaControl (tapi.h)

A função lineSetMediaControl habilita e desabilita as ações de controle no fluxo de mídia associado à linha, ao endereço ou à chamada especificados. As ações de controle de mídia podem ser disparadas pela detecção de dígitos, tipos de mídia, tons personalizados e estados de chamada especificados.

Sintaxe

LONG lineSetMediaControl(
  HLINE                             hLine,
  DWORD                             dwAddressID,
  HCALL                             hCall,
  DWORD                             dwSelect,
  LPLINEMEDIACONTROLDIGIT const     lpDigitList,
  DWORD                             dwDigitNumEntries,
  LPLINEMEDIACONTROLMEDIA const     lpMediaList,
  DWORD                             dwMediaNumEntries,
  LPLINEMEDIACONTROLTONE const      lpToneList,
  DWORD                             dwToneNumEntries,
  LPLINEMEDIACONTROLCALLSTATE const lpCallStateList,
  DWORD                             dwCallStateNumEntries
);

Parâmetros

hLine

Identificador para um dispositivo de linha aberta.

dwAddressID

Identificador de endereço no dispositivo de linha aberta especificado. Um identificador de endereço está permanentemente associado a um endereço; o identificador permanece constante entre as atualizações do sistema operacional.

hCall

Manipule para uma chamada. O aplicativo deve ser um proprietário da chamada. O estado de chamada de hCall pode ser qualquer estado.

dwSelect

Se o controle de mídia solicitado está associado a uma única chamada, é o padrão para todas as chamadas em um endereço ou é o padrão para todas as chamadas em uma linha. Esse parâmetro é um e apenas uma das constantes LINECALLSELECT_.

lpDigitList

Ponteiro para a matriz que contém os dígitos que são para disparar ações de controle de mídia, do tipo LINEMEDIACONTROLDIGIT. Sempre que um dígito na lista de dígitos é detectado, a ação de controle de mídia especificada é executada no fluxo de mídia da chamada.

Os dígitos válidos para o modo de pulso são '0' a '9'. Os dígitos válidos para o modo DTMF são '0' a '9', 'A', 'B', 'C', 'D', '*', '#'.

dwDigitNumEntries

Número de entradas no lpDigitList.

lpMediaList

Ponteiro para uma matriz com entradas do tipo LINEMEDIACONTROLMEDIA. A matriz tem entradas dwMediaNumEntries . Cada entrada contém um tipo de mídia a ser monitorado, informações específicas do tipo de mídia (como duração) e um campo de controle de mídia. Se um tipo de mídia na lista for detectado, a ação de controle de mídia correspondente será executada no fluxo de mídia da chamada.

dwMediaNumEntries

Número de entradas em lpMediaList.

lpToneList

Ponteiro para uma matriz com entradas do tipo LINEMEDIACONTROLTONE. A matriz tem entradas dwToneNumEntries . Cada entrada contém uma descrição de um tom a ser monitorado, a duração do tom e um campo de controle de mídia. Se um tom na lista for detectado, a ação de controle de mídia correspondente será executada no fluxo de mídia da chamada.

dwToneNumEntries

Número de entradas em lpToneList.

lpCallStateList

Ponteiro para uma matriz com entradas do tipo LINEMEDIACONTROLCALLSTATE. A matriz tem entradas dwCallStateNumEntries . Cada entrada contém um estado de chamada e uma ação de controle de mídia. Sempre que a chamada fornecida faz a transição para um dos estados de chamada na lista, a ação de controle de mídia correspondente é invocada.

dwCallStateNumEntries

Número de entradas em lpCallStateList.

Retornar valor

Retornará zero se a solicitação for bem-sucedida ou um número de erro negativo se ocorrer um erro. Os valores retornados possíveis são:

LINEERR_INVALADDRESSID, LINEERR_NOMEM, LINEERR_INVALCALLHANDLE, LINEERR_NOTOWNER, LINEERR_INVALCALLSELECT, LINEERR_OPERATIONUNAVAIL, LINEERR_INVALCALLSTATELIST, LINEERR_OPERATIONFAILED, LINEERR_INVALDIGITLIST, LINEERR_RESOURCEUNAVAIL, LINEERR_INVALLINEHANDLE, LINEERR_UNINITIALIZED, LINEERR_INVALMEDIALIST, LINEERR_INVALPOINTER, LINEERR_INVALTONELIST.

Comentários

A função lineSetMediaControl será considerada bem-sucedida se o controle de mídia tiver sido iniciado corretamente, não quando qualquer controle de mídia tiver entrado em vigor. O controle de mídia em andamento é alterado ou cancelado chamando essa função novamente com parâmetros diferentes ou NULLs. Se um ou mais dos parâmetros lpDigitList, lpMediaList, lpToneList e lpCallStateList forem NULL, o dígito, o tipo de mídia, o tom ou o controle de mídia disparado pelo estado correspondente serão desabilitados. Para modificar apenas uma parte dos parâmetros de controle de mídia, deixando as configurações restantes em vigor, o aplicativo deve invocar lineSetMediaControl, fornecendo os parâmetros anteriores para as partes que devem permanecer em vigor e novos parâmetros para as partes que devem ser modificadas.

Se hCall estiver selecionado e a chamada for encerrada ou o aplicativo desalocar seu identificador, o controle de mídia nessa chamada será cancelado.

Todos os aplicativos que são proprietários da chamada têm, em princípio, permissão para fazer solicitações de controle de mídia na chamada. Somente uma única solicitação de controle de mídia pode ser pendente em uma chamada em todos os aplicativos que possuem a chamada. Cada vez que lineSetMediaControl é chamado, a nova solicitação substitui qualquer controle de mídia e, em seguida, em vigor na chamada, seja definido pelo aplicativo de chamada ou por qualquer outro aplicativo proprietário.

Dependendo do provedor de serviços e de outras atividades que competem por esses recursos, o número de detecções simultâneas que podem ser feitas pode variar ao longo do tempo. Se os recursos do provedor de serviços forem supercomprometidos, o erro LINEERR_RESOURCEUNAVAIL será retornado.

Se o controle de mídia tem suporte ou não pelo provedor de serviços é uma funcionalidade de dispositivo.

Requisitos

Requisito Valor
Plataforma de Destino Windows
Cabeçalho tapi.h
Biblioteca Tapi32.lib
DLL Tapi32.dll

Confira também

LINEMEDIACONTROLCALLSTATE

LINEMEDIACONTROLDIGIT

LINEMEDIACONTROLMEDIA

LINEMEDIACONTROLTONE

Funções de serviço de linha suplementar

Visão geral da referência do TAPI 2.2