Zebediah Figura : ntoskrnl.exe: Implement KeSetEvent().

Alexandre Julliard julliard at winehq.org
Mon Nov 26 16:20:11 CST 2018


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

Author: Zebediah Figura <z.figura12 at gmail.com>
Date:   Sat Nov 24 22:34:40 2018 -0600

ntoskrnl.exe: Implement KeSetEvent().

Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ntoskrnl.exe/ntoskrnl.c | 10 ----------
 dlls/ntoskrnl.exe/sync.c     | 19 +++++++++++++++++++
 2 files changed, 19 insertions(+), 10 deletions(-)

diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
index eb984bd..189f303 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -2440,16 +2440,6 @@ LONG WINAPI KeResetEvent( PRKEVENT Event )
 
 
 /***********************************************************************
- *           KeSetEvent   (NTOSKRNL.EXE.@)
- */
-LONG WINAPI KeSetEvent( PRKEVENT Event, KPRIORITY Increment, BOOLEAN Wait )
-{
-    FIXME("(%p, %d, %d): stub\n", Event, Increment, Wait);
-    return 0;
-}
-
-
-/***********************************************************************
  *           KeSetPriorityThread   (NTOSKRNL.EXE.@)
  */
 KPRIORITY WINAPI KeSetPriorityThread( PKTHREAD Thread, KPRIORITY Priority )
diff --git a/dlls/ntoskrnl.exe/sync.c b/dlls/ntoskrnl.exe/sync.c
index e7ff7ec..6bea027 100644
--- a/dlls/ntoskrnl.exe/sync.c
+++ b/dlls/ntoskrnl.exe/sync.c
@@ -125,3 +125,22 @@ void WINAPI KeInitializeEvent( PRKEVENT event, EVENT_TYPE type, BOOLEAN state )
     event->Header.WaitListHead.Blink = NULL;
     event->Header.WaitListHead.Flink = NULL;
 }
+
+/***********************************************************************
+ *           KeSetEvent   (NTOSKRNL.EXE.@)
+ */
+LONG WINAPI KeSetEvent( PRKEVENT event, KPRIORITY increment, BOOLEAN wait )
+{
+    HANDLE handle = event->Header.WaitListHead.Blink;
+    LONG ret;
+
+    TRACE("event %p, increment %d, wait %u.\n", event, increment, wait);
+
+    EnterCriticalSection( &sync_cs );
+    ret = InterlockedExchange( &event->Header.SignalState, TRUE );
+    if (handle)
+        SetEvent( handle );
+    LeaveCriticalSection( &sync_cs );
+
+    return ret;
+}




More information about the wine-cvs mailing list