hi,
W.r.t USB stack, let's say some IO operation is in one of the
following layers (USBDisk6, USB mass storage client driver, USBD) when
the system is suspended. Note that this means the IO call has
crossed the Storage Manager level where PNPUnloadDelay plays a role.
When my system resumes, it is natural that HCD intimates USBD that
the device has been removed and then added (to avoid the cases where
USB devices are changed physically before resume). As far as I could
see,
a> this implies that USBD unloads the client drivers and
reloads them again as required.
b> there 's also no power cycle related blocking for IO calls
in either USBDISK6, USBMSC and USBD. They directly return
ERROR_ACCESS_DENIED if they find that the device is removed.
I feel this is very much correct as in case of removable cases
(USB), none of these layers have the intelligence to know whether the
device is still present or has been replaced with something other USB
device during the suspend cycle.
Does this mean that it's natural and OK to expect IO calls to fail
when the system is suspended after they pass through the storage
manager level? Or is there something that can be done to still make
them work?
Any input with be highly appreciable. Any parallel's to other
storage related stacks?
regards,
joseph.