private static ConnectedDeviceDefinition GetDeviceDefinition(SafeFileHandle defaultInterfaceHandle, string deviceId) { var deviceDefinition = new ConnectedDeviceDefinition(deviceId) { DeviceType = DeviceType.Usb }; var bufferLength = (uint)Marshal.SizeOf(typeof(USB_DEVICE_DESCRIPTOR)); var isSuccess2 = WinUsbApiCalls.WinUsb_GetDescriptor(defaultInterfaceHandle, WinUsbApiCalls.DEFAULT_DESCRIPTOR_TYPE, 0, WinUsbApiCalls.EnglishLanguageID, out var _UsbDeviceDescriptor, bufferLength, out var lengthTransferred); HandleError(isSuccess2, "Couldn't get device descriptor"); if (_UsbDeviceDescriptor.iProduct > 0) { deviceDefinition.ProductName = WinUsbApiCalls.GetDescriptor(defaultInterfaceHandle, _UsbDeviceDescriptor.iProduct, "Couldn't get product name"); } if (_UsbDeviceDescriptor.iSerialNumber > 0) { deviceDefinition.SerialNumber = WinUsbApiCalls.GetDescriptor(defaultInterfaceHandle, _UsbDeviceDescriptor.iSerialNumber, "Couldn't get serial number"); } if (_UsbDeviceDescriptor.iManufacturer > 0) { deviceDefinition.Manufacturer = WinUsbApiCalls.GetDescriptor(defaultInterfaceHandle, _UsbDeviceDescriptor.iManufacturer, "Couldn't get manufacturer"); } deviceDefinition.VendorId = _UsbDeviceDescriptor.idVendor; deviceDefinition.ProductId = _UsbDeviceDescriptor.idProduct; deviceDefinition.WriteBufferSize = _UsbDeviceDescriptor.bMaxPacketSize0; deviceDefinition.ReadBufferSize = _UsbDeviceDescriptor.bMaxPacketSize0; return(deviceDefinition); }
private static ConnectedDeviceDefinition GetDeviceDefinition(SafeFileHandle defaultInterfaceHandle, string deviceId, ILogger logger) { var bufferLength = (uint)Marshal.SizeOf(typeof(USB_DEVICE_DESCRIPTOR)); #pragma warning disable IDE0059 // Unnecessary assignment of a value var isSuccess2 = WinUsbApiCalls.WinUsb_GetDescriptor(defaultInterfaceHandle, WinUsbApiCalls.DEFAULT_DESCRIPTOR_TYPE, 0, WinUsbApiCalls.EnglishLanguageID, out var _UsbDeviceDescriptor, bufferLength, out var lengthTransferred); #pragma warning restore IDE0059 // Unnecessary assignment of a value _ = WindowsHelpers.HandleError(isSuccess2, "Couldn't get device descriptor", logger); string productName = null; string serialNumber = null; string manufacturer = null; if (_UsbDeviceDescriptor.iProduct > 0) { productName = WinUsbApiCalls.GetDescriptor( defaultInterfaceHandle, _UsbDeviceDescriptor.iProduct, "Couldn't get product name", logger); } if (_UsbDeviceDescriptor.iSerialNumber > 0) { serialNumber = WinUsbApiCalls.GetDescriptor( defaultInterfaceHandle, _UsbDeviceDescriptor.iSerialNumber, "Couldn't get serial number", logger); } if (_UsbDeviceDescriptor.iManufacturer > 0) { manufacturer = WinUsbApiCalls.GetDescriptor( defaultInterfaceHandle, _UsbDeviceDescriptor.iManufacturer, "Couldn't get manufacturer", logger); } return(new ConnectedDeviceDefinition( deviceId, DeviceType.Usb, productName: productName, serialNumber: serialNumber, manufacturer: manufacturer, vendorId: _UsbDeviceDescriptor.idVendor, productId: _UsbDeviceDescriptor.idProduct, writeBufferSize: _UsbDeviceDescriptor.bMaxPacketSize0, readBufferSize: _UsbDeviceDescriptor.bMaxPacketSize0 )); }