Jacek Caban : ntdll/tests: Add NtQueryInformationFile(FileNameInformation) on named pipes tests.
Alexandre Julliard
julliard at winehq.org
Fri Dec 22 11:15:05 CST 2017
Module: wine
Branch: master
Commit: 514a15754109a38b05d9ae983736c5de6fbba2d1
URL: https://source.winehq.org/git/wine.git/?a=commit;h=514a15754109a38b05d9ae983736c5de6fbba2d1
Author: Jacek Caban <jacek at codeweavers.com>
Date: Thu Dec 21 16:04:26 2017 +0100
ntdll/tests: Add NtQueryInformationFile(FileNameInformation) on named pipes tests.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/ntdll/tests/pipe.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 71 insertions(+)
diff --git a/dlls/ntdll/tests/pipe.c b/dlls/ntdll/tests/pipe.c
index 824eed7..b0863ea 100644
--- a/dlls/ntdll/tests/pipe.c
+++ b/dlls/ntdll/tests/pipe.c
@@ -1142,6 +1142,76 @@ static void test_volume_info(void)
CloseHandle( write );
}
+#define test_file_name_fail(a,b) _test_file_name_fail(__LINE__,a,b)
+static void _test_file_name_fail(unsigned line, HANDLE pipe, NTSTATUS expected_status)
+{
+ char buffer[512];
+ IO_STATUS_BLOCK iosb;
+ NTSTATUS status;
+
+ status = NtQueryInformationFile( pipe, &iosb, buffer, sizeof(buffer), FileNameInformation );
+ ok_(__FILE__,line)( status == expected_status, "NtQueryInformationFile failed: %x, expected %x\n",
+ status, expected_status );
+}
+
+#define test_file_name(a) _test_file_name(__LINE__,a)
+static void _test_file_name(unsigned line, HANDLE pipe)
+{
+ char buffer[512];
+ FILE_NAME_INFORMATION *name_info = (FILE_NAME_INFORMATION*)buffer;
+ IO_STATUS_BLOCK iosb;
+ NTSTATUS status;
+
+ static const WCHAR nameW[] =
+ {'\\','n','t','d','l','l','_','t','e','s','t','s','_','p','i','p','e','.','c'};
+
+ memset( buffer, 0xaa, sizeof(buffer) );
+ memset( &iosb, 0xaa, sizeof(iosb) );
+ status = NtQueryInformationFile( pipe, &iosb, buffer, sizeof(buffer), FileNameInformation );
+ todo_wine
+ ok_(__FILE__,line)( status == STATUS_SUCCESS, "NtQueryInformationFile failed: %x\n", status );
+ if (status) return;
+ ok_(__FILE__,line)( iosb.Status == STATUS_SUCCESS, "Status = %x\n", iosb.Status );
+ ok_(__FILE__,line)( iosb.Information == sizeof(name_info->FileNameLength) + sizeof(nameW),
+ "Information = %lu\n", iosb.Information );
+ ok( name_info->FileNameLength == sizeof(nameW), "FileNameLength = %u\n", name_info->FileNameLength );
+ ok( !memcmp(name_info->FileName, nameW, sizeof(nameW)), "FileName = %s\n", wine_dbgstr_w(name_info->FileName) );
+
+ /* too small buffer */
+ memset( buffer, 0xaa, sizeof(buffer) );
+ memset( &iosb, 0xaa, sizeof(iosb) );
+ status = NtQueryInformationFile( pipe, &iosb, buffer, 20, FileNameInformation );
+ ok( status == STATUS_BUFFER_OVERFLOW, "NtQueryInformationFile failed: %x\n", status );
+ ok( iosb.Status == STATUS_BUFFER_OVERFLOW, "Status = %x\n", iosb.Status );
+ ok( iosb.Information == 20, "Information = %lu\n", iosb.Information );
+ ok( name_info->FileNameLength == sizeof(nameW), "FileNameLength = %u\n", name_info->FileNameLength );
+ ok( !memcmp(name_info->FileName, nameW, 16), "FileName = %s\n", wine_dbgstr_w(name_info->FileName) );
+
+ /* too small buffer */
+ memset( buffer, 0xaa, sizeof(buffer) );
+ memset( &iosb, 0xaa, sizeof(iosb) );
+ status = NtQueryInformationFile( pipe, &iosb, buffer, 4, FileNameInformation );
+ ok( status == STATUS_INFO_LENGTH_MISMATCH, "NtQueryInformationFile failed: %x\n", status );
+}
+
+static void test_file_info(void)
+{
+ HANDLE server, client;
+
+ if (!create_pipe_pair( &server, &client, FILE_FLAG_OVERLAPPED | PIPE_ACCESS_INBOUND,
+ PIPE_TYPE_MESSAGE, 4096 )) return;
+
+ test_file_name( client );
+ test_file_name( server );
+
+ DisconnectNamedPipe( server );
+ todo_wine
+ test_file_name_fail( client, STATUS_PIPE_DISCONNECTED );
+
+ CloseHandle( server );
+ CloseHandle( client );
+}
+
START_TEST(pipe)
{
if (!init_func_ptrs())
@@ -1185,4 +1255,5 @@ START_TEST(pipe)
read_pipe_test(PIPE_ACCESS_OUTBOUND, PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE);
test_volume_info();
+ test_file_info();
}
More information about the wine-cvs
mailing list