2 * @file Win_VersionHelper.h
4 * @brief Defines quick-and-dirty runtime Windows version checking.
6 * All we need in WinMerge is `IsWin7_OrGreater()`
7 * But other possibilities (and slightly different implementation) can be seen in ...
8 * 'C:\Program Files (x86)\Windows Kits\10\Include\10.0.17134.0\um\VersionHelpers.h'
17 IsWinVer_OrGreater(WORD wVersion, WORD wServicePack = 0)
19 DWORDLONG dwlConditionMask = 0;
20 VER_SET_CONDITION( dwlConditionMask, VER_MAJORVERSION, VER_GREATER_EQUAL );
21 VER_SET_CONDITION( dwlConditionMask, VER_MINORVERSION, VER_GREATER_EQUAL );
22 VER_SET_CONDITION( dwlConditionMask, VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL );
24 OSVERSIONINFOEXW osvi;
25 ::ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
26 osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
27 osvi.dwMajorVersion = HIBYTE(wVersion);
28 osvi.dwMinorVersion = LOBYTE(wVersion);
29 osvi.wServicePackMajor = wServicePack;
31 return !!VerifyVersionInfoW(&osvi, VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR, dwlConditionMask);
38 return IsWinVer_OrGreater( _WIN32_WINNT_WIN7 );
44 return IsWinVer_OrGreater( _WIN32_WINNT_VISTA );