diff --git a/lib/std/os.zig b/lib/std/os.zig index 2dec2c4c1d785c7096aea426c83f349ca48a7c6a..846943b0502f7fdbd83111595e5a381fb18ed279 100644 --- a/lib/std/os.zig +++ b/lib/std/os.zig @@ -1651,7 +1651,7 @@ pub fn renameatW( ReplaceIfExists: windows.BOOLEAN, ) RenameError!void { const access_mask = windows.SYNCHRONIZE | windows.GENERIC_WRITE | windows.DELETE; - const src_fd = try windows.OpenFileW(old_dir_fd, old_path, null, access_mask, windows.FILE_OPEN); + const src_fd = try windows.OpenFileW(old_dir_fd, old_path, null, access_mask, null, windows.FILE_OPEN); defer windows.CloseHandle(src_fd); const struct_buf_len = @sizeOf(windows.FILE_RENAME_INFORMATION) + (MAX_PATH_BYTES - 1); diff --git a/lib/std/os/windows.zig b/lib/std/os/windows.zig index 813a77c27586b82ca352ffc7b4e1dbc4cf094560..a2082b2debeab5ad10644ad577af3bbb70858a53 100644 --- a/lib/std/os/windows.zig +++ b/lib/std/os/windows.zig @@ -107,6 +107,7 @@ pub fn OpenFileW( sub_path_w: [*:0]const u16, sa: ?*SECURITY_ATTRIBUTES, access_mask: ACCESS_MASK, + share_access_opt: ?ULONG, creation: ULONG, ) OpenError!HANDLE { if (sub_path_w[0] == '.' and sub_path_w[1] == 0) { @@ -135,6 +136,7 @@ pub fn OpenFileW( .SecurityQualityOfService = null, }; var io: IO_STATUS_BLOCK = undefined; + const share_access = share_access_opt orelse FILE_SHARE_WRITE | FILE_SHARE_READ | FILE_SHARE_DELETE; const rc = ntdll.NtCreateFile( &result, access_mask, @@ -142,7 +144,7 @@ pub fn OpenFileW( &io, null, FILE_ATTRIBUTE_NORMAL, - FILE_SHARE_WRITE | FILE_SHARE_READ | FILE_SHARE_DELETE, + share_access, creation, FILE_NON_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_NONALERT, null,