Home | FAQ | Contact

Private Seminars
Public Seminars
Course Descriptions
Course Map
Instructors
Resources

APP210
CMB221
DBG211
DBG214
DBG311
DRV101
DRV150
DRV201
DRV203
DRV204
DRV205
DRV211
DRV221
DRV222
DRV231
DRV232
DRV251
DRV264
DRV274
DRV280
DRV301
DRV350
INT150
INT201
INT250
SEC230
SEC240
WSC150
WSC250

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

Audience

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

Description

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.

Topics

  • 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

Prerequisites

DRV150, Windows Internals for Driver Developers, or INT201, Windows Internals, 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.

Windows versions

Windows 7, Server 2008, Vista, Server 2003, XP, Windows 2000

Duration and formats

5 days with labs
3 days lecture only

Labs

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.

WDM?
WDM stands for Windows Driver Model, a common driver model that is based on the old NT4 driver model but which was compatible with both Windows 98 and Windows 2000. For many years since it has been the standard driver model for Windows, except devices such as network, sound, video, and graphics, which are each covered by their own unique driver models.
However, Microsoft has recently introduced a new driver model called WDF, for Windows Driver Foundation. WDF actually encompasses two types of drivers: drivers running in kernel mode, written to KMDF, Kernel Mode Driver Frameworks, and drivers running in user mode, written to UMDF, User Mode Driver Frameworks.
KMDF and UMDF drivers are the recommended models for all new driver development, KMDF for Windows 2000 and later, and UMDF for Windows XP and later. They are considerably easier to design, implement, and maintain than WDM drivers, and they can be used for almost (but not quite) all projects where a WDM driver would be used. We do offer seminars in both KMDF and UMDF driver development.
We still offer this and other seminars in WDM, however, on the one hand because there are a great many drivers already written to WDM that need to be maintained and updated, and two, because there are a few things you can't do directly in KMDF, but you can accomplish via a "callout" to WDM functions--but to do so requires understanding of WDM. So WDM is still useful, just not as much so as in the past.
Related seminars
This seminar provides essential information that's required by some of our other device driver seminars. For example, in Advanced WDM Device Drivers we add the details of writing bus drivers and bus filter drivers. Similarly, our seminars on USB and FireWire devices and their drivers depend on and build on the information presented here.
On the other hand, several types of devices supported by Windows use drivers written to substantially different interfaces than the drivers we discuss here. This includes: Miniport drivers for storage  controllers, network interface cards (NICs), video display cards, and sound devices; GDI drivers for display cards or printers; upper-level network drivers such as TDI drivers; file system drivers, and drivers for still imaging devices such as scanners and digital still cameras. This seminar does not cover the coding details of these types of drivers, but does provide useful background for them.  We do offer other seminars covering many of these areas.
 
Copyright © 2010 by Azius Developer Training