This book provides an invaluable resource for anyone writing device drivers for Windows NT. It very clearly describes the principles, techniques, tools and pitfalls of driver writing for NT. While the book was written before Windows 2000 was released, a chapter is devoted to driver development on that platform, based on Windows 2000 Beta 1. A lot changed between Beta 1 and the production release and I am not qualified to say how much of the Windows 2000 advice and information is correct.
The book is primarily, but not exclusively, aimed at those writing drivers for unsupported hardware. The topics covered include driver design, kernel memory management, driver debugging, dealing with interrupts and timers, DMA, programming the PCI and ISA bus as well as USB and SCSI. There is an extensive set of appendices, which provide a really valuable reference guide listing the DDK support functions and data structures, error codes (listed both numerically and alphabetically) and stop codes. Writing graphics, network, file system and user-mode drivers are specifically not covered by this book.
The table of contents and index are extensive and highly useable. Graphics and illustrations are used throughout to help explain complex issues. While there are extensive code examples throughout the book, there is no accompanying CD, but the (extended) source code along with the (very few) errata and some other material isavailable from the authors' web sites. The authors are willing to be contacted by email their addresses are in the book.
This is a very specialised book covering a field that's far from highly resourced. If you are involved in writing device drivers, or just want to find out how it all works, this book is for you.