version 属性
[version] 接口属性标识 RPC 接口的多个版本之间的特定版本。 使用 version 属性可确保仅允许绑定兼容版本的客户端和服务器软件。
version ( major-value[[. minor-value]] )
-
major-value
-
指定一个介于 0 和 65,535(含)之间的短无符号整数,表示主版本号。
-
minor-value
-
指定一个介于 0 和 65,535(含)之间的短无符号整数,表示次要版本号。 次要版本值是可选的。 如果存在,则次要版本值与主版本号之间用句点字符 (.) 分隔。 如果未指定,则次要版本值为零。
MIDL 编译器不支持 COM 接口的多个版本。 因此,包含 [object] 属性的接口属性列表不能包含 [version] 属性。 若要创建现有 COM 接口的新版本,请使用接口继承。 派生的 COM 接口具有不同的 UUID,但继承基接口的接口成员函数、状态代码和接口属性。
[version] 值与 [uuid] 值一起唯一标识接口。 当客户端调用远程函数时,运行时库会将 [version] 和 [uuid] 值传递给服务器。 在以下的情况下,客户端可以绑定到给定接口的服务器:
- [uuid] 值相同。
- 主版本号相同。
- 客户端的次要版本号小于或等于服务器的次要版本号。
保持各版本之间的向上兼容性对你和用户有利,也就是说,修改接口以便仅更改次要版本号。 在添加现有函数不使用的新数据类型时,以及添加新函数而不更改现有函数的接口规范时,可以保持向上兼容性。
如果以下任一条件适用,请更改主版本号:
- 如果更改现有函数使用的数据类型。
- 如果更改现有函数的接口规范, (例如添加或删除参数) 。
- 如果添加由现有函数调用的回调。
如果满足以下所有条件,请更改次要版本号:
- 如果添加任何现有函数或回调不使用的类型定义或常量。
- 如果不更改任何现有函数,并且向 接口添加新函数。
- 如果添加未由任何现有函数调用的回调,并且新回调遵循任何现有函数。
如果修改符合接口向上兼容的更改条件,请使用以下过程。
修改接口 (IDL) 文件
- 将新的常量和类型定义添加到接口文件。
- 将回调函数添加到接口文件的末尾。
- 将新函数添加到接口文件的末尾。
[version] 属性最多可以在接口标头中出现一次。
当版本属性不存在时,接口的默认版本为 0.0。
主数字和次要数字之间的句点字符是分隔符,不表示小数点。 次要数字被视为整数。 前导零不重要。 尾随零非常重要。
例如,版本设置 1.11 表示主值 1,次要值 11。 版本 1.11 不表示介于 1.1 和 1.2 之间的值。