From: Bruno Jesus <00cpxxx@gmail.com> Subject: [1/3] include: Add stuff related to WSAPoll() (try 2) Message-Id: Date: Fri, 22 May 2015 22:42:53 -0300 try 2: I found the solution to typedef the struct pollfd just like it's done with fd_set. --- include/winsock2.h | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/include/winsock2.h b/include/winsock2.h index fa3d26b..a96adab 100644 --- a/include/winsock2.h +++ b/include/winsock2.h @@ -112,6 +112,31 @@ extern "C" { #define SD_SEND 0x01 #define SD_BOTH 0x02 +/* Constants for WSAPoll() */ +#ifndef USE_WS_PREFIX +#define POLLERR 0x0001 +#define POLLHUP 0x0002 +#define POLLNVAL 0x0004 +#define POLLWRNORM 0x0010 +#define POLLWRBAND 0x0020 +#define POLLRDNORM 0x0100 +#define POLLRDBAND 0x0200 +#define POLLPRI 0x0400 +#define POLLIN (POLLRDNORM|POLLRDBAND) +#define POLLOUT (POLLWRNORM) +#else +#define WS_POLLERR 0x0001 +#define WS_POLLHUP 0x0002 +#define WS_POLLNVAL 0x0004 +#define WS_POLLWRNORM 0x0010 +#define WS_POLLWRBAND 0x0020 +#define WS_POLLRDNORM 0x0100 +#define WS_POLLRDBAND 0x0200 +#define WS_POLLPRI 0x0400 +#define WS_POLLIN (WS_POLLRDNORM|WS_POLLRDBAND) +#define WS_POLLOUT (WS_POLLWRNORM) +#endif + /* Constants for WSAIoctl() */ #ifdef USE_WS_PREFIX #define WS_IOC_UNIX 0x00000000 @@ -259,6 +284,13 @@ typedef struct _WSAPROTOCOLCHAIN #define SECURITY_PROTOCOL_NONE 0x0000 +typedef struct WS(pollfd) +{ + SOCKET fd; + SHORT events; + SHORT revents; +} WSAPOLLFD; + #define WSAPROTOCOL_LEN 255 typedef struct _WSAPROTOCOL_INFOA { @@ -662,6 +694,7 @@ INT WINAPI WSALookupServiceNextW(HANDLE,DWORD,LPDWORD,LPWSAQUERYSETW); int WINAPI WSANSPIoctl(HANDLE,DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,LPWSACOMPLETION); int WINAPI WSANtohl(SOCKET,ULONG,ULONG*); int WINAPI WSANtohs(SOCKET,WS(u_short),WS(u_short)*); +int WINAPI WSAPoll(WSAPOLLFD*,ULONG,int); INT WINAPI WSAProviderConfigChange(LPHANDLE,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE); int WINAPI WSARecv(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE); int WINAPI WSARecvDisconnect(SOCKET,LPWSABUF); @@ -736,6 +769,7 @@ typedef int (WINAPI *LPFN_WSANSPIOCTL)(HANDLE,DWORD,LPVOID,DWORD,LPVOID,DWORD,LP typedef int (WINAPI *LPFN_WSANTOHL)(SOCKET,ULONG,ULONG*); typedef int (WINAPI *LPFN_WSANTOHS)(SOCKET,WS(u_short),WS(u_short)*); typedef INT (WINAPI *LPFN_WSAPROVIDERCONFIGCHANGE)(LPHANDLE,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE); +typedef int (WINAPI *LPFN_WSAPOLL)(WSAPOLLFD*,ULONG,int); typedef int (WINAPI *LPFN_WSARECV)(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE); typedef int (WINAPI *LPFN_WSARECVDISCONNECT)(SOCKET,LPWSABUF); typedef int (WINAPI *LPFN_WSARECVFROM)(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,struct WS(sockaddr)*,LPINT,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE); -- 2.1.4