Editorial license. (Microsoft's use of undocumented calls) (Editorial)
by Clifton Karnes
Is Microsoft playing fair? Undocumented Windows, a superb recent book by Andrew Schulman, David Maxey, and Matt Pietrek from Addison-Wesley, raises this question, showing in great detail that Microsoft has used undocumented Windows calls in its applications. As soon as the book hit the shelves, Microsoft fired off a press release admitting that Microsoft applications did indeed use undocumented calls (something the company had previously denied), but it also went on to state that Microsoft's competitors used these same calls, so Microsoft has no unfair advantage.
There are three main questions that emerge from this revelation that Microsoft applications use undocumented Windows calls. First, did Microsoft systems and applications divisions knowingly conspire to gain an unfair advantage over Microsoft's competitors? Second, if they did not conspire, did Microsoft's applications division have greater access to undocumented information than Microsoft's competitors? Third, what should be done about the situation?
Regarding the first question, whether there was a conspiracy at Microsoft, the answer is certainly no. Microsoft used these calls, to be sure, but the same company created tools for general distribution that make it fairly easy to find undocumented calls in applications. Microsoft was obviously not trying to hide the fact that it used undocumented calls. This is especially important, since there are techniques Microsoft could have employed to hide the use of these calls in its programs.
The second question, about Microsoft's applications programmers having greater access to undocumented information, is harder to answer. In Undocumented Windows, the authors point out that Microsoft's systems programmers have usually helped independent developers with information about undocumented calls, if they thought the programmers really needed the info. It stands to reason that they do the same with Microsoft applications programmers. But since the applications and systems programmers are in so much closer contact, they would simply have more opportunities to acquire this information. The answer to the second question, Do Microsoft's applications programmers have greater access to this information?, is almost certainly yes.
Before answering the third question, What should be done?, it might be a good idea to backtrack and talk a little about why there are undocumented calls at all.
First, every operating system has undocumented calls. There are several reasons for these. Some calls are just old code that's been replaced with better (usually documented) code. Other times, undocumented functions are quick fixes to system problems. The code usually isn't clean, and the company doesn't want developers to use these calls, because it'll probably change them in the future. You'll find undocumented calls like this not only in Windows but in DOS, Unix, OS/2, and VMS.
Then why are Microsoft and its competitors using these calls? Sometimes these calls aren't necessary because there are documented equivalents. But other times they are essential. Undocumented Windows takes us through the calls used by several applications and clearly shows which ones are useful and which ones aren't. You quickly get the feeling that to do real-world Windows programming, you need these calls.
So, what should be done? My first recommendation is for Microsoft to document all Windows calls. Instead of making a distinction between documented and undocumented, it could divide Windows into supported calls (those the company guarantees to keep in future versions of Windows) and unsupported calls (those the company doesn't guarantee). This would give Microsoft the flexibility it needs to determine which functions should represent the official core of Windows and would give developers access to the forbidden fruit, but with a use-at-your-own-risk caveat.
My second recommendation is for Microsoft to move its applications or systems division to another area to avoid the appearance of collusion. Although I don't think Microsoft's applications division intentionally takes unfair advantage of its competition, as long as systems programmers and applications programmers are all eating at the same Burger Master, there will always be the suspicion of impropriety.