Module: wine Branch: master Commit: eb3728d34e87730db10bb4043e7e3b9f8b0fdfdb URL: http://source.winehq.org/git/wine.git/?a=commit;h=eb3728d34e87730db10bb4043e...
Author: Alexandre Julliard julliard@winehq.org Date: Tue Mar 20 19:21:15 2007 +0100
server: Use the common pattern for async I/O parameters in named pipe requests.
---
dlls/ntdll/file.c | 12 +++++++----- include/wine/server_protocol.h | 12 +++++++----- server/named_pipe.c | 13 ++++++------- server/protocol.def | 10 ++++++---- server/trace.c | 10 ++++++---- 5 files changed, 32 insertions(+), 25 deletions(-)
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c index 3d7c3eb..65b4783 100644 --- a/dlls/ntdll/file.c +++ b/dlls/ntdll/file.c @@ -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 ); } diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h index db9309a..93087cf 100644 --- a/include/wine/server_protocol.h +++ b/include/wine/server_protocol.h @@ -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 */ diff --git a/server/named_pipe.c b/server/named_pipe.c index 173290f..5eba500 100644 --- a/server/named_pipe.c +++ b/server/named_pipe.c @@ -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 ); } }
diff --git a/server/protocol.def b/server/protocol.def index f3175a3..d335d0a 100644 --- a/server/protocol.def +++ b/server/protocol.def @@ -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
diff --git a/server/trace.c b/server/trace.c index 8475466..b5aab1a 100644 --- a/server/trace.c +++ b/server/trace.c @@ -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 ); }