Compartilhar via


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 não compatíveis com o provedor de serviços, como fac-símile (Classe 1, 2 e assim por diante). Esse modo de portador tem suporte do provedor de serviços UNIMODEM (Universal Modem Driver).

Os provedores de serviço que dão suporte a LINEBEARERMODE_PASSTHROUGH o indicam no membro dwBearerModes da estrutura deLINEDEVCAPS. 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çãoRegOpenKey.

O modo de passagem é invocado com mais frequência usando a função lineMakeCall, definindo o bit LINEBEARERMODE_PASSTHROUGH no membro dwBearerMode da estruturaLINECALLPARAMS apontada pelo parâmetro lpCallParams. Quando isso for concluído, o provedor de serviços abrirá a porta serial para o modem e colocará imediatamente 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 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_ACCEPTEDou LINECALLSTATE_CONNECTED.

O modo de passagem normalmente é encerrado chamando lineDrop no identificador de chamada obtido de lineMakeCall ou a primeira mensagem LINE_CALLSTATE, se a chamada fosse 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.

Nota

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.