KsIrqlDeviceCallbacks rule ()

The KsIrqlDeviceCallbacks rule specifies that a kernel-streaming (KS) miniport driver returns from a KS device callback function with the same IRQL it had when it was called.

Tips for debugging

When Driver Verifier detects a violation of this rule, it triggers Bug Check 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION, with an arg1 value of 0x00081006. The arg3 (RuleState) and arg4 (SubState) of the bug check provide pointers to additional information about the rule violation.

Use the !ruleinfo debugger extension to find out what the IRQL values were at function entry and exit.

Use the command:

!ruleinfo 0x81006 RuleState SubState.

In the rule state data, the OldIrql is the IRQL when the callback is entered. The NewIrql is the IRQL when the callback function is exited.

Don't use !irql to determine the current IRQL because Driver Verifier might have raised IRQL before the bug check. Instead, use !verifier 0x008 to view the IRQL logs.

Driver model: KS

Bug check(s) found with this rule: Bug Check 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION (0x00081006)

How to test

At run time

To verify this rule, open a Command Prompt window. Enter a Driver Verifier command and specify /domain ks.

For example:

verifier /domain ks [options] /driver <yourdriver>

For more information, see Driver Verifier.