IRQL rule set (NDIS)

Use these rules to verify that your driver makes DDI calls at the required IRQL.

A driver that does not follow the IRQL rules can cause serious problems during operation that can lead to deadlock conditions or computer crashes.

In this section

Topic Description

Flags_Irql

The Flags_Irql rule specifies that KeGetCurrentIrql must not be called within callback functions that have a dispatch level flag parameter that indicates the current IRQL.

The correct use of the dispatch level flag can help you avoid unnecessary attempts to set the IRQL. For more information about how to use this flag, see Dispatch IRQL Tracking.

Irql_CallManager_Function

The Irql_CallManager_Function rule specifies that the NDIS functions for the NDIS CallManager must be called at correct IRQL levels.

Irql_Connection_Function

The Irql_Connection_Function rule specifies that the NDIS connection functions for protocol drivers must be called at correct IRQL levels.

Irql_Filter_Driver_Function

The Irql_Filter_Driver_Function rule specifies that the NDIS functions for filter drivers must be called at correct IRQL levels.

Irql_Gather_DMA_Function

The Irql_Gather_DMA_Function rule specifies that the NDIS scatter/gather DMA functions must be called at correct IRQL levels.

Irql_IM_Function

The Irql_IM_Function rule specifies that the NDIS functions for Intermediate (IM) drivers must be called at correct IRQL levels.

Irql_Interfaces_Function

The Irql_Interfaces_Function rule specifies that the NDIS network interface functions must be called at correct IRQL levels.

Irql_Interrupt_Function

The Irql_Interrupt_Function rule specifies that the NDIS functions for interrupts must be called at correct IRQL levels.

Irql_IrqlSetting_Function

The Irql_IrqlSetting_Function rule specifies that the NDIS interrupt macros must be called at correct IRQL levels.

Irql_MCM_Function

The Irql_MCM_Function rule specifies that the NDIS MCM functions for drivers must be called at correct IRQL levels.

Irql_MCO_Function

The Irql_MCO_Function rule specifies that the NDIS MCO DDIs for miniport drivers must be called at correct IRQL levels.

Irql_Miniport_Driver_Function

The Irql_Miniport_Driver_Function rule specifies that the NDIS functions for miniport drivers must be called at correct IRQL levels.

Irql_Miscellaneous_Function

The Irql_Miscellaneous_Function rule specifies that the NDIS functions must be called at correct IRQL levels.

Irql_NetBuffer_Function

The Irql_NetBuffer_Function rule specifies that the NET_BUFFER-related functions must be called at correct IRQL levels.

Irql_OID_Function

The Irql_OID_Function rule specifies that the NDIS OID request DDIs must be called at correct IRQL levels.

Irql_Protocol_Driver_Function

The Irql_Protocol_Driver_Function rule specifies that the NDIS functions for CoNDIS clients must be called at correct IRQL levels.

Irql_SendRcv_Function

The Irql_SendRcv_Function rule specifies that the send and receive functions for NDIS drivers must be called at correct IRQL levels.

Irql_StatusIndication_Function

The Irql_StatusIndication_Function rule specifies that the NDIS status indication functions for miniport and filter drivers must be called at correct IRQL levels.

Irql_Synch_Function

The Irql_Synch_Function rule specifies that the NDIS interrupt and synchronization DDIs must be called at correct IRQL levels.

Irql_Timer_Function

The Irql_Timer_Function rule specifies that the NDIS timer service functions must be called at correct IRQL levels.

To select the Irql rule set

  1. Select your driver project (.vcxProj) in Microsoft Visual Studio. From the Driver menu, click Launch Static Driver Verifier….

  2. Click the Rules tab. Under Rule Sets, select Irql.

    To select the default rule set from a Visual Studio developer command prompt window, specify Irql.sdv with the /check option. For example:

    msbuild /t:sdv /p:Inputs="/check:Irql.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
    

    For more information, see Using Static Driver Verifier to Find Defects in Drivers and Static Driver Verifier commands (MSBuild).