Jacek Caban : ntdll/tests: Add FSCTL_PIPE_TRANSCEIVE tests.
Alexandre Julliard
julliard at winehq.org
Thu Mar 29 19:13:28 CDT 2018
Module: wine
Branch: master
Commit: f2cc9507aa0e414c25754c350060c0a75535040a
URL: https://source.winehq.org/git/wine.git/?a=commit;h=f2cc9507aa0e414c25754c350060c0a75535040a
Author: Jacek Caban <jacek at codeweavers.com>
Date: Wed Mar 28 22:46:44 2018 +0200
ntdll/tests: Add FSCTL_PIPE_TRANSCEIVE tests.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/ntdll/tests/pipe.c | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/dlls/ntdll/tests/pipe.c b/dlls/ntdll/tests/pipe.c
index 5cbf6e7..2978274 100644
--- a/dlls/ntdll/tests/pipe.c
+++ b/dlls/ntdll/tests/pipe.c
@@ -1109,6 +1109,35 @@ static void read_pipe_test(ULONG pipe_flags, ULONG pipe_type)
CloseHandle(event);
}
+static void test_transceive(void)
+{
+ IO_STATUS_BLOCK iosb;
+ HANDLE caller, callee;
+ HANDLE event = CreateEventA( NULL, TRUE, FALSE, NULL );
+ char buffer[128];
+ DWORD written;
+ BOOL ret;
+ NTSTATUS status;
+
+ if (!create_pipe_pair( &caller, &callee, FILE_FLAG_OVERLAPPED | PIPE_ACCESS_DUPLEX,
+ PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE, 4096 )) return;
+
+ status = NtFsControlFile( caller, event, NULL, NULL, &iosb, FSCTL_PIPE_TRANSCEIVE,
+ (BYTE*)"test", 4, buffer, sizeof(buffer) );
+ ok( status == STATUS_PENDING, "NtFsControlFile(FSCTL_PIPE_TRANSCEIVE) returned %x\n", status);
+ ok( !is_signaled( event ), "event is signaled\n" );
+
+ ret = WriteFile( callee, buffer, 2, &written, NULL );
+ ok(ret && written == 2, "WriteFile error %d\n", GetLastError());
+
+ ok( U(iosb).Status == 0, "wrong status %x\n", U(iosb).Status );
+ ok( iosb.Information == 2, "wrong info %lu\n", iosb.Information );
+ ok( is_signaled( event ), "event is not signaled\n" );
+
+ CloseHandle( caller );
+ CloseHandle( callee );
+}
+
static void test_volume_info(void)
{
FILE_FS_DEVICE_INFORMATION *device_info;
@@ -1464,6 +1493,7 @@ START_TEST(pipe)
trace("starting message read in message mode server -> client\n");
read_pipe_test(PIPE_ACCESS_OUTBOUND, PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE);
+ test_transceive();
test_volume_info();
test_file_info();
test_security_info();
More information about the wine-cvs
mailing list