Accessing the User Buffers for an I/O Operation
The FLT_PARAMETERS structure for an I/O operation contains the operation-specific parameters for the operation, including buffer addresses and memory descriptor lists (MDL) for any buffers that are used in the operation.
For IRP-based I/O operations, the buffers for the operation can be specified by using:
MDL only (typically for paging I/O)
Buffer address only
Buffer address and MDL
For fast I/O operations, only the user-space buffer address is specified. Fast I/O operations that have buffers always use neither buffered nor direct I/O and thus never have MDL parameters.
The following topics provide guidelines for handling buffer addresses and MDLs for IRP-based and fast I/O operations in minifilter driver preoperation callback routines and postoperation callback routines: