VerifyVersionInfoA-Funktion (winbase.h)

Vergleicht eine Reihe von Betriebssystemversionsanforderungen mit den entsprechenden Werten für die aktuell ausgeführte Version des Systems. Diese Funktion unterliegt manifestbasiertem Verhalten. Weitere Informationen finden Sie im Abschnitt mit Hinweisen.

Hinweis: Diese Funktion ist für Windows 10 veraltet. Weitere Informationen finden Sie unter Zielanwendung für Windows .

Syntax

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

Parameter

[in] lpVersionInformation

Ein Zeiger auf eine OSVERSIONINFOEX-Struktur , die die zu vergleichenden Betriebssystemversionsanforderungen enthält. Der dwTypeMask-Parameter gibt die Member dieser Struktur an, die die zu vergleichenden Informationen enthalten.

Sie müssen den dwOSVersionInfoSize-Member dieser Struktur auf sizeof(OSVERSIONINFOEX)festlegen. Sie müssen auch gültige Daten für die durch dwTypeMask angegebenen Member angeben. Die Funktion ignoriert Strukturmember, für die das entsprechende dwTypeMask-Bit nicht festgelegt ist.

[in] dwTypeMask

Eine Maske, die die Elemente der zu testden OSVERSIONINFOEX-Struktur angibt. Dieser Parameter kann einen oder mehrere der folgenden Werte aufweisen.

Wert Bedeutung
VER_BUILDNUMBER
0x0000004
dwBuildNumber
VER_MAJORVERSION
0x0000002
dwMajorVersion

Wenn Sie die Hauptversion testen, müssen Sie auch die Nebenversion und die Haupt- und Nebenversionen des Service Packs testen.

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

Der Typ des Vergleichs, der für die einzelnen verglichenen lpVersionInfo-Member verwendet werden soll. Um diesen Wert zu erstellen, rufen Sie die VerSetConditionMask-Funktion oder das VER_SET_CONDITION Makro einmal für jedes verglichene OSVERSIONINFOEX-Element auf.

Rückgabewert

Wenn das derzeit ausgeführte Betriebssystem die angegebenen Anforderungen erfüllt, ist der Rückgabewert ein Wert ungleich null.

Wenn das aktuelle System die Anforderungen nicht erfüllt, ist der Rückgabewert null, und GetLastError gibt ERROR_OLD_WIN_VERSION zurück.

Wenn die Funktion fehlschlägt, ist der Rückgabewert null, und GetLastError gibt einen anderen Fehlercode als ERROR_OLD_WIN_VERSION zurück.

Hinweise

Die VerifyVersionInfo-Funktion ruft Versionsinformationen zum derzeit ausgeführten Betriebssystem ab und vergleicht sie mit den gültigen Membern der lpVersionInfo-Struktur . Auf diese Weise können Sie ganz einfach das Vorhandensein eines erforderlichen Satzes von Betriebssystemversionsbedingungen ermitteln. Es ist besser, VerifyVersionInfo zu verwenden, anstatt die GetVersionEx-Funktion aufzurufen, um eigene Vergleiche durchzuführen.

In der Regel gibt VerifyVersionInfo nur dann einen Wert ungleich null zurück, wenn alle angegebenen Tests erfolgreich sind. Haupt-, Neben- und Service Pack-Versionen werden jedoch hierarchisch getestet, da die Betriebssystemversion eine Kombination dieser Werte ist. Wenn eine Bedingung für die Hauptversion vorhanden ist, ersetzt sie die Bedingungen, die für Nebenversion und Service Pack-Version angegeben sind. (Sie können nicht auf Hauptversion größer als 5 und Nebenversion kleiner oder gleich 1 testen. Wenn Sie einen solchen Test angeben, ändert die Funktion die Anforderung, um auf eine Nebenversion zu testen, die größer als 1 ist, da sie einen Größer-als-Vorgang für die Hauptversion ausführt.)

