Alexandre Julliard : wow64: Add thunks for the memory mapping syscalls.
Alexandre Julliard
julliard at winehq.org
Tue Jul 27 15:51:00 CDT 2021
Module: wine
Branch: master
Commit: 458b859ddf00c91821b7382995a2728775cbc89c
URL: https://source.winehq.org/git/wine.git/?a=commit;h=458b859ddf00c91821b7382995a2728775cbc89c
Author: Alexandre Julliard <julliard at winehq.org>
Date: Tue Jul 27 11:21:23 2021 +0200
wow64: Add thunks for the memory mapping syscalls.
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/wow64/syscall.h | 4 +++
dlls/wow64/virtual.c | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 85 insertions(+)
diff --git a/dlls/wow64/syscall.h b/dlls/wow64/syscall.h
index 23d36ff3992..516e0d833c4 100644
--- a/dlls/wow64/syscall.h
+++ b/dlls/wow64/syscall.h
@@ -28,6 +28,7 @@
SYSCALL_ENTRY( NtAllocateUuids ) \
SYSCALL_ENTRY( NtAllocateVirtualMemory ) \
SYSCALL_ENTRY( NtAllocateVirtualMemoryEx ) \
+ SYSCALL_ENTRY( NtAreMappedFilesTheSame ) \
SYSCALL_ENTRY( NtCancelTimer ) \
SYSCALL_ENTRY( NtClearEvent ) \
SYSCALL_ENTRY( NtClearPowerRequest ) \
@@ -62,11 +63,13 @@
SYSCALL_ENTRY( NtFlushVirtualMemory ) \
SYSCALL_ENTRY( NtFreeVirtualMemory ) \
SYSCALL_ENTRY( NtGetCurrentProcessorNumber ) \
+ SYSCALL_ENTRY( NtGetNlsSectionPtr ) \
SYSCALL_ENTRY( NtListenPort ) \
SYSCALL_ENTRY( NtLoadKey ) \
SYSCALL_ENTRY( NtLoadKey2 ) \
SYSCALL_ENTRY( NtLockVirtualMemory ) \
SYSCALL_ENTRY( NtMakeTemporaryObject ) \
+ SYSCALL_ENTRY( NtMapViewOfSection ) \
SYSCALL_ENTRY( NtOpenDirectoryObject ) \
SYSCALL_ENTRY( NtOpenEvent ) \
SYSCALL_ENTRY( NtOpenIoCompletion ) \
@@ -128,6 +131,7 @@
SYSCALL_ENTRY( NtTerminateJobObject ) \
SYSCALL_ENTRY( NtUnloadKey ) \
SYSCALL_ENTRY( NtUnlockVirtualMemory ) \
+ SYSCALL_ENTRY( NtUnmapViewOfSection ) \
SYSCALL_ENTRY( NtWaitForDebugEvent ) \
SYSCALL_ENTRY( NtWaitForKeyedEvent ) \
SYSCALL_ENTRY( NtWaitForMultipleObjects ) \
diff --git a/dlls/wow64/virtual.c b/dlls/wow64/virtual.c
index aa680a5fd26..27b46ee74e8 100644
--- a/dlls/wow64/virtual.c
+++ b/dlls/wow64/virtual.c
@@ -89,6 +89,18 @@ NTSTATUS WINAPI wow64_NtAllocateVirtualMemoryEx( UINT *args )
}
+/**********************************************************************
+ * wow64_NtAreMappedFilesTheSame
+ */
+NTSTATUS WINAPI wow64_NtAreMappedFilesTheSame( UINT *args )
+{
+ void *ptr1 = get_ptr( &args );
+ void *ptr2 = get_ptr( &args );
+
+ return NtAreMappedFilesTheSame( ptr1, ptr2 );
+}
+
+
/**********************************************************************
* wow64_NtFlushVirtualMemory
*/
@@ -139,6 +151,32 @@ NTSTATUS WINAPI wow64_NtFreeVirtualMemory( UINT *args )
}
+/**********************************************************************
+ * wow64_NtGetNlsSectionPtr
+ */
+NTSTATUS WINAPI wow64_NtGetNlsSectionPtr( UINT *args )
+{
+ ULONG type = get_ulong( &args );
+ ULONG id = get_ulong( &args );
+ void *unknown = get_ptr( &args );
+ ULONG *addr32 = get_ptr( &args );
+ ULONG *size32 = get_ptr( &args );
+
+ void *addr;
+ SIZE_T size;
+ NTSTATUS status;
+
+ status = NtGetNlsSectionPtr( type, id, unknown, addr_32to64( &addr, addr32 ),
+ size_32to64( &size, size32 ));
+ if (!status)
+ {
+ put_addr( addr32, addr );
+ put_size( size32, size );
+ }
+ return status;
+}
+
+
/**********************************************************************
* wow64_NtLockVirtualMemory
*/
@@ -164,6 +202,37 @@ NTSTATUS WINAPI wow64_NtLockVirtualMemory( UINT *args )
}
+/**********************************************************************
+ * wow64_NtMapViewOfSection
+ */
+NTSTATUS WINAPI wow64_NtMapViewOfSection( UINT *args )
+{
+ HANDLE handle = get_handle( &args );
+ HANDLE process = get_handle( &args );
+ ULONG *addr32 = get_ptr( &args );
+ ULONG_PTR zero_bits = get_ulong( &args );
+ SIZE_T commit = get_ulong( &args );
+ const LARGE_INTEGER *offset = get_ptr( &args );
+ ULONG *size32 = get_ptr( &args );
+ SECTION_INHERIT inherit = get_ulong( &args );
+ ULONG alloc = get_ulong( &args );
+ ULONG protect = get_ulong( &args );
+
+ void *addr;
+ SIZE_T size;
+ NTSTATUS status;
+
+ status = NtMapViewOfSection( handle, process, addr_32to64( &addr, addr32 ), get_zero_bits( zero_bits ),
+ commit, offset, size_32to64( &size, size32 ), inherit, alloc, protect );
+ if (NT_SUCCESS(status))
+ {
+ put_addr( addr32, addr );
+ put_size( size32, size );
+ }
+ return status;
+}
+
+
/**********************************************************************
* wow64_NtProtectVirtualMemory
*/
@@ -235,6 +304,18 @@ NTSTATUS WINAPI wow64_NtUnlockVirtualMemory( UINT *args )
}
+/**********************************************************************
+ * wow64_NtUnmapViewOfSection
+ */
+NTSTATUS WINAPI wow64_NtUnmapViewOfSection( UINT *args )
+{
+ HANDLE process = get_handle( &args );
+ void *addr = get_ptr( &args );
+
+ return NtUnmapViewOfSection( process, addr );
+}
+
+
/**********************************************************************
* wow64_NtWriteVirtualMemory
*/
More information about the wine-cvs
mailing list