PROGRAMMER'S BOOKSHELF

More on Win95: Inquiring Minds Want to Know

Al Stevens

Al is a DDJ contributing editor and can be reached on CompuServe at 71101,1262.


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 Valdés 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 exposés 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.

Its agenda notwithstanding, the book will do well. I expect that by the time you read this review it will have been a bestseller for several months, primarily because it discusses in detail the kinds of things that interest programmers, but also because the author is known and respected for his loyalty to the technology and to the readers without concern for the interests of the establishment. As you will see, this loyalty almost cost him the ability to take early shots at future releases of anything.

Windows 95 involves two developer issues that Schulman addresses, but that he does not relate to each other. First, he tells how Microsoft traditionally enhances its operating-system products to include features previously provided by other vendors. DOS's memory management was added when add-on products such as QEMM and 386Max did well. There was the Stacker compression lawsuit. DOS has gradually gained a better command-line interpreter, disk-management utilities, virus detectors, a full-screen editor, a task swapper, and so on. Each improvement cut into the revenues of third-party add-on vendors. Windows 95 continues that tradition with HyperTerminal, Microsoft Exchange, and so on. If another developer comes up with something that enhances the operating environment or an application, chances are that Windows 96 (or 95.5 or whatever) will incorporate a similar feature, perhaps putting the developer out of business. Schulman makes the point several times that Microsoft consistently goes into direct competition with its own customers, wanting 100 percent of the general-purpose software market.

The second issue relates to certification. To use the Windows 95 logo on its packaging, an application must conform to some new rules that Microsoft has set out. Schulman discusses this subject briefly and questions Microsoft's motives, suggesting that the requirement for applications to be NT-compatible, for example, exists only to boost interest in NT, which isn't doing well in the stores. But the issue raises questions that Schulman does not ask. Who certifies applications? And when? Given Microsoft's reputation for hijacking the ideas and markets of other developers, who in their right mind would submit a new product for Microsoft review before running the first ad even if third-party confidentiality is promised?

A certain amount of controversy surrounds the publication of Unauthorized Windows 95. Immediately following its appearance, Schulman lost his access privileges to the private Windows 95 Beta forum on CompuServe. The Microsoft sysops grant and deny that access, and the privilege is tied to the terms of the beta NDA, which you must sign before you are allowed on the forum. Schulman's removal set off a thread of more than 100 messages, mixed in their opinions about the appropriateness of the action, but generally agreeing that Microsoft has the right to remove anyone for any reason. Microsoft did not participate in the thread and offered no explanation or other comments, but they told Schulman that he was no longer eligible to receive pre-release software.

At issue were the terms of the NDA. Until Microsoft Press released Inside Windows 95, all beta testers were sworn to the usual strict oath of silence. With the release of Beta2 (occurring coincidental to publication of King's Inside Windows 95), Microsoft relaxed the NDA, permitting beta testers/authors to publish descriptions of the product and screen shots. Demonstrations of the operating system are still verboten, as is the publication of benchmarks. All beta testers are furthermore enjoined by the NDA from reverse engineering or disassembling the software except where such restrictions are prohibited by applicable law.

By his own admission in the book, Schulman both disassembled and reverse engineered Windows 95. He shows disassembled DEBUG output of many Windows 95 functions in order to prove his points. He tells how he used Soft-ICE and some of his own programs to set breakpoints and examine Windows 95 code and internal data structures, all of which can be reasonably interpreted as being in clear violation of the NDA. Mind, I'm not chastising Schulman for doing it. That was his decision, and it resulted in a very good technical book for the rest of us.

Were these intrusions enough to get Schulman the boot from the hallowed grounds of beta privilege? Probably not on their own, and probably not if the author had been anyone else. But Andrew Schulman is Undocumented Man, unabashedly publishing undocumented details of any and all system-software products, mostly those from Microsoft. He wrote the Windows AARD-detection-code exposé in the September 1993 issue of Dr. Dobb's Journal. He was Stac Electronics' expert consultant in its two-way lawsuit against Microsoft. He is an outspoken critic of Microsoft in public discussions of the FTC and Justice Department investigations into Microsoft's business practices. He is alternately Mike Wallace, Ralph Nader, and Clark Kent, almost always lined up in the ranks against Microsoft. In other words, Schulman was no doubt already at or close to the top of the Bill Gates enemies list well before publishing this book. And in this book he misses no opportunity to take shots at Microsoft, further endearing him to the powers at Redmond.

Schulman compares Microsoft to a "school board trying to wriggle out of a court order" when they assert that Windows 95 is integrated. Ironically, the analogy returned to haunt him. Even if Microsoft cannot legally prevent reverse-engineering activities, it, like Lester Maddox years ago, seems to have reserved the right to refuse service to anyone for any reason--at least as far as beta privileges go--and for a few days, Schulman bore the mark of the ax handle. Happy ending. After a lot of publicity about Schulman's shabby treatment, Microsoft relented and let him back into the forum.

Unauthorized Windows 95 is very well written. If you ignore the incessant and tiresome Microsoft-bashing, you will find an abundance of solid, technical data, the result of Schulman's incisive penetration of a complex software system. It is a superb achievement to have uncovered as much detail given the time available, and it is a testament to Schulman's writing skills that he made such details so readable. Of course, Windows 95 is still in beta. It remains to be seen whether the released version will warrant all the same criticisms.

Unauthorized Windows 95

Andrew Schulman

IDG Books, 1994, 608 pp., $29.99

ISBN 1-56-884-1698


Copyright © 1995, Dr. Dobb's Journal