[RFC PATCH 3/6] ntdll: Add a Unix-side wrapper function for "notify_async_direct_result".

Jinoh Kang jinoh.kang.kr at gmail.com
Sun Jan 23 11:30:01 CST 2022


Wrap the "notify_async_direct_result" request in a function named
"notify_async".

Signed-off-by: Jinoh Kang <jinoh.kang.kr at gmail.com>
---
 dlls/ntdll/unix/sync.c         | 21 +++++++++++++++++++++
 dlls/ntdll/unix/unix_private.h |  1 +
 2 files changed, 22 insertions(+)

diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c
index 442243d8bcf..6b9ffd047d2 100644
--- a/dlls/ntdll/unix/sync.c
+++ b/dlls/ntdll/unix/sync.c
@@ -2510,3 +2510,24 @@ NTSTATUS WINAPI NtWaitForAlertByThreadId( const void *address, const LARGE_INTEG
 }
 
 #endif
+
+/* Notify direct completion of async and close the wait handle.
+ * This function is a no-op (returns status as-is) if the supplied handle is NULL.
+ */
+NTSTATUS notify_async( HANDLE optional_handle, NTSTATUS status, ULONG_PTR information )
+{
+    NTSTATUS ret;
+
+    if (!optional_handle) return status;
+
+    SERVER_START_REQ( notify_async_direct_result )
+    {
+        req->handle      = wine_server_obj_handle( optional_handle );
+        req->status      = status;
+        req->information = information;
+        ret = wine_server_call( req );
+    }
+    SERVER_END_REQ;
+
+    return ret;
+}
diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h
index a79edabc37c..046818e482a 100644
--- a/dlls/ntdll/unix/unix_private.h
+++ b/dlls/ntdll/unix/unix_private.h
@@ -274,6 +274,7 @@ extern NTSTATUS get_device_info( int fd, struct _FILE_FS_DEVICE_INFORMATION *inf
 extern void init_files(void) DECLSPEC_HIDDEN;
 extern void init_cpu_info(void) DECLSPEC_HIDDEN;
 extern void add_completion( HANDLE handle, ULONG_PTR value, NTSTATUS status, ULONG info, BOOL async ) DECLSPEC_HIDDEN;
+extern NTSTATUS notify_async( HANDLE optional_handle, NTSTATUS status, ULONG_PTR information );
 
 extern void dbg_init(void) DECLSPEC_HIDDEN;
 
-- 
2.31.1




More information about the wine-devel mailing list