 








|
 |
Overview
|
The goal of this seminar is to help engineers learn both the fundamentals and practical details needed to effectively use the Windows Driver Foundation (WDF) Kernel Mode Driver Framework (KMDF).
The seminar focuses specifically on KMDF software drivers, filter drivers, drivers for USB devices, and drivers for programmed I/O type PCI devices. However, once you
understand the basic concepts of WDF, creating KMDF drivers for other classes of
devices and creating drivers using the User Mode Driver Framework (UMDF) should be
relatively easy.
The seminar is designed for both developers who have no experience writing Windows
drivers, as well as those who know how to write drivers using the Windows Driver
Model (WDM). In fact, even if you've already played with WDF a little, you'll almost certainly learn a number of interesting tidbits in this seminar.
The seminar consists of fast-paced lecture sessions, and with time available for questions and answers. For students who want to be able to immediately put what
they learn into practice, a complete set of lab exercises including sample drivers, assignments, and solutions are provided to take home. USB and PCI lab assignments use the
readily available and inexpensive OSR USB FX2 and Sealevel Systems 8018 Digital I/O kits, which are both available through the OSR Online store.
Important note: No registrations will be allowed the day of the seminar. You must pre-register to attend.
|
|
Target Audience
|
|
This seminar is intended for engineers who want to learn how to
design, develop, or test Windows KMDF drivers. Engineers who know already know how to write Windows drivers using WDM will be surprised at how easy KMDF makes their lives.
After this seminar, engineers who've never developed drivers for Windows will almost certainly wonder why everyone says writing Windows drivers is so hard (because, with KMDF, it isn't)!
|
Prerequisites
|
|
Students attending this seminar must have solid knowledge of general operating systems concepts (user mode versus kernel mode, virtual memory concepts, concurrency issues),
device concepts (registers, interrupts), and the basics of Windows O/S Architecture. Previous experience developing device drivers (on any operating system) is not required, but will definitely be an advantage.
|
|
Seminar Outline
(Outline is subject to change without notice)
|
1. Windows OS Architecture Overview
A brief review of Windows operating system architecture, focused specifically on the details needed by a KMDF driver writer.
2. The WDF Object Model
WDF object characteristics and taxonomy. How objects are instantiated and used in KMDF.
3. Driver Initialization
How to initialize a KMDF driver. Also, handling typical PnP and power management events such as device arrival, power-up, and power-down. How KMDF drivers are notified of and claim
their hardware resources.
4. Installing KMDF Drivers
How to create installation control files
for KMDF drivers. The Ten Most
Frequently Used INF File Sections are discussed. The KMDF Co-Installer, and how to specify it in an INF file, is described.
5. Building and Debugging KMDF Drivers
Using the WDK to build KMDF drivers. How to setup WinDbg, and a brief overview of the WDF Kernel Debugger Extensions (WDFKD), including retrieving the WDF Log from the "in flight recorder."
6. The Windows Device Tree
A description of how the Windows PnP subsystem discovers and enumerates drivers. All about Physical Device Objects (PDOs), Function Device Objects (FDOs), and filter devices.
How filter drivers work their magic. How requests are processed, and passed from driver to driver within the Windows I/O Subsystem.
7. Interrupt Request Levels and Deferred Procedure Calls
In this module, we discuss the all-important concept of Interrupt Request Levels (IRQLs), and the specific uses that Windows makes of various IRQLs. We also discuss Deferred Procedure Calls (DPCs)
and how they're used in Windows for Interrupt Service Routine completion (DPCforISR).
8. Queues and Requests
In this section, we discuss WDFQUEUEs and WDFREQUESTS. Topics include how Queues are instantiated, Queue dispatch types, and how Queues can be used to sort Requests.
We also discuss how Requests are processed and completed.
|
|
9. I/O Targets
Local, Remote, and Special I/O Targets are discussed. How to forward Requests both synchronously and asynchronously to other drivers in the system for processing.
10. Buffer Methods and IOCTL Definitions
In this section, the different ways that requestor data buffers can be described are discussed. Direct I/O, Buffered I/O and "Neither I/O" are described, compared, and contrasted. Also discussed
is how to define custom Device IO Control Codes (IOCTLs), and how the previously described buffering methods apply to IOCTLs.
11. Serialization
In this module, we discuss issues relating to synchronizing access to shared data from within your driver. The much misunderstood topic of KMDF Synchronization Scope is fully described, as is
extending sync scope to other callback routines via the Automatic Serialization parameter. WDFSPINLOCKs and WDFWAITLOCKs are discussed, along with the underlying implementations of each
and how they're used.
12. USB Concepts
The basics of USB are discussed including device, configuration, and interface descriptors. Endpoints and pipes are described.
13. Implementing USB Drivers
In this section, we describe how USB drivers are implemented in KMDF. This includes how a configuration and interface is chosen, and how endpoints are retrieved.
How to send vendor commands to a device via Endpoint 0. Using Bulk and Interrupt endpoints.
14. Backplane Bus Devices
Extending our discussion of receiving and processing requests, in this section we describe how to implement your Interrupt Service Routine (ISR) and Deferred Procedure Call for ISR completion
(DPCforISR) in a KMDF Driver.
15. Helpful Classes and Methods
A brief description of a few Framework classes that might be useful additions to your "bag of tricks."
|
|
Cost
WDF Quick Start
3 days, lecture style (with take home labs)
Cost: $2350 or $2150 if paid 4 weeks prior (non-U.S. course prices vary by location)
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.
|
|
|
|