Partager via


VerifyVersionInfoA, fonction (winbase.h)

Compare un ensemble d’exigences de version du système d’exploitation aux valeurs correspondantes pour la version en cours d’exécution du système. Cette fonction est soumise à un comportement basé sur un manifeste. Pour plus d’informations, consultez la section Remarques.

Remarque : cette fonction a été déconseillée pour Windows 10. Pour plus d’informations, consultez cibler vos applications pour Windows.

Syntaxe

BOOL VerifyVersionInfoA(
  [in] LPOSVERSIONINFOEXA lpVersionInformation,
  [in] DWORD              dwTypeMask,
  [in] DWORDLONG          dwlConditionMask
);

Paramètres

[in] lpVersionInformation

Pointeur vers une structure OSVERSIONINFOEX contenant la configuration requise pour la version du système d’exploitation à comparer. Le paramètre dwTypeMask indique les membres de cette structure qui contiennent des informations à comparer.

Vous devez définir le membre dwOSVersionInfoSize de cette structure sur . Vous devez également spécifier des données valides pour les membres indiqués par dwTypeMask. La fonction ignore les membres de structure pour lesquels le dwTypeMask correspondant bit n’est pas défini.

[in] dwTypeMask

Masque qui indique les membres de la structure OSVERSIONINFOEX à tester. Ce paramètre peut être une ou plusieurs des valeurs suivantes.

Valeur Signification
VER_BUILDNUMBER
0x0000004
dwBuildNumber
VER_MAJORVERSION
0x0000002
dwMajorVersion

Si vous testez la version principale, vous devez également tester la version mineure et les versions principales et mineures du Service Pack.

VER_MINORVERSION
0x0000001
dwMinorVersion
VER_PLATFORMID
0x0000008
dwPlatformId
VER_SERVICEPACKMAJOR
0x0000020
wServicePackMajor
VER_SERVICEPACKMINOR
0x0000010
wServicePackMinor
VER_SUITENAME
0x0000040
wSuiteMask
VER_PRODUCT_TYPE
0x0000080
wProductType

[in] dwlConditionMask

Type de comparaison à utiliser pour chaque lpVersionInfo membre comparé. Pour générer cette valeur, appelez la fonction VerSetConditionMask ou la macro VER_SET_CONDITION une fois pour chaque OSVERSIONINFOEX membre comparé.

Valeur de retour

Si le système d’exploitation en cours d’exécution satisfait aux exigences spécifiées, la valeur de retour est une valeur différente de zéro.

Si le système actuel ne répond pas aux exigences, la valeur de retour est égale à zéro et GetLastError retourne ERROR_OLD_WIN_VERSION.

Si la fonction échoue, la valeur de retour est égale à zéro et GetLastError retourne un code d’erreur autre que ERROR_OLD_WIN_VERSION.

Remarques

La fonction VerifyVersionInfo récupère les informations de version sur le système d’exploitation en cours d’exécution et la compare aux membres valides de la structure lpVersionInfo. Cela vous permet de déterminer facilement la présence d’un ensemble requis de conditions de version du système d’exploitation. Il est préférable d’utiliser VerifyVersionInfo plutôt que d’appeler la fonction GetVersionEx pour effectuer vos propres comparaisons.

En règle générale, VerifyVersionInfo retourne une valeur différente de zéro uniquement si tous les tests spécifiés réussissent. Toutefois, les versions majeures, mineures et Service Pack sont testées de manière hiérarchique, car la version du système d’exploitation est une combinaison de ces valeurs. Si une condition existe pour la version principale, elle remplace les conditions spécifiées pour la version mineure et la version de Service Pack. (Vous ne pouvez pas tester la version principale supérieure à 5 et la version mineure inférieure ou égale à 1. Si vous spécifiez un tel test, la fonction modifie la demande pour tester une version mineure supérieure à 1, car elle effectue une opération supérieure à celle de la version principale.)

