With Driver Verifier set to “verify everything”, I’m hitting this error:
***********************************************************************
* THIS VALIDATION BUG IS FATAL AND WILL CAUSE THE VERIFIER TO HALT *
* WINDOWS (BUGCHECK) WHEN THE MACHINE IS NOT UNDER A KERNEL DEBUGGER! *
***********************************************************************
WDM DRIVER ERROR: [SS1HWADV.sys @ 0xEFD460B2] An IRP dispatch handler for a
PDO has deleted it’s device object, but the hardware has
not been reported as missing in a bus relations query.
DeviceObject = 81EE0400 - Dispatch = EFD460B2 - Irp =
82E88F48
IRP_MJ_PNP.IRP_MN_REMOVE_DEVICE -
[ DevObj=821D8428, FileObject=00000000, Parameters=00000000 00000000
00000000 00000000 ]
http://www.microsoft.com/hwdq/bc/default.asp?os=5.1.2600&major=0xc9&minor=0x
221&lang=0x9
Break, Ignore, Zap, Remove, Disable all (bizrd)?
The situation is this: My bus enumerator exposes a child PDO, PNP loads the
driver for it, binds that driver to my child PDO. That driver fails during
IRP_MN_START_DEVICE, and so PNP tears down the device stack. So my child
PDO receives IRP_MN_REMOVE_DEVICE, and I process it. I remove the device
from the device list of the parent bus enumerator device, I tear down all
child device state, then I call IoDeleteDevice on the child PDO, then I
return. Immediately after returning, Driver Verifier reports the above
error.
I’ve tried to find more information on this error, and how to fix the
problem, but have found nothing useful. I have tried removing my device
from the bus device’s list, then calling IoInvalidateDeviceRelations on the
bus device, but this has had no effect.
Any clues would be appreciated.
– arlie