IRQL and side effects

All,

Need your help in clarifying the following:

  1. In my driver code after relinquishing a spinlock, I
    check whether I am at an IRQL level below Dispatch
    level or not. I was very surprised to note that after
    relinquishing the spinlock (using KeReleaseSpinLock())
    KeGetCurrentIrql() returned me a value of 10. This, I
    feel and needs more investigation on my part, is
    probably because of some corruption of my
    datastructure which is used to store the initial IRQL
    value before calling KeRaiseIRQL(). My question is if
    the current IRQL value is 10, how my code was able to
    run? My code never raises the IRQL beyond dispatch
    level.

Thanks in advance
Vam


Do you Yahoo!?
The New Yahoo! Shopping - with improved product search
http://shopping.yahoo.com

“Vam” wrote in message news:xxxxx@ntdev…
>
>
> 1) In my driver code after relinquishing a spinlock, I
> check whether I am at an IRQL level below Dispatch
> level or not. I was very surprised to note that after
> relinquishing the spinlock (using KeReleaseSpinLock())
> KeGetCurrentIrql() returned me a value of 10. This, I

You have a bug. KeReleaseSpinLock is entirely dependent on the old IRQL you
provide.

You should be testing with the checked kernel and hal. If you were, I
believe your driver would have blue screened as soon as the error was
detected.

Peter
OSr