TAPI 버전 협상

시간이 지남에 따라 줄 또는 휴대폰에 대한 TAPI, 애플리케이션 및 서비스 공급자에 대해 다른 버전이 있을 수 있습니다. 새 버전은 새 기능, 데이터 구조에 대한 새 필드 등을 정의할 수 있습니다. 따라서 버전 번호는 다양한 데이터 구조를 해석하는 방법을 나타냅니다.

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

버전 협상은 두 단계로 진행됩니다. 첫 번째 단계에서는 API 버전 번호가 협상되고 디바이스에서 지원되는 공급업체별 확장과 연결된 확장 식별자를 가져옵니다. 두 번째 단계에서는 확장 버전이 협상됩니다. 애플리케이션에서 API 확장을 사용하지 않는 경우 두 번째 단계를 건너뛰고 서비스 공급자가 확장을 활성화하지 않습니다. 애플리케이션에서 확장을 사용하려고 하지만 서비스 공급자의 확장(확장 식별자)이 애플리케이션에서 인식되지 않는 경우 애플리케이션은 확장 버전에 대한 협상도 건너뛰어야 합니다. 각 공급업체에는 배포하는 각 확장 사양 집합에 대해 고유한 법적(인식) 버전 집합이 있습니다.

lineNegotiateAPIVersion 함수는 사용할 API 버전 번호를 협상하는 데 사용됩니다. 또한 줄 디바이스에서 지원하는 확장 식별자를 검색하여 지원되는 확장이 없으면 0을 반환합니다. 이 함수 호출을 통해 애플리케이션은 호환되는 API 버전 범위를 제공합니다. TAPI는 차례로 라인의 서비스 공급자와 협상하여 지원하는 API 버전 범위를 결정합니다. TAPI는 애플리케이션, DLL 및 서비스 공급자가 제공한 겹치는 버전 범위에서 버전 번호(일반적으로 반드시 가장 높은 버전 번호는 아님)를 선택합니다. 이 번호는 해당 줄의 서비스 공급자에서 사용할 수 있는 확장을 정의하는 확장 식별자와 함께 애플리케이션에 반환됩니다.

애플리케이션이 반환된 확장 식별자에 의해 정의된 확장을 사용하려는 경우 먼저 lineNegotiateExtVersion 을 호출하여 확장 버전을 협상해야 합니다. 비슷한 협상 단계에서 애플리케이션은 이미 합의된 API 버전과 지원하는 확장 버전 범위를 지정합니다. TAPI는 이 정보를 줄의 서비스 공급자에게 전달합니다. 서비스 공급자는 API 버전 및 확장 버전 범위를 자체적으로 확인하고, 해당 확장 버전 번호(있는 경우)를 선택합니다.

애플리케이션은 나중에 lineGetDevCaps를 호출할 때 버전 협상 결과에 해당하는 줄에 대한 디바이스 기능 집합을 반환합니다. 여기에는 API 버전과 일치하는 라인의 디바이스 기능과 확장 버전과 일치하는 줄의 디바이스별 기능이 포함됩니다. 애플리케이션은 줄을 열 때 이러한 버전 번호를 모두 지정해야 합니다. 이 시점에서 애플리케이션, DLL 및 서비스 공급자는 합의된 버전을 사용하기 위해 최선을 다하고 있습니다. 디바이스별 확장을 사용하지 않는 경우 확장 버전을 0으로 지정해야 합니다.

여러 애플리케이션이 동일한 줄 디바이스를 여는 환경에서 선 디바이스를 여는 첫 번째 애플리케이션은 줄을 사용하려는 모든 이후 애플리케이션의 버전을 선택합니다(서비스 공급자는 여러 버전을 동시에 지원하지 않음). 마찬가지로 여러 줄 디바이스를 여는 애플리케이션은 동일한 API 버전 번호로 모든 라인 디바이스를 더 쉽게 작동할 수 있습니다.

dwAPIVersion 또는 유사한 매개 변수를 사용하는 모든 함수는 이 매개 변수를 애플리케이션에서 지원하는 가장 높은 API 버전 또는 특정 디바이스의 lineNegotiateAPIVersion 또는 phoneNegotiateAPIVersion 함수를 사용하여 협상된 API 버전으로 설정해야 합니다. 다음 표를 가이드로 따르세요.

함수 의미
lineGetAddressCaps lineNegotiateAPIVersion에서 반환된 버전을 사용합니다.
lineGetCountry 애플리케이션에서 지원하는 가장 높은 버전을 사용합니다.
lineGetDevCaps lineNegotiateAPIVersion에서 반환된 버전을 사용합니다.
lineGetProviderList 애플리케이션에서 지원하는 가장 높은 버전을 사용합니다.
lineGetTranslateCaps 애플리케이션에서 지원하는 가장 높은 버전을 사용합니다.
lineNegotiateAPIVersion 애플리케이션에서 지원하는 가장 높은 버전을 사용합니다.
lineNegotiateExtVersion lineNegotiateAPIVersion에서 반환된 버전을 사용합니다.
lineOpen lineNegotiateAPIVersion에서 반환된 버전을 사용합니다.
lineTranslateAddress 애플리케이션에서 지원하는 가장 높은 버전을 사용합니다.
lineTranslateDialog 애플리케이션에서 지원하는 가장 높은 버전을 사용합니다.
phoneGetDevCaps phoneNegotiateAPIVersion에서 반환된 버전을 사용합니다.
phoneNegotiateAPIVersion 애플리케이션에서 지원하는 가장 높은 버전을 사용합니다.
phoneNegotiateExtVersion phoneNegotiateAPIVersion에서 반환된 버전을 사용합니다.
phoneOpen phoneNegotiateAPIVersion에서 반환된 버전을 사용합니다.

 

중요

API 버전을 협상할 때 항상 높음 및 낮은 버전 번호를 애플리케이션에서 지원할 수 있는 버전 범위로 설정합니다. 예를 들어 낮은 버전에 0x00000000 사용하거나 높은 버전에 0xFFFFFFFF 사용하지 마세요. 이러한 값은 애플리케이션이 과거와 미래의 모든 버전의 TAPI를 지원해야 하기 때문입니다.