Code Example: A Thread-Based Driver
This section presents a modified version for the packet-based slave DMA driver introduced in Chapter 12. What is different about this driver is that it uses a system thread to do most of the I/O processing. As a result, it spends very little time at DISPATCH_LEVEL IRQL and does not interfere as much with other system components. Code examples can be found on the CD that accompanies this book or on the book's Web site: http://www.W2KDriverBook.com.
How the Driver Works
Figure 14.6 gives a high-level view of the sample driver architecture. One of the first things to notice is that the driver has no Start I/O routine. When a user-mode I/O request arrives, one of the driver's Dispatch routines simply adds the ...