2 * PROJECT: ReactOS Kernel
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: ntoskrnl/io/event.c
5 * PURPOSE: I/O Wrappers for the Executive Event Functions
6 * PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org)
10 /* INCLUDES *****************************************************************/
15 /* PRIVATE FUNCTIONS *********************************************************/
19 IopCreateEvent(IN PUNICODE_STRING EventName
,
20 IN PHANDLE EventHandle
,
23 OBJECT_ATTRIBUTES ObjectAttributes
;
29 /* Initialize the object attributes */
30 InitializeObjectAttributes(&ObjectAttributes
,
32 OBJ_OPENIF
| OBJ_KERNEL_HANDLE
,
36 /* Create the event */
37 Status
= ZwCreateEvent(&Handle
,
42 if (!NT_SUCCESS(Status
)) return NULL
;
44 /* Get a handle to it */
45 Status
= ObReferenceObjectByHandle(Handle
,
51 if (!NT_SUCCESS(Status
))
57 /* Dereference the extra count, and return the handle */
58 ObDereferenceObject(Event
);
59 *EventHandle
= Handle
;
63 /* PUBLIC FUNCTIONS **********************************************************/
70 IoCreateNotificationEvent(IN PUNICODE_STRING EventName
,
71 IN PHANDLE EventHandle
)
73 /* Call the internal API */
74 return IopCreateEvent(EventName
, EventHandle
, NotificationEvent
);
82 IoCreateSynchronizationEvent(IN PUNICODE_STRING EventName
,
83 IN PHANDLE EventHandle
)
85 /* Call the internal API */
86 return IopCreateEvent(EventName
, EventHandle
, SynchronizationEvent
);