version (atributo)
El atributo de interfaz [version] identifica una versión determinada entre varias versiones de una interfaz RPC. Con el atributo version, asegúrese de que solo se permiten enlazar versiones compatibles del software cliente y servidor.
version ( major-value[[. minor-value]] )
-
major-value
-
Especifica un entero corto sin signo entre cero y 65 535, ambos incluidos, que representa el número de versión principal.
-
minor-value
-
Especifica un entero corto sin signo entre cero y 65 535, ambos incluidos, que representa el número de versión secundaria. El valor de la versión secundaria es opcional. Si está presente, el valor de la versión secundaria se separa del número de versión principal por un carácter de punto (.). Si no se especifica, el valor de la versión secundaria es cero.
El compilador MIDL no admite varias versiones de una interfaz COM. Como resultado, una lista de atributos de interfaz que incluye el atributo [object] no puede incluir el atributo [version]. Para crear una nueva versión de una interfaz COM existente, use la herencia de interfaz. Una interfaz COM derivada tiene un UUID diferente, pero hereda las funciones miembro de la interfaz, los códigos de estado y los atributos de interfaz de la interfaz base.
En combinación con el valor [uuid], el valor [version] identifica de forma única la interfaz. La biblioteca en tiempo de ejecución pasa los valores [version] y [uuid] al servidor cuando el cliente llama a una función remota. Un cliente puede enlazar a un servidor para una interfaz determinada si:
- El valor [uuid] es el mismo.
- El número de versión principal es el mismo.
- El número de versión secundaria del cliente es menor o igual que el número de versión secundaria del servidor.
Se trata de su ventaja y la ventaja de los usuarios para conservar la compatibilidad ascendente entre las versiones, es decir, modificar la interfaz para que solo cambie el número de versión secundaria. Puede conservar la compatibilidad ascendente al agregar nuevos tipos de datos que no usan las funciones existentes y al agregar nuevas funciones sin cambiar la especificación de interfaz de las funciones existentes.
Cambie el número de versión principal si se aplica alguna de las condiciones siguientes:
- Si cambia un tipo de datos que usa una función existente.
- Si cambia la especificación de interfaz de una función existente (como agregar o quitar un parámetro).
- Si agrega devoluciones de llamada a las que llaman las funciones existentes.
Cambie el número de versión secundaria si se aplican todas las condiciones siguientes:
- Si agrega definiciones de tipos o constantes que no usan ninguna función o devoluciones de llamada existentes.
- Si no cambia ninguna función existente y agrega nuevas funciones a la interfaz.
- Si agrega devoluciones de llamada que no son llamadas por ninguna función existente y las nuevas devoluciones de llamada siguen las funciones existentes.
Si las modificaciones se califican como un cambio compatible hacia arriba en la interfaz, use el procedimiento siguiente.
Para modificar el archivo de interfaz (IDL)
- Agregue nuevas definiciones de constante y tipo al archivo de interfaz.
- Agregue funciones de devolución de llamada al final del archivo de interfaz.
- Agregue nuevas funciones al final del archivo de interfaz.
El atributo [version] se puede producir como máximo una vez en el encabezado de interfaz.
Cuando el atributo de versión no está presente, la interfaz tiene una versión predeterminada de 0.0.
El carácter de punto entre los números principales y secundarios es un delimitador y no representa un separador decimal. El número secundario se trata como un entero. Los ceros iniciales no son significativos. Los ceros finales son significativos.
Por ejemplo, la configuración de la versión 1.11 representa un valor principal de uno y un valor secundario de once. La versión 1.11 no representa un valor entre 1.1 y 1.2.