Пример #1
0
        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);
        }
Пример #2
0
        internal static bool GetDeviceDescriptor(UsbDevice usbDevice, out UsbDeviceDescriptor deviceDescriptor)
        {
            if (usbDevice.mCachedDeviceDescriptor!=null)
            {
                deviceDescriptor = usbDevice.mCachedDeviceDescriptor;
                return true;
            }
            deviceDescriptor = new UsbDeviceDescriptor();

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

            if (bSuccess) return true;

            return false;
        }