server: Add an async_data_t structure to store parameters for async I/O requests.
diff --git a/server/named_pipe.c b/server/named_pipe.c
index 5eba500..61ddd37 100644
--- a/server/named_pipe.c
+++ b/server/named_pipe.c
@@ -824,7 +824,7 @@
     case ps_wait_connect:
         assert( !server->fd );
         server->state = ps_wait_open;
-        create_async( current, NULL, &server->wait_q, req->io_apc, req->io_user, req->io_sb );
+        create_async( current, NULL, &server->wait_q, &req->async );
         async_terminate_queue( &server->pipe->waiters, STATUS_SUCCESS );
         break;
     case ps_connected_server:
@@ -872,9 +872,9 @@
         /* 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->io_apc;
-        data.async_io.user   = req->io_user;
-        data.async_io.sb     = req->io_sb;
+        data.async_io.func   = req->async.callback;
+        data.async_io.user   = req->async.arg;
+        data.async_io.sb     = req->async.iosb;
         data.async_io.status = STATUS_SUCCESS;
         thread_queue_apc( current, NULL, &data );
         release_object( server );
@@ -882,14 +882,13 @@
     else
     {
         if (req->timeout == NMPWAIT_WAIT_FOREVER)
-            create_async( current, NULL, &pipe->waiters,
-                          req->io_apc, req->io_user, req->io_sb );
+            create_async( current, NULL, &pipe->waiters, &req->async );
         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->io_apc, req->io_user, req->io_sb );
+            create_async( current, &when, &pipe->waiters, &req->async );
         }
     }