TSPI 버전 관리

시간이 지남에 따라 다양한 버전의 TAPI, 애플리케이션 및 서비스 공급자가 생성될 수 있습니다. 이러한 새 버전은 새 기능, 데이터 구조의 새 멤버 및 새 비트 필드와 같은 새 정의를 만들 수 있습니다. 따라서 버전 번호는 다양한 데이터 구조를 해석하는 방법을 나타내는 데 필요합니다.

다양한 버전의 애플리케이션, TAPI 자체 버전 및 다양한 공급업체의 서비스 공급자 버전에 대한 최적의 상호 운용성을 허용하기 위해 Microsoft Telephony는 애플리케이션에 대한 간단한 버전 협상 메커니즘을 제공합니다. TAPI와 각 회선 디바이스에 대한 전화 통신 서비스 공급자가 동의해야 하는 두 가지 버전이 있습니다. 첫 번째는 TSPI 인터페이스 버전이라고 하는 기본 및 추가 전화 통신 SPI의 버전 번호입니다. 다른 하나는 공급자별 확장(있는 경우)을 위한 것이며 확장 버전이라고 합니다. TSPI의 기본 및 추가 기능에서 사용하는 데이터 구조 및 데이터 형식의 형식은 TSPI 버전에서 정의되며 확장 버전은 공급업체별 확장에서 정의한 데이터 구조의 형식을 결정합니다.

이러한 두 가지 유형의 버전 협상은 두 가지 절차로 처리됩니다. TSPI_lineNegotiateTSPIVersion TSPI 인터페이스 버전을 협상하는 데 사용되고 TSPI_lineNegotiateExtVersion 확장 버전을 협상하는 데 사용됩니다. 확장을 원하지 않는 경우 확장 버전 협상을 건너뛸 수 있습니다. 협상 중에 이러한 범위 입력이 겹치는 경우 서비스 공급자는 협상 결과로 범위의 겹치는 부분 내에 값을 반환해야 합니다. 일반적으로 가능한 가장 높은 값이어야 합니다. 범위가 겹치지 않으면 두 당사자는 호환되지 않으며 함수는 오류를 반환합니다.

협상 결과는 단순히 서비스 공급자가 특정 버전 번호로 작업할 의향이 있음을 나타내지만 서비스 공급자를 커밋하지 않습니다. 예를 들어 TAPI는 가능한 버전을 협상한 후 이상적인 버전을 결정하기 위해 재협상할 수 있습니다. TSPI 인터페이스 버전은 TSPI_lineOpen 사용하여 줄을 열고 디바이스를 닫을 때까지 유지되는 경우에만 커밋됩니다. 확장 버전은 TSPI_lineSelectExtVersion 함수가 호출될 때 커밋되며 확장 버전 0을 선택하여 선택 영역이 취소될 때까지 유지됩니다.

확장 버전이 적용되는 동안을 포함하여 확장 버전 선택이 여러 번 발생할 수 있습니다. 서비스 공급자는 확장 버전에 커밋되므로 지원되는 버전 범위가 정확히 해당 확장 버전으로 좁혀집니다. 예를 들어 일반적으로 확장 버전 1.0~5.5와 호환되는 서비스 공급자를 고려해 보세요. 호출자가 1.0~5.5 범위 내의 버전을 협상하려고 시도하는 동안 버전 3.0이 적용되는 경우 협상은 3.0을 반환합니다.

TAPI는 버전을 협상하므로 TAPI도 업그레이드할 필요 없이 서비스 공급자를 새 버전의 인터페이스로 업그레이드할 수 있습니다. 마찬가지로 TAPI는 업그레이드할 수 있지만 이전 서비스 공급자를 계속 사용합니다.