MUtilities development repository
Revisão | 7605972d020e6ce1f388921baa0663de5af12063 (tree) |
---|---|
Hora | 2021-12-25 08:40:13 |
Autor | LoRd_MuldeR <mulder2@gmx....> |
Commiter | LoRd_MuldeR |
Small code simplification in OS detection code.
@@ -75,7 +75,6 @@ namespace MUtils | ||
75 | 75 | unsigned int versionMinor; ///< The *minor* version of the underlaying operating system |
76 | 76 | unsigned int versionBuild; ///< The *build* number of the underlaying operating system |
77 | 77 | unsigned int versionSPack; ///< The *service pack* version of the underlaying operating system |
78 | - bool overrideFlag; | |
79 | 78 | |
80 | 79 | MUTILS_API bool operator> (const _os_version_t &rhs) const; |
81 | 80 | MUTILS_API bool operator>= (const _os_version_t &rhs) const; |
@@ -277,21 +277,20 @@ static QReadWriteLock g_os_version_lock; | ||
277 | 277 | static const struct |
278 | 278 | { |
279 | 279 | MUtils::OS::Version::os_version_t version; |
280 | - bool checkBuildNo; | |
281 | 280 | const char friendlyName[64]; |
282 | 281 | } |
283 | 282 | g_os_version_lut[] = |
284 | 283 | { |
285 | - { MUtils::OS::Version::WINDOWS_WIN2K, 0, "Windows 2000" }, //2000 | |
286 | - { MUtils::OS::Version::WINDOWS_WINXP, 0, "Windows XP or Windows XP Media Center Edition" }, //XP | |
287 | - { MUtils::OS::Version::WINDOWS_XPX64, 0, "Windows Server 2003 or Windows XP x64" }, //XP_x64 | |
288 | - { MUtils::OS::Version::WINDOWS_VISTA, 0, "Windows Vista or Windows Server 2008" }, //Vista | |
289 | - { MUtils::OS::Version::WINDOWS_WIN70, 0, "Windows 7 or Windows Server 2008 R2" }, //7 | |
290 | - { MUtils::OS::Version::WINDOWS_WIN80, 0, "Windows 8 or Windows Server 2012" }, //8 | |
291 | - { MUtils::OS::Version::WINDOWS_WIN81, 0, "Windows 8.1 or Windows Server 2012 R2" }, //8.1 | |
292 | - { MUtils::OS::Version::WINDOWS_WIN10, 0, "Windows 10 or Windows Server 2016" }, //10 | |
293 | - { MUtils::OS::Version::WINDOWS_WIN11, 1, "Windows 11 or Windows Server 2022" }, //11 | |
294 | - { MUtils::OS::Version::UNKNOWN_OPSYS, 0, "N/A" } | |
284 | + { MUtils::OS::Version::WINDOWS_WIN2K, "Windows 2000" }, //2000 | |
285 | + { MUtils::OS::Version::WINDOWS_WINXP, "Windows XP or Windows XP Media Center Edition" }, //XP | |
286 | + { MUtils::OS::Version::WINDOWS_XPX64, "Windows Server 2003 or Windows XP x64" }, //XP_x64 | |
287 | + { MUtils::OS::Version::WINDOWS_VISTA, "Windows Vista or Windows Server 2008" }, //Vista | |
288 | + { MUtils::OS::Version::WINDOWS_WIN70, "Windows 7 or Windows Server 2008 R2" }, //7 | |
289 | + { MUtils::OS::Version::WINDOWS_WIN80, "Windows 8 or Windows Server 2012" }, //8 | |
290 | + { MUtils::OS::Version::WINDOWS_WIN81, "Windows 8.1 or Windows Server 2012 R2" }, //8.1 | |
291 | + { MUtils::OS::Version::WINDOWS_WIN10, "Windows 10 or Windows Server 2016" }, //10 | |
292 | + { MUtils::OS::Version::WINDOWS_WIN11, "Windows 11 or Windows Server 2022" }, //11 | |
293 | + { MUtils::OS::Version::UNKNOWN_OPSYS, "N/A" } | |
295 | 294 | }; |
296 | 295 | |
297 | 296 | //OS version data dtructures |
@@ -308,15 +307,15 @@ namespace MUtils | ||
308 | 307 | bool os_version_t::operator<= (const os_version_t &rhs) const { return (versionMajor < rhs.versionMajor) || ((versionMajor == rhs.versionMajor) && (versionMinor < rhs.versionMinor)) || ((versionMajor == rhs.versionMajor) && (versionMinor == rhs.versionMinor) && (versionBuild <= rhs.versionBuild)); } |
309 | 308 | |
310 | 309 | //Known Windows NT versions |
311 | - const os_version_t WINDOWS_WIN2K = { OS_WINDOWS, 5, 0, 2195, 0 }; // 2000 | |
312 | - const os_version_t WINDOWS_WINXP = { OS_WINDOWS, 5, 1, 2600, 0 }; // XP | |
313 | - const os_version_t WINDOWS_XPX64 = { OS_WINDOWS, 5, 2, 3790, 0 }; // XP_x64 | |
314 | - const os_version_t WINDOWS_VISTA = { OS_WINDOWS, 6, 0, 6000, 0 }; // Vista | |
315 | - const os_version_t WINDOWS_WIN70 = { OS_WINDOWS, 6, 1, 7600, 0 }; // 7 | |
316 | - const os_version_t WINDOWS_WIN80 = { OS_WINDOWS, 6, 2, 9200, 0 }; // 8 | |
317 | - const os_version_t WINDOWS_WIN81 = { OS_WINDOWS, 6, 3, 9600, 0 }; // 8.1 | |
318 | - const os_version_t WINDOWS_WIN10 = { OS_WINDOWS, 10, 0, 10240, 0 }; // 10 | |
319 | - const os_version_t WINDOWS_WIN11 = { OS_WINDOWS, 10, 0, 22000, 0 }; // 11 | |
310 | + const os_version_t WINDOWS_WIN2K = { OS_WINDOWS, 5U, 0U, 0U, 0U }; // 2000 | |
311 | + const os_version_t WINDOWS_WINXP = { OS_WINDOWS, 5U, 1U, 0U, 0U }; // XP | |
312 | + const os_version_t WINDOWS_XPX64 = { OS_WINDOWS, 5U, 2U, 0U, 0U }; // XP_x64 | |
313 | + const os_version_t WINDOWS_VISTA = { OS_WINDOWS, 6U, 0U, 0U, 0U }; // Vista | |
314 | + const os_version_t WINDOWS_WIN70 = { OS_WINDOWS, 6U, 1U, 0U, 0U }; // 7 | |
315 | + const os_version_t WINDOWS_WIN80 = { OS_WINDOWS, 6U, 2U, 0U, 0U }; // 8 | |
316 | + const os_version_t WINDOWS_WIN81 = { OS_WINDOWS, 6U, 3U, 0U, 0U }; // 8.1 | |
317 | + const os_version_t WINDOWS_WIN10 = { OS_WINDOWS, 10U, 0U, 0U, 0U }; // 10 | |
318 | + const os_version_t WINDOWS_WIN11 = { OS_WINDOWS, 10U, 0U, 22000U, 0U }; // 11 | |
320 | 319 | |
321 | 320 | //Unknown OS |
322 | 321 | const os_version_t UNKNOWN_OPSYS = { OS_UNKNOWN, 0, 0, 0, 0 }; // N/A |
@@ -370,16 +369,14 @@ static bool rtl_get_version(OSVERSIONINFOEXW *const osInfo) | ||
370 | 369 | |
371 | 370 | #pragma warning(pop) |
372 | 371 | |
373 | -static bool get_real_os_version(unsigned int *const major, unsigned int *const minor, unsigned int *const build, unsigned int *const spack, bool *const pbOverride) | |
372 | +static bool get_real_os_version(unsigned int *const major, unsigned int *const minor, unsigned int *const build, unsigned int *const spack) | |
374 | 373 | { |
375 | 374 | static const DWORD MAX_VERSION = MAXWORD; |
376 | 375 | static const DWORD MAX_BUILDNO = MAXINT; |
377 | 376 | static const DWORD MAX_SRVCPCK = MAXWORD; |
378 | - | |
379 | - *major = *minor = *build = *spack = 0U; | |
380 | - *pbOverride = false; | |
381 | 377 | |
382 | 378 | //Initialize local variables |
379 | + *major = *minor = *build = *spack = 0U; | |
383 | 380 | OSVERSIONINFOEXW osvi; |
384 | 381 | memset(&osvi, 0, sizeof(OSVERSIONINFOEXW)); |
385 | 382 | osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXW); |
@@ -428,15 +425,14 @@ const MUtils::OS::Version::os_version_t &MUtils::OS::os_version(void) | ||
428 | 425 | } |
429 | 426 | |
430 | 427 | //Detect OS version |
431 | - unsigned int major, minor, build, spack; bool overrideFlg; | |
432 | - if(get_real_os_version(&major, &minor, &build, &spack, &overrideFlg)) | |
428 | + unsigned int major, minor, build, spack; | |
429 | + if(get_real_os_version(&major, &minor, &build, &spack)) | |
433 | 430 | { |
434 | 431 | g_os_version_info.type = Version::OS_WINDOWS; |
435 | 432 | g_os_version_info.versionMajor = major; |
436 | 433 | g_os_version_info.versionMinor = minor; |
437 | 434 | g_os_version_info.versionBuild = build; |
438 | 435 | g_os_version_info.versionSPack = spack; |
439 | - g_os_version_info.overrideFlag = overrideFlg; | |
440 | 436 | } |
441 | 437 | else |
442 | 438 | { |
@@ -454,7 +450,7 @@ const char *MUtils::OS::os_friendly_name(const MUtils::OS::Version::os_version_t | ||
454 | 450 | for (size_t i = 0; g_os_version_lut[i].version.type != MUtils::OS::Version::OS_UNKNOWN; i++) |
455 | 451 | { |
456 | 452 | const MUtils::OS::Version::os_version_t &version = g_os_version_lut[i].version; |
457 | - if ((os_version.versionMajor == version.versionMajor) && (os_version.versionMinor == version.versionMinor) && ((!g_os_version_lut[i].checkBuildNo) || (os_version.versionBuild >= version.versionBuild))) | |
453 | + if ((os_version.versionMajor == version.versionMajor) && (os_version.versionMinor == version.versionMinor) && (os_version.versionBuild >= version.versionBuild)) | |
458 | 454 | { |
459 | 455 | friendly_name = g_os_version_lut[i].friendlyName; |
460 | 456 | } |
@@ -359,17 +359,6 @@ QApplication *MUtils::Startup::create_qt(int &argc, char **argv, const QString & | ||
359 | 359 | qFatal("%s", MUTILS_L1STR(QApplication::tr("Executable '%1' requires Windows 8.1 or later.").arg(executableName))); |
360 | 360 | } |
361 | 361 | |
362 | - //Check for compat mode | |
363 | - if(osVersion.overrideFlag && (osVersion <= MUtils::OS::Version::WINDOWS_WIN10)) | |
364 | - { | |
365 | - qWarning("Windows compatibility mode detected!"); | |
366 | - if(!arguments.contains("ignore-compat-mode")) | |
367 | - { | |
368 | - qFatal("%s", QApplication::tr("Executable '%1' doesn't support Windows compatibility mode.").arg(executableName).toLatin1().constData()); | |
369 | - return NULL; | |
370 | - } | |
371 | - } | |
372 | - | |
373 | 362 | //Check for Wine |
374 | 363 | if(MUtils::OS::running_on_wine()) |
375 | 364 | { |