Transfer the full process startup info as well as the command-line
through the server.
diff --git a/server/trace.c b/server/trace.c
index 93a33af..a8844f1 100644
--- a/server/trace.c
+++ b/server/trace.c
@@ -269,6 +269,43 @@
remove_data( size );
}
+static void dump_varargs_startup_info( size_t size )
+{
+ const startup_info_t *ptr = cur_data;
+ startup_info_t info;
+
+ if (size < sizeof(info.size))
+ {
+ fprintf( stderr, "{}" );
+ return;
+ }
+ if (size > ptr->size) size = ptr->size;
+ memset( &info, 0, sizeof(info) );
+ memcpy( &info, ptr, min( size, sizeof(info) ));
+
+ fprintf( stderr, "{size=%d", info.size );
+ fprintf( stderr, ",x=%d", info.x );
+ fprintf( stderr, ",y=%d", info.y );
+ fprintf( stderr, ",cx=%d", info.cx );
+ fprintf( stderr, ",cy=%d", info.cy );
+ fprintf( stderr, ",x_chars=%d", info.x_chars );
+ fprintf( stderr, ",y_chars=%d", info.y_chars );
+ fprintf( stderr, ",attr=%d", info.attribute );
+ fprintf( stderr, ",cmd_show=%d", info.cmd_show );
+ fprintf( stderr, ",flags=%x", info.flags );
+ remove_data( size );
+ fprintf( stderr, ",filename=" );
+ /* FIXME: these should be unicode */
+ dump_varargs_string( min(cur_size,info.filename_len) );
+ fprintf( stderr, ",cmdline=" );
+ dump_varargs_string( min(cur_size,info.cmdline_len) );
+ fprintf( stderr, ",desktop=" );
+ dump_varargs_string( min(cur_size,info.desktop_len) );
+ fprintf( stderr, ",title=" );
+ dump_varargs_string( min(cur_size,info.title_len) );
+ fputc( '}', stderr );
+}
+
static void dump_varargs_input_records( size_t size )
{
const INPUT_RECORD *rec = cur_data;
@@ -310,15 +347,14 @@
static void dump_new_process_request( const struct new_process_request *req )
{
fprintf( stderr, " inherit_all=%d,", req->inherit_all );
+ fprintf( stderr, " use_handles=%d,", req->use_handles );
fprintf( stderr, " create_flags=%d,", req->create_flags );
- fprintf( stderr, " start_flags=%d,", req->start_flags );
fprintf( stderr, " exe_file=%d,", req->exe_file );
fprintf( stderr, " hstdin=%d,", req->hstdin );
fprintf( stderr, " hstdout=%d,", req->hstdout );
fprintf( stderr, " hstderr=%d,", req->hstderr );
- fprintf( stderr, " cmd_show=%d,", req->cmd_show );
- fprintf( stderr, " filename=" );
- dump_varargs_string( cur_size );
+ fprintf( stderr, " info=" );
+ dump_varargs_startup_info( cur_size );
}
static void dump_new_process_reply( const struct new_process_reply *req )
@@ -369,15 +405,25 @@
static void dump_init_process_reply( const struct init_process_reply *req )
{
fprintf( stderr, " create_flags=%d,", req->create_flags );
- fprintf( stderr, " start_flags=%d,", req->start_flags );
fprintf( stderr, " server_start=%08x,", req->server_start );
+ fprintf( stderr, " info=%d,", req->info );
+ fprintf( stderr, " info_size=%d,", req->info_size );
fprintf( stderr, " exe_file=%d,", req->exe_file );
fprintf( stderr, " hstdin=%d,", req->hstdin );
fprintf( stderr, " hstdout=%d,", req->hstdout );
- fprintf( stderr, " hstderr=%d,", req->hstderr );
- fprintf( stderr, " cmd_show=%d,", req->cmd_show );
- fprintf( stderr, " filename=" );
- dump_varargs_string( cur_size );
+ fprintf( stderr, " hstderr=%d", req->hstderr );
+}
+
+static void dump_get_startup_info_request( const struct get_startup_info_request *req )
+{
+ fprintf( stderr, " info=%d,", req->info );
+ fprintf( stderr, " close=%d", req->close );
+}
+
+static void dump_get_startup_info_reply( const struct get_startup_info_reply *req )
+{
+ fprintf( stderr, " info=" );
+ dump_varargs_startup_info( cur_size );
}
static void dump_init_process_done_request( const struct init_process_done_request *req )
@@ -2112,6 +2158,7 @@
(dump_func)dump_new_thread_request,
(dump_func)dump_boot_done_request,
(dump_func)dump_init_process_request,
+ (dump_func)dump_get_startup_info_request,
(dump_func)dump_init_process_done_request,
(dump_func)dump_init_thread_request,
(dump_func)dump_terminate_process_request,
@@ -2267,6 +2314,7 @@
(dump_func)dump_new_thread_reply,
(dump_func)0,
(dump_func)dump_init_process_reply,
+ (dump_func)dump_get_startup_info_reply,
(dump_func)dump_init_process_done_reply,
(dump_func)dump_init_thread_reply,
(dump_func)dump_terminate_process_reply,
@@ -2422,6 +2470,7 @@
"new_thread",
"boot_done",
"init_process",
+ "get_startup_info",
"init_process_done",
"init_thread",
"terminate_process",