6.1.1 Commonly Implemented Dispatch Routines
6.1.2 Conditionally Implemented Dispatch Routines
6.2.2 How to Complete an IRP in a Dispatch Routine
6.2.3 When to Complete an IRP in the Dispatch Routine
6.2.4 How to Pass IRPs with Valid Parameters on from a Dispatch Routine
6.3.1.1 Basic DispatchCreateClose Routines
6.3.1.2 Points to Consider in Implementing DispatchCreateClose
6.3.2 DispatchCleanup Functionality
6.3.3 DispatchRead and/or DispatchWrite Functionality
6.3.3.1 DispatchReadWrite Using Buffered I/O
6.3.3.2 DispatchReadWrite Using Direct I/O
6.3.3.3 DispatchReadWrite in Higher-Level Drivers
6.3.3.4 Points to Consider in Implementing DispatchReadWrite
6.3.4 Dispatch(Internal)DeviceControl Functionality
6.3.4.1 DispatchDeviceControl in Lowest-Level Drivers
6.3.4.2 DispatchDeviceControl in Higher-Level Drivers
6.3.4.3 Dispatch(Internal)DeviceControl in Class/Port Drivers
6.3.4.4 Points to Consider in Implementing Dispatch(Internal)DeviceControl
The Dispatch routine is defined by the I/O Manager as follows:
NTSTATUS (*PDRIVER_DISPATCH) ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp );
This chapter summarizes the required functionality of NT drivers’ standard Dispatch routines and some guidelines for the most commonly implemented Dispatch routines.