OSVERSIONINFOEXA, structure (winnt.h)

Contient les informations de version du système d’exploitation. Les informations incluent des numéros de version majeure 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 Remarques.

dwMinorVersion

Numéro de version secondaire du système d’exploitation. Pour plus d’informations, consultez Remarques.

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 la dernière version de Service Pack installée sur le système. Si aucun Service Pack n’a été installé, la chaîne est vide.

wServicePackMajor

Numéro de version principal 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 secondaire du dernier Service Pack installé sur le système. Par exemple, pour 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.

Valeur Signification
VER_SUITE_BACKOFFICE
0x00000004
Les composants Microsoft BackOffice sont installés.
VER_SUITE_BLADE
0x00000400
Windows Server 2003, Web Edition est installé.
VER_SUITE_COMPUTE_SERVER
0x00004000
Windows Server 2003, Compute Cluster Edition est installé.
VER_SUITE_DATACENTER
0x00000080
Windows Server 2008 Datacenter, Windows Server 2003, Datacenter Edition ou Windows 2000 Datacenter Server est installé.
VER_SUITE_ENTERPRISE
0x00000002
Windows Server 2008 Enterprise, Windows Server 2003, Enterprise Edition ou Windows 2000 Advanced Server est installé. Pour plus d’informations sur cet indicateur de bits, reportez-vous à la section Remarques.
VER_SUITE_EMBEDDEDNT
0x00000040
Windows XP Embedded est installé.
VER_SUITE_PERSONAL
0x00000200
Windows Vista Home Premium, Windows Vista Home Basic ou Windows XP Home Edition est installé.
VER_SUITE_SINGLEUSERTS
0x00000100
Le Bureau à distance est pris en charge, mais une seule session interactive est prise en charge. Cette valeur est définie, sauf si le système s’exécute en mode serveur d’applications.
VER_SUITE_SMALLBUSINESS
0x00000001
Microsoft Small Business Server a été installé une fois sur le système, mais a peut-être été mis à niveau vers une autre version de Windows. Pour plus d’informations sur cet indicateur de bits, reportez-vous à la section Remarques.
VER_SUITE_SMALLBUSINESS_RESTRICTED
0x00000020
Microsoft Small Business Server est installé avec la licence client restrictive en vigueur. Pour plus d’informations sur cet indicateur de bits, reportez-vous à la section Remarques.
VER_SUITE_STORAGE_SERVER
0x00002000
Windows Storage Server 2003 R2 ou Windows Storage Server 2003is installé.
VER_SUITE_TERMINAL
0x00000010
Les services terminal sont installés. Cette valeur est toujours définie.

Si VER_SUITE_TERMINAL est défini mais que VER_SUITE_SINGLEUSERTS n’est pas défini, le système s’exécute en mode serveur d’application.

VER_SUITE_WH_SERVER
0x00008000
Windows Home Server est installé.
VER_SUITE_MULTIUSERTS
0x00020000
Le mode AppServer est activé.

wProductType

Informations supplémentaires sur le système. Ce membre peut être l’une des valeurs suivantes.

Valeur Signification
VER_NT_DOMAIN_CONTROLLER
0x0000002
Le système est un contrôleur de domaine et le système d’exploitation est Windows Server 2012 , Windows Server 2008 R2, Windows Server 2008, Windows Server 2003 ou Windows 2000 Server.
VER_NT_SERVER
0x0000003
Le système d’exploitation est Windows Server 2012, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003 ou Windows 2000 Server.

Notez qu’un serveur qui est également un contrôleur de domaine est signalé comme VER_NT_DOMAIN_CONTROLLER, pas VER_NT_SERVER.

VER_NT_WORKSTATION
0x0000001
Le système d’exploitation est Windows 8, Windows 7, Windows Vista, Windows XP Professionnel, Windows XP Home Edition ou Windows 2000 Professionnel.

wReserved

Réservé pour une utilisation ultérieure.

Remarques

L’utilisation des informations de version n’est pas la meilleure façon de tester une fonctionnalité. Au lieu de cela, reportez-vous à la documentation relative à la fonctionnalité d’intérêt. Pour plus d’informations sur les techniques courantes de détection des fonctionnalités, consultez version du système d’exploitation.

Si vous devez exiger 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. Ainsi, votre code de détection continuera de fonctionner sur les futures versions 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 « Other » 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 Autre
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 Professional x64 Edition 5.2 5 2 (OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION) && (SYSTEM_INFO.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64)
Windows XP 5.1 5 1 Sans objet
Windows 2000 5.0 5 0 Sans objet
* Pour les applications qui ont été manifestes pour Windows 8.1 ou Windows 10. Les applications non manifestes 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 de VER_SUITE_SMALLBUSINESS pour déterminer si Small Business Server a été installé sur le système, car cet indicateur et l’indicateur de VER_SUITE_SMALLBUSINESS_RESTRICTED sont définis lorsque cette suite de produits est installée. Si vous mettez à niveau cette installation vers Windows Server, Standard Edition, l’indicateur VER_SUITE_SMALLBUSINESS_RESTRICTED sera 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, Enterprise Edition, l’indicateur 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 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 Réglage
Windows Server 2003 R2 SM_SERVERR2
Windows XP Media Center Edition SM_MEDIACENTER
Windows XP Starter Edition SM_STARTER
Windows XP Tablet PC Edition SM_TABLETPC
 

Exemples

Pour obtenir un exemple, consultez Obtention de la version système.

Note

L’en-tête winnt.h définit OSVERSIONINFOEX 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]
d’en-tête winnt.h (include Windows.h)

Voir aussi

IsWow64Process

osVERSIONINFO

API d’assistance de version