Home | FAQ | Contact

Private Seminars
Public Seminars
Course Descriptions
Course Map
Instructors
Resources

INT150
INT151
INT201
INT211
INT221
INT250
INT255
DRV101
DRV150
DRV201
DRV205
DRV211
DRV221
DRV222
DRV231
DRV232
DRV241
DRV251
DRV264
DRV274
DRV301
DRV321
OFF101
OFF201
SEC230
SEC250
WSC102
WSC110
WSC201

DRV201: Core Windows Driver Model Device Drivers 

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 Vista, Windows Server 2003, Windows XP, Windows 2000, Windows ME, Windows 98

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.

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 © 2007 - Azius Developer Training