server: Use the common pattern for async I/O parameters in named pipe requests.

This commit is contained in:
Alexandre Julliard 2007-03-20 19:21:15 +01:00
parent 7b10348088
commit eb3728d34e
5 changed files with 32 additions and 25 deletions

View file

@ -982,9 +982,10 @@ NTSTATUS WINAPI NtFsControlFile(HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc
}
SERVER_START_REQ(connect_named_pipe)
{
req->handle = handle;
req->event = event ? event : internal_event;
req->func = pipe_completion_wait;
req->handle = handle;
req->io_apc = pipe_completion_wait;
req->io_sb = io;
req->io_user = event ? event : internal_event;
io->u.Status = wine_server_call(req);
}
SERVER_END_REQ;
@ -1018,8 +1019,9 @@ NTSTATUS WINAPI NtFsControlFile(HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc
req->handle = handle;
req->timeout = buff->TimeoutSpecified ? buff->Timeout.QuadPart / -10000L
: NMPWAIT_USE_DEFAULT_WAIT;
req->event = event ? event : internal_event;
req->func = pipe_completion_wait;
req->io_apc = pipe_completion_wait;
req->io_sb = io;
req->io_user = event ? event : internal_event;
wine_server_add_data( req, buff->Name, buff->NameLength );
io->u.Status = wine_server_call( req );
}

View file

@ -2709,8 +2709,9 @@ struct connect_named_pipe_request
{
struct request_header __header;
obj_handle_t handle;
obj_handle_t event;
void* func;
void* io_apc;
void* io_sb;
void* io_user;
};
struct connect_named_pipe_reply
{
@ -2724,8 +2725,9 @@ struct wait_named_pipe_request
struct request_header __header;
obj_handle_t handle;
unsigned int timeout;
obj_handle_t event;
void* func;
void* io_apc;
void* io_sb;
void* io_user;
/* VARARG(name,unicode_str); */
};
struct wait_named_pipe_reply
@ -4692,6 +4694,6 @@ union generic_reply
struct allocate_locally_unique_id_reply allocate_locally_unique_id_reply;
};
#define SERVER_PROTOCOL_VERSION 280
#define SERVER_PROTOCOL_VERSION 281
#endif /* __WINE_WINE_SERVER_PROTOCOL_H */

View file

@ -824,8 +824,7 @@ DECL_HANDLER(connect_named_pipe)
case ps_wait_connect:
assert( !server->fd );
server->state = ps_wait_open;
create_async( current, NULL, &server->wait_q,
req->func, req->event, NULL );
create_async( current, NULL, &server->wait_q, req->io_apc, req->io_user, req->io_sb );
async_terminate_queue( &server->pipe->waiters, STATUS_SUCCESS );
break;
case ps_connected_server:
@ -873,9 +872,9 @@ DECL_HANDLER(wait_named_pipe)
/* there's already a server waiting for a client to connect */
memset( &data, 0, sizeof(data) );
data.type = APC_ASYNC_IO;
data.async_io.func = req->func;
data.async_io.user = req->event;
data.async_io.sb = NULL;
data.async_io.func = req->io_apc;
data.async_io.user = req->io_user;
data.async_io.sb = req->io_sb;
data.async_io.status = STATUS_SUCCESS;
thread_queue_apc( current, NULL, &data );
release_object( server );
@ -884,13 +883,13 @@ DECL_HANDLER(wait_named_pipe)
{
if (req->timeout == NMPWAIT_WAIT_FOREVER)
create_async( current, NULL, &pipe->waiters,
req->func, req->event, NULL );
req->io_apc, req->io_user, req->io_sb );
else
{
struct timeval when = current_time;
if (req->timeout == NMPWAIT_USE_DEFAULT_WAIT) add_timeout( &when, pipe->timeout );
else add_timeout( &when, req->timeout );
create_async( current, &when, &pipe->waiters, req->func, req->event, NULL );
create_async( current, &when, &pipe->waiters, req->io_apc, req->io_user, req->io_sb );
}
}

View file

@ -1997,8 +1997,9 @@ enum message_type
/* Connect to a named pipe */
@REQ(connect_named_pipe)
obj_handle_t handle;
obj_handle_t event;
void* func;
void* io_apc; /* APC routine to queue upon end of async */
void* io_sb; /* I/O status block */
void* io_user; /* data to pass back to caller */
@END
@ -2006,8 +2007,9 @@ enum message_type
@REQ(wait_named_pipe)
obj_handle_t handle;
unsigned int timeout;
obj_handle_t event;
void* func;
void* io_apc; /* APC routine to queue upon end of async */
void* io_sb; /* I/O status block */
void* io_user; /* data to pass back to caller */
VARARG(name,unicode_str); /* pipe name */
@END

View file

@ -2425,16 +2425,18 @@ static void dump_open_named_pipe_reply( const struct open_named_pipe_reply *req
static void dump_connect_named_pipe_request( const struct connect_named_pipe_request *req )
{
fprintf( stderr, " handle=%p,", req->handle );
fprintf( stderr, " event=%p,", req->event );
fprintf( stderr, " func=%p", req->func );
fprintf( stderr, " io_apc=%p,", req->io_apc );
fprintf( stderr, " io_sb=%p,", req->io_sb );
fprintf( stderr, " io_user=%p", req->io_user );
}
static void dump_wait_named_pipe_request( const struct wait_named_pipe_request *req )
{
fprintf( stderr, " handle=%p,", req->handle );
fprintf( stderr, " timeout=%08x,", req->timeout );
fprintf( stderr, " event=%p,", req->event );
fprintf( stderr, " func=%p,", req->func );
fprintf( stderr, " io_apc=%p,", req->io_apc );
fprintf( stderr, " io_sb=%p,", req->io_sb );
fprintf( stderr, " io_user=%p,", req->io_user );
fprintf( stderr, " name=" );
dump_varargs_unicode_str( cur_size );
}