La fonction teste ces valeurs dans cet ordre : version majeure, version mineure et version de Service Pack. La fonction continue de tester les valeurs pendant qu’elles sont égales et s’arrête quand l’une des valeurs ne répond pas à la condition spécifiée. Par exemple, si vous testez un système supérieur ou égal à la version 5.1 service pack 1, le test réussit si la version actuelle est 6.0. (La version principale est supérieure à la version spécifiée, de sorte que le test s’arrête.) De la même façon, si vous testez un système supérieur ou égal à la version 5.1 service pack 1, le test réussit si la version actuelle est 5.2. (La version mineure est supérieure aux versions spécifiées, de sorte que le test s’arrête.) Toutefois, si vous testez un système supérieur ou égal à la version 5.1 service pack 1, le test échoue si la version actuelle est 5.0 Service Pack 2. (La version mineure n’est pas supérieure à la version spécifiée. Par conséquent, le test s’arrête.)

Pour vérifier une plage de versions système, vous devez appeler VerifyVersionInfo deux fois. Par exemple, pour vérifier que la version système est supérieure à 5.0, mais inférieure ou égale à 5.1, appelez d’abord VerifyVersionInfo pour tester que la version principale est 5 et que la version mineure est supérieure à 0, puis appelez VerifyVersionInfo pour tester que la version principale est 5 et que la version mineure est inférieure ou égale à 1.

L’identification du système d’exploitation actuel n’est généralement pas la meilleure façon de déterminer si une fonctionnalité de système d’exploitation particulière est présente. Cela est dû au fait que le système d’exploitation a peut-être ajouté de nouvelles fonctionnalités dans une DLL redistribuable. Au lieu d’utiliser GetVersionEx pour déterminer la plateforme ou le numéro de version du système d’exploitation, testez la présence de la fonctionnalité elle-même. Pour plus d’informations, consultez version du système d’exploitation.

Pour vérifier si le système d’exploitation actuel est la version Media Center ou Tablet PC de Windows, appelez GetSystemMetrics.

Windows 10 : VerifyVersionInfo retourne false lorsqu’elle est appelée par des applications qui n’ont pas de manifeste de compatibilité pour Windows 8.1 ou Windows 10 si le paramètre lpVersionInfo est défini afin qu’il spécifie Windows 8.1 ou Windows 10, même lorsque la version actuelle du système d’exploitation est Windows 8.1 ou Windows 10. Plus précisément, VerifyVersionInfo a le comportement suivant :

  • Si l’application n’a pas de manifeste, VerifyVersionInfo se comporte comme si la version du système d’exploitation est Windows 8 (6.2).
  • Si l’application a un manifeste qui contient le GUID correspondant à Windows 8.1, VerifyVersionInfo se comporte comme si la version du système d’exploitation est Windows 8.1 (6.3).
  • Si l’application a un manifeste qui contient le GUID correspondant à Windows 10, VerifyVersionInfo se comporte comme si la version du système d’exploitation est Windows 10 (10.0).
Les fonctions d’assistance de version utilisent la fonction VerifyVersionInfo , de sorte que le comportement IsWindows8Point1OrGreater et IsWindows10OrGreater sont également affectés par la présence et le contenu du manifeste.

Pour manifester vos applications pour Windows 8.1 ou Windows 10, consultez Ciblage de votre application pour Windows.

Exemples

Pour obtenir un exemple, consultez Vérification de la version système.

Note

L’en-tête winbase.h définit VerifyVersionInfo comme alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Exigences

Exigence Valeur
client minimum pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
serveur minimum pris en charge Windows 2000 Server [applications de bureau uniquement]
plateforme cible Windows
d’en-tête winbase.h (inclure Windows.h)
bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

GetVersionEx

OSVERSIONINFOEX

version du système d’exploitation

fonctions d’information système

VER_SET_CONDITION

VerSetConditionMask