VerifyVersionInfoA, fonction (winbase.h)

Compare un ensemble de conditions requises pour la 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 Notes.

Note: Cette fonction a été déconseillée pour Windows 10. Pour plus d’informations, consultez Ciblage de 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 sizeof(OSVERSIONINFOEX). 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 bit dwTypeMask correspondant n’est pas défini.

[in] dwTypeMask

Masque qui indique les membres de la structure OSVERSIONINFOEX à tester. Ce paramètre peut prendre 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 membre lpVersionInfo comparé. Pour générer cette valeur, appelez la fonction VerSetConditionMask ou la macro VER_SET_CONDITION une fois pour chaque membre OSVERSIONINFOEX comparé.

Valeur retournée

Si le système d’exploitation en cours d’exécution répond 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 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 les 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 principales, 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. S’il existe une condition pour la version principale, elle remplace les conditions spécifiées pour la version mineure et la version du 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 à sur la version principale.)

La fonction teste ces valeurs dans cet ordre : version principale, version mineure et version du Service Pack. La fonction continue de tester les valeurs alors 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 étant supérieure à la version spécifiée, le test s’arrête.) De même, 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 étant supérieure aux versions spécifiées, 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’étant pas supérieure à la version spécifiée, 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 secondaire est supérieure à 0, puis appelez de nouveau VerifyVersionInfo pour vérifier 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. En effet, de nouvelles fonctionnalités ont peut-être été ajoutées au système d’exploitation dans une DLL redistribuable. Au lieu d’utiliser GetVersionEx pour déterminer la plateforme du système d’exploitation ou le numéro de version, 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 de sorte qu’il spécifie Windows 8.1 ou Windows 10, même lorsque le système d’exploitation actuel la version 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 était 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 était 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 était 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 du système.

Notes

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. La combinaison 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.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
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