xxxxx@hotmail.com wrote:
Lower filtering a USB FDO I have noticed that the descriptor requests sent down come back with a different IOCTL code.
No, it doesn’t. Same IOCTL code. Different URB code.
For example,
URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE, Irp FFFF9488B0D4E010 DOWN
URB_FUNCTION_CONTROL_TRANSFER, Irp FFFF9488B0D4E010 UPHas anyone noticed this, and is there a reason for this odd behaviour? Why would the hub driver change the IOCTL?
This is just a trivial implementation detail. About 3/4 of the URB
codes translate directly into simple control pipe requests. So, the hub
driver (or someone in the stack) translates the descriptor, feature,
status, vendor, and class URBs requests into their equivalent control
pipe requests, by setting up the 8-byte control packet and changing the
URB code. That way, the lower level drivers only have to deal with
about 15 different requests, instead of 40 different requests.
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.