/// <summary>
 /// called to initialize the device context before any using any libusb functions
 /// </summary>
 /// <returns>an error code</returns>
 internal static extern int libusbInit(out LibusbContext ctx);
 static unsafe extern int libusb_handle_events(LibusbContext ctx);
 /// <summary>
 /// gets a list of device pointers - must be freed with libusbFreeDeviceList
 /// </summary>
 /// <returns>number of devices OR an error code</returns>
 internal static unsafe extern int libusbGetDeviceList(LibusbContext ctx, out IntPtr *list);