From: "Erich E. Hoover" erich.e.hoover@gmail.com
--- dlls/kernelbase/file.c | 2 ++ dlls/ntdll/tests/file.c | 9 +++------ 2 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/dlls/kernelbase/file.c b/dlls/kernelbase/file.c index c02435c0dd3..6c6168cfbe8 100644 --- a/dlls/kernelbase/file.c +++ b/dlls/kernelbase/file.c @@ -776,6 +776,8 @@ static UINT get_nt_file_options( DWORD attributes, DWORD creation ) options |= FILE_DELETE_ON_CLOSE; if (attributes & FILE_FLAG_NO_BUFFERING) options |= FILE_NO_INTERMEDIATE_BUFFERING; + if (attributes & FILE_FLAG_OPEN_REPARSE_POINT) + options |= FILE_OPEN_REPARSE_POINT; if (!(attributes & FILE_FLAG_OVERLAPPED)) options |= FILE_SYNCHRONOUS_IO_NONALERT; if (attributes & FILE_FLAG_RANDOM_ACCESS) diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c index 7f8cfdadcd5..bbba116cbe3 100644 --- a/dlls/ntdll/tests/file.c +++ b/dlls/ntdll/tests/file.c @@ -6470,7 +6470,7 @@ static void test_reparse_points(void) ret = GetFinalPathNameByHandleW( handle2, ret_path, ARRAY_SIZE( ret_path ), VOLUME_NAME_DOS ); ok( ret > 0, "got error %lu\n", GetLastError() ); swprintf( path, ARRAY_SIZE(path), L"\\?\%stestreparse_dirlink", temp_path ); - todo_wine ok( !wcscmp( ret_path, path ), "expected path %s, got %s\n", debugstr_w( path ), debugstr_w( ret_path )); + ok( !wcscmp( ret_path, path ), "expected path %s, got %s\n", debugstr_w( path ), debugstr_w( ret_path )); CloseHandle( handle2 );
status = NtFsControlFile( handle, NULL, NULL, NULL, &io, FSCTL_DELETE_REPARSE_POINT, NULL, 0, NULL, 0 ); @@ -6541,11 +6541,8 @@ static void test_reparse_points(void) swprintf( path, ARRAY_SIZE(path), L"%s/testreparse_dirlink", temp_path ); handle2 = CreateFileW( path, DELETE, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OPEN_REPARSE_POINT, 0 ); - todo_wine ok( handle2 != INVALID_HANDLE_VALUE, "got error %lu\n", GetLastError() ); - if (handle2 != INVALID_HANDLE_VALUE) - status = NtSetInformationFile( handle2, &io, &fdi, sizeof(fdi), FileDispositionInformation ); - else - status = NtSetInformationFile( handle, &io, &fdi, sizeof(fdi), FileDispositionInformation ); + ok( handle2 != INVALID_HANDLE_VALUE, "got error %lu\n", GetLastError() ); + status = NtSetInformationFile( handle2, &io, &fdi, sizeof(fdi), FileDispositionInformation ); ok( !status, "got %#lx\n", status ); CloseHandle( handle2 );