IRQL

#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
原文地址:https://www.cnblogs.com/ahuo/p/2133906.html