Поделиться через


Сквозной режим

Если вызов активен в LINEBEARERMODE_PASSTHROUGH, поставщик услуг предоставляет прямой доступ к подключенному оборудованию для управления приложением. Приложения могут использовать этот режим для временного прямого управления асинхронными модемами, доступ к которым осуществляется через функции связи, для настройки или использования специальных функций, не поддерживаемых поставщиком услуг, таких как факсимиле (класс 1, 2 и т. д.). Этот режим носителя поддерживается поставщиком услуг универсального драйвера модема (UNIMODEM).

Поставщики услуг, поддерживающие LINEBEARERMODE_PASSTHROUGH указывают его в элементе dwBearerModes структуры LINEDEVCAPS . При указании LINEBEARERMODE_PASSTHROUGH поставщик услуг Unimodem также включает в область DevSpecific структуры LINEDEVCAPS раздел реестра, используемый для доступа к данным о модеме, связанном с линейным устройством, в следующем формате:

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. 
}

Пример:

    00000001 00000008 74737953 435c6d65  ........System\C
    65727275 6f43746e 6f72746e 7465536c  urrentControlSet
    7265535c 65636976 6c435c73 5c737361  urrentControlSet
    65646f4d 30305c6d xx003030 xxxxxxxx  Modem\0000.

Затем этот раздел реестра можно открыть с помощью функции RegOpenKey .

Сквозной режим чаще всего вызывается с помощью функции lineMakeCall путем задания бита LINEBEARERMODE_PASSTHROUGH в элементе dwBearerMode структуры LINECALLPARAMS , на которую указывает параметр lpCallParams . После этого поставщик услуг открывает последовательный порт для модема и сразу же выполняет вызов в LINECALLSTATE_CONNECTED. Затем приложение может использовать функцию lineGetID с классом устройства "comm/datamodem", чтобы получить открытый дескриптор файла для чтения и записи в порт comm.

Сквозной режим также можно вызвать в ответ на входящий вызов. Как правило, приложения вызывают режим сквозной передачи, пока вызов находится в LINECALLSTATE_OFFERING, до ответа на вызов. Вместо вызова lineAnswer приложение вызывает lineSetCallParams, передав LINEBEARERMODE_PASSTHROUGH в качестве параметра dwBearerMode . После этого, как и в случае с lineMakeCall, вызов немедленно помещается в LINECALLSTATE_CONNECTED поставщиком услуг, и приложение может получить дескриптор открытого порта с помощью lineGetID. Функция lineSetCallParams может вызываться, когда вызов выполняется в LINECALLSTATE_OFFERING, LINECALLSTATE_ACCEPTED или LINECALLSTATE_CONNECTED.

Режим сквозной передачи обычно завершается вызовом lineDrop для дескриптора вызова, полученного из lineMakeCall , или первого сообщения LINE_CALLSTATE , если вызов был входящим. Поставщик услуг закроет порт и восстановит состояние модема по умолчанию. Приложение должно вызвать CloseHandle для дескриптора, полученного из lineGetID.

Режим сквозной передачи также можно завершить, вызвав lineSetCallParams с параметром dwBearerMode , равным LINEBEARERMODE_VOICE. Предполагается, что действует тип мультимедиа (режим), заданный параметром lineSetMediaMode . Если LINEMEDIAMODE_DATAMODEM активна, поставщик услуг возьмет на себя вызов так, как будто это уже выполняется вызов модема данных; при последующем вызове lineDrop поставщик услуг выполнит соответствующие команды модема или изменения состояния интерфейса, чтобы отменить вызов данных.

Примечание

Если сквозной режим завершается во время вызова, поставщик услуг TAPI (TSP) для линии может восстановить параметры модема до состояния по умолчанию. Unimodem — это пример TSP, который всегда восстанавливает параметры модема при завершении сквозного режима. По этой причине в качестве метода настройки устройства нельзя использовать сквозной режим. Сквозной режим следует использовать только для отдельных действий, которые можно считать завершенными при завершении сквозной передачи. Примеры действий, которые могут использовать режим сквозной передачи, включают отправку факса или воспроизведение волновых или звуковых данных через собственный протокол модема.