Второй вызов откроет событие, но не изменит его состояние.
Я знаю это, потому что в документации сказано, что он открывает его, но не сбрасывает его. Если это сбросит это, это было бы достаточно важно упомянуть.
HANDLE responseWaitEvent = CreateEvent(NULL, // no security
TRUE, // manual-reset event
TRUE, // signaled
(LPTSTR)_T("TESTEvent")); // event name
assert(responseWaitEvent && "Could not create event");
responseWaitEvent = CreateEvent(NULL, // no security
TRUE, // manual-reset event
FALSE, // not signaled
(LPTSTR)_T("TESTEvent")); // event name
assert(responseWaitEvent && "Could not open event");
DWORD dw = WaitForSingleObjectEx(responseWaitEvent, 10000, FALSE);
assert(dw != WAIT_TIMEOUT);
И наоборот:
HANDLE responseWaitEvent2 = CreateEvent(NULL, // no security
TRUE, // manual-reset event
FALSE, // not signaled
(LPTSTR)_T("TESTEvent2")); // event name
assert(responseWaitEvent && "Could not create event");
responseWaitEvent2 = CreateEvent(NULL, // no security
TRUE, // manual-reset event
TRUE, // signaled
(LPTSTR)_T("TESTEvent2")); // event name
assert(responseWaitEvent && "Could not open event");
DWORD dw2 = WaitForSingleObjectEx(responseWaitEvent2, 10000, FALSE);
assert(dw2 == WAIT_TIMEOUT);