Funzione GetVersionExA (sysinfoapi.h)
GetVersionExA può essere modificato o non disponibile per le versioni dopo Windows 8.1. Usare invece le funzioni helper version. Per le app di Windows 10, vedere Targeting your applications for Windows (Targeting your applications for Windows).
Con il rilascio di Windows 8.1, il comportamento dell'API GetVersionEx è cambiato nel valore restituito per la versione del sistema operativo. Il valore restituito dalla funzione GetVersionEx dipende ora dalla modalità di manifesto dell'applicazione.
Le applicazioni non manifestate per Windows 8.1 o Windows 10 restituiranno il valore della versione del sistema operativo Windows 8 (6.2). Dopo che un'applicazione viene manifestata per una determinata versione del sistema operativo, GetVersionEx restituirà sempre la versione per cui l'applicazione viene manifestata nelle versioni future. Per manifestare le applicazioni per Windows 8.1 o Windows 10, fare riferimento a Selezione dell'applicazione per Windows.
Sintassi
NOT_BUILD_WINDOWS_DEPRECATE BOOL GetVersionExA(
[in, out] LPOSVERSIONINFOA lpVersionInformation
);
Parametri
[in, out] lpVersionInformation
Struttura OSVERSIONINFOA o OSVERSIONINFOEXA che riceve le informazioni del sistema operativo.
Prima di chiamare la funzione GetVersionEx , impostare il membro dwOSVersionInfoSize della struttura in base alle esigenze per indicare la struttura dei dati passata a questa funzione.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è un valore diverso da zero.
Se la funzione ha esito negativo, il valore restituito è zero. Per informazioni dettagliate sull'errore, chiamare GetLastError. La funzione ha esito negativo se si specifica un valore non valido per il membro dwOSVersionInfoSize della struttura OSVERSIONINFOA o OSVERSIONINFOEXA .
Commenti
L'identificazione del sistema operativo corrente non è in genere il modo migliore per determinare se è presente una particolare funzionalità del sistema operativo. Ciò è dovuto al fatto che il sistema operativo potrebbe avere aggiunto nuove funzionalità in una DLL ridistribuibile. Invece di usare GetVersionEx per determinare la piattaforma del sistema operativo o il numero di versione, verificare la presenza della funzionalità stessa. Per altre informazioni, vedere Versione del sistema operativo.
La funzione GetSystemMetrics fornisce informazioni aggiuntive sul sistema operativo corrente.
Prodotto | Impostazione |
---|---|
Windows XP Media Center Edition | SM_MEDIACENTER |
Windows XP Starter Edition | SM_STARTER |
Windows XP Tablet PC Edition | SM_TABLETPC |
Windows Server 2003 R2 | SM_SERVERR2 |
Per verificare la presenza di sistemi operativi o funzionalità del sistema operativo specifici, usare la funzione IsOS . La funzione GetProductInfo recupera il tipo di prodotto.
Per recuperare informazioni per il sistema operativo in un computer remoto, utilizzare la funzione NetWkstaGetInfo , la classe WMI Win32_OperatingSystem o la proprietà OperatingSystem dell'interfaccia IADsComputer .
Per confrontare la versione di sistema corrente con una versione richiesta, usare la funzione VerifyVersionInfo anziché usare GetVersionEx per eseguire manualmente il confronto.
Se la modalità di compatibilità è attiva, la funzione GetVersionEx segnala il sistema operativo come si identifica, che potrebbe non essere il sistema operativo installato. Ad esempio, se la modalità di compatibilità è attiva, GetVersionEx segnala il sistema operativo selezionato per la compatibilità delle applicazioni.
Esempio
Quando si usa la funzione GetVersionEx per determinare se l'applicazione è in esecuzione in una determinata versione del sistema operativo, verificare la presenza di numeri di versione maggiori o uguali ai numeri di versione desiderati. In questo modo si garantisce che il test abbia esito positivo per le versioni successive del sistema operativo. Ad esempio, se l'applicazione richiede Windows XP o versione successiva, usare il test seguente.
#include <windows.h>
#include <stdio.h>
void main()
{
OSVERSIONINFO osvi;
BOOL bIsWindowsXPorLater;
ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&osvi);
bIsWindowsXPorLater =
( (osvi.dwMajorVersion > 5) ||
( (osvi.dwMajorVersion == 5) && (osvi.dwMinorVersion >= 1) ));
if(bIsWindowsXPorLater)
printf("The system meets the requirements.\n");
else printf("The system does not meet the requirements.\n");
}
Per un esempio che identifica il sistema operativo corrente, vedere Recupero della versione di sistema.
Nota
L'intestazione sysinfoapi.h definisce GetVersionEx 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 [app desktop | App UWP] |
Server minimo supportato | Windows 2000 Server [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | sysinfoapi.h (include Windows.h) |
Libreria | Kernel32.lib |
DLL | Kernel32.dll |
Vedere anche
Versione del sistema operativo