=?UTF-8?Q?R=C3=A9mi=20Bernon=20?=: ntdll: Directly call internal functions from APC handler.

Alexandre Julliard julliard at winehq.org
Tue Aug 13 14:54:33 CDT 2019


Module: wine
Branch: master
Commit: 5328b9e083bf2e5ea15b21287e96e63643821f33
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=5328b9e083bf2e5ea15b21287e96e63643821f33

Author: Rémi Bernon <rbernon at 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 at codeweavers.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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;
         }




More information about the wine-cvs mailing list