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 wBuildNumber = 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_BUILDNUMBER, VER_GREATER_EQUAL );
24 OSVERSIONINFOEXW osvi{ sizeof(OSVERSIONINFOEX) };
25 osvi.dwMajorVersion = HIBYTE(wVersion);
26 osvi.dwMinorVersion = LOBYTE(wVersion);
27 osvi.dwBuildNumber = wBuildNumber;
29 return !!VerifyVersionInfoW(&osvi, VER_MAJORVERSION | VER_MINORVERSION | VER_BUILDNUMBER, dwlConditionMask);
35 return IsWinVer_OrGreater( 0x0a00, 0 );
41 return IsWinVer_OrGreater( _WIN32_WINNT_WIN7 );
47 return IsWinVer_OrGreater( _WIN32_WINNT_VISTA );