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를 지원해야 하기 때문입니다.