IoRequestDpc results in IRQ_NOT_LESS_



Hello,

first, thanks for the last support. It was a great help to me.

I have the following problem.
A call to IoRequestDpc ( deviceObject, NULL, (PVOID) TRUE ) at the end of a routine running at DISPATCH_LEVEL (returning STATUS_MORE_PROCESSING_REQUIRED) cause a bug check with the parameters indicating 0xA: IRQL_NOT_LESS_OR_EQUAL, and a write access ( 0x...1 parameter 3 ).
According the WinDbg and it's documentation, this is a page fault means a write access to a address actually not mapped in the physical memory.


If i don't queue a dpc, the routine ends up as expected.
I also tried to raise the IRQL to a higher level before queueing a dpc, but it behaves the same.


Whithin the routine i only access data that is in nonpaged memory and even if a return statement at the very beginning of the DPC-Routine is set, it results in this bug check.

I need to queue a dpc to commence a process of several actions, so what's the faulty ?
Isn't this the right way ?


Maybe this is an easy exercise for anyone, but i don't know why this bug check appears. Have someone had this problem before ?

Thanks in advance !

  Chi-Tai
.



Relevant Pages

  • Re: IoRequestDpc results in IRQ_NOT_LESS_
    ... If i don't queue a dpc, the routine ends up as expected. ... I also tried to raise the IRQL to a higher level before queueing a dpc, ... Whithin the routine i only access data that is in nonpaged memory and even if a return statement at the very beginning of the DPC-Routine is set, it results in this bug check. ...
    (microsoft.public.development.device.drivers)
  • Re: IoRequestDpc results in IRQ_NOT_LESS_
    ... > If i don't queue a dpc, the routine ends up as expected. ... > results in this bug check. ...
    (microsoft.public.development.device.drivers)
  • Re: [linux-pm] question on resume()
    ... Rafael is wrong; wake_updoesn't remove a task from a wait queue. ... Thus calling wake_upon a task in the refrigerator will accomplish ... The I/O's completion routine generally _will_ end up calling ...
    (Linux-Kernel)
  • Re: KeSetEvent in InterruptServiceRotine , cant pass DriverVerifier test
    ... You cannnot use KeSetEvent in an interrupt service routine, ... You will need to queue a DPC ... and the perform the KeSetEvent from the DPC routine. ... > When my device have a interrupt event,then driver's InterrupServiceRotine ...
    (microsoft.public.development.device.drivers)
  • Re: [linux-pm] question on resume()
    ... wake_updoesn't remove a task from a wait queue. ... queue after verifying that the necessary condition has been satisfied. ... Thus calling wake_upon a task in the refrigerator will accomplish ... The I/O's completion routine generally _will_ end up calling ...
    (Linux-Kernel)