I have found myself needing to adapt some code that communicates with USB devices under Win32 to work under OS X, and LibUsbDotNet seems like a godsend. There are a couple of problem points, however:
(1) Our software will need to control 8-16 identical devices. Furthermore, like many devices that originally used serial I/O, the manufacturer has neglected to populate the Serial Number field in the USB descriptor. This means the devices are nearly impossible to tell apart.
(2) Under Win32, opening the device is easy -- LibUsbDevice.Open will do the trick. However, there is no equivalent for MonoUsbDevice; furthermore, there is no information in the IUsbDeviceNotifyInfo interface that uniquely correlates it with a UsbRegistry object under OS X; the ill-defined SymbolicName property is blank.
I have created a patch that does the following:
(1) Adds an (abstract) DevicePath property to the UsbRegistry and UsbDevice classes.
(2) Adds an "Open" method to the IUsbDeviceNotifyInfo interface, to allow code using the DeviceNotify mechanism to directly access the device it received the notification about.