VerifyVersionInfoW-Funktion (winbase.h)
Vergleicht eine Reihe von Betriebssystemversionsanforderungen mit den entsprechenden Werten für die derzeit ausgeführte Version des Systems. Diese Funktion unterliegt manifestbasiertem Verhalten. Weitere Informationen finden Sie im Abschnitt "Hinweise".
Hinweis: Diese Funktion ist für Windows 10 veraltet. Weitere Informationen finden Sie unter für Ihre Anwendungen für Windows.
Syntax
BOOL VerifyVersionInfoW(
[in] LPOSVERSIONINFOEXW 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 Informationen enthalten, die verglichen werden sollen.
Sie müssen die dwOSVersionInfoSize Member dieser Struktur auf sizeof(OSVERSIONINFOEX)
festlegen. Sie müssen auch gültige Daten für die Elemente angeben, die durch dwTypeMaskangegeben werden. Die Funktion ignoriert Strukturmmber, für die das entsprechende dwTypeMask- Bit nicht festgelegt ist.
[in] dwTypeMask
Eine Maske, die die Member der zu testenden OSVERSIONINFOEX- Struktur angibt. Dieser Parameter kann einen oder mehrere der folgenden Werte sein.
[in] dwlConditionMask
Der Typ des Vergleichs, der für jedes lpVersionInfo verglichen wird. Rufen Sie zum Erstellen dieses Werts die VerSetConditionMask--Funktion oder das VER_SET_CONDITION Makro einmal für jedes OSVERSIONINFOEX Verglichenen 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 einen anderen Fehlercode als ERROR_OLD_WIN_VERSION zurückgibt.
Bemerkungen
Die VerifyVersionInfo-Funktion ruft Versionsinformationen zum aktuell ausgeführten Betriebssystem ab und vergleicht sie mit den gültigen Membern der lpVersionInfo Struktur. Auf diese Weise können Sie ganz einfach ermitteln, ob eine erforderliche Gruppe von Betriebssystemversionsbedingungen vorhanden ist. Es empfiehlt sich, VerifyVersionInfo- zu verwenden, anstatt die GetVersionEx--Funktion aufzurufen, um ihre eigenen Vergleiche durchzuführen.
In der Regel gibt VerifyVersionInfo nur dann einen Wert ungleich Null zurück, wenn alle angegebenen Tests erfolgreich ausgeführt werden. 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 testen, die größer als 5 und Nebenversion kleiner als oder gleich 1 ist. Wenn Sie einen solchen Test angeben, ändert die Funktion die Anforderung, um eine Nebenversion zu testen, die größer als 1 ist, da sie einen größeren Vorgang als die Hauptversion ausführt.)
Die Funktion testet diese Werte in dieser Reihenfolge: Hauptversion, Nebenversion und Service Pack-Version. Die Funktion testet weiterhin Werte, während sie gleich sind, und stoppt, wenn einer der Werte nicht die angegebene Bedingung erfüllt. Wenn Sie beispielsweise 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.) Auf die gleiche Weise, wenn Sie auf ein System testen, das größer oder gleich Version 5.1 Service Pack 1 ist, ist der Test 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 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 einen Bereich 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 ist und die Nebenversion größer als 0 ist, und rufen Sie dann VerifyVersionInfo erneut auf, um zu testen, ob die Hauptversion 5 ist und die Nebenversion kleiner als oder gleich 1 ist.
Das Identifizieren des aktuellen Betriebssystems ist in der Regel nicht die beste Methode, um festzustellen, ob ein bestimmtes Betriebssystemfeature vorhanden ist. Dies liegt daran, dass das Betriebssystem möglicherweise neue Features in einer verteilbaren DLL hinzugefügt hat. Anstatt GetVersionEx- zu verwenden, um die Betriebssystemplattform oder Versionsnummer zu ermitteln, testen Sie das Vorhandensein des Features selbst. Weitere Informationen finden Sie unter Betriebssystemversion.
Rufen Sie GetSystemMetricsauf, um zu überprüfen, ob das aktuelle Betriebssystem entweder die Media Center- oder Tablet PC-Version von Windows ist.
Windows 10: VerifyVersionInfo "false" zurück, wenn anwendungen aufgerufen werden, die nicht über ein Kompatibilitätsmanifest für Windows 8.1 oder Windows 10 verfügen, wenn der parameter lpVersionInfo so festgelegt ist, dass er Windows 8.1 oder Windows 10 angibt, auch wenn die aktuelle Betriebssystemversion Windows 8.1 oder Windows 10 ist. 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 ob die Betriebssystemversion Windows 8.1 (6.3) ist.
- Wenn die Anwendung über ein Manifest verfügt, das die GUID enthält, die Windows 10 entspricht, verhält sich VerifyVersionInfo so, als ob die Betriebssystemversion Windows 10 (10.0) ist.
Informationen zum Manifestieren Ihrer Anwendungen für Windows 8.1 oder Windows 10 finden Sie unter Targeting your application for Windows.
Beispiele
Ein Beispiel finden Sie unter Überprüfen der Systemversion.
Anmerkung
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
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows 2000 Professional [nur Desktop-Apps] |
mindestens unterstützte Server- | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform- | Fenster |
Header- | winbase.h (enthalten Windows.h) |
Library | Kernel32.lib |
DLL- | Kernel32.dll |