Jacek Caban jacek@codeweavers.com writes:
@@ -588,10 +588,22 @@ static NTSTATUS server_read_file( HANDLE handle, HANDLE event, PIO_APC_ROUTINE a if (wait_handle) { NtWaitForSingleObject( wait_handle, (options & FILE_SYNCHRONOUS_IO_ALERT), NULL );
status = io->u.Status; NtClose( wait_handle );
return io->u.Status;
}
if (status == STATUS_SUCCESS || status == STATUS_BUFFER_OVERFLOW)
{
io->u.Status = status;
io->Information = total;
if (event) NtSetEvent( event, NULL );
if (apc) NtQueueApcThread( GetCurrentThread(), (PNTAPCFUNC)apc,
(ULONG_PTR)apc_context, (ULONG_PTR)io, 0 );
}
else if (status != STATUS_PENDING && event)
NtResetEvent( event, NULL );
if (cvalue && status != STATUS_PENDING) NTDLL_AddCompletion( handle, cvalue, status, total );
I think it would be cleaner to do these on the server-side, the same way it's done for the asynchronous case.