Update Windows ReadFile and WriteFile to recognise Access Denied error when a read or write is attempted on a disconnected virtual com port

This commit is contained in:
psbob 2025-04-27 15:42:15 +01:00 committed by GitHub
parent b16c094926
commit d92649da80
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -602,6 +602,9 @@ pub const ReadFileError = error{
OperationAborted, OperationAborted,
/// Unable to read file due to lock. /// Unable to read file due to lock.
LockViolation, LockViolation,
/// Known to be possible when:
/// - Unable to read from disconnected virtual com port (Windows)
AccessDenied,
Unexpected, Unexpected,
}; };
@ -634,6 +637,7 @@ pub fn ReadFile(in_hFile: HANDLE, buffer: []u8, offset: ?u64) ReadFileError!usiz
.HANDLE_EOF => return 0, .HANDLE_EOF => return 0,
.NETNAME_DELETED => return error.ConnectionResetByPeer, .NETNAME_DELETED => return error.ConnectionResetByPeer,
.LOCK_VIOLATION => return error.LockViolation, .LOCK_VIOLATION => return error.LockViolation,
.ACCESS_DENIED => return error.AccessDenied,
else => |err| return unexpectedError(err), else => |err| return unexpectedError(err),
} }
} }
@ -651,6 +655,9 @@ pub const WriteFileError = error{
LockViolation, LockViolation,
/// The specified network name is no longer available. /// The specified network name is no longer available.
ConnectionResetByPeer, ConnectionResetByPeer,
/// Known to be possible when:
/// - Unable to write to disconnected virtual com port (Windows)
AccessDenied,
Unexpected, Unexpected,
}; };
@ -687,6 +694,7 @@ pub fn WriteFile(
.INVALID_HANDLE => return error.NotOpenForWriting, .INVALID_HANDLE => return error.NotOpenForWriting,
.LOCK_VIOLATION => return error.LockViolation, .LOCK_VIOLATION => return error.LockViolation,
.NETNAME_DELETED => return error.ConnectionResetByPeer, .NETNAME_DELETED => return error.ConnectionResetByPeer,
.ACCESS_DENIED => return error.AccessDenied,
else => |err| return unexpectedError(err), else => |err| return unexpectedError(err),
} }
} }