实现:
bool Win32Native::IsWindows11OrLaterVersion() noexcept
{
DWORD dwMajorVersion;
DWORD dwMinorVersion;
DWORD dwBuildNumber;
if (!RtlGetSystemVersion(dwMajorVersion, dwMinorVersion, dwBuildNumber))
{
return false;
}
// 10.0.22000
return IfVersion({ dwMajorVersion, dwMinorVersion, dwBuildNumber }, { 10, 0, 22000 });
}
bool Win32Native::RtlGetSystemVersion(DWORD& dwMajorVersion, DWORD& dwMinorVersion, DWORD& dwBuildNumber) noexcept
{
typedef LONG(WINAPI* RtlGetVersion_Proc)(PRTL_OSVERSIONINFOW lpVersionInformation);
static RtlGetVersion_Proc __RtlGetVersion__ = (RtlGetVersion_Proc)GetProcAddress("ntdll.dll", "RtlGetVersion");
if (NULL == __RtlGetVersion__)
{
return false;
}