[Oberon] Size of LONGINT in ETHOberon
schierlm at gmx.de
Thu Feb 14 18:46:56 CET 2019
Am 12.02.2019 um 13:02 schrieb Jörg:
> All Windows versions "6.0.x" were called "Windows Vista".
> The versions
> - 6.1.x are Windows 7 and Co.
> - 6.2.x are Windows 8 and Co.
> - 6.3.x are Windows 8.1 and Co.
> - 10.0.x are Windows 10...
> The string "Windows Vista" is actually wrong, but at the time when the Oberon plugin came out, no other Windows naming was known...
To be precise, the windows version number (as returned by GetVersionEx
WINAPI call) on Windows 8.1 and 10 depends on the manifest of the
application that is *calling* the API.
In case the manifest of the application does *not* declare Windows 8.1
support, GetVersionEx will return 6.2.x on Windows 8.1 and Windows 10
(just like on Windows 8). In case the manifest of the application
declares Windows 8.1 support but *not* Windows 10 support, GetVersionEx
will return 6.3.x on Windows 10 (just like on 8.1).
Yes, that is a mess, but apparently too many apps use GetVersionEx to
check if they are "compatible" with the OS, which made Microsoft go this
drastic step (and which also is the reason that Windows 7/8/8.1 have
major version of 6...).
In Windows versions older than 8.1, you could trigger the same behaviour
by running the application "in compatibility mode": Running an
application on Vista/7/8/8.1/10 in "XP compatibility mode" will make the
GetVersionEx call return 5.1.x. In other words, running in
"compatibility mode" is the normal behaviour starting from Windows 8.1,
unless the application declares support for a more recent Windows
version in its manifest.
Therefore, if you have some old application (like the Oberon system for
Windows), it will probably have no such manifest and therefore will also
detect Windows 10 as being "Windows Vista", despite the major version
jumped from 6 to 10.
More information about the Oberon