 








|
 |
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.
|
|
|
|