ntdll/tests: Listen on the pipe to allow the client to connect on Windows 8 and 10.
Signed-off-by: Huw Davies <huw@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
7021fd61c6
commit
9c5b15aaa4
|
@ -135,6 +135,21 @@ static NTSTATUS create_pipe(PHANDLE handle, ULONG sharing, ULONG options)
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static BOOL ioapc_called;
|
||||||
|
static void CALLBACK ioapc(void *arg, PIO_STATUS_BLOCK io, ULONG reserved)
|
||||||
|
{
|
||||||
|
ioapc_called = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static NTSTATUS listen_pipe(HANDLE hPipe, HANDLE hEvent, PIO_STATUS_BLOCK iosb, BOOL use_apc)
|
||||||
|
{
|
||||||
|
int dummy;
|
||||||
|
|
||||||
|
ioapc_called = FALSE;
|
||||||
|
|
||||||
|
return pNtFsControlFile(hPipe, hEvent, use_apc ? &ioapc: NULL, use_apc ? &dummy: NULL, iosb, FSCTL_PIPE_LISTEN, 0, 0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
static void test_create_invalid(void)
|
static void test_create_invalid(void)
|
||||||
{
|
{
|
||||||
IO_STATUS_BLOCK iosb;
|
IO_STATUS_BLOCK iosb;
|
||||||
|
@ -202,6 +217,7 @@ static void test_create(void)
|
||||||
int j, k;
|
int j, k;
|
||||||
FILE_PIPE_LOCAL_INFORMATION info;
|
FILE_PIPE_LOCAL_INFORMATION info;
|
||||||
IO_STATUS_BLOCK iosb;
|
IO_STATUS_BLOCK iosb;
|
||||||
|
HANDLE hEvent = CreateEventW(NULL, TRUE, FALSE, NULL);
|
||||||
|
|
||||||
static const DWORD access[] = { 0, GENERIC_READ, GENERIC_WRITE, GENERIC_READ | GENERIC_WRITE};
|
static const DWORD access[] = { 0, GENERIC_READ, GENERIC_WRITE, GENERIC_READ | GENERIC_WRITE};
|
||||||
static const DWORD sharing[] = { FILE_SHARE_READ, FILE_SHARE_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE };
|
static const DWORD sharing[] = { FILE_SHARE_READ, FILE_SHARE_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE };
|
||||||
|
@ -212,12 +228,15 @@ static void test_create(void)
|
||||||
HANDLE hclient;
|
HANDLE hclient;
|
||||||
BOOL should_succeed = TRUE;
|
BOOL should_succeed = TRUE;
|
||||||
|
|
||||||
res = create_pipe(&hserver, sharing[j], FILE_SYNCHRONOUS_IO_NONALERT);
|
res = create_pipe(&hserver, sharing[j], 0);
|
||||||
if (res) {
|
if (res) {
|
||||||
ok(0, "NtCreateNamedPipeFile returned %x, sharing: %x\n", res, sharing[j]);
|
ok(0, "NtCreateNamedPipeFile returned %x, sharing: %x\n", res, sharing[j]);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
res = listen_pipe(hserver, hEvent, &iosb, FALSE);
|
||||||
|
ok(res == STATUS_PENDING, "NtFsControlFile returned %x\n", res);
|
||||||
|
|
||||||
res = pNtQueryInformationFile(hserver, &iosb, &info, sizeof(info), (FILE_INFORMATION_CLASS)24);
|
res = pNtQueryInformationFile(hserver, &iosb, &info, sizeof(info), (FILE_INFORMATION_CLASS)24);
|
||||||
ok(!res, "NtQueryInformationFile for server returned %x, sharing: %x\n", res, sharing[j]);
|
ok(!res, "NtQueryInformationFile for server returned %x, sharing: %x\n", res, sharing[j]);
|
||||||
ok(info.NamedPipeConfiguration == pipe_config[j], "wrong duplex status for pipe: %d, expected %d\n",
|
ok(info.NamedPipeConfiguration == pipe_config[j], "wrong duplex status for pipe: %d, expected %d\n",
|
||||||
|
@ -247,21 +266,7 @@ static void test_create(void)
|
||||||
CloseHandle(hserver);
|
CloseHandle(hserver);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
CloseHandle(hEvent);
|
||||||
|
|
||||||
static BOOL ioapc_called;
|
|
||||||
static void CALLBACK ioapc(void *arg, PIO_STATUS_BLOCK io, ULONG reserved)
|
|
||||||
{
|
|
||||||
ioapc_called = TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static NTSTATUS listen_pipe(HANDLE hPipe, HANDLE hEvent, PIO_STATUS_BLOCK iosb, BOOL use_apc)
|
|
||||||
{
|
|
||||||
int dummy;
|
|
||||||
|
|
||||||
ioapc_called = FALSE;
|
|
||||||
|
|
||||||
return pNtFsControlFile(hPipe, hEvent, use_apc ? &ioapc: NULL, use_apc ? &dummy: NULL, iosb, FSCTL_PIPE_LISTEN, 0, 0, 0, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_overlapped(void)
|
static void test_overlapped(void)
|
||||||
|
|
Loading…
Reference in New Issue