server: Make the address parameters in inter-process virtual memory calls client_ptr_t.
Add explicit padding fields in the corresponding structures.
diff --git a/dlls/ntdll/sync.c b/dlls/ntdll/sync.c
index d38d510..86a80bd 100644
--- a/dlls/ntdll/sync.c
+++ b/dlls/ntdll/sync.c
@@ -844,6 +844,7 @@
{
BOOL user_apc = FALSE;
SIZE_T size;
+ void *addr;
memset( result, 0, sizeof(*result) );
@@ -872,29 +873,28 @@
break;
case APC_VIRTUAL_ALLOC:
result->type = call->type;
- result->virtual_alloc.addr = call->virtual_alloc.addr;
+ addr = wine_server_get_ptr( call->virtual_alloc.addr );
size = call->virtual_alloc.size;
- if (size == call->virtual_alloc.size) /* not truncated */
+ if ((ULONG_PTR)addr == call->virtual_alloc.addr && size == call->virtual_alloc.size)
{
- result->virtual_alloc.status = NtAllocateVirtualMemory( NtCurrentProcess(),
- &result->virtual_alloc.addr,
- call->virtual_alloc.zero_bits,
- &size,
+ result->virtual_alloc.status = NtAllocateVirtualMemory( NtCurrentProcess(), &addr,
+ call->virtual_alloc.zero_bits, &size,
call->virtual_alloc.op_type,
call->virtual_alloc.prot );
+ result->virtual_alloc.addr = wine_server_client_ptr( addr );
result->virtual_alloc.size = size;
}
else result->virtual_alloc.status = STATUS_WORKING_SET_LIMIT_RANGE;
break;
case APC_VIRTUAL_FREE:
result->type = call->type;
- result->virtual_free.addr = call->virtual_free.addr;
+ addr = wine_server_get_ptr( call->virtual_free.addr );
size = call->virtual_free.size;
- if (size == call->virtual_free.size) /* not truncated */
+ if ((ULONG_PTR)addr == call->virtual_free.addr && size == call->virtual_free.size)
{
- result->virtual_free.status = NtFreeVirtualMemory( NtCurrentProcess(),
- &result->virtual_free.addr, &size,
+ result->virtual_free.status = NtFreeVirtualMemory( NtCurrentProcess(), &addr, &size,
call->virtual_free.op_type );
+ result->virtual_free.addr = wine_server_client_ptr( addr );
result->virtual_free.size = size;
}
else result->virtual_free.status = STATUS_INVALID_PARAMETER;
@@ -903,14 +903,18 @@
{
MEMORY_BASIC_INFORMATION info;
result->type = call->type;
- result->virtual_query.status = NtQueryVirtualMemory( NtCurrentProcess(),
- call->virtual_query.addr,
- MemoryBasicInformation, &info,
- sizeof(info), NULL );
+ addr = wine_server_get_ptr( call->virtual_query.addr );
+ if ((ULONG_PTR)addr == call->virtual_query.addr)
+ result->virtual_query.status = NtQueryVirtualMemory( NtCurrentProcess(),
+ addr, MemoryBasicInformation, &info,
+ sizeof(info), NULL );
+ else
+ result->virtual_query.status = STATUS_WORKING_SET_LIMIT_RANGE;
+
if (result->virtual_query.status == STATUS_SUCCESS)
{
- result->virtual_query.base = info.BaseAddress;
- result->virtual_query.alloc_base = info.AllocationBase;
+ result->virtual_query.base = wine_server_client_ptr( info.BaseAddress );
+ result->virtual_query.alloc_base = wine_server_client_ptr( info.AllocationBase );
result->virtual_query.size = info.RegionSize;
result->virtual_query.state = info.State;
result->virtual_query.prot = info.Protect;
@@ -921,78 +925,81 @@
}
case APC_VIRTUAL_PROTECT:
result->type = call->type;
- result->virtual_protect.addr = call->virtual_protect.addr;
+ addr = wine_server_get_ptr( call->virtual_protect.addr );
size = call->virtual_protect.size;
- if (size == call->virtual_protect.size) /* not truncated */
+ if ((ULONG_PTR)addr == call->virtual_protect.addr && size == call->virtual_protect.size)
{
- result->virtual_protect.status = NtProtectVirtualMemory( NtCurrentProcess(),
- &result->virtual_protect.addr,
- &size,
+ result->virtual_protect.status = NtProtectVirtualMemory( NtCurrentProcess(), &addr, &size,
call->virtual_protect.prot,
&result->virtual_protect.prot );
+ result->virtual_protect.addr = wine_server_client_ptr( addr );
result->virtual_protect.size = size;
}
else result->virtual_protect.status = STATUS_INVALID_PARAMETER;
break;
case APC_VIRTUAL_FLUSH:
result->type = call->type;
- result->virtual_flush.addr = call->virtual_flush.addr;
+ addr = wine_server_get_ptr( call->virtual_flush.addr );
size = call->virtual_flush.size;
- if (size == call->virtual_flush.size) /* not truncated */
+ if ((ULONG_PTR)addr == call->virtual_flush.addr && size == call->virtual_flush.size)
{
result->virtual_flush.status = NtFlushVirtualMemory( NtCurrentProcess(),
- &result->virtual_flush.addr, &size, 0 );
+ (const void **)&addr, &size, 0 );
+ result->virtual_flush.addr = wine_server_client_ptr( addr );
result->virtual_flush.size = size;
}
else result->virtual_flush.status = STATUS_INVALID_PARAMETER;
break;
case APC_VIRTUAL_LOCK:
result->type = call->type;
- result->virtual_lock.addr = call->virtual_lock.addr;
+ addr = wine_server_get_ptr( call->virtual_lock.addr );
size = call->virtual_lock.size;
- if (size == call->virtual_lock.size) /* not truncated */
+ if ((ULONG_PTR)addr == call->virtual_lock.addr && size == call->virtual_lock.size)
{
- result->virtual_lock.status = NtLockVirtualMemory( NtCurrentProcess(),
- &result->virtual_lock.addr, &size, 0 );
+ result->virtual_lock.status = NtLockVirtualMemory( NtCurrentProcess(), &addr, &size, 0 );
+ result->virtual_lock.addr = wine_server_client_ptr( addr );
result->virtual_lock.size = size;
}
else result->virtual_lock.status = STATUS_INVALID_PARAMETER;
break;
case APC_VIRTUAL_UNLOCK:
result->type = call->type;
- result->virtual_unlock.addr = call->virtual_unlock.addr;
+ addr = wine_server_get_ptr( call->virtual_unlock.addr );
size = call->virtual_unlock.size;
- if (size == call->virtual_unlock.size) /* not truncated */
+ if ((ULONG_PTR)addr == call->virtual_unlock.addr && size == call->virtual_unlock.size)
{
- result->virtual_unlock.status = NtUnlockVirtualMemory( NtCurrentProcess(),
- &result->virtual_unlock.addr, &size, 0 );
+ result->virtual_unlock.status = NtUnlockVirtualMemory( NtCurrentProcess(), &addr, &size, 0 );
+ result->virtual_unlock.addr = wine_server_client_ptr( addr );
result->virtual_unlock.size = size;
}
else result->virtual_unlock.status = STATUS_INVALID_PARAMETER;
break;
case APC_MAP_VIEW:
- {
- LARGE_INTEGER offset;
result->type = call->type;
- result->map_view.addr = call->map_view.addr;
- offset.QuadPart = call->map_view.offset;
+ addr = wine_server_get_ptr( call->map_view.addr );
size = call->map_view.size;
- if (size == call->map_view.size) /* not truncated */
+ if ((ULONG_PTR)addr == call->map_view.addr && size == call->map_view.size)
{
+ LARGE_INTEGER offset;
+ offset.QuadPart = call->map_view.offset;
result->map_view.status = NtMapViewOfSection( wine_server_ptr_handle(call->map_view.handle),
- NtCurrentProcess(), &result->map_view.addr,
+ NtCurrentProcess(), &addr,
call->map_view.zero_bits, 0,
&offset, &size, ViewShare,
call->map_view.alloc_type, call->map_view.prot );
- result->map_view.size = size;
+ result->map_view.addr = wine_server_client_ptr( addr );
+ result->map_view.size = size;
}
else result->map_view.status = STATUS_INVALID_PARAMETER;
NtClose( wine_server_ptr_handle(call->map_view.handle) );
break;
- }
case APC_UNMAP_VIEW:
result->type = call->type;
- result->unmap_view.status = NtUnmapViewOfSection( NtCurrentProcess(), call->unmap_view.addr );
+ addr = wine_server_get_ptr( call->unmap_view.addr );
+ if ((ULONG_PTR)addr == call->unmap_view.addr)
+ result->unmap_view.status = NtUnmapViewOfSection( NtCurrentProcess(), addr );
+ else
+ result->unmap_view.status = STATUS_INVALID_PARAMETER;
break;
case APC_CREATE_THREAD:
{
diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c
index 7d57af9..f804eba 100644
--- a/dlls/ntdll/virtual.c
+++ b/dlls/ntdll/virtual.c
@@ -1611,7 +1611,7 @@
memset( &call, 0, sizeof(call) );
call.virtual_alloc.type = APC_VIRTUAL_ALLOC;
- call.virtual_alloc.addr = *ret;
+ call.virtual_alloc.addr = wine_server_client_ptr( *ret );
call.virtual_alloc.size = *size_ptr;
call.virtual_alloc.zero_bits = zero_bits;
call.virtual_alloc.op_type = type;
@@ -1621,7 +1621,7 @@
if (result.virtual_alloc.status == STATUS_SUCCESS)
{
- *ret = result.virtual_alloc.addr;
+ *ret = wine_server_get_ptr( result.virtual_alloc.addr );
*size_ptr = result.virtual_alloc.size;
}
return result.virtual_alloc.status;
@@ -1739,7 +1739,7 @@
memset( &call, 0, sizeof(call) );
call.virtual_free.type = APC_VIRTUAL_FREE;
- call.virtual_free.addr = addr;
+ call.virtual_free.addr = wine_server_client_ptr( addr );
call.virtual_free.size = size;
call.virtual_free.op_type = type;
status = NTDLL_queue_process_apc( process, &call, &result );
@@ -1747,7 +1747,7 @@
if (result.virtual_free.status == STATUS_SUCCESS)
{
- *addr_ptr = result.virtual_free.addr;
+ *addr_ptr = wine_server_get_ptr( result.virtual_free.addr );
*size_ptr = result.virtual_free.size;
}
return result.virtual_free.status;
@@ -1825,7 +1825,7 @@
memset( &call, 0, sizeof(call) );
call.virtual_protect.type = APC_VIRTUAL_PROTECT;
- call.virtual_protect.addr = addr;
+ call.virtual_protect.addr = wine_server_client_ptr( addr );
call.virtual_protect.size = size;
call.virtual_protect.prot = new_prot;
status = NTDLL_queue_process_apc( process, &call, &result );
@@ -1833,7 +1833,7 @@
if (result.virtual_protect.status == STATUS_SUCCESS)
{
- *addr_ptr = result.virtual_protect.addr;
+ *addr_ptr = wine_server_get_ptr( result.virtual_protect.addr );
*size_ptr = result.virtual_protect.size;
if (old_prot) *old_prot = result.virtual_protect.prot;
}
@@ -1954,14 +1954,14 @@
memset( &call, 0, sizeof(call) );
call.virtual_query.type = APC_VIRTUAL_QUERY;
- call.virtual_query.addr = addr;
+ call.virtual_query.addr = wine_server_client_ptr( addr );
status = NTDLL_queue_process_apc( process, &call, &result );
if (status != STATUS_SUCCESS) return status;
if (result.virtual_query.status == STATUS_SUCCESS)
{
- info->BaseAddress = result.virtual_query.base;
- info->AllocationBase = result.virtual_query.alloc_base;
+ info->BaseAddress = wine_server_get_ptr( result.virtual_query.base );
+ info->AllocationBase = wine_server_get_ptr( result.virtual_query.alloc_base );
info->RegionSize = result.virtual_query.size;
info->State = result.virtual_query.state;
info->Protect = result.virtual_query.prot;
@@ -2063,14 +2063,14 @@
memset( &call, 0, sizeof(call) );
call.virtual_lock.type = APC_VIRTUAL_LOCK;
- call.virtual_lock.addr = *addr;
+ call.virtual_lock.addr = wine_server_client_ptr( *addr );
call.virtual_lock.size = *size;
status = NTDLL_queue_process_apc( process, &call, &result );
if (status != STATUS_SUCCESS) return status;
if (result.virtual_lock.status == STATUS_SUCCESS)
{
- *addr = result.virtual_lock.addr;
+ *addr = wine_server_get_ptr( result.virtual_lock.addr );
*size = result.virtual_lock.size;
}
return result.virtual_lock.status;
@@ -2100,14 +2100,14 @@
memset( &call, 0, sizeof(call) );
call.virtual_unlock.type = APC_VIRTUAL_UNLOCK;
- call.virtual_unlock.addr = *addr;
+ call.virtual_unlock.addr = wine_server_client_ptr( *addr );
call.virtual_unlock.size = *size;
status = NTDLL_queue_process_apc( process, &call, &result );
if (status != STATUS_SUCCESS) return status;
if (result.virtual_unlock.status == STATUS_SUCCESS)
{
- *addr = result.virtual_unlock.addr;
+ *addr = wine_server_get_ptr( result.virtual_unlock.addr );
*size = result.virtual_unlock.size;
}
return result.virtual_unlock.status;
@@ -2242,7 +2242,7 @@
call.map_view.type = APC_MAP_VIEW;
call.map_view.handle = wine_server_obj_handle( handle );
- call.map_view.addr = *addr_ptr;
+ call.map_view.addr = wine_server_client_ptr( *addr_ptr );
call.map_view.size = *size_ptr;
call.map_view.offset = offset.QuadPart;
call.map_view.zero_bits = zero_bits;
@@ -2253,7 +2253,7 @@
if (result.map_view.status == STATUS_SUCCESS)
{
- *addr_ptr = result.map_view.addr;
+ *addr_ptr = wine_server_get_ptr( result.map_view.addr );
*size_ptr = result.map_view.size;
}
return result.map_view.status;
@@ -2398,7 +2398,7 @@
memset( &call, 0, sizeof(call) );
call.unmap_view.type = APC_UNMAP_VIEW;
- call.unmap_view.addr = addr;
+ call.unmap_view.addr = wine_server_client_ptr( addr );
status = NTDLL_queue_process_apc( process, &call, &result );
if (status == STATUS_SUCCESS) status = result.unmap_view.status;
return status;
@@ -2435,14 +2435,14 @@
memset( &call, 0, sizeof(call) );
call.virtual_flush.type = APC_VIRTUAL_FLUSH;
- call.virtual_flush.addr = addr;
+ call.virtual_flush.addr = wine_server_client_ptr( addr );
call.virtual_flush.size = *size_ptr;
status = NTDLL_queue_process_apc( process, &call, &result );
if (status != STATUS_SUCCESS) return status;
if (result.virtual_flush.status == STATUS_SUCCESS)
{
- *addr_ptr = result.virtual_flush.addr;
+ *addr_ptr = wine_server_get_ptr( result.virtual_flush.addr );
*size_ptr = result.virtual_flush.size;
}
return result.virtual_flush.status;
diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h
index 434d52a..1845692 100644
--- a/include/wine/server_protocol.h
+++ b/include/wine/server_protocol.h
@@ -278,6 +278,7 @@
struct
{
enum apc_type type;
+ int __pad;
client_ptr_t func;
timeout_t time;
client_ptr_t arg;
@@ -293,54 +294,58 @@
struct
{
enum apc_type type;
- void *addr;
+ unsigned int op_type;
+ client_ptr_t addr;
mem_size_t size;
unsigned int zero_bits;
- unsigned int op_type;
unsigned int prot;
} virtual_alloc;
struct
{
enum apc_type type;
- void *addr;
- mem_size_t size;
unsigned int op_type;
+ client_ptr_t addr;
+ mem_size_t size;
} virtual_free;
struct
{
enum apc_type type;
- const void *addr;
+ int __pad;
+ client_ptr_t addr;
} virtual_query;
struct
{
enum apc_type type;
- void *addr;
- mem_size_t size;
unsigned int prot;
+ client_ptr_t addr;
+ mem_size_t size;
} virtual_protect;
struct
{
enum apc_type type;
- const void *addr;
+ int __pad;
+ client_ptr_t addr;
mem_size_t size;
} virtual_flush;
struct
{
enum apc_type type;
- void *addr;
+ int __pad;
+ client_ptr_t addr;
mem_size_t size;
} virtual_lock;
struct
{
enum apc_type type;
- void *addr;
+ int __pad;
+ client_ptr_t addr;
mem_size_t size;
} virtual_unlock;
struct
{
enum apc_type type;
obj_handle_t handle;
- void *addr;
+ client_ptr_t addr;
mem_size_t size;
file_pos_t offset;
unsigned int zero_bits;
@@ -350,7 +355,8 @@
struct
{
enum apc_type type;
- void *addr;
+ int __pad;
+ client_ptr_t addr;
} unmap_view;
struct
{
@@ -376,22 +382,22 @@
{
enum apc_type type;
unsigned int status;
- void *addr;
+ client_ptr_t addr;
mem_size_t size;
} virtual_alloc;
struct
{
enum apc_type type;
unsigned int status;
- void *addr;
+ client_ptr_t addr;
mem_size_t size;
} virtual_free;
struct
{
enum apc_type type;
unsigned int status;
- void *base;
- void *alloc_base;
+ client_ptr_t base;
+ client_ptr_t alloc_base;
mem_size_t size;
unsigned int state;
unsigned int prot;
@@ -402,7 +408,7 @@
{
enum apc_type type;
unsigned int status;
- void *addr;
+ client_ptr_t addr;
mem_size_t size;
unsigned int prot;
} virtual_protect;
@@ -410,28 +416,28 @@
{
enum apc_type type;
unsigned int status;
- const void *addr;
+ client_ptr_t addr;
mem_size_t size;
} virtual_flush;
struct
{
enum apc_type type;
unsigned int status;
- void *addr;
+ client_ptr_t addr;
mem_size_t size;
} virtual_lock;
struct
{
enum apc_type type;
unsigned int status;
- void *addr;
+ client_ptr_t addr;
mem_size_t size;
} virtual_unlock;
struct
{
enum apc_type type;
unsigned int status;
- void *addr;
+ client_ptr_t addr;
mem_size_t size;
} map_view;
struct
@@ -870,9 +876,9 @@
struct select_reply
{
struct reply_header __header;
- obj_handle_t apc_handle;
timeout_t timeout;
apc_call_t call;
+ obj_handle_t apc_handle;
};
#define SELECT_ALL 1
#define SELECT_ALERTABLE 2
@@ -5052,6 +5058,6 @@
struct set_window_layered_info_reply set_window_layered_info_reply;
};
-#define SERVER_PROTOCOL_VERSION 366
+#define SERVER_PROTOCOL_VERSION 367
#endif /* __WINE_WINE_SERVER_PROTOCOL_H */
diff --git a/server/protocol.def b/server/protocol.def
index 25dc626..e51c24c 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -294,6 +294,7 @@
struct
{
enum apc_type type; /* APC_TIMER */
+ int __pad;
client_ptr_t func; /* void (__stdcall *func)(void*, unsigned int, unsigned int); */
timeout_t time; /* absolute time of expiration */
client_ptr_t arg; /* user argument */
@@ -309,54 +310,58 @@
struct
{
enum apc_type type; /* APC_VIRTUAL_ALLOC */
- void *addr; /* requested address */
+ unsigned int op_type; /* type of operation */
+ client_ptr_t addr; /* requested address */
mem_size_t size; /* allocation size */
unsigned int zero_bits; /* allocation alignment */
- unsigned int op_type; /* type of operation */
unsigned int prot; /* memory protection flags */
} virtual_alloc;
struct
{
enum apc_type type; /* APC_VIRTUAL_FREE */
- void *addr; /* requested address */
- mem_size_t size; /* allocation size */
unsigned int op_type; /* type of operation */
+ client_ptr_t addr; /* requested address */
+ mem_size_t size; /* allocation size */
} virtual_free;
struct
{
enum apc_type type; /* APC_VIRTUAL_QUERY */
- const void *addr; /* requested address */
+ int __pad;
+ client_ptr_t addr; /* requested address */
} virtual_query;
struct
{
enum apc_type type; /* APC_VIRTUAL_PROTECT */
- void *addr; /* requested address */
- mem_size_t size; /* requested size */
unsigned int prot; /* new protection flags */
+ client_ptr_t addr; /* requested address */
+ mem_size_t size; /* requested size */
} virtual_protect;
struct
{
enum apc_type type; /* APC_VIRTUAL_FLUSH */
- const void *addr; /* requested address */
+ int __pad;
+ client_ptr_t addr; /* requested address */
mem_size_t size; /* requested size */
} virtual_flush;
struct
{
enum apc_type type; /* APC_VIRTUAL_LOCK */
- void *addr; /* requested address */
+ int __pad;
+ client_ptr_t addr; /* requested address */
mem_size_t size; /* requested size */
} virtual_lock;
struct
{
enum apc_type type; /* APC_VIRTUAL_UNLOCK */
- void *addr; /* requested address */
+ int __pad;
+ client_ptr_t addr; /* requested address */
mem_size_t size; /* requested size */
} virtual_unlock;
struct
{
enum apc_type type; /* APC_MAP_VIEW */
obj_handle_t handle; /* mapping handle */
- void *addr; /* requested address */
+ client_ptr_t addr; /* requested address */
mem_size_t size; /* allocation size */
file_pos_t offset; /* file offset */
unsigned int zero_bits; /* allocation alignment */
@@ -366,7 +371,8 @@
struct
{
enum apc_type type; /* APC_UNMAP_VIEW */
- void *addr; /* view address */
+ int __pad;
+ client_ptr_t addr; /* view address */
} unmap_view;
struct
{
@@ -392,22 +398,22 @@
{
enum apc_type type; /* APC_VIRTUAL_ALLOC */
unsigned int status; /* status returned by call */
- void *addr; /* resulting address */
+ client_ptr_t addr; /* resulting address */
mem_size_t size; /* resulting size */
} virtual_alloc;
struct
{
enum apc_type type; /* APC_VIRTUAL_FREE */
unsigned int status; /* status returned by call */
- void *addr; /* resulting address */
+ client_ptr_t addr; /* resulting address */
mem_size_t size; /* resulting size */
} virtual_free;
struct
{
enum apc_type type; /* APC_VIRTUAL_QUERY */
unsigned int status; /* status returned by call */
- void *base; /* resulting base address */
- void *alloc_base;/* resulting allocation base */
+ client_ptr_t base; /* resulting base address */
+ client_ptr_t alloc_base;/* resulting allocation base */
mem_size_t size; /* resulting region size */
unsigned int state; /* resulting region state */
unsigned int prot; /* resulting region protection */
@@ -418,7 +424,7 @@
{
enum apc_type type; /* APC_VIRTUAL_PROTECT */
unsigned int status; /* status returned by call */
- void *addr; /* resulting address */
+ client_ptr_t addr; /* resulting address */
mem_size_t size; /* resulting size */
unsigned int prot; /* old protection flags */
} virtual_protect;
@@ -426,28 +432,28 @@
{
enum apc_type type; /* APC_VIRTUAL_FLUSH */
unsigned int status; /* status returned by call */
- const void *addr; /* resulting address */
+ client_ptr_t addr; /* resulting address */
mem_size_t size; /* resulting size */
} virtual_flush;
struct
{
enum apc_type type; /* APC_VIRTUAL_LOCK */
unsigned int status; /* status returned by call */
- void *addr; /* resulting address */
+ client_ptr_t addr; /* resulting address */
mem_size_t size; /* resulting size */
} virtual_lock;
struct
{
enum apc_type type; /* APC_VIRTUAL_UNLOCK */
unsigned int status; /* status returned by call */
- void *addr; /* resulting address */
+ client_ptr_t addr; /* resulting address */
mem_size_t size; /* resulting size */
} virtual_unlock;
struct
{
enum apc_type type; /* APC_MAP_VIEW */
unsigned int status; /* status returned by call */
- void *addr; /* resulting address */
+ client_ptr_t addr; /* resulting address */
mem_size_t size; /* resulting size */
} map_view;
struct
@@ -755,9 +761,9 @@
VARARG(result,apc_result); /* result of previous APC */
VARARG(handles,handles); /* handles to select on */
@REPLY
- obj_handle_t apc_handle; /* handle to next APC */
timeout_t timeout; /* timeout converted to absolute */
apc_call_t call; /* APC call arguments */
+ obj_handle_t apc_handle; /* handle to next APC */
@END
#define SELECT_ALL 1
#define SELECT_ALERTABLE 2
diff --git a/server/trace.c b/server/trace.c
index fb8c867..9954efd 100644
--- a/server/trace.c
+++ b/server/trace.c
@@ -134,40 +134,54 @@
get_status_name(call->async_io.status) );
break;
case APC_VIRTUAL_ALLOC:
- fprintf( stderr, "APC_VIRTUAL_ALLOC,addr=%p,size=", call->virtual_alloc.addr );
+ fprintf( stderr, "APC_VIRTUAL_ALLOC,addr==" );
+ dump_uint64( &call->virtual_alloc.addr );
+ fprintf( stderr, ",size=" );
dump_uint64( &call->virtual_alloc.size );
fprintf( stderr, ",zero_bits=%u,op_type=%x,prot=%x",
call->virtual_alloc.zero_bits, call->virtual_alloc.op_type,
call->virtual_alloc.prot );
break;
case APC_VIRTUAL_FREE:
- fprintf( stderr, "APC_VIRTUAL_FREE,addr=%p,size=", call->virtual_free.addr );
+ fprintf( stderr, "APC_VIRTUAL_FREE,addr=" );
+ dump_uint64( &call->virtual_free.addr );
+ fprintf( stderr, ",size=" );
dump_uint64( &call->virtual_free.size );
fprintf( stderr, ",op_type=%x", call->virtual_free.op_type );
break;
case APC_VIRTUAL_QUERY:
- fprintf( stderr, "APC_VIRTUAL_QUERY,addr=%p", call->virtual_query.addr );
+ fprintf( stderr, "APC_VIRTUAL_QUERY,addr=" );
+ dump_uint64( &call->virtual_query.addr );
break;
case APC_VIRTUAL_PROTECT:
- fprintf( stderr, "APC_VIRTUAL_PROTECT,addr=%p,size=", call->virtual_protect.addr );
+ fprintf( stderr, "APC_VIRTUAL_PROTECT,addr=" );
+ dump_uint64( &call->virtual_protect.addr );
+ fprintf( stderr, ",size=" );
dump_uint64( &call->virtual_protect.size );
fprintf( stderr, ",prot=%x", call->virtual_protect.prot );
break;
case APC_VIRTUAL_FLUSH:
- fprintf( stderr, "APC_VIRTUAL_FLUSH,addr=%p,size=", call->virtual_flush.addr );
+ fprintf( stderr, "APC_VIRTUAL_FLUSH,addr=" );
+ dump_uint64( &call->virtual_flush.addr );
+ fprintf( stderr, ",size=" );
dump_uint64( &call->virtual_flush.size );
break;
case APC_VIRTUAL_LOCK:
- fprintf( stderr, "APC_VIRTUAL_LOCK,addr=%p,size=", call->virtual_lock.addr );
+ fprintf( stderr, "APC_VIRTUAL_LOCK,addr=" );
+ dump_uint64( &call->virtual_lock.addr );
+ fprintf( stderr, ",size=" );
dump_uint64( &call->virtual_lock.size );
break;
case APC_VIRTUAL_UNLOCK:
- fprintf( stderr, "APC_VIRTUAL_UNLOCK,addr=%p,size=", call->virtual_unlock.addr );
+ fprintf( stderr, "APC_VIRTUAL_UNLOCK,addr=" );
+ dump_uint64( &call->virtual_unlock.addr );
+ fprintf( stderr, ",size=" );
dump_uint64( &call->virtual_unlock.size );
break;
case APC_MAP_VIEW:
- fprintf( stderr, "APC_MAP_VIEW,handle=%04x,addr=%p,size=",
- call->map_view.handle, call->map_view.addr );
+ fprintf( stderr, "APC_MAP_VIEW,handle=%04x,addr=", call->map_view.handle );
+ dump_uint64( &call->map_view.addr );
+ fprintf( stderr, ",size=" );
dump_uint64( &call->map_view.size );
fprintf( stderr, ",offset=" );
dump_uint64( &call->map_view.offset );
@@ -175,7 +189,8 @@
call->map_view.zero_bits, call->map_view.alloc_type, call->map_view.prot );
break;
case APC_UNMAP_VIEW:
- fprintf( stderr, "APC_UNMAP_VIEW,addr=%p", call->unmap_view.addr );
+ fprintf( stderr, "APC_UNMAP_VIEW,addr=" );
+ dump_uint64( &call->unmap_view.addr );
break;
case APC_CREATE_THREAD:
fprintf( stderr, "APC_CREATE_THREAD,func=%p,arg=%p,reserve=",
@@ -204,48 +219,65 @@
get_status_name( result->async_io.status ) );
break;
case APC_VIRTUAL_ALLOC:
- fprintf( stderr, "APC_VIRTUAL_ALLOC,status=%s,addr=%p,size=",
- get_status_name( result->virtual_alloc.status ), result->virtual_alloc.addr );
+ fprintf( stderr, "APC_VIRTUAL_ALLOC,status=%s,addr=",
+ get_status_name( result->virtual_alloc.status ));
+ dump_uint64( &result->virtual_alloc.addr );
+ fprintf( stderr, ",size=" );
dump_uint64( &result->virtual_alloc.size );
break;
case APC_VIRTUAL_FREE:
- fprintf( stderr, "APC_VIRTUAL_FREE,status=%s,addr=%p,size=",
- get_status_name( result->virtual_free.status ), result->virtual_free.addr );
+ fprintf( stderr, "APC_VIRTUAL_FREE,status=%s,addr=",
+ get_status_name( result->virtual_free.status ));
+ dump_uint64( &result->virtual_free.addr );
+ fprintf( stderr, ",size=" );
dump_uint64( &result->virtual_free.size );
break;
case APC_VIRTUAL_QUERY:
- fprintf( stderr, "APC_VIRTUAL_QUERY,status=%s,base=%p,alloc_base=%p,size=",
- get_status_name( result->virtual_query.status ),
- result->virtual_query.base, result->virtual_query.alloc_base );
+ fprintf( stderr, "APC_VIRTUAL_QUERY,status=%s,base=",
+ get_status_name( result->virtual_query.status ));
+ dump_uint64( &result->virtual_query.base );
+ fprintf( stderr, ",alloc_base=" );
+ dump_uint64( &result->virtual_query.alloc_base );
+ fprintf( stderr, ",size=" );
dump_uint64( &result->virtual_query.size );
fprintf( stderr, ",state=%x,prot=%x,alloc_prot=%x,alloc_type=%x",
result->virtual_query.state, result->virtual_query.prot,
result->virtual_query.alloc_prot, result->virtual_query.alloc_type );
break;
case APC_VIRTUAL_PROTECT:
- fprintf( stderr, "APC_VIRTUAL_PROTECT,status=%s,addr=%p,size=",
- get_status_name( result->virtual_protect.status ), result->virtual_protect.addr );
+ fprintf( stderr, "APC_VIRTUAL_PROTECT,status=%s,addr=",
+ get_status_name( result->virtual_protect.status ));
+ dump_uint64( &result->virtual_protect.addr );
+ fprintf( stderr, ",size=" );
dump_uint64( &result->virtual_protect.size );
fprintf( stderr, ",prot=%x", result->virtual_protect.prot );
break;
case APC_VIRTUAL_FLUSH:
- fprintf( stderr, "APC_VIRTUAL_FLUSH,status=%s,addr=%p,size=",
- get_status_name( result->virtual_flush.status ), result->virtual_flush.addr );
+ fprintf( stderr, "APC_VIRTUAL_FLUSH,status=%s,addr=",
+ get_status_name( result->virtual_flush.status ));
+ dump_uint64( &result->virtual_flush.addr );
+ fprintf( stderr, ",size=" );
dump_uint64( &result->virtual_flush.size );
break;
case APC_VIRTUAL_LOCK:
- fprintf( stderr, "APC_VIRTUAL_LOCK,status=%s,addr=%p,size=",
- get_status_name( result->virtual_lock.status ), result->virtual_lock.addr );
+ fprintf( stderr, "APC_VIRTUAL_LOCK,status=%s,addr=",
+ get_status_name( result->virtual_lock.status ));
+ dump_uint64( &result->virtual_lock.addr );
+ fprintf( stderr, ",size=" );
dump_uint64( &result->virtual_lock.size );
break;
case APC_VIRTUAL_UNLOCK:
- fprintf( stderr, "APC_VIRTUAL_UNLOCK,status=%s,addr=%p,size=",
- get_status_name( result->virtual_unlock.status ), result->virtual_unlock.addr );
+ fprintf( stderr, "APC_VIRTUAL_UNLOCK,status=%s,addr=",
+ get_status_name( result->virtual_unlock.status ));
+ dump_uint64( &result->virtual_unlock.addr );
+ fprintf( stderr, ",size=" );
dump_uint64( &result->virtual_unlock.size );
break;
case APC_MAP_VIEW:
- fprintf( stderr, "APC_MAP_VIEW,status=%s,addr=%p,size=",
- get_status_name( result->map_view.status ), result->map_view.addr );
+ fprintf( stderr, "APC_MAP_VIEW,status=%s,addr=",
+ get_status_name( result->map_view.status ));
+ dump_uint64( &result->map_view.addr );
+ fprintf( stderr, ",size=" );
dump_uint64( &result->map_view.size );
break;
case APC_UNMAP_VIEW:
@@ -1193,12 +1225,13 @@
static void dump_select_reply( const struct select_reply *req )
{
- fprintf( stderr, " apc_handle=%04x,", req->apc_handle );
fprintf( stderr, " timeout=" );
dump_timeout( &req->timeout );
fprintf( stderr, "," );
fprintf( stderr, " call=" );
dump_apc_call( &req->call );
+ fprintf( stderr, "," );
+ fprintf( stderr, " apc_handle=%04x", req->apc_handle );
}
static void dump_create_event_request( const struct create_event_request *req )
diff --git a/tools/make_requests b/tools/make_requests
index eeec934..c5b6ad1 100755
--- a/tools/make_requests
+++ b/tools/make_requests
@@ -45,8 +45,8 @@
"timeout_t" => [ 8, 8, "&dump_timeout" ],
"rectangle_t" => [ 16, 4, "&dump_rectangle" ],
"char_info_t" => [ 4, 2, "&dump_char_info" ],
- "apc_call_t" => [ 40, 8, "&dump_apc_call" ],
- "apc_result_t" => [ 40, 8, "&dump_apc_result" ],
+ "apc_call_t" => [ 44, 8, "&dump_apc_call" ],
+ "apc_result_t" => [ 48, 8, "&dump_apc_result" ],
"async_data_t" => [ 32, 8, "&dump_async_data" ],
"luid_t" => [ 8, 4, "&dump_luid" ],
"ioctl_code_t" => [ 4, 4, "&dump_ioctl_code" ],