From: Michael Stopa michael.stopa@tensorworks.com.au
FileRenameInfoEx is already handled by NtSetInformationFile, SetFileInformationByHandle need only pass it through. --- dlls/kernel32/tests/file.c | 8 ++++---- dlls/kernelbase/file.c | 4 +++- 2 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/dlls/kernel32/tests/file.c b/dlls/kernel32/tests/file.c index dcd90803bb1..1809e141d9b 100644 --- a/dlls/kernel32/tests/file.c +++ b/dlls/kernel32/tests/file.c @@ -5643,21 +5643,21 @@ static void test_SetFileRenameInfoEx(void) fri->FileNameLength = wcslen(tempFileTo1) * sizeof(WCHAR); memcpy(fri->FileName, tempFileTo1, fri->FileNameLength + sizeof(WCHAR)); ret = pSetFileInformationByHandle(file, FileRenameInfoEx, fri, size); - todo_wine ok(!ret && GetLastError() == ERROR_ALREADY_EXISTS, "FileRenameInfoEx unexpected result %ld\n", GetLastError()); + ok(!ret && GetLastError() == ERROR_ALREADY_EXISTS, "FileRenameInfoEx unexpected result %ld\n", GetLastError());
fri->Flags = FILE_RENAME_REPLACE_IF_EXISTS; ret = pSetFileInformationByHandle(file, FileRenameInfoEx, fri, size); - todo_wine ok(ret, "FileRenameInfoEx failed, error %ld\n", GetLastError()); + ok(ret, "FileRenameInfoEx failed, error %ld\n", GetLastError());
fri->Flags = 0; fri->FileNameLength = wcslen(tempFileTo2) * sizeof(WCHAR); memcpy(fri->FileName, tempFileTo2, fri->FileNameLength + sizeof(WCHAR)); ret = pSetFileInformationByHandle(file, FileRenameInfoEx, fri, size); - todo_wine ok(ret, "FileRenameInfoEx failed, error %ld\n", GetLastError()); + ok(ret, "FileRenameInfoEx failed, error %ld\n", GetLastError()); CloseHandle(file);
file = CreateFileW(tempFileTo2, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0); - todo_wine ok(file != INVALID_HANDLE_VALUE, "file not renamed, error %ld\n", GetLastError()); + ok(file != INVALID_HANDLE_VALUE, "file not renamed, error %ld\n", GetLastError());
fri->FileNameLength = wcslen(tempFileTo1) * sizeof(WCHAR); memcpy(fri->FileName, tempFileTo1, fri->FileNameLength + sizeof(WCHAR)); diff --git a/dlls/kernelbase/file.c b/dlls/kernelbase/file.c index 7d8b6844456..042179a8378 100644 --- a/dlls/kernelbase/file.c +++ b/dlls/kernelbase/file.c @@ -3658,6 +3658,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH SetFileInformationByHandle( HANDLE file, FILE_INFO status = NtSetInformationFile( file, &io, info, size, FileIoPriorityHintInformation ); break; case FileRenameInfo: + case FileRenameInfoEx: { FILE_RENAME_INFORMATION *rename_info; UNICODE_STRING nt_name; @@ -3673,7 +3674,8 @@ BOOL WINAPI DECLSPEC_HOTPATCH SetFileInformationByHandle( HANDLE file, FILE_INFO memcpy( rename_info, info, sizeof(*rename_info) ); memcpy( rename_info->FileName, nt_name.Buffer, nt_name.Length + sizeof(WCHAR) ); rename_info->FileNameLength = nt_name.Length; - status = NtSetInformationFile( file, &io, rename_info, size, FileRenameInformation ); + status = NtSetInformationFile( file, &io, rename_info, size, + class == FileRenameInfo ? FileRenameInformation : FileRenameInformationEx ); HeapFree( GetProcessHeap(), 0, rename_info ); } RtlFreeUnicodeString( &nt_name );