Sorry, I don't see how disabling a specific compiler warning, specifically in VS2013, is supposed to fix the changed (broken) behavior of the GetVersionEx() API in Windows 8.1+
Can you elaborate a bit? On 23.10.2013 14:38, Pau Garcia i Quiles wrote: > Hello, > > As a quickfix, this also works: > > #if defined(_MSC_VER) && (_MSC_VER >= 1800) > #pragma warning (disable:4996) > #endif > > > > > On Sun, Oct 20, 2013 at 3:56 PM, MuldeR <[email protected] > <mailto:[email protected]>> wrote: > > Hello. > > As you might have read, with Windows 8.1, the GetVersion(Ex) API has been > deprecated by Microsoft and will now pretend to be Windows 8.0 (NT v6.2), > even when running under Windows 8.1 (NT v6.3). And yes, officiallay and in > other API's, Windows 8.1 /is/ NT v6.3. > > See here for details: > http://msdn.microsoft.com/en-us/library/windows/desktop/dn302074.aspx > > Microsoft says that they did this in order to prevent compatibility > problems. I think it is a horrible idea to break the API in that way. It is > also the reason why Qt happily detects Windows 8.1 as Windows 8. Actually Qt > should detect an “unknown” operating system, since there is no 8.1 (NT v6.3 > )detection code yet - I have checked latest version in Git. But Qt detects NT > v6.2, thanks to Microsoft's GetVersion(Ex) hack. In other words: > QSysInfo::windowsVersion() reports *wrong* info, starting with (and probably > not limited to) Windows 8.1. > > So let's fix QSysInfo! > > I have pulled together a solution that is based on the > VerifyVersionInfo() API, which has not been broken, fortunately. Basically, > we first call GetVersionEx() to get the "fake" version as a starting point. > Then we try to increase the version numbers from there, calling > VerifyVersionInfo() each time in order to make sure we did not exceed the > *real* version. End result will be the maximum supported version, i.e. the > *real* version number. > > > Code is here: > http://pastie.org/private/kkva8pkk7nzcmm8jjwstfa > > Tested on: Windows XP (RTM), Windows 7 SP-1, Windows 8.0, Windows 8.1 > > (should work on Windows 2000 too, but I don't really care) > > > Output on Windows 7: >> (Fake) Windows Version: 6.1 >> Trying to verify: 7.0 -->NO >> Trying to verify: 6.2 -->NO >> *Real* Windows Version: 6.1 > > Output on Windows 8.0: >> > (Fake) Windows Version: 6.2 >> > Trying to verify: 7.0 -->NO >> > Trying to verify: 6.3 -->NO >> > *Real* Windows Version: 6.2 > > Output on Windows 8.1: >> (Fake) Windows Version: 6.2 >> Trying to verify: 7.0 -->NO >> Trying to verify: 6.3 -->YES >> Trying to verify: 6.4 -->NO >> *Real* Windows Version: *6.3* > > > Regards, > MuldeR > > > _______________________________________________ > Development mailing list > [email protected] <mailto:[email protected]> > http://lists.qt-project.org/mailman/listinfo/development > > > > > -- > Pau Garcia i Quiles > http://www.elpauer.org > (Due to my workload, I may need 10 days to answer) -- http://www.youtube.com/watch_popup?v=Jay-fG9eaYk#!
_______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
