Hey Folks,
I have a question with regard to proper power management.
I have a USB device driver, that manages an Interrupt Endpoint. The
technique I use to receive interrupts from my device is to create an IRP in
my driver, and send it to the endpoint, as interrupts are received my
OnInterrupt function is called, I deal with the interrupt and re-submit the
IRP. This works great for me, but leads to my question.
What is the proper way to deal with this interrupt when servicing a shutdown
or power up request from the power manager. If I don’t do anything with it,
it causes my test system to crash (KMODE_EXCEPTION_NOT_HANDLED —>
STATUS_ACCESS_VIOLATION in Ndis.sys !) the system when I try to resume after
a Hibernate. When I disable the Interrupt IRP at my drivers load time, the
problem goes away and I can Hibernate and Resume my driver. I think my USB
driver not dealing with this IRP is causing NDIS.SYS to get corrupt memory
some how, thus causing the crash.
How should I deal with this.
I have read all the DDK docs on power management, and have the impression I
am not, under any circumstance supposed to block when servicing Power IRPs.
Normally on a power down request I would cancel my Irp, and wait for its
cancel routine to be called. Then I would complete the power request, thus
removing my drivers interrupt IRP from existence before the system powers
down. On power up I would re-create the power IRP.
Thanks !
-Chris
Christopher Pane
Software Engineer
Vanteon
2851 Clover Street
Pittsford, NY 14534
Tel: (716) 248-0510 (Ext 232)
Fax: (716) 248-0537
email: xxxxx@vanteon.com
web: www.vanteon.com
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com