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:

Accessing User Buffers in a Preoperation Callback Routine

Accessing User Buffers in a Postoperation Callback Routine