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