From 138903616a122dbfe57b313577a571b10d667191 Mon Sep 17 00:00:00 2001 From: psbob <178673413+psbob@users.noreply.github.com> Date: Fri, 25 Apr 2025 10:32:24 +0100 Subject: [PATCH 1/2] Update Windows ReadFile and WriteFile to recognise Access Denied error when a read or write is attempted on a disconnected virtual com port --- lib/std/os/windows.zig | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/std/os/windows.zig b/lib/std/os/windows.zig index 5a9296e889bd..d5437c5e6a58 100644 --- a/lib/std/os/windows.zig +++ b/lib/std/os/windows.zig @@ -602,6 +602,8 @@ pub const ReadFileError = error{ OperationAborted, /// Unable to read file due to lock. LockViolation, + /// Unable to read from disconnected virtual com port + AccessDenied, Unexpected, }; @@ -634,6 +636,7 @@ pub fn ReadFile(in_hFile: HANDLE, buffer: []u8, offset: ?u64) ReadFileError!usiz .HANDLE_EOF => return 0, .NETNAME_DELETED => return error.ConnectionResetByPeer, .LOCK_VIOLATION => return error.LockViolation, + .ACCESS_DENIED => return error.AccessDenied, else => |err| return unexpectedError(err), } } @@ -651,6 +654,8 @@ pub const WriteFileError = error{ LockViolation, /// The specified network name is no longer available. ConnectionResetByPeer, + /// Unable to write to disconnected virtual com port + AccessDenied, Unexpected, }; @@ -687,6 +692,7 @@ pub fn WriteFile( .INVALID_HANDLE => return error.NotOpenForWriting, .LOCK_VIOLATION => return error.LockViolation, .NETNAME_DELETED => return error.ConnectionResetByPeer, + .ACCESS_DENIED => return error.AccessDenied, else => |err| return unexpectedError(err), } } From f7f958c5dcc36ef394844f05238dd78ed1935bd6 Mon Sep 17 00:00:00 2001 From: psbob <178673413+psbob@users.noreply.github.com> Date: Sat, 26 Apr 2025 08:29:21 +0100 Subject: [PATCH 2/2] Updated ReadFile and WriteFile error set comments --- lib/std/os/windows.zig | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/std/os/windows.zig b/lib/std/os/windows.zig index d5437c5e6a58..e24617645a36 100644 --- a/lib/std/os/windows.zig +++ b/lib/std/os/windows.zig @@ -602,7 +602,8 @@ pub const ReadFileError = error{ OperationAborted, /// Unable to read file due to lock. LockViolation, - /// Unable to read from disconnected virtual com port + /// Known to be possible when: + /// - Unable to read from disconnected virtual com port (Windows) AccessDenied, Unexpected, }; @@ -654,7 +655,8 @@ pub const WriteFileError = error{ LockViolation, /// The specified network name is no longer available. ConnectionResetByPeer, - /// Unable to write to disconnected virtual com port + /// Known to be possible when: + /// - Unable to write to disconnected virtual com port (Windows) AccessDenied, Unexpected, };