Chapter 1
Beginning a Driver Project
In this chapter, I ll present an overview of the driver writing process. My own personal involvement with personal computing dates from the mid-1980s, when IBM introduced its personal computer (PC) with MS-DOS as the operating system. Decisions made by IBM and Microsoft that long ago are still being felt today. Consequently, a bit of historical perspective will help you understand how to program device drivers.
Windows Driver Model (WDM) drivers run in two radically different operating system environments, and I ll provide an overview of the architecture of these environments in this chapter. Windows XP, like Windows 2000 and earlier versions of Windows NT, provides a formal framework in which drivers play well-defined roles in carrying out I/O operations on behalf of applications and other drivers. Windows Me, like Windows 9x and Windows 3.x before it, is a more freewheeling sort of system in which drivers play many roles.
The first step in any driver project is to decide what kind of driver you need to write if indeed you need to write one at all. I ll describe many different classes of device in this chapter with a view toward helping you make this decision.
Finally I ll round out the chapter with a management checklist to help you understand the scope of the project.