Training Course: Writing a Windows Device Driver
training course enquiry
Training Course Summary:
This hands on training course provides the knowledge and practice necessary to begin writing Windows device drivers for Windows XP, Windows 2000 and Windows NT 4.0. This course provides a thorough grounding for Windows device driver development. 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 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. Several drivers will be created in the course of the class, which the students can keep as starting templates for their own work. Students will learn how to debug a driver using WinDbg. 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 Edward N. Dekker and Joseph M. Newcomer, noted authors and consultants in the field of Windows system programming and driver implementation.
Pre-Requisites:
Knowledge of C programming, Windows Architecture and Operating Systems Architecture.Training Course Overview/Content:
Windows Architecture IssuesThe 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 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
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 Windows Drivers
Kernel-Mode Drivers
Miniport Drivers
Windows Driver Model (WDM) Drivers
Graphics Drivers
Network Drivers
Overview of the Software Development Kits and Device Interfaces
WinNT DDK
Win32 SDK
Video Displays
Networks
PCMCIA
Storage
Printers
Multimedia
Communications
Input
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
Overview of Windows NT Drivers
User-Mode Drivers
Kernel-Mode Drivers
Windows Driver Model (WDM) Drivers
Miniport Drivers
Graphics Drivers
Network Drivers
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

