From: Joel Holdsworth joel@airwebreathe.org.uk
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=39627 Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53439 Signed-off-by: Joel Holdsworth joel@airwebreathe.org.uk --- dlls/ntdll/tests/file.c | 3 --- dlls/ntdll/unix/file.c | 14 ++++++++++++++ 2 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c index 31d6e5b8b9f..8085ed5fcb3 100644 --- a/dlls/ntdll/tests/file.c +++ b/dlls/ntdll/tests/file.c @@ -5343,16 +5343,13 @@ static void test_reparse_points(void) ok( !status, "open %s failed %#lx\n", wine_dbgstr_w(nameW.Buffer), status );
status = NtFsControlFile( handle, NULL, NULL, NULL, &io, FSCTL_GET_REPARSE_POINT, NULL, 0, NULL, 0 ); - todo_wine ok( status == STATUS_INVALID_USER_BUFFER, "expected %#lx, got %#lx\n", STATUS_INVALID_USER_BUFFER, status );
status = NtFsControlFile( handle, NULL, NULL, NULL, &io, FSCTL_GET_REPARSE_POINT, NULL, 0, reparse_data, 0 ); - todo_wine ok( status == STATUS_INVALID_USER_BUFFER, "expected %#lx, got %#lx\n", STATUS_INVALID_USER_BUFFER, status );
/* a volume cannot be a reparse point by definition */ status = NtFsControlFile( handle, NULL, NULL, NULL, &io, FSCTL_GET_REPARSE_POINT, NULL, 0, reparse_data, 1 ); - todo_wine ok( status == STATUS_NOT_A_REPARSE_POINT, "expected %#lx, got %#lx\n", STATUS_NOT_A_REPARSE_POINT, status );
CloseHandle( handle ); diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c index 604ca866890..d37cb5ad5a0 100644 --- a/dlls/ntdll/unix/file.c +++ b/dlls/ntdll/unix/file.c @@ -6030,6 +6030,20 @@ NTSTATUS WINAPI NtFsControlFile( HANDLE handle, HANDLE event, PIO_APC_ROUTINE ap break; }
+ case FSCTL_GET_REPARSE_POINT: + { + if (out_buffer && out_size >= 1) + { + FIXME("FSCTL_GET_REPARSE_POINT semi-stub\n"); + status = STATUS_NOT_A_REPARSE_POINT; + } + else + { + status = STATUS_INVALID_USER_BUFFER; + } + break; + } + case FSCTL_GET_OBJECT_ID: { FILE_OBJECTID_BUFFER *info = out_buffer;