I developed a USB driver for smartcard reader and it was running fine on
WinXP. It works fine on Win2k too if my reader is connected through a
hispeed hub. However, if I connect the reader to the root hub directly, the
driver would fail to load. I snooped around with SoftICE into the driver
stack and discovered that it is in OpenHCI that my IRP, or URB, failed a
parameter validation. Turns out that it does not take a buffer with size
greater than 64 bytes (possibly because the max packet size of of my bulk
input pipe is 64 bytess) and rejected my URB with STATUS_INVALID_PARAMETER
(0xc000000D).
When a reader is connected through a hub, openhci is not involved. My driver
passes the URB to usbport.sys instead.
Anybody out there experienced the same problem? I can provide more details
if anybody is interested.
Winston