diff --git a/dlls/kernel32/debugger.c b/dlls/kernel32/debugger.c index 78f282fa478..b50f0c3efb0 100644 --- a/dlls/kernel32/debugger.c +++ b/dlls/kernel32/debugger.c @@ -91,7 +91,7 @@ BOOL WINAPI WaitForDebugEvent( event->u.CreateProcessInfo.nDebugInfoSize = data.info.create_process.dbg_size; event->u.CreateProcessInfo.lpThreadLocalBase = data.info.create_process.teb; event->u.CreateProcessInfo.lpStartAddress = data.info.create_process.start; - event->u.CreateProcessInfo.lpImageName = data.info.create_process.name; + event->u.CreateProcessInfo.lpImageName = wine_server_get_ptr( data.info.create_process.name ); event->u.CreateProcessInfo.fUnicode = data.info.create_process.unicode; break; case EXIT_THREAD_DEBUG_EVENT: @@ -105,7 +105,7 @@ BOOL WINAPI WaitForDebugEvent( event->u.LoadDll.lpBaseOfDll = wine_server_get_ptr( data.info.load_dll.base ); event->u.LoadDll.dwDebugInfoFileOffset = data.info.load_dll.dbg_offset; event->u.LoadDll.nDebugInfoSize = data.info.load_dll.dbg_size; - event->u.LoadDll.lpImageName = data.info.load_dll.name; + event->u.LoadDll.lpImageName = wine_server_get_ptr( data.info.load_dll.name ); event->u.LoadDll.fUnicode = data.info.load_dll.unicode; break; case UNLOAD_DLL_DEBUG_EVENT: diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c index f07a9740ac2..560a932c1d1 100644 --- a/dlls/ntdll/loader.c +++ b/dlls/ntdll/loader.c @@ -1451,7 +1451,7 @@ static void load_builtin_callback( void *module, const char *filename ) req->size = nt->OptionalHeader.SizeOfImage; req->dbg_offset = nt->FileHeader.PointerToSymbolTable; req->dbg_size = nt->FileHeader.NumberOfSymbols; - req->name = &wm->ldr.FullDllName.Buffer; + req->name = wine_server_client_ptr( &wm->ldr.FullDllName.Buffer ); wine_server_add_data( req, wm->ldr.FullDllName.Buffer, wm->ldr.FullDllName.Length ); wine_server_call( req ); } @@ -1533,7 +1533,7 @@ static NTSTATUS load_native_dll( LPCWSTR load_path, LPCWSTR name, HANDLE file, req->size = nt->OptionalHeader.SizeOfImage; req->dbg_offset = nt->FileHeader.PointerToSymbolTable; req->dbg_size = nt->FileHeader.NumberOfSymbols; - req->name = &wm->ldr.FullDllName.Buffer; + req->name = wine_server_client_ptr( &wm->ldr.FullDllName.Buffer ); wine_server_add_data( req, wm->ldr.FullDllName.Buffer, wm->ldr.FullDllName.Length ); wine_server_call( req ); } diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h index 766cccec311..d538d80be62 100644 --- a/include/wine/server_protocol.h +++ b/include/wine/server_protocol.h @@ -75,7 +75,7 @@ struct debug_event_create_process int dbg_size; void *teb; void *start; - void *name; + client_ptr_t name; int unicode; }; struct debug_event_exit @@ -88,7 +88,7 @@ struct debug_event_load_dll mod_handle_t base; int dbg_offset; int dbg_size; - void *name; + client_ptr_t name; int unicode; }; struct debug_event_unload_dll @@ -723,7 +723,7 @@ struct load_dll_request struct request_header __header; obj_handle_t handle; mod_handle_t base; - void* name; + client_ptr_t name; data_size_t size; int dbg_offset; int dbg_size; @@ -5052,6 +5052,6 @@ union generic_reply struct set_window_layered_info_reply set_window_layered_info_reply; }; -#define SERVER_PROTOCOL_VERSION 356 +#define SERVER_PROTOCOL_VERSION 357 #endif /* __WINE_WINE_SERVER_PROTOCOL_H */ diff --git a/server/process.h b/server/process.h index 1f9895864e0..fa80818c1ac 100644 --- a/server/process.h +++ b/server/process.h @@ -38,7 +38,7 @@ struct process_dll struct list entry; /* entry in per-process dll list */ struct file *file; /* dll file */ mod_handle_t base; /* dll base address (in process addr space) */ - void *name; /* ptr to ptr to name (in process addr space) */ + client_ptr_t name; /* ptr to ptr to name (in process addr space) */ data_size_t size; /* dll size */ int dbg_offset; /* debug info offset */ int dbg_size; /* debug info size */ diff --git a/server/protocol.def b/server/protocol.def index c2478f14a61..69d59285481 100644 --- a/server/protocol.def +++ b/server/protocol.def @@ -91,7 +91,7 @@ struct debug_event_create_process int dbg_size; /* size of debug info */ void *teb; /* thread teb (in debugged process address space) */ void *start; /* thread startup routine */ - void *name; /* image name (optional) */ + client_ptr_t name; /* image name (optional) */ int unicode; /* is it Unicode? */ }; struct debug_event_exit @@ -104,7 +104,7 @@ struct debug_event_load_dll mod_handle_t base; /* base address of the dll */ int dbg_offset; /* offset of debug info in file */ int dbg_size; /* size of debug info */ - void *name; /* image name (optional) */ + client_ptr_t name; /* image name (optional) */ int unicode; /* is it Unicode? */ }; struct debug_event_unload_dll @@ -659,7 +659,7 @@ typedef union @REQ(load_dll) obj_handle_t handle; /* file handle */ mod_handle_t base; /* base address */ - void* name; /* ptr to ptr to name (in process addr space) */ + client_ptr_t name; /* ptr to ptr to name (in process addr space) */ data_size_t size; /* dll size */ int dbg_offset; /* debug info offset */ int dbg_size; /* debug info size */ diff --git a/server/trace.c b/server/trace.c index 8ca23f0779a..3cafe4a9429 100644 --- a/server/trace.c +++ b/server/trace.c @@ -459,10 +459,11 @@ static void dump_varargs_debug_event( data_size_t size ) event->info.create_process.file, event->info.create_process.process, event->info.create_process.thread ); dump_uint64( &event->info.create_process.base ); - fprintf( stderr, ",offset=%d,size=%d,teb=%p,start=%p,name=%p,unicode=%d}", + fprintf( stderr, ",offset=%d,size=%d,teb=%p,start=%p,name=", event->info.create_process.dbg_offset, event->info.create_process.dbg_size, - event->info.create_process.teb, event->info.create_process.start, - event->info.create_process.name, event->info.create_process.unicode ); + event->info.create_process.teb, event->info.create_process.start ); + dump_uint64( &event->info.create_process.name ); + fprintf( stderr, ",unicode=%d}", event->info.create_process.unicode ); break; case EXIT_THREAD_DEBUG_EVENT: fprintf( stderr, "{exit_thread,code=%d}", event->info.exit.exit_code ); @@ -473,9 +474,10 @@ static void dump_varargs_debug_event( data_size_t size ) case LOAD_DLL_DEBUG_EVENT: fprintf( stderr, "{load_dll,file=%04x,base", event->info.load_dll.handle ); dump_uint64( &event->info.load_dll.base ); - fprintf( stderr, ",offset=%d,size=%d,name=%p,unicode=%d}", - event->info.load_dll.dbg_offset, event->info.load_dll.dbg_size, - event->info.load_dll.name, event->info.load_dll.unicode ); + fprintf( stderr, ",offset=%d,size=%d,name=", + event->info.load_dll.dbg_offset, event->info.load_dll.dbg_size ); + dump_uint64( &event->info.load_dll.name ); + fprintf( stderr, ",unicode=%d}", event->info.load_dll.unicode ); break; case UNLOAD_DLL_DEBUG_EVENT: fputs( "{unload_dll,base=", stderr ); @@ -1071,7 +1073,9 @@ static void dump_load_dll_request( const struct load_dll_request *req ) fprintf( stderr, " base=" ); dump_uint64( &req->base ); fprintf( stderr, "," ); - fprintf( stderr, " name=%p,", req->name ); + fprintf( stderr, " name=" ); + dump_uint64( &req->name ); + fprintf( stderr, "," ); fprintf( stderr, " size=%u,", req->size ); fprintf( stderr, " dbg_offset=%d,", req->dbg_offset ); fprintf( stderr, " dbg_size=%d,", req->dbg_size ); diff --git a/tools/make_requests b/tools/make_requests index 82ffff02a76..eeec9344636 100755 --- a/tools/make_requests +++ b/tools/make_requests @@ -36,6 +36,7 @@ my %formats = "user_handle_t" => [ 4, 4, "%08x" ], "process_id_t" => [ 4, 4, "%04x" ], "thread_id_t" => [ 4, 4, "%04x" ], + "client_ptr_t" => [ 8, 8, "&dump_uint64" ], "mod_handle_t" => [ 8, 8, "&dump_uint64" ], "lparam_t" => [ 8, 8, "&dump_uint64" ], "apc_param_t" => [ 8, 8, "&dump_uint64" ],