Struttura OSVERSIONINFOEXA (winnt.h)

Contiene informazioni sulla versione del sistema operativo. Le informazioni includono numeri di versione principali e secondari, un numero di build, un identificatore di piattaforma e informazioni sui pacchetti di prodotti e il Service Pack più recente installato nel sistema. Questa struttura viene usata con le funzioni GetVersionEx e VerifyVersionInfo .

Sintassi

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;

Members

dwOSVersionInfoSize

Dimensioni di questa struttura di dati, in byte. Impostare questo membro su sizeof(OSVERSIONINFOEX).

dwMajorVersion

Numero di versione principale del sistema operativo. Per altre informazioni, vedere la sezione Osservazioni.

dwMinorVersion

Numero di versione secondaria del sistema operativo. Per altre informazioni, vedere la sezione Osservazioni.

dwBuildNumber

Numero di build del sistema operativo.

dwPlatformId

Piattaforma del sistema operativo. Questo membro può essere VER_PLATFORM_WIN32_NT (2).

szCSDVersion[128]

Stringa con terminazione Null, ad esempio "Service Pack 3", che indica l'ultimo Service Pack installato nel sistema. Se non è stato installato alcun Service Pack, la stringa è vuota.

wServicePackMajor

Numero di versione principale del Service Pack più recente installato nel sistema. Ad esempio, per Service Pack 3, il numero di versione principale è 3. Se non è stato installato alcun Service Pack, il valore è zero.

wServicePackMinor

Numero di versione secondaria dell'ultimo Service Pack installato nel sistema. Ad esempio, per Service Pack 3, il numero di versione secondaria è 0.

wSuiteMask

Maschera di bit che identifica le suite di prodotti disponibili nel sistema. Questo membro può essere una combinazione dei valori seguenti.

Valore Significato
VER_SUITE_BACKOFFICE
0x00000004
Vengono installati i componenti di Microsoft BackOffice.
VER_SUITE_BLADE
0x00000400
Windows Server 2003, Web Edition è installato.
VER_SUITE_COMPUTE_SERVER
0x00004000
Windows Server 2003, Compute Cluster Edition è installato.
VER_SUITE_DATACENTER
0x00000080
È installato Windows Server 2008 Datacenter, Windows Server 2003, Datacenter Edition o Windows 2000 Datacenter Server.
VER_SUITE_ENTERPRISE
0x00000002
Windows Server 2008 Enterprise, Windows Server 2003, edizione Enterprise o Windows 2000 Advanced Server è installato. Per altre informazioni su questo flag di bit, vedere la sezione Osservazioni.
VER_SUITE_EMBEDDEDNT
0x00000040
Windows XP Embedded è installato.
VER_SUITE_PERSONAL
0x00000200
Windows Vista Home Premium, Windows Vista Home Basic o Windows XP Home Edition è installato.
VER_SUITE_SINGLEUSERTS
0x00000100
Desktop remoto è supportato, ma è supportata una sola sessione interattiva. Questo valore viene impostato a meno che il sistema non sia in esecuzione in modalità server applicazioni.
VER_SUITE_SMALLBUSINESS
0x00000001
Microsoft Small Business Server è stato installato nel sistema, ma potrebbe essere stato aggiornato a un'altra versione di Windows. Per altre informazioni su questo flag di bit, vedere la sezione Osservazioni.
VER_SUITE_SMALLBUSINESS_RESTRICTED
0x00000020
Microsoft Small Business Server viene installato con la licenza client restrittiva in vigore. Per altre informazioni su questo flag di bit, vedere la sezione Osservazioni.
VER_SUITE_STORAGE_SERVER
0x00002000
Windows Storage Server 2003 R2 o Windows Storage Server 2003is installato.
VER_SUITE_TERMINAL
0x00000010
Servizi terminal è installato. Questo valore è sempre impostato.

Se VER_SUITE_TERMINAL è impostato ma VER_SUITE_SINGLEUSERTS non è impostato, il sistema viene eseguito in modalità server applicazioni.

