2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS WinSock 2 DLL
5 * PURPOSE: Event handling
6 * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
8 * CSH 01/09-2000 Created
24 if (!WSAINITIALIZED) {
25 WSASetLastError(WSANOTINITIALISED);
29 Success = CloseHandle((HANDLE)hEvent);
32 WSASetLastError(WSA_INVALID_HANDLE);
47 if (!WSAINITIALIZED) {
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;
71 if (!WSAINITIALIZED) {
72 WSASetLastError(WSANOTINITIALISED);
76 Success = ResetEvent((HANDLE)hEvent);
79 WSASetLastError(WSA_INVALID_HANDLE);
95 if (!WSAINITIALIZED) {
96 WSASetLastError(WSANOTINITIALISED);
100 Success = SetEvent((HANDLE)hEvent);
103 WSASetLastError(WSA_INVALID_HANDLE);
114 WSAWaitForMultipleEvents(
116 IN CONST WSAEVENT FAR* lphEvents,
123 if (!WSAINITIALIZED) {
124 WSASetLastError(WSANOTINITIALISED);
128 Status = WaitForMultipleObjectsEx(cEvents, lphEvents, fWaitAll, dwTimeout, fAlertable);
129 if (Status == WAIT_FAILED) {
130 Status = GetLastError();
132 if (Status == ERROR_NOT_ENOUGH_MEMORY)
133 WSASetLastError(WSA_NOT_ENOUGH_MEMORY);
134 else if (Status == ERROR_INVALID_HANDLE)
135 WSASetLastError(WSA_INVALID_HANDLE);
137 WSASetLastError(WSA_INVALID_PARAMETER);
139 return WSA_WAIT_FAILED;
151 WSAEnumNetworkEvents(
153 IN WSAEVENT hEventObject,
154 OUT LPWSANETWORKEVENTS lpNetworkEvents)
156 PCATALOG_ENTRY Provider;
160 if (!lpNetworkEvents) {
161 WSASetLastError(WSAEINVAL);
165 if (!WSAINITIALIZED) {
166 WSASetLastError(WSANOTINITIALISED);
170 if (!ReferenceProviderByHandle((HANDLE)s, &Provider)) {
171 WSASetLastError(WSAENOTSOCK);
175 Status = Provider->ProcTable.lpWSPEnumNetworkEvents(
176 s, hEventObject, lpNetworkEvents, &Errno);
178 DereferenceProviderByPointer(Provider);
180 if (Status == SOCKET_ERROR)
181 WSASetLastError(Errno);
194 IN WSAEVENT hEventObject,
195 IN LONG lNetworkEvents)
197 PCATALOG_ENTRY Provider;
201 if (!WSAINITIALIZED) {
202 WSASetLastError(WSANOTINITIALISED);
206 if (!ReferenceProviderByHandle((HANDLE)s, &Provider)) {
207 WSASetLastError(WSAENOTSOCK);
211 Status = Provider->ProcTable.lpWSPEventSelect(
212 s, hEventObject, lNetworkEvents, &Errno);
214 DereferenceProviderByPointer(Provider);
216 if (Status == SOCKET_ERROR)
217 WSASetLastError(Errno);