server: Make module handles always 64-bit.

oldstable
Alexandre Julliard 2008-12-29 16:47:51 +01:00
parent cb2788efaf
commit f2c4e09e80
12 changed files with 92 additions and 55 deletions

View File

@ -86,7 +86,7 @@ BOOL WINAPI WaitForDebugEvent(
event->u.CreateProcessInfo.hFile = wine_server_ptr_handle( data.info.create_process.file ); event->u.CreateProcessInfo.hFile = wine_server_ptr_handle( data.info.create_process.file );
event->u.CreateProcessInfo.hProcess = wine_server_ptr_handle( data.info.create_process.process ); event->u.CreateProcessInfo.hProcess = wine_server_ptr_handle( data.info.create_process.process );
event->u.CreateProcessInfo.hThread = wine_server_ptr_handle( data.info.create_process.thread ); event->u.CreateProcessInfo.hThread = wine_server_ptr_handle( data.info.create_process.thread );
event->u.CreateProcessInfo.lpBaseOfImage = data.info.create_process.base; event->u.CreateProcessInfo.lpBaseOfImage = wine_server_get_ptr( data.info.create_process.base );
event->u.CreateProcessInfo.dwDebugInfoFileOffset = data.info.create_process.dbg_offset; event->u.CreateProcessInfo.dwDebugInfoFileOffset = data.info.create_process.dbg_offset;
event->u.CreateProcessInfo.nDebugInfoSize = data.info.create_process.dbg_size; event->u.CreateProcessInfo.nDebugInfoSize = data.info.create_process.dbg_size;
event->u.CreateProcessInfo.lpThreadLocalBase = data.info.create_process.teb; event->u.CreateProcessInfo.lpThreadLocalBase = data.info.create_process.teb;
@ -102,14 +102,14 @@ BOOL WINAPI WaitForDebugEvent(
break; break;
case LOAD_DLL_DEBUG_EVENT: case LOAD_DLL_DEBUG_EVENT:
event->u.LoadDll.hFile = wine_server_ptr_handle( data.info.load_dll.handle ); event->u.LoadDll.hFile = wine_server_ptr_handle( data.info.load_dll.handle );
event->u.LoadDll.lpBaseOfDll = data.info.load_dll.base; 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.dwDebugInfoFileOffset = data.info.load_dll.dbg_offset;
event->u.LoadDll.nDebugInfoSize = data.info.load_dll.dbg_size; event->u.LoadDll.nDebugInfoSize = data.info.load_dll.dbg_size;
event->u.LoadDll.lpImageName = data.info.load_dll.name; event->u.LoadDll.lpImageName = data.info.load_dll.name;
event->u.LoadDll.fUnicode = data.info.load_dll.unicode; event->u.LoadDll.fUnicode = data.info.load_dll.unicode;
break; break;
case UNLOAD_DLL_DEBUG_EVENT: case UNLOAD_DLL_DEBUG_EVENT:
event->u.UnloadDll.lpBaseOfDll = data.info.unload_dll.base; event->u.UnloadDll.lpBaseOfDll = wine_server_get_ptr( data.info.unload_dll.base );
break; break;
case OUTPUT_DEBUG_STRING_EVENT: case OUTPUT_DEBUG_STRING_EVENT:
event->u.DebugString.lpDebugStringData = data.info.output_string.string; event->u.DebugString.lpDebugStringData = data.info.output_string.string;

View File

@ -1447,7 +1447,7 @@ static void load_builtin_callback( void *module, const char *filename )
SERVER_START_REQ( load_dll ) SERVER_START_REQ( load_dll )
{ {
req->handle = 0; req->handle = 0;
req->base = module; req->base = wine_server_client_ptr( module );
req->size = nt->OptionalHeader.SizeOfImage; req->size = nt->OptionalHeader.SizeOfImage;
req->dbg_offset = nt->FileHeader.PointerToSymbolTable; req->dbg_offset = nt->FileHeader.PointerToSymbolTable;
req->dbg_size = nt->FileHeader.NumberOfSymbols; req->dbg_size = nt->FileHeader.NumberOfSymbols;
@ -1529,7 +1529,7 @@ static NTSTATUS load_native_dll( LPCWSTR load_path, LPCWSTR name, HANDLE file,
SERVER_START_REQ( load_dll ) SERVER_START_REQ( load_dll )
{ {
req->handle = wine_server_obj_handle( file ); req->handle = wine_server_obj_handle( file );
req->base = module; req->base = wine_server_client_ptr( module );
req->size = nt->OptionalHeader.SizeOfImage; req->size = nt->OptionalHeader.SizeOfImage;
req->dbg_offset = nt->FileHeader.PointerToSymbolTable; req->dbg_offset = nt->FileHeader.PointerToSymbolTable;
req->dbg_size = nt->FileHeader.NumberOfSymbols; req->dbg_size = nt->FileHeader.NumberOfSymbols;
@ -2264,7 +2264,7 @@ static void free_modref( WINE_MODREF *wm )
SERVER_START_REQ( unload_dll ) SERVER_START_REQ( unload_dll )
{ {
req->base = wm->ldr.BaseAddress; req->base = wine_server_client_ptr( wm->ldr.BaseAddress );
wine_server_call( req ); wine_server_call( req );
} }
SERVER_END_REQ; SERVER_END_REQ;

View File

@ -315,7 +315,7 @@ NTSTATUS WINAPI NtQueryInformationProcess(
UNICODE_STRING *image_file_name_str = ProcessInformation; UNICODE_STRING *image_file_name_str = ProcessInformation;
req->handle = wine_server_obj_handle( ProcessHandle ); req->handle = wine_server_obj_handle( ProcessHandle );
req->base_address = NULL; /* main module */ req->base_address = 0; /* main module */
wine_server_set_reply( req, image_file_name_str ? image_file_name_str + 1 : NULL, wine_server_set_reply( req, image_file_name_str ? image_file_name_str + 1 : NULL,
ProcessInformationLength > sizeof(UNICODE_STRING) ? ProcessInformationLength - sizeof(UNICODE_STRING) : 0 ); ProcessInformationLength > sizeof(UNICODE_STRING) ? ProcessInformationLength - sizeof(UNICODE_STRING) : 0 );
ret = wine_server_call( req ); ret = wine_server_call( req );

View File

@ -986,7 +986,7 @@ NTSTATUS server_init_process_done(void)
/* Signal the parent process to continue */ /* Signal the parent process to continue */
SERVER_START_REQ( init_process_done ) SERVER_START_REQ( init_process_done )
{ {
req->module = peb->ImageBaseAddress; req->module = wine_server_client_ptr( peb->ImageBaseAddress );
req->entry = (char *)peb->ImageBaseAddress + nt->OptionalHeader.AddressOfEntryPoint; req->entry = (char *)peb->ImageBaseAddress + nt->OptionalHeader.AddressOfEntryPoint;
req->gui = (nt->OptionalHeader.Subsystem != IMAGE_SUBSYSTEM_WINDOWS_CUI); req->gui = (nt->OptionalHeader.Subsystem != IMAGE_SUBSYSTEM_WINDOWS_CUI);
status = wine_server_call( req ); status = wine_server_call( req );

View File

@ -146,7 +146,7 @@ static BOOL set_server_info( HWND hwnd, INT offset, LONG_PTR newval, UINT size )
break; break;
case GCLP_HMODULE: case GCLP_HMODULE:
req->flags = SET_CLASS_INSTANCE; req->flags = SET_CLASS_INSTANCE;
req->instance = (void *)newval; req->instance = wine_server_client_ptr( (void *)newval );
break; break;
default: default:
assert( offset >= 0 ); assert( offset >= 0 );
@ -275,7 +275,7 @@ void CLASS_FreeModuleClasses( HMODULE16 hModule )
SERVER_START_REQ( destroy_class ) SERVER_START_REQ( destroy_class )
{ {
req->atom = class->atomName; req->atom = class->atomName;
req->instance = class->hInstance; req->instance = wine_server_client_ptr( class->hInstance );
ret = !wine_server_call_err( req ); ret = !wine_server_call_err( req );
} }
SERVER_END_REQ; SERVER_END_REQ;
@ -354,7 +354,7 @@ static CLASS *CLASS_RegisterClass( LPCWSTR name, HINSTANCE hInstance, BOOL local
{ {
req->local = local; req->local = local;
req->style = style; req->style = style;
req->instance = hInstance; req->instance = wine_server_client_ptr( hInstance );
req->extra = classExtra; req->extra = classExtra;
req->win_extra = winExtra; req->win_extra = winExtra;
req->client_ptr = classPtr; req->client_ptr = classPtr;
@ -625,7 +625,7 @@ BOOL WINAPI UnregisterClassW( LPCWSTR className, HINSTANCE hInstance )
SERVER_START_REQ( destroy_class ) SERVER_START_REQ( destroy_class )
{ {
req->instance = hInstance; req->instance = wine_server_client_ptr( hInstance );
if (!(req->atom = get_int_atom_value(className)) && className) if (!(req->atom = get_int_atom_value(className)) && className)
wine_server_add_data( req, className, strlenW(className) * sizeof(WCHAR) ); wine_server_add_data( req, className, strlenW(className) * sizeof(WCHAR) );
if (!wine_server_call_err( req )) classPtr = reply->client_ptr; if (!wine_server_call_err( req )) classPtr = reply->client_ptr;
@ -718,7 +718,7 @@ static ULONG_PTR CLASS_GetClassLong( HWND hwnd, INT offset, UINT size,
retvalue = reply->old_extra; retvalue = reply->old_extra;
break; break;
case GCLP_HMODULE: case GCLP_HMODULE:
retvalue = (ULONG_PTR)reply->old_instance; retvalue = (ULONG_PTR)wine_server_get_ptr( reply->old_instance );
break; break;
case GCW_ATOM: case GCW_ATOM:
retvalue = reply->old_atom; retvalue = reply->old_atom;

View File

@ -112,7 +112,7 @@ static WND *create_window_handle( HWND parent, HWND owner, LPCWSTR name,
{ {
req->parent = wine_server_user_handle( parent ); req->parent = wine_server_user_handle( parent );
req->owner = wine_server_user_handle( owner ); req->owner = wine_server_user_handle( owner );
req->instance = instance; req->instance = wine_server_client_ptr( instance );
if (!(req->atom = get_int_atom_value( name )) && name) if (!(req->atom = get_int_atom_value( name )) && name)
wine_server_add_data( req, name, strlenW(name)*sizeof(WCHAR) ); wine_server_add_data( req, name, strlenW(name)*sizeof(WCHAR) );
if (!wine_server_call_err( req )) if (!wine_server_call_err( req ))
@ -1119,7 +1119,7 @@ static HWND WIN_CreateWindowEx( CREATESTRUCTA *cs, LPCWSTR className, UINT flags
req->flags = SET_WIN_STYLE | SET_WIN_EXSTYLE | SET_WIN_INSTANCE | SET_WIN_UNICODE; req->flags = SET_WIN_STYLE | SET_WIN_EXSTYLE | SET_WIN_INSTANCE | SET_WIN_UNICODE;
req->style = wndPtr->dwStyle; req->style = wndPtr->dwStyle;
req->ex_style = wndPtr->dwExStyle; req->ex_style = wndPtr->dwExStyle;
req->instance = (void *)wndPtr->hInstance; req->instance = wine_server_client_ptr( wndPtr->hInstance );
req->is_unicode = (wndPtr->flags & WIN_ISUNICODE) != 0; req->is_unicode = (wndPtr->flags & WIN_ISUNICODE) != 0;
req->extra_offset = -1; req->extra_offset = -1;
wine_server_call( req ); wine_server_call( req );
@ -1885,7 +1885,7 @@ static LONG_PTR WIN_GetWindowLong( HWND hwnd, INT offset, UINT size, BOOL unicod
case GWL_STYLE: retvalue = reply->old_style; break; case GWL_STYLE: retvalue = reply->old_style; break;
case GWL_EXSTYLE: retvalue = reply->old_ex_style; break; case GWL_EXSTYLE: retvalue = reply->old_ex_style; break;
case GWLP_ID: retvalue = reply->old_id; break; case GWLP_ID: retvalue = reply->old_id; break;
case GWLP_HINSTANCE: retvalue = (ULONG_PTR)reply->old_instance; break; case GWLP_HINSTANCE: retvalue = (ULONG_PTR)wine_server_get_ptr( reply->old_instance ); break;
case GWLP_USERDATA: retvalue = reply->old_user_data; break; case GWLP_USERDATA: retvalue = reply->old_user_data; break;
default: default:
if (offset >= 0) retvalue = get_win_data( &reply->old_extra_value, size ); if (offset >= 0) retvalue = get_win_data( &reply->old_extra_value, size );
@ -2091,7 +2091,7 @@ LONG_PTR WIN_SetWindowLong( HWND hwnd, INT offset, UINT size, LONG_PTR newval, B
break; break;
case GWLP_HINSTANCE: case GWLP_HINSTANCE:
req->flags = SET_WIN_INSTANCE; req->flags = SET_WIN_INSTANCE;
req->instance = (void *)newval; req->instance = wine_server_client_ptr( (void *)newval );
break; break;
case GWLP_WNDPROC: case GWLP_WNDPROC:
req->flags = SET_WIN_UNICODE; req->flags = SET_WIN_UNICODE;
@ -2125,7 +2125,7 @@ LONG_PTR WIN_SetWindowLong( HWND hwnd, INT offset, UINT size, LONG_PTR newval, B
break; break;
case GWLP_HINSTANCE: case GWLP_HINSTANCE:
wndPtr->hInstance = (HINSTANCE)newval; wndPtr->hInstance = (HINSTANCE)newval;
retval = (ULONG_PTR)reply->old_instance; retval = (ULONG_PTR)wine_server_get_ptr( reply->old_instance );
break; break;
case GWLP_WNDPROC: case GWLP_WNDPROC:
break; break;

View File

@ -108,6 +108,18 @@ static inline HANDLE wine_server_ptr_handle( obj_handle_t handle )
return (HANDLE)(INT_PTR)(int)handle; return (HANDLE)(INT_PTR)(int)handle;
} }
/* convert a client pointer to a server client_ptr_t */
static inline client_ptr_t wine_server_client_ptr( const void *ptr )
{
return (client_ptr_t)(ULONG_PTR)ptr;
}
/* convert a server client_ptr_t to a real pointer */
static inline void *wine_server_get_ptr( client_ptr_t ptr )
{
return (void *)(ULONG_PTR)ptr;
}
/* macros for server requests */ /* macros for server requests */

View File

@ -26,7 +26,7 @@ typedef unsigned __int64 lparam_t;
typedef unsigned __int64 apc_param_t; typedef unsigned __int64 apc_param_t;
typedef unsigned __int64 mem_size_t; typedef unsigned __int64 mem_size_t;
typedef unsigned __int64 file_pos_t; typedef unsigned __int64 file_pos_t;
typedef void *client_ptr_t; typedef unsigned __int64 client_ptr_t;
typedef client_ptr_t mod_handle_t; typedef client_ptr_t mod_handle_t;
struct request_header struct request_header
@ -532,9 +532,9 @@ struct get_startup_info_reply
struct init_process_done_request struct init_process_done_request
{ {
struct request_header __header; struct request_header __header;
int gui;
mod_handle_t module; mod_handle_t module;
void* entry; void* entry;
int gui;
}; };
struct init_process_done_reply struct init_process_done_reply
{ {
@ -2848,7 +2848,7 @@ struct get_window_info_reply
process_id_t pid; process_id_t pid;
thread_id_t tid; thread_id_t tid;
atom_t atom; atom_t atom;
int is_unicode; short int is_unicode;
}; };
@ -2856,12 +2856,12 @@ struct get_window_info_reply
struct set_window_info_request struct set_window_info_request
{ {
struct request_header __header; struct request_header __header;
unsigned int flags; unsigned short flags;
short int is_unicode;
user_handle_t handle; user_handle_t handle;
unsigned int style; unsigned int style;
unsigned int ex_style; unsigned int ex_style;
unsigned int id; unsigned int id;
int is_unicode;
mod_handle_t instance; mod_handle_t instance;
lparam_t user_data; lparam_t user_data;
int extra_offset; int extra_offset;
@ -2873,10 +2873,10 @@ struct set_window_info_reply
struct reply_header __header; struct reply_header __header;
unsigned int old_style; unsigned int old_style;
unsigned int old_ex_style; unsigned int old_ex_style;
unsigned int old_id;
mod_handle_t old_instance; mod_handle_t old_instance;
lparam_t old_user_data; lparam_t old_user_data;
lparam_t old_extra_value; lparam_t old_extra_value;
unsigned int old_id;
}; };
#define SET_WIN_STYLE 0x01 #define SET_WIN_STYLE 0x01
#define SET_WIN_EXSTYLE 0x02 #define SET_WIN_EXSTYLE 0x02
@ -5052,6 +5052,6 @@ union generic_reply
struct set_window_layered_info_reply set_window_layered_info_reply; struct set_window_layered_info_reply set_window_layered_info_reply;
}; };
#define SERVER_PROTOCOL_VERSION 355 #define SERVER_PROTOCOL_VERSION 356
#endif /* __WINE_WINE_SERVER_PROTOCOL_H */ #endif /* __WINE_WINE_SERVER_PROTOCOL_H */

View File

@ -42,7 +42,7 @@ typedef unsigned __int64 lparam_t;
typedef unsigned __int64 apc_param_t; typedef unsigned __int64 apc_param_t;
typedef unsigned __int64 mem_size_t; typedef unsigned __int64 mem_size_t;
typedef unsigned __int64 file_pos_t; typedef unsigned __int64 file_pos_t;
typedef void *client_ptr_t; typedef unsigned __int64 client_ptr_t;
typedef client_ptr_t mod_handle_t; typedef client_ptr_t mod_handle_t;
struct request_header struct request_header
@ -526,9 +526,9 @@ typedef union
/* Signal the end of the process initialization */ /* Signal the end of the process initialization */
@REQ(init_process_done) @REQ(init_process_done)
int gui; /* is it a GUI process? */
mod_handle_t module; /* main module base address */ mod_handle_t module; /* main module base address */
void* entry; /* process entry point */ void* entry; /* process entry point */
int gui; /* is it a GUI process? */
@END @END
@ -2097,18 +2097,18 @@ enum message_type
process_id_t pid; /* process owning the window */ process_id_t pid; /* process owning the window */
thread_id_t tid; /* thread owning the window */ thread_id_t tid; /* thread owning the window */
atom_t atom; /* class atom */ atom_t atom; /* class atom */
int is_unicode; /* ANSI or unicode */ short int is_unicode; /* ANSI or unicode */
@END @END
/* Set some information in a window */ /* Set some information in a window */
@REQ(set_window_info) @REQ(set_window_info)
unsigned int flags; /* flags for fields to set (see below) */ unsigned short flags; /* flags for fields to set (see below) */
short int is_unicode; /* ANSI or unicode */
user_handle_t handle; /* handle to the window */ user_handle_t handle; /* handle to the window */
unsigned int style; /* window style */ unsigned int style; /* window style */
unsigned int ex_style; /* window extended style */ unsigned int ex_style; /* window extended style */
unsigned int id; /* window id */ unsigned int id; /* window id */
int is_unicode; /* ANSI or unicode */
mod_handle_t instance; /* creator instance */ mod_handle_t instance; /* creator instance */
lparam_t user_data; /* user-specific data */ lparam_t user_data; /* user-specific data */
int extra_offset; /* offset to set in extra bytes */ int extra_offset; /* offset to set in extra bytes */
@ -2117,10 +2117,10 @@ enum message_type
@REPLY @REPLY
unsigned int old_style; /* old window style */ unsigned int old_style; /* old window style */
unsigned int old_ex_style; /* old window extended style */ unsigned int old_ex_style; /* old window extended style */
unsigned int old_id; /* old window id */
mod_handle_t old_instance; /* old creator instance */ mod_handle_t old_instance; /* old creator instance */
lparam_t old_user_data; /* old user-specific data */ lparam_t old_user_data; /* old user-specific data */
lparam_t old_extra_value; /* old value in extra bytes */ lparam_t old_extra_value; /* old value in extra bytes */
unsigned int old_id; /* old window id */
@END @END
#define SET_WIN_STYLE 0x01 #define SET_WIN_STYLE 0x01
#define SET_WIN_EXSTYLE 0x02 #define SET_WIN_EXSTYLE 0x02

View File

@ -455,10 +455,11 @@ static void dump_varargs_debug_event( data_size_t size )
event->info.create_thread.start ); event->info.create_thread.start );
break; break;
case CREATE_PROCESS_DEBUG_EVENT: case CREATE_PROCESS_DEBUG_EVENT:
fprintf( stderr, "{create_process,file=%04x,process=%04x,thread=%04x,base=%p,offset=%d," fprintf( stderr, "{create_process,file=%04x,process=%04x,thread=%04x,base=",
"size=%d,teb=%p,start=%p,name=%p,unicode=%d}",
event->info.create_process.file, event->info.create_process.process, event->info.create_process.file, event->info.create_process.process,
event->info.create_process.thread, event->info.create_process.base, 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}",
event->info.create_process.dbg_offset, event->info.create_process.dbg_size, 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.teb, event->info.create_process.start,
event->info.create_process.name, event->info.create_process.unicode ); event->info.create_process.name, event->info.create_process.unicode );
@ -470,13 +471,16 @@ static void dump_varargs_debug_event( data_size_t size )
fprintf( stderr, "{exit_process,code=%d}", event->info.exit.exit_code ); fprintf( stderr, "{exit_process,code=%d}", event->info.exit.exit_code );
break; break;
case LOAD_DLL_DEBUG_EVENT: case LOAD_DLL_DEBUG_EVENT:
fprintf( stderr, "{load_dll,file=%04x,base=%p,offset=%d,size=%d,name=%p,unicode=%d}", fprintf( stderr, "{load_dll,file=%04x,base", event->info.load_dll.handle );
event->info.load_dll.handle, event->info.load_dll.base, 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.dbg_offset, event->info.load_dll.dbg_size,
event->info.load_dll.name, event->info.load_dll.unicode ); event->info.load_dll.name, event->info.load_dll.unicode );
break; break;
case UNLOAD_DLL_DEBUG_EVENT: case UNLOAD_DLL_DEBUG_EVENT:
fprintf( stderr, "{unload_dll,base=%p}", event->info.unload_dll.base ); fputs( "{unload_dll,base=", stderr );
dump_uint64( &event->info.unload_dll.base );
fputc( '}', stderr );
break; break;
case OUTPUT_DEBUG_STRING_EVENT: case OUTPUT_DEBUG_STRING_EVENT:
fprintf( stderr, "{output_string,data=%p,unicode=%d,len=%d}", fprintf( stderr, "{output_string,data=%p,unicode=%d,len=%d}",
@ -911,9 +915,11 @@ static void dump_get_startup_info_reply( const struct get_startup_info_reply *re
static void dump_init_process_done_request( const struct init_process_done_request *req ) static void dump_init_process_done_request( const struct init_process_done_request *req )
{ {
fprintf( stderr, " module=%p,", req->module ); fprintf( stderr, " gui=%d,", req->gui );
fprintf( stderr, " entry=%p,", req->entry ); fprintf( stderr, " module=" );
fprintf( stderr, " gui=%d", req->gui ); dump_uint64( &req->module );
fprintf( stderr, "," );
fprintf( stderr, " entry=%p", req->entry );
} }
static void dump_init_thread_request( const struct init_thread_request *req ) static void dump_init_thread_request( const struct init_thread_request *req )
@ -1026,7 +1032,8 @@ static void dump_set_thread_info_request( const struct set_thread_info_request *
static void dump_get_dll_info_request( const struct get_dll_info_request *req ) static void dump_get_dll_info_request( const struct get_dll_info_request *req )
{ {
fprintf( stderr, " handle=%04x,", req->handle ); fprintf( stderr, " handle=%04x,", req->handle );
fprintf( stderr, " base_address=%p", req->base_address ); fprintf( stderr, " base_address=" );
dump_uint64( &req->base_address );
} }
static void dump_get_dll_info_reply( const struct get_dll_info_reply *req ) static void dump_get_dll_info_reply( const struct get_dll_info_reply *req )
@ -1061,7 +1068,9 @@ static void dump_resume_thread_reply( const struct resume_thread_reply *req )
static void dump_load_dll_request( const struct load_dll_request *req ) static void dump_load_dll_request( const struct load_dll_request *req )
{ {
fprintf( stderr, " handle=%04x,", req->handle ); fprintf( stderr, " handle=%04x,", req->handle );
fprintf( stderr, " base=%p,", req->base ); fprintf( stderr, " base=" );
dump_uint64( &req->base );
fprintf( stderr, "," );
fprintf( stderr, " name=%p,", req->name ); fprintf( stderr, " name=%p,", req->name );
fprintf( stderr, " size=%u,", req->size ); fprintf( stderr, " size=%u,", req->size );
fprintf( stderr, " dbg_offset=%d,", req->dbg_offset ); fprintf( stderr, " dbg_offset=%d,", req->dbg_offset );
@ -1072,7 +1081,8 @@ static void dump_load_dll_request( const struct load_dll_request *req )
static void dump_unload_dll_request( const struct unload_dll_request *req ) static void dump_unload_dll_request( const struct unload_dll_request *req )
{ {
fprintf( stderr, " base=%p", req->base ); fprintf( stderr, " base=" );
dump_uint64( &req->base );
} }
static void dump_queue_apc_request( const struct queue_apc_request *req ) static void dump_queue_apc_request( const struct queue_apc_request *req )
@ -2591,7 +2601,9 @@ static void dump_create_window_request( const struct create_window_request *req
fprintf( stderr, " parent=%08x,", req->parent ); fprintf( stderr, " parent=%08x,", req->parent );
fprintf( stderr, " owner=%08x,", req->owner ); fprintf( stderr, " owner=%08x,", req->owner );
fprintf( stderr, " atom=%04x,", req->atom ); fprintf( stderr, " atom=%04x,", req->atom );
fprintf( stderr, " instance=%p,", req->instance ); fprintf( stderr, " instance=" );
dump_uint64( &req->instance );
fprintf( stderr, "," );
fprintf( stderr, " class=" ); fprintf( stderr, " class=" );
dump_varargs_unicode_str( cur_size ); dump_varargs_unicode_str( cur_size );
} }
@ -2650,13 +2662,15 @@ static void dump_get_window_info_reply( const struct get_window_info_reply *req
static void dump_set_window_info_request( const struct set_window_info_request *req ) static void dump_set_window_info_request( const struct set_window_info_request *req )
{ {
fprintf( stderr, " flags=%08x,", req->flags ); fprintf( stderr, " flags=%04x,", req->flags );
fprintf( stderr, " is_unicode=%d,", req->is_unicode );
fprintf( stderr, " handle=%08x,", req->handle ); fprintf( stderr, " handle=%08x,", req->handle );
fprintf( stderr, " style=%08x,", req->style ); fprintf( stderr, " style=%08x,", req->style );
fprintf( stderr, " ex_style=%08x,", req->ex_style ); fprintf( stderr, " ex_style=%08x,", req->ex_style );
fprintf( stderr, " id=%08x,", req->id ); fprintf( stderr, " id=%08x,", req->id );
fprintf( stderr, " is_unicode=%d,", req->is_unicode ); fprintf( stderr, " instance=" );
fprintf( stderr, " instance=%p,", req->instance ); dump_uint64( &req->instance );
fprintf( stderr, "," );
fprintf( stderr, " user_data=" ); fprintf( stderr, " user_data=" );
dump_uint64( &req->user_data ); dump_uint64( &req->user_data );
fprintf( stderr, "," ); fprintf( stderr, "," );
@ -2670,13 +2684,16 @@ static void dump_set_window_info_reply( const struct set_window_info_reply *req
{ {
fprintf( stderr, " old_style=%08x,", req->old_style ); fprintf( stderr, " old_style=%08x,", req->old_style );
fprintf( stderr, " old_ex_style=%08x,", req->old_ex_style ); fprintf( stderr, " old_ex_style=%08x,", req->old_ex_style );
fprintf( stderr, " old_id=%08x,", req->old_id ); fprintf( stderr, " old_instance=" );
fprintf( stderr, " old_instance=%p,", req->old_instance ); dump_uint64( &req->old_instance );
fprintf( stderr, "," );
fprintf( stderr, " old_user_data=" ); fprintf( stderr, " old_user_data=" );
dump_uint64( &req->old_user_data ); dump_uint64( &req->old_user_data );
fprintf( stderr, "," ); fprintf( stderr, "," );
fprintf( stderr, " old_extra_value=" ); fprintf( stderr, " old_extra_value=" );
dump_uint64( &req->old_extra_value ); dump_uint64( &req->old_extra_value );
fprintf( stderr, "," );
fprintf( stderr, " old_id=%08x", req->old_id );
} }
static void dump_set_parent_request( const struct set_parent_request *req ) static void dump_set_parent_request( const struct set_parent_request *req )
@ -3296,7 +3313,9 @@ static void dump_create_class_request( const struct create_class_request *req )
fprintf( stderr, " local=%d,", req->local ); fprintf( stderr, " local=%d,", req->local );
fprintf( stderr, " atom=%04x,", req->atom ); fprintf( stderr, " atom=%04x,", req->atom );
fprintf( stderr, " style=%08x,", req->style ); fprintf( stderr, " style=%08x,", req->style );
fprintf( stderr, " instance=%p,", req->instance ); fprintf( stderr, " instance=" );
dump_uint64( &req->instance );
fprintf( stderr, "," );
fprintf( stderr, " extra=%d,", req->extra ); fprintf( stderr, " extra=%d,", req->extra );
fprintf( stderr, " win_extra=%d,", req->win_extra ); fprintf( stderr, " win_extra=%d,", req->win_extra );
fprintf( stderr, " client_ptr=%p,", req->client_ptr ); fprintf( stderr, " client_ptr=%p,", req->client_ptr );
@ -3312,7 +3331,9 @@ static void dump_create_class_reply( const struct create_class_reply *req )
static void dump_destroy_class_request( const struct destroy_class_request *req ) static void dump_destroy_class_request( const struct destroy_class_request *req )
{ {
fprintf( stderr, " atom=%04x,", req->atom ); fprintf( stderr, " atom=%04x,", req->atom );
fprintf( stderr, " instance=%p,", req->instance ); fprintf( stderr, " instance=" );
dump_uint64( &req->instance );
fprintf( stderr, "," );
fprintf( stderr, " name=" ); fprintf( stderr, " name=" );
dump_varargs_unicode_str( cur_size ); dump_varargs_unicode_str( cur_size );
} }
@ -3329,7 +3350,9 @@ static void dump_set_class_info_request( const struct set_class_info_request *re
fprintf( stderr, " atom=%04x,", req->atom ); fprintf( stderr, " atom=%04x,", req->atom );
fprintf( stderr, " style=%08x,", req->style ); fprintf( stderr, " style=%08x,", req->style );
fprintf( stderr, " win_extra=%d,", req->win_extra ); fprintf( stderr, " win_extra=%d,", req->win_extra );
fprintf( stderr, " instance=%p,", req->instance ); fprintf( stderr, " instance=" );
dump_uint64( &req->instance );
fprintf( stderr, "," );
fprintf( stderr, " extra_offset=%d,", req->extra_offset ); fprintf( stderr, " extra_offset=%d,", req->extra_offset );
fprintf( stderr, " extra_size=%u,", req->extra_size ); fprintf( stderr, " extra_size=%u,", req->extra_size );
fprintf( stderr, " extra_value=" ); fprintf( stderr, " extra_value=" );
@ -3342,7 +3365,9 @@ static void dump_set_class_info_reply( const struct set_class_info_reply *req )
fprintf( stderr, " old_style=%08x,", req->old_style ); fprintf( stderr, " old_style=%08x,", req->old_style );
fprintf( stderr, " old_extra=%d,", req->old_extra ); fprintf( stderr, " old_extra=%d,", req->old_extra );
fprintf( stderr, " old_win_extra=%d,", req->old_win_extra ); fprintf( stderr, " old_win_extra=%d,", req->old_win_extra );
fprintf( stderr, " old_instance=%p,", req->old_instance ); fprintf( stderr, " old_instance=" );
dump_uint64( &req->old_instance );
fprintf( stderr, "," );
fprintf( stderr, " old_extra_value=" ); fprintf( stderr, " old_extra_value=" );
dump_uint64( &req->old_extra_value ); dump_uint64( &req->old_extra_value );
} }

View File

@ -480,7 +480,7 @@ static struct window *create_window( struct window *parent, struct window *owner
win->style = 0; win->style = 0;
win->ex_style = 0; win->ex_style = 0;
win->id = 0; win->id = 0;
win->instance = NULL; win->instance = 0;
win->is_unicode = 1; win->is_unicode = 1;
win->is_linked = 0; win->is_linked = 0;
win->is_layered = 0; win->is_layered = 0;

View File

@ -36,7 +36,7 @@ my %formats =
"user_handle_t" => [ 4, 4, "%08x" ], "user_handle_t" => [ 4, 4, "%08x" ],
"process_id_t" => [ 4, 4, "%04x" ], "process_id_t" => [ 4, 4, "%04x" ],
"thread_id_t" => [ 4, 4, "%04x" ], "thread_id_t" => [ 4, 4, "%04x" ],
"mod_handle_t" => [ 4, 4, "%p" ], "mod_handle_t" => [ 8, 8, "&dump_uint64" ],
"lparam_t" => [ 8, 8, "&dump_uint64" ], "lparam_t" => [ 8, 8, "&dump_uint64" ],
"apc_param_t" => [ 8, 8, "&dump_uint64" ], "apc_param_t" => [ 8, 8, "&dump_uint64" ],
"file_pos_t" => [ 8, 8, "&dump_uint64" ], "file_pos_t" => [ 8, 8, "&dump_uint64" ],