openvpn 2.3.10
[tomato.git] / release / src / router / openvpn / src / compat / compat-versionhelpers.h
blobf634091a0fd3de9e711fad531d7cdbd6c3a48310
1 /**
2 * This file is part of the mingw-w64 runtime package.
3 * No warranty is given; refer to the file DISCLAIMER within this package.
4 */
6 #ifndef _INC_VERSIONHELPERS
7 #define _INC_VERSIONHELPERS
9 #include <winapifamily.h>
11 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && !defined(__WIDL__)
13 #ifdef __cplusplus
14 #define VERSIONHELPERAPI inline bool
15 #else
16 #define VERSIONHELPERAPI FORCEINLINE BOOL
17 #endif
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));
80 #endif
81 #endif