Structure OSVERSIONINFOEXA (winnt.h)
Contient des informations sur la version du système d’exploitation. Les informations incluent les numéros de version principale et mineure, un numéro de build, un identificateur de plateforme et des informations sur les suites de produits et le dernier Service Pack installé sur le système. Cette structure est utilisée avec les fonctions GetVersionEx et VerifyVersionInfo .
Syntaxe
typedef struct _OSVERSIONINFOEXA {
DWORD dwOSVersionInfoSize;
DWORD dwMajorVersion;
DWORD dwMinorVersion;
DWORD dwBuildNumber;
DWORD dwPlatformId;
CHAR szCSDVersion[128];
WORD wServicePackMajor;
WORD wServicePackMinor;
WORD wSuiteMask;
BYTE wProductType;
BYTE wReserved;
} OSVERSIONINFOEXA, *POSVERSIONINFOEXA, *LPOSVERSIONINFOEXA;
Membres
dwOSVersionInfoSize
Taille de cette structure de données, en octets. Définissez ce membre sur sizeof(OSVERSIONINFOEX)
.
dwMajorVersion
Numéro de version principal du système d’exploitation. Pour plus d'informations, consultez la section Notes.
dwMinorVersion
Numéro de version secondaire du système d’exploitation. Pour plus d'informations, consultez la section Notes.
dwBuildNumber
Numéro de build du système d’exploitation.
dwPlatformId
Plateforme du système d’exploitation. Ce membre peut être VER_PLATFORM_WIN32_NT (2).
szCSDVersion[128]
Chaîne terminée par null, telle que « Service Pack 3 », qui indique le dernier Service Pack installé sur le système. Si aucun Service Pack n’a été installé, la chaîne est vide.
wServicePackMajor
Numéro de version principale du dernier Service Pack installé sur le système. Par exemple, pour Service Pack 3, le numéro de version principale est 3. Si aucun Service Pack n’a été installé, la valeur est égale à zéro.
wServicePackMinor
Numéro de version mineure du dernier Service Pack installé sur le système. Par exemple, pour Le Service Pack 3, le numéro de version mineure est 0.
wSuiteMask
Masque de bits qui identifie les suites de produits disponibles sur le système. Ce membre peut être une combinaison des valeurs suivantes.
wProductType
Toute information supplémentaire sur le système. Ce membre peut être l’une des valeurs suivantes.
wReserved
Réservé pour un usage futur.
Remarques
S’appuyer sur les informations de version n’est pas la meilleure façon de tester une fonctionnalité. Au lieu de cela, reportez-vous à la documentation pour connaître la fonctionnalité qui vous intéresse. Pour plus d’informations sur les techniques courantes de détection des fonctionnalités, consultez Version du système d’exploitation.
Si vous devez avoir besoin d’un système d’exploitation particulier, veillez à l’utiliser comme version minimale prise en charge, plutôt que de concevoir le test pour le système d’exploitation unique. De cette façon, votre code de détection continuera à fonctionner sur les versions futures de Windows.
Le tableau suivant récapitule les valeurs retournées par les versions prises en charge de Windows. Utilisez les informations de la colonne intitulée « Autre » pour faire la distinction entre les systèmes d’exploitation avec des numéros de version identiques.
Système d’exploitation | Numéro de version | dwMajorVersion | dwMinorVersion | Autres |
---|---|---|---|---|
Windows 10 | 10.0* | 10 | 0 | OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION |
Windows Server 2016 | 10.0* | 10 | 0 | OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION |
Windows 8.1 | 6.3* | 6 | 3 | OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION |
Windows Server 2012 R2 | 6.3* | 6 | 3 | OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION |
Windows 8 | 6.2 | 6 | 2 | OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION |
Windows Server 2012 | 6.2 | 6 | 2 | OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION |
Windows 7 | 6.1 | 6 | 1 | OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION |
Windows Server 2008 R2 | 6.1 | 6 | 1 | OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION |
Windows Server 2008 | 6.0 | 6 | 0 | OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION |
Windows Vista | 6.0 | 6 | 0 | OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION |
Windows Server 2003 R2 | 5.2 | 5 | 2 | GetSystemMetrics(SM_SERVERR2) != 0 |
Windows Home Server | 5.2 | 5 | 2 | OSVERSIONINFOEX.wSuiteMask & VER_SUITE_WH_SERVER |
Windows Server 2003 | 5.2 | 5 | 2 | GetSystemMetrics(SM_SERVERR2) == 0 |
Windows XP Professionnel Édition x64 | 5.2 | 5 | 2 | (OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION) && (SYSTEM_INFO.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64) |
Windows XP | 5,1 | 5 | 1 | Non applicable |
Windows 2000 | 5.0 | 5 | 0 | Non applicable |
*Pour les applications qui ont été manifestées pour Windows 8.1 ou Windows 10. Les applications qui ne se manifestent pas pour Windows 8.1 ou Windows 10 retournent la valeur de version du système d’exploitation Windows 8 (6.2). Pour manifester vos applications pour Windows 8.1 ou Windows 10, reportez-vous à Ciblage de votre application pour Windows. |
Vous ne devez pas vous appuyer uniquement sur l’indicateur VER_SUITE_SMALLBUSINESS pour déterminer si Small Business Server a été installé sur le système, car cet indicateur et l’indicateur VER_SUITE_SMALLBUSINESS_RESTRICTED sont définis lors de l’installation de cette suite de produits. Si vous mettez à niveau cette installation vers Windows Server, Édition Standard, l’indicateur VER_SUITE_SMALLBUSINESS_RESTRICTED est effacé. Toutefois, l’indicateur VER_SUITE_SMALLBUSINESS reste défini. Dans ce cas, cela indique que Small Business Server a été installé une fois sur ce système. Si cette installation est mise à niveau vers Windows Server, Êdition Entreprise, l’indicateur de VER_SUITE_SMALLBUSINESS reste défini.
Si le mode de compatibilité est en vigueur, la structure OSVERSIONINFOEX contient des informations sur le système d’exploitation sélectionné pour la compatibilité des applications.
Pour déterminer si une application win32 s’exécute sur WOW64, appelez la fonction IsWow64Process . Pour déterminer si le système exécute une version 64 bits de Windows, appelez la fonction GetNativeSystemInfo .
La fonction GetSystemMetrics fournit les informations supplémentaires suivantes sur le système d’exploitation actuel.
Produit | Paramètre |
---|---|
Windows Server 2003 R2 | SM_SERVERR2 |
Windows XP Édition Media Center | SM_MEDIACENTER |
Windows XP Starter Edition | SM_STARTER |
Windows XP Édition Tablet PC | SM_TABLETPC |
Exemples
Pour obtenir un exemple, consultez Obtention de la version système.
Notes
L’en-tête winnt.h définit OSVERSIONINFOEX comme un 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.
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] |
En-tête | winnt.h (inclure Windows.h) |