Module: wine Branch: master Commit: 65797763b3ac4fcab7ffc83a4f95b2e87c81f58a URL: https://gitlab.winehq.org/wine/wine/-/commit/65797763b3ac4fcab7ffc83a4f95b2e...
Author: Joel Holdsworth joel@airwebreathe.org.uk Date: Thu Oct 20 11:25:07 2022 +0100
ntdll: Add FSCTL_GET_REPARSE_POINT semi-stub.
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 | 10 ++++++++++ 2 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c index 8157848e41d..98d9e6b3b0a 100644 --- a/dlls/ntdll/tests/file.c +++ b/dlls/ntdll/tests/file.c @@ -5342,16 +5342,13 @@ static void test_reparse_points(void) ok( !status, "open %s failed %#lx\n", wine_dbgstr_w(nameW.Buffer), status );
status = pNtFsControlFile( 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 = pNtFsControlFile( 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 = pNtFsControlFile( 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 8a599a289f8..6b73d9dc7e8 100644 --- a/dlls/ntdll/unix/file.c +++ b/dlls/ntdll/unix/file.c @@ -6040,6 +6040,16 @@ NTSTATUS WINAPI NtFsControlFile( HANDLE handle, HANDLE event, PIO_APC_ROUTINE ap break; }
+ case FSCTL_GET_REPARSE_POINT: + io->Information = 0; + if (out_buffer && out_size) + { + 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;