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 |
Feedback
https://aka.ms/ContentUserFeedback.
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see:Submit and view feedback for