A Few Decades Late Book Reviews
Unauthorized Windows 95 Developer’s Resource Kit, by Andrew Schulman
IDG Books, November 1994; 593 pages, ISBN 1-56884-305-4; $39.99
A testimony to the incredible level of hype surrounding Microsoft’s “Chicago”, Unauthorized Windows 95 was published nearly a year before Windows 95 was available for purchase (October 1994 vs. August 1995). The book was written based on preview builds of Chicago including the official Windows 95 Beta-1 (May 1994). Although Microsoft made minor changes after that point, everything Mr. Schulman wrote about the architecture of Windows 95 applies to the released product.
The author appears to have had two major sources of motivation: taking an in-depth look at the inner workings of the OS that was likely to rule the world for years, and debunking various claims Microsoft made about the architecture and technology of Chicago.
The book starts with a look at the PC software industry and the dominant role of Microsoft, underscoring the importance of Windows 95 and the need to analyze it. Mr. Schulman dismisses both NT and OS/2 as unworthy of study due to their limited market reach.
The bulk of the book examines the question of what the real architecture of Windows 95 is, and exactly what role DOS and 16-bit code plays or doesn’t play. In the first few chapters, Mr. Schulman shows that yes, there’s still good old DOS in Windows 95, and it is used even for Win32 applications.
Chapter 6 demonstrates that Windows consists of two architecturally quite separate components: The actual Windows GUI and the underlying OS (VMM) with a built-in DPMI DOS extender. The DOS extender can be used to start arbitrary programs, and conversely, the GUI can be run under DOS extenders other than the one built into Windows.
Throughout the book, but especially in Chapter 8, the author shows how the Windows 95 OS is very far from being revolutionary but rather an incremental step in the Windows 3.0 Enhanced mode/Windows 3.1 Enhanced mode/Windows for Workgroups 3.11 line. This is presented as a good thing, using proven technology rather than inventing something new from scratch.
Because of the continuous evolution, a good deal of the book also applies to Windows 3.x, with a special emphasis on Windows for Workgroups 3.11. The author shows how the overall architecture did not change much since Windows 3.0 Enhanced mode, but over time Windows implemented more and more functionality in protected mode—notably 32-bit disk access (32BDA) in Windows 3.1 and then 32-bit file access (32BFA) in Windows for Workgroups 3.11. Examples demonstrate that even though Windows (and DOS) applications generate DOS INT 21h calls, a vast majority of those calls never reaches 16-bit real-mode DOS code and is handled by 32-bit protected-mode VxDs instead.
In Chapter 9 (page 298), Mr. Schulman draws important parallels between the Windows VMM and the original IBM VM/370, showing both the conceptual similarities and differences (such as the fact that the Windows VMM cannot be nested). This chapter is devoted to the virtual 8086 mode of 386 and later CPUs, and demonstrates how Windows is in control even when executing DOS code.
Chapter 11 is a key part of the book and examines the highly complex relationship between Windows and DOS. Some DOS calls are entirely emulated by VxDs, some calls are passed down but real-mode code calls back into Windows (possibly several times), and only a relatively small number of calls is processed by pure real-mode code. This goes for both DOS and BIOS services.
The final chapters explore the use of 16-bit code in the Windows GUI itself, including numerous 16-bit calls made on behalf of Win32 applications. Thunking is described in detail, as is the infamous Win16Mutex (formerly known as Win16Lock). The claim that Windows 95 is a 32-bit operating system is shown to be very much an exaggeration.
Occasionally, there are minor errors in the book. For example, Mr. Schulman often quite appropriately refers to Windows/386 as the ultimate progenitor of Chicago, but seems to be unaware that the product was first released in the Fall of 1987 and not in 1988. That said, he is hardly alone in making that mistake.
Sometimes Mr. Schulman’s insatiable curiosity unexpectedly takes a break. For example in a sidebar on page 221, it is mentioned that in Windows for Workgroups 3.11 with 32-bit file access, the performance improvement is reported to differ significantly between IDE and SCSI systems. The author only examines Windows running on an IDE system and makes no attempt to explain the difference in behavior.
In one instance (page 295) the author oddly claims that Windows 95’s DOS support is just like Windows NT VDM or OS/2 MVDM, even though elsewhere he spends considerable amount of ink showing the significant differences.
On the whole, Unauthorized Windows 95 consistently takes a scientific approach to analyzing Windows 95, first empirically establishing facts and then drawing conclusions. It openly shows disdain for slick marketing talk which glosses over facts, and instead relies upon proof by experiment. It is an excellent complement to more high-level books such as Inside Windows 95, which was published even earlier and which is in fact mentioned several times (usually in order to correct some gross oversimplification). Mr. Schulman clearly enjoys refuting various sweeping claims about the Windows 95 architecture made by or on behalf of Microsoft and published in e.g the above-mentioned Inside Windows 95 or the Microsoft Systems Journal.
After Unauthorized Windows 95 was published, Microsoft made numerous minor changed to Windows 95, which affected several utilities that came with the book. In almost all cases, updated versions of the utilities are available. However, the changes did not invalidate any of the key points that Mr. Schulman had made.
Finally, it should be noted that there were two editions of Unauthorized Windows 95. There was Unauthorized Windows 95: A Developer’s Guide to Exploring the Foundations of Windows “Chicago” and Unauthorized Windows 95: Developer’s Resource Kit (reviewed here). The book content was the same, but the latter additionally included The Programmer’s Shop Smash Hits for Programmers CD-ROM, a disc with a number of trial versions of developer tools.