DRV201 - Core Windows Driver Model (WDM) Development

Teaches you how to develop, install, and debug the most common types of WDM device drivers for Windows operating systems.

Level: Intermediate

Developers who need to write or maintain any type of WDM driver, including functional, filter, and bus drivers.


In this seminar you will learn the common principles and interfaces used by all WDM device drivers, and the details of the most common types: Functional drivers for devices on "protocol buses" such as USB, 1394, and SCSI; and filter drivers for all types of devices.  We include complete coverage of all of the new WDM interfaces (plug and play, power management, and WMI), writing and debugging .INF files, interfacing to the bus controller driver, I/O request management for protocol bus devices, driver installation, and debugging. 

We start with a very simple driver, and then fill in deeper and deeper layers of details and possibilities, ensuring that you understand each new idea in its proper context. This approach also provides needed repetition, so that you see the important points more than once and from different points of view. A simple USB device is used as the  "target" device for the example code and lab problems, but the principles presented here apply to nearly all WDM device drivers.

We also know that the best way to remember what you have to do is to learn why you have to do it.  Although we very clearly distinguish supported interfaces from undocumented information, we do show you a great many "how it really works inside" details of the operating systems – details that are not available in the standard documentation. Where the operating system offers you choices of design methods for your driver, you will learn the advantages and disadvantages of each. We will even expose a few things that the operating system could have done better and show you how to work around them.

  • Windows I/O subsystem principles
  • I/O system objects and data structures
  • Required driver routines; a simple device driver
  • Building and debugging drivers
  • Device enumeration, driver initialization, and plug-and-play
  • Managing and implementing I/O requests
  • Synchronization mechanisms
  • Handling buffers
  • Implementing I/O requests on the hardware
  • Power management interfaces
  • Windows Management and Instrumentation interfaces

DRV150, Windows Internals for Driver Developers, or INT201, Windows Internals, or INT250, Windows Internals Workshop, or equivalent knowledge and experience. Attendees should understand the basic principles of demand-paged, virtual memory, multitasking operating systems. Attendees should also be familiar with the concepts of I/O device programming (in other words, driver coding on any other operating system or environment) and must have at least a reading knowledge of the C programming language.

Operating systems supported:

Windows 2000 through Windows 10/Windows Server 2012 R2

Durations and formats: 5 days with labs
3 days lecture only

We strongly recommend the hands-on labs version of this seminar.

As with all seminars from Azius Developer Training, we have carefully designed our lab exercises to assure that you will be able to retain and apply the material after the seminar. In the labs for this seminar you will gradually write, debug, and test a complete driver for a simple USB device. A lab exercise allowing you to immediately apply the material follows each key point in the lecture presentation. Each of these exercises builds on the ones preceding. In addition, we provide fully commented solutions to each exercise as we progress through the seminar. This allows you to compare your work with a reference answer.

All of this provides a tremendous benefit in terms of your retention of the seminar  material. In addition, doing your first few rounds of “trial and error” in our lab, with the seminar leader’s guidance and assistance, is much more time-effective than doing them back home on your actual project! 

All seminar attendees (both in the labs and lecture-only versions) will of course receive a diskette or CD-ROM with complete, debugged and commented solutions for all of the lab problems.