hook-helpers.h 930 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #pragma once
  2. #if !defined(__cplusplus) && !defined(inline)
  3. #define inline __inline
  4. #endif
  5. static inline HANDLE get_event(const char *name)
  6. {
  7. HANDLE event = CreateEventA(NULL, false, false, name);
  8. if (!event)
  9. event = OpenEventA(EVENT_ALL_ACCESS, false, name);
  10. return event;
  11. }
  12. static inline HANDLE get_mutex(const char *name)
  13. {
  14. HANDLE event = CreateMutexA(NULL, false, name);
  15. if (!event)
  16. event = OpenMutexA(MUTEX_ALL_ACCESS, false, name);
  17. return event;
  18. }
  19. static inline HANDLE get_event_plus_id(const char *name, DWORD id)
  20. {
  21. char new_name[64];
  22. sprintf(new_name, "%s%lu", name, id);
  23. return get_event(new_name);
  24. }
  25. static inline HANDLE get_mutex_plus_id(const char *name, DWORD id)
  26. {
  27. char new_name[64];
  28. sprintf(new_name, "%s%lu", name, id);
  29. return get_mutex(new_name);
  30. }
  31. static inline bool object_signalled(HANDLE event)
  32. {
  33. if (!event)
  34. return false;
  35. return WaitForSingleObject(event, 0) == WAIT_OBJECT_0;
  36. }