diff --git a/src/Hid.Net/Windows/WindowsHidDeviceFactory.cs b/src/Hid.Net/Windows/WindowsHidDeviceFactory.cs index 26511b46..22b512f5 100644 --- a/src/Hid.Net/Windows/WindowsHidDeviceFactory.cs +++ b/src/Hid.Net/Windows/WindowsHidDeviceFactory.cs @@ -1,4 +1,5 @@ using Device.Net; +using Device.Net.Exceptions; using Device.Net.Windows; using Microsoft.Win32.SafeHandles; using System; @@ -17,8 +18,14 @@ protected override ConnectedDeviceDefinition GetDeviceDefinition(string deviceId { try { - using (var safeFileHandle = APICalls.CreateFile(deviceId, APICalls.GenericRead | APICalls.GenericWrite, APICalls.FileShareRead | APICalls.FileShareWrite, IntPtr.Zero, APICalls.OpenExisting, 0, IntPtr.Zero)) + const uint desiredAccess = APICalls.GenericRead | APICalls.GenericWrite; + const uint shareMode = APICalls.FileShareRead | APICalls.FileShareWrite; + const uint creationDisposition = APICalls.OpenExisting; + + using (var safeFileHandle = APICalls.CreateFile(deviceId, desiredAccess, shareMode, IntPtr.Zero, creationDisposition, 0, IntPtr.Zero)) { + if (safeFileHandle.IsInvalid) throw new DeviceException($"CreateFile call with Id of {deviceId} failed. Desired Access: {desiredAccess} (GenericRead / GenericWrite). Share mode: {shareMode} (FileShareRead / FileShareWrite). Creation Disposition: {creationDisposition} (OpenExisting)"); + return GetDeviceDefinition(deviceId, safeFileHandle); } }