Retrieves information about the current operating system.
Syntax
|
BOOL WINAPI GetVersionEx(
__inout LPOSVERSIONINFO lpVersionInfo
);
|
Parameters
- lpVersionInfo [in, out]
-
An
OSVERSIONINFO or OSVERSIONINFOEX structure that receives the operating system information.
Before calling the
GetVersionEx function, set the dwOSVersionInfoSize member of this structure as appropriate.
Return Value
If the function succeeds, the return value is a nonzero value.
If the function fails, the return value is zero. To get extended error information, call
GetLastError. The function fails if you specify an invalid value for the dwOSVersionInfoSize member of the
OSVERSIONINFO or
OSVERSIONINFOEX structure.
Remarks
Identifying the current operating system is usually not the best way to determine whether a particular operating system feature is present. This is because the operating system may have had new features added in a redistributable DLL. Rather than using
GetVersionEx to determine the operating system platform or version number, test for the presence of the feature itself. For more information, see
Operating System Version.
The GetSystemMetrics function provides additional information about the current operating system.
| Product | Setting |
| 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 |
To check for specific operating systems or operating system features, use the IsOS function. The GetProductInfo function retrieves the product type.
To retrieve information for the operating system on a remote computer, use the NetWkstaGetInfo function, the Win32_OperatingSystem WMI class, or the OperatingSystem property of the IADsComputer interface.
To compare the current system version to a required version, use the
VerifyVersionInfo function instead of using
GetVersionEx to perform the comparison yourself.
If compatibility mode is in effect, the GetVersionEx function reports the operating system as it identifies itself, which may not be the operating system that is installed. For example, if compatibility mode is in effect, GetVersionEx reports the operating system that is selected for application compatibility.
Examples [C++]
When using the
GetVersionEx function to determine whether your application is running on a particular version of the operating system, check for version numbers that are greater than or equal to the desired version numbers. This ensures that the test succeeds for later versions of the operating system. For example, if your application requires Windows XP or later, use the following test.
|
#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");
} |
Examples
For an example that identifies the current operating system, see
Getting the System Version.
Requirements
| Client | Requires Windows Vista, Windows XP, or Windows 2000 Professional. |
| Server | Requires Windows Server 2008, Windows Server 2003, or Windows 2000 Server. |
| Header | Declared in Winbase.h; include Windows.h. |
| Library | Use Kernel32.lib. |
| DLL | Requires Kernel32.dll. |
| Unicode/ANSI | Implemented as GetVersionExW (Unicode) and GetVersionExA (ANSI). |
See Also
GetVersion
Operating System Version
OSVERSIONINFO
OSVERSIONINFOEX
System Information Functions
VerifyVersionInfo
Send comments about this topic to Microsoft
Build date: 8/14/2008