Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenevent.c
Go to the documentation of this file.
00001 /* 00002 * COPYRIGHT: See COPYING in the top level directory 00003 * PROJECT: ReactOS WinSock 2 API 00004 * FILE: event.c 00005 * PURPOSE: Socket Events 00006 * PROGRAMMER: Alex Ionescu (alex@relsoft.net) 00007 */ 00008 00009 /* INCLUDES ******************************************************************/ 00010 #include "ws2_32.h" 00011 00012 //#define NDEBUG 00013 #include <debug.h> 00014 00015 /* FUNCTIONS *****************************************************************/ 00016 00017 /* 00018 * @implemented 00019 */ 00020 BOOL 00021 WSAAPI 00022 WSACloseEvent(IN WSAEVENT hEvent) 00023 { 00024 BOOL Success; 00025 00026 /* Let the OS handle it */ 00027 Success = CloseHandle(hEvent); 00028 00029 /* We need a special WSA return error */ 00030 if (!Success) WSASetLastError(WSA_INVALID_HANDLE); 00031 00032 /* Return the Win32 Error */ 00033 return Success; 00034 } 00035 00036 /* 00037 * @implemented 00038 */ 00039 WSAEVENT 00040 WSAAPI 00041 WSACreateEvent(VOID) 00042 { 00043 /* CreateEventW can only return the Event or 0 (WSA_INVALID_EVENT) */ 00044 return CreateEventW(NULL, TRUE, FALSE, NULL); 00045 } 00046 00047 /* 00048 * @implemented 00049 */ 00050 BOOL 00051 WSAAPI 00052 WSAResetEvent(IN WSAEVENT hEvent) 00053 { 00054 /* Call Win32 */ 00055 return ResetEvent(hEvent); 00056 } 00057 00058 /* 00059 * @implemented 00060 */ 00061 BOOL 00062 WSAAPI 00063 WSASetEvent(IN WSAEVENT hEvent) 00064 { 00065 /* Call Win32 */ 00066 return SetEvent(hEvent); 00067 } 00068 00069 /* 00070 * @implemented 00071 */ 00072 DWORD 00073 WSAAPI 00074 WSAWaitForMultipleEvents(IN DWORD cEvents, 00075 IN CONST WSAEVENT FAR* lphEvents, 00076 IN BOOL fWaitAll, 00077 IN DWORD dwTimeout, 00078 IN BOOL fAlertable) 00079 { 00080 /* Call Win32 */ 00081 return WaitForMultipleObjectsEx(cEvents, 00082 lphEvents, 00083 fWaitAll, 00084 dwTimeout, 00085 fAlertable); 00086 } 00087 00088 /* 00089 * @implemented 00090 */ 00091 INT 00092 WSAAPI 00093 WSAEnumNetworkEvents(IN SOCKET s, 00094 IN WSAEVENT hEventObject, 00095 OUT LPWSANETWORKEVENTS lpNetworkEvents) 00096 { 00097 PWSSOCKET Socket; 00098 INT Status; 00099 INT ErrorCode; 00100 DPRINT("WSAEnumNetworkEvents: %lx\n", s); 00101 00102 /* Check for WSAStartup */ 00103 if ((ErrorCode = WsQuickProlog()) == ERROR_SUCCESS) 00104 { 00105 /* Get the Socket Context */ 00106 if ((Socket = WsSockGetSocket(s))) 00107 { 00108 /* Make the call */ 00109 Status = Socket->Provider->Service.lpWSPEnumNetworkEvents(s, 00110 hEventObject, 00111 lpNetworkEvents, 00112 &ErrorCode); 00113 /* Deference the Socket Context */ 00114 WsSockDereference(Socket); 00115 00116 /* Return Provider Value */ 00117 if (Status == ERROR_SUCCESS) return Status; 00118 } 00119 else 00120 { 00121 /* No Socket Context Found */ 00122 ErrorCode = WSAENOTSOCK; 00123 } 00124 } 00125 00126 /* Return with an Error */ 00127 SetLastError(ErrorCode); 00128 return SOCKET_ERROR; 00129 } 00130 Generated on Fri May 25 2012 04:22:53 for ReactOS by
1.7.6.1
|