Module: wine Branch: master Commit: 5328b9e083bf2e5ea15b21287e96e63643821f33 URL: https://source.winehq.org/git/wine.git/?a=commit;h=5328b9e083bf2e5ea15b21287...
Author: Rémi Bernon rbernon@codeweavers.com Date: Thu Aug 1 10:07:39 2019 +0200
ntdll: Directly call internal functions from APC handler.
Signed-off-by: Rémi Bernon rbernon@codeweavers.com Signed-off-by: Huw Davies huw@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/ntdll/server.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-)
diff --git a/dlls/ntdll/server.c b/dlls/ntdll/server.c index b82fbc5..16e73d4 100644 --- a/dlls/ntdll/server.c +++ b/dlls/ntdll/server.c @@ -391,6 +391,7 @@ BOOL invoke_apc( const apc_call_t *call, apc_result_t *result ) BOOL user_apc = FALSE; SIZE_T size; void *addr; + pe_image_info_t image_info;
memset( result, 0, sizeof(*result) );
@@ -429,10 +430,11 @@ BOOL invoke_apc( const apc_call_t *call, apc_result_t *result ) size = call->virtual_alloc.size; if ((ULONG_PTR)addr == call->virtual_alloc.addr && size == call->virtual_alloc.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.status = virtual_alloc_aligned( &addr, + call->virtual_alloc.zero_bits, &size, + call->virtual_alloc.op_type, + call->virtual_alloc.prot, + 0 ); result->virtual_alloc.addr = wine_server_client_ptr( addr ); result->virtual_alloc.size = size; } @@ -534,11 +536,12 @@ BOOL invoke_apc( const apc_call_t *call, apc_result_t *result ) { LARGE_INTEGER offset; offset.QuadPart = call->map_view.offset; - result->map_view.status = NtMapViewOfSection( wine_server_ptr_handle(call->map_view.handle), - NtCurrentProcess(), &addr, - call->map_view.zero_bits, 0, - &offset, &size, ViewShare, - call->map_view.alloc_type, call->map_view.prot ); + result->map_view.status = virtual_map_section( wine_server_ptr_handle(call->map_view.handle), + &addr, + call->map_view.zero_bits, 0, + &offset, &size, + call->map_view.alloc_type, call->map_view.prot, + &image_info ); result->map_view.addr = wine_server_client_ptr( addr ); result->map_view.size = size; }