From: Joel Holdsworth joel@airwebreathe.org.uk
--- dlls/ntdll/tests/file.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+)
diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c index c011733626f..31d6e5b8b9f 100644 --- a/dlls/ntdll/tests/file.c +++ b/dlls/ntdll/tests/file.c @@ -5326,6 +5326,38 @@ static void test_mailslot_name(void) CloseHandle( device ); }
+static void test_reparse_points(void) +{ + OBJECT_ATTRIBUTES attr; + HANDLE handle; + IO_STATUS_BLOCK io; + NTSTATUS status; + unsigned char reparse_data[1]; + + static WCHAR z_volW[] = L"\??\C:\"; + UNICODE_STRING nameW = {sizeof(z_volW) - 2, sizeof(z_volW), z_volW}; + + InitializeObjectAttributes( &attr, &nameW, 0, NULL, NULL ); + + status = NtOpenFile( &handle, READ_CONTROL, &attr, &io, 0, 0 ); + 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 ); +} + START_TEST(file) { HMODULE hkernel32 = GetModuleHandleA("kernel32.dll"); @@ -5399,4 +5431,5 @@ START_TEST(file) test_query_ea(); test_flush_buffers_file(); test_mailslot_name(); + test_reparse_points(); }