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 ); }