OSR Logo
Seminars
  
osr.com










Advanced Driver Topics for Windows
Target Audience  Prerequisite  Seminar Outline  Cost   Back to Seminar Schedule

Next Scheduled: Join our interest list to receive email about future offerings

 Click here for a PDF version of this page

Overview

This very popular two-day lecture seminar is specifically designed for people who already write drivers for Windows and understand the details of the I/O subsystem. The seminar builds upon the knowledge that most reasonably experienced Windows driver writers already have, and delves further into a variety of advanced topics and techniques

Organized as a sort of "master class", the seminar explores a collection of individual topics of concern to Windows driver writers.  These

 

topics include: Virtual memory, request context, alternative DMA architectures, ISR-DPC latency, I/O completion issues for intermediate drivers, and driver-to-driver communications.

While this is clearly an advanced course in Windows kernel mode drivers, this seminar does not cover the details of implementing specific types of drivers, including (but not limited to) printer, video, SCSI, NDIS, USB, 1394 or (of course) user-mode drivers.

 


Target Audience

Our students tell us that they get the most out of this seminar when they come to the class having some practical experience writing drivers on Windows. Thus, we do not encourage typical students who are new to Windows driver development to attend this seminar immediately following attendance at our WDM driver seminar.


Prerequisites

Previous attendance at OSR's 3-day or 5-day device driver seminar will be assumed. We strongly recommend students who have not attended one of OSR's device drivers seminars take that seminar prior to attending this class. Please note that due to the intensive nature of this seminar, the instructor will not be able to slow-down the pace of this seminar to accommodate students who have not taken the prerequisite OSR seminar.


Seminar Outline

 
1. Introduction The course starts off with a brief review of the general architecture of the operating system, including the organization of the Executive, O/S emulation subsystems, executive subsystems, control and dispatcher objects.

2. More O/S Internals Discussion of key operating system data structures and their inter-relations, including descriptions of the most interesting structures. Structures discussed include Microsoft exposed fields in EPROCESS and KPROCESS, ETHREAD and KTHREAD, PEB, TEB, and DISPATCHER_HEADER.

3. Virtual Memory A discussion of the working of the virtual memory subsystem, including key memory management data structures and their uses.

4. Enhancing Driver Supportability and Usability A collection of general and specific topics of interest: Version resources, event logging, driver tracing, memory guarding, using Driver Verifier, and the like.

5. Advanced I/O Request Management Detailed discussion of alternative methods of queuing and handling multiple simultaneous IRPs per device. Request cancellation schemes, and the complexities of I/O cancellation. Buffer management in system space, including allocating and managing contiguous, non-paged, and other types of request buffers, and building IRPs that refer to these buffers.

6. Managing Request Context A discussion focused on the different types of context (process, thread, and security).  Why a device driver would need to be concerned with request context, and how context-related issues can be managed and avoided are all discussed as are methods of returning to a specific thread or process context.
  7. DPC/ISR Issues Balancing the work-load between ISR and DPC. ISR to DPC latency issues. Special kernel DPCs.

8. Supporting Win64 Discussion of kernel-mode changes necessary (and those that aren't) to support your driver on Win64. Detailed coverage of IOCTL handling and a few "gotchas" too.

9. Driver-to-Driver Communications Discussion of some of the many ways two drivers might communicate, including: (a) IRP-Based communications (building your own IRPs, completion routine handling), (b) Procedure call communication (via kernel mode DLLs, shared jump tables with IOCTL exchange, (c) Shared memory sections (d) IPC methods using communications, (e) Stolen entry points.

10. Driver-to-Application Communications A round-up of the different ways that drivers and applications communicate, including classing hanging IOCTLs, shared events, shared memory (MmMapLockedPages, ZwMapViewOfSection()), IPC methods via communications APIs.

11. Filter, Bus & DMA Driver Issues How do device stacks get built? What role does filtering play with respect to various device classes? These details and all you ever want to know about Bus drivers and advanced DMA techniques are covered in this module.

12. Coping with I/O Completion Detailed discussion of I/O completion including the "magic" of (and trouble with) I/O completion processing, the role of the I/O manager, in I/O completion for synchronous vs. asynchronous drivers.

Cost
Advanced Driver Topics for Windows
2 days, lecture
Cost:(in the United States or Canada) $1950 per person or $1750 if paid 2 weeks in advance

OSR also teaches private on-site seminars all over the world.

As with all of our seminar offerings, our Terms and Conditions and Bottom Line Guarantee apply.

Seminars Outside North America Please contact OSR at +1.603.595.6500 for seminars held outside of the United States and Canada. Prices vary by location. All courses are taught in English. At some international locations, translation services will be provided. Please contact OSR for more information.


Top of Page
 
 
Home | Consulting | Development | Toolkits | Seminars | Publications | Resources | About OSR | Contact Us

©2008 OSR Open Systems Resources, Inc, ALL RIGHTS RESERVED