Looks like basic support for UsbInterfaceInfo custom descriptors is there, but during construction, they're not getting loaded into the object. This is necessary to support USB-DFU, since the device in question tells us its capabilities in an interface custom descriptor.
Example:
~~~~~~~~~~~
Bus 009 Device 007: ID 1fc9:000c NXP Semiconductors
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x1fc9 NXP Semiconductors
idProduct 0x000c
bcdDevice 1.00
iManufacturer 1 NXP
iProduct 2 LPC
iSerial 3 ABCD
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 27
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xc0
Self Powered
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 254 Application Specific Interface
bInterfaceSubClass 1 Device Firmware Update
bInterfaceProtocol 1
iInterface 4 DFU
----> Device Firmware Upgrade Interface Descriptor:
----> bLength 9
----> bDescriptorType 33
----> bmAttributes 9
----> Will Detach
----> Manifestation Intolerant
----> Upload Unsupported
----> Download Supported
----> wDetachTimeout 65280 milliseconds
----> wTransferSize 2048 bytes
----> bcdDFUVersion 1.00
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
bNumConfigurations 1
Device Status: 0x0001
Self Powered
~~~~~~~~~~
More info ... device plugged into Win7 shows the interface custom descriptors (WinUSB), but linux (mono, libusb) doesn't