This chapter briefly introduces the Windows operating system and the Win32 application programming interface from the programmer's point of view. The chapter lays the foundation for it's sequels that deal with the Win32 API as it relates to accessibility.
Microsoft Windows is the most popular operating system in IBM PC based X86-compatible computers. Initially it was just a graphical user interface that needed the Microsoft DOS operating system to function. Around version 3 the Windows development split into two branches; the 9X-branch (95, 98, ME) based on Windows 3.1 and the new NT-line (other 32-bit Windowses apart from Windows CE). The differences between the 9X and NT lines regarding programming are the NT additions like support for the unicode character set and security (such as memory protection, user permissions and zeroing the allocated memory).
In terms of software development, the architectural differences don't matter that much, though, it is more important what the two branches have in common. Both support Microsoft's C-based WIn32 application programming interface (API). Unlike in Unix and many other operating systems, the Win32 API isn't a direct interface to the system calls but a relatively static abstraction layer on top of them.
A common API improves backwords compatibility because the hidden implementation may change as long as the interface stays the same. On the other hand, you cannot take advantage of the underlying system calls in optimizing performance. The 9X and NT lines implement the Win32 API very differently. Petzold mentions in his Windows book that the 9X line actually implements the WIn32 API through the legacy Win16 API (Petzold, 1998, APIs and Memory Models).
This report is strictly about the Win32 API so the actual system calls and class-hierarchies built on top of the API, such as MFC, are outside the scope of this paper. After all, MFC and other higher-level interfaces are probably built directly on top of the WIn32 API.