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);
1830 struct netent * STDCALL getnetbyname(const char *name);
1831 void STDCALL s_perror(LPCSTR message);
1832 UINT STDCALL inet_network(const char *cp);
1833 BOOL STDCALL WSApSetPostRoutine(PVOID Routine);
1835 typedef DWORD (* LPFN_NSPAPI) (VOID ) ;
1837 typedef struct _NS_ROUTINE {
1838 DWORD dwFunctionCount;
1839 LPFN_NSPAPI *alpfnFunctions;
1842 } NS_ROUTINE, *PNS_ROUTINE, * FAR LPNS_ROUTINE;
1847 IN OUT LPDWORD lpdwVersion,
1848 IN OUT LPNS_ROUTINE nsrBuffer,
1849 IN OUT LPDWORD lpdwBufferLength
1854 #endif /* __cplusplus */
1856 #endif /* !__USE_W32API */
1858 #endif /* __WINSOCK2_H */