Windows Versions
Windows, in an evolving series of versions, has been used since 1993. The following important versions are listed on the Microsoft Web site at the time of this writing.
- Windows XP, including the Home, Professional, and other editions, is targeted at the individual user. Most commercial PCs sold today, including laptops and notebooks, come with an appropriate version of Windows XP preinstalled. The differences between the versions are generally not important in this book.
- Windows Server 2003, targeted at enterprise and server applications, has Small Business Server, Storage Server 2003, and other product editions. Systems running Windows 2003 ("Server" will be omitted from now on) frequently use symmetric multiprocessing (SMP) with multiple independent processors. New 64-bit applications, requiring Win64, are emerging primarily on Windows 2003 systems.
- Windows 2000, available in Professional and several Server editions, is still commonly used on both personal and server systems. Over time, Windows XP and future Windows versions will supplant Windows 2000, which is no longer sold.
- Windows Embedded, Windows CE, Tablet PC, and Windows Mobile are specialized Windows versions targeted at smaller systems, such as palmtops and embedded processors, and provide large subsets of Windows features.
Obsolete Previous Windows Versions
Earlier Windows versions, while no longer offered or supported by Microsoft, are still in use and will run many, but not all, of the examples discussed in this book. The older versions include those listed here.
- Windows NT 3.5, 3.5.1, and 4.0 are the predecessors of current NT versions and date back to 1993; Windows NT Version 4.0 Service Pack 3 (SP 3) was the most popular version. NT was originally targeted at servers and professional users, with Windows 9x (see the next bullet) sold for personal and office use. Windows 2000 was originally referred to as NT Version 5.0, and many users still simply use the terms Windows NT or NT5 when speaking of Windows 2000, 2003, and XP. Nearly all the programs in this book will operate correctly, if suboptimally, on Version 4.0; however, there are important exceptions, especially in the later chapters.
- Windows 95, Windows 98, and Windows Me (or simply Windows 9x, because the distinction is rarely important) were primarily desktop and laptop OSs lacking, among other things, the NT security features. Windows XP replaces these systems and combines their features with those of NT. Many but not all of the programs, especially in the earlier chapters, will operate correctly on Windows 9x.
Further back, Windows 3.1, a 16-bit OS, was dominant on personal systems before the Windows 95 introduction, and its graphical user interface (GUI) was a predecessor to the modern Windows GUI. The API, however, did not support many of the essential OS features, such as true multitasking, memory management, and security.Going further back to the late 1980s, it is possible to identify DOS as the original "IBM PC" OS. DOS had only a simple command line interface, and DOS commands are still used. In fact, most of the book's examples are written as command line programs, so they can be run under the command prompt, and some DOS batch files are provided to run performance tests.
Windows NT 5.x
Windows 2000, XP, and 2003 are collectively referred to as NT Version 5.x or simply NT5. All three use Version 5 of the Windows NT kernel, although the minor version (the "x" in "5.x") may vary. For example, Windows XP uses kernel Version NT 5.1.While many programs will run on earlier versions, in general we will assume NT5, which provides some features not found in earlier versions. This is a safe assumption as any new Windows system will have NT5, and the assumption will allow us to take advantage of some advanced features. Many older systems, however, may still be running an earlier NT version or Windows 9x, so, on start-up, the sample programs will test the Windows version number and terminate with an error message if necessary.The Microsoft API documentation states the version requirements, given in terms of NT, Windows (meaning 9x in this context), CE, and other requirements. Check the documentation if there is any doubt about an API function's operation on a particular Windows version.
Other Windows Programming Interfaces
Windows (by which we mean the Win32 and Win64 API as well as NT5, unless otherwise noted) is capable of supporting other "subsystem" environments, although this feature is rarely used and is not relevant to this book. The NT OS kernel is truly protected from applications. Windows is only one of several possible environments. A POSIX subsystem is part of a resource kit from Microsoft, and open source POSIX subsystems are also available.
Processor Support
Windows can support different underlying processor and system architectures and has a Hardware Abstraction Layer (HAL) to enable porting to different processor architectures, although this is not a direct concern for the application developer.Windows runs primarily on the Intel x86 processor family, whose current members include Pentium and Xeon, and previously the 486. Compatible Advanced Micro Devices (AMD) processors are common. Furthermore, Windows was designed to be processor independent. Most importantly, Windows 2003 is supported on the Intel Itanium, a new 64-bit architecture radically different from the classic x86 architecture.Other examples, past and present, of the architectural independence of Windows include the following.
- Windows CE runs on a variety of non-x86 processors.
- Windows NT was originally supported on the Digital Equipment Corporation (since acquired by Compaq and then HP) Alpha processor.
- The AMD Athlon 64 and Opteron 64-bit (AMD64) processors provide a 64-bit extension of the x86 architecture, which is a different approach than that used in the Itanium architecture.
- Intel's recently announced 32/64-bit processors will be 64-bit x86 extensions.