Partager via


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.

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 Entreprise, Windows Server 2003, Êdition Entreprise 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 Famille Premium, Windows Vista Famille Basic ou Windows XP Édition familiale 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é sur le système, mais peut avoir é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 2003 est installé.
VER_SUITE_TERMINAL
0x00000010
Les services Terminal Server sont installés. Cette valeur est toujours définie.

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

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

wProductType

Toute information supplémentaire 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 et non VER_NT_SERVER.

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

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)

Voir aussi

IsWow64Process

OSVERSIONINFO

API d’assistance de version