Grzyb wrote on Yesterday, 05:12:
So, once again:
Windows 9x = DOS + WfW + extended Win32s
Or am I missing something?
Basically right, yes. WfW 3.11 got some code made during Windows 95 development, so there's a connection on code level anyway.
Such as TCP/IP-32 or 32-Bit File Accesss, I think. It (Win95) even identified itself as Windows 3.95 to Windows 3.1x applications.
Windows 95 was a 16/32-Bit hybrid that used lots of thunking, it used Win32c API:
Win16 applications ran in co-operative multitasking, while Win32 (and DOS) applications ran via preemptive multitasking.
Usually, Win32c applications started at a fixed memory location (0x10000) that made them incompatible with Win32s.
On Windows 3.1x+Win32s the memory is shared between all Win16/Win32s applications and co-operative multitasking is used.
Strictly speaking, there are no separate Win32s/Win32c applications.
They are merely Win32 applications with some limitations/features.
Win32s applications use no threading, draw no Bézier curves (GDI) and have relocation tables, for example.
And Win32c applications added support for Windows 95 specific things.
The original Windows NT 3.1 era Win32 applications did contain relocation tables by default, too, however. Many can run on Win31+Win32s.
Beginning with Windows 95, though, both Win32s 1.30c and NT 3.5x did use Windows 95 as a role model rather than the old Windows NT 3.1.
Win32s 1.30c added severaldummy functions that did nothing except keeping more recent applications from crashing.
Windows NT 3.51 even got that "NewShell" update (optional) that made NT look like upcoming Windows NT 4.
The big difference between Win32s extension for Windows 3.1x and Win32c in Windows 95 was that Win32s was a compatibility layer.
It didn't add any new API functions but tried to map Win32 API calls issued from Windows applications down to the old Windows 3.1x API.
It basically was a Win16 <> Win32 converter.
"Basically" because it did a few more things, too. Text character handling, for example.
On Japanese Windows 3.1, the Japanese Win32s is required, too.
Otherwise, if using English version, Japanese Win32 applications turn out looking gibberish.
Windows 95 also differed in graphics drivers.
It was fully backwards compatible to Windows 3.1 drivers, but also supported "mini" drivers:
The new Windows 95 graphics drivers nolonger contain big parts of GDI, but use the GDI that's part of Windows 95.
The graphics drivers merely contain the hardware dependend part.
PS: The funny thing is that Win16 applications could make use of new features if they ran on Windows 95.
That's because Windows 95 was a 16/32-Bit hybrid.
So there are basically Windows 95 applications that are 16-Bit applications (NE header, Win16) and won’t run on Windows 3.1x or NT.
Likewise, some Win32 applications written for Win32s environment of Windows 3.1x won’t run on any other Windows (9x, NT) because they rely on 16-Bit DLLs or similar stuff.
"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel
//My video channel//