In last month's "Programmer's Bookshelf," I examined Inside
Windows 95, by Adrian King. Unauthorized Windows 95, by DDJ contributing
editor Andrew Schulman, is the second book to be published about Windows
95 and, with typical candor and humor, Schulman tells the other side of
the story. By examining Windows 95 internals as only he can, Schulman dismantles
most of the Microsoft party line about what Windows 95 really is, while
at the same time reassuring us that not only will Windows 95 dominate the
desktop over the next several years, but that it is a good operating system
to boot (and to boot).
This is clearly a book for systems programmers. You have to care about all
those arcane constructs that start with the letter V--VMM, VxD, VXDLDR,
and the like. I do, but I won't get into the details here. While purporting
to reveal heretofore untold secrets about the unreleased operating system,
Schulman's book goes beyond that simple tabloid appeal. It is an excellent
study in the reverse engineering of a complex piece of software. Most programmers
never have to do that, but everyone should understand how it works, and
Schulman's blow-by-blow description of how he took Win95 apart is fascinating.
His past experience with dissecting DOS and Windows 3.x helped him a lot,
as did his association with authors who write books with "Undocumented"
and "Internals" in their titles. He brought to the task a solid
suite of diagnostic tools and a thorough understanding of how things work
and how to find out how things work.
I find, therefore, three threads running through Unauthorized Windows
95: the deep and heavy technical descriptions of how things work within
Windows 3.1, Windows 95, and DOS; Schulman's hacker techniques, which explain
how he viewed the system's internals; and the ever-present reminder that
Microsoft represents Windows 95 one way, while Schulman's investigation
reveals a quite different picture.
Who needs to know what this book reveals about Windows 95? I can think of
several reasons to want or need this knowledge. A programmer who uses undocumented
features to extract that last ounce of performance from an OS benefits from
this knowledge. (Take care, though. Hitching your wagon to unpublished behavior
in an unreleased OS has perils.) Programmers with the hacker drive just
want to know how things work. Others like to see giant Microsoft caught
with its pants down. Some like to feed the ubiquitous conspiracy frenzies.
There are other reasons, too. Schulman points out many issues that programmers
need to know. For example, DOS programmers who use INT 2Fh need to know
that DOS has Windows-specific hooks into a 2Fh interrupt handler, and Schulman
provides details.
What Microsoft claims does Schulman assail? I'll discuss that shortly. First,
however, be aware that he sometimes associates King's words with Microsoft
by quoting the King book and treating the words as though they were Microsoft
claims. You have to watch for that. In other places, Schulman uses as a
source the Windows 95 Reviewers Guide that beta testers received. In any
event, some of these claims are King's, some are Microsoft's, some are from
both, and most have been echoed in the trade press. With all that ballyhoo
and without dissenting opinions, readers might believe the claims, and Schulman
is not about to let that happen.
King does not pretend to be a Microsoft spokesman, even though he apparently
worked with their sanction and without the constraints of a nondisclosure
agreement (NDA). King's book is published by Microsoft Press and is mostly
pro-Windows 95, but he gives at least enough criticisms to suggest that
the facts presented are as King understands them; they are not official
Microsoft positions. Maybe they represent what Microsoft told King, trusting
that he would believe them and dutifully report the details and positions
that Microsoft wanted to convey. Certainly he did not probe the software
to the extent that Schulman did.
Among other things, Schulman asserts and proves that Windows 95 does not
bypass MS-DOS, that the shell does not use OLE, that the OS is not a complete
rewrite, that the OS does not consist of closely integrated parts, that
MS-DOS is Windows-aware, and that Windows 95 makes extensive use of existing
16-bit code, even when running Windows 95 alone with no command processor
and no 16-bit Windows or DOS applications.
How important to a developer are these journalistic expositions? I'm not
sure because I don't know what difference they make to well-behaved programs
written to run under Windows 95. As I said earlier, the value of this work
is found as much in the details of Schulman's hacking techniques as in the
conclusions that he draws. What difference does it make, for example, that
Windows 95 is not a complete rewrite and that it uses 16-bit code? Who cares
about those details if the API works as advertised and users rush to install
Windows 95 and buy new applications? I don't know who cares; I'm not sure
I do, but it certainly makes fascinating reading.
The point of this book seems to be that Microsoft is putting out a great
operating system but that to support some vague marketing objective about
perception of the product, the company is misrepresenting the internal details.
Schulman implies that Microsoft has used King and the press as conduits
to perpetuate this misinformation. What marketing objective does Schulman
think Microsoft is pushing? It is a complex subject, but here is an example.
According to Schulman, Microsoft is promoting Windows 95 as a new integration
of the user interface and the underlying operating system. This picture
is painted to distance Windows 95 from the Windows 3.x/MS-DOS environment,
which is perceived as an operating system that runs an unrelated operating
environment--a "thing on a thing." By emphasizing the integration
of the two parts into a single operating system, Microsoft wants to build
an image of Windows 95 as an integrated OS as easy to use as the Macintosh
and as rugged as OS/2.
These, of course, are perceptions. Not everyone thinks the Mac is a breeze
and that OS/2 holds together all that well, but most users, particularly
those who use Windows, have had to listen to those opinions for years and
probably believe them. Microsoft wants to instill the notion that Windows
95 is as integrated as those other guys. Schulman's point is that there
is nothing new about that integration. The Windows 95 integration is very
much like the Windows/DOS integration. Once again, this is an issue of how
Microsoft represents its products to users rather than a technical issue
of interest to programmers. Certainly we are interested in how it works.
But how much do we care about how its image is marketed? If he is right,
if Microsoft is misleading the public, what good does it do to expose them
at such length to programmers? The users, not the programmers, need to know
when they are being misled, and this book is too technical for the typical
user who would be influenced by Microsoft's marketing ploys.
Schulman's agenda permeates the book. He occasionally uses a practice that
is common when strongly held opinions are advanced: He reports events that
support his position and ignores those that do not. For example, to illustrate
that the press misunderstands and misreports the facts, he quotes Ray Valdes
in the March 1994 Dr. Dobb's Developer Update newsletter. Ray said, "Chicago's
shell uses OLE 2.0 extensively," a claim that Schulman assails. There
are many such quotes throughout the book to suggest that Microsoft misleads
the press and controls the news. But Schulman ignores a subsequent article
by Ray in the July 1994 issue of the same newsletter, where he said,
...one myth promulgated by Microsoft that should be dispelled is Chicago's relationship with OLE... OLE has little to do with the Beta1 version of Chicago, which is supposed to be "95 percent code complete."This point, reported by Ray in July, is one of Schulman's exposes in November. Ray goes on to explain that Microsoft's shell developers had no choice -- OLE was not ready when they needed it, so they implemented an emulation, a reasonable explanation, but one that Schulman ignores.