Add versions for WinME and WinXP.

Fix the 16bit version return for Win2000.
More closely match the Win95/98 CSDVersion fields.
Enhance documentation of Win95 version numbers.
Confirm the existing data for Win2000.
This commit is contained in:
Francois Gouget 2001-11-06 00:49:48 +00:00 committed by Alexandre Julliard
parent 7300bc32e7
commit 4ae7195c25
2 changed files with 51 additions and 21 deletions

View file

@ -70,7 +70,7 @@ static const struct option_descr option_table[] =
{ "version", 'v', 0, 0, do_version, { "version", 'v', 0, 0, do_version,
"--version,-v Display the Wine version" }, "--version,-v Display the Wine version" },
{ "winver", 0, 1, 1, VERSION_ParseWinVersion, { "winver", 0, 1, 1, VERSION_ParseWinVersion,
"--winver Version to imitate (win95,nt40,win31,nt2k,win98,nt351,win30,win20)" }, "--winver Version to imitate (win95,win98,winme,nt351,nt40,win2k,winxp,win20,win30,win31)" },
{ NULL, 0, 0, 0, NULL, NULL } /* terminator */ { NULL, 0, 0, 0, NULL, NULL } /* terminator */
}; };

View file

@ -29,10 +29,11 @@ typedef enum
WIN31, /* Windows 3.1 */ WIN31, /* Windows 3.1 */
WIN95, /* Windows 95 */ WIN95, /* Windows 95 */
WIN98, /* Windows 98 */ WIN98, /* Windows 98 */
/* insert Windows ME here as WINME if needed */ WINME, /* Windows Me */
NT351, /* Windows NT 3.51 */ NT351, /* Windows NT 3.51 */
NT40, /* Windows NT 4.0 */ NT40, /* Windows NT 4.0 */
NT2K, /* Windows 2000 */ NT2K, /* Windows 2000 */
WINXP, /* Windows XP */
NB_WINDOWS_VERSIONS NB_WINDOWS_VERSIONS
} WINDOWS_VERSION; } WINDOWS_VERSION;
@ -77,22 +78,40 @@ static VERSION_DATA VersionData[NB_WINDOWS_VERSIONS] =
{ {
0x07005F03, 0x07005F03,
0xC0000004, 0xC0000004,
{ {
/* 0x40003B6 == 4.00.950 == Win95 orig. release and Win95a /* Win95: 4, 0, 0x40003B6, ""
* 0x4000457 == 4.00.1111 == Win95B aka Win95 OSR2 * Win95sp1: 4, 0, 0x40003B6, " A " (according to doc)
* Win95a/B can be discerned via regkey SubVersionNumber */ * Win95osr2: 4, 0, 0x4000457, " B " (according to doc)
* Win95osr2.1: 4, 3, 0x40304BC, " B " (according to doc)
* Win95osr2.5: 4, 3, 0x40304BE, " C " (according to doc)
* Win95a/b can be discerned via regkey SubVersionNumber
* See also:
* http://support.microsoft.com/support/kb/articles/q158/2/38.asp
*/
sizeof(OSVERSIONINFOA), 4, 0, 0x40003B6, sizeof(OSVERSIONINFOA), 4, 0, 0x40003B6,
VER_PLATFORM_WIN32_WINDOWS, "Win95" VER_PLATFORM_WIN32_WINDOWS, ""
} }
}, },
/* WIN98 */ /* WIN98 */
{ {
0x070A5F03, 0x070A5F03,
0xC0000A04, 0xC0000A04,
{ {
sizeof(OSVERSIONINFOA), 4, 10, 0x40A07CE, /* Win98: 4, 10, 0x40A07CE, " "
VER_PLATFORM_WIN32_WINDOWS, "Win98" * Win98SE: 4, 10, 0x40A08AE, " A "
} */
sizeof(OSVERSIONINFOA), 4, 10, 0x40A07CE,
VER_PLATFORM_WIN32_WINDOWS, " "
}
},
/* WINME */
{
0x07005F03, /* Assuming DOS 7 like the other Win9x */
0xC0005A04,
{
sizeof(OSVERSIONINFOA), 4, 90, 0x45A0BB8,
VER_PLATFORM_WIN32_WINDOWS, " "
}
}, },
/* NT351 */ /* NT351 */
{ {
@ -101,7 +120,7 @@ static VERSION_DATA VersionData[NB_WINDOWS_VERSIONS] =
{ {
sizeof(OSVERSIONINFOA), 3, 51, 0x421, sizeof(OSVERSIONINFOA), 3, 51, 0x421,
VER_PLATFORM_WIN32_NT, "Service Pack 2" VER_PLATFORM_WIN32_NT, "Service Pack 2"
} }
}, },
/* NT40 */ /* NT40 */
{ {
@ -112,13 +131,22 @@ static VERSION_DATA VersionData[NB_WINDOWS_VERSIONS] =
VER_PLATFORM_WIN32_NT, "Service Pack 6" VER_PLATFORM_WIN32_NT, "Service Pack 6"
} }
}, },
/* NT2K FIXME: verify values */ /* NT2K */
{ {
0x05000A03, /* ? */ 0x05005F03,
0x08930005, /* better build ? using 2195 (final) for now */ 0x08930005,
{ {
sizeof(OSVERSIONINFOA), 5, 0, 0x893, sizeof(OSVERSIONINFOA), 5, 0, 0x893,
VER_PLATFORM_WIN32_NT, "FIXME: OS version string not known yet" VER_PLATFORM_WIN32_NT, "Service Pack 2"
}
},
/* WINXP */
{
0x05005F03, /* Assuming DOS 5 like the other NT */
0x0A280105,
{
sizeof(OSVERSIONINFOA), 5, 1, 0xA28,
VER_PLATFORM_WIN32_NT, ""
} }
} }
}; };
@ -130,9 +158,11 @@ static const char *WinVersionNames[NB_WINDOWS_VERSIONS] =
"win31", "win31",
"win95", "win95",
"win98", "win98",
"winme",
"nt351", "nt351",
"nt40", "nt40",
"win2000,win2k,nt2k,nt2000" "win2000,win2k,nt2k,nt2000",
"winxp"
}; };
/* if one of the following dlls is importing ntdll the windows /* if one of the following dlls is importing ntdll the windows