Programming Books C Java PHP Python Learn more Browse Programming Books
Buy Used
+ $3.99 shipping
Used: Good | Details
Condition: :
Comment: Connecting readers with great books since 1972. Used books may not include companion materials, some shelf wear, may contain highlighting/notes, may not include cd-rom or access codes. Customer service is our top priority!
Access codes and supplements are not guaranteed with used items.
Have one to sell? Sell on Amazon
Flip to back Flip to front
Listen Playing... Paused   You're listening to a sample of the Audible audio edition.
Learn more
See all 2 images

Programming the Microsoft® Windows® Driver Model, Second Edition (Developer Reference) Paperback – January 16, 2003

ISBN-13: 079-0145180384 ISBN-10: 0735618038 Edition: 2nd

Price: $17.54
11 New from $68.43 17 Used from $17.54 1 Collectible from $70.30
Amazon Price New from Used from
Paperback, January 16, 2003
$68.43 $17.54
Free Two-Day Shipping for College Students with Amazon Student Free%20Two-Day%20Shipping%20for%20College%20Students%20with%20Amazon%20Student

Best Books of the Year
See the Best Books of 2014
Looking for something great to read? Browse our editors' picks for 2014's Best Books of the Year in fiction, nonfiction, mysteries, children's books, and much more.

Shop the new
New! Introducing the, a hub for Software Developers and Architects, Networking Administrators, TPMs, and other technology professionals to find highly-rated and highly-relevant career resources. Shop books on programming and big data, or read this week's blog posts by authors and thought-leaders in the tech industry. > Shop now

Product Details

  • Series: Developer Reference
  • Paperback: 878 pages
  • Publisher: Microsoft Press; 2nd edition (January 16, 2003)
  • Language: English
  • ISBN-10: 0735618038
  • ISBN-13: 978-0735618039
  • Product Dimensions: 7.4 x 1.5 x 9 inches
  • Shipping Weight: 2.8 pounds
  • Average Customer Review: 4.0 out of 5 stars  See all reviews (16 customer reviews)
  • Amazon Best Sellers Rank: #122,140 in Books (See Top 100 in Books)

Editorial Reviews Review

Written for advanced C/C++ programmers, Walter Oney's Programming the Microsoft Windows Driver Model is a technically astute and clearly presented guide to writing custom Windows 2000 device drivers.

The author's command of the details of the new Windows Driver Model (WDM) standard is what makes this book such a clear success. (Because the WDM is rich in kernel and system services, the trick is often knowing how to use what's available rather than doing everything yourself.) The author presents a solid overview of the WDM architecture and breaks down the process of writing custom device drivers into manageable pieces, from the basics of loading device drivers to creating and processing I/O request packets. The book is very good at exposing kernel system calls, design principles, and programming techniques (such as managing synchronization and handling errors). There are also "nerd alerts" that point out extremely technical material.

This book shows you what you'll need to create WDM drivers that cooperate fully with Windows 2000 (and Windows 98). Features like Plug and Play (PnP), Windows power management, and the new Windows Management Instrumentation (WDM) standard get full attention here. There is plenty of sample code (plus a custom Visual C++ AppWizard that generates skeleton code for a default WDM driver) to get you started. Examples for working with the S5933 PCI chip set (and other simple hardware) let you see WDM drivers in action.

The process of writing device drivers certainly has changed from the early days of DOS. But armed with this handy and thorough book, C/C++ programmers can successfully create drivers for custom hardware that take full advantage of all the features of the powerful new WDM standard. --Richard Dragan

Topics covered: Windows Driver Model (WDM) overview and driver structure; kernel mode; physical filter, function and bus drivers; loading device drivers (DDs); driver objects; Windows 98 compatibility; kernel mode programming basics; error handling; memory management; synchronization; interrupt request levels, kernel synchronization objects, I/O request packets (IRPs), completion routines, plug and play (PnP) basics, reading and writing data, direct memory access (DMA) transfers, power management, error logging, watchdog timers, Windows Management Instrumentation (WMI), Universal Serial Bus (USB): bulk transfer and isochronous pipes; installing DDs: INF files, property pages, and Registry keys. --This text refers to an out of print or unavailable edition of this title.

About the Author

Walter Oney has 35 years of experience in systems-level programming and has been teaching Windows device driver classes for 10 years. He was a contributing editor to Microsoft Systems Journal and is a Microsoft MVP. He has written several books, including Systems Programming for Windows 95 and the first edition of Programming the Microsoft Windows Driver Model. In his free time he's a committed jogger, a fan of classical dance, and an amateur oboist. He and his wife, Marty, live in Boston, Massachusetts.

Customer Reviews

The text provides simple and concise sample code.
Amazon Customer
If your developing device drivers in 2000/2001 for a Windows operating system then this book is simply a must have.
Chris Telting
One of the best things about the book is the tips and sidebars.
Alan Mason

Most Helpful Customer Reviews

