#define PASSIVE_LEVEL 0 // Passive release level
#define LOW_LEVEL 0 // Lowest interrupt level
#define APC_LEVEL 1 // APC interrupt level
#define DISPATCH_LEVEL 2 // Dispatcher level
#define CMCI_LEVEL 5 // CMCI handler level
#define PROFILE_LEVEL 27 // timer used for profiling.
#define CLOCK1_LEVEL 28 // Interval clock 1 level - Not used on x86
#define CLOCK2_LEVEL 28 // Interval clock 2 level
#define IPI_LEVEL 29 // Interprocessor interrupt level
#define POWER_LEVEL 30 // Power failure level
#define HIGH_LEVEL 31 // Highest interrupt level
Dispatch Routine IRQL and Thread Context
The following table summarizes the IRQL and thread context requirements for file system filter driver dispatch routines.
| Dispatch routine | Caller's 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 |