ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

event.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.