Module: wine Branch: master Commit: e740eaee08479c71f2d3021fef620a99ea7fd7d4 URL: https://gitlab.winehq.org/wine/wine/-/commit/e740eaee08479c71f2d3021fef620a9...
Author: Etaash Mathamsetty etaash.mathamsetty@gmail.com Date: Thu Oct 13 19:42:22 2022 -0400
ntoskrnl.exe: Implement IoCreateNotificationEvent.
---
dlls/ntoskrnl.exe/ntoskrnl.c | 10 ---------- dlls/ntoskrnl.exe/sync.c | 26 ++++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 10 deletions(-)
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c index 6f5564042a6..2c080eaf9f6 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/ntoskrnl.c @@ -4075,16 +4075,6 @@ NTSTATUS WINAPI IoCreateFile(HANDLE *handle, ACCESS_MASK access, OBJECT_ATTRIBUT create_options, ea_buffer, ea_length, file_type, parameters, options, NULL); }
-/*********************************************************************** - * IoCreateNotificationEvent (NTOSKRNL.EXE.@) - */ -PKEVENT WINAPI IoCreateNotificationEvent(UNICODE_STRING *name, HANDLE *handle) -{ - FIXME( "stub: %s %p\n", debugstr_us(name), handle ); - return NULL; -} - - /************************************************************************** * __chkstk (NTOSKRNL.@) */ diff --git a/dlls/ntoskrnl.exe/sync.c b/dlls/ntoskrnl.exe/sync.c index b8239b0cd7d..409d5752547 100644 --- a/dlls/ntoskrnl.exe/sync.c +++ b/dlls/ntoskrnl.exe/sync.c @@ -231,6 +231,32 @@ PKEVENT WINAPI IoCreateSynchronizationEvent( UNICODE_STRING *name, HANDLE *ret_h return event; }
+/*********************************************************************** + * IoCreateNotificationEvent (NTOSKRNL.EXE.@) + */ +PKEVENT WINAPI IoCreateNotificationEvent( UNICODE_STRING *name, HANDLE *ret_handle ) +{ + OBJECT_ATTRIBUTES attr; + HANDLE handle; + KEVENT *event; + NTSTATUS ret; + + TRACE( "(%s %p)\n", debugstr_us(name), ret_handle ); + + InitializeObjectAttributes( &attr, name, 0, 0, NULL ); + ret = NtCreateEvent( &handle, EVENT_ALL_ACCESS, &attr, NotificationEvent, TRUE ); + if (ret) return NULL; + + if (kernel_object_from_handle( handle, ExEventObjectType, (void**)&event )) + { + NtClose(handle); + return NULL; + } + + *ret_handle = handle; + return event; +} + /*********************************************************************** * KeSetEvent (NTOSKRNL.EXE.@) */