I/O Requests Generated by the Minifilter Driver

A minifilter driver can generate and send IRP-based I/O requests from one of the minifilter driver's own instances on the current volume or on another volume. The generated I/O is seen only by the minifilter driver instances and legacy filter drivers attached below the specified instance, and by the file system. This solves many problems related to recursive I/O in the legacy filter driver model, in which I/O requests generated by a legacy filter driver must travel through the entire file system stack, starting with the topmost driver.

The filter manager doesn't unload a minifilter driver until all of its outstanding I/O operations are completed.

Filter Manager Routines for I/O Requests Generated by the Minifilter Driver

The filter manager provides the following support routines for creating, opening, reading, and writing files:

FltClose

FltCreateFile

FltCreateFileEx

FltReadFile

FltWriteFile

The following support routines are provided for setting and removing reparse points:

FltTagFile

FltUntagFile

The following support routines are provided for generating I/O requests:

FltAllocateCallbackData

FltFreeCallbackData

FltPerformAsynchronousIo

FltPerformSynchronousIo

FltReuseCallbackData

The following support routines are provided for canceling a file open request and for reissuing an I/O request:

FltCancelFileOpen

FltReissueSynchronousIo

The filter manager also provides the following general-purpose routines:

FltDeviceIoControlFile

FltFlushBuffers

FltFsControlFile

FltQueryInformationFile

FltQuerySecurityObject

FltQueryVolumeInformationFile

FltSetInformationFile

FltSetSecurityObject