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:
  1. Prepare your code (use role type declarations).
  2. Run Static Driver Verifier.
  3. View and analyze the results.

For more information, see Using Static Driver Verifier to Find Defects in Drivers.

Applies to

ExInterlockedInsertHeadList ExInterlockedInsertTailList ExInterlockedPushEntryList IoMarkIrpPending RemoveHeadList

See also

MarkIrpPending Synchronizing IRP Cancellation