Dispatch Routine IRQL and Thread Context

Note

For optimal reliability and performance, use file system minifilter drivers with Filter Manager support instead of legacy file system filter drivers. To port your legacy driver to a minifilter driver, see Guidelines for Porting Legacy Filter Drivers.

The following table summarizes the IRQL and thread context requirements for legacy file system filter driver dispatch routines.

Dispatch routine Caller's Maximum IRQL Caller's thread context
Cleanup PASSIVE_LEVEL Nonarbitrary
Close APC_LEVEL Arbitrary
Create PASSIVE_LEVEL Nonarbitrary
DeviceControl (except paging I/O) PASSIVE_LEVEL Nonarbitrary
DeviceControl (paging I/O path) APC_LEVEL Arbitrary
DirectoryControl APC_LEVEL Arbitrary
FlushBuffers PASSIVE_LEVEL Nonarbitrary
FsControl (except paging I/O) PASSIVE_LEVEL Nonarbitrary
FsControl (paging I/O path) APC_LEVEL Arbitrary
LockControl PASSIVE_LEVEL Nonarbitrary
PnP PASSIVE_LEVEL Arbitrary
QueryEa PASSIVE_LEVEL Nonarbitrary
QueryInformation PASSIVE_LEVEL Nonarbitrary
QueryQuota PASSIVE_LEVEL Nonarbitrary
QuerySecurity PASSIVE_LEVEL Nonarbitrary
QueryVolumeInfo PASSIVE_LEVEL Nonarbitrary
Read (except paging I/O) PASSIVE_LEVEL Nonarbitrary
Read (paging I/O path) APC_LEVEL Arbitrary
SetEa PASSIVE_LEVEL Nonarbitrary
SetInformation PASSIVE_LEVEL Nonarbitrary
SetQuota PASSIVE_LEVEL Nonarbitrary
SetSecurity PASSIVE_LEVEL Nonarbitrary
SetVolumeInfo PASSIVE_LEVEL Nonarbitrary
Shutdown PASSIVE_LEVEL Arbitrary
Write (except paging I/O) PASSIVE_LEVEL Nonarbitrary
Write (paging I/O path) APC_LEVEL Arbitrary