text: CreateEvent
  This function creates a named or an unnamed event object.
  - lpEventAttributes
  [in] Ignored. Must be NULL.
  - bManualReset
  [in] Boolean that specifies whether a manual-reset or auto-reset event object is created. If TRUE, then you must use the ResetEvent function to manually reset the state to nonsignaled. If FALSE, the system automatically resets the state to nonsignaled after a single waiting thread has been released.
  - bInitialState
  [in] Boolean that specifies the initial state of the event object. If TRUE, the initial state is signaled; otherwise, it is nonsignaled.
  - lpName
  [in] Pointer to a null-terminated string that specifies the name of the event object. The name is limited to MAX_PATH characters and can contain any character except the backslash path-separator character (\). Name comparison is case sensitive.
  If lpName matches the name of an existing named event object, the bManualReset and bInitialState parameters are ignored because they have already been set by the creation process.
  If lpName is NULL, the event object is created without a name.
  Each object type, such as memory maps, Semaphore Objects, events, message queues, mutexes, and watchdog timers, has its own separate namespace. Empty strings, "", are handled as named objects. On Windows desktop-based platforms, synchronization objects all share the same namespace.
  Event Object Notification
  Interprocess Synchronization
  Message Queue Point-to-Point
  A handle to the event object indicates success. If the named event object existed before you call this function, CreateEvent returns a handle to the existing object and GetLastError returns ERROR_ALREADY_EXISTS. NULL indicates failure. To get extended error information, call GetLastError.
  The handle returned by CreateEvent has EVENT_ALL_ACCESS access to the new event object and can be used in any function that requires a handle to an event object. of the specified objects is signaled. When a wait function returns, the waiting thread is released to continue its execution.
  The initial state of the event object is specified by the bInitialState. mechanism is available: a process can specify the name of an event object in a call to the CreateEvent function.
  Use the CloseHandle function to close the handle. The system closes the handle automatically when the process terminates. The event object is destroyed when its last handle has been closed.
  ReferenceSynchronization Functions
  OpenEvent
  ResetEvent
  SetEvent
  WaitForSingleObject