Hi,
I am seeing 0xD1 crash with my WDF based driver. From the wdflogdump it is observed that my driver gets an IRP from Child device even after the Child PDO gets deleted and is removed from the bus.
wdflogdump is given below
32070: FxChildList::ProcessBusRelations - PDO WDFDEVICE 7A0D61C8 !devobj 85F21A10 reported as missing to pnp
32071: FxPkgPnp::HandleQueryBusRelations - WDFDEVICE 791E1FB0 returning 0 devices in relations E33A81D0
32072: FxPkgPnp::Dispatch - WDFDEVICE 0x7A0D61C8 !devobj 0x85F21A10, IRP_MJ_PNP, 0x00000007(IRP_MN_QUERY_DEVICE_RELATIONS) IRP 0x862F37A8
32073: FxPkgPnp::Dispatch - WDFDEVICE 0x7A0D61C8 !devobj 0x85F21A10, IRP_MJ_PNP, 0x00000002(IRP_MN_REMOVE_DEVICE) IRP 0x862F37A8
32074: FxPkgPnp::PnpEnterNewState - WDFDEVICE 0x7A0D61C8 !devobj 0x85F21A10 entering PnP State WdfDevStatePnpRemoved from WdfDevStatePnpFailedWaitForRemove
32075: FxPkgPnp::PnpEnterNewState - WDFDEVICE 0x7A0D61C8 !devobj 0x85F21A10 entering PnP State WdfDevStatePnpRemovedChildrenRemoved from WdfDevStatePnpRemoved
32076: FxPkgPnp::PnpEnterNewState - WDFDEVICE 0x7A0D61C8 !devobj 0x85F21A10 entering PnP State WdfDevStatePnpCheckForDevicePresence from WdfDevStatePnpRemovedChildrenRemoved
32077: FxPkgPnp::PnpEnterNewState - WDFDEVICE 0x7A0D61C8 !devobj 0x85F21A10 entering PnP State WdfDevStatePnpPdoRemoved from WdfDevStatePnpCheckForDevicePresence
32078: FxIoQueue::QueuePurge - All WDFQUEUE 0x7A0AE818 requests cancelled
32079: FxIoQueue::QueuePurge - All driver cancellable requests cancelled in WDFQUEUE 0x7A0AE818
32080: FxIoQueue::QueuePurge - All WDFQUEUE 0x79BDF398 requests cancelled
32081: FxIoQueue::QueuePurge - All driver cancellable requests cancelled in WDFQUEUE 0x79BDF398
32082: FxSelfManagedIoMachine::ProcessEvent - WDFDEVICE 0x7A0D61C8 !devobj 0x85F21A10 entering self managed io state FxSelfManagedIoCleanup from FxSelfManagedIoFlushed
32083: FxSelfManagedIoMachine::ProcessEvent - WDFDEVICE 0x7A0D61C8 !devobj 0x85F21A10 entering self managed io state FxSelfManagedIoFinal from FxSelfManagedIoCleanup
32084: FxObject::~FxObject - Object 85F29E30, WDFOBJECT 7A0D61C8 transitioning from FxObjectStateCreated to FxObjectStateDisposingEarly
32085: FxObject::~FxObject - Object 85F29E30, WDFOBJECT 7A0D61C8 transitioning from FxObjectStateDisposingEarly to FxObjectStateDisposingDisposeChildren
32086: FxObject::~FxObject - Object 85F517E0, WDFOBJECT 7A0AE818 transitioning from FxObjectStateCreated to FxObjectStateDisposingEarly
…
…
…
…
32116: FxObject::~FxObject - Object 85F70048, WDFOBJECT 7A08FFB0 transitioning from FxObjectStateDeletedAndDisposed to FxObjectStateDestroyed
32117: FxObject::~FxObject - Object 85F827A0, WDFOBJECT 7A07D858 transitioning from FxObjectStateDisposed to FxObjectStateDeletedAndDisposed
32118: FxObject::~FxObject - Object 85F6E740, WDFOBJECT 7A0918B8 transitioning from FxObjectStateDisposed to FxObjectStateDeletedAndDisposed
32119: FxPkgPnp::PnpEnterNewState - WDFDEVICE 0x7A0D61C8 !devobj 0x85F21A10 entering PnP State WdfDevStatePnpFinal from WdfDevStatePnpPdoRemoved
32120: FxPkgPnp::_PnpRemoveDevice - WDFDEVICE 7A0D61C8, !devobj 85F21A10 waiting for remove event to finish processing
32121: FxDevice::Destroy - Deleting !devobj 85F21A10, WDFDEVICE 7A0D61C8, attached to !devobj 00000000
32122: FxObject::~FxObject - Object 85F29E30, WDFOBJECT 7A0D61C8 transitioning from FxObjectStateDisposed to FxObjectStateDeletedAndDisposed
32123: FxObject::~FxObject - Object 85F29E30, WDFOBJECT 7A0D61C8 transitioning from FxObjectStateDeletedAndDisposed to FxObjectStateDestroyed
How does it possible? What is going wrong here? Any help?
\Prasad