Skip to content

Commit bfd7725

Browse files
committed
Fix crash when a USB device doesn't have a product name and HidSharp triggers an IOException (HidSharp.Exceptions.DeviceIOException)
This happens for example with some Razer keyboards
1 parent cb8bfcb commit bfd7725

1 file changed

Lines changed: 25 additions & 17 deletions

File tree

OpenHardwareMonitorLib/Hardware/Controller/Razer/RazerGroup.cs

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.Collections.Generic;
2+
using System.IO;
23
using System.Text;
34
using HidSharp;
45

@@ -16,26 +17,33 @@ public RazerGroup(ISettings settings)
1617

1718
foreach (HidDevice dev in DeviceList.Local.GetHidDevices(0x1532))
1819
{
19-
string productName = dev.GetProductName();
20-
21-
switch (dev.ProductID)
20+
try
2221
{
23-
case 0x0F3C: // Razer PWM PC fan controller
24-
if (dev.GetMaxFeatureReportLength() <= 0)
25-
break;
22+
string productName = dev.GetProductName();
2623

27-
var device = new RazerFanController(dev, settings);
28-
_report.AppendLine($"Device name: {productName}");
29-
_report.AppendLine($"Firmware version: {device.FirmwareVersion}");
30-
_report.AppendLine($"{device.Status}");
31-
_report.AppendLine();
32-
_hardware.Add(device);
33-
break;
24+
switch (dev.ProductID)
25+
{
26+
case 0x0F3C: // Razer PWM PC fan controller
27+
if (dev.GetMaxFeatureReportLength() <= 0)
28+
break;
29+
30+
var device = new RazerFanController(dev, settings);
31+
_report.AppendLine($"Device name: {productName}");
32+
_report.AppendLine($"Firmware version: {device.FirmwareVersion}");
33+
_report.AppendLine($"{device.Status}");
34+
_report.AppendLine();
35+
_hardware.Add(device);
36+
break;
3437

35-
default:
36-
_report.AppendLine($"Unknown Hardware PID: {dev.ProductID} Name: {productName}");
37-
_report.AppendLine();
38-
break;
38+
default:
39+
_report.AppendLine($"Unknown Hardware PID: {dev.ProductID} Name: {productName}");
40+
_report.AppendLine();
41+
break;
42+
}
43+
}
44+
catch (IOException e)
45+
{
46+
_report.AppendLine($"Failed to get information for USB device with id {dev.ProductID}: {e.Message} ");
3947
}
4048
}
4149

0 commit comments

Comments
 (0)