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
21 if (!WSAINITIALIZED) {
22 WSASetLastError(WSANOTINITIALISED);
26 Success = CloseHandle((HANDLE)hEvent);
29 WSASetLastError(WSA_INVALID_HANDLE);
41 if (!WSAINITIALIZED) {
42 WSASetLastError(WSANOTINITIALISED);
46 Event = CreateEvent(NULL, TRUE, FALSE, NULL);
48 if (Event == INVALID_HANDLE_VALUE)
49 WSASetLastError(WSA_INVALID_HANDLE);
51 return (WSAEVENT)Event;
62 if (!WSAINITIALIZED) {
63 WSASetLastError(WSANOTINITIALISED);
67 Success = ResetEvent((HANDLE)hEvent);
70 WSASetLastError(WSA_INVALID_HANDLE);
83 if (!WSAINITIALIZED) {
84 WSASetLastError(WSANOTINITIALISED);
88 Success = SetEvent((HANDLE)hEvent);
91 WSASetLastError(WSA_INVALID_HANDLE);
99 WSAWaitForMultipleEvents(
101 IN CONST WSAEVENT FAR* lphEvents,
108 if (!WSAINITIALIZED) {
109 WSASetLastError(WSANOTINITIALISED);
113 Status = WaitForMultipleObjectsEx(cEvents, lphEvents, fWaitAll, dwTimeout, fAlertable);
114 if (Status == WAIT_FAILED) {
115 Status = GetLastError();
117 if (Status == ERROR_NOT_ENOUGH_MEMORY)
118 WSASetLastError(WSA_NOT_ENOUGH_MEMORY);
119 else if (Status == ERROR_INVALID_HANDLE)
120 WSASetLastError(WSA_INVALID_HANDLE);
122 WSASetLastError(WSA_INVALID_PARAMETER);
124 return WSA_WAIT_FAILED;
133 WSAEnumNetworkEvents(
135 IN WSAEVENT hEventObject,
136 OUT LPWSANETWORKEVENTS lpNetworkEvents)
138 PCATALOG_ENTRY Provider;
142 if (!lpNetworkEvents) {
143 WSASetLastError(WSAEINVAL);
147 if (!WSAINITIALIZED) {
148 WSASetLastError(WSANOTINITIALISED);
152 if (!ReferenceProviderByHandle((HANDLE)s, &Provider)) {
153 WSASetLastError(WSAENOTSOCK);
157 Status = Provider->ProcTable.lpWSPEnumNetworkEvents(
158 s, hEventObject, lpNetworkEvents, &Errno);
160 DereferenceProviderByPointer(Provider);
162 if (Status == SOCKET_ERROR)
163 WSASetLastError(Errno);
173 IN WSAEVENT hEventObject,
174 IN LONG lNetworkEvents)
176 PCATALOG_ENTRY Provider;
181 if (!WSAINITIALIZED) {
182 WSASetLastError(WSANOTINITIALISED);
186 if (!ReferenceProviderByHandle((HANDLE)s, &Provider)) {
187 WSASetLastError(WSAENOTSOCK);
191 Status = Provider->ProcTable.lpWSPEventSelect(
192 s, hEventObject, lNetworkEvents, &Errno);
194 DereferenceProviderByPointer(Provider);
196 if (Status == SOCKET_ERROR)
197 WSASetLastError(Errno);