MarkingInterlockedQueuedIrps rule (wdm)
The MarkingInterlockedQueuedIrps rule specifies that the driver correctly marks the IRP as pending before it queues it in an interlocked fashion for further processing.
This rule also specifies that the driver calls IoMarkIrpPending and correctly marks the IRP as pending before it calls any of the following functions to add the IRP to an interlocked queue:
Drivers should call IoMarkIrpPending before adding an IRP that requires more processing to an interlocked queue. Otherwise, an IRP could be dequeued, completed by another driver routine, and freed by the system before the call to IoMarkIrpPending occurs, thereby causing a crash.
For more information, see Synchronizing IRP Cancellation.
Driver model: WDM
How to test
At compile time |
---|
Run Static Driver Verifier and specify the MarkingInterlockedQueuedIrps 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. |
Applies to
ExInterlockedInsertHeadList ExInterlockedInsertTailList ExInterlockedPushEntryList IoMarkIrpPending RemoveHeadList