아키텍처(전화 통신 API)

다음 그림에서는 전화 통신 서비스 공급자의 일반 아키텍처와 연결된 UI DLL(사용자 인터페이스 동적 연결 라이브러리)을 보여 줍니다.

tsps 및 연결된 ui dll

서비스 공급자는 최소 두 개의 구성 요소로 구성됩니다. 서비스 공급자 DLL(그림에서 MAIN로 지정됨)입니다. TSP)는 TAPISRV 프로세스의 컨텍스트에서 실행되며, 특정 애플리케이션의 디바이스 사용과 관련된 사용자 인터페이스 요소와 관련되지 않은 서비스 공급자의 모든 작업을 수행합니다(그림에 표시되지 않은 하위 수준 구성 요소와 함께). 그러나 사용자 인터페이스 코드가 서비스 공급자에 통합되고 애플리케이션의 컨텍스트 내에서 이전 아키텍처로 인해 실행된 이전 버전의 TAPI와 달리 서비스 공급자는 이제 사용자 인터페이스 요소를 구현하는 별도의 구성 요소를 포함해야 합니다.

서비스 공급자 UI DLL은 애플리케이션이 UI를 생성하는 TAPI 함수(TUISPI_lineConfigDialog, TUISPI_lineConfigDialogEdit, TUISPI_phoneConfigDialog, TUISPI_providerConfig, TUISPI_providerInstallTUISPI_providerRemove호출할 때 TAPI에서 호출하는 함수를 내보내야 합니다. 이러한 각 함수는 TAPI의 콜백 함수에 대한 포인터로, UI DLL이 TAPISRV 프로세스에서 실행되는 서비스 공급자 DLL과 양방향(데이터 보내기 및 수신 모두)을 통신하는 데 사용할 수 있는 TUISPIDLLCALLBACK형식의 콜백 함수에 대한 포인터로 포함됩니다. 서비스 공급자가 UI가 예상되지 않는 TSPI 함수(예: hwnd 매개 변수가 없는 함수)와 함께 Unimodem Talk/Hangup 대화 상자와 같은 자발적인 UI를 생성하는 경우 UI DLL은 TUISPI_providerGenericDialog 내보내고 TUISPI_providerGenericDialogData합니다.

메모

원래 TSPI UI 생성 함수(TSPI_lineConfigDialog, TSPI_lineConfigDialogEdit, TSPI_phoneConfigDialog, TSPI_providerConfig, TSPI_providerInstallTSPI_providerRemove)는 사용되지 않으며 TAPI에서 호출되지 않습니다. 따라서 서비스 공급자 DLL에서 내보낼 필요는 없습니다. 그러나 서비스 공급자가 1.4 이전 버전에서 Windows 전화 통신과 함께 제공되는 유틸리티인 전화 통신 제어판에서 추가할 수 있는 서비스 공급자로 나열하려는 경우 TSPI_providerInstall내보내야 합니다. 전화 통신 제어판을 선택할 때 제거 단추를 사용하도록 설정하려면 TSPI_providerRemove; 설정 단추를 선택할 때 전화 통신 제어판에서 사용하도록 설정하려면 TSPI_providerConfig내보내야 합니다. 전화 통신 제어판은 서비스 공급자 TSP 파일에 이러한 함수가 있는지 확인하여 수행할 수 있는 작업을 반영하도록 사용자 인터페이스를 조정합니다.

 

서비스 공급자 DLL은 TAPISRV 프로세스에서 애플리케이션 프로세스에서 로드할 UI DLL의 이름을 가져오는 데 사용하는 TSPI_providerUIIdentify 함수를 내보내야 합니다. 데이터를 표시할 UI DLL의 요청을 수신하고 응답하기 위해 TSPI_providerGenericDialogData 함수를 내보내야 하며, TAPISRV 프로세스에 대한 TSPI_providerFreeDialogInstance 내보내서 사용자에게 UI를 제시하는 것으로 정의되지 않은 함수와 함께 자발적인 UI를 생성하기 위해 설정된 연결을 해제할 때 서비스 공급자에게 알려야 합니다. 서비스 공급자 DLL은 새 TSPI 메시지 LINE_SENDDIALOGINSTANCEDATA사용하여 UI DLL에 데이터를 단방향으로 보낼 수 있습니다.

TSPI 및 TUISPI 함수의 이름은 의도적으로 다른 것으로 정의되므로 서비스 공급자 DLL과 UI DLL은 원하는 경우 동일한 DLL 파일이 될 수 있습니다. 적절한 세분화로 인해 애플리케이션 컨텍스트에서 불필요한 메모리 사용이 발생하는 것은 아니며 현재 단일 DLL에서 구현할 수 있는 서비스 공급자의 설치 프로세스를 간소화할 수 있습니다. TAPI는 DLL이 사용되는 컨텍스트에 적합한 함수만 호출합니다.

전화 통신 서비스 공급자와 UI DLL은 모두 여러 애플리케이션 프로세스에서 동시에 UI 함수를 호출할 수 있다는 점을 염두에 두고 설계되어야 합니다. 또한 전화 통신 서비스 공급자가 실행 중인 애플리케이션 및 TAPI 서비스가 LAN의 별도 컴퓨터에 있을 수 있음을 고려해야 합니다.