diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c
index 3256c59b3e76e5d90e17b8468faa55e35286b81a..5eac7f383f135349e8b4db4474cbeff6e59b41f9 100644
--- a/dlls/ntdll/directory.c
+++ b/dlls/ntdll/directory.c
@@ -2286,7 +2286,6 @@ NtNotifyChangeDirectoryFile( HANDLE FileHandle, HANDLE Event,
         req->async.iosb     = IoStatusBlock;
         req->async.arg      = info;
         req->async.apc      = read_changes_user_apc;
-        req->async.apc_arg  = info;
         req->async.event    = Event;
         status = wine_server_call( req );
     }
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c
index 7c166a9c3eecb2e6ced025df8119fd95ed784a4d..b48cc9d389ea39734254c1916f0dbcf74c08c5ce 100644
--- a/dlls/ntdll/file.c
+++ b/dlls/ntdll/file.c
@@ -639,7 +639,6 @@ NTSTATUS WINAPI NtReadFile(HANDLE hFile, HANDLE hEvent,
                 req->async.iosb     = io_status;
                 req->async.arg      = fileio;
                 req->async.apc      = fileio_apc;
-                req->async.apc_arg  = fileio;
                 req->async.event    = hEvent;
                 status = wine_server_call( req );
             }
@@ -873,7 +872,6 @@ NTSTATUS WINAPI NtWriteFile(HANDLE hFile, HANDLE hEvent,
                 req->async.iosb     = io_status;
                 req->async.arg      = fileio;
                 req->async.apc      = fileio_apc;
-                req->async.apc_arg  = fileio;
                 req->async.event    = hEvent;
                 status = wine_server_call( req );
             }
@@ -1001,7 +999,6 @@ static NTSTATUS server_ioctl_file( HANDLE handle, HANDLE event,
         req->async.iosb     = io;
         req->async.arg      = async;
         req->async.apc      = (apc || event) ? ioctl_apc : NULL;
-        req->async.apc_arg  = async;
         req->async.event    = event;
         wine_server_add_data( req, in_buffer, in_size );
         wine_server_set_reply( req, out_buffer, out_size );
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
index c0a387d817730a15083fe5b7adf39e8fbe4ef474..4c87d236c7d250b2e1ee2b54ceb7b12848aba297 100644
--- a/dlls/ws2_32/socket.c
+++ b/dlls/ws2_32/socket.c
@@ -1319,7 +1319,6 @@ static int WS2_register_async_shutdown( SOCKET s, int type )
         req->async.iosb     = &wsa->local_iosb;
         req->async.arg      = wsa;
         req->async.apc      = ws2_async_apc;
-        req->async.apc_arg  = wsa;
         status = wine_server_call( req );
     }
     SERVER_END_REQ;
@@ -2677,7 +2676,6 @@ INT WINAPI WSASendTo( SOCKET s, LPWSABUF lpBuffers, DWORD dwBufferCount,
                 req->async.iosb     = iosb;
                 req->async.arg      = wsa;
                 req->async.apc      = ws2_async_apc;
-                req->async.apc_arg  = wsa;
                 req->async.event    = lpCompletionRoutine ? 0 : lpOverlapped->hEvent;
                 err = wine_server_call( req );
             }
@@ -4185,7 +4183,6 @@ INT WINAPI WSARecvFrom( SOCKET s, LPWSABUF lpBuffers, DWORD dwBufferCount,
                 req->async.iosb     = iosb;
                 req->async.arg      = wsa;
                 req->async.apc      = ws2_async_apc;
-                req->async.apc_arg  = wsa;
                 req->async.event    = lpCompletionRoutine ? 0 : lpOverlapped->hEvent;
                 err = wine_server_call( req );
             }
diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h
index a5c5b03d0cae381dc06e193b99640218c78dd995..6b703a1238ada8f296a6da623954c708ee58756a 100644
--- a/include/wine/server_protocol.h
+++ b/include/wine/server_protocol.h
@@ -161,7 +161,6 @@ typedef struct
     void           *iosb;
     void           *arg;
     void           *apc;
-    void           *apc_arg;
     obj_handle_t    event;
 } async_data_t;
 
@@ -4728,6 +4727,6 @@ union generic_reply
     struct get_next_device_request_reply get_next_device_request_reply;
 };
 
-#define SERVER_PROTOCOL_VERSION 304
+#define SERVER_PROTOCOL_VERSION 305
 
 #endif /* __WINE_WINE_SERVER_PROTOCOL_H */
diff --git a/server/async.c b/server/async.c
index 58b772047da663486d7adb23318b658dcf4e49de..24cbd2a7614d2c0d2d0d876a6305d77e24b3096d 100644
--- a/server/async.c
+++ b/server/async.c
@@ -252,7 +252,7 @@ void async_set_result( struct object *obj, unsigned int status )
             apc_call_t data;
             data.type         = APC_USER;
             data.user.func    = async->data.apc;
-            data.user.args[0] = (unsigned long)async->data.apc_arg;
+            data.user.args[0] = (unsigned long)async->data.arg;
             data.user.args[1] = (unsigned long)async->data.iosb;
             data.user.args[2] = 0;
             thread_queue_apc( async->thread, NULL, &data );
diff --git a/server/protocol.def b/server/protocol.def
index 6d88a13bb641e9f1d0e3178af61b442a2b0eecfa..8a7e5a86b033a219d2e49f2da7fab4c5d6beec5d 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -177,7 +177,6 @@ typedef struct
     void           *iosb;          /* I/O status block in client addr space */
     void           *arg;           /* opaque user data to pass to callback */
     void           *apc;           /* user apc to call */
-    void           *apc_arg;       /* argument for user apc */
     obj_handle_t    event;         /* event to signal when done */
 } async_data_t;
 
diff --git a/server/trace.c b/server/trace.c
index 1dc83cf6da5e0dcf61e455511c7f44f4e350c4bb..a340bade55c2c1fe482638e5fac718ecbe6f2a37 100644
--- a/server/trace.c
+++ b/server/trace.c
@@ -245,8 +245,8 @@ static void dump_apc_result( const apc_result_t *result )
 
 static void dump_async_data( const async_data_t *data )
 {
-    fprintf( stderr, "{callback=%p,iosb=%p,arg=%p,apc=%p,apc_arg=%p,event=%p}",
-             data->callback, data->iosb, data->arg, data->apc, data->apc_arg, data->event );
+    fprintf( stderr, "{callback=%p,iosb=%p,arg=%p,apc=%p,event=%p}",
+             data->callback, data->iosb, data->arg, data->apc, data->event );
 }
 
 static void dump_luid( const luid_t *luid )