Funzione VerifyVersionInfoW (winbase.h)

Confronta un set di requisiti di versione del sistema operativo con i valori corrispondenti per la versione attualmente in esecuzione del sistema. Questa funzione è soggetta al comportamento basato su manifesto. Per altre informazioni, vedere la sezione Osservazioni.

Nota: Questa funzione è stata deprecata per Windows 10. Per altre informazioni, vedi La destinazione delle applicazioni per Windows .

Sintassi

BOOL VerifyVersionInfoW(
  [in] LPOSVERSIONINFOEXW lpVersionInformation,
  [in] DWORD              dwTypeMask,
  [in] DWORDLONG          dwlConditionMask
);

Parametri

[in] lpVersionInformation

Puntatore a una struttura OSVERSIONINFOEX contenente i requisiti di versione del sistema operativo da confrontare. Il parametro dwTypeMask indica i membri di questa struttura che contengono informazioni da confrontare.

È necessario impostare il membro dwOSVersionInfoSize di questa struttura su sizeof(OSVERSIONINFOEX). È inoltre necessario specificare dati validi per i membri indicati da dwTypeMask. La funzione ignora i membri della struttura per i quali il bit dwTypeMask corrispondente non è impostato.

[in] dwTypeMask

Maschera che indica i membri della struttura OSVERSIONINFOEX da testare. Questo parametro può essere uno o più dei valori seguenti.

Valore Significato
VER_BUILDNUMBER
0x0000004
dwBuildNumber
VER_MAJORVERSION
0x0000002
dwMajorVersion

Se si esegue il test della versione principale, è necessario testare anche la versione secondaria e le versioni principali e secondarie del Service Pack.

VER_MINORVERSION
0x0000001
dwMinorVersion
VER_PLATFORMID
0x0000008
dwPlatformId
VER_SERVICEPACKMAJOR
0x0000020
wServicePackMajor
VER_SERVICEPACKMINOR
0x0000010
wServicePackMinor
VER_SUITENAME
0x0000040
wSuiteMask
VER_PRODUCT_TYPE
0x0000080
wProductType

[in] dwlConditionMask

Tipo di confronto da utilizzare per ogni membro lpVersionInfo confrontato. Per compilare questo valore, chiamare la funzione VerSetConditionMask o la macro VER_SET_CONDITION una volta per ogni membro OSVERSIONINFOEX confrontato.

Valore restituito

Se il sistema operativo attualmente in esecuzione soddisfa i requisiti specificati, il valore restituito è un valore diverso da zero.

Se il sistema corrente non soddisfa i requisiti, il valore restituito è zero e GetLastError restituisce ERROR_OLD_WIN_VERSION.

Se la funzione ha esito negativo, il valore restituito è zero e GetLastError restituisce un codice di errore diverso da ERROR_OLD_WIN_VERSION.

Commenti

La funzione VerifyVersionInfo recupera le informazioni sulla versione sul sistema operativo attualmente in esecuzione e la confronta con i membri validi della struttura lpVersionInfo . In questo modo è possibile determinare facilmente la presenza di un set obbligatorio di condizioni di versione del sistema operativo. È preferibile usare VerifyVersionInfo anziché chiamare la funzione GetVersionEx per eseguire confronti personalizzati.

In genere, VerifyVersionInfo restituisce un valore diverso da zero solo se tutti i test specificati hanno esito positivo. Tuttavia, le versioni principali, secondarie e service pack vengono testate in modo gerarchico perché la versione del sistema operativo è una combinazione di questi valori. Se esiste una condizione per la versione principale, sostituisce le condizioni specificate per la versione secondaria e la versione del Service Pack. Non è possibile testare la versione principale maggiore di 5 e la versione secondaria minore o uguale a 1. Se si specifica un test di questo tipo, la funzione modificherà la richiesta di test per una versione secondaria maggiore di 1 perché esegue un'operazione maggiore di quella della versione principale.

La funzione verifica questi valori in questo ordine: versione principale, versione secondaria e versione del Service Pack. La funzione continua a testare i valori mentre sono uguali e si arresta quando uno dei valori non soddisfa la condizione specificata. Ad esempio, se si esegue il test per un sistema maggiore o uguale alla versione 5.1 service pack 1, il test ha esito positivo se la versione corrente è 6.0. La versione principale è maggiore della versione specificata, quindi il test si arresta. Allo stesso modo, se si esegue il test per un sistema maggiore o uguale alla versione 5.1 service pack 1, il test ha esito positivo se la versione corrente è 5.2. La versione secondaria è maggiore delle versioni specificate, quindi il test si arresta. Tuttavia, se si esegue il test per un sistema maggiore o uguale alla versione 5.1 service pack 1, il test ha esito negativo se la versione corrente è 5.0 Service Pack 2. La versione secondaria non è maggiore della versione specificata, quindi il test si arresta.

Per verificare un intervallo di versioni di sistema, è necessario chiamare VerifyVersionInfo due volte. Ad esempio, per verificare che la versione di sistema sia maggiore di 5.0 ma minore o uguale a 5.1, chiamare prima VerifyVersionInfo per verificare che la versione principale sia 5 e che la versione secondaria sia maggiore di 0, quindi chiamare di nuovo VerifyVersionInfo per verificare che la versione principale sia 5 e che la versione secondaria sia minore o uguale a 1.

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.

Per verificare se il sistema operativo corrente è la versione di Media Center o Tablet PC di Windows, chiamare GetSystemMetrics.

Windows 10: VerifyVersionInfo restituisce false quando viene chiamato dalle applicazioni che non hanno un manifesto di compatibilità per Windows 8.1 o Windows 10 se il parametro lpVersionInfo è impostato in modo che specifichi Windows 8.1 o Windows 10, anche quando il sistema operativo corrente la versione è Windows 8.1 o Windows 10. In particolare, VerifyVersionInfo ha il comportamento seguente:

  • Se l'applicazione non ha manifesto, VerifyVersionInfo si comporta come se la versione del sistema operativo sia Windows 8 (6.2).
  • Se l'applicazione ha un manifesto che contiene il GUID corrispondente a Windows 8.1, VerifyVersionInfo si comporta come se la versione del sistema operativo sia Windows 8.1 (6.3).
  • Se l'applicazione ha un manifesto che contiene il GUID corrispondente a Windows 10, VerifyVersionInfo si comporta come se la versione del sistema operativo sia Windows 10 (10.0).
Le funzioni helper version usano la funzione VerifyVersionInfo , quindi il comportamento IsWindows8Point1OrGreater e IsWindows10OrGreater sono interessati in modo analogo dalla presenza e dal contenuto del manifesto.

Per manifestare le applicazioni per Windows 8.1 o Windows 10, vedere Targeting your application for Windows (Destinazione dell'applicazione per Windows).

Esempio

Per un esempio, vedere Verifica della versione di sistema.

Nota

L'intestazione winbase.h definisce VerifyVersionInfo 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]
Piattaforma di destinazione Windows
Intestazione winbase.h (include Windows.h)
Libreria Kernel32.lib
DLL Kernel32.dll

Vedere anche

Getversionex

OSVERSIONINFOEX

Versione del sistema operativo

Funzioni di informazioni di sistema

VER_SET_CONDITION

VerSetConditionMask