2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Winsock 2 DLL
4 * FILE: include/winsock2.h
5 * PURPOSE: Header file for the WinSock 2 DLL
6 * and WinSock 2 applications
7 * DEFINES: UNICODE - Use unicode prototypes
8 * FD_SETSIZE - Maximum size of an FD_SET (default is 64)
15 #include_next <winsock2.h>
17 #else /* __USE_W32API */
25 #endif /* __cplusplus */
27 #define WSAAPI STDCALL
31 typedef struct _GUID
{
36 } GUID
, *PGUID
, *LPGUID
;
41 #define INVALID_SOCKET ((SOCKET)~0)
42 #define SOCKET_ERROR (-1)
49 #define SOCK_SEQPACKET 5
51 /* Per socket flags */
52 #define SO_DEBUG 0x0001
53 #define SO_ACCEPTCONN 0x0002
54 #define SO_REUSEADDR 0x0004
55 #define SO_KEEPALIVE 0x0008
56 #define SO_DONTROUTE 0x0010
57 #define SO_BROADCAST 0x0020
58 #define SO_USELOOPBACK 0x0040
59 #define SO_LINGER 0x0080
60 #define SO_OOBINLINE 0x0100
62 #define SO_DONTLINGER (UINT)(~SO_LINGER)
64 #define SO_SNDBUF 0x1001
65 #define SO_RCVBUF 0x1002
66 #define SO_SNDLOWAT 0x1003
67 #define SO_RCVLOWAT 0x1004
68 #define SO_SNDTIMEO 0x1005
69 #define SO_RCVTIMEO 0x1006
70 #define SO_ERROR 0x1007
71 #define SO_TYPE 0x1008
74 /* Address families */
92 #define AF_APPLETALK 16
98 /* Protocol families, same as address families */
99 #define PF_UNSPEC AF_UNSPEC
100 #define PF_UNIX AF_UNIX
101 #define PF_INET AF_INET
102 #define PF_IMPLINK AF_IMPLINK
103 #define PF_PUP AF_PUP
104 #define PF_CHAOS AF_CHAOS
106 #define PF_ISO AF_ISO
107 #define PF_OSI AF_OSI
108 #define PF_ECMA AF_ECMA
109 #define PF_DATAKIT AF_DATAKIT
110 #define PF_CCITT AF_CCITT
111 #define PF_SNA AF_SNA
112 #define PF_DECnet AF_DECnet
113 #define PF_DLI AF_DLI
114 #define PF_LAT AF_LAT
115 #define PF_HYLINK AF_HYLINK
116 #define PF_APPLETALK AF_APPLETALK
118 #define PF_MAX AF_MAX
121 #define SOL_SOCKET 0xffff
127 #define MSG_DONTROUTE 0x4
129 #define MSG_MAXIOVLEN 16
133 #define FD_WRITE 0x02
135 #define FD_ACCEPT 0x08
136 #define FD_CONNECT 0x10
137 #define FD_CLOSE 0x20
139 #define FD_MAX_EVENTS 6
140 #define FD_ALL_EVENTS ((1 << FD_MAX_EVENTS) - 1)
145 #define WSABASEERR 10000
147 #define WSAEINTR (WSABASEERR+4)
148 #define WSAEBADF (WSABASEERR+9)
149 #define WSAEACCES (WSABASEERR+13)
150 #define WSAEFAULT (WSABASEERR+14)
151 #define WSAEINVAL (WSABASEERR+22)
152 #define WSAEMFILE (WSABASEERR+24)
154 #define WSAEWOULDBLOCK (WSABASEERR+35)
155 #define WSAEINPROGRESS (WSABASEERR+36)
156 #define WSAEALREADY (WSABASEERR+37)
157 #define WSAENOTSOCK (WSABASEERR+38)
158 #define WSAEDESTADDRREQ (WSABASEERR+39)
159 #define WSAEMSGSIZE (WSABASEERR+40)
160 #define WSAEPROTOTYPE (WSABASEERR+41)
161 #define WSAENOPROTOOPT (WSABASEERR+42)
162 #define WSAEPROTONOSUPPORT (WSABASEERR+43)
163 #define WSAESOCKTNOSUPPORT (WSABASEERR+44)
164 #define WSAEOPNOTSUPP (WSABASEERR+45)
165 #define WSAEPFNOSUPPORT (WSABASEERR+46)
166 #define WSAEAFNOSUPPORT (WSABASEERR+47)
167 #define WSAEADDRINUSE (WSABASEERR+48)
168 #define WSAEADDRNOTAVAIL (WSABASEERR+49)
169 #define WSAENETDOWN (WSABASEERR+50)
170 #define WSAENETUNREACH (WSABASEERR+51)
171 #define WSAENETRESET (WSABASEERR+52)
172 #define WSAECONNABORTED (WSABASEERR+53)
173 #define WSAECONNRESET (WSABASEERR+54)
174 #define WSAENOBUFS (WSABASEERR+55)
175 #define WSAEISCONN (WSABASEERR+56)
176 #define WSAENOTCONN (WSABASEERR+57)
177 #define WSAESHUTDOWN (WSABASEERR+58)
178 #define WSAETOOMANYREFS (WSABASEERR+59)
179 #define WSAETIMEDOUT (WSABASEERR+60)
180 #define WSAECONNREFUSED (WSABASEERR+61)
181 #define WSAELOOP (WSABASEERR+62)
182 #define WSAENAMETOOLONG (WSABASEERR+63)
183 #define WSAEHOSTDOWN (WSABASEERR+64)
184 #define WSAEHOSTUNREACH (WSABASEERR+65)
185 #define WSAENOTEMPTY (WSABASEERR+66)
186 #define WSAEUSERS (WSABASEERR+68)
187 #define WSAEDQUOT (WSABASEERR+69)
188 #define WSAESTALE (WSABASEERR+70)
189 #define WSAEREMOTE (WSABASEERR+71)
191 /* Extended Windows Sockets error codes */
192 #define WSASYSNOTREADY (WSABASEERR+91)
193 #define WSAVERNOTSUPPORTED (WSABASEERR+92)
194 #define WSANOTINITIALISED (WSABASEERR+93)
195 #define WSAEDISCON (WSABASEERR+101)
196 #define WSAENOMORE (WSABASEERR+102)
197 #define WSAECANCELLED (WSABASEERR+103)
198 #define WSAEINVALIDPROCTABLE (WSABASEERR+104)
199 #define WSAEINVALIDPROVIDER (WSABASEERR+105)
200 #define WSAEPROVIDERFAILEDINIT (WSABASEERR+106)
201 #define WSASYSCALLFAILURE (WSABASEERR+107)
202 #define WSASERVICE_NOT_FOUND (WSABASEERR+108)
203 #define WSATYPE_NOT_FOUND (WSABASEERR+109)
204 #define WSA_E_NO_MORE (WSABASEERR+110)
205 #define WSA_E_CANCELLED (WSABASEERR+111)
206 #define WSAEREFUSED (WSABASEERR+112)
208 #define WSAHOST_NOT_FOUND (WSABASEERR+1001)
209 #define WSATRY_AGAIN (WSABASEERR+1002)
210 #define WSANO_RECOVERY (WSABASEERR+1003)
211 #define WSANO_DATA (WSABASEERR+1004)
212 #define WSANO_ADDRESS WSANO_DATA
214 #define WSAEVENT HANDLE
215 #define LPWSAEVENT LPHANDLE
217 #define WSA_IO_PENDING (ERROR_IO_PENDING)
218 #define WSA_IO_INCOMPLETE (ERROR_IO_INCOMPLETE)
219 #define WSA_INVALID_HANDLE (ERROR_INVALID_HANDLE)
220 #define WSA_INVALID_PARAMETER (ERROR_INVALID_PARAMETER)
221 #define WSA_NOT_ENOUGH_MEMORY (ERROR_NOT_ENOUGH_MEMORY)
222 #define WSA_OPERATION_ABORTED (ERROR_OPERATION_ABORTED)
224 #define WSA_INVALID_EVENT ((WSAEVENT)NULL)
225 #define WSA_MAXIMUM_WAIT_EVENTS (MAXIMUM_WAIT_OBJECTS)
226 #define WSA_WAIT_FAILED ((DWORD)-1L)
227 #define WSA_WAIT_EVENT_0 (WAIT_OBJECT_0)
228 #define WSA_WAIT_IO_COMPLETION (WAIT_IO_COMPLETION)
229 #define WSA_WAIT_TIMEOUT (WAIT_TIMEOUT)
230 #define WSA_INFINITE (INFINITE)
232 typedef enum _WSACOMPLETIONTYPE
{
233 NSP_NOTIFY_IMMEDIATELY
= 0,
238 } WSACOMPLETIONTYPE
, *PWSACOMPLETIONTYPE
, FAR
* LPWSACOMPLETIONTYPE
;
240 #define IOCPARM_MASK 0x7f
241 #define IOC_VOID 0x20000000
242 #define IOC_OUT 0x40000000
243 #define IOC_IN 0x80000000
244 #define IOC_INOUT (IOC_IN|IOC_OUT)
246 #define _IO(x, y) (IOC_VOID|(x<<8)|y)
248 #define _IOR(x, y, t) (IOC_OUT|(((LONG)sizeof(t)&IOCPARM_MASK)<<16)|(x<<8)|y)
250 #define _IOW(x, y, t) (IOC_IN|(((LONG)sizeof(t)&IOCPARM_MASK)<<16)|(x<<8)|y)
252 #define FIONREAD _IOR('f', 127, ULONG)
253 #define FIONBIO _IOW('f', 126, ULONG)
254 #define FIOASYNC _IOW('f', 125, ULONG)
256 /* Socket I/O controls */
257 #define SIOCSHIWAT _IOW('s', 0, ULONG)
258 #define SIOCGHIWAT _IOR('s', 1, ULONG)
259 #define SIOCSLOWAT _IOW('s', 2, ULONG)
260 #define SIOCGLOWAT _IOR('s', 3, ULONG)
261 #define SIOCATMARK _IOR('s', 7, ULONG)
264 typedef unsigned short u_short
;
265 typedef unsigned long u_long
;
267 typedef struct in6_addr
{
273 struct sockaddr_in6
{
276 u_long sin6_flowinfo
;
277 struct in6_addr sin6_addr
;
278 u_long sin6_scope_id
;
283 struct { UCHAR s_b1
, s_b2
,s_b3
,s_b4
; } S_un_b
;
284 struct { USHORT s_w1
,s_w2
; } S_un_w
;
287 #define s_addr S_un.S_addr
288 #define s_host S_un.S_un_b.s_b2
289 #define s_net S_un.S_un_b.s_b1
290 #define s_imp S_un.S_un_w.s_w2
291 #define s_impno S_un.S_un_b.s_b4
292 #define s_lh S_un.S_un_b.s_b3
296 Definitions of bits in internet address integers.
297 NOTE: On subnets the decomposition of addresses to host and
298 net parts is done according to subnet mask, not the masks here.
300 #define IN_CLASSA(i) (((long)(i) & 0x80000000) == 0)
301 #define IN_CLASSA_NET 0xff000000
302 #define IN_CLASSA_NSHIFT 24
303 #define IN_CLASSA_HOST 0x00ffffff
304 #define IN_CLASSA_MAX 128
306 #define IN_CLASSB(i) (((long)(i) & 0xc0000000) == 0x80000000)
307 #define IN_CLASSB_NET 0xffff0000
308 #define IN_CLASSB_NSHIFT 16
309 #define IN_CLASSB_HOST 0x0000ffff
310 #define IN_CLASSB_MAX 65536
312 #define IN_CLASSC(i) (((long)(i) & 0xe0000000) == 0xc0000000)
313 #define IN_CLASSC_NET 0xffffff00
314 #define IN_CLASSC_NSHIFT 8
315 #define IN_CLASSC_HOST 0x000000ff
317 #define IN_CLASSD(i) (((long)(i) & 0xf0000000) == 0xe0000000)
318 #define IN_CLASSD_NET 0xf0000000 /* These ones aren't really */
319 #define IN_CLASSD_NSHIFT 28 /* net and host fields, but */
320 #define IN_CLASSD_HOST 0x0fffffff /* routing needn't know. */
321 #define IN_MULTICAST(i) IN_CLASSD(i)
323 #define ADDR_ANY INADDR_ANY
349 struct in_addr sin_addr
;
353 #define INADDR_ANY ((ULONG)0x00000000)
354 #define INADDR_LOOPBACK ((ULONG)0x7f000001)
355 #define INADDR_BROADCAST ((ULONG)0xffffffff)
356 #define INADDR_NONE ((ULONG)0xffffffff)
359 #define IPPROTO_ICMP 1
360 #define IPPROTO_IGMP 2
361 #define IPPROTO_GGP 3
362 #define IPPROTO_TCP 6
363 #define IPPROTO_PUP 12
364 #define IPPROTO_UDP 17
365 #define IPPROTO_IDP 22
366 #define IPPROTO_ND 77
367 #define IPPROTO_RAW 255
368 #define IPPROTO_MAX 256
372 #define FD_SETSIZE 64
373 #endif /* FD_SETSIZE */
375 typedef struct fd_set
{
377 SOCKET fd_array
[FD_SETSIZE
];
380 extern INT PASCAL FAR
__WSAFDIsSet(SOCKET
, fd_set FAR
*);
382 #define FD_CLR(s, set) do { \
384 for (__i = 0; __i < ((fd_set FAR*)(set))->fd_count; __i++) { \
385 if (((fd_set FAR*)(set))->fd_array[__i] == s) { \
386 while (__i < ((fd_set FAR*)(set))->fd_count - 1) { \
387 ((fd_set FAR *)(set))->fd_array[__i] = \
388 ((fd_set FAR*)(set))->fd_array[__i+1]; \
391 ((fd_set FAR *)(set))->fd_count--; \
397 #define FD_SET(s, set) do { \
399 for (__i = 0; __i < ((fd_set FAR *)(set))->fd_count; __i++) { \
400 if (((fd_set FAR *)(set))->fd_array[__i] == (s)) { \
404 if (__i == ((fd_set FAR *)(set))->fd_count) { \
405 if (((fd_set FAR*)(set))->fd_count < FD_SETSIZE) { \
406 ((fd_set FAR*)(set))->fd_array[__i] = (s); \
407 ((fd_set FAR*)(set))->fd_count++; \
412 #define FD_ISSET(s, set) __WSAFDIsSet((SOCKET)(s), (fd_set FAR*)(set))
414 #define FD_ZERO(set) (((fd_set FAR*)(set))->fd_count = 0)
417 typedef struct _WSAOVERLAPPED
{
418 DWORD Internal
; /* reserved */
419 DWORD InternalHigh
; /* reserved */
420 DWORD Offset
; /* reserved */
421 DWORD OffsetHigh
; /* reserved */
423 } WSAOVERLAPPED
, FAR
* LPWSAOVERLAPPED
;
425 typedef struct __WSABUF
{
426 ULONG len
; /* buffer length */
427 CHAR FAR
* buf
; /* pointer to buffer */
428 } WSABUF
, FAR
* LPWSABUF
;
431 typedef ULONG SERVICETYPE
;
433 #define SERVICETYPE_NOTRAFFIC 0x00000000
434 #define SERVICETYPE_BESTEFFORT 0x00000001
435 #define SERVICETYPE_CONTROLLEDLOAD 0x00000002
436 #define SERVICETYPE_GUARANTEED 0x00000003
437 #define SERVICETYPE_NETWORK_UNAVAILABLE 0x00000004
438 #define SERVICETYPE_GENERAL_INFORMATION 0x00000005
439 #define SERVICETYPE_NOCHANGE 0x00000006
440 #define SERVICE_IMMEDIATE_TRAFFIC_CONTROL 0x00000007
442 typedef struct _flowspec
{
443 ULONG TokenRate
; /* In Bytes/sec */
444 ULONG TokenBucketSize
; /* In Bytes */
445 ULONG PeakBandwidth
; /* In Bytes/sec */
446 ULONG Latency
; /* In microseconds */
447 ULONG DelayVariation
; /* In microseconds */
448 SERVICETYPE ServiceType
;
449 ULONG MaxSduSize
; /* In Bytes */
450 ULONG MinimumPolicedSize
; /* In Bytes */
451 } FLOWSPEC
, *PFLOWSPEC
, FAR
* LPFLOWSPEC
;
454 typedef struct _QualityOfService
{
455 FLOWSPEC SendingFlowspec
; /* The flow spec for data sending */
456 FLOWSPEC ReceivingFlowspec
; /* The flow spec for data receiving */
457 WSABUF ProviderSpecific
; /* Additional provider specific stuff */
462 typedef struct _WSANETWORKEVENTS
{
464 INT iErrorCode
[FD_MAX_EVENTS
];
465 } WSANETWORKEVENTS
, FAR
* LPWSANETWORKEVENTS
;
468 #define MAX_PROTOCOL_CHAIN 7
470 #define BASE_PROTOCOL 1
471 #define LAYERED_PROTOCOL 0
473 typedef struct _WSAPROTOCOLCHAIN
{
475 DWORD ChainEntries
[MAX_PROTOCOL_CHAIN
];
476 } WSAPROTOCOLCHAIN
, FAR
* LPWSAPROTOCOLCHAIN
;
478 #define WSAPROTOCOL_LEN 255
480 typedef struct _WSAPROTOCOL_INFOA
{
481 DWORD dwServiceFlags1
;
482 DWORD dwServiceFlags2
;
483 DWORD dwServiceFlags3
;
484 DWORD dwServiceFlags4
;
485 DWORD dwProviderFlags
;
487 DWORD dwCatalogEntryId
;
488 WSAPROTOCOLCHAIN ProtocolChain
;
495 INT iProtocolMaxOffset
;
496 INT iNetworkByteOrder
;
499 DWORD dwProviderReserved
;
500 CHAR szProtocol
[WSAPROTOCOL_LEN
+ 1];
501 } WSAPROTOCOL_INFOA
, FAR
* LPWSAPROTOCOL_INFOA
;
503 typedef struct _WSAPROTOCOL_INFOW
{
504 DWORD dwServiceFlags1
;
505 DWORD dwServiceFlags2
;
506 DWORD dwServiceFlags3
;
507 DWORD dwServiceFlags4
;
508 DWORD dwProviderFlags
;
510 DWORD dwCatalogEntryId
;
511 WSAPROTOCOLCHAIN ProtocolChain
;
518 INT iProtocolMaxOffset
;
519 INT iNetworkByteOrder
;
522 DWORD dwProviderReserved
;
523 WCHAR szProtocol
[WSAPROTOCOL_LEN
+ 1];
524 } WSAPROTOCOL_INFOW
, FAR
* LPWSAPROTOCOL_INFOW
;
526 #ifndef _DISABLE_TIDENTS
528 typedef WSAPROTOCOL_INFOW WSAPROTOCOL_INFO
;
529 typedef LPWSAPROTOCOL_INFOW LPWSAPROTOCOL_INFO
;
531 typedef WSAPROTOCOL_INFOA WSAPROTOCOL_INFO
;
532 typedef LPWSAPROTOCOL_INFOA LPWSAPROTOCOL_INFO
;
534 #endif /* _DISABLE_TIDENTS */
538 CALLBACK (*LPSERVICE_CALLBACK_PROC
) (
540 IN HANDLE hAsyncTaskHandle
543 typedef struct _SERVICE_ASYNC_INFO
{
544 LPSERVICE_CALLBACK_PROC lpServiceCallbackProc
;
546 HANDLE hAsyncTaskHandle
;
547 } SERVICE_ASYNC_INFO
, *PSERVICE_ASYNC_INFO
, FAR
* LPSERVICE_ASYNC_INFO
;
549 /* WinSock 2 extended commands for WSAIoctl() */
551 #define IOC_UNIX 0x00000000
552 #define IOC_WS2 0x08000000
553 #define IOC_FAMILY 0x10000000
554 #define IOC_VENDOR 0x18000000
556 #define _WSAIO (x,y) (IOC_VOID | (x) | (y))
557 #define _WSAIOR (x,y) (IOC_OUT | (x) | (y))
558 #define _WSAIOW (x,y) (IOC_IN | (x) | (y))
559 #define _WSAIORW(x,y) (IOC_INOUT| (x) | (y))
561 #define SIO_ASSOCIATE_HANDLE _WSAIOW (IOC_WS2, 1)
562 #define SIO_ENABLE_CIRCULAR_QUEUEING _WSAIO (IOC_WS2, 2)
563 #define SIO_FIND_ROUTE _WSAIOR (IOC_WS2, 3)
564 #define SIO_FLUSH _WSAIO (IOC_WS2, 4)
565 #define SIO_GET_BROADCAST_ADDRESS -WSAIOR (IOC_WS2, 5)
566 #define SIO_GET_EXTENSION_FUNCTION_POINTER _WSAIORW(IOC_WS2, 6)
567 #define SIO_GET_QOS _WSAIORW(IOC_WS2, 7)
568 #define SIO_GET_GROUP_QOS _WSAIORW(IOC_WS2, 8)
569 #define SIO_MULTIPOINT_LOOPBACK _WSAIOW (IOC_WS2, 9)
570 #define SIO_MULTICAST_SCOPE _WSAIOW (IOC_WS2, 10)
571 #define SIO_SET_QOS _WSAIOW (IOC_WS2, 11)
572 #define SIO_SET_GROUP_QOS _WSAIOW (IOC_WS2, 12)
573 #define SIO_TRANSLATE_HANDLE _WSAIORW(IOC_WS2, 13)
574 #define SIO_ROUTING_INTERFACE_QUERY _WSAIORW(IOC_WS2, 20)
575 #define SIO_ROUTING_INTERFACE_CHANGE _WSAIOW (IOC_WS2, 21)
576 #define SIO_ADDRESS_LIST_QUERY _WSAIOR (IOC_WS2, 22)
577 #define SIO_ADDRESS_LIST_CHANGE _WSAIO (IOC_WS2, 23)
578 #define SIO_QUERY_TARGET_PNP_HANDLE _WSAIOR (IOC_W32, 24)
581 /* Structures for WinSock 1.1 compatible namespace resolution */
585 CHAR FAR
* FAR
* h_aliases
;
588 CHAR FAR
* FAR
* h_addr_list
;
589 #define h_addr h_addr_list[0] /* Backward compatible field name */
594 CHAR FAR
* FAR
* p_aliases
;
600 CHAR FAR
* FAR
* s_aliases
;
605 /* It is assumed here that a network number fits in 32 bits. */
607 CHAR FAR
* n_name
; /* official net name */
608 CHAR FAR
* FAR
* n_aliases
; /* list of alias's */
609 SHORT n_addrtype
; /* network address type id */
610 ULONG n_net
; /* network number */
618 (CALLBACK
* LPCONDITIONPROC
)(
620 LPWSABUF lpCallerData
,
624 LPWSABUF lpCalleeData
,
626 DWORD dwCallbackData
);
630 (CALLBACK
* LPWSAOVERLAPPED_COMPLETION_ROUTINE
)(
633 LPWSAOVERLAPPED lpOverlapped
,
636 typedef struct _WSACOMPLETION
{
637 WSACOMPLETIONTYPE Type
;
645 LPWSAOVERLAPPED lpOverlapped
;
648 LPWSAOVERLAPPED lpOverlapped
;
649 LPWSAOVERLAPPED_COMPLETION_ROUTINE lpfnCompletionProc
;
652 LPWSAOVERLAPPED lpOverlapped
;
657 } WSACOMPLETION
, *PWSACOMPLETION
, FAR
*LPWSACOMPLETION
;
659 /* Microsoft Windows extended data types */
661 typedef struct sockaddr SOCKADDR
;
662 typedef struct sockaddr
*PSOCKADDR
;
663 typedef struct sockaddr FAR
*LPSOCKADDR
;
665 typedef struct sockaddr_in SOCKADDR_IN
;
666 typedef struct sockaddr_in
*PSOCKADDR_IN
;
667 typedef struct sockaddr_in FAR
*LPSOCKADDR_IN
;
669 typedef struct linger LINGER
;
670 typedef struct linger
*PLINGER
;
671 typedef struct linger FAR
*LPLINGER
;
673 typedef struct in_addr IN_ADDR
;
674 typedef struct in_addr
*PIN_ADDR
;
675 typedef struct in_addr FAR
*LPIN_ADDR
;
677 typedef struct fd_set FD_SET
;
678 typedef struct fd_set
*PFD_SET
;
679 typedef struct fd_set FAR
*LPFD_SET
;
681 typedef struct hostent HOSTENT
;
682 typedef struct hostent
*PHOSTENT
;
683 typedef struct hostent FAR
*LPHOSTENT
;
685 typedef struct servent SERVENT
;
686 typedef struct servent
*PSERVENT
;
687 typedef struct servent FAR
*LPSERVENT
;
689 typedef struct protoent PROTOENT
;
690 typedef struct protoent
*PPROTOENT
;
691 typedef struct protoent FAR
*LPPROTOENT
;
693 typedef struct timeval TIMEVAL
;
694 typedef struct timeval
*PTIMEVAL
;
695 typedef struct timeval FAR
*LPTIMEVAL
;
697 #define WSAMAKEASYNCREPLY(buflen,error) MAKELONG(buflen,error)
698 #define WSAMAKESELECTREPLY(event,error) MAKELONG(event,error)
699 #define WSAGETASYNCBUFLEN(lParam) LOWORD(lParam)
700 #define WSAGETASYNCERROR(lParam) HIWORD(lParam)
701 #define WSAGETSELECTEVENT(lParam) LOWORD(lParam)
702 #define WSAGETSELECTERROR(lParam) HIWORD(lParam)
705 #define WSADESCRIPTION_LEN 256
706 #define WSASYS_STATUS_LEN 128
708 typedef struct WSAData
{
711 CHAR szDescription
[WSADESCRIPTION_LEN
+ 1];
712 CHAR szSystemStatus
[WSASYS_STATUS_LEN
+ 1];
715 CHAR FAR
* lpVendorInfo
;
716 } WSADATA
, FAR
* LPWSADATA
;
718 #ifndef __BLOB_T_DEFINED
719 #define __BLOB_T_DEFINED
720 typedef struct _BLOB
{
725 typedef BLOB
*LPBLOB
;
728 typedef struct _SOCKET_ADDRESS
{
729 LPSOCKADDR lpSockaddr
;
731 } SOCKET_ADDRESS
, *PSOCKET_ADDRESS
, FAR
* LPSOCKET_ADDRESS
;
733 typedef struct _SOCKET_ADDRESS_LIST
{
735 SOCKET_ADDRESS Address
[1];
736 } SOCKET_ADDRESS_LIST
, FAR
* LPSOCKET_ADDRESS_LIST
;
738 typedef struct _CSADDR_INFO
{
739 SOCKET_ADDRESS LocalAddr
;
740 SOCKET_ADDRESS RemoteAddr
;
743 } CSADDR_INFO
, *PCSADDR_INFO
, FAR
* LPCSADDR_INFO
;
746 /* Structures for namespace resolution */
748 typedef struct _WSANAMESPACE_INFOA
{
753 LPSTR lpszIdentifier
;
754 } WSANAMESPACE_INFOA
, *PWSANAMESPACE_INFOA
, *LPWSANAMESPACE_INFOA
;
756 typedef struct _WSANAMESPACE_INFOW
{
761 LPWSTR lpszIdentifier
;
762 } WSANAMESPACE_INFOW
, *PWSANAMESPACE_INFOW
, *LPWSANAMESPACE_INFOW
;
764 #ifndef _DISABLE_TIDENTS
766 typedef WSANAMESPACE_INFOW WSANAMESPACE_INFO
;
767 typedef PWSANAMESPACE_INFOW PWSANAMESPACE_INFO
;
768 typedef LPWSANAMESPACE_INFOW LPWSANAMESPACE_INFO
;
770 typedef WSANAMESPACE_INFOA WSANAMESPACE_INFO
;
771 typedef PWSANAMESPACE_INFOA PWSANAMESPACE_INFO
;
772 typedef LPWSANAMESPACE_INFOA LPWSANAMESPACE_INFO
;
774 #endif /* _DISABLE_TIDENTS */
776 typedef struct _TRANSMIT_FILE_BUFFERS
{
781 } TRANSMIT_FILE_BUFFERS
, *PTRANSMIT_FILE_BUFFERS
, FAR
*LPTRANSMIT_FILE_BUFFERS
;
783 typedef struct addrinfo
791 struct sockaddr
* ai_addr
;
792 struct addrinfo
* ai_next
;
794 ADDRINFO
, *LPADDRINFO
;
796 typedef enum _WSAEcomparator
800 } WSAECOMPARATOR
, *PWSAECOMPARATOR
, *LPWSAECOMPARATOR
;
802 typedef struct _WSAVersion
805 WSAECOMPARATOR ecHow
;
806 }WSAVERSION
, *PWSAVERSION
, *LPWSAVERSION
;
809 typedef struct _AFPROTOCOLS
{
812 } AFPROTOCOLS
, *PAFPROTOCOLS
, *LPAFPROTOCOLS
;
815 typedef struct _WSAQuerySetA
{
817 LPSTR lpszServiceInstanceName
;
818 LPGUID lpServiceClassId
;
819 LPWSAVERSION lpVersion
;
822 LPGUID lpNSProviderId
;
824 DWORD dwNumberOfProtocols
;
825 LPAFPROTOCOLS lpafpProtocols
;
826 LPSTR lpszQueryString
;
827 DWORD dwNumberOfCsAddrs
;
828 LPCSADDR_INFO lpcsaBuffer
;
831 } WSAQUERYSETA
, *PWSAQUERYSETA
, *LPWSAQUERYSETA
;
833 typedef struct _WSAQuerySetW
{
835 LPWSTR lpszServiceInstanceName
;
836 LPGUID lpServiceClassId
;
837 LPWSAVERSION lpVersion
;
840 LPGUID lpNSProviderId
;
842 DWORD dwNumberOfProtocols
;
843 LPAFPROTOCOLS lpafpProtocols
;
844 LPWSTR lpszQueryString
;
845 DWORD dwNumberOfCsAddrs
;
846 LPCSADDR_INFO lpcsaBuffer
;
849 } WSAQUERYSETW
, *PWSAQUERYSETW
, *LPWSAQUERYSETW
;
851 #ifndef _DISABLE_TIDENTS
853 typedef WSAQUERYSETW WSAQUERYSET
;
854 typedef PWSAQUERYSETW PWSAQUERYSET
;
855 typedef LPWSAQUERYSETW LPWSAQUERYSET
;
857 typedef WSAQUERYSETA WSAQUERYSET
;
858 typedef PWSAQUERYSETA PWSAQUERYSET
;
859 typedef LPWSAQUERYSETA LPWSAQUERYSET
;
861 #endif /* _DISABLE_TIDENTS */
864 typedef enum _WSAESETSERVICEOP
{
865 RNRSERVICE_REGISTER
= 0,
866 RNRSERVICE_DEREGISTER
,
868 } WSAESETSERVICEOP
, *PWSAESETSERVICEOP
, *LPWSAESETSERVICEOP
;
871 typedef struct _WSANSClassInfoA
{
877 } WSANSCLASSINFOA
, *PWSANSCLASSINFOA
, *LPWSANSCLASSINFOA
;
879 typedef struct _WSANSClassInfoW
{
885 } WSANSCLASSINFOW
, *PWSANSCLASSINFOW
, *LPWSANSCLASSINFOW
;
887 #ifndef _DISABLE_TIDENTS
889 typedef WSANSCLASSINFOW WSANSCLASSINFO
;
890 typedef PWSANSCLASSINFOW PWSANSCLASSINFO
;
891 typedef LPWSANSCLASSINFOW LPWSANSCLASSINFO
;
893 typedef WSANSCLASSINFOA WSANSCLASSINFO
;
894 typedef PWSANSCLASSINFOA PWSANSCLASSINFO
;
895 typedef LPWSANSCLASSINFOA LPWSANSCLASSINFO
;
897 #endif /* _DISABLE_TIDENTS */
899 typedef struct _WSAServiceClassInfoA
{
900 LPGUID lpServiceClassId
;
901 LPSTR lpszServiceClassName
;
903 LPWSANSCLASSINFOA lpClassInfos
;
904 } WSASERVICECLASSINFOA
, *PWSASERVICECLASSINFOA
, *LPWSASERVICECLASSINFOA
;
906 typedef struct _WSAServiceClassInfoW
{
907 LPGUID lpServiceClassId
;
908 LPWSTR lpszServiceClassName
;
910 LPWSANSCLASSINFOW lpClassInfos
;
911 } WSASERVICECLASSINFOW
, *PWSASERVICECLASSINFOW
, *LPWSASERVICECLASSINFOW
;
913 #ifndef _DISABLE_TIDENTS
915 typedef WSASERVICECLASSINFOW WSASERVICECLASSINFO
;
916 typedef PWSASERVICECLASSINFOW PWSASERVICECLASSINFO
;
917 typedef LPWSASERVICECLASSINFOW LPWSASERVICECLASSINFO
;
919 typedef WSASERVICECLASSINFOA WSASERVICECLASSINFO
;
920 typedef PWSASERVICECLASSINFOA PWSASERVICECLASSINFO
;
921 typedef LPWSASERVICECLASSINFOA LPWSASERVICECLASSINFO
;
923 #endif /* _DISABLE_TIDENTS */
926 /* WinSock 2 DLL prototypes */
933 OUT INT FAR
* addrlen
);
939 IN CONST LPSOCKADDR name
,
951 IN CONST LPSOCKADDR name
,
959 IN OUT INT FAR
* namelen
);
966 IN OUT INT FAR
* namelen
);
974 OUT CHAR FAR
* optval
,
975 IN OUT INT FAR
* optlen
);
985 IN USHORT hostshort
);
992 IN OUT ULONG FAR
* argp
);
1008 IN USHORT netshort
);
1025 OUT LPSOCKADDR from
,
1026 IN OUT INT FAR
* fromlen
);
1032 IN OUT LPFD_SET readfds
,
1033 IN OUT LPFD_SET writefds
,
1034 IN OUT LPFD_SET exceptfds
,
1035 IN CONST LPTIMEVAL timeout
);
1041 IN CONST CHAR FAR
* buf
,
1049 IN CONST CHAR FAR
* buf
,
1052 IN CONST LPSOCKADDR to
,
1061 IN CONST CHAR FAR
* optval
,
1081 OUT LPSOCKADDR addr
,
1082 IN OUT LPINT addrlen
,
1083 IN LPCONDITIONPROC lpfnCondition
,
1084 IN DWORD dwCallbackData
);
1096 WSACancelBlockingCall(VOID
);
1105 IN WSAEVENT hEvent
);
1111 IN CONST LPSOCKADDR name
,
1113 IN LPWSABUF lpCallerData
,
1114 OUT LPWSABUF lpCalleeData
,
1120 WSACreateEvent(VOID
);
1124 WSADuplicateSocketA(
1126 IN DWORD dwProcessId
,
1127 OUT LPWSAPROTOCOL_INFOA lpProtocolInfo
);
1131 WSADuplicateSocketW(
1133 IN DWORD dwProcessId
,
1134 OUT LPWSAPROTOCOL_INFOW lpProtocolInfo
);
1136 #ifndef _DISABLE_TIDENTS
1138 #define WSADuplicateSocket WSADuplicateSocketA
1140 #define WSADuplicateSocket WSADuplicateSocketW
1141 #endif /* UNICODE */
1142 #endif /* _DISABLE_TIDENTS */
1146 WSAEnumNetworkEvents(
1148 IN WSAEVENT hEventObject
,
1149 OUT LPWSANETWORKEVENTS lpNetworkEvents
);
1154 IN LPINT lpiProtocols
,
1155 OUT LPWSAPROTOCOL_INFOA lpProtocolBuffer
,
1156 IN OUT LPDWORD lpdwBufferLength
);
1161 IN LPINT lpiProtocols
,
1162 OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer
,
1163 IN OUT LPDWORD lpdwBufferLength
);
1165 #ifndef _DISABLE_TIDENTS
1167 #define WSAEnumProtocols WSAEnumProtocolsA
1169 #define WSAEnumProtocols WSAEnumProtocolsW
1170 #endif /* UNICODE */
1171 #endif /* _DISABLE_TIDENTS */
1177 IN WSAEVENT hEventObject
,
1178 IN LONG lNetworkEvents
);
1182 WSAGetLastError(VOID
);
1186 WSAGetOverlappedResult(
1188 IN LPWSAOVERLAPPED lpOverlapped
,
1189 OUT LPDWORD lpcbTransfer
,
1191 OUT LPDWORD lpdwFlags
);
1197 IN OUT LPWSABUF lpQOSName
,
1205 OUT ULONG FAR
* lpnetlong
);
1211 IN USHORT hostshort
,
1212 OUT USHORT FAR
* lpnetshort
);
1218 IN DWORD dwIoControlCode
,
1219 IN LPVOID lpvInBuffer
,
1220 IN DWORD cbInBuffer
,
1221 OUT LPVOID lpvOutBuffer
,
1222 IN DWORD cbOutBuffer
,
1223 OUT LPDWORD lpcbBytesReturned
,
1224 IN LPWSAOVERLAPPED lpOverlapped
,
1225 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);
1229 WSAIsBlocking(VOID
);
1235 IN CONST LPSOCKADDR name
,
1237 IN LPWSABUF lpCallerData
,
1238 OUT LPWSABUF lpCalleeData
,
1248 OUT ULONG FAR
* lphostlong
);
1255 OUT USHORT FAR
* lphostshort
);
1261 IN OUT LPWSABUF lpBuffers
,
1262 IN DWORD dwBufferCount
,
1263 OUT LPDWORD lpNumberOfBytesRecvd
,
1264 IN OUT LPDWORD lpFlags
,
1265 IN LPWSAOVERLAPPED lpOverlapped
,
1266 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);
1272 OUT LPWSABUF lpInboundDisconnectData
);
1278 IN OUT LPWSABUF lpBuffers
,
1279 IN DWORD dwBufferCount
,
1280 OUT LPDWORD lpNumberOfBytesRecvd
,
1281 IN OUT LPDWORD lpFlags
,
1282 OUT LPSOCKADDR lpFrom
,
1283 IN OUT LPINT lpFromlen
,
1284 IN LPWSAOVERLAPPED lpOverlapped
,
1285 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);
1290 IN WSAEVENT hEvent
);
1296 IN LPWSABUF lpBuffers
,
1297 IN DWORD dwBufferCount
,
1298 OUT LPDWORD lpNumberOfBytesSent
,
1300 IN LPWSAOVERLAPPED lpOverlapped
,
1301 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);
1307 IN LPWSABUF lpOutboundDisconnectData
);
1313 IN LPWSABUF lpBuffers
,
1314 IN DWORD dwBufferCount
,
1315 OUT LPDWORD lpNumberOfBytesSent
,
1317 IN CONST LPSOCKADDR lpTo
,
1319 IN LPWSAOVERLAPPED lpOverlapped
,
1320 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);
1325 IN FARPROC lpBlockFunc
);
1330 IN WSAEVENT hEvent
);
1343 IN LPWSAPROTOCOL_INFOA lpProtocolInfo
,
1353 IN LPWSAPROTOCOL_INFOW lpProtocolInfo
,
1357 #ifndef _DISABLE_TIDENTS
1359 #define WSASocket WSASocketW
1361 #define WSASocket WSASocketA
1362 #endif /* UNICODE */
1363 #endif /* _DISABLE_TIDENTS */
1368 IN WORD wVersionRequested
,
1369 OUT LPWSADATA lpWSAData
);
1373 WSAUnhookBlockingHook(VOID
);
1377 WSAWaitForMultipleEvents(
1379 IN CONST WSAEVENT FAR
* lphEvents
,
1382 IN BOOL fAlertable
);
1386 WSAProviderConfigChange(
1387 IN OUT LPHANDLE lpNotificationHandle
,
1388 IN LPWSAOVERLAPPED lpOverlapped
,
1389 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);
1391 /* Name resolution APIs */
1395 WSAAddressToStringA(
1396 IN LPSOCKADDR lpsaAddress
,
1397 IN DWORD dwAddressLength
,
1398 IN LPWSAPROTOCOL_INFOA lpProtocolInfo
,
1399 OUT LPSTR lpszAddressString
,
1400 IN OUT LPDWORD lpdwAddressStringLength
);
1404 WSAAddressToStringW(
1405 IN LPSOCKADDR lpsaAddress
,
1406 IN DWORD dwAddressLength
,
1407 IN LPWSAPROTOCOL_INFOW lpProtocolInfo
,
1408 OUT LPWSTR lpszAddressString
,
1409 IN OUT LPDWORD lpdwAddressStringLength
);
1411 #ifndef _DISABLE_TIDENTS
1413 #define WSAAddressToString WSAAddressToStringW
1415 #define WSAAddressToString WSAAddressToStringA
1416 #endif /* UNICODE */
1417 #endif /* _DISABLE_TIDENTS */
1421 WSAEnumNameSpaceProvidersA(
1422 IN OUT LPDWORD lpdwBufferLength
,
1423 OUT LPWSANAMESPACE_INFOA lpnspBuffer
);
1427 WSAEnumNameSpaceProvidersW(
1428 IN OUT LPDWORD lpdwBufferLength
,
1429 OUT LPWSANAMESPACE_INFOW lpnspBuffer
);
1431 #ifndef _DISABLE_TIDENTS
1433 #define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersW
1435 #define WSAEnumNameSpaceProviders WSAEnumNameSpaceProvidersA
1436 #endif /* UNICODE */
1437 #endif /* _DISABLE_TIDENTS */
1439 typedef int socklen_t
;
1443 WSAGetServiceClassInfoA(
1444 IN LPGUID lpProviderId
,
1445 IN LPGUID lpServiceClassId
,
1446 IN OUT LPDWORD lpdwBufferLength
,
1447 OUT LPWSASERVICECLASSINFOA lpServiceClassInfo
);
1451 WSAGetServiceClassInfoW(
1452 IN LPGUID lpProviderId
,
1453 IN LPGUID lpServiceClassId
,
1454 IN OUT LPDWORD lpdwBufferLength
,
1455 OUT LPWSASERVICECLASSINFOW lpServiceClassInfo
);
1457 #ifndef _DISABLE_TIDENTS
1459 #define WSAGetServiceClassInfo WSAGetServiceClassInfoW
1461 #define WSAGetServiceClassInfo WSAGetServiceClassInfoA
1462 #endif /* UNICODE */
1463 #endif /* _DISABLE_TIDENTS */
1467 WSAGetServiceClassNameByClassIdA(
1468 IN LPGUID lpServiceClassId
,
1469 OUT LPSTR lpszServiceClassName
,
1470 IN OUT LPDWORD lpdwBufferLength
);
1474 WSAGetServiceClassNameByClassIdW(
1475 IN LPGUID lpServiceClassId
,
1476 OUT LPWSTR lpszServiceClassName
,
1477 IN OUT LPDWORD lpdwBufferLength
);
1479 #ifndef _DISABLE_TIDENTS
1481 #define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdW
1483 #define WSAGetServiceClassNameByClassId WSAGetServiceClassNameByClassIdA
1484 #endif /* UNICODE */
1485 #endif /* _DISABLE_TIDENTS */
1489 WSAInstallServiceClassA(
1490 IN LPWSASERVICECLASSINFOA lpServiceClassInfo
);
1494 WSAInstallServiceClassW(
1495 IN LPWSASERVICECLASSINFOW lpServiceClassInfo
);
1497 #ifndef _DISABLE_TIDENTS
1499 #define WSAInstallServiceClass WSAInstallServiceClassW
1501 #define WSAInstallServiceClass WSAInstallServiceClassA
1502 #endif /* UNICODE */
1503 #endif /* _DISABLE_TIDENTS */
1507 WSALookupServiceBeginA(
1508 IN LPWSAQUERYSETA lpqsRestrictions
,
1509 IN DWORD dwControlFlags
,
1510 OUT LPHANDLE lphLookup
);
1514 WSALookupServiceBeginW(
1515 IN LPWSAQUERYSETW lpqsRestrictions
,
1516 IN DWORD dwControlFlags
,
1517 OUT LPHANDLE lphLookup
);
1519 #ifndef _DISABLE_TIDENTS
1521 #define WSALookupServiceBegin WSALookupServiceBeginW
1523 #define WSALookupServiceBegin WSALookupServiceBeginA
1524 #endif /* UNICODE */
1525 #endif /* _DISABLE_TIDENTS */
1529 WSALookupServiceEnd(
1534 WSALookupServiceNextA(
1536 IN DWORD dwControlFlags
,
1537 IN OUT LPDWORD lpdwBufferLength
,
1538 OUT LPWSAQUERYSETA lpqsResults
);
1542 WSALookupServiceNextW(
1544 IN DWORD dwControlFlags
,
1545 IN OUT LPDWORD lpdwBufferLength
,
1546 OUT LPWSAQUERYSETW lpqsResults
);
1548 #ifndef _DISABLE_TIDENTS
1550 #define WSALookupServiceNext WSALookupServiceNextW
1552 #define WSALookupServiceNext WSALookupServiceNextA
1553 #endif /* UNICODE */
1554 #endif /* _DISABLE_TIDENTS */
1558 WSARemoveServiceClass(
1559 IN LPGUID lpServiceClassId
);
1564 IN LPWSAQUERYSETA lpqsRegInfo
,
1565 IN WSAESETSERVICEOP essOperation
,
1566 IN DWORD dwControlFlags
);
1571 IN LPWSAQUERYSETW lpqsRegInfo
,
1572 IN WSAESETSERVICEOP essOperation
,
1573 IN DWORD dwControlFlags
);
1575 #ifndef _DISABLE_TIDENTS
1577 #define WSASetService WSASetServiceW
1579 #define WSASetService WSASetServiceA
1580 #endif /* UNICODE */
1581 #endif /* _DISABLE_TIDENTS */
1585 WSAStringToAddressA(
1586 IN LPSTR AddressString
,
1587 IN INT AddressFamily
,
1588 IN LPWSAPROTOCOL_INFOA lpProtocolInfo
,
1589 OUT LPSOCKADDR lpAddress
,
1590 IN OUT LPINT lpAddressLength
);
1594 WSAStringToAddressW(
1595 IN LPWSTR AddressString
,
1596 IN INT AddressFamily
,
1597 IN LPWSAPROTOCOL_INFOW lpProtocolInfo
,
1598 OUT LPSOCKADDR lpAddress
,
1599 IN OUT LPINT lpAddressLength
);
1601 #ifndef _DISABLE_TIDENTS
1603 #define WSAStringToAddress WSAStringToAddressW
1605 #define WSAStringToAddress WSAStringToAddressA
1606 #endif /* UNICODE */
1607 #endif /* _DISABLE_TIDENTS */
1609 /* WinSock 1.1 compatible name resolution APIs */
1614 IN CONST CHAR FAR
* addr
,
1621 IN CONST CHAR FAR
* name
);
1632 IN CONST CHAR FAR
* name
);
1642 IN CONST CHAR FAR
* name
,
1643 IN CONST CHAR FAR
* proto
);
1649 IN CONST CHAR FAR
* proto
);
1654 IN CONST CHAR FAR
* cp
);
1663 WSAAsyncGetHostByAddr(
1666 IN CONST CHAR FAR
* addr
,
1674 WSAAsyncGetHostByName(
1677 IN CONST CHAR FAR
* name
,
1683 WSAAsyncGetProtoByName(
1686 IN CONST CHAR FAR
* name
,
1692 WSAAsyncGetProtoByNumber(
1701 WSAAsyncGetServByName(
1704 IN CONST CHAR FAR
* name
,
1705 IN CONST CHAR FAR
* proto
,
1711 WSAAsyncGetServByPort(
1715 IN CONST CHAR FAR
* proto
,
1721 WSACancelAsyncRequest(
1722 IN HANDLE hAsyncTaskHandle
);
1728 DWORD dwControlCode
,
1731 LPVOID lpvOutBuffer
,
1733 LPDWORD lpcbBytesReturned
,
1734 LPWSACOMPLETION lpCompletion
1740 LPGUID lpProviderId
,
1741 const WCHAR FAR
* lpszProviderDllPath
,
1742 const LPWSAPROTOCOL_INFOW lpProtocolInfoList
,
1743 DWORD dwNumberOfEntries
,
1749 WSCWriteNameSpaceOrder (
1750 LPGUID lpProviderId
,
1751 DWORD dwNumberOfEntries
1757 LPADDRINFO pAddrInfo
1763 const char FAR
* nodename
,
1764 const char FAR
* servname
,
1765 const struct addrinfo FAR
* hints
,
1766 struct addrinfo FAR
* FAR
* res
1772 const struct sockaddr FAR
* sa
,
1783 AcceptEx(SOCKET sListenSocket
,SOCKET sAcceptSocket
,PVOID lpOutputBuffer
,DWORD dwReceiveDataLength
,DWORD dwLocalAddressLength
,DWORD dwRemoteAddressLength
,LPDWORD lpdwBytesReceived
,LPOVERLAPPED lpOverlapped
);
1786 EnumProtocolsA(LPINT lpiProtocols
,LPVOID lpProtocolBuffer
,LPDWORD lpdwBufferLength
);
1789 EnumProtocolsW(LPINT lpiProtocols
,LPVOID lpProtocolBuffer
,LPDWORD lpdwBufferLength
);
1792 GetAcceptExSockaddrs(PVOID lpOutputBuffer
,DWORD dwReceiveDataLength
,DWORD dwLocalAddressLength
,DWORD dwRemoteAddressLength
,struct sockaddr
**LocalSockaddr
,LPINT LocalSockaddrLength
,struct sockaddr
**RemoteSockaddr
,LPINT RemoteSockaddrLength
);
1795 GetAddressByNameA(DWORD dwNameSpace
,LPGUID lpServiceType
,LPSTR lpServiceName
,LPINT lpiProtocols
,DWORD dwResolution
,LPSERVICE_ASYNC_INFO lpServiceAsyncInfo
,LPVOID lpCsaddrBuffer
,LPDWORD lpdwBufferLength
,LPSTR lpAliasBuffer
,LPDWORD lpdwAliasBufferLength
);
1798 GetAddressByNameW(DWORD dwNameSpace
,LPGUID lpServiceType
,LPWSTR lpServiceName
,LPINT lpiProtocols
,DWORD dwResolution
,LPSERVICE_ASYNC_INFO lpServiceAsyncInfo
,LPVOID lpCsaddrBuffer
,LPDWORD lpdwBufferLength
,LPWSTR lpAliasBuffer
,LPDWORD lpdwAliasBufferLength
);
1801 GetNameByTypeA(LPGUID lpServiceType
,LPSTR lpServiceName
,DWORD dwNameLength
);
1804 GetNameByTypeW(LPGUID lpServiceType
,LPWSTR lpServiceName
,DWORD dwNameLength
);
1807 GetServiceA(DWORD dwNameSpace
,LPGUID lpGuid
,LPSTR lpServiceName
,DWORD dwProperties
,LPVOID lpBuffer
,LPDWORD lpdwBufferSize
,LPSERVICE_ASYNC_INFO lpServiceAsyncInfo
);
1810 GetServiceW(DWORD dwNameSpace
,LPGUID lpGuid
,LPWSTR lpServiceName
,DWORD dwProperties
,LPVOID lpBuffer
,LPDWORD lpdwBufferSize
,LPSERVICE_ASYNC_INFO lpServiceAsyncInfo
);
1813 GetTypeByNameA(LPSTR lpServiceName
,LPGUID lpServiceType
);
1816 GetTypeByNameW(LPWSTR lpServiceName
,LPGUID lpServiceType
);
1819 SetServiceA(DWORD dwNameSpace
,DWORD dwOperation
,DWORD dwFlags
,LPSERVICE_INFOA lpServiceInfo
,LPSERVICE_ASYNC_INFO lpServiceAsyncInfo
,LPDWORD lpdwStatusFlags
);
1822 SetServiceW(DWORD dwNameSpace
,DWORD dwOperation
,DWORD dwFlags
,LPSERVICE_INFOW lpServiceInfo
,LPSERVICE_ASYNC_INFO lpServiceAsyncInfo
,LPDWORD lpdwStatusFlags
);
1825 TransmitFile(SOCKET hSocket
,HANDLE hFile
,DWORD nNumberOfBytesToWrite
,DWORD nNumberOfBytesPerSend
,LPOVERLAPPED lpOverlapped
,LPTRANSMIT_FILE_BUFFERS lpTransmitBuffers
,DWORD dwReserved
);
1828 WSARecvEx(SOCKET s
,LPSTR buf
,INT len
,LPINT flags
);
1832 #endif /* __cplusplus */
1834 #endif /* !__USE_W32API */
1836 #endif /* __WINSOCK2_H */