- Programming Drivers for the Kernel Mode Driver Framework
- Sample Drivers by Model
- Sample Drivers by Features
- KMDF Driver Structure and Concepts
- A Minimal KMDF Driver: The Simple Toaster
- Creating a WDF Driver Object: <em>DriverEntry</em>
- Creating the Device Object, Device Interface, and I/O Queue: EvtDriverDeviceAdd
Sample Drivers by Model
If none of the sample drivers supports your specific device type, you might be able to find a sample that supports a device that has similar characteristics or is used in a similar way. Table 2 lists the device characteristics and usage models that the KMDF samples support.
Table 2 KMDF Samples by Device Usage Model
Device Usage Model |
Device or Driver Type |
KMDF Sample |
---|---|---|
Hardware that supports only port-mapped I/O |
Parallel port, legacy joystick port, and ISA devices |
AMCC5933 ISA sample (S5933DK1) |
Driver that handles I/O operations serially and reads or writes one port at a time |
|
|
Driver that polls read operation at regular intervals from either a deferred procedure call (DPC) or a dedicated kernel thread |
|
|
Hardware that supports port-mapped I/O and interrupts to notify the driver about input data and other asynchronous events |
Serial port, parallel port, IDE controller, and PS/2 controller |
Serial |
Same as previous, but also supports memory-mapped I/O |
Typical PCI and EISA devices for data acquisition that use direct memory access (DMA) |
PLX9x5x |
Same as previous, but also support bus master DMA channels to read and write |
Network adapters and similar PCI drivers |
PCIDRV |
Hardware that has more than one function or emulates more than one device |
Multifunction PCI devices that do not conform to the PCI specification, multiport serial cards, and multiport network cards |
Toaster bus driver |
Driver that supports a virtual bus |
Serial cards, and multiport network cards |
|
Filter driver that modifies I/O requests and provides an interface for applications to directly control the filter |
Keyboard and mouse filters, storage class filter drivers and serial devices |
Toaster filter driver |
Filter driver that modifies the hardware resources |
|
|
Driver that interacts with an unrelated device stack to perform I/O |
NDIS protocol drivers, Asyncmac, transport driver interface (TDI) client drivers, and Ftdisk or volsnap |
NdisEdge and NdisProt |
Driver that supports a USB client |
Any USB device |
Osrubfx2 |
Software-only drivers or drivers that are not part of any Plug and Play stack |
No device or legacy devices |
Nonpnp |
Legacy NT 4.0-style drivers that do not support Plug and Play |
No device or legacy devices |
|
Driver that must run in the context of the user application so that it can handle METHOD_IOCTs or map memory into user address space |
Video capture devices, audio cards, and high-speed data acquisition devices |
Nonpnp |
Drivers that registers in-process context callback to handle METHOD_NEITHER I/O requests |
|
|