Skip to content

Commit 75ddd43

Browse files
Sample code
1 parent 150a3d0 commit 75ddd43

File tree

4 files changed

+22
-11
lines changed

4 files changed

+22
-11
lines changed

src/Device.Net.UnitTests/GetFactoryExtensions.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,16 @@ public static IDeviceFactory GetHidDeviceFactory(
3636
=> filterDeviceDefinition.CreateWindowsHidDeviceFactory(
3737
loggerFactory,
3838
readReportTransform: readReportTransform,
39-
writeReportTransform: writeReportTransform);
39+
writeReportTransform: writeReportTransform,
40+
createReadConnection: (apiService, deviceId, fileAccessRights, shareMode, creationDisposition)
41+
=> apiService.CreateFile(
42+
deviceId,
43+
Windows.FileAccessRights.GenericRead,
44+
shareMode,
45+
IntPtr.Zero,
46+
creationDisposition,
47+
FILE_FLAG_OVERLAPPED,
48+
IntPtr.Zero));
4049
}
4150
}
4251

src/Device.Net/Windows/APICalls.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,7 @@
55
using System;
66
using System.Runtime.InteropServices;
77

8-
#pragma warning disable CA1707 // Identifiers should not contain underscores
9-
#pragma warning disable CA1021 // Avoid out parameters
10-
#pragma warning disable CA1401 // P/Invokes should not be visible
118
#pragma warning disable CA5392 // Use DefaultDllImportSearchPaths attribute for P/Invokes
12-
#pragma warning disable CA1045 // Do not pass types by reference
139
#pragma warning disable CA1060 // Move pinvokes to native methods class
1410

1511
namespace Device.Net.Windows

src/Device.Net/Windows/IApiService.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
using Microsoft.Win32.SafeHandles;
2+
using System;
23

3-
#pragma warning disable CA1707 // Identifiers should not contain underscores
44
#pragma warning disable CA1021 // Avoid out parameters
55
#pragma warning disable CA1045 // Do not pass types by reference
66

77
namespace Device.Net.Windows
88
{
99
public interface IApiService
1010
{
11+
SafeFileHandle CreateFile(string lpFileName, FileAccessRights dwDesiredAccess, uint dwShareMode, IntPtr lpSecurityAttributes, uint dwCreationDisposition, uint dwFlagsAndAttributes, IntPtr hTemplateFile)
1112
SafeFileHandle CreateWriteConnection(string deviceId);
1213
SafeFileHandle CreateReadConnection(string deviceId, FileAccessRights desiredAccess);
1314
//TODO: Get rid of read/write. They can be done with file streams...

src/Hid.Net/Windows/WindowsHidHandler.cs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,12 @@
1111

1212
namespace Hid.Net.Windows
1313
{
14-
public delegate SafeFileHandle CreateConnection(string deviceId, FileAccessRights desiredAccess, uint shareMode, uint creationDisposition);
14+
public delegate SafeFileHandle CreateConnection(
15+
IHidApiService apiService,
16+
string deviceId,
17+
FileAccessRights desiredAccess,
18+
uint shareMode,
19+
uint creationDisposition);
1520

1621
internal class WindowsHidHandler : IHidDeviceHandler
1722
{
@@ -57,11 +62,11 @@ public WindowsHidHandler(
5762
WriteBufferSize = writeBufferSize;
5863
ReadBufferSize = readBufferSize;
5964

60-
_createReadConnection = createReadConnection ??= (deviceId, fileAccessRights, shareMode, creationDisposition)
61-
=> hidApiService.CreateReadConnection(deviceId, fileAccessRights);
65+
_createReadConnection = createReadConnection ??= (apiService, deviceId, fileAccessRights, shareMode, creationDisposition)
66+
=> apiService.CreateReadConnection(deviceId, fileAccessRights);
6267

63-
_createWriteConnection = createWriteConnection ??= (deviceId, fileAccessRights, shareMode, creationDisposition)
64-
=> hidApiService.CreateWriteConnection(deviceId);
68+
_createWriteConnection = createWriteConnection ??= (apiService, deviceId, fileAccessRights, shareMode, creationDisposition)
69+
=> apiService.CreateWriteConnection(deviceId);
6570
}
6671

6772
#endregion Public Constructors

0 commit comments

Comments
 (0)