62 of 68 people found the following review helpful By LO YIP BONG on March 22, 2000
Format: Paperback
Having read this book half way, I believe it is intended for experienced developers instead of for beginners in device programming. Rather than offering a structural and formal introduction to the subject, it stresses on tricks and hints on selected topics like synchronization, pnp, read/write, etc.
I now go for the DDK documentation for a more fundamental treatment. It cleared up instantly some of the questions built up as I read through the first five chapters of the book, like how a user mode application calls up the kernal mode driver. Nevertheless the author does give an authoritative insight in WDM programming. Incidentally, it is a matter of taste whether you like his informal writing style.
As a beginner at the moment, I rated this book three stars. I might rate it differently when I returned to the book later.
Comment Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback. If this review is inappropriate, please let us know.
Sorry, we failed to record your vote. Please try again
75 of 84 people found the following review helpful By BugBuster on June 14, 2002
Format: Paperback Verified Purchase
If you already know how to write WDM device drivers, you may or may not need this book.
If you do not know how to write WDM device drivers, you would do yourself
a big favor by avoiding this book. It is so carelessly edited and
organized that I would feel justified in billing Walter Oney and his
publishers back for the time I have wasted dealing with things like this:

From page 184: ..."In fact, sometimes the easiest way to commence a new operation is to store
some state information in your device extension and then fake an
interrupt. Since either of these approaches needs to be carried out under
protection of the same spin lock that protects your ISR..."
"Fake and interrupt?" This term is not defined or explained anywhere in the book that I could
find within an hour's search.
"...the same spin lock that protects your ISR," is explained 121 pages later on page 305,
where it says "...(because the I/O Manager automatically allocates [a spin
lock] for you.)"

There are 26 pages of errata downloadable from Oney's web site. I printed
out the file, and I have to check it every page or two to make sure the
information on the page I am reading is correct.
If you want to spend your time sorting through this mess
while introducing yourself to a topic as arcane as WDM, be my guest.
You have been warned.
1 Comment Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback. If this review is inappropriate, please let us know.
Sorry, we failed to record your vote. Please try again
20 of 20 people found the following review helpful By Alan Mason on September 16, 2000
Format: Paperback
Walter Oney is an expert who doesn't talk down to you. There's a lot of gold in this well-written book, but to extract it happily you'll need a strong background in Windows programming, including first and foremost a couple of years of professional driver-writing experience for Win9X/NT platforms; in a few places, some knowledge of COM and MFC will also be helpful. Plug and Play, power management, and USB issues are covered in detail, as well as driver basics (from an advanced perspective), the intricacies of cancelling IRPs, etc.
I like Oney's approach to teaching -- he concentrates on the logic of the few dozen basic steps needed to write a driver, leaving it to the samples on the accompanying CD to flesh out the skeleton. This has the advantage of highlighting the mechanics, and the often convoluted reasoning behind them, without sacrificing completeness. He identifies and analyzes many potential race conditions and other pitfalls that you might not think of on your own.
One of the best things about the book is the tips and sidebars. Some examples: why you should use the PAGED_CODE macro and Driver Verifier when using Soft-Ice/W on Win2k; the hazards of using DDK "function calls" that are actually macros; how to ship a single binary for both Win2000 and Win98, given that Win98 doesn't support some key functions (such as those involving IO_REMOVE_LOCK) -- the book suggests writing a VDD with stubs for the missing functions, as explained in Appendix A. The sample code also contains very instructive workarounds for the shortcomings of Win98. Another strong point is the DEVQUEUE code that Oney has developed to extend the standard Windows driver model to handle PlugandPlay.
Read more ›
Comment Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback. If this review is inappropriate, please let us know.
Sorry, we failed to record your vote. Please try again
20 of 21 people found the following review helpful By Amazon Customer on April 25, 2003
Format: Paperback
This book was a valuable resource for my successful driver development project.
For newbie's, the book is a great companion to the DDK. The text provides simple and concise sample code. The examples on the CD-ROM are a great way to start exploring driver programming concepts using a kernel debugger. The DDK samples are far too complicated for understanding the fundamentals, so use the book to get started and then the DDK samples will be much easier to comprehend.
I recommend that you read through the entire book at a high enough level that you don't get caught up in the details. Next, find the chapter and sample driver that is most appropriate for your task and get started. Throughout the rest of development, you'll reference various parts of the book to understand the details and avoid the hidden pitfalls in kernel mode programming.
For experts, the book provides comprehensive treatment of the topic. It's full of tips and suggestions based on real-world experience. Many of the driver components on the CD-ROM can be integrated into real drivers in order to reduce development time and complexity. If you are creating a production driver that you intend to ship to real customers, the book will also provide you many options for creating a top-notch user experience during the install process. WHQL and driver security issues are addressed as well.
The author updates the CD-ROM sources in service packs located on the web site. These updates are based on his continuing work and feedback from readers.
Comment Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback. If this review is inappropriate, please let us know.
Sorry, we failed to record your vote. Please try again

Most Recent Customer Reviews

More About the Authors

Discover books, learn about writers, read author blogs, and more.

What Other Items Do Customers Buy After Viewing This Item?