internal static bool GetDeviceDescriptor(UsbDevice usbDevice, out IUsbDeviceDescriptor deviceDescriptor)
        {
            if (usbDevice.CachedDeviceDescriptor != null)
            {
                deviceDescriptor = usbDevice.CachedDeviceDescriptor;
                return(true);
            }
            deviceDescriptor = new UsbDeviceDescriptorBase();

            GCHandle gcDeviceDescriptor = GCHandle.Alloc(deviceDescriptor, GCHandleType.Pinned);
            int      ret;
            bool     bSuccess = usbDevice.GetDescriptor((byte)DescriptorType.Device,
                                                        0,
                                                        0,
                                                        gcDeviceDescriptor.AddrOfPinnedObject(),
                                                        UsbDeviceDescriptorBase.Size,
                                                        out ret);

            gcDeviceDescriptor.Free();

            if (bSuccess)
            {
                return(true);
            }

            return(false);
        }
        public UsbDeviceInfo(UsbDevice usbDevice, UsbDeviceDescriptorBase usbDeviceDescriptor)
        {
            mUsbDevice = usbDevice;

            mDeviceDescriptor = new UsbDeviceDescriptorBase(usbDeviceDescriptor);
        }
 internal MonoUsbDevice(ref MonoUsbProfile monoUSBProfile)
     : base(null, null)
 {
     mMonoUSBProfile         = monoUSBProfile;
     mCachedDeviceDescriptor = new UsbDeviceDescriptorBase(monoUSBProfile.DeviceDescriptor);
 }