Bernhard Loos <bernhardloos(a)googlemail.com> writes:
> @@ -1273,10 +1282,16 @@ static NTSTATUS server_ioctl_file( HANDLE handle, HANDLE event,
>
> if (wait_handle)
> {
> - NtWaitForSingleObject( wait_handle, (options & FILE_SYNCHRONOUS_IO_ALERT), NULL );
> - status = io->u.Status;
> + status = NtWaitForSingleObject( wait_handle, (options & FILE_SYNCHRONOUS_IO_ALERT), NULL );
> + if (status == STATUS_USER_APC)
> + {
> + async->interrupted = TRUE;
> + status = STATUS_CANCELLED; /* not really, the ioctl completes and event and the handle
> + itself get signaled */
> + }
This looks wrong. You can't claim it was cancelled if it's still
running.
--
Alexandre Julliard
julliard(a)winehq.org