Hello
I'm working on an HID USB device with Selective Suspend on Windows 7, trying to get it to pass through the Windows Hardware Certification Tests (specifically the CHAOS test), and I keep getting bluescreens from the HIDUSB system driver. I was hoping someone maybe had a little more insight into what could be wrong.
Right now I'm not sure if it is something my USB device is doing wrong, or if it just exposes a bug in the driver.
Selective Suspend has been enabled with an INF file I've made, that will edit the registry.
The error is a "DRIVER_POWER_STATE_FAILURE", and occurs exactly 10 minutes after the host issues the last communication to the device (I got a Beagle USB Analyzer on the bus to check traffic).
I've spoken with the system developer I'm doing this job for, and he provided me with the failure log I've posted below. It mentioned a 10 minute timeout waiting for a power IRP, which matches what I'm seeing with my USB analyzer.
Is there something my device was supposed to send out here, but didn't? Did I perhaps not set the Selective Suspend up correctly in the registry?
Any help is greatly appreciated!
Thanks
- Jonas
0: kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
DRIVER_POWER_STATE_FAILURE (9f)
A driver has failed to complete a power IRP within a specific time (usually 10 minutes).
Arguments:
Arg1: 0000000000000003, A device object has been blocking an Irp for too long a time
Arg2: fffffa800e5ac060, Physical Device Object of the stack
Arg3: fffff80000ba2748, nt!TRIAGE_9F_POWER on Win7, otherwise the Functional Device Object of the stack
Arg4: fffff980102d0af0, The blocked IRP
Debugging Details:
DRVPOWERSTATE_SUBCODE: 3
DRIVER_OBJECT: fffffa800ff29ca0
IMAGE_NAME: hidusb.sys
DEBUG_FLR_IMAGE_TIMESTAMP: 4ce7a665
MODULE_NAME: hidusb
FAULTING_MODULE: fffff88007fb2000 hidusb
DEFAULT_BUCKET_ID: WIN7_DRIVER_FAULT
BUGCHECK_STR: 0x9F
PROCESS_NAME: svchost.exe
CURRENT_IRQL: 2
TAG_NOT_DEFINED_c000000f: FFFFF80000BA2FB0
STACK_TEXT:
fffff80000ba26f8 fffff80002d4b6d2 : 000000000000009f 0000000000000003 fffffa800e5ac060 fffff80000ba2748 : nt!KeBugCheckEx fffff80000ba2700 fffff80002cebc3c : fffff80000ba2830 fffff80000ba2830 0000000000000000 0000000000000002 : nt! ?? ::FNODOBFM::string'+0x33ac0 fffff80000ba27a0 fffff80002cebad6 : fffffa800ef2bc58 fffffa800ef2bc58 0000000000000000 0000000000000000 : nt!KiProcessTimerDpcTable+0x6c fffff80000ba2810 fffff80002ceb9be : 000000033d1dddeb fffff80000ba2e88 0000000000015c4f fffff80002e56c68 : nt!KiProcessExpiredTimerList+0xc6 fffff80000ba2e60 fffff80002ceb7a7 : fffff80002e53ec5 fffff80000015c4f fffffa800eee1610 000000000000004f : nt!KiTimerExpiration+0x1be fffff80000ba2f00 fffff80002ce4105 : 0000000000000000 fffffa800ed64b50 0000000000000000 fffff88001264838 : nt!KiRetireDpcList+0x277 fffff80000ba2fb0 fffff80002ce3f1c : 00000000042fbcb0 fffff80002c23895 fffff80002c49460 fffff8800a87cb60 : nt!KyRetireDpcList+0x5 fffff8800a87caa0 fffff80002d2be93 : fffff80002cdd540 fffff80002cdd5ac 0000000000000001 fffff8800a87cb60 : nt!KiDispatchInterruptContinue fffff8800a87cad0 fffff80002cdd5ac : 0000000000000001 fffff8800a87cb60 00000000042fbcb0 00000000086c8050 : nt!KiDpcInterruptBypass+0x13 fffff8800a87cae0 000007fef2e04e07 : 0000000000000000 0000000000000000 0000000000000000 0000000000000000 : nt!KiInterruptDispatchNoLock+0x1fc 000000000340e4d8 0000000000000000 : 0000000000000000 0000000000000000 0000000000000000 0000000000000000 : 0x000007fef2e04e07
STACK_COMMAND: kb
FOLLOWUP_NAME: MachineOwner
FAILURE_BUCKET_ID: X64_0x9F_VRF_3_POWER_DOWN_IMAGE_hidusb.sys
BUCKET_ID: X64_0x9F_VRF_3_POWER_DOWN_IMAGE_hidusb.sys
Followup: MachineOwner