2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS WinSock 2 DLL
4 * FILE: dll/win32/ws2_32/misc/event.c
5 * PURPOSE: Event handling
6 * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
8 * CSH 01/09-2000 Created
18 WSACloseEvent(IN WSAEVENT hEvent
)
24 WSASetLastError(WSANOTINITIALISED
);
28 Success
= CloseHandle((HANDLE
)hEvent
);
31 WSASetLastError(WSA_INVALID_HANDLE
);
48 WSASetLastError(WSANOTINITIALISED
);
52 Event
= CreateEventW(NULL
, TRUE
, FALSE
, NULL
);
54 if (Event
== INVALID_HANDLE_VALUE
)
55 WSASetLastError(WSA_INVALID_HANDLE
);
57 return (WSAEVENT
)Event
;
66 WSAResetEvent(IN WSAEVENT hEvent
)
72 WSASetLastError(WSANOTINITIALISED
);
76 Success
= ResetEvent((HANDLE
)hEvent
);
79 WSASetLastError(WSA_INVALID_HANDLE
);
90 WSASetEvent(IN WSAEVENT hEvent
)
96 WSASetLastError(WSANOTINITIALISED
);
100 Success
= SetEvent((HANDLE
)hEvent
);
103 WSASetLastError(WSA_INVALID_HANDLE
);
114 WSAWaitForMultipleEvents(IN DWORD cEvents
,
115 IN CONST WSAEVENT FAR
* lphEvents
,
124 WSASetLastError(WSANOTINITIALISED
);
128 Status
= WaitForMultipleObjectsEx(cEvents
,
133 if (Status
== WAIT_FAILED
)
135 Status
= GetLastError();
137 if (Status
== ERROR_NOT_ENOUGH_MEMORY
)
138 WSASetLastError(WSA_NOT_ENOUGH_MEMORY
);
139 else if (Status
== ERROR_INVALID_HANDLE
)
140 WSASetLastError(WSA_INVALID_HANDLE
);
142 WSASetLastError(WSA_INVALID_PARAMETER
);
144 return WSA_WAIT_FAILED
;
156 WSAEnumNetworkEvents(IN SOCKET s
,
157 IN WSAEVENT hEventObject
,
158 OUT LPWSANETWORKEVENTS lpNetworkEvents
)
160 PCATALOG_ENTRY Provider
;
164 WS_DbgPrint(MID_TRACE
,("Called (Socket %x, hEventObject %x, "
165 "lpNetworkEvents %x)\n",
170 if (!lpNetworkEvents
)
172 WSASetLastError(WSAEINVAL
);
178 WSASetLastError(WSANOTINITIALISED
);
182 if (!ReferenceProviderByHandle((HANDLE
)s
,
185 WSASetLastError(WSAENOTSOCK
);
189 Status
= Provider
->ProcTable
.lpWSPEnumNetworkEvents(s
,
194 DereferenceProviderByPointer(Provider
);
196 if (Status
== SOCKET_ERROR
)
197 WSASetLastError(Errno
);
199 WS_DbgPrint(MID_TRACE
,("Leaving %x\n", Status
));
210 WSAEventSelect(IN SOCKET s
,
211 IN WSAEVENT hEventObject
,
212 IN LONG lNetworkEvents
)
214 PCATALOG_ENTRY Provider
;
220 WSASetLastError(WSANOTINITIALISED
);
224 if (!ReferenceProviderByHandle((HANDLE
)s
, &Provider
))
226 WSASetLastError(WSAENOTSOCK
);
230 Status
= Provider
->ProcTable
.lpWSPEventSelect(s
,
235 DereferenceProviderByPointer(Provider
);
237 if (Status
== SOCKET_ERROR
)
238 WSASetLastError(Errno
);