Modo de passagem
Quando uma chamada está ativa no LINEBEARERMODE_PASSTHROUGH, o provedor de serviços fornece acesso direto ao hardware anexado para controle pelo aplicativo. Os aplicativos podem usar esse modo para controle direto temporário sobre modems assíncronos, acessados por meio das funções de comunicação, com a finalidade de configurar ou usar recursos especiais sem suporte do provedor de serviços, como facsimile (Classe 1, 2 e assim por diante). Esse modo de portador é compatível com o provedor de serviços UNIMODEM (Driver de Modem Universal).
Provedores de serviços que dão suporte a LINEBEARERMODE_PASSTHROUGH o indicam no membro dwBearerModes da estrutura LINEDEVCAPS . Quando LINEBEARERMODE_PASSTHROUGH for indicado, o provedor de serviços Unimodem também incluirá na área DevSpecific da estrutura LINEDEVCAPS a chave do Registro usada para acessar dados sobre o modem associado ao dispositivo de linha, no seguinte formato:
struct {
DWORD dwContents; // Set to 1 (indicates containing key).
DWORD dwKeyOffset; // Offset to key from start of this
// structure (not from start of
// LINEDEVCAPS structure).
// 8 in this case.
BYTE rgby[...]; // Place that contains null-terminated
// registry key.
}
Por exemplo:
00000001 00000008 74737953 435c6d65 ........System\C
65727275 6f43746e 6f72746e 7465536c urrentControlSet
7265535c 65636976 6c435c73 5c737361 urrentControlSet
65646f4d 30305c6d xx003030 xxxxxxxx Modem\0000.
Essa chave do Registro pode ser aberta usando a função RegOpenKey .
O modo de passagem é invocado com mais frequência usando a função lineMakeCall , definindo o bit LINEBEARERMODE_PASSTHROUGH no membro dwBearerMode da estrutura LINECALLPARAMS apontada pelo parâmetro lpCallParams . Quando isso é feito, o provedor de serviços abre a porta serial para o modem e imediatamente coloca a chamada em LINECALLSTATE_CONNECTED. Em seguida, o aplicativo pode usar a função lineGetID com a classe de dispositivo "comm/datamodem" para obter um identificador de arquivo aberto para ler e gravar na porta de comm.
O modo de passagem também pode ser invocado em resposta a uma chamada de entrada. Em geral, os aplicativos invocarão o modo de passagem enquanto a chamada estiver em LINECALLSTATE_OFFERING, antes que a chamada seja atendida. Em vez de chamar lineAnswer, o aplicativo chama lineSetCallParams, passando LINEBEARERMODE_PASSTHROUGH como o parâmetro dwBearerMode . Quando isso é feito, como acontece com lineMakeCall, a chamada é imediatamente colocada em LINECALLSTATE_CONNECTED pelo provedor de serviços e o aplicativo pode obter um identificador para a porta aberta usando lineGetID. A função lineSetCallParams pode ser chamada quando a chamada está em LINECALLSTATE_OFFERING, LINECALLSTATE_ACCEPTED ou LINECALLSTATE_CONNECTED.
O modo de passagem normalmente é encerrado chamando lineDrop no identificador de chamada obtido de lineMakeCall ou da primeira mensagem LINE_CALLSTATE , se a chamada for uma chamada de entrada. O provedor de serviços fechará a porta e restaurará o modem para seu estado padrão. O aplicativo deve chamar CloseHandle no identificador recebido de lineGetID.
O modo de passagem também pode ser encerrado chamando lineSetCallParams com o parâmetro dwBearerMode definido como LINEBEARERMODE_VOICE. Presume-se que o tipo de mídia (modo) definido por lineSetMediaMode esteja em vigor. Se LINEMEDIAMODE_DATAMODEM estiver ativo, o provedor de serviços assumirá a chamada como se fosse uma chamada de modem de dados já em andamento; se lineDrop for chamado posteriormente, o provedor de serviços emitirá os comandos de modem apropriados ou as alterações de estado da interface para remover uma chamada de dados.
Observação
Se o modo passagem for encerrado enquanto a chamada estiver em andamento, o PROVEDOR de serviços TAPI (TSP) da linha poderá restaurar as configurações de modem para seu estado padrão. Unimodem é um exemplo de um TSP que sempre restaura as configurações de modem ao encerrar o modo de passagem. Por esse motivo, o modo passagem não pode ser usado como um método para configurar o dispositivo. O modo de passagem só deve ser usado para atividades distintas que podem ser consideradas concluídas quando a Passagem é encerrada. Exemplos de atividades que podem usar o modo de passagem incluem enviar um fax ou reproduzir dados de onda/áudio por meio de um protocolo de modem proprietário.