ntdll: Do not update iosb.Status after FSCTL_PIPE_LISTEN call.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
96aca1ad02
commit
9acff7550d
|
@ -2141,7 +2141,7 @@ static void test_overlapped_error(void)
|
||||||
err = GetLastError();
|
err = GetLastError();
|
||||||
ok(ret == FALSE, "ConnectNamedPipe succeeded\n");
|
ok(ret == FALSE, "ConnectNamedPipe succeeded\n");
|
||||||
ok(err == ERROR_PIPE_CONNECTED, "expected ERROR_PIPE_CONNECTED, got %u\n", err);
|
ok(err == ERROR_PIPE_CONNECTED, "expected ERROR_PIPE_CONNECTED, got %u\n", err);
|
||||||
todo_wine ok(overlapped.Internal == STATUS_PENDING, "expected STATUS_PENDING, got %08lx\n", overlapped.Internal);
|
ok(overlapped.Internal == STATUS_PENDING, "expected STATUS_PENDING, got %08lx\n", overlapped.Internal);
|
||||||
|
|
||||||
CloseHandle(file);
|
CloseHandle(file);
|
||||||
CloseHandle(pipe);
|
CloseHandle(pipe);
|
||||||
|
|
|
@ -1757,6 +1757,11 @@ NTSTATUS WINAPI NtFsControlFile(HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case FSCTL_PIPE_LISTEN:
|
||||||
|
status = server_ioctl_file( handle, event, apc, apc_context, io, code,
|
||||||
|
in_buffer, in_size, out_buffer, out_size );
|
||||||
|
return status;
|
||||||
|
|
||||||
case FSCTL_PIPE_IMPERSONATE:
|
case FSCTL_PIPE_IMPERSONATE:
|
||||||
FIXME("FSCTL_PIPE_IMPERSONATE: impersonating self\n");
|
FIXME("FSCTL_PIPE_IMPERSONATE: impersonating self\n");
|
||||||
status = RtlImpersonateSelf( SecurityImpersonation );
|
status = RtlImpersonateSelf( SecurityImpersonation );
|
||||||
|
@ -1797,7 +1802,6 @@ NTSTATUS WINAPI NtFsControlFile(HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc
|
||||||
io->Information = 0;
|
io->Information = 0;
|
||||||
status = STATUS_SUCCESS;
|
status = STATUS_SUCCESS;
|
||||||
break;
|
break;
|
||||||
case FSCTL_PIPE_LISTEN:
|
|
||||||
case FSCTL_PIPE_WAIT:
|
case FSCTL_PIPE_WAIT:
|
||||||
default:
|
default:
|
||||||
status = server_ioctl_file( handle, event, apc, apc_context, io, code,
|
status = server_ioctl_file( handle, event, apc, apc_context, io, code,
|
||||||
|
|
|
@ -308,7 +308,7 @@ static void test_overlapped(void)
|
||||||
memset(&iosb, 0x55, sizeof(iosb));
|
memset(&iosb, 0x55, sizeof(iosb));
|
||||||
res = listen_pipe(hPipe, hEvent, &iosb, TRUE);
|
res = listen_pipe(hPipe, hEvent, &iosb, TRUE);
|
||||||
ok(res == STATUS_PIPE_CONNECTED, "NtFsControlFile returned %x\n", res);
|
ok(res == STATUS_PIPE_CONNECTED, "NtFsControlFile returned %x\n", res);
|
||||||
todo_wine ok(U(iosb).Status == 0x55555555, "iosb.Status got changed to %x\n", U(iosb).Status);
|
ok(U(iosb).Status == 0x55555555, "iosb.Status got changed to %x\n", U(iosb).Status);
|
||||||
|
|
||||||
CloseHandle(hClient);
|
CloseHandle(hClient);
|
||||||
}
|
}
|
||||||
|
@ -392,7 +392,7 @@ static void test_alertable(void)
|
||||||
todo_wine ok(res == STATUS_CANCELLED, "NtFsControlFile returned %x\n", res);
|
todo_wine ok(res == STATUS_CANCELLED, "NtFsControlFile returned %x\n", res);
|
||||||
|
|
||||||
ok(userapc_called, "user apc didn't run\n");
|
ok(userapc_called, "user apc didn't run\n");
|
||||||
todo_wine ok(U(iosb).Status == 0x55555555, "iosb.Status got changed to %x\n", U(iosb).Status);
|
ok(U(iosb).Status == 0x55555555, "iosb.Status got changed to %x\n", U(iosb).Status);
|
||||||
ok(WaitForSingleObjectEx(hEvent, 0, TRUE) == WAIT_TIMEOUT, "hEvent signaled\n");
|
ok(WaitForSingleObjectEx(hEvent, 0, TRUE) == WAIT_TIMEOUT, "hEvent signaled\n");
|
||||||
ok(!ioapc_called, "IOAPC ran\n");
|
ok(!ioapc_called, "IOAPC ran\n");
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue