TSPI 版本控制
随着时间的推移,可能会生成不同版本的 TAPI、应用程序和服务提供商。 这些新版本可以生成新的定义,例如针对新功能、数据结构中的新成员和新位字段。 因此,需要版本号来指示如何解释各种数据结构。
为使不同版本的应用程序、TAPI 本身版本以及不同供应商的服务提供商版本实现最佳互操作性,Microsoft Telephony 为应用程序提供了简单的版本协商机制。 对于每个线路设备,TAPI 和电话服务提供商需要就两个不同的版本达成一致。 第一个是基本和补充电话 SPI 的版本号,称为 TSPI 接口版本。 另一个用于提供程序特定的扩展(如果有),称为 扩展版本。 TSPI 的基本和补充功能使用的数据结构和数据类型的格式由 TSPI 版本定义,而扩展版本确定供应商特定扩展定义的数据结构的格式。
这两种类型的版本协商由两个不同的过程处理: TSPI_lineNegotiateTSPIVersion 用于协商 TSPI 接口版本, TSPI_lineNegotiateExtVersion 用于协商扩展版本。 如果不需要扩展,则可以跳过扩展版本协商。 如果这些范围在协商期间输入重叠,则服务提供商必须在协商的结果返回范围重叠部分中的值。 通常,这应该是可能的最高值。 如果范围不重叠,则双方不兼容,函数将返回错误。
协商的结果只是表明服务提供商愿意以特定的版本号运行,但不让服务提供商这样做。 例如,TAPI 可以在协商可能的版本后重新谈判以确定理想的版本。 仅当使用 TSPI_lineOpen 打开行时,才会提交 TSPI 接口版本,直到设备关闭为止。 扩展版本在调用 TSPI_lineSelectExtVersion 函数时提交,并在选择扩展版本 0 取消选择之前一直存在。
扩展版本选择可能会发生多次,包括扩展版本生效时。 由于服务提供程序已提交到扩展版本,因此其支持的版本范围缩小到确切的扩展版本。 例如,考虑通常与扩展版本 1.0 到 5.5 兼容的服务提供商。 如果在调用方尝试协商 1.0 到 5.5 范围内的版本时版本 3.0 有效,则协商将返回 3.0。
由于 TAPI 协商版本,因此你可以将服务提供商升级到接口的新版本,而无需同时升级 TAPI。 同样,TAPI 可以升级,但仍使用旧服务提供商。