[PATCH 2/8] ntdll: Directly call internal functions from APC handler
Rémi Bernon
rbernon at codeweavers.com
Thu Aug 1 03:07:39 CDT 2019
This is in preparation for the following patches that are changing the
internal zero_bits format. Also, parameter validation has already been
done before queueing the APC.
Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---
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 b82fbc56584..16e73d497c4 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;
}
--
2.20.1
More information about the wine-devel
mailing list