Description:
This
hands on training course provides the knowledge and practice necessary to begin
writing Windows device drivers for Windows XP, Windows 2000.
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.
Basics:
·
Operating System Fundamentals
·
X86 Architecture and Windows
·
Kernel Mode Vs User Mode
·
Windows Architecture Overview
·
Operating System
Architecture
·
Kernel,HAL and
executive
·
Object Manager
·
Objects and handles
·
Memory manager
·
I/O manager
·
Introduction to Windows Driver Model
·
Layered Drivers
First Program:
·
Writing a hello world driver
·
Debug support routines
·
User mode debugger and Kernel mode debugger
·
Using Kernel Debugger to view debug messages
·
Service Control Manager
·
Device/ Driver Object,
IRP etc.
·
Device Objects and
Device Stack
·
Device Extensions
·
Life Cycle of an IRP
·
IRQ Levels
·
Driver Threads
·
Multiprocessing,
preemptive multithreading, interrupts, and their requirements for synchronization;
·
Primitives for
accomplishing synchronization
·
Communication with
Device Driver
·
Handling Application
Requests
·
Input/Output Request
Packets (IRP)
·
Completing IRPs
·
Mutex
·
Spin locks
·
Semaphores
·
Timers & Events
·
Driver Dispatch
Routines
·
DeviceIoControl
Interface
·
Handling Read requests
·
Handling Write requests
·
Application to driver
data transfer mechanisms: Buffered, Direct & Neither I/O
·
Layered model of
drivers
·
IRP stack locations
·
Interrupt Fundamentals
·
Interrupt Object
·
Registering / Writing
ISR
·
DPCs
·
Synchronization
Debugging
·
Driver Testing
·
System Crashes
·
Reasons for System
Crash
·
The Blue Screen of
Death
·
Reading Crash Screens
·
Crash Dump Files,
Analyzing a Crash Dump,
·
Using Driver Verifier
Tool
·
Using Kernel Debugger
to debug drivers
Driver
Programming Techniques
Driver
Design Assignments
Prerequisites:
·
Knowledge of C programming
·
Understanding of Operating Systems
Fundamentals is plus.