From MSDN, it looks same as CreateEvent(NULL, FALSE, FALSE, NULL):
The WSACreateEvent function creates a manual-reset event object with an initial state of nonsignaled. The event object is unnamed.
However they are not really equivalent. When we use normal event, the WSAEventSelect still works but the event appears to be 'auto-reset'.
bio->init = 1;
#ifdef _WIN32
- ptr->hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
+ ptr->hEvent = WSACreateEvent();
if (!ptr->hEvent)
return 0;