-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathdcxVersionInfo.cpp
More file actions
50 lines (44 loc) · 1.95 KB
/
dcxVersionInfo.cpp
File metadata and controls
50 lines (44 loc) · 1.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include "defines.h"
#include "dcxVersionInfo.h"
namespace
{
bool IsWindows11OrGreater() noexcept
{
constexpr WORD wMajorVersion = HIBYTE(_WIN32_WINNT_WINTHRESHOLD), wMinorVersion = LOBYTE(_WIN32_WINNT_WINTHRESHOLD), wBuildMajor = 21996ui16;
OSVERSIONINFOEXW osvi = { sizeof(osvi), 0, 0, 0, 0,{ 0 }, 0, 0 };
DWORDLONG const dwlConditionMask = VerSetConditionMask(
VerSetConditionMask(
VerSetConditionMask(
0, VER_MAJORVERSION, VER_GREATER_EQUAL),
VER_MINORVERSION, VER_GREATER_EQUAL),
VER_BUILDNUMBER, VER_GREATER_EQUAL);
osvi.dwMajorVersion = wMajorVersion;
osvi.dwMinorVersion = wMinorVersion;
osvi.dwBuildNumber = wBuildMajor;
return VerifyVersionInfoW(&osvi, VER_MAJORVERSION | VER_MINORVERSION | VER_BUILDNUMBER, dwlConditionMask) != FALSE;
}
bool IsWindows10Build18362OrGreater() noexcept
{
constexpr WORD wMajorVersion = HIBYTE(_WIN32_WINNT_WINTHRESHOLD), wMinorVersion = LOBYTE(_WIN32_WINNT_WINTHRESHOLD), wBuildMajor = 18362ui16;
OSVERSIONINFOEXW osvi = { sizeof(osvi), 0, 0, 0, 0,{ 0 }, 0, 0 };
DWORDLONG const dwlConditionMask = VerSetConditionMask(
VerSetConditionMask(
VerSetConditionMask(
0, VER_MAJORVERSION, VER_GREATER_EQUAL),
VER_MINORVERSION, VER_GREATER_EQUAL),
VER_BUILDNUMBER, VER_GREATER_EQUAL);
osvi.dwMajorVersion = wMajorVersion;
osvi.dwMinorVersion = wMinorVersion;
osvi.dwBuildNumber = wBuildMajor;
return VerifyVersionInfoW(&osvi, VER_MAJORVERSION | VER_MINORVERSION | VER_BUILDNUMBER, dwlConditionMask) != FALSE;
}
}
dcxVersionInfo::dcxVersionInfo() noexcept
{
m_bVista = IsWindowsVistaOrGreater(); // OS is Vista+
m_bWin7 = IsWindows7OrGreater(); // OS is Windows7+
m_bWin8 = IsWindows8OrGreater(); // OS is Windows8+
m_bWin10 = IsWindows10OrGreater(); // OS is Windows10+
m_bWin10NewerBuild = IsWindows10Build18362OrGreater(); // OS is Windows10 Build 18362+
m_bWin11 = IsWindows11OrGreater(); // OS is Windows11+
}