miscellaneous Windows XP fixes

This commit is contained in:
Roy Tam 2019-02-22 21:36:33 +08:00
commit 0d6f4484c4
12 changed files with 404 additions and 28 deletions

View file

@ -84,7 +84,45 @@ IsWindowsBuildOrLater(uint32_t aBuild)
return false;
}
#if defined(_M_X64) || defined(_M_AMD64)
inline bool
IsWindows10BuildOrLater(uint32_t aBuild)
{
static uint32_t minBuild = 0;
static uint32_t maxBuild = UINT32_MAX;
if (minBuild >= aBuild) {
return true;
}
if (aBuild >= maxBuild) {
return false;
}
OSVERSIONINFOEX info;
ZeroMemory(&info, sizeof(OSVERSIONINFOEX));
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
info.dwMajorVersion = 10;
info.dwBuildNumber = aBuild;
DWORDLONG conditionMask = 0;
VER_SET_CONDITION(conditionMask, VER_MAJORVERSION, VER_GREATER_EQUAL);
VER_SET_CONDITION(conditionMask, VER_MINORVERSION, VER_GREATER_EQUAL);
VER_SET_CONDITION(conditionMask, VER_BUILDNUMBER, VER_GREATER_EQUAL);
VER_SET_CONDITION(conditionMask, VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL);
VER_SET_CONDITION(conditionMask, VER_SERVICEPACKMINOR, VER_GREATER_EQUAL);
if (VerifyVersionInfo(&info, VER_MAJORVERSION | VER_MINORVERSION |
VER_BUILDNUMBER | VER_SERVICEPACKMAJOR |
VER_SERVICEPACKMINOR, conditionMask)) {
minBuild = aBuild;
return true;
}
maxBuild = aBuild;
return false;
}
#if 0//defined(_M_X64) || defined(_M_AMD64)
// We support only Win7 or later on Win64.
MOZ_ALWAYS_INLINE bool
IsXPSP3OrLater()
@ -183,6 +221,12 @@ IsWin10OrLater()
return IsWindowsVersionOrLater(0x0a000000ul);
}
MOZ_ALWAYS_INLINE bool
IsWin10CreatorsUpdateOrLater()
{
return IsWindows10BuildOrLater(15063);
}
MOZ_ALWAYS_INLINE bool
IsNotWin7PreRTM()
{