Alexandre Julliard : wow64: Add thunks for the symbolic link object syscalls.

Alexandre Julliard julliard at winehq.org
Fri Jul 23 18:08:01 CDT 2021


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Fri Jul 23 17:33:45 2021 +0200

wow64: Add thunks for the symbolic link object syscalls.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/wow64/sync.c    | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 dlls/wow64/syscall.h |  3 +++
 2 files changed, 64 insertions(+)

diff --git a/dlls/wow64/sync.c b/dlls/wow64/sync.c
index 7d8ad3edac3..84fd2e8111a 100644
--- a/dlls/wow64/sync.c
+++ b/dlls/wow64/sync.c
@@ -223,6 +223,29 @@ NTSTATUS WINAPI wow64_NtCreateSemaphore( UINT *args )
 }
 
 
+/**********************************************************************
+ *           wow64_NtCreateSymbolicLinkObject
+ */
+NTSTATUS WINAPI wow64_NtCreateSymbolicLinkObject( UINT *args )
+{
+    ULONG *handle_ptr = get_ptr( &args );
+    ACCESS_MASK access = get_ulong( &args );
+    OBJECT_ATTRIBUTES32 *attr32 = get_ptr( &args );
+    UNICODE_STRING32 *target32 = get_ptr( &args );
+
+    struct object_attr64 attr;
+    UNICODE_STRING target;
+    HANDLE handle = 0;
+    NTSTATUS status;
+
+    *handle_ptr = 0;
+    status = NtCreateSymbolicLinkObject( &handle, access, objattr_32to64( &attr, attr32 ),
+                                         unicode_str_32to64( &target, target32 ));
+    put_handle( handle_ptr, handle );
+    return status;
+}
+
+
 /**********************************************************************
  *           wow64_NtCreateTimer
  */
@@ -399,6 +422,26 @@ NTSTATUS WINAPI wow64_NtOpenSemaphore( UINT *args )
 }
 
 
+/**********************************************************************
+ *           wow64_NtOpenSymbolicLinkObject
+ */
+NTSTATUS WINAPI wow64_NtOpenSymbolicLinkObject( UINT *args )
+{
+    ULONG *handle_ptr = get_ptr( &args );
+    ACCESS_MASK access = get_ulong( &args );
+    OBJECT_ATTRIBUTES32 *attr32 = get_ptr( &args );
+
+    struct object_attr64 attr;
+    HANDLE handle = 0;
+    NTSTATUS status;
+
+    *handle_ptr = 0;
+    status = NtOpenSymbolicLinkObject( &handle, access, objattr_32to64( &attr, attr32 ));
+    put_handle( handle_ptr, handle );
+    return status;
+}
+
+
 /**********************************************************************
  *           wow64_NtOpenTimer
  */
@@ -528,6 +571,24 @@ NTSTATUS WINAPI wow64_NtQuerySemaphore( UINT *args )
 }
 
 
+/**********************************************************************
+ *           wow64_NtQuerySymbolicLinkObject
+ */
+NTSTATUS WINAPI wow64_NtQuerySymbolicLinkObject( UINT *args )
+{
+    HANDLE handle = get_handle( &args );
+    UNICODE_STRING32 *target32 = get_ptr( &args );
+    ULONG *retlen = get_ptr( &args );
+
+    UNICODE_STRING target;
+    NTSTATUS status;
+
+    status = NtQuerySymbolicLinkObject( handle, unicode_str_32to64( &target, target32 ), retlen );
+    if (!status) target32->Length = target.Length;
+    return status;
+}
+
+
 /**********************************************************************
  *           wow64_NtQueryTimer
  */
diff --git a/dlls/wow64/syscall.h b/dlls/wow64/syscall.h
index 677e92f1a37..60631a2d41c 100644
--- a/dlls/wow64/syscall.h
+++ b/dlls/wow64/syscall.h
@@ -36,6 +36,7 @@
     SYSCALL_ENTRY( NtCreateKeyedEvent ) \
     SYSCALL_ENTRY( NtCreateMutant ) \
     SYSCALL_ENTRY( NtCreateSemaphore ) \
+    SYSCALL_ENTRY( NtCreateSymbolicLinkObject ) \
     SYSCALL_ENTRY( NtCreateTimer ) \
     SYSCALL_ENTRY( NtDebugContinue ) \
     SYSCALL_ENTRY( NtDeleteAtom ) \
@@ -48,6 +49,7 @@
     SYSCALL_ENTRY( NtOpenKeyedEvent ) \
     SYSCALL_ENTRY( NtOpenMutant ) \
     SYSCALL_ENTRY( NtOpenSemaphore ) \
+    SYSCALL_ENTRY( NtOpenSymbolicLinkObject  ) \
     SYSCALL_ENTRY( NtOpenTimer ) \
     SYSCALL_ENTRY( NtPulseEvent ) \
     SYSCALL_ENTRY( NtQueryDefaultLocale ) \
@@ -59,6 +61,7 @@
     SYSCALL_ENTRY( NtQueryIoCompletion ) \
     SYSCALL_ENTRY( NtQueryMutant ) \
     SYSCALL_ENTRY( NtQuerySemaphore  ) \
+    SYSCALL_ENTRY( NtQuerySymbolicLinkObject ) \
     SYSCALL_ENTRY( NtQueryTimer ) \
     SYSCALL_ENTRY( NtReleaseKeyedEvent ) \
     SYSCALL_ENTRY( NtReleaseMutant ) \




More information about the wine-cvs mailing list