Microsoft KB Archive/200977

{|
 * width="100%"|

PRB: Can't Set MaxTransfer Size for USB Composite Device

 * }

Q200977

-

The information in this article applies to:


 * Microsoft Win32 Device Driver Kit (DDK) Windows 98

-

SYMPTOMS
A WDM driver can typically set the MaximumTransferSize for a USB device via the URB_FUNCTION_SELECT_CONFIGURATION function. However, attempts to use URB_FUNCTION_SELECT_CONFIGURATION to set the MaximumTransferSize for the endpoints of a function on a composite USB device will fail. The maximum transfer size for the endpoints is still set to the default value of 4K.

CAUSE
When Usbhub.sys is loaded as the parent driver for a composite USB device, it selects alternate interface 0 (zero) for each interface on the device before it enumerates each child function. When the WDM driver that is loaded for a specific child function subsequently tries to use URB_FUNCTION_SELECT_CONFIGURATION and specifies alternate interface 0 with a non-default maximum transfer size, Usbhub.sys intercepts the request and returns success without passing the request to the device, because it believes alternate interface 0 is already selected and there is no need to reselect the interface. This results in the maximum transfer size not getting changed for the device.

RESOLUTION
A WDM driver loaded for a function of a composite USB device can use URB_FUNCTION_SELECT_INTERFACE to select alternate interface 0 after it uses URB_FUNCTION_SELECT_CONFIGURATION to select the configuration. This has the effect of setting the MaximumTransferSize to the value specified by the WDM driver.

STATUS
This behavior is by design.

Keywords : kbDDK kbOSWin98

Issue type : kbprb

Technology : kbAudDeveloper kbWin98search kbWinDDKSearch kbWin32sSearch kbWin32DDKSearch kbWin32DDK98