KWSys 2015-09-11 (cfeb27cc)
Extract upstream KWSys using the following shell commands. $ git archive --prefix=upstream-kwsys/ cfeb27cc | tar x $ git shortlog --no-merges --abbrev=8 --format='%h %s' dc3fdd7f..cfeb27cc Gilles Khouzam (2): 27714139 SystemTools: Call GetVersionEx more robustly cfeb27cc SystemTools: Report Windows 7, 8, 8.1 and 10 by name
This commit is contained in:
parent
1b79433a6d
commit
7de8f67af3
|
@ -4879,11 +4879,8 @@ std::string SystemTools::GetOperatingSystemNameAndVersion()
|
|||
OSVERSIONINFOEXA osvi;
|
||||
BOOL bOsVersionInfoEx;
|
||||
|
||||
// Try calling GetVersionEx using the OSVERSIONINFOEX structure.
|
||||
// If that fails, try using the OSVERSIONINFO structure.
|
||||
|
||||
ZeroMemory(&osvi, sizeof(OSVERSIONINFOEXA));
|
||||
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
||||
ZeroMemory(&osvi, sizeof(osvi));
|
||||
osvi.dwOSVersionInfoSize = sizeof(osvi);
|
||||
|
||||
#ifdef KWSYS_WINDOWS_DEPRECATED_GetVersionEx
|
||||
# pragma warning (push)
|
||||
|
@ -4893,14 +4890,10 @@ std::string SystemTools::GetOperatingSystemNameAndVersion()
|
|||
# pragma warning (disable:4996)
|
||||
# endif
|
||||
#endif
|
||||
bOsVersionInfoEx = GetVersionEx((OSVERSIONINFO *)&osvi);
|
||||
bOsVersionInfoEx = GetVersionExA((OSVERSIONINFOA *)&osvi);
|
||||
if (!bOsVersionInfoEx)
|
||||
{
|
||||
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
|
||||
if (!GetVersionEx((OSVERSIONINFO *)&osvi))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#ifdef KWSYS_WINDOWS_DEPRECATED_GetVersionEx
|
||||
# pragma warning (pop)
|
||||
|
@ -4913,10 +4906,56 @@ std::string SystemTools::GetOperatingSystemNameAndVersion()
|
|||
case VER_PLATFORM_WIN32_NT:
|
||||
|
||||
// Test for the specific product family.
|
||||
if (osvi.dwMajorVersion == 10 && osvi.dwMinorVersion == 0)
|
||||
{
|
||||
if (osvi.wProductType == VER_NT_WORKSTATION)
|
||||
{
|
||||
res += "Microsoft Windows 10";
|
||||
}
|
||||
else
|
||||
{
|
||||
res += "Microsoft Windows Server 2016 family";
|
||||
}
|
||||
}
|
||||
|
||||
if (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 3)
|
||||
{
|
||||
if (osvi.wProductType == VER_NT_WORKSTATION)
|
||||
{
|
||||
res += "Microsoft Windows 8.1";
|
||||
}
|
||||
else
|
||||
{
|
||||
res += "Microsoft Windows Server 2012 R2 family";
|
||||
}
|
||||
}
|
||||
|
||||
if (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 2)
|
||||
{
|
||||
if (osvi.wProductType == VER_NT_WORKSTATION)
|
||||
{
|
||||
res += "Microsoft Windows 8";
|
||||
}
|
||||
else
|
||||
{
|
||||
res += "Microsoft Windows Server 2012 family";
|
||||
}
|
||||
}
|
||||
|
||||
if (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 1)
|
||||
{
|
||||
if (osvi.wProductType == VER_NT_WORKSTATION)
|
||||
{
|
||||
res += "Microsoft Windows 7";
|
||||
}
|
||||
else
|
||||
{
|
||||
res += "Microsoft Windows Server 2008 R2 family";
|
||||
}
|
||||
}
|
||||
|
||||
if (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 0)
|
||||
{
|
||||
#if (_MSC_VER >= 1300)
|
||||
if (osvi.wProductType == VER_NT_WORKSTATION)
|
||||
{
|
||||
res += "Microsoft Windows Vista";
|
||||
|
@ -4925,9 +4964,6 @@ std::string SystemTools::GetOperatingSystemNameAndVersion()
|
|||
{
|
||||
res += "Microsoft Windows Server 2008 family";
|
||||
}
|
||||
#else
|
||||
res += "Microsoft Windows Vista or Windows Server 2008";
|
||||
#endif
|
||||
}
|
||||
|
||||
if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 2)
|
||||
|
@ -4956,7 +4992,6 @@ std::string SystemTools::GetOperatingSystemNameAndVersion()
|
|||
{
|
||||
// Test for the workstation type.
|
||||
|
||||
#if (_MSC_VER >= 1300)
|
||||
if (osvi.wProductType == VER_NT_WORKSTATION)
|
||||
{
|
||||
if (osvi.dwMajorVersion == 4)
|
||||
|
@ -5028,7 +5063,6 @@ std::string SystemTools::GetOperatingSystemNameAndVersion()
|
|||
}
|
||||
}
|
||||
}
|
||||
#endif // Visual Studio 7 and up
|
||||
}
|
||||
|
||||
// Test for specific product on Windows NT 4.0 SP5 and earlier
|
||||
|
|
Loading…
Reference in New Issue