Dear ALL,
I am working for company, which creates high-speed USB devices using
Cypress microcontrollers. To reprogram Cypress firmware I need to send
it several specially formatted USB control requests. My goal is to
develop universal application and may be driver (if unavoidable), to
reflash our devices during testing and in the field. It would be nice
to have such application because firmware update implemented by
Cypress microcontroller in hardware and do not depend on whatever junk
we loaded it with previous time.
I figured out, that all USB devices support interface with GUID
{a5dcbf10-6530-11d2-901f-00c04fb951ed}, which is
GUID_DEVINTERFACE_USB_DEVICE. Is there any way to get anything useful
out of this device interface? I figured out, that it is exported by
usbhub.sys driver and get created even if no driver loaded for USB
device. I can open this device with CreateFile() Win32 API call, but
that is all. I tried to open this link from one of my drivers and use
the object returned by ObReferenceObjectByHandle() as lower physical
device object to send URBs to, but it didn't work.
As a last resort, I can develop USB filter driver if anything simple
would not work for me, but I am not sure if I will get access to USB
device without driver loaded.
Thanks for reading my message :) I will really appreciate any help on
the issue.
Thanks for your time,
With best regards,
Vladimir S. MIrgorodsky