3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS system libraries
5 * FILE: lib/kernel32/synch/event.c
6 * PURPOSE: Local string functions
7 * PROGRAMMER: Ariadne ( ariadne@xs4all.nl)
12 /* INCLUDES *****************************************************************/
14 #include <ddk/ntddk.h>
18 #include <kernel32/kernel32.h>
19 #include <kernel32/error.h>
21 /* FUNCTIONS ****************************************************************/
24 CreateEventA(LPSECURITY_ATTRIBUTES lpEventAttributes,
26 WINBOOL bInitialState,
29 UNICODE_STRING EventNameU;
30 ANSI_STRING EventName;
33 RtlInitUnicodeString (&EventNameU, NULL);
37 RtlInitAnsiString(&EventName,
39 RtlAnsiStringToUnicodeString(&EventNameU,
44 EventHandle = CreateEventW(lpEventAttributes,
51 RtlFreeUnicodeString(&EventNameU);
59 CreateEventW(LPSECURITY_ATTRIBUTES lpEventAttributes,
61 WINBOOL bInitialState,
66 UNICODE_STRING EventNameString;
67 POBJECT_ATTRIBUTES PtrObjectAttributes;
68 OBJECT_ATTRIBUTES ObjectAttributes;
70 ObjectAttributes.Length = sizeof(OBJECT_ATTRIBUTES);
71 ObjectAttributes.RootDirectory = hBaseDir;
72 ObjectAttributes.ObjectName = NULL;
73 ObjectAttributes.Attributes = 0;
74 ObjectAttributes.SecurityDescriptor = NULL;
75 ObjectAttributes.SecurityQualityOfService = NULL;
79 RtlInitUnicodeString(&EventNameString, (LPWSTR)lpName);
80 ObjectAttributes.ObjectName = &EventNameString;
83 Status = NtCreateEvent(&hEvent,
84 STANDARD_RIGHTS_ALL|EVENT_READ_ACCESS|EVENT_WRITE_ACCESS,
89 if (!NT_SUCCESS(Status))
91 SetLastErrorByStatus(Status);
100 OpenEventA(DWORD dwDesiredAccess,
101 WINBOOL bInheritHandle,
104 UNICODE_STRING EventNameU;
105 ANSI_STRING EventName;
108 RtlInitUnicodeString(&EventNameU,
113 RtlInitAnsiString(&EventName,
115 RtlAnsiStringToUnicodeString(&EventNameU,
120 EventHandle = OpenEventW(dwDesiredAccess,
126 RtlFreeUnicodeString(&EventNameU);
134 OpenEventW(DWORD dwDesiredAccess,
135 WINBOOL bInheritHandle,
138 OBJECT_ATTRIBUTES ObjectAttributes;
139 UNICODE_STRING EventNameString;
141 HANDLE hEvent = NULL;
145 SetLastError(ERROR_INVALID_PARAMETER);
149 RtlInitUnicodeString(&EventNameString, (LPWSTR)lpName);
151 ObjectAttributes.Length = sizeof(OBJECT_ATTRIBUTES);
152 ObjectAttributes.RootDirectory = hBaseDir;
153 ObjectAttributes.ObjectName = &EventNameString;
154 ObjectAttributes.Attributes = 0;
155 ObjectAttributes.SecurityDescriptor = NULL;
156 ObjectAttributes.SecurityQualityOfService = NULL;
157 if (bInheritHandle == TRUE)
159 ObjectAttributes.Attributes |= OBJ_INHERIT;
162 Status = NtOpenEvent(&hEvent,
165 if (!NT_SUCCESS(Status))
167 SetLastErrorByStatus(Status);
176 PulseEvent(HANDLE hEvent)
181 Status = NtPulseEvent(hEvent,
183 if (!NT_SUCCESS(Status))
185 SetLastErrorByStatus (Status);
194 ResetEvent(HANDLE hEvent)
199 Status = NtResetEvent(hEvent,
201 if (!NT_SUCCESS(Status))
203 SetLastErrorByStatus(Status);
212 SetEvent(HANDLE hEvent)
217 Status = NtSetEvent(hEvent,
219 if (!NT_SUCCESS(Status))
221 SetLastErrorByStatus(Status);