Author: Ronald D. Reeves Ph.D
Publisher: Addison-Wesley, 2010
Aimed at: Experienced programmers needing to build Windows 7 drivers
Pros: Currently the only book on the topic
Cons: Doesn't tackle actually programming a device driver
Reviewed by: Harry Fairhead
Device drivers - it's where real programming starts! There is a mystique about creating device drivers. It needs a subtle and well grounded understanding of programming and hardware. I was really looking forward to graduating from Linux device driver construction to the full WDF mode of working - but this book really didn't help. It reads more like a management guide to device driver writing and seems to go around the subject rather than tackling it head on. The book repeatedly puts off actually getting on with the task of creating a device driver and when it does get to the point it seems to miss the sort of questions that a beginner would have - answering different and relatively pointless questions in their place.
Part 1 of the book gives and overview of the architecture but it starts out with what is an object and waffles about components and so on. This is the sort of thing that the book could simply assume. Chapter 2 goes into the Windows Driver Foundation (WDF) architecture and this is where the book most reads like a manager's guide to the subject with block diagrams and so on. You start to think that you will never get to the code.
Part 2 then goes into detail about User Mode Drivers. but the explanations are very difficult to follow. Chapter 3 simply doesn't have enough examples to see how things might work. Then Chapter 4 is supposed to be about actually programming User Mode drivers but it spends most of its time going over the COM model and other fairly obvious detail. Chapter 5 Then goes into COM again. HRESULT and similar topics. Where did the driver go? As the majority of User Mode Drivers are going to be working with USB why on discussion of dealing with USB? At the end of this section you are not going to be in any better position to create a user mode driver or any other sort of driver.
Part 3 moves into the even more complex subject of Kernal Mode Drivers. However, even here the basic ideas lurk under the cover of explanations of organisation and architecture. After an overview Chapter 7 goes into plug and play and power management - fine if we had the slightest idea by this point of how to write a driver.
Chapter 8 deals with installation and building a driver. Chapter 9 is a practical example based on the samples included in the SDK. Then back to plug and play again, WMI support and I/O Queues. All of the examples are taken from the SDK and the explanations seem to add nothing. It is not that it is poorly written, it just never gets to grips with its material - constantly referring to examples included in the SDK for reassurance.
If you were baffled before reading this book then you will be baffled after it. It really doesn't tell you enough about building drivers. Even one simple example explained in detail, or an example taken from the SDK worked over to be more understandable, would help. The book might have some value if you already know how to write Windows drivers and want to be brought up-to-date but I even doubt this is true - there is too much repetition and waffle. It reads as if the author doesn't know how to write a device driver and just processed the existing documentation to make a book on the topic.
My advice is to look elsewhere for a good book on Windows device drivers - the big problem is that there doesn't seem to be one.