Hi all,
I try to develop an USB smartcard reader driver with multiple smartcard slot ( 3 device interface for 3 slot smartcard reader )
now I try to validate all pnp and power management process.
sequence of surpriseRemoval :
0) Call deviceSurpriseRemoval
- Call DeviceExitD0,
- Call DeviceReleaseHardware
and after close all deviceinterface - fileIoCanceledOnQueue ( per device interface)
- fileCleanUp ( per device interface)
- fileClose ( per device interface)
- and Finish with driverCleanUp
This process seems to be ok and work fine.
In device manager, if I disable the device :
Sequence is:
0) fileIoCanceledOnQueue ( per device interface)
- fileCleanUp ( per device interface)
- fileClose ( per device interface)
and after remove the USB PDO - DeviceQueryRemove
- DeviceD0Exit
- DeviceReleaseHardware
- DriverCleanUp
This process seems to be ok and work fine
Now the problem is when I launch a smartcard tool,
sequence is the same but the device manager refuse to remove the device ( dialogBox appear with message “need to reboot the machine” )
sequence is :
0) fileIoCanceledOnQueue ( called 2 times but never called for the third device interface )
- fileCleanUp ( called for canceled success )
- fileClose ( called for cleanUp success )
The smartcard tools continue to exchange DATA with the Third device interface and refuse to remove the device.
My question is how to “inform” device interfaces that the reader is in “removal” process ?
is it a problem of delay ? because 2 first interface are correctly cloed and cleaned but not the third.
I suppose if device interface is alive the device could not removed ?
Thanks in advance,
Best regards,
Moulefrite
, all device interface are closed and deleted ( cleanUp and close callback called) before
If I launch a smartcard tool