Sei sulla pagina 1di 4

Writing KMDF Device Drivers for

Course Number 405 – 40 Hours

The new WDK with the new KMDF framework is as revolutionizing as C++
programming is to MFC. Writing device drivers today, using KMDF, is much
simpler than before. The course introduce using presentations, demos and
practical labs, the Design considerations, development environment, architecture
and practical consideration of writing KMDF device drivers for Windows 2000,
XP, 2003, Vista and Windows Server 2008.
A book - Developing Drivers with the Windows Driver Foundation by Penny
Orwick (Author), Guy Smith (Author), will be given to all students on behalf of
MS Press.

ƒ Setup development and test environment for developing KMDF Device

ƒ Understand most of the terms and recommendations in the WDK
ƒ Understands Device Drivers terminology, the WDM model and the KMDF
ƒ Write general-purpose KMDF device drivers

Experienced programmers interested in write kernel mode device drivers for

windows OS (2000, XP, 2003, Vista & Windows Server 2008).

ƒ Knowledge of the window OS concepts and architecture in a level compatible

to course #105, Windows Internals

ƒ Knowledge and practical experience with the "C" programming language
ƒ Basic knowledge of Object Oriented concepts
ƒ At lease 2 years of programming experience
ƒ User level experience with windows OS & GUI
ƒ Practical experience developing windows application and using the Win32
ƒ Knowledge of the Visual Studio IDE is recommended.
ƒ Knowledge of basic hardware concepts & architecture
ƒ No prior knowledge of device driver's development is required or assumed

Development Tools and Testing Environment for Device Drivers

ƒ Debugging tools for windows
ƒ OS Symbols
ƒ Free and Checked Build
ƒ Logo Compliance
ƒ The Build Process

Debugging and analyzing Driver faults

ƒ Blue Screen of Death, Bug checks
ƒ System dump analysis
ƒ Setting and Using Windbag for live debugging
ƒ Driver Debugging procedures & Techniques

Windows 2000/XP/2003/Vista/Windows Server 2008 Short Architecture

ƒ User moode, Kernel mode, SDK, WDK
ƒ HAL, Kernel, Subsystems
ƒ Kernel sub systems (I/O, Memory, Configuration, Object, Plug & Play, Power
and other managers)
ƒ Virtual memory, System Objects; Device Drivers
ƒ OS processes and threads, Threads priority and scheduling
ƒ Interrupt dispatching; Interrupt processing; Interrupt Priority; IRQLs; DPC

WDK, WDF, KMDF, UMDF and WDM Overview

ƒ The purpose and usage of each term
ƒ The role of WDM in KMDF
ƒ Usage and limitation of each model

WDM terms and architecture
ƒ WDM Architecture & requirements
ƒ Driver types (Function, Filter, Bus)
ƒ Driver stacks
ƒ Device stacks
ƒ WDM Driver loading process
ƒ I/O request packets (IRP's), Structure, Header, stack Location, Major and
Minor function codes
ƒ Dispatching of IRP's, Forwarding to lower device, Life Cycle, Completion
rutin, Return codes
ƒ IRP Processing strategies (Forward and forget, forward and wait etc)
ƒ Problems and difficulties with the WDM model

WDF model and architecture

ƒ WDF objects, methods, properties, events and hierarchy
ƒ Core WDF objects, Driver, Device, I/O Target, I/O Queue, File, Request,
Memory, Object
ƒ More WDF objects, Interrupt, Registry, DPC, Events & Timers, Resource
List, PDO, Collections
ƒ Common WDF objects with UMDF, I/O Objects, PNP State Machine, I/O
Pipeline, USB I/O Target
ƒ Object hierarchy in the WDF model

KMDF driver loading process

ƒ DriverEntry routine
ƒ Initializing the framework
ƒ Creating driver and device objects

KMDF Queue management, requests and Data Transfer

ƒ Creating queues
ƒ Queues types
ƒ Handling requests
ƒ Data transfer techniques (buffered, direct, neither)
ƒ I/O Targets and Transferring request to I/O targets
ƒ Completing requests

Accessing the Hardware

ƒ Working with I/O ports and Registers
ƒ memory mapped I/O

Interrupts Timers and DPCs
ƒ Interrupt Service Routine
ƒ Timers
ƒ DPCs

Plug & Play

ƒ Plug & Play Overview
ƒ PnP requests IRPs
ƒ Default behavior of PNP in WDF
ƒ Starting and stopping a device

Power management
ƒ Power management Overview
ƒ Power requests and IRPs
ƒ Default behavior of power in WDF
ƒ Power states
ƒ handling power transitions and requests

WMI and configuration

ƒ WMI Overview
ƒ WMI requests and IRPs
ƒ Default behavior of WMI in WDF
ƒ handling WMI requests

Installing Device Drivers

ƒ Installing Device Drivers
ƒ INF files structures and sections
ƒ Creating and verifying inf files
ƒ Other installation methods