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); }
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; }