}
}
break;
+ case URB_FUNCTION_SELECT_INTERFACE:
+ {
+ struct _URB_SELECT_INTERFACE *request =
+ &urb->u.UrbSelectInterface;
+ libusb_device_handle *husb;
+
+ TRACE( "URB_FUNCTION_SELECT_INTERFACE\n" );
+
+ if (!libusb_open( inst->dev, &husb ))
+ {
+ int ret;
+
+ ret = libusb_claim_interface( husb,
+ request->Interface.InterfaceNumber );
+ if (!ret)
+ {
+ ret = libusb_set_interface_alt_setting( husb,
+ request->Interface.InterfaceNumber,
+ request->Interface.AlternateSetting );
+ if (!libusb_release_interface( husb,
+ request->Interface.InterfaceNumber ) && !ret)
+ status = STATUS_SUCCESS;
+ }
+ libusb_close( husb );
+ }
+ }
+ break;
case URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE:
{
struct _URB_CONTROL_DESCRIPTOR_REQUEST *request =
}
}
break;
+ case URB_FUNCTION_SELECT_INTERFACE:
+ {
+ struct _URB_SELECT_INTERFACE *request =
+ &urb->u.UrbSelectInterface;
+ usb_dev_handle *husb;
+
+ TRACE( "URB_FUNCTION_SELECT_INTERFACE\n" );
+
+ husb = usb_open( inst->dev );
+ if (husb)
+ {
+ int ret;
+
+ ret = usb_claim_interface( husb,
+ request->Interface.InterfaceNumber );
+ if (!ret)
+ {
+ ret = usb_set_altinterface( husb,
+ request->Interface.AlternateSetting );
+ if (!usb_release_interface( husb,
+ request->Interface.InterfaceNumber ) && !ret)
+ status = STATUS_SUCCESS;
+ }
+ usb_close( husb );
+ }
+ }
+ break;
case URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE:
{
struct _URB_CONTROL_DESCRIPTOR_REQUEST *request =