server: Use stored current kernel call to interpret IRP dispatch status.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Jacek Caban 2019-05-28 14:09:22 +02:00 committed by Alexandre Julliard
parent 1020db7938
commit dfe20465e8
1 changed files with 4 additions and 10 deletions

View File

@ -884,20 +884,14 @@ DECL_HANDLER(get_next_device_request)
0, &device_manager_ops )))
return;
if (req->prev)
{
if ((irp = (struct irp_call *)get_handle_obj( current->process, req->prev, 0, &irp_call_ops )))
{
set_irp_result( irp, req->status, NULL, 0, 0 );
close_handle( current->process, req->prev ); /* avoid an extra round-trip for close */
release_object( irp );
}
}
if (req->prev) close_handle( current->process, req->prev ); /* avoid an extra round-trip for close */
if (manager->current_call)
{
irp = manager->current_call;
if (irp->async)
if (req->status)
set_irp_result( irp, req->status, NULL, 0, 0 );
else if (irp->async)
set_async_pending( irp->async, irp->file && is_fd_overlapped( irp->file->fd ) );
free_irp_params( irp );
release_object( irp );