When a MonoUsbProfileHandle instance is created and wrapped around the libusb_device pointer, MonoUsbApi.RefDevice is called. When all references to this MonoUsbProfileHandle instance are out-of-scope or have all been closed, this profile handle is de-referenced with MonoUsbApi.UnrefDevice. When the reference count equals zero, memory is freed and resources are released.
The MonoUsbProfileHandle class ensures all device profiles get closed and freed regardless of abnormal program terminations or coding errors.
Certain operations can be performed using just the MonoUsbProfileHandle, but in order to do any I/O you will have to first obtain a MonoUsbDeviceHandle using MonoUsbApi.Open.