Jacek Caban : ntdll/tests: Added FSCTL_PIPE_PEEK tests.
Alexandre Julliard
julliard at winehq.org
Wed May 10 17:23:18 CDT 2017
Module: wine
Branch: master
Commit: 4370073bbfea01bad9a600046903a4fa6ed7a525
URL: http://source.winehq.org/git/wine.git/?a=commit;h=4370073bbfea01bad9a600046903a4fa6ed7a525
Author: Jacek Caban <jacek at codeweavers.com>
Date: Wed May 10 18:55:41 2017 +0200
ntdll/tests: Added FSCTL_PIPE_PEEK tests.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/ntdll/tests/pipe.c | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/dlls/ntdll/tests/pipe.c b/dlls/ntdll/tests/pipe.c
index e242cb4..c0a785b 100644
--- a/dlls/ntdll/tests/pipe.c
+++ b/dlls/ntdll/tests/pipe.c
@@ -724,6 +724,31 @@ static void WINAPI apc( void *arg, IO_STATUS_BLOCK *iosb, ULONG reserved )
ok( !reserved, "reserved is not 0: %x\n", reserved );
}
+static void test_peek(HANDLE pipe)
+{
+ FILE_PIPE_PEEK_BUFFER buf;
+ IO_STATUS_BLOCK iosb;
+ HANDLE event = CreateEventA( NULL, TRUE, FALSE, NULL );
+ NTSTATUS status;
+
+ memset(&iosb, 0x55, sizeof(iosb));
+ status = NtFsControlFile(pipe, NULL, NULL, NULL, &iosb, FSCTL_PIPE_PEEK, NULL, 0, &buf, sizeof(buf));
+ ok(!status || status == STATUS_PENDING, "NtFsControlFile failed: %x\n", status);
+ ok(!iosb.Status, "iosb.Status = %x\n", iosb.Status);
+ ok(buf.ReadDataAvailable == 1, "ReadDataAvailable = %u\n", buf.ReadDataAvailable);
+
+ ResetEvent(event);
+ memset(&iosb, 0x55, sizeof(iosb));
+ status = NtFsControlFile(pipe, event, NULL, NULL, &iosb, FSCTL_PIPE_PEEK, NULL, 0, &buf, sizeof(buf));
+ ok(!status || status == STATUS_PENDING, "NtFsControlFile failed: %x\n", status);
+ ok(buf.ReadDataAvailable == 1, "ReadDataAvailable = %u\n", buf.ReadDataAvailable);
+ ok(!iosb.Status, "iosb.Status = %x\n", iosb.Status);
+ todo_wine
+ ok(is_signaled(event), "event is not signaled\n");
+
+ CloseHandle(event);
+}
+
#define PIPENAME "\\\\.\\pipe\\ntdll_tests_pipe.c"
static BOOL create_pipe_pair( HANDLE *read, HANDLE *write, ULONG flags, ULONG type, ULONG size )
@@ -829,6 +854,9 @@ static void read_pipe_test(ULONG pipe_flags, ULONG pipe_type)
ResetEvent( event );
ret = WriteFile( write, buffer, 1, &written, NULL );
ok(ret && written == 1, "WriteFile error %d\n", GetLastError());
+
+ test_peek(read);
+
status = NtReadFile( read, event, apc, &apc_count, &iosb, buffer, 1, NULL, NULL );
ok( status == STATUS_SUCCESS, "wrong status %x\n", status );
ok( U(iosb).Status == 0, "wrong status %x\n", U(iosb).Status );
More information about the wine-cvs
mailing list