Condividi tramite


Funzione VerifyVersionInfoA (winbase.h)

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

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

Sintassi

BOOL VerifyVersionInfoA(
  [in] LPOSVERSIONINFOEXA lpVersionInformation,
  [in] DWORD              dwTypeMask,
  [in] DWORDLONG          dwlConditionMask
);

Parametri

[in] lpVersionInformation

Puntatore a una struttura OSVERSIONINFOEX contenente i requisiti della 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). È anche 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 usare 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 del sistema operativo attualmente in esecuzione e la confronta con i membri validi della struttura lpVersionInfo . Ciò consente di 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 il 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 cambierà la richiesta di testare 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 del 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 del 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 del 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 del sistema sia maggiore di 5.0 ma minore o uguale a 5.1, chiamare prima Di tutto VerifyVersionInfo per verificare che la versione principale sia 5 e la versione secondaria sia maggiore di 0, quindi chiamare di nuovo VerifyVersionInfo per testare che la versione principale è 5 e la versione secondaria è minore o uguale a 1.

L'identificazione del sistema operativo corrente non è in genere il modo migliore per determinare se è presente una determinata funzionalità del sistema operativo. Questo perché il sistema operativo potrebbe avere nuove funzionalità aggiunte in una DLL ridistribuibile. Anziché usare GetVersionEx per determinare il numero di versione o la piattaforma del sistema operativo, testare la presenza della funzionalità stessa. Per altre informazioni, vedere Versione del sistema operativo.

Per verificare se il sistema operativo corrente è la versione 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 specifica 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 è Windows 8 (6.2).
  • Se l'applicazione ha un manifesto contenente il GUID corrispondente a Windows 8.1, VerifyVersionInfo si comporta come se la versione del sistema operativo è 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 è Windows 10 (10.0).
Le funzioni Helper versione usano la funzione VerifyVersionInfo, quindi il comportamento IsWindows8Point1OrGreater e IsWindows10OrGreater sono analogamente interessati dalla presenza e dal contenuto del manifesto.

Per manifestare le applicazioni per Windows 8.1 o Windows 10, vedere 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 di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.

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