Die Funktion testet diese Werte in dieser Reihenfolge: Hauptversion, Nebenversion und Service Pack-Version. Die Funktion setzt das Testen von Werten fort, während sie gleich sind, und beendet, wenn einer der Werte die angegebene Bedingung nicht erfüllt. Wenn Sie beispielsweise auf ein System testen, das größer oder gleich Version 5.1 Service Pack 1 ist, ist der Test erfolgreich, wenn die aktuelle Version 6.0 ist. (Die Hauptversion ist größer als die angegebene Version, sodass der Test beendet wird.) Wenn Sie auf ein System testen, das größer oder gleich Version 5.1 Service Pack 1 ist, ist der Test ebenfalls erfolgreich, wenn die aktuelle Version 5.2 ist. (Die Nebenversion ist größer als die angegebenen Versionen, sodass der Test beendet wird.) Wenn Sie jedoch auf ein System testen, das größer oder gleich Version 5.1 Service Pack 1 ist, schlägt der Test fehl, wenn die aktuelle Version 5.0 Service Pack 2 ist. (Die Nebenversion ist nicht größer als die angegebene Version, sodass der Test beendet wird.)

Um eine Reihe von Systemversionen zu überprüfen, müssen Sie VerifyVersionInfo zweimal aufrufen. Um beispielsweise zu überprüfen, ob die Systemversion größer als 5.0, aber kleiner oder gleich 5.1 ist, rufen Sie zuerst VerifyVersionInfo auf, um zu testen, ob die Hauptversion 5 und die Nebenversion größer als 0 ist. Rufen Sie dann VerifyVersionInfo erneut auf, um zu testen, ob die Hauptversion 5 und die Nebenversion kleiner oder gleich 1 ist.

Die Identifizierung des aktuellen Betriebssystems ist in der Regel nicht die beste Methode, um zu bestimmen, ob ein bestimmtes Betriebssystemfeature vorhanden ist. Dies liegt daran, dass dem Betriebssystem möglicherweise neue Features in einer verteilbaren DLL hinzugefügt wurden. Anstatt GetVersionEx zu verwenden, um die Betriebssystemplattform oder Versionsnummer zu bestimmen, testen Sie, ob das Feature selbst vorhanden ist. Weitere Informationen finden Sie unter Betriebssystemversion.

Rufen Sie GetSystemMetrics auf, um zu überprüfen, ob das aktuelle Betriebssystem entweder die Media Center- oder Tablet-PC-Version von Windows ist.

Windows 10: VerifyVersionInfo gibt false zurück, wenn es von Anwendungen aufgerufen wird, die kein Kompatibilitätsmanifest für Windows 8.1 oder Windows 10 haben, wenn der parameter lpVersionInfo so festgelegt ist, dass er Windows 8.1 oder Windows 10 angibt, auch wenn das aktuelle Betriebssystem version ist Windows 8.1 oder Windows 10. Insbesondere weist VerifyVersionInfo das folgende Verhalten auf:

  • Wenn die Anwendung kein Manifest aufweist, verhält sich VerifyVersionInfo so, als ob die Betriebssystemversion Windows 8 (6.2) ist.
  • Wenn die Anwendung über ein Manifest verfügt, das die GUID enthält, die Windows 8.1 entspricht, verhält sich VerifyVersionInfo so, als wäre die Betriebssystemversion Windows 8.1 (6.3).
  • Wenn die Anwendung über ein Manifest verfügt, das die GUID enthält, die Windows 10 entspricht, verhält sich VerifyVersionInfo so, als wäre die Betriebssystemversion Windows 10 (10.0).
Die Versionshilfsfunktionen verwenden die VerifyVersionInfo-Funktion , sodass das Verhalten IsWindows8Point1OrGreater und IsWindows10OrGreater vom Vorhandensein und Inhalt des Manifests ähnlich beeinflusst werden.

Informationen zum Manifestieren Ihrer Anwendungen für Windows 8.1 oder Windows 10 finden Sie unter Ausrichten Ihrer Anwendung für Windows.

Beispiele

Ein Beispiel finden Sie unter Überprüfen der Systemversion.

Hinweis

Der winbase.h-Header definiert VerifyVersionInfo als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht Codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winbase.h (Windows.h einschließen)
Bibliothek Kernel32.lib
DLL Kernel32.dll

Siehe auch

Getversionex

OSVERSIONINFOEX

Betriebssystemversion

Systeminformationsfunktionen

VER_SET_CONDITION

VerSetConditionMask