1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- #pragma once
- #if !defined(__cplusplus) && !defined(inline)
- #define inline __inline
- #endif
- #define GC_EVENT_FLAGS (EVENT_MODIFY_STATE | SYNCHRONIZE)
- #define GC_MUTEX_FLAGS (SYNCHRONIZE)
- static inline HANDLE create_event(const wchar_t *name)
- {
- return CreateEventW(NULL, false, false, name);
- }
- static inline HANDLE open_event(const wchar_t *name)
- {
- return OpenEventW(GC_EVENT_FLAGS, false, name);
- }
- static inline HANDLE create_mutex(const wchar_t *name)
- {
- return CreateMutexW(NULL, false, name);
- }
- static inline HANDLE open_mutex(const wchar_t *name)
- {
- return OpenMutexW(GC_MUTEX_FLAGS, false, name);
- }
- static inline HANDLE create_event_plus_id(const wchar_t *name, DWORD id)
- {
- wchar_t new_name[64];
- _snwprintf(new_name, 64, L"%s%lu", name, id);
- return create_event(new_name);
- }
- static inline HANDLE create_mutex_plus_id(const wchar_t *name, DWORD id)
- {
- wchar_t new_name[64];
- _snwprintf(new_name, 64, L"%s%lu", name, id);
- return create_mutex(new_name);
- }
- static inline bool object_signalled(HANDLE event)
- {
- if (!event)
- return false;
- return WaitForSingleObject(event, 0) == WAIT_OBJECT_0;
- }
|