Course Description

Writing a Windows Device Driver for Windows system is an entirely different discipline from traditional Windows application programming. A Windows Device Driver is an extension to Windows operating system. In order to extend the Windows OS effectively, a developer needs to understand many of the details of the Windows operating system’s architecture and its working. In addition it is necessary to learn the Device Driver development environment and Kernel Mode Debugging.

This course imparts the necessary knowledge that would help you to write WDM device drivers for Windows XP/2k. Windows Driver Model (WDM) is a kernel-mode device driver model which also contains Plug and Play (PnP), Power management, Windows Management Instrumentation (WMI) and Device Interface support. These features are included in this training course, along with details of the necessary development environment.

 
 
What's different about the course
Top quality knowledge at reasonable fees
Course designed Yashavant Kanetkar
Self paced learning
Excellent slides with explanation
Course material with detailed explanation
End of module exercises
 

What would you gain

Development of skill sets would help you to be market-ready
Would help in building state-of-the-art projects
Thorough grounding in internal details would help you in interviews
No need to move out of the campus to master the latest technologies
 
Pre-Requisites
Familiarity with basic usage of windows, the API, and the C programming language
Moderate fluency in the C++ programming language

No knowledge of any previous device driver development is required

 
Lecture 1 
What are Device Drivers, Roadmap to writing Device Drivers, Protection mechanisms, Hardware access, Kernel Mode Vs User Mode, Issues in Kernel Mode programming, Writing a Device Driver using DDK, Building & deploying Driver
Lecture 2 
Writing a hello world driver, Debug support routines, User mode debugger and Kernel mode debugger, Using Kernel Debugger to view debug messages, Service programs, Service Control Manager, Driver service keys, Introduction to Windows Driver Model, Building Dynamic drivers
Lecture 3 
Operating System Architecture, Kernel, HAL and executive, Object Manager,Objects and handles, Object Manager’s namespace, Parsing names, Communication with Device Driver, Handling Application Requests, I/O manager, Input/Output Request Packets (IRP), Completing IRPs
Lecture 4 
Driver Dispatch Routines, DeviceIoControl Interface, A Generic Port I/O driver, Handling Read requests, Handling Write requests, App to driver data transfer mechanisms, Buffered, Direct & Neither I/O, Layered model of drivers, IRP stack locations
Lecture 5 
Writing Real driver, Overview of Bus, Device Registers, Device Register mapping, I/O mapping vs. Memory Mapping, Device Interrupting mechanism, Hardware Interrupt priorities, IRQLs, Device Resource List, Data transfer mechanisms, PIO, DMA, shared buffers
Lecture 6 
Driver Structure, Real World driver, Parallel Port basics, Loop-back device, Interaction with Loop-back device, Plug and Play, Handling Plug & Play IRPs, Hardware abstraction layer, Using HAL services for performing I/O
Lecture 7 
Registering Interrupt Service Routines, Implementing PIO interface, Completing IRP from ISRs, Firing Deferred Procedure Calls (DPCs), Need for Synchronization, Using Sync Critical Routine, Code example for parallel port loop-back driver
Lecture 8 
Overview of different Bus Architectures, Auto recognition, auto configuration, ISA bus, EISA bus,PCI bus
Lecture 9 
The USB bus, Hierarchical model for device connection, Multi-Configurations devices, Device Interfaces, Pipes and Endpoints, Layered communication model, Data transfer mechanisms, Isochronous, Control, Bulk, Interrupt, USB data flow model
Lecture 10 
Transaction, Phases in Transaction, Token, Data and Handshake Packet, Frames, Device Addressing and Endpoint number, States of Endpoints, Phases involved in various transfer types, Auto-Recognition support in USB, Descriptors, Descriptor types – Device, Configuration, Interface, Endpoint, String etc, Communicating with the bus driver, Building USB Request Block (URB) packets, Code Example: Building USB function driver, Code Example: Building USB filter driver
Lecture 11 
Error logging, Need for logging, Conventional driver error and event logging, How logging works Windows Management Instrumentation (WMI) architecture, Consumers and Providers, Providing WMI Support in a WDM Driver, Handling WMI IRP Requests, Logging events and errors using WMI
Lecture 12 
Driver Testing, System Crashes, Reasons for System Crash, The Blue Screen of Death, Reading Crash Screens, Crash Dump Files, Analyzing a Crash Dump, Common reasons for driver failure, Using Driver Verifier Tool, Debugging Drivers, Using Kernel Debugger to debug drivers, Debugging routines exported from kernel, Local Debugging, Remote Debugging
Debugging command to view internal state of OS
 

Requirements

  Hardware Requirements
800 MHZ Pentium III, 20 GB Hard Disk, 128 MB RAM, SVGA Color Monitor
  Software Requirements
Windows 2000 Professional 
Microsoft Visual C++ 6.0
Microsoft Device Driver Development Kit
Microsoft Office
Mode Of Operations
You can download Lecture 1 for your evaluation. To download it click here Lecture 1.
If you find the first lecture useful and decide to take the rest of the course, to know about course fees and how it can be paid select Mode Of Payment.
Each lecture that you download would be a ZIP file. Each zip file would contain a lecture presentation, a text file and an exercise. You have to unzip it, go through the presentation, understand the background text, solve the exercise and send it for evaluation by email to exercises@kicit.com. The next lecture would be made available to you for downloading only after you have submitted the previous exercise. You can submit your queries any time of the day through the 'Queries' section on www.kicit.com.
At the end you would be allotted a project with suitable guidelines. You are supposed to submit the project within 15 days. After the completion of project you would be issued a certificate signed by Mr. Yashavant Kanetkar.
   
 
If you find the first lecture useful and decide to take the rest of the course, you may select one of the following modes of payment:
  Within India:
 
1.

You may deposit Rs. 5500/- directly into the account no 01022260000026, HDFC Bank, India in the name of KANETKAR'S INST OF COMPUTING & IT P LTD. and Fax a copy of the pay in slip to us at Fax no +91-712-2540870 or mail to onlinecourses@kicit.com

2.
You may prepare a DD of Rs. 5500/- drawn in the name of KICIT Pvt. Ltd. and send it to KICIT Pvt. Ltd., 44-A, Gokulpeth, Nagpur-440010, Maharashtra, India.
  Outside India:
 
1.

You may prepare a DD of US $190 drawn in the name of KICIT Pvt. Ltd. and send it to KICIT Pvt. Ltd., 44-A, Gokulpeth, Nagpur-440010, Maharastra, India.

2.
You may deposit US $190 directly into the bank Chase Manhattan Bank, New York with swift code CHASUS33, Account no 001-1-406717 with a following note, please remit US $190 to HDFC Bank Mumbai Account Number 001-1-406717 with Chase Manhattan Bank, NewYork for further credit to account number 01022260000026 with HDFC Bank Nagpur, India
         In all cases send a mail to onlinecourses@kicit.com informing that you have made the payment.
 
  Freebies