VER_SUITE_WH_SERVER
0x00008000
Windows Home Server è installato.
VER_SUITE_MULTIUSERTS
0x00020000
La modalità AppServer è abilitata.

wProductType

Eventuali informazioni aggiuntive sul sistema. Questo membro può essere uno dei valori seguenti.

Valore Significato
VER_NT_DOMAIN_CONTROLLER
0x0000002
Il sistema è un controller di dominio e il sistema operativo è Windows Server 2012 , Windows Server 2008 R2, Windows Server 2008, Windows Server 2003 o Windows 2000 Server.
VER_NT_SERVER
0x0000003
Il sistema operativo è Windows Server 2012, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003 o Windows 2000 Server.

Si noti che un server che è anche un controller di dominio viene segnalato come VER_NT_DOMAIN_CONTROLLER, non VER_NT_SERVER.

VER_NT_WORKSTATION
0x0000001
Il sistema operativo è Windows 8, Windows 7, Windows Vista, Windows XP Professional, Windows XP Home Edition o Windows 2000 Professional.

wReserved

Riservato per utilizzi futuri.

Commenti

L'uso delle informazioni sulla versione non è il modo migliore per testare una funzionalità. Fare invece riferimento alla documentazione relativa alla funzionalità di interesse. Per altre informazioni sulle tecniche comuni per il rilevamento delle funzionalità, vedere Versione del sistema operativo.

Se è necessario richiedere un particolare sistema operativo, assicurarsi di usarlo come versione minima supportata, anziché progettare il test per il sistema operativo. In questo modo, il codice di rilevamento continuerà a funzionare sulle versioni future di Windows.

La tabella seguente riepiloga i valori restituiti dalle versioni supportate di Windows. Usare le informazioni nella colonna etichettata "Other" per distinguere tra i sistemi operativi con numeri di versione identici.

Sistema operativo Numero di versione dwMajorVersion dwMinorVersion Altro
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 Non applicabile
Windows 2000 5.0 5 0 Non applicabile
*Per le applicazioni che sono state manifestate per Windows 8.1 o Windows 10. Le applicazioni non manifestate per Windows 8.1 o Windows 10 restituiranno il valore della versione del sistema operativo Windows 8 (6.2). Per manifestare le applicazioni per Windows 8.1 o Windows 10, vedere Destinazione dell'applicazione per Windows.
 

Non è consigliabile basarsi solo sul flag VER_SUITE_SMALLBUSINESS per determinare se Small Business Server è stato installato nel sistema, come sia questo flag che il flag VER_SUITE_SMALLBUSINESS_RESTRICTED vengono impostati quando questa suite di prodotti è installata. Se si aggiorna questa installazione a Windows Server, Standard Edition, il flag di VER_SUITE_SMALLBUSINESS_RESTRICTED verrà cancellato. Tuttavia, il flag di VER_SUITE_SMALLBUSINESS rimarrà impostato. In questo caso, questo indica che Small Business Server è stato installato in questo sistema. Se questa installazione viene aggiornata ulteriormente a Windows Server, edizione Enterprise, il flag di VER_SUITE_SMALLBUSINESS rimarrà impostato.

Se la modalità di compatibilità è effettiva, la struttura OSVERSIONINFOEX contiene informazioni sul sistema operativo selezionato per la compatibilità dell'applicazione.

Per determinare se un'applicazione basata su Win32 è in esecuzione in WOW64, chiamare la funzione IsWow64Process . Per determinare se il sistema esegue una versione a 64 bit di Windows, chiamare la funzione GetNativeSystemInfo .

La funzione GetSystemMetrics fornisce le informazioni aggiuntive seguenti sul sistema operativo corrente.

Prodotto Impostazione
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
 

Esempio

Per un esempio, vedere Recupero della versione di sistema.

Nota

L'intestazione winnt.h definisce OSVERSIONINFOEX come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Intestazione winnt.h (include Windows.h)

Vedi anche

IsWow64Process

OSVERSIONINFO

API helper della versione