Skip to content

Commit f5647a8

Browse files
Merge pull request #215 from ionothanus/188-fix-cancellation-tokens
Enable async I/O handles to support cancellation tokens
2 parents a799151 + a45152e commit f5647a8

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

src/Device.Net/Windows/ApiService.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ namespace Device.Net.Windows
1414
internal class ApiService : IApiService
1515
{
1616
#region Fields
17+
private const uint FILE_FLAG_OVERLAPPED = 0x40000000;
18+
1719
protected ILogger Logger { get; }
1820
#endregion
1921

@@ -38,7 +40,7 @@ internal class ApiService : IApiService
3840
private SafeFileHandle CreateConnection(string deviceId, FileAccessRights desiredAccess, uint shareMode, uint creationDisposition)
3941
{
4042
Logger.LogInformation("Calling {call} Area: {area} for DeviceId: {deviceId}. Desired Access: {desiredAccess}. Share mode: {shareMode}. Creation Disposition: {creationDisposition}", nameof(APICalls.CreateFile), nameof(ApiService), deviceId, desiredAccess, shareMode, creationDisposition);
41-
return APICalls.CreateFile(deviceId, desiredAccess, shareMode, IntPtr.Zero, creationDisposition, 0, IntPtr.Zero);
43+
return APICalls.CreateFile(deviceId, desiredAccess, shareMode, IntPtr.Zero, creationDisposition, FILE_FLAG_OVERLAPPED, IntPtr.Zero);
4244
}
4345
#endregion
4446

src/Hid.Net/Windows/WindowsHidApiService.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,9 @@ public Guid GetHidGuid()
137137
//TODO: These are not opening as async. If we do, we get an error. This is probably why cancellation tokens don't work.
138138
//https://github.com/MelbourneDeveloper/Device.Net/issues/188
139139

140-
public Stream OpenRead(SafeFileHandle readSafeFileHandle, ushort readBufferSize) => new FileStream(readSafeFileHandle, FileAccess.Read, readBufferSize, false);
140+
public Stream OpenRead(SafeFileHandle readSafeFileHandle, ushort readBufferSize) => new FileStream(readSafeFileHandle, FileAccess.Read, readBufferSize, true);
141141

142-
public Stream OpenWrite(SafeFileHandle writeSafeFileHandle, ushort writeBufferSize) => new FileStream(writeSafeFileHandle, FileAccess.ReadWrite, writeBufferSize, false);
142+
public Stream OpenWrite(SafeFileHandle writeSafeFileHandle, ushort writeBufferSize) => new FileStream(writeSafeFileHandle, FileAccess.ReadWrite, writeBufferSize, true);
143143
#endregion
144144

145145
#region Private Methods

0 commit comments

Comments
 (0)