server: Specify the user APC to call only once the system APC has executed.
diff --git a/server/async.c b/server/async.c
index f3186d7..3a9ae34 100644
--- a/server/async.c
+++ b/server/async.c
@@ -234,7 +234,7 @@
 }
 
 /* store the result of the client-side async callback */
-void async_set_result( struct object *obj, unsigned int status, unsigned int total )
+void async_set_result( struct object *obj, unsigned int status, unsigned int total, void *apc )
 {
     struct async *async = (struct async *)obj;
 
@@ -260,12 +260,12 @@
         async->status = status;
         if (async->completion && async->data.cvalue)
             add_completion( async->completion, async->comp_key, async->data.cvalue, status, total );
-        if (async->data.apc)
+        if (apc)
         {
             apc_call_t data;
             memset( &data, 0, sizeof(data) );
             data.type         = APC_USER;
-            data.user.func    = async->data.apc;
+            data.user.func    = apc;
             data.user.args[0] = (apc_param_t)(unsigned long)async->data.arg;
             data.user.args[1] = (apc_param_t)(unsigned long)async->data.iosb;
             data.user.args[2] = 0;