Bernhard Loos bernhardloos@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.