| ... | ... | @@ -605,6 +605,7 @@ pub const ReadFileError = error{ |
| 605 | 605 | /// Known to be possible when: |
| 606 | 606 | /// - Unable to read from disconnected virtual com port (Windows) |
| 607 | 607 | AccessDenied, |
| 608 | NotOpenForReading, |
| 608 | 609 | Unexpected, |
| 609 | 610 | }; |
| 610 | 611 | |
| ... | ... | @@ -638,6 +639,7 @@ pub fn ReadFile(in_hFile: HANDLE, buffer: []u8, offset: ?u64) ReadFileError!usiz |
| 638 | 639 | .NETNAME_DELETED => return error.ConnectionResetByPeer, |
| 639 | 640 | .LOCK_VIOLATION => return error.LockViolation, |
| 640 | 641 | .ACCESS_DENIED => return error.AccessDenied, |
| 642 | .INVALID_HANDLE => return error.NotOpenForReading, |
| 641 | 643 | else => |err| return unexpectedError(err), |
| 642 | 644 | } |
| 643 | 645 | } |
| ... | ... | @@ -1152,7 +1154,10 @@ pub fn GetStdHandle(handle_id: DWORD) GetStdHandleError!HANDLE { |
| 1152 | 1154 | return handle; |
| 1153 | 1155 | } |
| 1154 | 1156 | |
| 1155 | | pub const SetFilePointerError = error{Unexpected}; |
| 1157 | pub const SetFilePointerError = error{ |
| 1158 | Unseekable, |
| 1159 | Unexpected, |
| 1160 | }; |
| 1156 | 1161 | |
| 1157 | 1162 | /// The SetFilePointerEx function with the `dwMoveMethod` parameter set to `FILE_BEGIN`. |
| 1158 | 1163 | pub fn SetFilePointerEx_BEGIN(handle: HANDLE, offset: u64) SetFilePointerError!void { |
| ... | ... | @@ -1162,6 +1167,8 @@ pub fn SetFilePointerEx_BEGIN(handle: HANDLE, offset: u64) SetFilePointerError!v |
| 1162 | 1167 | const ipos = @as(LARGE_INTEGER, @bitCast(offset)); |
| 1163 | 1168 | if (kernel32.SetFilePointerEx(handle, ipos, null, FILE_BEGIN) == 0) { |
| 1164 | 1169 | switch (GetLastError()) { |
| 1170 | .INVALID_FUNCTION => return error.Unseekable, |
| 1171 | .NEGATIVE_SEEK => return error.Unseekable, |
| 1165 | 1172 | .INVALID_PARAMETER => unreachable, |
| 1166 | 1173 | .INVALID_HANDLE => unreachable, |
| 1167 | 1174 | else => |err| return unexpectedError(err), |
| ... | ... | @@ -1173,6 +1180,8 @@ pub fn SetFilePointerEx_BEGIN(handle: HANDLE, offset: u64) SetFilePointerError!v |
| 1173 | 1180 | pub fn SetFilePointerEx_CURRENT(handle: HANDLE, offset: i64) SetFilePointerError!void { |
| 1174 | 1181 | if (kernel32.SetFilePointerEx(handle, offset, null, FILE_CURRENT) == 0) { |
| 1175 | 1182 | switch (GetLastError()) { |
| 1183 | .INVALID_FUNCTION => return error.Unseekable, |
| 1184 | .NEGATIVE_SEEK => return error.Unseekable, |
| 1176 | 1185 | .INVALID_PARAMETER => unreachable, |
| 1177 | 1186 | .INVALID_HANDLE => unreachable, |
| 1178 | 1187 | else => |err| return unexpectedError(err), |
| ... | ... | @@ -1184,6 +1193,8 @@ pub fn SetFilePointerEx_CURRENT(handle: HANDLE, offset: i64) SetFilePointerError |
| 1184 | 1193 | pub fn SetFilePointerEx_END(handle: HANDLE, offset: i64) SetFilePointerError!void { |
| 1185 | 1194 | if (kernel32.SetFilePointerEx(handle, offset, null, FILE_END) == 0) { |
| 1186 | 1195 | switch (GetLastError()) { |
| 1196 | .INVALID_FUNCTION => return error.Unseekable, |
| 1197 | .NEGATIVE_SEEK => return error.Unseekable, |
| 1187 | 1198 | .INVALID_PARAMETER => unreachable, |
| 1188 | 1199 | .INVALID_HANDLE => unreachable, |
| 1189 | 1200 | else => |err| return unexpectedError(err), |
| ... | ... | @@ -1196,6 +1207,8 @@ pub fn SetFilePointerEx_CURRENT_get(handle: HANDLE) SetFilePointerError!u64 { |
| 1196 | 1207 | var result: LARGE_INTEGER = undefined; |
| 1197 | 1208 | if (kernel32.SetFilePointerEx(handle, 0, &result, FILE_CURRENT) == 0) { |
| 1198 | 1209 | switch (GetLastError()) { |
| 1210 | .INVALID_FUNCTION => return error.Unseekable, |
| 1211 | .NEGATIVE_SEEK => return error.Unseekable, |
| 1199 | 1212 | .INVALID_PARAMETER => unreachable, |
| 1200 | 1213 | .INVALID_HANDLE => unreachable, |
| 1201 | 1214 | else => |err| return unexpectedError(err), |