Alexandre Julliard : server: Use the common pattern for async I/
O parameters in named pipe requests.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed Mar 21 08:17:00 CDT 2007
Module: wine
Branch: master
Commit: eb3728d34e87730db10bb4043e7e3b9f8b0fdfdb
URL: http://source.winehq.org/git/wine.git/?a=commit;h=eb3728d34e87730db10bb4043e7e3b9f8b0fdfdb
Author: Alexandre Julliard <julliard at 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 );
}
More information about the wine-cvs
mailing list