pgLab/win32event.h

41 lines
877 B
C
Raw Normal View History

#ifndef WIN32EVENT_H
#define WIN32EVENT_H
#include <windows.h>
/** Simpel wrapper around a Win32 Event object.
Mostly to make cleanup automatic.*/
class Win32Event {
public:
enum class Reset { Auto=0, Manual=1 };
enum class Initial { Clear=0, Set=1 };
Win32Event(Reset r, Initial is)
: hEvent(CreateEvent(
nullptr, // _In_opt_ LPSECURITY_ATTRIBUTES lpEventAttributes,
BOOL(r), // _In_ BOOL bManualReset,
BOOL(is), // _In_ BOOL bInitialState,
nullptr //_In_opt_ LPCTSTR lpName
))
{}
~Win32Event()
{
CloseHandle(hEvent);
}
Win32Event(const Win32Event &) = delete;
Win32Event &operator=(const Win32Event &) = delete;
void Set() { SetEvent(hEvent); }
void Reset() { ResetEvent(hEvent); }
HANDLE GetHandle() { return hEvent; }
private:
HANDLE hEvent;
};
#endif // WIN32EVENT_H