Alexandre Julliard : wow64: Add thunks for the I/O completion syscalls.

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


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

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

wow64: Add thunks for the I/O completion syscalls.

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

---

 dlls/wow64/sync.c    | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 dlls/wow64/syscall.h |  4 +++
 2 files changed, 75 insertions(+)

diff --git a/dlls/wow64/sync.c b/dlls/wow64/sync.c
index d280f1324a3..0a3e2cd099a 100644
--- a/dlls/wow64/sync.c
+++ b/dlls/wow64/sync.c
@@ -118,6 +118,27 @@ NTSTATUS WINAPI wow64_NtCreateEvent( UINT *args )
 }
 
 
+/**********************************************************************
+ *           wow64_NtCreateIoCompletion
+ */
+NTSTATUS WINAPI wow64_NtCreateIoCompletion( UINT *args )
+{
+    ULONG *handle_ptr = get_ptr( &args );
+    ACCESS_MASK access = get_ulong( &args );
+    OBJECT_ATTRIBUTES32 *attr32 = get_ptr( &args );
+    ULONG threads = get_ulong( &args );
+
+    struct object_attr64 attr;
+    HANDLE handle = 0;
+    NTSTATUS status;
+
+    *handle_ptr = 0;
+    status = NtCreateIoCompletion( &handle, access, objattr_32to64( &attr, attr32 ), threads );
+    put_handle( handle_ptr, handle );
+    return status;
+}
+
+
 /**********************************************************************
  *           wow64_NtCreateKeyedEvent
  */
@@ -258,6 +279,26 @@ NTSTATUS WINAPI wow64_NtOpenEvent( UINT *args )
 }
 
 
+/**********************************************************************
+ *           wow64_NtOpenIoCompletion
+ */
+NTSTATUS WINAPI wow64_NtOpenIoCompletion( 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 = NtOpenIoCompletion( &handle, access, objattr_32to64( &attr, attr32 ));
+    put_handle( handle_ptr, handle );
+    return status;
+}
+
+
 /**********************************************************************
  *           wow64_NtOpenKeyedEvent
  */
@@ -402,6 +443,21 @@ NTSTATUS WINAPI wow64_NtQueryEvent( UINT *args )
 }
 
 
+/**********************************************************************
+ *           wow64_NtQueryIoCompletion
+ */
+NTSTATUS WINAPI wow64_NtQueryIoCompletion( UINT *args )
+{
+    HANDLE handle = get_handle( &args );
+    IO_COMPLETION_INFORMATION_CLASS class = get_ulong( &args );
+    void *info = get_ptr( &args );
+    ULONG len = get_ulong( &args );
+    ULONG *retlen = get_ptr( &args );
+
+    return NtQueryIoCompletion( handle, class, info, len, retlen );
+}
+
+
 /**********************************************************************
  *           wow64_NtQueryMutant
  */
@@ -525,6 +581,21 @@ NTSTATUS WINAPI wow64_NtSetInformationDebugObject( UINT *args )
 }
 
 
+/**********************************************************************
+ *           wow64_NtSetIoCompletion
+ */
+NTSTATUS WINAPI wow64_NtSetIoCompletion( UINT *args )
+{
+    HANDLE handle = get_handle( &args );
+    ULONG_PTR key = get_ulong( &args );
+    ULONG_PTR value = get_ulong( &args );
+    NTSTATUS status = get_ulong( &args );
+    SIZE_T count = get_ulong( &args );
+
+    return NtSetIoCompletion( handle, key, value, status, count );
+}
+
+
 /**********************************************************************
  *           wow64_NtSetTimer
  */
diff --git a/dlls/wow64/syscall.h b/dlls/wow64/syscall.h
index a56e775bda3..c32f4b5fece 100644
--- a/dlls/wow64/syscall.h
+++ b/dlls/wow64/syscall.h
@@ -31,6 +31,7 @@
     SYSCALL_ENTRY( NtCreateDebugObject ) \
     SYSCALL_ENTRY( NtCreateDirectoryObject ) \
     SYSCALL_ENTRY( NtCreateEvent ) \
+    SYSCALL_ENTRY( NtCreateIoCompletion ) \
     SYSCALL_ENTRY( NtCreateKeyedEvent ) \
     SYSCALL_ENTRY( NtCreateMutant ) \
     SYSCALL_ENTRY( NtCreateSemaphore ) \
@@ -41,6 +42,7 @@
     SYSCALL_ENTRY( NtGetCurrentProcessorNumber ) \
     SYSCALL_ENTRY( NtOpenDirectoryObject ) \
     SYSCALL_ENTRY( NtOpenEvent ) \
+    SYSCALL_ENTRY( NtOpenIoCompletion ) \
     SYSCALL_ENTRY( NtOpenKeyedEvent ) \
     SYSCALL_ENTRY( NtOpenMutant ) \
     SYSCALL_ENTRY( NtOpenSemaphore ) \
@@ -52,6 +54,7 @@
     SYSCALL_ENTRY( NtQueryEvent ) \
     SYSCALL_ENTRY( NtQueryInformationAtom ) \
     SYSCALL_ENTRY( NtQueryInstallUILanguage ) \
+    SYSCALL_ENTRY( NtQueryIoCompletion ) \
     SYSCALL_ENTRY( NtQueryMutant ) \
     SYSCALL_ENTRY( NtQuerySemaphore  ) \
     SYSCALL_ENTRY( NtQueryTimer ) \
@@ -63,6 +66,7 @@
     SYSCALL_ENTRY( NtSetDefaultUILanguage ) \
     SYSCALL_ENTRY( NtSetEvent ) \
     SYSCALL_ENTRY( NtSetInformationDebugObject ) \
+    SYSCALL_ENTRY( NtSetIoCompletion ) \
     SYSCALL_ENTRY( NtSetTimer ) \
     SYSCALL_ENTRY( NtWaitForDebugEvent ) \
     SYSCALL_ENTRY( NtWaitForKeyedEvent )




More information about the wine-cvs mailing list