Software Skills Training, Inc.
978-250-4983
Catalog Course Schedules In House Training Registration Student Feedback
Cost Effective Training Solutions



Register Now

Discount Programs

Writing a Windows Device Driver


Price: Contact SST for pricing  |  Duration: 5 days

Prerequisites: Knowledge of C programming, Windows Architecture and Operating Systems Architecture.

Description: This hands on training course provides the knowledge and practice necessary to begin writing Windows device drivers for all modern Microsoft operating systems including Vista, Windows XP, Windows 2003, Windows 2000 and Windows NT 4.0. The course provides a thorough grounding for Windows device driver development including core technologies such as how to create a basic driver, the fundamental driver data structures, how to implement interrupts, how to move data between hardware devices and the driver including DMA transfers, how to move data between the kernel and the user application, synchronization, driver threads and layered drivers. Through lecture, class discussions and hands on lab work, the student will develop an immediately useful knowledge of how to write a device driver that will interface hardware to the system and to application programs. The course includes an overview of the development environment and the device categories that may be confronted. Both the underlying theory and some API details are covered; emphasis is on the underlying theory. The course finishes with a thorough introduction to Plug and Play (PnP) and Power Management. The intent is to prepare students to use the Microsoft documentation, the Microsoft Developers Network (MSDN) resources, and published material in order to continue work beyond the scope of the course. The solid background provided by this course can prepare the student for more advanced work.

Lab work is integrated to allow students to explore the problems that may be encountered and debugging techniques that can be employed. The students will learn to employ various approaches to solving basic problems, and learn why certain techniques are employed to solve particular interface problems. The hands on labs provide practice implementing fundamental concepts of driver development. The labs include practice debugging drivers using contemporary debugging tools including WinDbg, dealing with common driver problems, how to read kernel crash dumps and use contemporary crash analysis tools, and using the Driver Verifier. Several drivers will be created in the course of the class, which the students can keep as starting templates for their own work. Each student will receive a CD-ROM containing the labs and example solutions which students may keep for future reference.

This course is designed and taught by Joseph M. Newcomer, noted author and consultant in the field of Windows system programming and driver implementation.

Windows Architecture Issues
  • The implications of NT/2000/XP design on driver architecture
  • Driver Design
  • Driver Implementation
  • Installing Drivers
  • Debugging Drivers
  • The API Interface and API Design Issues 
Windows Architecture
  • Layered Drivers
  • Memory Allocation Options 
  • Lookaside Lists
  • IRQ Levels 
  • Driver Threads
  • Multiprocessing, preemptive multithreading, interrupts, and their requirements for synchronization; primitives for accomplishing synchronization
Overview of the Software Development Kits and Device Interfaces
  • WinNT DDK
  • Win32 SDK
  • Video Displays
  • Networks
  • PCMCIA
  • Storage
  • Printers
  • Multimedia
  • Communications
  • Input
Overview of Windows NT Drivers
  • User-Mode Drivers
  • Kernel-Mode Drivers
  • Windows Driver Model (WDM) Drivers
  • Miniport Drivers
  • Graphics Drivers
  • Network Drivers

Windows 2000/XP Drivers

  • Developing Drivers for Windows 2000 and XP
  • How to Convert Legacy Drivers
  • Supporting FireWire (IEEE-1394)
  • How 64-bit Drivers Will Work
  • Power Management
  • Plug and Play
Overview of Windows Drivers
  • Kernel-Mode Drivers
  • Miniport Drivers
  • Windows Driver Model (WDM) Drivers
  • Graphics Drivers
  • Network Drivers
Debugging Environment
  • Environment Variations
  • Setup Procedures
  • Using Windbg
  • Kernel Debugging Options
  • Debugging Techniques
  • Interpreting System Bug Check Information
  • Stack Traces
  • Debugging Hang Conditions
  • Hardware Profiles
Developing the Driver
  • Building
  • Debugging
  • Tuning
  • Testing
Writing a Driver
  • Required Entry Points
  • Driver Objects and Resources
  • Initializing Device Objects and Extensions
  • Processing Input and Output in Kernel Mode
  • Serializing the Driver Processing
  • Using the Structured Exception Handler
  • Processing Windows NT Requests
  • Communicating with the Driver : operations
  • Communicating with the Driver : passing data
  • Latency within the driver
  • Trapping Errors and Recovering
  • Event and Error Logging
  • Direct Memory Access (DMA) Issues
  • Registry Manipulation
  • Performing File I/O Within a Driver
  • Using Timers
  • Fully Asynchronous Bidirectional ("Full  Duplex") Driver Issues
  • Installing and Configuring the Driver