Hi Doron,
I have some requests pending in my KMDF bd.
As a result when IRP_MN_QUERY_REMOVE callback fn gets executed, I return STATUS_UNSUCCESSFUL
as can be seen from the log below.
This results in framework cancelling the request. This same request for querying happens twice.
But once the operation completes, a window pops up:
“To finish removing your hardware, you must restart your computer.
Do you want to restart your computer now?”
Is this expected behaviour even on WDM driver? I dont get why this results in a suggsetion to restart the computer?
How about genuine cases when there is some operation being done by the driver/device and as a result query_remove is
not allowed…
What if user goes ahead and restarts w/o knowing that there is some operation being carried out?
I think this behaviour is not KMDF specific.
Thanks,
-Praveen
kd> !wdflogdump nvnwbx32.sys
Trace searchpath is:
Trace format prefix is: %7!u!: %!FUNC! -
TMF file used for formatting IFR log is: C:\winddk\5744\tools\tracing\i386\wdf01005.tmf
Log at 8483a000
Gather log: Please wait, this may take a moment (reading 4032 bytes).
% read so far … 10, 20, 30, 40, 50, 60, 100
There are 65 log entries
— start of log —
1: FxVerifierLock::InitializeLockOrder - Object Type 0x1036 does not have a lock order defined in fx\inc\FxVerifierLock.hpp
2: FxVerifierLock::InitializeLockOrder - Object Type 0x1036 does not have a lock order defined in fx\inc\FxVerifierLock.hpp
3: FxPkgPnp::PnpEnterNewState - WDFDEVICE 0x7B7CA798 !devobj 0x84839828 entering PnP State WdfDevStatePnpInit from WdfDevStatePnpObjectCreated
4: FxPkgPnp::Dispatch - WDFDEVICE 0x7B7CA798 !devobj 0x84839828, IRP_MJ_PNP, 0x00000000(IRP_MN_START_DEVICE) IRP 0x87492F20
5: FxPkgPnp::PnpEnterNewState - WDFDEVICE 0x7B7CA798 !devobj 0x84839828 entering PnP State WdfDevStatePnpInitStarting from WdfDevStatePnpInit
6: FxPkgPnp::PnpEnterNewState - WDFDEVICE 0x7B7CA798 !devobj 0x84839828 entering PnP State WdfDevStatePnpHardwareAvailable from WdfDevStatePnpInitStarting
7: FxPkgPnp::PnpMatchResources - Not enough interrupt objects created by WDFDEVICE 0x7B7CA798
8: FxPkgPnp::PowerPolicyEnterNewState - WDFDEVICE 0x7B7CA798 !devobj 0x84839828 entering power policy state WdfDevStatePwrPolStarting from WdfDevStatePwrPolObjectCreated
9: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7B7CA798 !devobj 0x84839828 entering power idle state FxIdleStarted from FxIdleStopped
10: FxPkgPnp::PowerEnterNewState - WDFDEVICE 0x7B7CA798 !devobj 0x84839828 entering Power State WdfDevStatePowerStartingCheckDeviceType from WdfDevStatePowerObjectCreated
11: FxPkgPnp::PowerEnterNewState - WDFDEVICE 0x7B7CA798 !devobj 0x84839828 entering Power State WdfDevStatePowerD0Starting from WdfDevStatePowerStartingCheckDeviceType
12: FxPkgPnp::PowerEnterNewState - WDFDEVICE 0x7B7CA798 !devobj 0x84839828 entering Power State WdfDevStatePowerD0StartingConnectInterrupt from WdfDevStatePowerD0Starting
13: FxPkgPnp::PowerEnterNewState - WDFDEVICE 0x7B7CA798 !devobj 0x84839828 entering Power State WdfDevStatePowerD0StartingDmaEnable from WdfDevStatePowerD0StartingConnectInterrupt
14: FxPkgPnp::PowerEnterNewState - WDFDEVICE 0x7B7CA798 !devobj 0x84839828 entering Power State WdfDevStatePowerD0StartingStartSelfManagedIo from WdfDevStatePowerD0StartingDmaEnable
15: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7B7CA798 !devobj 0x84839828 entering power idle state FxIdleStartedPowerUp from FxIdleStarted
16: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7B7CA798 !devobj 0x84839828 entering power idle state FxIdleDisabled from FxIdleStartedPowerUp
17: FxPkgPnp::PowerEnterNewState - WDFDEVICE 0x7B7CA798 !devobj 0x84839828 entering Power State WdfDevStatePowerDecideD0State from WdfDevStatePowerD0StartingStartSelfManagedIo
18: FxPkgPnp::PowerEnterNewState - WDFDEVICE 0x7B7CA798 !devobj 0x84839828 entering Power State WdfDevStatePowerD0 from WdfDevStatePowerDecideD0State
19: FxPkgPnp::PowerPolicyEnterNewState - WDFDEVICE 0x7B7CA798 !devobj 0x84839828 entering power policy state WdfDevStatePwrPolStartingSucceeded from WdfDevStatePwrPolStarting
20: FxPkgPnp::PowerPolicyEnterNewState - WDFDEVICE 0x7B7CA798 !devobj 0x84839828 entering power policy state WdfDevStatePwrPolStartingDecideS0Wake from WdfDevStatePwrPolStartingSucceeded
21: FxPkgPnp::PowerPolicyEnterNewState - WDFDEVICE 0x7B7CA798 !devobj 0x84839828 entering power policy state WdfDevStatePwrPolStarted from WdfDevStatePwrPolStartingDecideS0Wake
22: FxPowerIdleMachine::ProcessEventLocked - WDFDEVICE 0x7B7CA798 !devobj 0x84839828 entering power idle state FxIdleDisabled from FxIdleDisabled
23: FxPkgPnp::PnpEnterNewState - WDFDEVICE 0x7B7CA798 !devobj 0x84839828 entering PnP State WdfDevStatePnpEnableInterfaces from WdfDevStatePnpHardwareAvailable
24: FxPkgPnp::PnpEnterNewState - WDFDEVICE 0x7B7CA798 !devobj 0x84839828 entering PnP State WdfDevStatePnpStarted from WdfDevStatePnpEnableInterfaces
25: FxVerifierLock::InitializeLockOrder - Object Type 0x1036 does not have a lock order defined in fx\inc\FxVerifierLock.hpp
26: FxVerifierLock::InitializeLockOrder - Object Type 0x1036 does not have a lock order defined in fx\inc\FxVerifierLock.hpp
27: FxPkgPnp::PnpEnterNewState - WDFDEVICE 0x76B0CB58 !devobj 0x895558F8 entering PnP State WdfDevStatePnpInit from WdfDevStatePnpObjectCreated
28: FxChildList::ProcessBusRelations - PDO created successfully, WDFDEVICE 76B0CB58 !devobj 895558F8
29: FxPkgPnp::Dispatch - WDFDEVICE 0x76B0CB58 !devobj 0x895558F8, IRP_MJ_PNP, 0x00000000(IRP_MN_START_DEVICE) IRP 0x8757EF00
30: FxPkgPnp::PnpEnterNewState - WDFDEVICE 0x76B0CB58 !devobj 0x895558F8 entering PnP State WdfDevStatePnpInitStarting from WdfDevStatePnpInit
31: FxPkgPnp::PnpEnterNewState - WDFDEVICE 0x76B0CB58 !devobj 0x895558F8 entering PnP State WdfDevStatePnpHardwareAvailable from WdfDevStatePnpInitStarting
32: FxPkgPnp::NotPowerPolicyOwnerEnterNewState - WDFDEVICE 0x76B0CB58 !devobj 0x895558F8 entering not power policy owner state WdfDevStatePwrPolStarting from WdfDevStatePwrPolObjectCreated
33: FxPkgPnp::PowerEnterNewState - WDFDEVICE 0x76B0CB58 !devobj 0x895558F8 entering Power State WdfDevStatePowerStartingCheckDeviceType from WdfDevStatePowerObjectCreated
34: FxPkgPnp::PowerEnterNewState - WDFDEVICE 0x76B0CB58 !devobj 0x895558F8 entering Power State WdfDevStatePowerStartingChild from WdfDevStatePowerStartingCheckDeviceType
35: FxPkgPnp::PowerEnterNewState - WDFDEVICE 0x76B0CB58 !devobj 0x895558F8 entering Power State WdfDevStatePowerD0Starting from WdfDevStatePowerStartingChild
36: FxPkgPnp::PowerEnterNewState - WDFDEVICE 0x76B0CB58 !devobj 0x895558F8 entering Power State WdfDevStatePowerD0StartingConnectInterrupt from WdfDevStatePowerD0Starting
37: FxPkgPnp::PowerEnterNewState - WDFDEVICE 0x76B0CB58 !devobj 0x895558F8 entering Power State WdfDevStatePowerD0StartingDmaEnable from WdfDevStatePowerD0StartingConnectInterrupt
38: FxPkgPnp::PowerEnterNewState - WDFDEVICE 0x76B0CB58 !devobj 0x895558F8 entering Power State WdfDevStatePowerD0StartingStartSelfManagedIo from WdfDevStatePowerD0StartingDmaEnable
39: FxPkgPnp::PowerEnterNewState - WDFDEVICE 0x76B0CB58 !devobj 0x895558F8 entering Power State WdfDevStatePowerDecideD0State from WdfDevStatePowerD0StartingStartSelfManagedIo
40: FxPkgPnp::PowerEnterNewState - WDFDEVICE 0x76B0CB58 !devobj 0x895558F8 entering Power State WdfDevStatePowerD0BusWakeOwner from WdfDevStatePowerDecideD0State
41: FxPkgPnp::NotPowerPolicyOwnerEnterNewState - WDFDEVICE 0x76B0CB58 !devobj 0x895558F8 entering not power policy owner state WdfDevStatePwrPolStarted from WdfDevStatePwrPolStarting
42: FxPkgPnp::NotPowerPolicyOwnerEnterNewState - WDFDEVICE 0x76B0CB58 !devobj 0x895558F8 entering not power policy owner state WdfDevStatePwrPolStartingSucceeded from WdfDevStatePwrPolStarted
43: FxPkgPnp::PnpEnterNewState - WDFDEVICE 0x76B0CB58 !devobj 0x895558F8 entering PnP State WdfDevStatePnpEnableInterfaces from WdfDevStatePnpHardwareAvailable
44: FxPkgPnp::PnpEnterNewState - WDFDEVICE 0x76B0CB58 !devobj 0x895558F8 entering PnP State WdfDevStatePnpStarted from WdfDevStatePnpEnableInterfaces
45: FxPkgPdo::_PnpQueryId - WDFDEVICE 76B0CB58 does not have a string for PnP query IdType #-1, 0xc00000bb(STATUS_NOT_SUPPORTED)
46: FxIoQueue::CancelForDriver - WDFREQUEST 0x7584D5F8 was cancelled in driver for WDFQUEUE 0x7B7C6CA0
47: FxIoQueue::ProcessCancelledRequests - Calling CancelRoutine routine for WDFREQUEST 0x7584D5F8 on WDFQUEUE 0x7B7C6CA0
48: FxIoQueue::CancelForDriver - WDFREQUEST 0x75820FB0 was cancelled in driver for WDFQUEUE 0x7B7C6CA0
49: FxIoQueue::ProcessCancelledRequests - Calling CancelRoutine routine for WDFREQUEST 0x75820FB0 on WDFQUEUE 0x7B7C6CA0
50: FxPkgPnp::Dispatch - WDFDEVICE 0x76B0CB58 !devobj 0x895558F8, IRP_MJ_PNP, 0x00000001(IRP_MN_QUERY_REMOVE_DEVICE) IRP 0x9D83EF00
51: FxPkgPnp::PnpEnterNewState - WDFDEVICE 0x76B0CB58 !devobj 0x895558F8 entering PnP State WdfDevStatePnpQueryRemoveStaticCheck from WdfDevStatePnpStarted
52: FxPkgPnp::PnpEnterNewState - WDFDEVICE 0x76B0CB58 !devobj 0x895558F8 entering PnP State WdfDevStatePnpQueryRemoveAskDriver from WdfDevStatePnpQueryRemoveStaticCheck
53: FxPkgPnp::PnpEventQueryRemoveAskDriver - EvtDeviceQueryRemove failed, 0xc0000001(STATUS_UNSUCCESSFUL)
54: FxPkgPnp::PnpEnterNewState - WDFDEVICE 0x76B0CB58 !devobj 0x895558F8 entering PnP State WdfDevStatePnpStarted from WdfDevStatePnpQueryRemoveAskDriver
55: FxPkgPnp::Dispatch - WDFDEVICE 0x76B0CB58 !devobj 0x895558F8, IRP_MJ_PNP, 0x00000003(IRP_MN_CANCEL_REMOVE_DEVICE) IRP 0x99878F00
56: FxPkgPnp::PnpEnterNewState - WDFDEVICE 0x76B0CB58 !devobj 0x895558F8 entering PnP State WdfDevStatePnpStartedCancelRemove from WdfDevStatePnpStarted
57: FxPkgPnp::PnpEnterNewState - WDFDEVICE 0x76B0CB58 !devobj 0x895558F8 entering PnP State WdfDevStatePnpStarted from WdfDevStatePnpStartedCancelRemove
58: FxPkgPnp::Dispatch - WDFDEVICE 0x76B0CB58 !devobj 0x895558F8, IRP_MJ_PNP, 0x00000001(IRP_MN_QUERY_REMOVE_DEVICE) IRP 0x9F18EF00
59: FxPkgPnp::PnpEnterNewState - WDFDEVICE 0x76B0CB58 !devobj 0x895558F8 entering PnP State WdfDevStatePnpQueryRemoveStaticCheck from WdfDevStatePnpStarted
60: FxPkgPnp::PnpEnterNewState - WDFDEVICE 0x76B0CB58 !devobj 0x895558F8 entering PnP State WdfDevStatePnpQueryRemoveAskDriver from WdfDevStatePnpQueryRemoveStaticCheck
61: FxPkgPnp::PnpEventQueryRemoveAskDriver - EvtDeviceQueryRemove failed, 0xc0000001(STATUS_UNSUCCESSFUL)
62: FxPkgPnp::PnpEnterNewState - WDFDEVICE 0x76B0CB58 !devobj 0x895558F8 entering PnP State WdfDevStatePnpStarted from WdfDevStatePnpQueryRemoveAskDriver
63: FxPkgPnp::Dispatch - WDFDEVICE 0x76B0CB58 !devobj 0x895558F8, IRP_MJ_PNP, 0x00000003(IRP_MN_CANCEL_REMOVE_DEVICE) IRP 0x9ED2EF00
64: FxPkgPnp::PnpEnterNewState - WDFDEVICE 0x76B0CB58 !devobj 0x895558F8 entering PnP State WdfDevStatePnpStartedCancelRemove from WdfDevStatePnpStarted
65: FxPkgPnp::PnpEnterNewState - WDFDEVICE 0x76B0CB58 !devobj 0x895558F8 entering PnP State WdfDevStatePnpStarted from WdfDevStatePnpStartedCancelRemove