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 sulle suite di prodotti e il Service Pack più recente installato nel sistema. Questa struttura viene usata con le funzioni GetVersion Ex
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;
Membri
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 Osservazioni.
dwMinorVersion
Numero di versione secondaria del sistema operativo. Per altre informazioni, vedere 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.
wProductType
Eventuali informazioni aggiuntive sul sistema. Questo membro può essere uno dei valori seguenti.
wReserved
Riservato per uso futuro.
Osservazioni
Fare affidamento sulle 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 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 con etichetta "Altro" 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, fare riferimento a Destinazione dell'applicazione per Windows. |
Non è consigliabile basarsi solo sul flag VER_SUITE_SMALLBUSINESS per determinare se Small Business Server è stato installato nel sistema, poiché 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 VER_SUITE_SMALLBUSINESS rimarrà impostato. In questo caso, indica che Small Business Server è stato installato in questo sistema. Se l'installazione viene aggiornata ulteriormente a Windows Server, Enterprise Edition, il flag VER_SUITE_SMALLBUSINESS rimarrà impostato.
Se la modalità di compatibilità è attiva, la struttura OSVERSIONINFOEX contiene informazioni sul sistema operativo selezionato per la compatibilità delle applicazioni .
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
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 |
Esempi
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 non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.
Fabbisogno
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) |