diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h
index 0e989da5786420e636363a9e1afc85a474cd1c1d..41e8e2800e459f69329b0670d19aa323b0eb258e 100644
--- a/include/wine/server_protocol.h
+++ b/include/wine/server_protocol.h
@@ -2052,7 +2052,9 @@ struct next_process_reply
     int          threads;
     int          priority;
     int          handles;
+    int          unix_pid;
     /* VARARG(filename,unicode_str); */
+    char __pad_36[4];
 };
 
 
@@ -5646,6 +5648,6 @@ union generic_reply
     struct set_suspend_context_reply set_suspend_context_reply;
 };
 
-#define SERVER_PROTOCOL_VERSION 431
+#define SERVER_PROTOCOL_VERSION 432
 
 #endif /* __WINE_WINE_SERVER_PROTOCOL_H */
diff --git a/server/process.c b/server/process.c
index de3b594d7c73a0387d8e9972270a9fe4fb3b7122..6a5f4b1b6b99b32d01d8a68fed301630a23fece3 100644
--- a/server/process.c
+++ b/server/process.c
@@ -847,6 +847,7 @@ struct process_snapshot *process_snap( int *count )
         ptr->count    = process->obj.refcount;
         ptr->priority = process->priority;
         ptr->handles  = get_handle_table_count(process);
+        ptr->unix_pid = process->unix_pid;
         grab_object( process );
         ptr++;
     }
diff --git a/server/process.h b/server/process.h
index 93ec6c7d5a0ecbd6388bcc5149fb541c58abb98c..976dd38488e766d48c24e6fbb443aaccd6669fa5 100644
--- a/server/process.h
+++ b/server/process.h
@@ -90,6 +90,7 @@ struct process_snapshot
     int             threads;  /* number of threads */
     int             priority; /* priority class */
     int             handles;  /* number of handles */
+    int             unix_pid; /* Unix pid */
 };
 
 #define CPU_FLAG(cpu) (1 << (cpu))
diff --git a/server/protocol.def b/server/protocol.def
index 80c0cd3e19d31507322e301e3bb7bf6618f3f871..31a3b0d40f66f5e8365d6987a9cdce697dba6471 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -1577,6 +1577,7 @@ enum char_info_mode
     int          threads;       /* number of threads */
     int          priority;      /* process priority */
     int          handles;       /* number of handles */
+    int          unix_pid;      /* Unix pid */
     VARARG(filename,unicode_str); /* file name of main exe */
 @END
 
diff --git a/server/request.h b/server/request.h
index 5b45cf97adbaf8a3b64095925cae0b670ed3daa3..8f9308546c72aa935cae4dcb7e6e93352d735b05 100644
--- a/server/request.h
+++ b/server/request.h
@@ -1161,7 +1161,8 @@ C_ASSERT( FIELD_OFFSET(struct next_process_reply, ppid) == 16 );
 C_ASSERT( FIELD_OFFSET(struct next_process_reply, threads) == 20 );
 C_ASSERT( FIELD_OFFSET(struct next_process_reply, priority) == 24 );
 C_ASSERT( FIELD_OFFSET(struct next_process_reply, handles) == 28 );
-C_ASSERT( sizeof(struct next_process_reply) == 32 );
+C_ASSERT( FIELD_OFFSET(struct next_process_reply, unix_pid) == 32 );
+C_ASSERT( sizeof(struct next_process_reply) == 40 );
 C_ASSERT( FIELD_OFFSET(struct next_thread_request, handle) == 12 );
 C_ASSERT( FIELD_OFFSET(struct next_thread_request, reset) == 16 );
 C_ASSERT( sizeof(struct next_thread_request) == 24 );
diff --git a/server/snapshot.c b/server/snapshot.c
index bc48922236dc16b4b10b077e0e5960a0596c8b11..dd00bd1418dee618c433a0e330216ee42d81cf31 100644
--- a/server/snapshot.c
+++ b/server/snapshot.c
@@ -117,6 +117,7 @@ static int snapshot_next_process( struct snapshot *snapshot, struct next_process
     reply->threads  = ptr->threads;
     reply->priority = ptr->priority;
     reply->handles  = ptr->handles;
+    reply->unix_pid = ptr->process->unix_pid;
     if ((exe_module = get_process_exe_module( ptr->process )) && exe_module->filename)
     {
         data_size_t len = min( exe_module->namelen, get_reply_max_size() );
diff --git a/server/trace.c b/server/trace.c
index cfef963ae9ecd84b8d6203ab25e83e2e5fdff7e6..4318a34857b148a88cf3b5fabe3e0ea6f040ddc6 100644
--- a/server/trace.c
+++ b/server/trace.c
@@ -1969,6 +1969,7 @@ static void dump_next_process_reply( const struct next_process_reply *req )
     fprintf( stderr, ", threads=%d", req->threads );
     fprintf( stderr, ", priority=%d", req->priority );
     fprintf( stderr, ", handles=%d", req->handles );
+    fprintf( stderr, ", unix_pid=%d", req->unix_pid );
     dump_varargs_unicode_str( ", filename=", cur_size );
 }