help me with WIN95 value of version16()

Francois Gouget fgouget at
Mon Aug 27 10:57:17 CDT 2001

On Mon, 27 Aug 2001, Gerard Patel wrote:
> I can compile and run 16 bits apps, on win3.1 if needed (it's a pain
> because it's old hardware I hardly use otherwise)


> GetVersion 16 bits must be a special case, returns 3.95, while 32 bits apps
> get 4.00

   Yes, I think I read something about that at the time.
   IIRC, MS messed up with GetVersion16. They documented
HIWORD(GetVersion16()) as returning the major version number when it was
in fact in the lower version number or vice-versa. Because of that when
they switched to Win95 they wanted the new version number to be
greater than the old, no matter how you read it, hence the 3.95:
  0x5f03: 3.95 > 3.1 and 95.3 > 1.3
  0x0304: 4.3 > 3.1 and 3.4 > 1.3
  0x0004: 4.0 would not do since 0.4 < 1.3

   Now, why would we have a version with 3.95 and another with 3.4? Is
it a Win95 vs Win95 OSR2 issue? Localization should not affect this
(though everything is possible).

Francois Gouget         fgouget at
    I haven't lost my mind, it's backed up on tape around here somewhere...

More information about the wine-devel mailing list