blob: 89dc4c638a112a3003fff29ce553ff1f69b42979 [file] [log] [blame]
Ove Kaavena39ad1a1999-09-27 11:48:11 +00001/*
James Hatheway829405a2000-06-18 17:23:17 +00002 * Winsock 2 definitions - used for ws2_32.dll
Ove Kaavena39ad1a1999-09-27 11:48:11 +00003 *
Alexandre Julliard0799c1a2002-03-09 23:29:33 +00004 * 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 Hatheway829405a2000-06-18 17:23:17 +000021 * FIXME: Still missing required Winsock 2 definitions.
Ove Kaavena39ad1a1999-09-27 11:48:11 +000022 */
Ove Kaavena39ad1a1999-09-27 11:48:11 +000023
Francois Gouget27202312001-11-14 21:26:23 +000024#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 Kaavena39ad1a1999-09-27 11:48:11 +000047#include "winsock.h"
Francois Gouget27202312001-11-14 21:26:23 +000048#undef __WINE_WINSOCK2__
49
50
51#ifdef __cplusplus
52extern "C" {
53#endif /* defined(__cplusplus) */
Ove Kaavena39ad1a1999-09-27 11:48:11 +000054
Andreas Mohrae509412000-08-03 22:19:09 +000055/* proper 4-byte packing */
56#include "pshpack4.h"
57
Peter Hunnisett565b0082000-09-19 02:43:00 +000058
Francois Gouget27202312001-11-14 21:26:23 +000059#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 Hunnisett565b0082000-09-19 02:43:00 +000078
79
80/* option flags per socket */
81
Francois Gouget27202312001-11-14 21:26:23 +000082#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 Kaavena39ad1a1999-09-27 11:48:11 +000089
Francois Gouget27202312001-11-14 21:26:23 +000090/* 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 Hatheway829405a2000-06-18 17:23:17 +0000114#define SIO_GET_EXTENSION_FUNCTION_POINTER _WSAIORW(IOC_WS2,6)
Francois Gouget27202312001-11-14 21:26:23 +0000115#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 Julliard28e80292002-01-12 21:17:51 +0000126#define SIO_QUERY_TARGET_PNP_HANDLE _WSAIOR(IOC_WS2,24)
Francois Gouget27202312001-11-14 21:26:23 +0000127#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 Hatheway829405a2000-06-18 17:23:17 +0000131#endif
Andreas Mohrae509412000-08-03 22:19:09 +0000132
Francois Gouget27202312001-11-14 21:26:23 +0000133/* 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 Hatheway829405a2000-06-18 17:23:17 +0000139
James Hatheway829405a2000-06-18 17:23:17 +0000140
Alexandre Julliard83f52d12000-09-26 22:20:14 +0000141#ifndef GUID_DEFINED
142#include "guiddef.h"
143#endif
144
Francois Gouget27202312001-11-14 21:26:23 +0000145#define MAX_PROTOCOL_CHAIN 7
146#define BASE_PROTOCOL 1
147#define LAYERED_PROTOCOL 0
James Hatheway829405a2000-06-18 17:23:17 +0000148
Francois Gouget27202312001-11-14 21:26:23 +0000149typedef struct _WSAPROTOCOLCHAIN
James Hatheway829405a2000-06-18 17:23:17 +0000150{
Francois Gouget27202312001-11-14 21:26:23 +0000151 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 Hatheway829405a2000-06-18 17:23:17 +0000156} WSAPROTOCOLCHAIN, * LPWSAPROTOCOLCHAIN;
James Hatheway829405a2000-06-18 17:23:17 +0000157
Francois Gouget27202312001-11-14 21:26:23 +0000158#define WSAPROTOCOL_LEN 255
159typedef struct _WSAPROTOCOL_INFOA
James Hatheway829405a2000-06-18 17:23:17 +0000160{
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 Gouget27202312001-11-14 21:26:23 +0000180 CHAR szProtocol[WSAPROTOCOL_LEN+1];
James Hatheway829405a2000-06-18 17:23:17 +0000181} WSAPROTOCOL_INFOA, * LPWSAPROTOCOL_INFOA;
182
Andreas Mohrab968452001-10-02 17:46:59 +0000183typedef 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 Gouget27202312001-11-14 21:26:23 +0000204 WCHAR szProtocol[WSAPROTOCOL_LEN+1];
205} WSAPROTOCOL_INFOW, *LPWSAPROTOCOL_INFOW;
Andreas Mohrab968452001-10-02 17:46:59 +0000206
207DECL_WINELIB_TYPE_AW(WSAPROTOCOL_INFO)
208DECL_WINELIB_TYPE_AW(LPWSAPROTOCOL_INFO)
209
Francois Gouget27202312001-11-14 21:26:23 +0000210typedef struct _WSANETWORKEVENTS
James Hatheway829405a2000-06-18 17:23:17 +0000211{
Francois Gouget27202312001-11-14 21:26:23 +0000212 long lNetworkEvents;
213 int iErrorCode[FD_MAX_EVENTS];
Ove Kaavena39ad1a1999-09-27 11:48:11 +0000214} WSANETWORKEVENTS, *LPWSANETWORKEVENTS;
215
Francois Gouget27202312001-11-14 21:26:23 +0000216typedef struct _WSABUF
Peter Hunnisettde962af2001-04-10 21:22:34 +0000217{
218 ULONG len;
219 CHAR* buf;
220} WSABUF, *LPWSABUF;
221
Francois Gouget27202312001-11-14 21:26:23 +0000222#define WSAEVENT HANDLE
223#define LPWSAEVENT LPHANDLE
224#define WSAOVERLAPPED OVERLAPPED
225typedef 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 Hatheway829405a2000-06-18 17:23:17 +0000242typedef unsigned int GROUP;
Francois Gouget27202312001-11-14 21:26:23 +0000243#define SG_UNCONSTRAINED_GROUP 0x01
244#define SG_CONSTRAINED_GROUP 0x02
245
Daniel Walker40491ec2002-01-14 18:33:44 +0000246/*
247 * FLOWSPEC and SERVICETYPE should eventually move to qos.h
248 */
249
250typedef ULONG SERVICETYPE;
251
252typedef 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
263typedef struct _QUALITYOFSERVICE {
264 FLOWSPEC SendingFlowspec;
265 FLOWSPEC ReceivingFlowspec;
Vincent BĂ©ron9a624912002-05-31 23:06:46 +0000266 WSABUF ProviderSpecific;
Daniel Walker40491ec2002-01-14 18:33:44 +0000267 } QOS, *LPQOS;
Francois Gouget27202312001-11-14 21:26:23 +0000268
Patrik Stridvallf94462f2002-01-31 23:22:07 +0000269typedef int (CALLBACK *LPCONDITIONPROC)
Francois Gouget27202312001-11-14 21:26:23 +0000270(
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 Kaavena39ad1a1999-09-27 11:48:11 +0000280
Patrik Stridvallf94462f2002-01-31 23:22:07 +0000281typedef void (CALLBACK *LPWSAOVERLAPPED_COMPLETION_ROUTINE)
James Hatheway829405a2000-06-18 17:23:17 +0000282(
Francois Gouget27202312001-11-14 21:26:23 +0000283 DWORD dwError,
284 DWORD cbTransferred,
285 LPWSAOVERLAPPED lpOverlapped,
286 DWORD dwFlags
James Hatheway829405a2000-06-18 17:23:17 +0000287);
Ove Kaavena39ad1a1999-09-27 11:48:11 +0000288
James Hatheway829405a2000-06-18 17:23:17 +0000289
Francois Gouget27202312001-11-14 21:26:23 +0000290
291/*
292 * Winsock Function Typedefs
293 *
Vincent BĂ©ron9a624912002-05-31 23:06:46 +0000294 * Remember to keep this section in sync with the
Francois Gouget27202312001-11-14 21:26:23 +0000295 * "Prototypes" section in winsock.h.
296 */
297#if WS_API_TYPEDEFS
Patrik Stridvall1a4db3e2002-09-23 20:45:57 +0000298typedef HANDLE (WINAPI *LPFN_WSAASYNCGETHOSTBYADDR)(HWND,u_int,const char*,int,int,char*,int);
299typedef HANDLE (WINAPI *LPFN_WSAASYNCGETHOSTBYNAME)(HWND,u_int,const char*,char*,int);
300typedef HANDLE (WINAPI *LPFN_WSAASYNCGETPROTOBYNAME)(HWND,u_int,const char*,char*,int);
301typedef HANDLE (WINAPI *LPFN_WSAASYNCGETPROTOBYNUMBER)(HWND,u_int,int,char*,int);
302typedef HANDLE (WINAPI *LPFN_WSAASYNCGETSERVBYNAME)(HWND,u_int,const char*,const char*,char*,int);
303typedef HANDLE (WINAPI *LPFN_WSAASYNCGETSERVBYPORT)(HWND,u_int,int,const char*,char*,int);
304typedef int (WINAPI *LPFN_WSAASYNCSELECT)(SOCKET,HWND,u_int,long);
Francois Gouget27202312001-11-14 21:26:23 +0000305typedef int (WINAPI *LPFN_WSACANCELASYNCREQUEST)(HANDLE));
Patrik Stridvall1a4db3e2002-09-23 20:45:57 +0000306typedef int (WINAPI *LPFN_WSACANCELBLOCKINGCALL)(void);
307typedef int (WINAPI *LPFN_WSACLEANUP)(void);
308typedef int (WINAPI *LPFN_WSAGETLASTERROR)(void);
309typedef BOOL (WINAPI *LPFN_WSAISBLOCKING)(void);
310typedef FARPROC (WINAPI *LPFN_WSASETBLOCKINGHOOK)(FARPROC);
311typedef void (WINAPI *LPFN_WSASETLASTERROR)(int);
312typedef int (WINAPI *LPFN_WSASTARTUP)(WORD,LPWSADATA);
313typedef int (WINAPI *LPFN_WSAUNHOOKBLOCKINGHOOK)(void);
Francois Gouget27202312001-11-14 21:26:23 +0000314
Patrik Stridvall1a4db3e2002-09-23 20:45:57 +0000315typedef SOCKET (WINAPI *LPFN_ACCEPT)(SOCKET,struct WS(sockaddr)*,int*);
316typedef int (WINAPI *LPFN_BIND)(SOCKET,const struct WS(sockaddr)*,int);
317typedef int (WINAPI *LPFN_CLOSESOCKET)(SOCKET);
318typedef int (WINAPI *LPFN_CONNECT)(SOCKET,const struct WS(sockaddr)*,int);
319typedef struct WS(hostent)* (WINAPI *LPFN_GETHOSTBYADDR)(const char*,int,int);
320typedef struct WS(hostent)* (WINAPI *LPFN_GETHOSTBYNAME)(const char*);
321typedef int (WINAPI *LPFN_GETHOSTNAME)(char*,int);
322typedef int (WINAPI *LPFN_GETPEERNAME)(SOCKET,struct WS(sockaddr)*,int*);
323typedef struct WS(protoent)* (WINAPI *LPFN_GETPROTOBYNAME)(const char*);
324typedef struct WS(protoent)* (WINAPI *LPFN_GETPROTOBYNUMBER)(int);
Francois Gouget27202312001-11-14 21:26:23 +0000325#ifdef WS_DEFINE_SELECT
326typedef int (WINAPI* LPFN_SELECT)(int,WS(fd_set)*,WS(fd_set)*,WS(fd_set)*,const struct WS(timeval)*);
327#endif
Patrik Stridvall1a4db3e2002-09-23 20:45:57 +0000328typedef struct WS(servent)* (WINAPI *LPFN_GETSERVBYNAME)(const char*,const char*);
329typedef struct WS(servent)* (WINAPI *LPFN_GETSERVBYPORT)(int,const char*);
330typedef int (WINAPI *LPFN_GETSOCKNAME)(SOCKET,struct WS(sockaddr)*,int*);
331typedef int (WINAPI *LPFN_GETSOCKOPT)(SOCKET,int,int,char*,int*);
332typedef u_long (WINAPI *LPFN_HTONL)(u_long);
333typedef u_short (WINAPI *LPFN_HTONS)(u_short);
Francois Gouget27202312001-11-14 21:26:23 +0000334typedef unsigned long (WINAPI *LPFN_INET_ADDR)(const char*);
Patrik Stridvall1a4db3e2002-09-23 20:45:57 +0000335typedef char* (WINAPI *LPFN_INET_NTOA)(struct WS(in_addr);
336typedef int (WINAPI *LPFN_IOCTLSOCKET)(SOCKET,long,u_long*);
337typedef int (WINAPI *LPFN_LISTEN)(SOCKET,int);
338typedef u_long (WINAPI *LPFN_NTOHL)(u_long);
339typedef u_short (WINAPI *LPFN_NTOHS)(u_short);
340typedef int (WINAPI *LPFN_RECV)(SOCKET,char*,int,int);
341typedef int (WINAPI *LPFN_RECVFROM)(SOCKET,char*,int,int,struct WS(sockaddr)*,int*);
342typedef int (WINAPI *LPFN_SEND)(SOCKET,const char*,int,int);
343typedef int (WINAPI *LPFN_SENDTO)(SOCKET,const char*,int,int,const struct WS(sockaddr)*,int);
344typedef int (WINAPI *LPFN_SETSOCKOPT)(SOCKET,int,int,const char*,int);
345typedef int (WINAPI *LPFN_SHUTDOWN)(SOCKET,int);
346typedef SOCKET (WINAPI *LPFN_SOCKET)(int,int,int);
Francois Gouget27202312001-11-14 21:26:23 +0000347#endif /* WS_API_TYPEDEFS */
348
349
350
351/*
352 * Winsock2 Prototypes
353 *
Vincent BĂ©ron9a624912002-05-31 23:06:46 +0000354 * Remember to keep this section in sync with the
Francois Gouget27202312001-11-14 21:26:23 +0000355 * "Winsock2 Function Typedefs" section below.
356 */
357#if WS_API_PROTOTYPES
358SOCKET WINAPI WSAAccept(SOCKET,struct WS(sockaddr)*,LPINT,LPCONDITIONPROC,DWORD);
359INT WINAPI WSAAddressToStringA(LPSOCKADDR,DWORD,LPWSAPROTOCOL_INFOA,LPSTR,LPDWORD);
360INT WINAPI WSAAddressToStringW(LPSOCKADDR,DWORD,LPWSAPROTOCOL_INFOW,LPWSTR,LPDWORD);
361#define WSAAddressToString WINELIB_NAME_AW(WSAAddressToString)
362BOOL WINAPI WSACloseEvent(WSAEVENT);
363int WINAPI WSAConnect(SOCKET,const struct WS(sockaddr)*,int,LPWSABUF,LPWSABUF,LPQOS,LPQOS);
James Hatheway829405a2000-06-18 17:23:17 +0000364WSAEVENT WINAPI WSACreateEvent(void);
Francois Gouget27202312001-11-14 21:26:23 +0000365/* WSADuplicateSocketA */
366/* WSADuplicateSocketW */
367/* WSAEnumNameSpaceProvidersA */
368/* WSAEnumNameSpaceProvidersW */
369int WINAPI WSAEnumNetworkEvents(SOCKET,WSAEVENT,LPWSANETWORKEVENTS);
370int WINAPI WSAEnumProtocolsA(LPINT,LPWSAPROTOCOL_INFOA,LPDWORD);
371int WINAPI WSAEnumProtocolsW(LPINT,LPWSAPROTOCOL_INFOW,LPDWORD);
372#define WSAEnumProtocols WINELIB_NAME_AW(WSAEnumProtocols)
373int WINAPI WSAEventSelect(SOCKET,WSAEVENT,long);
374BOOL WINAPI WSAGetOverlappedResult(SOCKET,LPWSAOVERLAPPED,LPDWORD,BOOL,LPDWORD);
375/* WSAGetQOSByName */
376/* WSAGetServiceClassInfoA */
377/* WSAGetServiceClassInfoW */
378/* WSAGetServiceClassNameByClassIdA */
379/* WSAGetServiceClassNameByClassIdW */
380int WINAPI WSAHtonl(SOCKET,u_long,u_long*);
381int WINAPI WSAHtons(SOCKET,u_short,u_short*);
382/* WSAInstallServiceClassA */
383/* WSAInstallServiceClassW */
384int 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 */
391int WINAPI WSANtohl(SOCKET,u_long,u_long*);
392int WINAPI WSANtohs(SOCKET,u_short,u_short*);
393/* WSAProviderConfigChange */
394int WINAPI WSARecv(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
395int WINAPI WSARecvDisconnect(SOCKET,LPWSABUF);
396int WINAPI WSARecvFrom(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,struct WS(sockaddr)*,LPINT,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
397/* WSARemoveServiceClass */
398BOOL WINAPI WSAResetEvent(WSAEVENT);
399int WINAPI WSASend(SOCKET,LPWSABUF,DWORD,LPDWORD,DWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
400int WINAPI WSASendDisconnect(SOCKET,LPWSABUF);
401int WINAPI WSASendTo(SOCKET,LPWSABUF,DWORD,LPDWORD,DWORD,const struct WS(sockaddr)*,int,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
402BOOL WINAPI WSASetEvent(WSAEVENT);
403/* WSASetServiceA */
404/* WSASetServiceW */
405SOCKET WINAPI WSASocketA(int,int,int,LPWSAPROTOCOL_INFOA,GROUP,DWORD);
406SOCKET WINAPI WSASocketW(int,int,int,LPWSAPROTOCOL_INFOW,GROUP,DWORD);
407INT WINAPI WSAStringToAddressA(LPSTR,INT,LPWSAPROTOCOL_INFOA,LPSOCKADDR,LPINT);
408INT WINAPI WSAStringToAddressW(LPSTR,INT,LPWSAPROTOCOL_INFOA,LPSOCKADDR,LPINT);
409#define WSASocket WINELIB_NAME_AW(WSASocket)
410#define WSAStringToAddress WINELIB_NAME_AW(WSAStringToAddress)
411DWORD WINAPI WSAWaitForMultipleEvents(DWORD,const WSAEVENT*,BOOL,DWORD,BOOL);
412#endif /* WS_API_PROTOTYPES */
413
414
415
416/*
417 * Winsock2 Function Typedefs
418 *
Vincent BĂ©ron9a624912002-05-31 23:06:46 +0000419 * Remember to keep this section in sync with the
Francois Gouget27202312001-11-14 21:26:23 +0000420 * "Winsock2 Prototypes" section above.
421 */
422#if WS_API_TYPEDEFS
423typedef SOCKET (WINAPI *LPFN_WSAACCEPT)(SOCKET,WS(sockaddr)*,LPINT,LPCONDITIONPROC,DWORD);
424typedef INT (WINAPI *LPFN_WSAADRESSTOSTRINGA)(LPSOCKADDR,DWORD,LPWSAPROTOCOL_INFOA,LPSTR,LPDWORD);
425typedef INT (WINAPI *LPFN_WSAADRESSTOSTRINGW)(LPSOCKADDR,DWORD,LPWSAPROTOCOL_INFOW,LPWSTR,LPDWORD);
426#define LPFN_WSAADDRESSTOSTRING WINELIB_NAME_AW(LPFN_WSAADDRESSTOSTRING)
427typedef BOOL (WINAPI *LPFN_WSACLOSEEVENT)(WSAEVENT);
428typedef int (WINAPI *LPFN_WSACONNECT)(SOCKET,const struct WS(sockaddr)*,int,LPWSABUF,LPWSABUF,LPQOS,LPQOS);
429typedef WSAEVENT (WINAPI *LPFN_WSACREATEEVENT)(void);
430/* WSADuplicateSocketA */
431/* WSADuplicateSocketW */
432/* WSAEnumNameSpaceProvidersA */
433/* WSAEnumNameSpaceProvidersW */
434typedef int (WINAPI *LPFN_WSAENUMNETWORKEVENT)(SOCKET,WSAEVENT,LPWSANETWORKEVENTS);
435typedef int (WINAPI *LPFN_WSAENUMPROTOCOLSA)(LPINT,LPWSAPROTOCOL_INFOA,LPDWORD);
436typedef int (WINAPI *LPFN_WSAENUMPROTOCOLSW)(LPINT,LPWSAPROTOCOL_INFOW,LPDWORD);
437#define LPFN_WSAENUMPROTOCOLS WINELIB_NAME_AW(LPFN_WSAENUMPROTOCOLS)
438typedef int (WINAPI *LPFN_WSAEVENTSELECT)(SOCKET,WSAEVENT,long);
439typedef BOOL (WINAPI *LPFN_WSAGETOVERLAPPEDRESULT)(SOCKET,LPWSAOVERLAPPED,LPDWORD,BOOL,LPDWORD);
440/* WSAGetQOSByName */
441/* WSAGetServiceClassInfoA */
442/* WSAGetServiceClassInfoW */
443/* WSAGetServiceClassNameByClassIdA */
444/* WSAGetServiceClassNameByClassIdW */
445typedef int (WINAPI *LPFN_WSAHTONL)(SOCKET,u_long,u_long*);
446typedef int (WINAPI *LPFN_WSAHTONS)(SOCKET,u_short,u_short*);
447/* WSAInstallServiceClassA */
448/* WSAInstallServiceClassW */
449typedef 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 */
456typedef int (WINAPI *LPFN_WSANTOHL)(SOCKET,u_long,u_long*);
457typedef int (WINAPI *LPFN_WSANTOHS)(SOCKET,u_short,u_short*);
458/* WSAProviderConfigChange */
459typedef int (WINAPI *LPFN_WSARECV)(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
460typedef int (WINAPI *LPFN_WSARECVDISCONNECT)(SOCKET,LPWSABUF);
461typedef int (WINAPI *LPFN_WSARECVFROM)(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,struct WS(sockaddr)*,LPINT,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
462/* WSARemoveServiceClass */
463typedef BOOL (WINAPI *LPFN_WSARESETEVENT)(WSAEVENT);
464typedef int (WINAPI *LPFN_WSASEND)(SOCKET,LPWSABUF,DWORD,LPDWORD,DWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
465typedef int (WINAPI *LPFN_WSASENDDISCONNECT)(SOCKET,LPWSABUF);
466typedef int (WINAPI *LPFN_WSASENDTO)(SOCKET,LPWSABUF,DWORD,LPDWORD,DWORD,const struct WS(sockaddr)*,int,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
467typedef BOOL (WINAPI *LPFN_WSASETEVENT)(WSAEVENT);
468/* WSASetServiceA */
469/* WSASetServiceW */
470typedef SOCKET (WINAPI *LPFN_WSASOCKETA)(int,int,int,LPWSAPROTOCOL_INFOA,GROUP,DWORD);
471typedef SOCKET (WINAPI *LPFN_WSASOCKETW)(int,int,int,LPWSAPROTOCOL_INFOW,GROUP,DWORD);
472typedef INT (WINAPI *LPFN_WSASTRINGTOADDRESSA)(LPSTR,INT,LPWSAPROTOCOL_INFOA,LPSOCKADDR,LPINT);
473typedef 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)
476typedef DWORD (WINAPI *LPFN_WSAWAITFORMULTIPLEEVENTS)(DWORD,const WSAEVENT*,BOOL,DWORD,BOOL);
477#endif /* WS_API_TYPEDEFS */
478
Ove Kaavena39ad1a1999-09-27 11:48:11 +0000479
Daniel Walker40491ec2002-01-14 18:33:44 +0000480/* Condition function return values */
481#define CF_ACCEPT 0x0000
482#define CF_REJECT 0x0001
483#define CF_DEFER 0x0002
484
Andreas Mohrae509412000-08-03 22:19:09 +0000485#include "poppack.h"
486
Francois Gouget27202312001-11-14 21:26:23 +0000487#ifdef __cplusplus
488}
Ove Kaavena39ad1a1999-09-27 11:48:11 +0000489#endif
Francois Gouget27202312001-11-14 21:26:23 +0000490
491#undef WS
492#undef WS_API_PROTOTYPES
493#undef WS_API_TYPEDEFS
494
495#endif /* __WINSOCK2API__ */