통과 모드
LINEBEARERMODE_PASSTHROUGH 호출이 활성화되면 서비스 공급자는 애플리케이션에서 제어하기 위해 연결된 하드웨어에 직접 액세스할 수 있도록 합니다. 애플리케이션은 facsimile(클래스 1, 2 등)과 같이 서비스 공급자가 지원하지 않는 특수 기능을 구성하거나 사용하기 위해 통신 함수를 통해 액세스되는 비동기 모뎀을 일시적으로 직접 제어하는 데 이 모드를 사용할 수 있습니다. 이 전달자 모드는 UNIMODEM(유니버설 모뎀 드라이버) 서비스 공급자에서 지원됩니다.
LINEBEARERMODE_PASSTHROUGH 지원하는 서비스 공급자는 LINEDEVCAPS 구조체의 dwBearerModes 멤버에 이를 나타냅니다. LINEBEARERMODE_PASSTHROUGH 표시되면 Unimodem 서비스 공급자는 LINEEVCAPS 구조의 DevSpecific 영역에 다음 형식으로 라인 디바이스와 연결된 모뎀에 대한 데이터에 액세스하는 데 사용되는 레지스트리 키를 포함합니다.
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 함수를 사용하여 이 레지스트리 키를 열 수 있습니다.
통과 모드는 lpCallParams 매개 변수가 가리키는 LINECALLPARAMS 구조체의 dwBearerMode 멤버에서 LINEBEARERMODE_PASSTHROUGH 비트를 설정하여 lineMakeCall 함수를 사용하여 가장 자주 호출됩니다. 이 작업이 완료되면 서비스 공급자는 모뎀에 대한 직렬 포트를 열고 즉시 호출을 LINECALLSTATE_CONNECTED. 그런 다음 애플리케이션은 lineGetID 함수를 디바이스 클래스 "comm/datamodem"과 함께 사용하여 comm 포트에서 읽고 쓸 열린 파일 핸들을 가져올 수 있습니다.
들어오는 호출에 대한 응답으로 통과 모드를 호출할 수도 있습니다. 일반적으로 호출이 응답되기 전에 애플리케이션은 호출이 LINECALLSTATE_OFFERING 동안 통과 모드를 호출합니다. 애플리케이션은 lineAnswer를 호출하는 대신 lineSetCallParams를 호출하고 LINEBEARERMODE_PASSTHROUGHdwBearerMode 매개 변수로 전달합니다. 이 작업이 완료되면 lineMakeCall과 마찬가지로 호출이 서비스 공급자에 의해 즉시 LINECALLSTATE_CONNECTED 배치되고 애플리케이션은 lineGetID를 사용하여 열린 포트에 대한 핸들을 가져올 수 있습니다. 호출이 LINECALLSTATE_OFFERING,LINECALLSTATE_ACCEPTED또는 LINECALLSTATE_CONNECTED 있을 때 lineSetCallParams 함수를 호출할 수 있습니다.
전달 모드는 일반적으로 lineMakeCall 또는 첫 번째 LINE_CALLSTATE 메시지에서 가져온 호출 핸들에서 lineDrop을 호출하여 종료됩니다(호출이 수신 호출인 경우). 서비스 공급자는 포트를 닫고 모뎀을 기본 상태로 복원합니다. 애플리케이션은 lineGetID에서 받은 핸들에서 CloseHandle을 호출해야 합니다.
dwBearerMode 매개 변수가 LINEBEARERMODE_VOICE 설정된 lineSetCallParams를 호출하여 통과 모드를 종료할 수도 있습니다. lineSetMediaMode로 설정된 미디어 유형(모드)은 적용된 것으로 추정됩니다. LINEMEDIAMODE_DATAMODEM 활성 상태이면 서비스 공급자는 이미 진행 중인 데이터 모뎀 호출인 것처럼 호출을 인수합니다. lineDrop이 이후에 호출되면 서비스 공급자는 적절한 모뎀 명령 또는 인터페이스 상태 변경을 실행하여 데이터 호출을 삭제합니다.
참고
호출이 진행되는 동안 통과 모드가 종료되면 줄의 TAPI 서비스 공급자(TSP)가 모뎀 설정을 기본 상태로 복원할 수 있습니다. Unimodem은 통과 모드를 종료할 때 항상 모뎀 설정을 복원하는 TSP의 예입니다. 이러한 이유로 통과 모드는 디바이스를 구성하는 방법으로 사용할 수 없습니다. 통과 모드는 통과가 종료될 때 완료된 것으로 간주될 수 있는 고유한 활동에만 사용해야 합니다. 통과 모드를 사용할 수 있는 활동의 예로는 팩스를 보내거나 독점 모뎀 프로토콜을 통해 웨이브/오디오 데이터를 재생하는 것이 있습니다.