2 * This file is part of the mingw-w64 runtime package.
3 * No warranty is given; refer to the file DISCLAIMER within this package.
6 #ifndef _INC_VERSIONHELPERS
7 #define _INC_VERSIONHELPERS
9 #include <winapifamily.h>
11 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && !defined(__WIDL__)
14 #define VERSIONHELPERAPI inline bool
16 #define VERSIONHELPERAPI FORCEINLINE BOOL
19 #define _WIN32_WINNT_WINBLUE 0x0603
21 VERSIONHELPERAPI
IsWindowsVersionOrGreater(WORD major
, WORD minor
, WORD servpack
)
23 OSVERSIONINFOEXW vi
= {sizeof(vi
),major
,minor
,0,0,{0},servpack
};
24 return VerifyVersionInfoW(&vi
, VER_MAJORVERSION
|VER_MINORVERSION
|VER_SERVICEPACKMAJOR
,
25 VerSetConditionMask(VerSetConditionMask(VerSetConditionMask(0,
26 VER_MAJORVERSION
,VER_GREATER_EQUAL
),
27 VER_MINORVERSION
,VER_GREATER_EQUAL
),
28 VER_SERVICEPACKMAJOR
, VER_GREATER_EQUAL
));
31 VERSIONHELPERAPI
IsWindowsXPOrGreater(void) {
32 return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WINXP
), LOBYTE(_WIN32_WINNT_WINXP
), 0);
35 VERSIONHELPERAPI
IsWindowsXPSP1OrGreater(void) {
36 return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WINXP
), LOBYTE(_WIN32_WINNT_WINXP
), 1);
39 VERSIONHELPERAPI
IsWindowsXPSP2OrGreater(void) {
40 return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WINXP
), LOBYTE(_WIN32_WINNT_WINXP
), 2);
43 VERSIONHELPERAPI
IsWindowsXPSP3OrGreater(void) {
44 return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WINXP
), LOBYTE(_WIN32_WINNT_WINXP
), 3);
47 VERSIONHELPERAPI
IsWindowsVistaOrGreater(void) {
48 return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_VISTA
), LOBYTE(_WIN32_WINNT_VISTA
), 0);
51 VERSIONHELPERAPI
IsWindowsVistaSP1OrGreater(void) {
52 return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_VISTA
), LOBYTE(_WIN32_WINNT_VISTA
), 1);
55 VERSIONHELPERAPI
IsWindowsVistaSP2OrGreater(void) {
56 return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_VISTA
), LOBYTE(_WIN32_WINNT_VISTA
), 2);
59 VERSIONHELPERAPI
IsWindows7OrGreater(void) {
60 return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WIN7
), LOBYTE(_WIN32_WINNT_WIN7
), 0);
63 VERSIONHELPERAPI
IsWindows7SP1OrGreater(void) {
64 return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WIN7
), LOBYTE(_WIN32_WINNT_WIN7
), 1);
67 VERSIONHELPERAPI
IsWindows8OrGreater(void) {
68 return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WIN8
), LOBYTE(_WIN32_WINNT_WIN8
), 0);
71 VERSIONHELPERAPI
IsWindows8Point1OrGreater(void) {
72 return IsWindowsVersionOrGreater(HIBYTE(_WIN32_WINNT_WINBLUE
), LOBYTE(_WIN32_WINNT_WINBLUE
), 0);
75 VERSIONHELPERAPI
IsWindowsServer(void) {
76 OSVERSIONINFOEXW vi
= {sizeof(vi
),0,0,0,0,{0},0,0,0,VER_NT_WORKSTATION
};
77 return !VerifyVersionInfoW(&vi
, VER_PRODUCT_TYPE
, VerSetConditionMask(0, VER_PRODUCT_TYPE
, VER_EQUAL
));