# HG changeset patch # User Ivo Smits # Date 1371071328 -7200 # Node ID 5a2b51b0d71b76d61800336f9f4d3904d8544be0 # Parent 29cf42a12c349237ff7fd6fe63ca04d04ff05f10 USBLib: Fixed initialization of multi-interface USBIO devices diff -r 29cf42a12c34 -r 5a2b51b0d71b USBLib/Communication/USBIO/USBIODevice.cs --- a/USBLib/Communication/USBIO/USBIODevice.cs Thu May 23 17:02:17 2013 +0200 +++ b/USBLib/Communication/USBIO/USBIODevice.cs Wed Jun 12 23:08:48 2013 +0200 @@ -105,7 +105,6 @@ public override Byte Configuration { get { return base.Configuration; } set { - if (value == Configuration) return; IList configs = (new LibUsbDotNet.UsbDevice(this)).Configs; for (int i = 0; i < configs.Count; i++) { LibUsbDotNet.Info.UsbConfigInfo config = configs[i]; @@ -119,7 +118,12 @@ *((USBIO_INTERFACE_SETTING*)(req.InterfaceList + sizeof(USBIO_INTERFACE_SETTING) * j)) = new USBIO_INTERFACE_SETTING() { InterfaceIndex = intf.Descriptor.InterfaceID, AlternateSettingIndex = 0, MaximumTransferSize = UInt16.MaxValue }; } - DeviceIoControl(DeviceHandle, IOCTL_USBIO_SET_CONFIGURATION, (IntPtr)(&req), sizeof(USBIO_SET_CONFIGURATION), IntPtr.Zero, 0); + try { + DeviceIoControl(DeviceHandle, IOCTL_USBIO_SET_CONFIGURATION, (IntPtr)(&req), sizeof(USBIO_SET_CONFIGURATION), IntPtr.Zero, 0); + } catch (Win32Exception ex) { + if (ex.NativeErrorCode == unchecked((int)0xE0001005L)) return; + throw; + } } return; }