Questions tagged [irql]

an Interrupt Request Level (IRQL) is the priority given to any interrupt request generated by computer hardware.

An Interrupt Request Level (IRQL) is the priority given to any interrupt request generated by computer hardware. If for instance, a hard disk drive generates an interrupt request signal, and another device, such as a USB printer, generates an interrupt request signal, the two interrupts can not be serviced simultaneously. The IRQL is used to determine which one is serviced first. In this example, a hard disk interrupt requires a higher priority than a printer interrupt.

The criteria used to prioritize interrupt request levels are determined by the operating system, which is programmed to give higher priority to more important devices. For example, if a gamepad and a hard disk generated simultaneous interrupt requests, the operating system would assign a higher priority to the hard disk, because the hard disk contains information necessary for the operating system or its applications to function. If hard disk requests are delayed, many applications or even the operating system will be slowed down.

Reference

http://en.wikipedia.org/wiki/IRQL_%28Windows%29

6 questions
3
votes
0 answers

KeAcquireSpinLock long execution time

I am currently developing a Windows Kernel Driver that implements its own networking stack. While testing some base functionality of the implemented stack, I noticed that replies to pings would sometimes take noticeably longer than usual.…
ApiTiger
  • 31
  • 2
2
votes
1 answer

Determining IRQL level

How can the IRQL Level of a piece of driver code be determined. PAGED_CODE() macro specifies that the piece of code can be run in an IRQL level less than DISPATCH_LEVEL.But haw can the exact IRQL Level be determined.
Reena Cyril
  • 417
  • 4
  • 11
1
vote
1 answer

Seemingly impossible bugcheck

I am writing my first kernel driver, and it's crashing on the following line in DriverEntry: status = FwpsCalloutRegister(wdfDevice, &sCallout, &Globals.FlowCalloutId); !analyze v in WinDbg outputs the…
wezten
  • 2,126
  • 3
  • 25
  • 48
1
vote
1 answer

Access to global variable after calling NdisAcquireSpinLock causes IRQL_NOT_LESS_OR_EQUAL BSoD

I have a NDIS Filter driver (a update for WinPcap) and tested it on Windows 10 10586 x64 VM. I enabled the verifier and it causes IRQL_NOT_LESS_OR_EQUAL BSoD when launching Wireshark (aka using my driver's function). Here's the dump: 1: kd> !analyze…
hsluoyz
  • 2,739
  • 5
  • 35
  • 59
0
votes
1 answer

using floating-point operations at high_level irql

In my kernel routine that executes at HIGH_LEVEL IRQL, I've been trying to manage the floating-point state by directly invoking FXSAVE and FXRSTOR. As KeSaveExtendedProcessorState and KeRestoreExtendedProcessorState are not usable at this level, I…
daniel
  • 25
  • 3
0
votes
0 answers

Why is IoGetInitialStack function limited to IRQL<=APC_LEVEL?

I'm trying to find the top (or base) of the stack in my callback function that is used in the Windows kernel. I thought to use IoGetInitialStack function for that, but unfortunately it's documentation states: IRQL "<=APC_LEVEL" I looked into it…
MikeF
  • 1,021
  • 9
  • 29