Do not crash when VMulti device can't be found

This commit is contained in:
X9VoiD 2022-05-19 20:24:50 +08:00
parent 11c8e31647
commit 7e1400c1af

View file

@ -8,7 +8,7 @@ namespace VoiDPlugins.Library.VMulti
{ {
public class VMultiInstance public class VMultiInstance
{ {
private readonly HidStream _device; private readonly HidStream? _device;
protected readonly byte[] Buffer; protected readonly byte[] Buffer;
public unsafe VMultiReportHeader* Header { get; } public unsafe VMultiReportHeader* Header { get; }
@ -21,7 +21,7 @@ namespace VoiDPlugins.Library.VMulti
public void Write() public void Write()
{ {
_device.Write(Buffer); _device?.Write(Buffer);
} }
public unsafe void EnableButtonBit(int bit) public unsafe void EnableButtonBit(int bit)
@ -44,7 +44,7 @@ namespace VoiDPlugins.Library.VMulti
return (buttons & bit) != 0; return (buttons & bit) != 0;
} }
private static HidStream Retrieve(string Name) private static HidStream? Retrieve(string Name)
{ {
HidStream? VMultiDev = null; HidStream? VMultiDev = null;
foreach (var device in DeviceList.Local.GetHidDevices(productID: 47820)) foreach (var device in DeviceList.Local.GetHidDevices(productID: 47820))
@ -60,7 +60,6 @@ namespace VoiDPlugins.Library.VMulti
{ {
Log.Write(Name, "Cannot find VirtualHID", LogLevel.Error); Log.Write(Name, "Cannot find VirtualHID", LogLevel.Error);
Log.Write(Name, "Install VMulti driver here: https://github.com/X9VoiD/vmulti-bin/releases/latest", LogLevel.Error); Log.Write(Name, "Install VMulti driver here: https://github.com/X9VoiD/vmulti-bin/releases/latest", LogLevel.Error);
throw new Exception();
} }
return VMultiDev; return VMultiDev;