Documentation

Certain operations can be performed on a device, but in order to do any I/O you
will have to first obtain a DeviceHandle using openDevice. Alternatively you
can use the usb-safe package which provides type-safe device handling. See:

Just because you have a reference to a device does not mean it is necessarily
usable. The device may have been unplugged, you may not have permission to
operate such device or another process or driver may be using the device.

To get additional information about a device you can retrieve its descriptor
using deviceDesc.

Note that equality on devices is defined by comparing their descriptors:
(==) = (==) `on` deviceDesc