version (attribut)
L’attribut d’interface [version] identifie une version particulière parmi plusieurs versions d’une interface RPC. Avec l’attribut de version, vous vous assurez que seules les versions compatibles des logiciels client et serveur sont autorisées à être liées.
version ( major-value[[. minor-value]] )
-
valeur majeure
-
Spécifie un entier non signé court compris entre zéro et 65 535 inclus, qui représente le numéro de version principale.
-
minor-value
-
Spécifie un entier non signé court compris entre zéro et 65 535 inclus, qui représente le numéro de version secondaire. La valeur de version mineure est facultative. Si elle est présente, la valeur de la version mineure est séparée du numéro de version principal par un caractère de point (.). Si elle n’est pas spécifiée, la valeur de version mineure est égale à zéro.
Le compilateur MIDL ne prend pas en charge plusieurs versions d’une interface COM. Par conséquent, une liste d’attributs d’interface qui inclut l’attribut [objet] ne peut pas inclure l’attribut [version]. Pour créer une nouvelle version d’une interface COM existante, utilisez l’héritage d’interface. Une interface COM dérivée a un UUID différent, mais hérite des fonctions membres de l’interface, des codes d’état et des attributs d’interface de l’interface de base.
En combinaison avec la valeur [uuid], la valeur [version] identifie de manière unique l’interface. La bibliothèque d’exécution transmet les valeurs [version] et [uuid] au serveur lorsque le client appelle une fonction distante. Un client peut être lié à un serveur pour une interface donnée si :
- La valeur [uuid] est la même.
- Le numéro de version principale est le même.
- Le numéro de version mineure du client est inférieur ou égal au numéro de version mineure du serveur.
Il s’agit de votre avantage et de l’avantage de vos utilisateurs de conserver la compatibilité ascendante entre les versions, autrement dit, de modifier l’interface afin que seul le numéro de version secondaire change. Vous pouvez conserver la compatibilité vers le haut lorsque vous ajoutez de nouveaux types de données qui ne sont pas utilisés par les fonctions existantes et lorsque vous ajoutez de nouvelles fonctions sans modifier la spécification de l’interface pour les fonctions existantes.
Modifiez le numéro de version principale si l’une des conditions suivantes s’applique :
- Si vous modifiez un type de données utilisé par une fonction existante.
- Si vous modifiez la spécification d’interface pour une fonction existante (par exemple, l’ajout ou la suppression d’un paramètre).
- Si vous ajoutez des rappels appelés par des fonctions existantes.
Modifiez le numéro de version secondaire si toutes les conditions suivantes s’appliquent :
- Si vous ajoutez des définitions de type ou des constantes qui ne sont pas utilisées par des fonctions ou rappels existants.
- Si vous ne modifiez aucune fonction existante et que vous ajoutez de nouvelles fonctions à l’interface.
- Si vous ajoutez des rappels qui ne sont pas appelés par des fonctions existantes et que les nouveaux rappels suivent toutes les fonctions existantes.
Si vos modifications se qualifient comme une modification compatible vers le haut de l’interface, utilisez la procédure suivante.
Pour modifier le fichier d’interface (IDL)
- Ajoutez de nouvelles définitions de constante et de type au fichier d’interface.
- Ajoutez des fonctions de rappel à la fin du fichier d’interface.
- Ajoutez de nouvelles fonctions à la fin du fichier d’interface.
L’attribut [version] peut se produire au plus une fois dans l’en-tête d’interface.
Lorsque l’attribut de version n’est pas présent, l’interface a une version par défaut de 0.0.
Le caractère de point entre les nombres principaux et mineurs est un délimiteur et ne représente pas de virgule décimale. Le nombre mineur est traité comme un entier. Les zéros non significatifs ne sont pas significatifs. Les zéros à la fin sont significatifs.
Par exemple, le paramètre de version 1.11 représente une valeur majeure d’une valeur et une valeur mineure de onze. La version 1.11 ne représente pas une valeur comprise entre 1.1 et 1.2.