Ove Kaaven | a39ad1a | 1999-09-27 11:48:11 +0000 | [diff] [blame] | 1 | /* |
James Hatheway | 829405a | 2000-06-18 17:23:17 +0000 | [diff] [blame] | 2 | * Winsock 2 definitions - used for ws2_32.dll |
Ove Kaaven | a39ad1a | 1999-09-27 11:48:11 +0000 | [diff] [blame] | 3 | * |
Alexandre Julliard | 0799c1a | 2002-03-09 23:29:33 +0000 | [diff] [blame] | 4 | * Copyright (C) 1999 Ove Kaaven |
| 5 | * Copyright (C) 2001 Francois Gouget |
| 6 | * |
| 7 | * This library is free software; you can redistribute it and/or |
| 8 | * modify it under the terms of the GNU Lesser General Public |
| 9 | * License as published by the Free Software Foundation; either |
| 10 | * version 2.1 of the License, or (at your option) any later version. |
| 11 | * |
| 12 | * This library is distributed in the hope that it will be useful, |
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 15 | * Lesser General Public License for more details. |
| 16 | * |
| 17 | * You should have received a copy of the GNU Lesser General Public |
| 18 | * License along with this library; if not, write to the Free Software |
| 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| 20 | * |
James Hatheway | 829405a | 2000-06-18 17:23:17 +0000 | [diff] [blame] | 21 | * FIXME: Still missing required Winsock 2 definitions. |
Ove Kaaven | a39ad1a | 1999-09-27 11:48:11 +0000 | [diff] [blame] | 22 | */ |
Ove Kaaven | a39ad1a | 1999-09-27 11:48:11 +0000 | [diff] [blame] | 23 | |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 24 | #ifndef _WINSOCK2API_ |
| 25 | #define _WINSOCK2API_ |
| 26 | |
| 27 | /* |
| 28 | * Setup phase |
| 29 | */ |
| 30 | |
| 31 | /* Everything common between winsock.h and winsock2.h */ |
| 32 | #ifndef INCL_WINSOCK_API_PROTOTYPES |
| 33 | #define INCL_WINSOCK_API_PROTOTYPES 1 |
| 34 | #define WS_API_PROTOTYPES 1 |
| 35 | #else |
| 36 | #define WS_API_PROTOTYPES INCL_WINSOCK_API_PROTOTYPES |
| 37 | #endif |
| 38 | |
| 39 | #ifndef INCL_WINSOCK_API_TYPEDEFS |
| 40 | #define INCL_WINSOCK_API_TYPEDEFS 0 |
| 41 | #define WS_API_TYPEDEFS 0 |
| 42 | #else |
| 43 | #define WS_API_TYPEDEFS INCL_WINSOCK_API_TYPEDEFS |
| 44 | #endif |
| 45 | |
| 46 | #define __WINE_WINSOCK2__ |
Ove Kaaven | a39ad1a | 1999-09-27 11:48:11 +0000 | [diff] [blame] | 47 | #include "winsock.h" |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 48 | #undef __WINE_WINSOCK2__ |
| 49 | |
| 50 | |
| 51 | #ifdef __cplusplus |
| 52 | extern "C" { |
| 53 | #endif /* defined(__cplusplus) */ |
Ove Kaaven | a39ad1a | 1999-09-27 11:48:11 +0000 | [diff] [blame] | 54 | |
Andreas Mohr | ae50941 | 2000-08-03 22:19:09 +0000 | [diff] [blame] | 55 | /* proper 4-byte packing */ |
| 56 | #include "pshpack4.h" |
| 57 | |
Peter Hunnisett | 565b008 | 2000-09-19 02:43:00 +0000 | [diff] [blame] | 58 | |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 59 | #ifndef USE_WS_PREFIX |
| 60 | #define SO_GROUP_ID 0x2001 |
| 61 | #define SO_GROUP_PRIORITY 0x2002 |
| 62 | #define SO_MAX_MSG_SIZE 0x2003 |
| 63 | #define SO_PROTOCOL_INFOA 0x2004 |
| 64 | #define SO_PROTOCOL_INFOW 0x2005 |
| 65 | #define SO_PROTOCOL_INFO WINELIB_NAME_AW(WS_SO_PROTOCOL_INFO) |
| 66 | #define PVD_CONFIG 0x3001 |
| 67 | #define SO_CONDITIONAL_ACCEPT 0x3002 |
| 68 | #else |
| 69 | #define WS_SO_GROUP_ID 0x2001 |
| 70 | #define WS_SO_GROUP_PRIORITY 0x2002 |
| 71 | #define WS_SO_MAX_MSG_SIZE 0x2003 |
| 72 | #define WS_SO_PROTOCOL_INFOA 0x2004 |
| 73 | #define WS_SO_PROTOCOL_INFOW 0x2005 |
| 74 | #define WS_SO_PROTOCOL_INFO WINELIB_NAME_AW(WS_SO_PROTOCOL_INFO) |
| 75 | #define WS_PVD_CONFIG 0x3001 |
| 76 | #define WS_SO_CONDITIONAL_ACCEPT 0x3002 |
| 77 | #endif |
Peter Hunnisett | 565b008 | 2000-09-19 02:43:00 +0000 | [diff] [blame] | 78 | |
| 79 | |
| 80 | /* option flags per socket */ |
| 81 | |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 82 | #define FD_MAX_EVENTS 10 |
| 83 | #define FD_READ_BIT 0 |
| 84 | #define FD_WRITE_BIT 1 |
| 85 | #define FD_OOB_BIT 2 |
| 86 | #define FD_ACCEPT_BIT 3 |
| 87 | #define FD_CONNECT_BIT 4 |
| 88 | #define FD_CLOSE_BIT 5 |
Ove Kaaven | a39ad1a | 1999-09-27 11:48:11 +0000 | [diff] [blame] | 89 | |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 90 | /* Constants for LPCONDITIONPROC */ |
| 91 | #define CF_ACCEPT 0x0000 |
| 92 | #define CF_REJECT 0x0001 |
| 93 | #define CF_DEFER 0x0002 |
| 94 | |
| 95 | /* Constants for shutdown() */ |
| 96 | #define SD_RECEIVE 0x00 |
| 97 | #define SD_SEND 0x01 |
| 98 | #define SD_BOTH 0x02 |
| 99 | |
| 100 | /* Constants for WSAIoctl() */ |
| 101 | #define IOC_UNIX 0x00000000 |
| 102 | #define IOC_WS2 0x08000000 |
| 103 | #define IOC_PROTOCOL 0x10000000 |
| 104 | #define IOC_VENDOR 0x18000000 |
| 105 | #define _WSAIO(x,y) (IOC_VOID|(x)|(y)) |
| 106 | #define _WSAIOR(x,y) (IOC_OUT|(x)|(y)) |
| 107 | #define _WSAIOW(x,y) (IOC_IN|(x)|(y)) |
| 108 | #define _WSAIORW(x,y) (IOC_INOUT|(x)|(y)) |
| 109 | #define SIO_ASSOCIATE_HANDLE _WSAIOW(IOC_WS2,1) |
| 110 | #define SIO_ENABLE_CIRCULAR_QUEUEING _WSAIO(IOC_WS2,2) |
| 111 | #define SIO_FIND_ROUTE _WSAIOR(IOC_WS2,3) |
| 112 | #define SIO_FLUSH _WSAIO(IOC_WS2,4) |
| 113 | #define SIO_GET_BROADCAST_ADDRESS _WSAIOR(IOC_WS2,5) |
James Hatheway | 829405a | 2000-06-18 17:23:17 +0000 | [diff] [blame] | 114 | #define SIO_GET_EXTENSION_FUNCTION_POINTER _WSAIORW(IOC_WS2,6) |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 115 | #define SIO_GET_QOS _WSAIORW(IOC_WS2,7) |
| 116 | #define SIO_GET_GROUP_QOS _WSAIORW(IOC_WS2,8) |
| 117 | #define SIO_MULTIPOINT_LOOPBACK _WSAIOW(IOC_WS2,9) |
| 118 | #define SIO_MULTICAST_SCOPE _WSAIOW(IOC_WS2,10) |
| 119 | #define SIO_SET_QOS _WSAIOW(IOC_WS2,11) |
| 120 | #define SIO_SET_GROUP_QOS _WSAIOW(IOC_WS2,12) |
| 121 | #define SIO_TRANSLATE_HANDLE _WSAIORW(IOC_WS2,13) |
| 122 | #define SIO_ROUTING_INTERFACE_QUERY _WSAIORW(IOC_WS2,20) |
| 123 | #define SIO_ROUTING_INTERFACE_CHANGE _WSAIOW(IOC_WS2,21) |
| 124 | #define SIO_ADDRESS_LIST_QUERY _WSAIOR(IOC_WS2,22) |
| 125 | #define SIO_ADDRESS_LIST_CHANGE _WSAIO(IOC_WS2,23) |
Alexandre Julliard | 28e8029 | 2002-01-12 21:17:51 +0000 | [diff] [blame] | 126 | #define SIO_QUERY_TARGET_PNP_HANDLE _WSAIOR(IOC_WS2,24) |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 127 | #ifndef USE_WS_PREFIX |
| 128 | #define SIO_GET_INTERFACE_LIST _IOR ('t', 127, u_long) |
| 129 | #else |
| 130 | #define SIO_GET_INTERFACE_LIST WS__IOR ('t', 127, u_long) |
James Hatheway | 829405a | 2000-06-18 17:23:17 +0000 | [diff] [blame] | 131 | #endif |
Andreas Mohr | ae50941 | 2000-08-03 22:19:09 +0000 | [diff] [blame] | 132 | |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 133 | /* Constants for WSAIoctl() */ |
| 134 | #define WSA_FLAG_OVERLAPPED 0x01 |
| 135 | #define WSA_FLAG_MULTIPOINT_C_ROOT 0x02 |
| 136 | #define WSA_FLAG_MULTIPOINT_C_LEAF 0x04 |
| 137 | #define WSA_FLAG_MULTIPOINT_D_ROOT 0x08 |
| 138 | #define WSA_FLAG_MULTIPOINT_D_LEAF 0x10 |
James Hatheway | 829405a | 2000-06-18 17:23:17 +0000 | [diff] [blame] | 139 | |
James Hatheway | 829405a | 2000-06-18 17:23:17 +0000 | [diff] [blame] | 140 | |
Alexandre Julliard | 83f52d1 | 2000-09-26 22:20:14 +0000 | [diff] [blame] | 141 | #ifndef GUID_DEFINED |
| 142 | #include "guiddef.h" |
| 143 | #endif |
| 144 | |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 145 | #define MAX_PROTOCOL_CHAIN 7 |
| 146 | #define BASE_PROTOCOL 1 |
| 147 | #define LAYERED_PROTOCOL 0 |
James Hatheway | 829405a | 2000-06-18 17:23:17 +0000 | [diff] [blame] | 148 | |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 149 | typedef struct _WSAPROTOCOLCHAIN |
James Hatheway | 829405a | 2000-06-18 17:23:17 +0000 | [diff] [blame] | 150 | { |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 151 | int ChainLen; /* the length of the chain, */ |
| 152 | /* length = 0 means layered protocol, */ |
| 153 | /* length = 1 means base protocol, */ |
| 154 | /* length > 1 means protocol chain */ |
| 155 | DWORD ChainEntries[MAX_PROTOCOL_CHAIN]; /* a list of dwCatalogEntryIds */ |
James Hatheway | 829405a | 2000-06-18 17:23:17 +0000 | [diff] [blame] | 156 | } WSAPROTOCOLCHAIN, * LPWSAPROTOCOLCHAIN; |
James Hatheway | 829405a | 2000-06-18 17:23:17 +0000 | [diff] [blame] | 157 | |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 158 | #define WSAPROTOCOL_LEN 255 |
| 159 | typedef struct _WSAPROTOCOL_INFOA |
James Hatheway | 829405a | 2000-06-18 17:23:17 +0000 | [diff] [blame] | 160 | { |
| 161 | DWORD dwServiceFlags1; |
| 162 | DWORD dwServiceFlags2; |
| 163 | DWORD dwServiceFlags3; |
| 164 | DWORD dwServiceFlags4; |
| 165 | DWORD dwProviderFlags; |
| 166 | GUID ProviderId; |
| 167 | DWORD dwCatalogEntryId; |
| 168 | WSAPROTOCOLCHAIN ProtocolChain; |
| 169 | int iVersion; |
| 170 | int iAddressFamily; |
| 171 | int iMaxSockAddr; |
| 172 | int iMinSockAddr; |
| 173 | int iSocketType; |
| 174 | int iProtocol; |
| 175 | int iProtocolMaxOffset; |
| 176 | int iNetworkByteOrder; |
| 177 | int iSecurityScheme; |
| 178 | DWORD dwMessageSize; |
| 179 | DWORD dwProviderReserved; |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 180 | CHAR szProtocol[WSAPROTOCOL_LEN+1]; |
James Hatheway | 829405a | 2000-06-18 17:23:17 +0000 | [diff] [blame] | 181 | } WSAPROTOCOL_INFOA, * LPWSAPROTOCOL_INFOA; |
| 182 | |
Andreas Mohr | ab96845 | 2001-10-02 17:46:59 +0000 | [diff] [blame] | 183 | typedef struct _WSAPROTOCOL_INFOW |
| 184 | { |
| 185 | DWORD dwServiceFlags1; |
| 186 | DWORD dwServiceFlags2; |
| 187 | DWORD dwServiceFlags3; |
| 188 | DWORD dwServiceFlags4; |
| 189 | DWORD dwProviderFlags; |
| 190 | GUID ProviderId; |
| 191 | DWORD dwCatalogEntryId; |
| 192 | WSAPROTOCOLCHAIN ProtocolChain; |
| 193 | int iVersion; |
| 194 | int iAddressFamily; |
| 195 | int iMaxSockAddr; |
| 196 | int iMinSockAddr; |
| 197 | int iSocketType; |
| 198 | int iProtocol; |
| 199 | int iProtocolMaxOffset; |
| 200 | int iNetworkByteOrder; |
| 201 | int iSecurityScheme; |
| 202 | DWORD dwMessageSize; |
| 203 | DWORD dwProviderReserved; |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 204 | WCHAR szProtocol[WSAPROTOCOL_LEN+1]; |
| 205 | } WSAPROTOCOL_INFOW, *LPWSAPROTOCOL_INFOW; |
Andreas Mohr | ab96845 | 2001-10-02 17:46:59 +0000 | [diff] [blame] | 206 | |
| 207 | DECL_WINELIB_TYPE_AW(WSAPROTOCOL_INFO) |
| 208 | DECL_WINELIB_TYPE_AW(LPWSAPROTOCOL_INFO) |
| 209 | |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 210 | typedef struct _WSANETWORKEVENTS |
James Hatheway | 829405a | 2000-06-18 17:23:17 +0000 | [diff] [blame] | 211 | { |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 212 | long lNetworkEvents; |
| 213 | int iErrorCode[FD_MAX_EVENTS]; |
Ove Kaaven | a39ad1a | 1999-09-27 11:48:11 +0000 | [diff] [blame] | 214 | } WSANETWORKEVENTS, *LPWSANETWORKEVENTS; |
| 215 | |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 216 | typedef struct _WSABUF |
Peter Hunnisett | de962af | 2001-04-10 21:22:34 +0000 | [diff] [blame] | 217 | { |
| 218 | ULONG len; |
| 219 | CHAR* buf; |
| 220 | } WSABUF, *LPWSABUF; |
| 221 | |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 222 | #define WSAEVENT HANDLE |
| 223 | #define LPWSAEVENT LPHANDLE |
| 224 | #define WSAOVERLAPPED OVERLAPPED |
| 225 | typedef struct _OVERLAPPED* LPWSAOVERLAPPED; |
| 226 | |
| 227 | #define WSA_IO_PENDING (ERROR_IO_PENDING) |
| 228 | #define WSA_IO_INCOMPLETE (ERROR_IO_INCOMPLETE) |
| 229 | #define WSA_INVALID_HANDLE (ERROR_INVALID_HANDLE) |
| 230 | #define WSA_INVALID_PARAMETER (ERROR_INVALID_PARAMETER) |
| 231 | #define WSA_NOT_ENOUGH_MEMORY (ERROR_NOT_ENOUGH_MEMORY) |
| 232 | #define WSA_OPERATION_ABORTED (ERROR_OPERATION_ABORTED) |
| 233 | |
| 234 | #define WSA_INVALID_EVENT ((WSAEVENT)NULL) |
| 235 | #define WSA_MAXIMUM_WAIT_EVENTS (MAXIMUM_WAIT_OBJECTS) |
| 236 | #define WSA_WAIT_FAILED ((DWORD)-1L) |
| 237 | #define WSA_WAIT_EVENT_0 (WAIT_OBJECT_0) |
| 238 | #define WSA_WAIT_IO_COMPLETION (WAIT_IO_COMPLETION) |
| 239 | #define WSA_WAIT_TIMEOUT (WAIT_TIMEOUT) |
| 240 | #define WSA_INFINITE (INFINITE) |
| 241 | |
James Hatheway | 829405a | 2000-06-18 17:23:17 +0000 | [diff] [blame] | 242 | typedef unsigned int GROUP; |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 243 | #define SG_UNCONSTRAINED_GROUP 0x01 |
| 244 | #define SG_CONSTRAINED_GROUP 0x02 |
| 245 | |
Daniel Walker | 40491ec | 2002-01-14 18:33:44 +0000 | [diff] [blame] | 246 | /* |
| 247 | * FLOWSPEC and SERVICETYPE should eventually move to qos.h |
| 248 | */ |
| 249 | |
| 250 | typedef ULONG SERVICETYPE; |
| 251 | |
| 252 | typedef struct _FLOWSPEC { |
| 253 | unsigned int TokenRate; |
| 254 | unsigned int TokenBucketSize; |
| 255 | unsigned int PeakBandwidth; |
| 256 | unsigned int Latency; |
| 257 | unsigned int DelayVariation; |
| 258 | SERVICETYPE ServiceType; |
| 259 | unsigned int MaxSduSize; |
| 260 | unsigned int MinimumPolicedSize; |
| 261 | } FLOWSPEC, *PFLOWSPEC, *LPFLOWSPEC; |
| 262 | |
| 263 | typedef struct _QUALITYOFSERVICE { |
| 264 | FLOWSPEC SendingFlowspec; |
| 265 | FLOWSPEC ReceivingFlowspec; |
Vincent BĂ©ron | 9a62491 | 2002-05-31 23:06:46 +0000 | [diff] [blame] | 266 | WSABUF ProviderSpecific; |
Daniel Walker | 40491ec | 2002-01-14 18:33:44 +0000 | [diff] [blame] | 267 | } QOS, *LPQOS; |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 268 | |
Patrik Stridvall | f94462f | 2002-01-31 23:22:07 +0000 | [diff] [blame] | 269 | typedef int (CALLBACK *LPCONDITIONPROC) |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 270 | ( |
| 271 | LPWSABUF lpCallerId, |
| 272 | LPWSABUF lpCallerData, |
| 273 | LPQOS lpSQOS, |
| 274 | LPQOS lpGQOS, |
| 275 | LPWSABUF lpCalleeId, |
| 276 | LPWSABUF lpCalleeData, |
| 277 | GROUP *g, |
| 278 | DWORD dwCallbackData |
| 279 | ); |
Ove Kaaven | a39ad1a | 1999-09-27 11:48:11 +0000 | [diff] [blame] | 280 | |
Patrik Stridvall | f94462f | 2002-01-31 23:22:07 +0000 | [diff] [blame] | 281 | typedef void (CALLBACK *LPWSAOVERLAPPED_COMPLETION_ROUTINE) |
James Hatheway | 829405a | 2000-06-18 17:23:17 +0000 | [diff] [blame] | 282 | ( |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 283 | DWORD dwError, |
| 284 | DWORD cbTransferred, |
| 285 | LPWSAOVERLAPPED lpOverlapped, |
| 286 | DWORD dwFlags |
James Hatheway | 829405a | 2000-06-18 17:23:17 +0000 | [diff] [blame] | 287 | ); |
Ove Kaaven | a39ad1a | 1999-09-27 11:48:11 +0000 | [diff] [blame] | 288 | |
James Hatheway | 829405a | 2000-06-18 17:23:17 +0000 | [diff] [blame] | 289 | |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 290 | |
| 291 | /* |
| 292 | * Winsock Function Typedefs |
| 293 | * |
Vincent BĂ©ron | 9a62491 | 2002-05-31 23:06:46 +0000 | [diff] [blame] | 294 | * Remember to keep this section in sync with the |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 295 | * "Prototypes" section in winsock.h. |
| 296 | */ |
| 297 | #if WS_API_TYPEDEFS |
Patrik Stridvall | 1a4db3e | 2002-09-23 20:45:57 +0000 | [diff] [blame] | 298 | typedef HANDLE (WINAPI *LPFN_WSAASYNCGETHOSTBYADDR)(HWND,u_int,const char*,int,int,char*,int); |
| 299 | typedef HANDLE (WINAPI *LPFN_WSAASYNCGETHOSTBYNAME)(HWND,u_int,const char*,char*,int); |
| 300 | typedef HANDLE (WINAPI *LPFN_WSAASYNCGETPROTOBYNAME)(HWND,u_int,const char*,char*,int); |
| 301 | typedef HANDLE (WINAPI *LPFN_WSAASYNCGETPROTOBYNUMBER)(HWND,u_int,int,char*,int); |
| 302 | typedef HANDLE (WINAPI *LPFN_WSAASYNCGETSERVBYNAME)(HWND,u_int,const char*,const char*,char*,int); |
| 303 | typedef HANDLE (WINAPI *LPFN_WSAASYNCGETSERVBYPORT)(HWND,u_int,int,const char*,char*,int); |
| 304 | typedef int (WINAPI *LPFN_WSAASYNCSELECT)(SOCKET,HWND,u_int,long); |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 305 | typedef int (WINAPI *LPFN_WSACANCELASYNCREQUEST)(HANDLE)); |
Patrik Stridvall | 1a4db3e | 2002-09-23 20:45:57 +0000 | [diff] [blame] | 306 | typedef int (WINAPI *LPFN_WSACANCELBLOCKINGCALL)(void); |
| 307 | typedef int (WINAPI *LPFN_WSACLEANUP)(void); |
| 308 | typedef int (WINAPI *LPFN_WSAGETLASTERROR)(void); |
| 309 | typedef BOOL (WINAPI *LPFN_WSAISBLOCKING)(void); |
| 310 | typedef FARPROC (WINAPI *LPFN_WSASETBLOCKINGHOOK)(FARPROC); |
| 311 | typedef void (WINAPI *LPFN_WSASETLASTERROR)(int); |
| 312 | typedef int (WINAPI *LPFN_WSASTARTUP)(WORD,LPWSADATA); |
| 313 | typedef int (WINAPI *LPFN_WSAUNHOOKBLOCKINGHOOK)(void); |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 314 | |
Patrik Stridvall | 1a4db3e | 2002-09-23 20:45:57 +0000 | [diff] [blame] | 315 | typedef SOCKET (WINAPI *LPFN_ACCEPT)(SOCKET,struct WS(sockaddr)*,int*); |
| 316 | typedef int (WINAPI *LPFN_BIND)(SOCKET,const struct WS(sockaddr)*,int); |
| 317 | typedef int (WINAPI *LPFN_CLOSESOCKET)(SOCKET); |
| 318 | typedef int (WINAPI *LPFN_CONNECT)(SOCKET,const struct WS(sockaddr)*,int); |
| 319 | typedef struct WS(hostent)* (WINAPI *LPFN_GETHOSTBYADDR)(const char*,int,int); |
| 320 | typedef struct WS(hostent)* (WINAPI *LPFN_GETHOSTBYNAME)(const char*); |
| 321 | typedef int (WINAPI *LPFN_GETHOSTNAME)(char*,int); |
| 322 | typedef int (WINAPI *LPFN_GETPEERNAME)(SOCKET,struct WS(sockaddr)*,int*); |
| 323 | typedef struct WS(protoent)* (WINAPI *LPFN_GETPROTOBYNAME)(const char*); |
| 324 | typedef struct WS(protoent)* (WINAPI *LPFN_GETPROTOBYNUMBER)(int); |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 325 | #ifdef WS_DEFINE_SELECT |
| 326 | typedef int (WINAPI* LPFN_SELECT)(int,WS(fd_set)*,WS(fd_set)*,WS(fd_set)*,const struct WS(timeval)*); |
| 327 | #endif |
Patrik Stridvall | 1a4db3e | 2002-09-23 20:45:57 +0000 | [diff] [blame] | 328 | typedef struct WS(servent)* (WINAPI *LPFN_GETSERVBYNAME)(const char*,const char*); |
| 329 | typedef struct WS(servent)* (WINAPI *LPFN_GETSERVBYPORT)(int,const char*); |
| 330 | typedef int (WINAPI *LPFN_GETSOCKNAME)(SOCKET,struct WS(sockaddr)*,int*); |
| 331 | typedef int (WINAPI *LPFN_GETSOCKOPT)(SOCKET,int,int,char*,int*); |
| 332 | typedef u_long (WINAPI *LPFN_HTONL)(u_long); |
| 333 | typedef u_short (WINAPI *LPFN_HTONS)(u_short); |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 334 | typedef unsigned long (WINAPI *LPFN_INET_ADDR)(const char*); |
Patrik Stridvall | 1a4db3e | 2002-09-23 20:45:57 +0000 | [diff] [blame] | 335 | typedef char* (WINAPI *LPFN_INET_NTOA)(struct WS(in_addr); |
| 336 | typedef int (WINAPI *LPFN_IOCTLSOCKET)(SOCKET,long,u_long*); |
| 337 | typedef int (WINAPI *LPFN_LISTEN)(SOCKET,int); |
| 338 | typedef u_long (WINAPI *LPFN_NTOHL)(u_long); |
| 339 | typedef u_short (WINAPI *LPFN_NTOHS)(u_short); |
| 340 | typedef int (WINAPI *LPFN_RECV)(SOCKET,char*,int,int); |
| 341 | typedef int (WINAPI *LPFN_RECVFROM)(SOCKET,char*,int,int,struct WS(sockaddr)*,int*); |
| 342 | typedef int (WINAPI *LPFN_SEND)(SOCKET,const char*,int,int); |
| 343 | typedef int (WINAPI *LPFN_SENDTO)(SOCKET,const char*,int,int,const struct WS(sockaddr)*,int); |
| 344 | typedef int (WINAPI *LPFN_SETSOCKOPT)(SOCKET,int,int,const char*,int); |
| 345 | typedef int (WINAPI *LPFN_SHUTDOWN)(SOCKET,int); |
| 346 | typedef SOCKET (WINAPI *LPFN_SOCKET)(int,int,int); |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 347 | #endif /* WS_API_TYPEDEFS */ |
| 348 | |
| 349 | |
| 350 | |
| 351 | /* |
| 352 | * Winsock2 Prototypes |
| 353 | * |
Vincent BĂ©ron | 9a62491 | 2002-05-31 23:06:46 +0000 | [diff] [blame] | 354 | * Remember to keep this section in sync with the |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 355 | * "Winsock2 Function Typedefs" section below. |
| 356 | */ |
| 357 | #if WS_API_PROTOTYPES |
| 358 | SOCKET WINAPI WSAAccept(SOCKET,struct WS(sockaddr)*,LPINT,LPCONDITIONPROC,DWORD); |
| 359 | INT WINAPI WSAAddressToStringA(LPSOCKADDR,DWORD,LPWSAPROTOCOL_INFOA,LPSTR,LPDWORD); |
| 360 | INT WINAPI WSAAddressToStringW(LPSOCKADDR,DWORD,LPWSAPROTOCOL_INFOW,LPWSTR,LPDWORD); |
| 361 | #define WSAAddressToString WINELIB_NAME_AW(WSAAddressToString) |
| 362 | BOOL WINAPI WSACloseEvent(WSAEVENT); |
| 363 | int WINAPI WSAConnect(SOCKET,const struct WS(sockaddr)*,int,LPWSABUF,LPWSABUF,LPQOS,LPQOS); |
James Hatheway | 829405a | 2000-06-18 17:23:17 +0000 | [diff] [blame] | 364 | WSAEVENT WINAPI WSACreateEvent(void); |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 365 | /* WSADuplicateSocketA */ |
| 366 | /* WSADuplicateSocketW */ |
| 367 | /* WSAEnumNameSpaceProvidersA */ |
| 368 | /* WSAEnumNameSpaceProvidersW */ |
| 369 | int WINAPI WSAEnumNetworkEvents(SOCKET,WSAEVENT,LPWSANETWORKEVENTS); |
| 370 | int WINAPI WSAEnumProtocolsA(LPINT,LPWSAPROTOCOL_INFOA,LPDWORD); |
| 371 | int WINAPI WSAEnumProtocolsW(LPINT,LPWSAPROTOCOL_INFOW,LPDWORD); |
| 372 | #define WSAEnumProtocols WINELIB_NAME_AW(WSAEnumProtocols) |
| 373 | int WINAPI WSAEventSelect(SOCKET,WSAEVENT,long); |
| 374 | BOOL WINAPI WSAGetOverlappedResult(SOCKET,LPWSAOVERLAPPED,LPDWORD,BOOL,LPDWORD); |
| 375 | /* WSAGetQOSByName */ |
| 376 | /* WSAGetServiceClassInfoA */ |
| 377 | /* WSAGetServiceClassInfoW */ |
| 378 | /* WSAGetServiceClassNameByClassIdA */ |
| 379 | /* WSAGetServiceClassNameByClassIdW */ |
| 380 | int WINAPI WSAHtonl(SOCKET,u_long,u_long*); |
| 381 | int WINAPI WSAHtons(SOCKET,u_short,u_short*); |
| 382 | /* WSAInstallServiceClassA */ |
| 383 | /* WSAInstallServiceClassW */ |
| 384 | int WINAPI WSAIoctl(SOCKET,DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE); |
| 385 | /* WSAJoinLeaf */ |
| 386 | /* WSALookupServiceBeginA */ |
| 387 | /* WSALookupServiceBeginW */ |
| 388 | /* WSALookupServiceEnd */ |
| 389 | /* WSALookupServiceNextA */ |
| 390 | /* WSALookupServiceNextW */ |
| 391 | int WINAPI WSANtohl(SOCKET,u_long,u_long*); |
| 392 | int WINAPI WSANtohs(SOCKET,u_short,u_short*); |
| 393 | /* WSAProviderConfigChange */ |
| 394 | int WINAPI WSARecv(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE); |
| 395 | int WINAPI WSARecvDisconnect(SOCKET,LPWSABUF); |
| 396 | int WINAPI WSARecvFrom(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,struct WS(sockaddr)*,LPINT,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE); |
| 397 | /* WSARemoveServiceClass */ |
| 398 | BOOL WINAPI WSAResetEvent(WSAEVENT); |
| 399 | int WINAPI WSASend(SOCKET,LPWSABUF,DWORD,LPDWORD,DWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE); |
| 400 | int WINAPI WSASendDisconnect(SOCKET,LPWSABUF); |
| 401 | int WINAPI WSASendTo(SOCKET,LPWSABUF,DWORD,LPDWORD,DWORD,const struct WS(sockaddr)*,int,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE); |
| 402 | BOOL WINAPI WSASetEvent(WSAEVENT); |
| 403 | /* WSASetServiceA */ |
| 404 | /* WSASetServiceW */ |
| 405 | SOCKET WINAPI WSASocketA(int,int,int,LPWSAPROTOCOL_INFOA,GROUP,DWORD); |
| 406 | SOCKET WINAPI WSASocketW(int,int,int,LPWSAPROTOCOL_INFOW,GROUP,DWORD); |
| 407 | INT WINAPI WSAStringToAddressA(LPSTR,INT,LPWSAPROTOCOL_INFOA,LPSOCKADDR,LPINT); |
| 408 | INT WINAPI WSAStringToAddressW(LPSTR,INT,LPWSAPROTOCOL_INFOA,LPSOCKADDR,LPINT); |
| 409 | #define WSASocket WINELIB_NAME_AW(WSASocket) |
| 410 | #define WSAStringToAddress WINELIB_NAME_AW(WSAStringToAddress) |
| 411 | DWORD WINAPI WSAWaitForMultipleEvents(DWORD,const WSAEVENT*,BOOL,DWORD,BOOL); |
| 412 | #endif /* WS_API_PROTOTYPES */ |
| 413 | |
| 414 | |
| 415 | |
| 416 | /* |
| 417 | * Winsock2 Function Typedefs |
| 418 | * |
Vincent BĂ©ron | 9a62491 | 2002-05-31 23:06:46 +0000 | [diff] [blame] | 419 | * Remember to keep this section in sync with the |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 420 | * "Winsock2 Prototypes" section above. |
| 421 | */ |
| 422 | #if WS_API_TYPEDEFS |
| 423 | typedef SOCKET (WINAPI *LPFN_WSAACCEPT)(SOCKET,WS(sockaddr)*,LPINT,LPCONDITIONPROC,DWORD); |
| 424 | typedef INT (WINAPI *LPFN_WSAADRESSTOSTRINGA)(LPSOCKADDR,DWORD,LPWSAPROTOCOL_INFOA,LPSTR,LPDWORD); |
| 425 | typedef INT (WINAPI *LPFN_WSAADRESSTOSTRINGW)(LPSOCKADDR,DWORD,LPWSAPROTOCOL_INFOW,LPWSTR,LPDWORD); |
| 426 | #define LPFN_WSAADDRESSTOSTRING WINELIB_NAME_AW(LPFN_WSAADDRESSTOSTRING) |
| 427 | typedef BOOL (WINAPI *LPFN_WSACLOSEEVENT)(WSAEVENT); |
| 428 | typedef int (WINAPI *LPFN_WSACONNECT)(SOCKET,const struct WS(sockaddr)*,int,LPWSABUF,LPWSABUF,LPQOS,LPQOS); |
| 429 | typedef WSAEVENT (WINAPI *LPFN_WSACREATEEVENT)(void); |
| 430 | /* WSADuplicateSocketA */ |
| 431 | /* WSADuplicateSocketW */ |
| 432 | /* WSAEnumNameSpaceProvidersA */ |
| 433 | /* WSAEnumNameSpaceProvidersW */ |
| 434 | typedef int (WINAPI *LPFN_WSAENUMNETWORKEVENT)(SOCKET,WSAEVENT,LPWSANETWORKEVENTS); |
| 435 | typedef int (WINAPI *LPFN_WSAENUMPROTOCOLSA)(LPINT,LPWSAPROTOCOL_INFOA,LPDWORD); |
| 436 | typedef int (WINAPI *LPFN_WSAENUMPROTOCOLSW)(LPINT,LPWSAPROTOCOL_INFOW,LPDWORD); |
| 437 | #define LPFN_WSAENUMPROTOCOLS WINELIB_NAME_AW(LPFN_WSAENUMPROTOCOLS) |
| 438 | typedef int (WINAPI *LPFN_WSAEVENTSELECT)(SOCKET,WSAEVENT,long); |
| 439 | typedef BOOL (WINAPI *LPFN_WSAGETOVERLAPPEDRESULT)(SOCKET,LPWSAOVERLAPPED,LPDWORD,BOOL,LPDWORD); |
| 440 | /* WSAGetQOSByName */ |
| 441 | /* WSAGetServiceClassInfoA */ |
| 442 | /* WSAGetServiceClassInfoW */ |
| 443 | /* WSAGetServiceClassNameByClassIdA */ |
| 444 | /* WSAGetServiceClassNameByClassIdW */ |
| 445 | typedef int (WINAPI *LPFN_WSAHTONL)(SOCKET,u_long,u_long*); |
| 446 | typedef int (WINAPI *LPFN_WSAHTONS)(SOCKET,u_short,u_short*); |
| 447 | /* WSAInstallServiceClassA */ |
| 448 | /* WSAInstallServiceClassW */ |
| 449 | typedef int (WINAPI *LPFN_WSAIOCTL)(SOCKET,DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE); |
| 450 | /* WSAJoinLeaf */ |
| 451 | /* WSALookupServiceBeginA */ |
| 452 | /* WSALookupServiceBeginW */ |
| 453 | /* WSALookupServiceEnd */ |
| 454 | /* WSALookupServiceNextA */ |
| 455 | /* WSALookupServiceNextW */ |
| 456 | typedef int (WINAPI *LPFN_WSANTOHL)(SOCKET,u_long,u_long*); |
| 457 | typedef int (WINAPI *LPFN_WSANTOHS)(SOCKET,u_short,u_short*); |
| 458 | /* WSAProviderConfigChange */ |
| 459 | typedef int (WINAPI *LPFN_WSARECV)(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE); |
| 460 | typedef int (WINAPI *LPFN_WSARECVDISCONNECT)(SOCKET,LPWSABUF); |
| 461 | typedef int (WINAPI *LPFN_WSARECVFROM)(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,struct WS(sockaddr)*,LPINT,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE); |
| 462 | /* WSARemoveServiceClass */ |
| 463 | typedef BOOL (WINAPI *LPFN_WSARESETEVENT)(WSAEVENT); |
| 464 | typedef int (WINAPI *LPFN_WSASEND)(SOCKET,LPWSABUF,DWORD,LPDWORD,DWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE); |
| 465 | typedef int (WINAPI *LPFN_WSASENDDISCONNECT)(SOCKET,LPWSABUF); |
| 466 | typedef int (WINAPI *LPFN_WSASENDTO)(SOCKET,LPWSABUF,DWORD,LPDWORD,DWORD,const struct WS(sockaddr)*,int,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE); |
| 467 | typedef BOOL (WINAPI *LPFN_WSASETEVENT)(WSAEVENT); |
| 468 | /* WSASetServiceA */ |
| 469 | /* WSASetServiceW */ |
| 470 | typedef SOCKET (WINAPI *LPFN_WSASOCKETA)(int,int,int,LPWSAPROTOCOL_INFOA,GROUP,DWORD); |
| 471 | typedef SOCKET (WINAPI *LPFN_WSASOCKETW)(int,int,int,LPWSAPROTOCOL_INFOW,GROUP,DWORD); |
| 472 | typedef INT (WINAPI *LPFN_WSASTRINGTOADDRESSA)(LPSTR,INT,LPWSAPROTOCOL_INFOA,LPSOCKADDR,LPINT); |
| 473 | typedef INT (WINAPI *LPFN_WSASTRINGTOADDRESSW)(LPSTR,INT,LPWSAPROTOCOL_INFOA,LPSOCKADDR,LPINT); |
| 474 | #define LPFN_WSASOCKET WINELIB_NAME_AW(LPFN_WSASOCKET) |
| 475 | #define LPFN_WSASTRINGTOADDRESS WINELIB_NAME_AW(LPFN_WSASTRINGTOADDRESS) |
| 476 | typedef DWORD (WINAPI *LPFN_WSAWAITFORMULTIPLEEVENTS)(DWORD,const WSAEVENT*,BOOL,DWORD,BOOL); |
| 477 | #endif /* WS_API_TYPEDEFS */ |
| 478 | |
Ove Kaaven | a39ad1a | 1999-09-27 11:48:11 +0000 | [diff] [blame] | 479 | |
Daniel Walker | 40491ec | 2002-01-14 18:33:44 +0000 | [diff] [blame] | 480 | /* Condition function return values */ |
| 481 | #define CF_ACCEPT 0x0000 |
| 482 | #define CF_REJECT 0x0001 |
| 483 | #define CF_DEFER 0x0002 |
| 484 | |
Andreas Mohr | ae50941 | 2000-08-03 22:19:09 +0000 | [diff] [blame] | 485 | #include "poppack.h" |
| 486 | |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 487 | #ifdef __cplusplus |
| 488 | } |
Ove Kaaven | a39ad1a | 1999-09-27 11:48:11 +0000 | [diff] [blame] | 489 | #endif |
Francois Gouget | 2720231 | 2001-11-14 21:26:23 +0000 | [diff] [blame] | 490 | |
| 491 | #undef WS |
| 492 | #undef WS_API_PROTOTYPES |
| 493 | #undef WS_API_TYPEDEFS |
| 494 | |
| 495 | #endif /* __WINSOCK2API__ */ |