CriticalRegions rule (wdm)
The CriticalRegions rule specifies that the driver must call KeEnterCriticalRegion before calling KeLeaveCriticalRegion and that the driver calls KeLeaveCriticalRegion before any subsequent calls to KeEnterCriticalRegion. (Nested calls are permitted.)
This rule also specifies that the driver calls KeLeaveCriticalRegion to re-enable delivery of normal kernel asynchronous procedure calls (APCs) before it returns.
The WDK documentation of KeEnterCriticalRegion and KeLeaveCriticalRegion explains that the caller of these functions can be running at IRQL<=APC_LEVEL. In this situation, this rule enforces a best practice recommendation.
Driver model: WDM
Bug check(s) found with this rule: Bug Check 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION (0x00040003)
How to test
At compile time |
---|
Run Static Driver Verifier and specify the CriticalRegions rule. Use the following steps to run an analysis of your code:
For more information, see Using Static Driver Verifier to Find Defects in Drivers. |
At run time |
---|
Run Driver Verifier and select the DDI compliance checking (additional) option. |
Applies to
ExEnterCriticalRegionAndAcquireResourceExclusive ExReleaseResourceAndLeaveCriticalRegion KeEnterCriticalRegion KeLeaveCriticalRegion