source: trunk/ab5.0/ablib/src/api_winsock2.sbp @ 560

Last change on this file since 560 was 521, checked in by イグトランス (egtra), 15 years ago

表記揺れ、ミスなど修正

File size: 70.7 KB
Line 
1#ifndef _WINSOCK2API_
2#define _WINSOCK2API_
3#define _WINSOCKAPI_
4
5Const WINSOCK_VERSION = MAKEWORD(2, 2)
6
7TypeDef SOCKET = ULONG_PTR
8
9Const FD_SETSIZE = 64
10
11Type fd_set
12    fd_count As DWord
13    fd_array[ELM(FD_SETSIZE)] As SOCKET
14End Type
15
16Declare Function __WSAFDIsSet Lib "ws2_32" (fd As SOCKET, ByRef set As fd_set) As Long
17
18Sub FD_CLR(fd As SOCKET, ByRef set As fd_set)
19    Dim i As DWord
20    With set
21        For i = 0 To .fd_count
22            If .fd_array[i] = fd Then
23                While i < .fd_count - 1
24                    .fd_array[i] = .fd_array[i + 1]
25                WEnd
26                .fd_count--
27                Exit For
28            End If
29        Next
30    End With
31End Sub
32
33Sub FD_SET(fd As SOCKET, ByRef set As fd_set)
34    Dim i As DWord
35    With set
36        For i = 0 To ELM(.fd_count)
37            If .fd_array[i] = fd Then
38                Exit Sub
39            End If
40        Next
41        If i = .fd_count Then
42            If .fd_count < FD_SETSIZE Then
43                .fd_array[i] = fd
44                .fd_count++
45            End If
46        End If
47    End With
48End Sub
49
50Sub FD_ZERO(ByRef set As fd_set)
51    set.fd_count = 0
52End Sub
53
54Const FD_ISSET(fd, set) = __WSAFDIsSet(fd, set)
55
56Type timeval
57    tv_sec As  Long
58    tv_usec As  Long
59End Type
60
61' Operations on timevals.
62Function timerisset(ByRef tvp As timeval) As BOOL
63    Return tvp.tv_sec Or tvp.tv_usec
64End Function
65
66/*
67#define timercmp(tvp, uvp, cmp) \
68        ((tvp)->tv_sec cmp (uvp)->tv_sec || \
69         (tvp)->tv_sec == (uvp)->tv_sec && (tvp)->tv_usec cmp (uvp)->tv_usec)
70*/
71
72Sub timerclear(ByRef tvp As timeval)
73    tvp.tv_sec = 0
74    tvp.tv_usec = 0
75End Sub
76
77' Commands for ioctlsocket(),  taken from the BSD file fcntl.h.
78Const IOCPARM_MASK = &h7f
79Const IOC_VOID = &h20000000
80Const IOC_OUT = &h40000000
81Const IOC_IN = &h80000000
82Const IOC_INOUT= (IOC_IN Or IOC_OUT)
83
84Const _IO(x ,y) = (IOC_VOID Or (x << 8) Or y)
85
86Const _IOR(x, y, size) = (IOC_OUT Or ((size And IOCPARM_MASK) << 16) Or ((x) << 8) Or (y))
87
88Const _IOW(x, y, size) = (IOC_IN Or ((size And IOCPARM_MASK) << 16) Or ((x) << 8) Or (y))
89
90Const FIONREAD = _IOR(&h66,127, SizeOf (DWord)) '&h66は'f'
91Const FIONBIO = _IOW(&h66,126, SizeOf (DWord))
92Const FIOASYNC = _IOW(&h66,125, SizeOf (DWord))
93
94' Socket I/O Controls
95Const SIOCSHIWAT = _IOW(&h73, 0, SizeOf (DWord)) '&h73は's'
96Const SIOCGHIWAT = _IOR(&h73, 1, SizeOf (DWord))
97Const SIOCSLOWAT = _IOW(&h73, 2, SizeOf (DWord))
98Const SIOCGLOWAT = _IOR(&h73, 3, SizeOf (DWord))
99Const SIOCATMARK = _IOR(&h73, 7, SizeOf (DWord))
100
101
102Type /*Class*/ hostent
103'Public
104    h_name As *Byte
105    h_aliases As **Byte
106    h_addrtype As Integer
107    h_lengt As Integer
108    h_addr_list As **Byte
109/*
110    Function h_addr() As *Byte
111        Return h_addr_list[0]
112    End Function
113
114    Sub h_addr(l As *Byte)
115        h_addr_list[0] = i
116    End Sub
117*/
118End Type 'Class
119
120Type netent
121    n_name As *Byte
122    n_aliases As **Byte
123    n_addrtyp As Integer
124    n_net As DWord
125End Type
126
127Type servent
128    s_name As *Byte
129    s_aliases As **Byte
130#ifdef _WIN64
131    s_proto As *Byte
132    s_port As Integer
133#else
134    s_port As Integer
135    s_proto As *Byte
136#endif
137End Type
138
139Type protoent
140    p_name As *Byte
141    p_aliases As **Byte
142    p_proto As Integer
143End Type
144
145' Protocols
146Const IPPROTO_IP = 0
147Const IPPROTO_HOPOPTS = 0
148Const IPPROTO_ICMP = 1
149Const IPPROTO_IGMP = 2
150Const IPPROTO_GGP = 3
151Const IPPROTO_IPV4 = 4
152Const IPPROTO_TCP = 6
153Const IPPROTO_PUP = 12
154Const IPPROTO_UDP = 17
155Const IPPROTO_IDP = 22
156Const IPPROTO_IPV6 = 41
157Const IPPROTO_ROUTING = 43
158Const IPPROTO_FRAGMENT = 44
159Const IPPROTO_ESP = 50
160Const IPPROTO_AH = 51
161Const IPPROTO_ICMPV6 = 58
162Const IPPROTO_NONE = 59
163Const IPPROTO_DSTOPTS = 60
164Const IPPROTO_ND = 77
165Const IPPROTO_ICLFXBM = 78
166
167Const IPPROTO_RAW = 255
168Const IPPROTO_MAX = 256
169
170' Port/socket numbers: network standard functions
171Const IPPORT_ECHO = 7
172Const IPPORT_DISCARD = 9
173Const IPPORT_SYSTAT = 11
174Const IPPORT_DAYTIME = 13
175Const IPPORT_NETSTAT = 15
176Const IPPORT_FTP = 21
177Const IPPORT_TELNET = 23
178Const IPPORT_SMTP = 25
179Const IPPORT_TIMESERVER = 37
180Const IPPORT_NAMESERVER = 42
181Const IPPORT_WHOIS = 43
182Const IPPORT_MTP = 57
183
184' Port/socket numbers: host specific functions
185Const IPPORT_TFTP = 69
186Const IPPORT_RJE = 77
187Const IPPORT_FINGER = 79
188Const IPPORT_TTYLINK = 87
189Const IPPORT_SUPDUP = 95
190
191' UNIX TCP sockets
192Const IPPORT_EXECSERVER = 512
193Const IPPORT_LOGINSERVER = 513
194Const IPPORT_CMDSERVER = 514
195Const IPPORT_EFSSERVER = 520
196
197' UNIX UDP sockets
198Const IPPORT_BIFFUDP = 512
199Const IPPORT_WHOSERVER = 513
200Const IPPORT_ROUTESERVER = 520
201' 520+1 also used
202
203' Ports < IPPORT_RESERVED are reserved for privileged processes (e.g. root).
204Const IPPORT_RESERVED = 1024
205
206' Link numbers
207Const IMPLINK_IP = 155
208Const IMPLINK_LOWEXPER = 156
209Const IMPLINK_HIGHEXPER = 158
210
211' Internet address (old style... should be updated)
212Type /*Class*/ in_addr
213'Public
214/*
215    Union S_un
216        S_un_b As Type
217            s_b1 As Byte
218            s_b2 As Byte
219            s_b3 As Byte
220            s_b4 As Byte
221        End Type
222        S_un_w As Type
223            s_w1 As Word
224            s_w2 As Word
225        End Type
226        S_addr As DWord
227    End Union
228*/
229    s_addr As DWord
230/*
231    Function s_host() As Byte
232        Return GetByte(VarPtr(s_addr) + 1)
233    End Function
234
235    Sub s_host(h As Byte)
236        Return SetByte(VarPtr(s_addr) + 2, h)
237    End Sub
238
239    Function s_net() As Byte
240        Return GetByte(VarPtr(s_addr) + 0)
241    End Function
242
243    Sub s_net(n As Byte)
244        Return SetByte(VarPtr(s_addr) + 0, n)
245    End Sub
246
247    Function s_imp() As Word
248        Return GetWord(VarPtr(s_addr) + 1)
249    End Function
250
251    Sub s_imp(i As Word)
252        Return SetWord(VarPtr(s_addr) + 1, i)
253    End Sub
254
255    Function s_impno() As Byte
256        Return GetByte(VarPtr(s_addr) + 3)
257    End Function
258
259    Sub s_impno(i As Byte)
260        Return SetByte(VarPtr(s_addr) + 3, i)
261    End Sub
262
263    Function s_lh() As Byte
264        Return GetByte(VarPtr(s_addr) + 2)
265    End Function
266
267    Sub s_lh(l As Byte)
268        Return SetByte(VarPtr(s_addr) + 2, l)
269    End Sub
270*/
271End Type 'Class
272
273Const IN_CLASSA(i) = (((i) As DWord And &h80000000) = 0)
274Const IN_CLASSA_NET = &hff000000
275Const IN_CLASSA_NSHIFT = 24
276Const IN_CLASSA_HOST = &h00ffffff
277Const IN_CLASSA_MAX = 128
278
279Const IN_CLASSB(i) = (((i) As DWord & &hc0000000) = &h80000000)
280Const IN_CLASSB_NET= &hffff0000
281Const IN_CLASSB_NSHIFT = 16
282Const IN_CLASSB_HOST = &h0000ffff
283Const IN_CLASSB_MAX = 65536
284
285Const IN_CLASSC(i) = (((i) As DWord And &he0000000) = &hc0000000)
286Const IN_CLASSC_NET = &hffffff00
287Const IN_CLASSC_NSHIFT = 8
288Const IN_CLASSC_HOST = &h000000ff
289
290Const IN_CLASSD(i) = (((i) As DWord And &hf0000000) = &he0000000)
291Const IN_CLASSD_NET  = &hf0000000
292Const IN_CLASSD_NSHIFT = 28
293Const IN_CLASSD_HOST = &h0fffffff
294Const IN_MULTICAST(i) = IN_CLASSD(i)
295
296Const INADDR_ANY = &h00000000 As DWord
297Const INADDR_LOOPBACK = &h7f000001
298Const INADDR_BROADCAST = &hffffffff As DWord
299Const INADDR_NONE = &hffffffff
300
301Const ADDR_ANY = INADDR_ANY
302
303' Socket address, internet style.
304Type sockaddr_in
305    sin_family As Integer
306    sin_port As Word
307    sin_addr As in_addr
308    sin_zero[ELM(8)] As Byte
309End Type
310
311Const WSADESCRIPTION_LEN = 256
312Const WSASYS_STATUS_LEN = 128
313
314Type WSADATA
315    wVersion As Word
316    wHighVersion As Word
317#ifdef _WIN64
318    iMaxSockets As Word
319    iMaxUdpDg As Word
320    lpVendorInfo As *Byte
321    szDescription[WSADESCRIPTION_LEN] As Byte
322    szSystemStatus[WSASYS_STATUS_LEN] As Byte
323#else
324    szDescription[WSADESCRIPTION_LEN] As Byte
325    szSystemStatus[WSASYS_STATUS_LEN] As Byte
326    iMaxSockets As Word
327    iMaxUdpDg As Word
328    lpVendorInfo As *Byte
329#endif
330End Type
331
332TypeDef LPWSADATA = *WSADATA
333
334' Definitions related to sockets: types, address families, options,  taken from the BSD file sys/socket.h.
335
336Const INVALID_SOCKET = (Not 0) As ULONG_PTR
337Const SOCKET_ERROR = (-1)
338
339Const FROM_PROTOCOL_INFO = (-1)
340
341' Types
342Const SOCK_STREAM = 1
343Const SOCK_DGRAM = 2
344Const SOCK_RAW = 3
345Const SOCK_RDM = 4
346Const SOCK_SEQPACKET = 5
347
348' Option flags per-socket.
349Const SO_DEBUG = &h0001
350Const SO_ACCEPTCONN = &h0002
351Const SO_REUSEADDR = &h0004
352Const SO_KEEPALIVE = &h0008
353Const SO_DONTROUTE = &h0010
354Const SO_BROADCAST = &h0020
355Const SO_USELOOPBACK = &h0040
356Const SO_LINGER = &h0080
357Const SO_OOBINLINE = &h0100
358
359Const SO_DONTLINGER = ((Not SO_LINGER) As Long)
360Const SO_EXCLUSIVEADDRUSE = ((Not SO_REUSEADDR) As Long)
361
362' Additional options.
363Const SO_SNDBUF = &h1001
364Const SO_RCVBUF = &h1002
365Const SO_SNDLOWAT = &h1003
366Const SO_RCVLOWAT = &h1004
367Const SO_SNDTIMEO = &h1005
368Const SO_RCVTIMEO = &h1006
369Const SO_ERROR = &h1007
370Const SO_TYPE = &h1008
371
372' WinSock 2 extension -- new options
373Const SO_GROUP_ID = &h2001
374Const SO_GROUP_PRIORITY = &h2002
375Const SO_MAX_MSG_SIZE = &h2003
376Const SO_PROTOCOL_INFOA = &h2004
377Const SO_PROTOCOL_INFOW = &h2005
378#ifdef UNICODE
379Const SO_PROTOCOL_INFO = SO_PROTOCOL_INFOW
380#else
381Const SO_PROTOCOL_INFO = SO_PROTOCOL_INFOA
382#endif /* UNICODE */
383Const PVD_CONFIG = &h3001
384Const SO_CONDITIONAL_ACCEPT = &h3002
385
386' TCP options.
387Const TCP_NODELAY = &h0001
388
389' Address families.
390Const AF_UNSPEC = 0
391Const AF_UNIX = 1
392Const AF_INET = 2
393Const AF_IMPLINK = 3
394Const AF_PUP = 4
395Const AF_CHAOS = 5
396Const AF_NS = 6
397Const AF_IPX = AF_NS
398Const AF_ISO = 7
399Const AF_OSI = AF_ISO
400Const AF_ECMA = 8
401Const AF_DATAKIT = 9
402Const AF_CCITT = 10
403Const AF_SNA = 11
404Const AF_DECnet = 12
405Const AF_DLI = 13
406Const AF_LAT = 14
407Const AF_HYLINK = 15
408Const AF_APPLETALK = 16
409Const AF_NETBIOS = 17
410Const AF_VOICEVIEW = 18
411Const AF_FIREFOX = 19
412Const AF_UNKNOWN1 = 20
413Const AF_BAN = 21
414Const AF_ATM = 22
415Const AF_INET6 = 23
416Const AF_CLUSTER = 24
417Const AF_12844 = 25
418Const AF_IRDA = 26
419Const AF_NETDES = 28
420
421Const AF_TCNPROCESS = 29
422Const AF_TCNMESSAGE = 30
423Const AF_ICLFXBM = 31
424
425Const AF_MAX = 32
426
427' Structure used by kernel to store most addresses.
428Type sockaddr
429    sa_family As Word
430    sa_data[ELM(14)] As Byte
431End Type
432
433' Portable socket structure (RFC 2553).
434
435' Desired design of maximum size and alignment.
436' These are implementation specific.
437Const _SS_MAXSIZE = 128 ' Maximum size.
438Const _SS_ALIGNSIZE = (SizeOf (Int64)) 'Desired alignment.
439
440' Definitions used for sockaddr_storage structure paddings design.
441Const _SS_PAD1SIZE = (_SS_ALIGNSIZE - SizeOf (Integer))
442Const _SS_PAD2SIZE = (_SS_MAXSIZE - (SizeOf (Integer) + _SS_PAD1SIZE + _SS_ALIGNSIZE))
443
444Type sockaddr_storage
445    ss_family As Integer
446    __ss_pad1[ELM(_SS_PAD1SIZE)] As Byte
447    __ss_align As Int64
448    __ss_pad2[ELM(_SS_PAD2SIZE)] As Byte
449End Type
450
451Type sockproto
452    sp_family As Word
453    sp_protocol As Word
454End Type
455
456' Protocol families, same as address families for now.
457Const PF_UNSPEC = AF_UNSPEC
458Const PF_UNIX = AF_UNIX
459Const PF_INET = AF_INET
460Const PF_IMPLINK = AF_IMPLINK
461Const PF_PUP = AF_PUP
462Const PF_CHAOS = AF_CHAOS
463Const PF_NS = AF_NS
464Const PF_IPX = AF_IPX
465Const PF_ISO = AF_ISO
466Const PF_OSI = AF_OSI
467Const PF_ECMA = AF_ECMA
468Const PF_DATAKIT = AF_DATAKIT
469Const PF_CCITT = AF_CCITT
470Const PF_SNA = AF_SNA
471Const PF_DECnet = AF_DECnet
472Const PF_DLI = AF_DLI
473Const PF_LAT = AF_LAT
474Const PF_HYLINK = AF_HYLINK
475Const PF_APPLETALK = AF_APPLETALK
476Const PF_VOICEVIEW = AF_VOICEVIEW
477Const PF_FIREFOX = AF_FIREFOX
478Const PF_UNKNOWN1 = AF_UNKNOWN1
479Const PF_BAN = AF_BAN
480Const PF_ATM = AF_ATM
481Const PF_INET6 = AF_INET6
482
483Const PF_MAX = AF_MAX
484
485' Structure used for manipulating linger option.
486Type linger
487    l_onoff As Word
488    l_linger As Word
489End Type
490
491' Level number for (get/set)sockopt() to apply to socket itself.
492Const SOL_SOCKET = &hffff
493
494' Maximum queue length specifiable by listen.
495Const SOMAXCONN = &h7fffffff
496
497Const MSG_OOB = &h1
498Const MSG_PEEK = &h2
499Const MSG_DONTROUTE = &h4
500Const MSG_WAITALL = &h8
501
502Const MSG_PARTIAL = &h8000
503
504' WinSock 2 extension -- new flags for WSASend(), WSASendTo(), WSARecv() and
505'                          WSARecvFrom()
506Const MSG_INTERRUPT = &h10
507
508Const MSG_MAXIOVLEN = 16
509
510' Define constant based on rfc883, used by gethostbyxxxx() calls.
511Const MAXGETHOSTSTRUCT = 1024
512
513' WinSock 2 extension -- bit values and indices for FD_XXX network events
514Const FD_READ_BIT = 0
515Const FD_READ = (1 << FD_READ_BIT)
516
517Const FD_WRITE_BIT = 1
518Const FD_WRITE = (1 << FD_WRITE_BIT)
519
520Const FD_OOB_BIT = 2
521Const FD_OOB = (1 << FD_OOB_BIT)
522
523Const FD_ACCEPT_BIT = 3
524Const FD_ACCEPT = (1 << FD_ACCEPT_BIT)
525
526Const FD_CONNECT_BIT = 4
527Const FD_CONNECT = (1 << FD_CONNECT_BIT)
528
529Const FD_CLOSE_BIT = 5
530Const FD_CLOSE = (1 << FD_CLOSE_BIT)
531
532Const FD_QOS_BIT = 6
533Const FD_QOS = (1 << FD_QOS_BIT)
534
535Const FD_GROUP_QOS_BIT = 7
536Const FD_GROUP_QOS = (1 << FD_GROUP_QOS_BIT)
537
538Const FD_ROUTING_INTERFACE_CHANGE_BIT = 8
539Const FD_ROUTING_INTERFACE_CHANGE = (1 << FD_ROUTING_INTERFACE_CHANGE_BIT)
540
541Const FD_ADDRESS_LIST_CHANGE_BIT = 9
542Const FD_ADDRESS_LIST_CHANGE = (1 << FD_ADDRESS_LIST_CHANGE_BIT)
543
544Const FD_MAX_EVENTS = 10
545Const FD_ALL_EVENTS = ((1 << FD_MAX_EVENTS) - 1)
546
547#require <api_winerror.sbp>
548
549' Compatibility macros.
550
551'Const h_errno = WSAGetLastError()
552Const HOST_NOT_FOUND = WSAHOST_NOT_FOUND
553Const TRY_AGAIN = WSATRY_AGAIN
554Const NO_RECOVERY = WSANO_RECOVERY
555Const NO_DATA = WSANO_DATA
556Const WSANO_ADDRESS = WSANO_DATA
557Const NO_ADDRESS = WSANO_ADDRESS
558
559' WinSock 2 extension -- new error codes and type definition
560
561'#ifdef _WIN32
562
563TypeDef WSAEVENT = HANDLE
564TypeDef LPWSAEVENT = *HANDLE
565TypeDef WSAOVERLAPPED = OVERLAPPED
566TypeDef LPWSAOVERLAPPED = *OVERLAPPED
567
568Const WSA_IO_PENDING = (ERROR_IO_PENDING)
569Const WSA_IO_INCOMPLETE = (ERROR_IO_INCOMPLETE)
570Const WSA_INVALID_HANDLE = (ERROR_INVALID_HANDLE)
571Const WSA_INVALID_PARAMETER = (ERROR_INVALID_PARAMETER)
572Const WSA_NOT_ENOUGH_MEMORY = (ERROR_NOT_ENOUGH_MEMORY)
573Const WSA_OPERATION_ABORTED = (ERROR_OPERATION_ABORTED)
574
575Const WSA_INVALID_EVENT = (0 As WSAEVENT)
576Const WSA_MAXIMUM_WAIT_EVENTS = (MAXIMUM_WAIT_OBJECTS)
577Const WSA_WAIT_FAILED = (WAIT_FAILED)
578Const WSA_WAIT_EVENT_0 = (WAIT_OBJECT_0)
579Const WSA_WAIT_IO_COMPLETION = (WAIT_IO_COMPLETION)
580Const WSA_WAIT_TIMEOUT = (WAIT_TIMEOUT)
581Const WSA_INFINITE = (INFINITE)
582
583'#elif defined _WIN16
584'#endif
585
586Type WSABUF
587    len As DWord
588    buf As *Byte
589End Type
590TypeDef LPWSABUF = *WSABUF
591
592#require <qos.ab>
593
594Type QOS 'struct _QualityOfService
595    SendingFlowspec As FLOWSPEC
596    ReceivingFlowspec As FLOWSPEC
597    ProviderSpecific As WSABUF
598End Type
599TypeDef LPQOS = *QOS
600
601' WinSock 2 extension -- manifest constants for return values of the condition function
602Const CF_ACCEPT = &h0000
603Const CF_REJECT = &h0001
604Const CF_DEFER = &h0002
605
606' WinSock 2 extension -- manifest constants for shutdown()
607Const SD_RECEIVE = &h00
608Const SD_SEND = &h01
609Const SD_BOTH = &h02
610
611' WinSock 2 extension -- data type and manifest constants for socket groups
612TypeDef GROUP = DWord
613
614Const SG_UNCONSTRAINED_GROUP = &h01
615Const SG_CONSTRAINED_GROUP = &h02
616
617' WinSock 2 extension -- data type for WSAEnumNetworkEvents()
618Type WSANETWORKEVENTS
619    lNetworkEvents As Long
620    iErrorCode[ELM(FD_MAX_EVENTS)] As Long
621End Type
622TypeDef LPWSANETWORKEVENTS = *WSANETWORKEVENTS
623
624' WinSock 2 extension -- WSAPROTOCOL_INFO structure and associated
625' manifest constants
626
627Const MAX_PROTOCOL_CHAIN = 7
628
629Const BASE_PROTOCOL = 1
630Const LAYERED_PROTOCOL = 0
631
632Type WSAPROTOCOLCHAIN
633    ChainLen As Long
634    ChainEntries[ELM(MAX_PROTOCOL_CHAIN)] As DWord
635End Type
636TypeDef LPWSAPROTOCOLCHAIN = *WSAPROTOCOLCHAIN
637
638Const WSAPROTOCOL_LEN = 255
639
640Type WSAPROTOCOL_INFOA
641    dwServiceFlags1 As DWord
642    dwServiceFlags2 As DWord
643    dwServiceFlags3 As DWord
644    dwServiceFlags4 As DWord
645    dwProviderFlags As DWord
646    ProviderId As GUID
647    dwCatalogEntryId As DWord
648    ProtocolChain As WSAPROTOCOLCHAIN
649    iVersion As Long
650    iAddressFamily As Long
651    iMaxSockAddr As Long
652    iMinSockAddr As Long
653    iSocketType As Long
654    iProtocol As Long
655    iProtocolMaxOffset As Long
656    iNetworkByteOrder As Long
657    iSecurityScheme As Long
658    dwMessageSize As DWord
659    dwProviderReserved As DWord
660    szProtocol[WSAPROTOCOL_LEN] As Byte
661End Type
662TypeDef LPWSAPROTOCOL_INFOA = *WSAPROTOCOL_INFOA
663
664Type WSAPROTOCOL_INFOW
665    dwServiceFlags1 As DWord
666    dwServiceFlags2 As DWord
667    dwServiceFlags3 As DWord
668    dwServiceFlags4 As DWord
669    dwProviderFlags As DWord
670    ProviderId As GUID
671    dwCatalogEntryId As DWord
672    ProtocolChain As WSAPROTOCOLCHAIN
673    iVersion As Long
674    iAddressFamily As Long
675    iMaxSockAddr As Long
676    iMinSockAddr As Long
677    iSocketType As Long
678    iProtocol As Long
679    iProtocolMaxOffset As Long
680    iNetworkByteOrder As Long
681    iSecurityScheme As Long
682    dwMessageSize As DWord
683    dwProviderReserved As DWord
684    szProtocol[WSAPROTOCOL_LEN] As WCHAR
685End Type
686TypeDef LPWSAPROTOCOL_INFOW = *WSAPROTOCOL_INFOW
687
688#ifdef UNICODE
689TypeDef WSAPROTOCOL_INFO = WSAPROTOCOL_INFOW
690TypeDef LPWSAPROTOCOL_INFO = LPWSAPROTOCOL_INFOW
691#else
692TypeDef WSAPROTOCOL_INFO = WSAPROTOCOL_INFOA
693TypeDef LPWSAPROTOCOL_INFO = LPWSAPROTOCOL_INFOA
694#endif
695
696' Flag bit definitions for dwProviderFlags
697Const PFL_MULTIPLE_PROTO_ENTRIES = &h00000001
698Const PFL_RECOMMENDED_PROTO_ENTRY = &h00000002
699Const PFL_HIDDEN = &h00000004
700Const PFL_MATCHES_PROTOCOL_ZERO = &h00000008
701
702' Flag bit definitions for dwServiceFlags1
703Const XP1_CONNECTIONLESS = &h00000001
704Const XP1_GUARANTEED_DELIVERY = &h00000002
705Const XP1_GUARANTEED_ORDER = &h00000004
706Const XP1_MESSAGE_ORIENTED = &h00000008
707Const XP1_PSEUDO_STREAM = &h00000010
708Const XP1_GRACEFUL_CLOSE = &h00000020
709Const XP1_EXPEDITED_DATA = &h00000040
710Const XP1_CONNECT_DATA = &h00000080
711Const XP1_DISCONNECT_DATA = &h00000100
712Const XP1_SUPPORT_BROADCAST = &h00000200
713Const XP1_SUPPORT_MULTIPOINT = &h00000400
714Const XP1_MULTIPOINT_CONTROL_PLANE = &h00000800
715Const XP1_MULTIPOINT_DATA_PLANE = &h00001000
716Const XP1_QOS_SUPPORTED = &h00002000
717Const XP1_INTERRUPT = &h00004000
718Const XP1_UNI_SEND = &h00008000
719Const XP1_UNI_RECV = &h00010000
720Const XP1_IFS_HANDLES = &h00020000
721Const XP1_PARTIAL_MESSAGE = &h00040000
722
723Const BIGENDIAN = &h0000
724Const LITTLEENDIAN = &h0001
725
726Const SECURITY_PROTOCOL_NONE = &h0000
727
728' WinSock 2 extension -- manifest constants for WSAJoinLeaf()
729Const JL_SENDER_ONLY = &h01
730Const JL_RECEIVER_ONLY = &h02
731Const JL_BOTH = &h04
732
733' WinSock 2 extension -- manifest constants for WSASocket()
734Const WSA_FLAG_OVERLAPPED = &h01
735Const WSA_FLAG_MULTIPOINT_C_ROOT = &h02
736Const WSA_FLAG_MULTIPOINT_C_LEAF = &h04
737Const WSA_FLAG_MULTIPOINT_D_ROOT = &h08
738Const WSA_FLAG_MULTIPOINT_D_LEAF = &h10
739
740' WinSock 2 extension -- manifest constants for WSAIoctl()
741Const IOC_UNIX = &h00000000
742Const IOC_WS2 = &h08000000
743Const IOC_PROTOCOL = &h10000000
744Const IOC_VENDOR = &h18000000
745
746Const _WSAIO(x, y) = (IOC_VOID Or (x) Or (y))
747Const _WSAIOR(x, y) = (IOC_OUT Or (x) Or (y))
748Const _WSAIOW(x, y) = (IOC_IN Or (x) Or (y))
749Const _WSAIORW(x, y) = (IOC_INOUT Or (x) Or (y))
750
751Const SIO_ASSOCIATE_HANDLE = _WSAIOW(IOC_WS2, 1)
752Const SIO_ENABLE_CIRCULAR_QUEUEING = _WSAIO(IOC_WS2, 2)
753Const SIO_FIND_ROUTE = _WSAIOR(IOC_WS2, 3)
754Const SIO_FLUSH = _WSAIO(IOC_WS2, 4)
755Const SIO_GET_BROADCAST_ADDRESS = _WSAIOR(IOC_WS2, 5)
756Const SIO_GET_EXTENSION_FUNCTION_POINTER = _WSAIORW(IOC_WS2, 6)
757Const SIO_GET_QOS = _WSAIORW(IOC_WS2, 7)
758Const SIO_GET_GROUP_QOS = _WSAIORW(IOC_WS2, 8)
759Const SIO_MULTIPOINT_LOOPBACK = _WSAIOW(IOC_WS2, 9)
760Const SIO_MULTICAST_SCOPE = _WSAIOW(IOC_WS2, 10)
761Const SIO_SET_QOS = _WSAIOW(IOC_WS2, 11)
762Const SIO_SET_GROUP_QOS = _WSAIOW(IOC_WS2, 12)
763Const SIO_TRANSLATE_HANDLE = _WSAIORW(IOC_WS2, 13)
764Const SIO_ROUTING_INTERFACE_QUERY = _WSAIORW(IOC_WS2, 20)
765Const SIO_ROUTING_INTERFACE_CHANGE = _WSAIOW(IOC_WS2, 21)
766Const SIO_ADDRESS_LIST_QUERY = _WSAIOR(IOC_WS2, 22)
767Const SIO_ADDRESS_LIST_CHANGE = _WSAIO(IOC_WS2, 23)
768Const SIO_QUERY_TARGET_PNP_HANDLE = _WSAIOR(IOC_WS2, 24)
769Const SIO_ADDRESS_LIST_SORT = _WSAIORW(IOC_WS2, 25)
770
771' WinSock 2 extensions -- data types for the condition function in
772' WSAAccept() and overlapped I/O completion routine.
773
774TypeDef LPCONDITIONPROC = *Function(
775    ByRef CallerId As WSABUF,
776    ByRef CallerData As WSABUF,
777    ByRef lpSQOS As QOS,
778    ByRef lpGQOS As QOS,
779    ByRef lpCalleeId As WSABUF,
780    ByRef lpCalleeData As WSABUF,
781    ByRef g As GROUP,
782    dwCallbackData As ULONG_PTR
783) As Long
784
785TypeDef LPWSAOVERLAPPED_COMPLETION_ROUTINE = *Sub(
786    dwError As DWord,
787    cbTransferred As DWord,
788    ByRef Overlapped As WSAOVERLAPPED,
789    dwFlags As DWord)
790
791' WinSock 2 extension -- manifest constants and associated structures
792' for WSANSPIoctl()
793Const SIO_NSP_NOTIFY_CHANGE = _WSAIOW(IOC_WS2, 25)
794
795Const Enum WSACOMPLETIONTYPE
796    NSP_NOTIFY_IMMEDIATELY = 0
797    NSP_NOTIFY_HWND
798    NSP_NOTIFY_EVENT
799    NSP_NOTIFY_PORT
800    NSP_NOTIFY_APC
801End Enum
802
803TypeDef PWSACOMPLETIONTYPE = *WSACOMPLETIONTYPE
804TypeDef LPWSACOMPLETIONTYPE = *WSACOMPLETIONTYPE
805
806Type _System_WinSock_WSACOMPLETION_WINDOWMESSAGE
807    hWnd As HWND
808    uMsg As DWord
809    context As WPARAM
810End Type
811
812Type _System_WinSock_WSACOMPLETION_EVENT
813    lpOverlapped As LPWSAOVERLAPPED
814End Type
815
816Type _System_WinSock_WSACOMPLETION_APC
817    lpOverlapped As LPWSAOVERLAPPED
818    lpfnCompletionProc As LPWSAOVERLAPPED_COMPLETION_ROUTINE
819End Type
820
821Type _System_WinSock_WSACOMPLETION_PORT
822    lpOverlapped As LPWSAOVERLAPPED
823    hPort As HANDLE
824    Key As ULONG_PTR
825End Type
826
827Type /*Class*/ WSACOMPLETION
828'Public
829    Type_ As WSACOMPLETIONTYPE
830/*
831    Parameters As Union
832        WindowMessage As _System_WinSock_WSACOMPLETION_WINDOWMESSAGE
833        Event As _System_WinSock_WSACOMPLETION_EVENT
834        Apc As _System_WinSock_WSACOMPLETION_APC
835        Port As _System_WinSock_WSACOMPLETION_PORT
836    End Union
837*/
838    Port As _System_WinSock_WSACOMPLETION_PORT
839/*
840    Function WindowMessage() As _System_WinSock_WSACOMPLETION_WINDOWMESSAGE
841        Dim p As *_System_WinSock_WSACOMPLETION_WINDOWMESSAGE
842        p = VarPtr(Port) As *_System_WinSock_WSACOMPLETION_WINDOWMESSAGE
843        Return p[0]
844    End Function
845
846    Sub WindowMessage(w As _System_WinSock_WSACOMPLETION_WINDOWMESSAGE)
847        Dim p As *_System_WinSock_WSACOMPLETION_WINDOWMESSAGE
848        p = VarPtr(Port) As *_System_WinSock_WSACOMPLETION_WINDOWMESSAGE
849        p[0] = w
850    End Sub
851
852    Function Event() As _System_WinSock_WSACOMPLETION_EVENT
853        Dim p As *_System_WinSock_WSACOMPLETION_EVENT
854        p = VarPtr(Port) As *_System_WinSock_WSACOMPLETION_EVENT
855        Return p[0]
856    End Function
857
858    Sub Event(e As _System_WinSock_WSACOMPLETION_EVENT)
859        Dim p As *_System_WinSock_WSACOMPLETION_EVENT
860        p = VarPtr(Port) As *_System_WinSock_WSACOMPLETION_EVENT
861        p[0] = e
862    End Sub
863
864    Function Apc() As _System_WinSock_WSACOMPLETION_APC
865        Dim p As *_System_WinSock_WSACOMPLETION_APC
866        p = VarPtr(Port) As *_System_WinSock_WSACOMPLETION_APC
867        Return p[0]
868    End Function
869
870    Sub Apc(a As _System_WinSock_WSACOMPLETION_APC)
871        Dim p As *_System_WinSock_WSACOMPLETION_APC
872        p = VarPtr(Port) As *_System_WinSock_WSACOMPLETION_APC
873        p[0] = a
874    End Sub
875/*
876    Function Port() As _System_WinSock_WSACOMPLETION_PORT
877        Dim p As *_System_WinSock_WSACOMPLETION_PORT
878        p = VarPtr(Port) As *_System_WinSock_WSACOMPLETION_PORT
879        Return p[0]
880    End Function
881
882    Sub Port(p As _System_WinSock_WSACOMPLETION_PORT)
883        Dim p As *_System_WinSock_WSACOMPLETION_PORT
884        p = VarPtr(Port) As *_System_WinSock_WSACOMPLETION_PORT
885        p[0] = p
886    End Sub
887*/
888End Type 'Class
889
890TypeDef PWSACOMPLETION = *WSACOMPLETION
891TypeDef LPWSACOMPLETION = *WSACOMPLETION
892
893' WinSock 2 extension -- manifest constants for SIO_TRANSLATE_HANDLE ioctl
894Const TH_NETDEV = &h00000001
895Const TH_TAPI = &h00000002
896
897TypeDef SOCKADDR = sockaddr
898TypeDef PSOCKADDR = *sockaddr
899TypeDef LPSOCKADDR = *sockaddr
900
901TypeDef SOCKADDR_STORAGE = sockaddr_storage
902TypeDef PSOCKADDR_STORAGE = *sockaddr_storage
903TypeDef LPSOCKADDR_STORAGE = *sockaddr_storage
904
905' Manifest constants and type definitions related to name resolution and
906' registration (RNR) API
907
908Type BLOB
909    cbSize As DWord
910#ifdef MIDL_PASS
911    [size_is(cbSize)] pBlobData As *Byte
912#else
913    pBlobData As *Byte
914#endif
915End Type
916TypeDef LPBLOB = *BLOB
917
918' Service Install Flags
919Const SERVICE_MULTIPLE = (&h00000001)
920
921' Name Spaces
922
923Const NS_ALL = (0)
924
925Const NS_SAP = (1)
926Const NS_NDS = (2)
927Const NS_PEER_BROWSE = (3)
928Const NS_SLP = (5)
929Const NS_DHCP = (6)
930
931Const NS_TCPIP_LOCAL = (10)
932Const NS_TCPIP_HOSTS = (11)
933Const NS_DNS = (12)
934Const NS_NETBT = (13)
935Const NS_WINS = (14)
936Const NS_NLA = (15)
937
938Const NS_NBP = (20)
939
940Const NS_MS = (30)
941Const NS_STDA = (31)
942Const NS_NTDS = (32)
943
944Const NS_X500 = (40)
945Const NS_NIS = (41)
946Const NS_NISPLUS = (42)
947
948Const NS_WRQ = (50)
949
950Const NS_NETDES = (60)
951
952' Resolution flags for WSAGetAddressByName().
953Const RES_UNUSED_1 = (&h00000001)
954Const RES_FLUSH_CACHE = (&h00000002)
955Const RES_SERVICE = (&h00000004)
956
957' Well known value names for Service Types
958
959'Const SERVICE_TYPE_VALUE_IPXPORTA = "IpxSocket"
960'Const SERVICE_TYPE_VALUE_IPXPORTW = L"IpxSocket"
961'Const SERVICE_TYPE_VALUE_SAPIDA = "SapId"
962'Const SERVICE_TYPE_VALUE_SAPIDW = L"SapId"
963
964'Const SERVICE_TYPE_VALUE_TCPPORTA = "TcpPort"
965'Const SERVICE_TYPE_VALUE_TCPPORTW = L"TcpPort"
966
967'Const SERVICE_TYPE_VALUE_UDPPORTA = "UdpPort"
968'Const SERVICE_TYPE_VALUE_UDPPORTW = L"UdpPort"
969
970'Const SERVICE_TYPE_VALUE_OBJECTIDA = "ObjectId"
971'Const SERVICE_TYPE_VALUE_OBJECTIDW = L"ObjectId"
972/*
973#ifdef UNICODE
974Const SERVICE_TYPE_VALUE_SAPID = SERVICE_TYPE_VALUE_SAPIDW
975Const SERVICE_TYPE_VALUE_TCPPORT = SERVICE_TYPE_VALUE_TCPPORTW
976Const SERVICE_TYPE_VALUE_UDPPORT = SERVICE_TYPE_VALUE_UDPPORTW
977Const SERVICE_TYPE_VALUE_OBJECTID = SERVICE_TYPE_VALUE_OBJECTIDW
978#else
979Const SERVICE_TYPE_VALUE_SAPID = SERVICE_TYPE_VALUE_SAPIDA
980Const SERVICE_TYPE_VALUE_TCPPORT = SERVICE_TYPE_VALUE_TCPPORTA
981Const SERVICE_TYPE_VALUE_UDPPORT = SERVICE_TYPE_VALUE_UDPPORTA
982Const SERVICE_TYPE_VALUE_OBJECTID = SERVICE_TYPE_VALUE_OBJECTIDA
983#endif
984*/
985Const SERVICE_TYPE_VALUE_IPXPORT = "IpxSocket"
986Const SERVICE_TYPE_VALUE_SAPID = "SapId"
987Const SERVICE_TYPE_VALUE_TCPPORT = "TcpPort"
988Const SERVICE_TYPE_VALUE_UDPPORT = "UdpPort"
989Const SERVICE_TYPE_VALUE_OBJECTID = "ObjectId"
990
991' SockAddr Information
992Type SOCKET_ADDRESS
993    lpSockaddr As LPSOCKADDR
994    iSockaddrLength As Long
995End Type
996TypeDef PSOCKET_ADDRESS = *SOCKET_ADDRESS
997TypeDef LPSOCKET_ADDRESS = *SOCKET_ADDRESS
998
999' CSAddr Information
1000Type CSADDR_INFO
1001    LocalAddr As SOCKET_ADDRESS
1002    RemoteAddr As SOCKET_ADDRESS
1003    iSocketType As Long
1004    iProtocol As Long
1005End Type
1006TypeDef PCSADDR_INFO = *CSADDR_INFO
1007TypeDef LPCSADDR_INFO = *CSADDR_INFO
1008
1009' Address list returned via SIO_ADDRESS_LIST_QUERY
1010Type SOCKET_ADDRESS_LIST
1011    iAddressCount As Long
1012    Address[ELM(1)] As SOCKET_ADDRESS
1013End Type
1014TypeDef LPSOCKET_ADDRESS_LIST = *SOCKET_ADDRESS_LIST
1015
1016' Address Family/Protocol Tuples
1017Type AFPROTOCOLS
1018    iAddressFamily As Long
1019    iProtocol As Long
1020End Type
1021TypeDef PAFPROTOCOLS = *AFPROTOCOLS
1022TypeDef LPAFPROTOCOLS = *AFPROTOCOLS
1023
1024' Client Query API Typedefs
1025
1026' The comparators
1027Const Enum WSAECOMPARATOR
1028    COMP_EQUAL = 0
1029    COMP_NOTLESS
1030End Enum
1031TypeDef PWSAECOMPARATOR = *WSAECOMPARATOR
1032TypeDef LPWSAECOMPARATOR = *WSAECOMPARATOR
1033
1034Type WSAVERSION
1035    dwVersion As DWord
1036    ecHow As WSAECOMPARATOR
1037End Type
1038TypeDef PWSAVERSION = *WSAVERSION
1039TypeDef LPWSAVERSION = *WSAVERSION
1040
1041Type WSAQUERYSETA
1042    dwSize As DWord
1043    lpszServiceInstanceName As LPSTR
1044    lpServiceClassId As *GUID
1045    lpVersion As LPWSAVERSION
1046    lpszComment As LPSTR
1047    dwNameSpace As DWord
1048    lpNSProviderId As *GUID
1049    lpszContext As LPSTR
1050    dwNumberOfProtocols As DWord
1051    lpafpProtocols As LPAFPROTOCOLS
1052    lpszQueryString As LPSTR
1053    dwNumberOfCsAddrs As DWord
1054    lpcsaBuffer As LPCSADDR_INFO
1055    dwOutputFlags As DWord
1056    lpBlob As LPBLOB
1057End Type
1058TypeDef PWSAQUERYSETA = *WSAQUERYSETA
1059TypeDef LPWSAQUERYSETA = *WSAQUERYSETA
1060
1061Type WSAQUERYSETW
1062    dwSize As DWord
1063    lpszServiceInstanceName As LPWSTR
1064    lpServiceClassId As *GUID
1065    lpVersion As LPWSAVERSION
1066    lpszComment As LPWSTR
1067    dwNameSpace As DWord
1068    lpNSProviderId As *GUID
1069    lpszContext As LPWSTR
1070    dwNumberOfProtocols As DWord
1071    lpafpProtocols As LPAFPROTOCOLS
1072    lpszQueryString As LPWSTR
1073    dwNumberOfCsAddrs As DWord
1074    lpcsaBuffer As LPCSADDR_INFO
1075    dwOutputFlags As DWord
1076    lpBlob As LPBLOB
1077End Type
1078TypeDef PWSAQUERYSETW = *WSAQUERYSETW
1079TypeDef LPWSAQUERYSETW = *WSAQUERYSETW
1080
1081#ifdef UNICODE
1082TypeDef WSAQUERYSET = WSAQUERYSETW
1083TypeDef PWSAQUERYSET = PWSAQUERYSETW
1084TypeDef LPWSAQUERYSET = LPWSAQUERYSETW
1085#else
1086TypeDef WSAQUERYSET = WSAQUERYSETA
1087TypeDef PWSAQUERYSET = PWSAQUERYSETA
1088TypeDef LPWSAQUERYSET = LPWSAQUERYSETA
1089#endif
1090
1091Const LUP_DEEP = &h0001
1092Const LUP_CONTAINERS = &h0002
1093Const LUP_NOCONTAINERS = &h0004
1094Const LUP_NEAREST = &h0008
1095Const LUP_RETURN_NAME = &h0010
1096Const LUP_RETURN_TYPE = &h0020
1097Const LUP_RETURN_VERSION = &h0040
1098Const LUP_RETURN_COMMENT = &h0080
1099Const LUP_RETURN_ADDR = &h0100
1100Const LUP_RETURN_BLOB = &h0200
1101Const LUP_RETURN_ALIASES = &h0400
1102Const LUP_RETURN_QUERY_STRING = &h0800
1103Const LUP_RETURN_ALL = &h0FF0
1104Const LUP_RES_SERVICE = &h8000
1105
1106Const LUP_FLUSHCACHE = &h1000
1107Const LUP_FLUSHPREVIOUS = &h2000
1108
1109' Return flags
1110Const RESULT_IS_ALIAS = &h0001
1111Const RESULT_IS_ADDED = &h0010
1112Const RESULT_IS_CHANGED = &h0020
1113Const RESULT_IS_DELETED = &h0040
1114
1115' Service Address Registration and Deregistration Data Types.
1116
1117Const Enum WSAESETSERVICEOP
1118    RNRSERVICE_REGISTER = 0
1119    RNRSERVICE_DEREGISTER
1120    RNRSERVICE_DELETE
1121End Enum
1122TypeDef PWSAESETSERVICEOP = *WSAESETSERVICEOP
1123TypeDef LPWSAESETSERVICEOP = *WSAESETSERVICEOP
1124
1125' Service Installation/Removal Data Types.
1126
1127Type WSANSCLASSINFOA
1128    lpszName As LPSTR
1129    dwNameSpace As DWord
1130    dwValueType As DWord
1131    dwValueSize As DWord
1132    lpValue As VoidPtr
1133End Type
1134TypeDef PWSANSCLASSINFOA = *WSANSCLASSINFOA
1135TypeDef LPWSANSCLASSINFOA = *WSANSCLASSINFOA
1136
1137Type WSANSCLASSINFOW
1138    lpszName As LPWSTR
1139    dwNameSpace As DWord
1140    dwValueType As DWord
1141    dwValueSize As DWord
1142    lpValue As VoidPtr
1143End Type
1144TypeDef PWSANSCLASSINFOW = *WSANSCLASSINFOW
1145TypeDef LPWSANSCLASSINFOW = *WSANSCLASSINFOW
1146
1147#ifdef UNICODE
1148TypeDef WSANSCLASSINFO = WSANSCLASSINFOW
1149TypeDef PWSANSCLASSINFO = PWSANSCLASSINFOW
1150TypeDef LPWSANSCLASSINFO = LPWSANSCLASSINFOW
1151#else
1152TypeDef WSANSCLASSINFO = WSANSCLASSINFOA
1153TypeDef PWSANSCLASSINFO = PWSANSCLASSINFOA
1154TypeDef LPWSANSCLASSINFO = LPWSANSCLASSINFOA
1155#endif
1156
1157Type WSASERVICECLASSINFOA
1158    lpServiceClassId As *GUID
1159    lpszServiceClassName As LPSTR
1160    dwCount As DWord
1161    lpClassInfos As LPWSANSCLASSINFOA
1162End Type
1163TypeDef PWSASERVICECLASSINFOA = *WSASERVICECLASSINFOA
1164TypeDef LPWSASERVICECLASSINFOA = *WSASERVICECLASSINFOA
1165
1166Type WSASERVICECLASSINFOW
1167    lpServiceClassId As *GUID
1168    lpszServiceClassName As LPWSTR
1169    dwCount As DWord
1170    lpClassInfos As LPWSANSCLASSINFOA
1171End Type
1172TypeDef PWSASERVICECLASSINFOW = *WSASERVICECLASSINFOW
1173TypeDef LPWSASERVICECLASSINFOW = *WSASERVICECLASSINFOW
1174
1175#ifdef UNICODE
1176TypeDef WSASERVICECLASSINFO = WSASERVICECLASSINFOW
1177TypeDef PWSASERVICECLASSINFO = PWSASERVICECLASSINFOW
1178TypeDef LPWSASERVICECLASSINFO = LPWSASERVICECLASSINFOW
1179#else
1180TypeDef WSASERVICECLASSINFO = WSASERVICECLASSINFOA
1181TypeDef PWSASERVICECLASSINFO = PWSASERVICECLASSINFOA
1182TypeDef LPWSASERVICECLASSINFO = LPWSASERVICECLASSINFOA
1183#endif
1184
1185Type WSANAMESPACE_INFOA
1186    NSProviderId As GUID
1187    dwNameSpace As DWord
1188    fActive As BOOL
1189    dwVersion As DWord
1190    lpszIdentifier As LPSTR
1191End Type
1192TypeDef PWSANAMESPACE_INFOA = *WSANAMESPACE_INFOA
1193TypeDef LPWSANAMESPACE_INFOA = *WSANAMESPACE_INFOA
1194
1195Type WSANAMESPACE_INFOW
1196    NSProviderId As GUID
1197    dwNameSpace As DWord
1198    fActive As BOOL
1199    dwVersion As DWord
1200    lpszIdentifier As LPWSTR
1201End Type
1202TypeDef PWSANAMESPACE_INFOW = *WSANAMESPACE_INFOW
1203TypeDef LPWSANAMESPACE_INFOW = *WSANAMESPACE_INFOW
1204
1205#ifdef UNICODE
1206TypeDef WSANAMESPACE_INFO = WSANAMESPACE_INFOW
1207TypeDef PWSANAMESPACE_INFO = PWSANAMESPACE_INFOW
1208TypeDef LPWSANAMESPACE_INFO = LPWSANAMESPACE_INFOW
1209#else
1210TypeDef WSANAMESPACE_INFO = WSANAMESPACE_INFOA
1211TypeDef PWSANAMESPACE_INFO = PWSANAMESPACE_INFOA
1212TypeDef LPWSANAMESPACE_INFO = LPWSANAMESPACE_INFOA
1213#endif
1214
1215' Socket function prototypes
1216
1217#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1218Declare Function accept Lib "ws2_32" (s As SOCKET, ByRef addr As sockaddr, ByRef addrlen As Long) As SOCKET
1219#endif
1220
1221#ifdef INCL_WINSOCK_API_TYPEDEFS
1222TypeDef LPFN_ACCEPT = *Function(s As SOCKET, ByRef addr As sockaddr, ByRef addrlen As Long) As SOCKET
1223#endif
1224
1225#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1226Declare Function bind Lib "ws2_32" (s As SOCKET, ByRef name As sockaddr, addrlen As Long) As Long
1227#endif
1228
1229#ifdef INCL_WINSOCK_API_TYPEDEFS
1230TypeDef LPFN_BIND = *Function(s As SOCKET, ByRef name As sockaddr, addrlen As Long) As Long
1231#endif
1232
1233#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1234Declare Function closesocket Lib "ws2_32" (s As SOCKET) As Long
1235#endif
1236
1237#ifdef INCL_WINSOCK_API_TYPEDEFS
1238TypeDef LPFN_CLOSESOCKET = *Function(s As SOCKET) As Long
1239#endif
1240
1241#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1242Declare Function connect Lib "ws2_32" (s As SOCKET, ByRef name As sockaddr, namelen As Long) As Long
1243#endif
1244
1245#ifdef INCL_WINSOCK_API_TYPEDEFS
1246TypeDef LPFN_CONNECT = *Function(s As SOCKET, ByRef name As sockaddr, namelen As Long) As Long
1247#endif
1248
1249#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1250Declare Function ioctlsocket Lib "ws2_32" (s As SOCKET, cmd As Long, ByRef argp As DWord) As Long
1251#endif
1252
1253#ifdef INCL_WINSOCK_API_TYPEDEFS
1254TypeDef LPFN_IOCTLSOCKET = *Function(s As SOCKET, cmd As Long, ByRef argp As DWord) As Long
1255#endif
1256
1257#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1258Declare Function getpeername Lib "ws2_32" (s As SOCKET, ByRef name As sockaddr, ByRef namelen As Long) As Long
1259#endif
1260
1261#ifdef INCL_WINSOCK_API_TYPEDEFS
1262TypeDef LPFN_GETPEERNAME = *Function(s As SOCKET, ByRef name As sockaddr, ByRef namelen As Long) As Long
1263#endif
1264
1265#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1266Declare Function getsockname Lib "ws2_32" (s As SOCKET, ByRef name As sockaddr, ByRef namelen As Long) As Long
1267#endif
1268
1269#ifdef INCL_WINSOCK_API_TYPEDEFS
1270TypeDef LPFN_GETSOCKNAME = *Function(s As SOCKET, ByRef name As sockaddr, ByRef namelen As Long) As Long
1271#endif
1272
1273#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1274Declare Function getsockopt Lib "ws2_32" (s As SOCKET, level As Long, optname As Long, optval As *Byte, ByRef optlen As Long) As Long
1275#endif
1276
1277#ifdef INCL_WINSOCK_API_TYPEDEFS
1278TypeDef LPFN_GETSOCKOPT = *Function(s As SOCKET, level As Long, optname As Long, optval As *Byte, ByRef optlen As Long) As Long
1279#endif
1280
1281#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1282Declare Function htonl Lib "ws2_32" (hostlong As DWord) As DWord
1283#endif
1284
1285#ifdef INCL_WINSOCK_API_TYPEDEFS
1286TypeDef LPFN_HTONL = *Function(hostlong As DWord) As DWord
1287#endif
1288
1289#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1290Declare Function htons Lib "ws2_32" (hostshort As Word) As Word
1291#endif
1292
1293#ifdef INCL_WINSOCK_API_TYPEDEFS
1294TypeDef LPFN_HTONS = *Function(hostshort As Word) As Word
1295#endif
1296
1297#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1298Declare Function inet_addr Lib "ws2_32" (cp As *Byte) As DWord
1299#endif
1300
1301#ifdef INCL_WINSOCK_API_TYPEDEFS
1302TypeDef LPFN_INET_ADDR = *Function(cp As *Byte) As DWord
1303#endif
1304
1305#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1306Declare Function inet_ntoa Lib "ws2_32" (in As DWord /*in_addr*/ ) As *Byte
1307#endif
1308
1309#ifdef INCL_WINSOCK_API_TYPEDEFS
1310TypeDef LPFN_INET_NTOA = *Function(in As in_addr) As *Byte
1311#endif
1312
1313#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1314Declare Function listen Lib "ws2_32" (s As SOCKET, backlog As Long) As Long
1315#endif
1316
1317#ifdef INCL_WINSOCK_API_TYPEDEFS
1318TypeDef LPFN_LISTEN = *Function(s As SOCKET, backlog As Long) As Long
1319#endif
1320
1321#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1322Declare Function ntohl Lib "ws2_32" (netlong As DWord) As DWord
1323#endif
1324
1325#ifdef INCL_WINSOCK_API_TYPEDEFS
1326TypeDef LPFN_NTOHL = *Function(netlong As DWord) As DWord
1327#endif
1328
1329#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1330Declare Function ntohs Lib "ws2_32" (netshort As Word) As Word
1331#endif
1332
1333#ifdef INCL_WINSOCK_API_TYPEDEFS
1334TypeDef LPFN_NTOHS = *Function(netshort As Word) As Word
1335#endif
1336
1337#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1338Declare Function recv Lib "ws2_32" (s As SOCKET, buf As *Byte, len As Long, flags As Long) As Long
1339#endif
1340
1341#ifdef INCL_WINSOCK_API_TYPEDEFS
1342TypeDef LPFN_RECV = *Function(s As SOCKET, buf As *Byte, len As Long, flags As Long) As Long
1343#endif
1344
1345#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1346Declare Function recvfrom Lib "ws2_32" (s As SOCKET, buf As *Byte, len As Long, flags As Long, ByRef from As sockaddr, ByRef fromlen As Long) As Long
1347#endif
1348
1349#ifdef INCL_WINSOCK_API_TYPEDEFS
1350TypeDef LPFN_RECVFROM = *Function(s As SOCKET, buf As *Byte, len As Long, flags As Long, ByRef from As sockaddr, ByRef fromlen As Long) As Long
1351#endif
1352
1353#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1354Declare Function select Lib "ws2_32" (nfds As Long, ByRef readfds As fd_set, ByRef writefds As fd_set, ByRef exceptfds As fd_set, ByRef timeout As timeval) As Long
1355#endif
1356
1357#ifdef INCL_WINSOCK_API_TYPEDEFS
1358TypeDef LPFN_SELECT = *Function(nfds As Long, ByRef readfds As fd_set, ByRef writefds As fd_set, ByRef exceptfds As fd_set, ByRef timeout As timeval) As Long
1359#endif
1360
1361#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1362Declare Function send Lib "ws2_32" (s As SOCKET, buf As *Byte, len As Long, flags As Long) As Long
1363#endif
1364
1365#ifdef INCL_WINSOCK_API_TYPEDEFS
1366TypeDef LPFN_SEND = *Function(s As SOCKET, buf As *Byte, len As Long, flags As Long) As Long
1367#endif
1368
1369#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1370Declare Function sendto Lib "ws2_32" (s As SOCKET, buf As *Byte, len As Long, flags As Long, ByRef to_ As sockaddr, tolen As Long) As Long
1371#endif
1372
1373#ifdef INCL_WINSOCK_API_TYPEDEFS
1374TypeDef LPFN_SENDTO = *Function(s As SOCKET, buf As *Byte, len As Long, flags As Long, ByRef to_ As sockaddr, tolen As Long) As Long
1375#endif
1376
1377#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1378Declare Function setsockopt Lib "ws2_32" (s As SOCKET, level As Long, optname As Long, optval As *Byte, optlen As Long) As Long
1379#endif
1380
1381#ifdef INCL_WINSOCK_API_TYPEDEFS
1382TypeDef LPFN_SETSOCKOPT = *Function(s As SOCKET, level As Long, optname As Long, optval As *Byte, optlen As Long) As Long
1383#endif
1384
1385#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1386Declare Function shutdown Lib "ws2_32" (s As SOCKET, how As Long) As Long
1387#endif
1388
1389#ifdef INCL_WINSOCK_API_TYPEDEFS
1390TypeDef LPFN_SHUTDOWN = *Function(s As SOCKET, how As Long) As Long
1391#endif
1392
1393#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1394Declare Function socket Lib "ws2_32" (af As Long, type_ As Long, protocol As Long) As SOCKET
1395#endif
1396
1397#ifdef INCL_WINSOCK_API_TYPEDEFS
1398TypeDef LPFN_SOCKET = *Function(af As Long, type_ As Long, protocol As Long) As SOCKET
1399#endif
1400
1401' Database function prototypes
1402
1403#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1404Declare Function gethostbyaddr Lib "ws2_32" (addr As PCSTR, len As Long, type_ As Long) As *hostent
1405#endif
1406
1407#ifdef INCL_WINSOCK_API_TYPEDEFS
1408TypeDef LPFN_GETHOSTBYADDR = *Function(addr As PCSTR, len As Long, type_ As Long) As *hostent
1409#endif
1410
1411#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1412Declare Function gethostbyname Lib "ws2_32" (name As PCSTR) As *hostent
1413#endif
1414
1415#ifdef INCL_WINSOCK_API_TYPEDEFS
1416TypeDef LPFN_GETHOSTBYNAME = *Function(name As PCSTR) As *hostent
1417#endif
1418
1419#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1420Declare Function gethostname Lib "ws2_32" (name As PCSTR, namelen As Long) As Long
1421#endif
1422
1423#ifdef INCL_WINSOCK_API_TYPEDEFS
1424TypeDef LPFN_GETHOSTNAME = *Function(name As PCSTR, namelen As Long) As Long
1425#endif
1426
1427#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1428Declare Function getservbyport Lib "ws2_32" (port As Long, proto As PCSTR) As *servent
1429#endif
1430
1431#ifdef INCL_WINSOCK_API_TYPEDEFS
1432TypeDef LPFN_GETSERVBYPORT = *Function(port As Long, proto As PCSTR) As *servent
1433#endif
1434
1435#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1436Declare Function getservbyname Lib "ws2_32" (name As PCSTR, proto As PCSTR) As *servent
1437#endif
1438
1439#ifdef INCL_WINSOCK_API_TYPEDEFS
1440TypeDef LPFN_GETSERVBYNAME = *Function(name As PCSTR, proto As PCSTR) As *servent
1441#endif
1442
1443#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1444Declare Function getprotobynumber Lib "ws2_32" (number As Long) As *protoent
1445#endif
1446
1447#ifdef INCL_WINSOCK_API_TYPEDEFS
1448TypeDef LPFN_GETPROTOBYNUMBER = *Function(number As Long) As *protoent
1449#endif
1450
1451#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1452Declare Function getprotobyname Lib "ws2_32" (name As PCSTR) As *protoent
1453#endif
1454
1455#ifdef INCL_WINSOCK_API_TYPEDEFS
1456TypeDef LPFN_GETPROTOBYNAME = (name As PCSTR) As *protoent
1457#endif
1458
1459' Microsoft Windows Extension function prototypes
1460
1461#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1462Declare Function WSAStartup Lib "ws2_32" (wVersionRequested As Word, ByRef WSAData As WSADATA) As Long
1463#endif
1464
1465#ifdef INCL_WINSOCK_API_TYPEDEFS
1466TypeDef LPFN_WSASTARTUP = *Function(wVersionRequested As Word, ByRef WSAData As WSADATA) As Long
1467#endif
1468
1469#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1470Declare Function WSACleanup Lib "ws2_32" () As Long
1471#endif
1472
1473#ifdef INCL_WINSOCK_API_TYPEDEFS
1474TypeDef LPFN_WSACLEANUP = *Function() As Long
1475#endif
1476
1477#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1478Declare Sub WSASetLastError Lib "ws2_32" (iError As Long)
1479#endif
1480
1481#ifdef INCL_WINSOCK_API_TYPEDEFS
1482TypeDef LPFN_WSASETLASTERROR = *Sub(iError As Long)
1483#endif
1484
1485#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1486Declare Function WSAGetLastError Lib "ws2_32" () As Long
1487#endif
1488
1489#ifdef INCL_WINSOCK_API_TYPEDEFS
1490TypeDef LPFN_WSAGETLASTERROR = *Function() As Long
1491#endif
1492
1493#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1494Declare Function WSAIsBlocking Lib "ws2_32" () As BOOL
1495#endif
1496
1497#ifdef INCL_WINSOCK_API_TYPEDEFS
1498TypeDef LPFN_WSAISBLOCKING = *Function() As BOOL
1499#endif
1500
1501#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1502Declare Function WSAUnhookBlockingHook Lib "ws2_32" () As Long
1503#endif
1504
1505#ifdef INCL_WINSOCK_API_TYPEDEFS
1506TypeDef LPFN_WSAUNHOOKBLOCKINGHOOK = *Function() As Long
1507#endif
1508
1509#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1510Declare Function WSASetBlockingHook Lib "ws2_32" (lpBlockFunc As FARPROC) As FARPROC
1511
1512#endif
1513
1514#ifdef INCL_WINSOCK_API_TYPEDEFS
1515TypeDef LPFN_WSASETBLOCKINGHOOK = *Function(lpBlockFunc As FARPROC) As FARPROC
1516#endif
1517
1518#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1519Declare Function WSACancelBlockingCall Lib "ws2_32" () As Long
1520#endif
1521
1522#ifdef INCL_WINSOCK_API_TYPEDEFS
1523TypeDef LPFN_WSACANCELBLOCKINGCALL = *Function() As Long
1524#endif
1525
1526#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1527Declare Function WSAAsyncGetServByName Lib "ws2_32" (hwnd As HWND, msg As DWord, name As PCSTR, proto As PCSTR, buf As *Byte, buflen As Long) As HANDLE
1528#endif
1529
1530#ifdef INCL_WINSOCK_API_TYPEDEFS
1531TypeDef LPFN_WSAASYNCGETSERVBYNAME = *Function(hwnd As HWND, msg As DWord, name As PCSTR, proto As PCSTR, buf As *Byte, buflen As Long) As HANDLE
1532#endif
1533
1534#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1535Declare Function WSAAsyncGetServByPort Lib "ws2_32" (hwnd As HWND, msg As DWord, port As Long, proto As PCSTR, buf As *Byte, buflen As Long) As HANDLE
1536#endif
1537
1538#ifdef INCL_WINSOCK_API_TYPEDEFS
1539TypeDef LPFN_WSAASYNCGETSERVBYPORT = *Function(hwnd As HWND, msg As DWord, port As Long, proto As PCSTR, buf As *Byte, buflen As Long) As HANDLE
1540#endif
1541
1542#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1543Declare Function WSAAsyncGetProtoByName Lib "ws2_32" (hwnd As HWND, msg As DWord, name As PCSTR, buf As *Byte, buflen As Long) As HANDLE
1544#endif
1545
1546#ifdef INCL_WINSOCK_API_TYPEDEFS
1547TypeDef LPFN_WSAASYNCGETPROTOBYNAME = *Function(hwnd As HWND, msg As DWord, name As PCSTR, buf As *Byte, buflen As Long) As HANDLE
1548#endif
1549
1550#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1551Declare Function WSAAsyncGetProtoByNumber Lib "ws2_32" (hwnd As HWND, msg As DWord, number As Long, buf As *Byte, buflen As Long) As HANDLE
1552#endif
1553
1554#ifdef INCL_WINSOCK_API_TYPEDEFS
1555TypeDef LPFN_WSAASYNCGETPROTOBYNUMBER = *Function(hwnd As HWND, msg As DWord, number As Long, buf As *Byte, buflen As Long) As HANDLE
1556#endif
1557
1558#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1559Declare Function WSAAsyncGetHostByName Lib "ws2_32" (hwnd As HWND, msg As DWord, name As PCSTR, buf As *Byte, buflen As Long) As HANDLE
1560#endif
1561
1562#ifdef INCL_WINSOCK_API_TYPEDEFS
1563TypeDef LPFN_WSAASYNCGETHOSTBYNAME = *Function(hwnd As HWND, msg As DWord, name As PCSTR, buf As *Byte, buflen As Long) As HANDLE
1564#endif
1565
1566#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1567Declare Function WSAAsyncGetHostByAddr Lib "ws2_32" (hwnd As HWND, msg As DWord, addr As PCSTR, len As Long, type_ As Long, buf As *Byte, buflen As Long) As HANDLE
1568#endif
1569
1570#ifdef INCL_WINSOCK_API_TYPEDEFS
1571TypeDef LPFN_WSAASYNCGETHOSTBYADDR = *Function(hwnd As HWND, msg As DWord, addr As PCSTR, len As Long, type_ As Long, buf As *Byte, buflen As Long) As HANDLE
1572#endif
1573
1574#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1575Declare Function WSACancelAsyncRequest Lib "ws2_32" (hAsyncTaskHandle As HANDLE) As Long
1576#endif
1577
1578#ifdef INCL_WINSOCK_API_TYPEDEFS
1579TypeDef LPFN_WSACANCELASYNCREQUEST = *Function(hAsyncTaskHandle As HANDLE) As Long
1580#endif
1581
1582#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1583Declare Function WSAAsyncSelect Lib "ws2_32" (s As SOCKET, hwnd As HWND, msg As DWord, Event As Long) As Long
1584#endif
1585
1586#ifdef INCL_WINSOCK_API_TYPEDEFS
1587TypeDef LPFN_WSAASYNCSELECT = *Function(s As SOCKET, hwnd As HWND, msg As DWord, Event As Long) As Long
1588#endif
1589
1590/* WinSock 2 API new function prototypes */
1591
1592#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1593Declare Function WSAAccept Lib "ws2_32" (s As SOCKET, ByRef addr As sockaddr, ByRef addrlen As Long, lpfnCondition As LPCONDITIONPROC, CallbackData As ULONG_PTR) As SOCKET
1594#endif
1595
1596#ifdef INCL_WINSOCK_API_TYPEDEFS
1597TypeDef LPFN_WSAACCEPT = *Function(s As SOCKET, ByRef addr As sockaddr, ByRef addrlen As Long, lpfnCondition As LPCONDITIONPROC, CallbackData As ULONG_PTR) As SOCKET
1598#endif
1599
1600#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1601Declare Function WSACloseEvent Lib "ws2_32" (hEvent As WSAEVENT) As BOOL
1602#endif
1603
1604#ifdef INCL_WINSOCK_API_TYPEDEFS
1605TypeDef LPFN_WSACLOSEEVENT = *Function(hEvent As WSAEVENT) As BOOL
1606#endif
1607
1608#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1609Declare Function WSAConnect Lib "ws2_32" (s As SOCKET, ByRef name As sockaddr, namelen As Long, ByRef CallerData As WSABUF, ByRef CalleeData As WSABUF, ByRef SQOS As QOS, ByRef GQOS As QOS) As Long
1610#endif
1611
1612#ifdef INCL_WINSOCK_API_TYPEDEFS
1613TypeDef LPFN_WSACONNECT = *Functions As SOCKET, ByRef name As sockaddr, namelen As Long, ByRef CallerData As WSABUF, ByRef CalleeData As WSABUF, ByRef SQOS As QOS, ByRef GQOS As QOS) As Long
1614#endif
1615
1616#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1617Declare Function WSACreateEvent Lib "ws2_32" () As WSAEVENT
1618#endif
1619
1620#ifdef INCL_WINSOCK_API_TYPEDEFS
1621TypeDef LPFN_WSACREATEEVENT = *Function() As WSAEVENT
1622#endif
1623
1624#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1625Declare Function WSADuplicateSocketA Lib "ws2_32" (s As SOCKET, ProcessId As DWord, ByRef ProtocolInfo As WSAPROTOCOL_INFOA) As Long
1626Declare Function WSADuplicateSocketW Lib "ws2_32" (s As SOCKET, ProcessId As DWord, ByRef ProtocolInfo As WSAPROTOCOL_INFOW) As Long
1627#ifdef UNICODE
1628Declare Function WSADuplicateSocket Lib "ws2_32" Alias "WSADuplicateSocketW" (s As SOCKET, ProcessId As DWord, ByRef ProtocolInfo As WSAPROTOCOL_INFO) As Long
1629#else
1630Declare Function WSADuplicateSocket Lib "ws2_32" Alias "WSADuplicateSocketA" (s As SOCKET, ProcessId As DWord, ByRef ProtocolInfo As WSAPROTOCOL_INFO) As Long
1631#endif
1632#endif
1633
1634#ifdef INCL_WINSOCK_API_TYPEDEFS
1635TypeDef LPFN_WSADUPLICATESOCKETA = *Function(s As SOCKET, ProcessId As DWord, ByRef ProtocolInfo As WSAPROTOCOL_INFOA) As Long
1636TypeDef LPFN_WSADUPLICATESOCKETW = *Function(s As SOCKET, ProcessId As DWord, ByRef ProtocolInfo As WSAPROTOCOL_INFOW) As Long
1637#ifdef UNICODE
1638TypeDef LPFN_WSADUPLICATESOCKET = LPFN_WSADUPLICATESOCKETW
1639#else
1640TypeDef LPFN_WSADUPLICATESOCKET = LPFN_WSADUPLICATESOCKETA
1641#endif
1642#endif
1643
1644#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1645Declare Function WSAEnumNetworkEvents Lib "ws2_32" (s As SOCKET, hEventObject As WSAEVENT, ByRef NetworkEvents As WSANETWORKEVENTS) As Long
1646#endif
1647
1648#ifdef INCL_WINSOCK_API_TYPEDEFS
1649TypeDef LPFN_WSAENUMNETWORKEVENTS = *Function(s As SOCKET, hEventObject As WSAEVENT, ByRef NetworkEvents As WSANETWORKEVENTS) As Long
1650#endif
1651
1652#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1653Declare Function WSAEnumProtocolsA Lib "ws2_32" (Protocols As *Long, ByRef ProtocolBuffer As WSAPROTOCOL_INFOA, ByRef BufferLength As DWord) As Long
1654Declare Function WSAEnumProtocolsW Lib "ws2_32" (Protocols As *Long, ByRef ProtocolBuffer As WSAPROTOCOL_INFOW, ByRef BufferLength As DWord) As Long
1655#ifdef UNICODE
1656Declare Function WSAEnumProtocols Lib "ws2_32" Alias "WSAEnumProtocolsW" (Protocols As *Long, ByRef ProtocolBuffer As WSAPROTOCOL_INFO, ByRef BufferLength As DWord) As Long
1657#else
1658Declare Function WSAEnumProtocols Lib "ws2_32" Alias "WSAEnumProtocolsA" (Protocols As *Long, ByRef ProtocolBuffer As WSAPROTOCOL_INFO, ByRef BufferLength As DWord) As Long
1659#endif
1660#endif
1661
1662#ifdef INCL_WINSOCK_API_TYPEDEFS
1663TypeDef LPFN_WSAENUMPROTOCOLSA = *Function(Protocols As *Long, ByRef ProtocolBuffer As WSAPROTOCOL_INFOA, ByRef BufferLength As DWord) As Long
1664TypeDef LPFN_WSAENUMPROTOCOLSW = *Function(Protocols As *Long, ByRef ProtocolBuffer As WSAPROTOCOL_INFOW, ByRef BufferLength As DWord) As Long
1665#ifdef UNICODE
1666TypeDef LPFN_WSAENUMPROTOCOLS = LPFN_WSAENUMPROTOCOLSW
1667#else
1668TypeDef LPFN_WSAENUMPROTOCOLS = LPFN_WSAENUMPROTOCOLSA
1669#endif
1670#endif
1671
1672#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1673Declare Function WSAEventSelect Lib "ws2_32" (s As SOCKET, hEventObject As WSAEVENT, NetworkEvents As Long) As Long
1674#endif
1675
1676#ifdef INCL_WINSOCK_API_TYPEDEFS
1677TypeDef LPFN_WSAEVENTSELECT = *Function(s As SOCKET, hEventObject As WSAEVENT, NetworkEvents As Long) As Long
1678#endif
1679
1680#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1681Declare Function WSAGetOverlappedResult Lib "ws2_32" (s As SOCKET, ByRef Overlapped As WSAOVERLAPPED, ByRef cbTransfer As DWord, Wait As BOOL, ByRef Flags As DWord) As BOOL
1682#endif
1683
1684#ifdef INCL_WINSOCK_API_TYPEDEFS
1685TypeDef LPFN_WSAGETOVERLAPPEDRESULT = *Function(s As SOCKET, ByRef Overlapped As WSAOVERLAPPED, ByRef cbTransfer As DWord, Wait As BOOL, ByRef Flags As DWord) As BOOL
1686#endif
1687
1688#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1689Declare Function WSAGetQOSByName Lib "ws2_32" (s As SOCKET, ByRef QOSName As WSABUF, ByRef qos As QOS) As BOOL
1690#endif
1691
1692#ifdef INCL_WINSOCK_API_TYPEDEFS
1693TypeDef LPFN_WSAGETQOSBYNAME = *Function(s As SOCKET, ByRef QOSName As WSABUF, ByRef qos As QOS) As BOOL
1694#endif
1695
1696#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1697Declare Function WSAHtonl Lib "ws2_32" (s As SOCKET, hostlong As DWord, ByRef netlong As DWord) As Long
1698#endif
1699
1700#ifdef INCL_WINSOCK_API_TYPEDEFS
1701TypeDef LPFN_WSAHTONL = *Function(s As SOCKET, hostlong As DWord, ByRef netlong As DWord) As Long
1702#endif
1703
1704#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1705Declare Function WSAHtons Lib "ws2_32" (s As SOCKET, hostshort As Word, ByRef netshort As Word) As Long
1706#endif
1707
1708#ifdef INCL_WINSOCK_API_TYPEDEFS
1709TypeDef LPFN_WSAHTONS = *Function(s As SOCKET, hostshort As Word, ByRef netshort As Word) As Long
1710#endif
1711
1712#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1713Declare Function WSAIoctl Lib "ws2_32" (s As SOCKET, IoControlCode As DWord, pvInBuffer As VoidPtr, cbInBuffer As DWord, pvOutBuffer As VoidPtr, cbOutBuffer As DWord,
1714    ByRef cbBytesReturned As DWord, ByRef Overlapped As WSAOVERLAPPED, pCompletionRoutine As LPWSAOVERLAPPED_COMPLETION_ROUTINE) As Long
1715#endif
1716
1717#ifdef INCL_WINSOCK_API_TYPEDEFS
1718TypeDef LPFN_WSAIOCTL = *Function(s As SOCKET, IoControlCode As DWord, pvInBuffer As VoidPtr, cbInBuffer As DWord, pvOutBuffer As VoidPtr, cbOutBuffer As DWord,
1719    ByRef cbBytesReturned As DWord, ByRef Overlapped As WSAOVERLAPPED, pCompletionRoutine As LPWSAOVERLAPPED_COMPLETION_ROUTINE) As Long
1720#endif
1721
1722#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1723Declare Function WSAJoinLeaf Lib "ws2_32" (s As SOCKET, ByRef name As sockaddr, namelen As Long, ByRef CallerData As WSABUF, ByRef CalleeData As WSABUF,
1724    ByRef SQOS As QOS, ByRef GQOS AS QOS, Flags As DWord) As SOCKET
1725#endif
1726
1727#ifdef INCL_WINSOCK_API_TYPEDEFS
1728TypeDef LPFN_WSAJOINLEAF = *Function(s As SOCKET, ByRef name As sockaddr, namelen As Long, ByRef CallerData As WSABUF, ByRef CalleeData As WSABUF,
1729    ByRef SQOS As QOS, ByRef GQOS AS QOS, Flags As DWord) As SOCKET
1730#endif
1731
1732#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1733Declare Function WSANtohl Lib "ws2_32" (s As SOCKET, netlong As DWord, ByRef hostlong As DWord) As Long
1734#endif
1735
1736#ifdef INCL_WINSOCK_API_TYPEDEFS
1737TypeDef LPFN_WSANTOHL = *Function(s As SOCKET, netlong As DWord, ByRef hostlong As DWord) As Long
1738#endif
1739
1740#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1741Declare Function WSANtohs Lib "ws2_32" (s As SOCKET, netshort As Word, ByRef hostshort As Word) As Long
1742#endif
1743
1744#ifdef INCL_WINSOCK_API_TYPEDEFS
1745TypeDef LPFN_WSANTOHS = *Function(s As SOCKET, netshort As Word, ByRef hostshort As Word) As Long
1746#endif
1747
1748#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1749Declare Function WSARecv Lib "ws2_32" (s As SOCKET, ByRef Buffers As WSABUF, BufferCount As DWord, ByRef NumberOfBytesRecvd As DWord, ByRef Flags As DWord,
1750    ByRef Overlapped As WSAOVERLAPPED, lpCompletionRoutine As LPWSAOVERLAPPED_COMPLETION_ROUTINE) As Long
1751#endif
1752
1753#ifdef INCL_WINSOCK_API_TYPEDEFS
1754TypeDef LPFN_WSARECV = *Function(s As SOCKET, ByRef Buffers As WSABUF, BufferCount As DWord, ByRef NumberOfBytesRecvd As DWord, ByRef Flags As DWord,
1755    ByRef Overlapped As WSAOVERLAPPED, lpCompletionRoutine As LPWSAOVERLAPPED_COMPLETION_ROUTINE) As Long
1756#endif
1757
1758#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1759Declare Function WSARecvDisconnect Lib "ws2_32" (s As SOCKET, ByRef InboundDisconnectData As WSABUF) As Long
1760#endif
1761
1762#ifdef INCL_WINSOCK_API_TYPEDEFS
1763TypeDef LPFN_WSARECVDISCONNECT = *Function(s As SOCKET, ByRef InboundDisconnectData As WSABUF) As Long
1764#endif
1765
1766#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1767Declare Function WSARecvFrom Lib "ws2_32" (s As SOCKET, ByRef Buffers As WSABUF, BufferCount As DWord, ByRef NumberOfBytesRecvd As DWord, ByRef Flags As DWord,
1768    ByRef From As sockaddr, ByRef Fromlen As Long, ByRef Overlapped As WSAOVERLAPPED, lpCompletionRoutine As LPWSAOVERLAPPED_COMPLETION_ROUTINE) As Long
1769#endif
1770
1771#ifdef INCL_WINSOCK_API_TYPEDEFS
1772TypeDef LPFN_WSARECVFROM = *Function(s As SOCKET, ByRef Buffers As WSABUF, BufferCount As DWord, ByRef NumberOfBytesRecvd As DWord, ByRef Flags As DWord,
1773    ByRef From As sockaddr, ByRef Fromlen As Long, ByRef Overlapped As WSAOVERLAPPED, lpCompletionRoutine As LPWSAOVERLAPPED_COMPLETION_ROUTINE) As Long
1774#endif
1775
1776#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1777Declare Function WSAResetEvent Lib "ws2_32" (hEvent As WSAEVENT) As BOOL
1778#endif
1779
1780#ifdef INCL_WINSOCK_API_TYPEDEFS
1781TypeDef LPFN_WSARESETEVENT = *Function(hEvent As WSAEVENT) As BOOL
1782#endif
1783
1784#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1785Declare Function WSASend Lib "ws2_32" (s As SOCKET, ByRef Buffers As WSABUF, BufferCount As DWord, ByRef NumberOfBytesSent As DWord, ByRef Flags As DWord,
1786    ByRef Overlapped As WSAOVERLAPPED, lpCompletionRoutine As LPWSAOVERLAPPED_COMPLETION_ROUTINE) As Long
1787#endif
1788
1789#ifdef INCL_WINSOCK_API_TYPEDEFS
1790TypeDef LPFN_WSASEND = *Function(s As SOCKET, ByRef Buffers As WSABUF, BufferCount As DWord, ByRef NumberOfBytesSent As DWord, ByRef Flags As DWord,
1791    ByRef Overlapped As WSAOVERLAPPED, lpCompletionRoutine As LPWSAOVERLAPPED_COMPLETION_ROUTINE) As Long
1792#endif
1793
1794#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1795Declare Function WSASendDisconnect Lib "ws2_32" (s As SOCKET, ByRef OutboundDisconnectData As WSABUF) As Long
1796#endif
1797
1798#ifdef INCL_WINSOCK_API_TYPEDEFS
1799TypeDef LPFN_WSASENDDISCONNECT = *Function(s As SOCKET, ByRef OutboundDisconnectData As WSABUF) As Long
1800#endif
1801
1802#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1803Declare Function WSASendTo Lib "ws2_32" (s As SOCKET, ByRef Buffers As WSABUF, BufferCount As DWord, ByRef NumberOfBytesSent As DWord, ByRef Flags As DWord,
1804    ByRef To_ As sockaddr, ToLen As Long, ByRef Overlapped As WSAOVERLAPPED, lpCompletionRoutine As LPWSAOVERLAPPED_COMPLETION_ROUTINE) As Long
1805#endif
1806
1807#ifdef INCL_WINSOCK_API_TYPEDEFS
1808TypeDef LPFN_WSASENDTO = *Function(s As SOCKET, ByRef Buffers As WSABUF, BufferCount As DWord, ByRef NumberOfBytesSent As DWord, ByRef Flags As DWord,
1809    ByRef To_ As sockaddr, ToLen As Long, ByRef Overlapped As WSAOVERLAPPED, lpCompletionRoutine As LPWSAOVERLAPPED_COMPLETION_ROUTINE) As Long
1810#endif
1811
1812#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1813Declare Function WSASetEvent Lib "ws2_32" (hEvent As WSAEVENT) As BOOL
1814#endif
1815
1816#ifdef INCL_WINSOCK_API_TYPEDEFS
1817TypeDef LPFN_WSASETEVENT = *Function(hEvent As WSAEVENT) As BOOL
1818#endif
1819
1820#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1821Declare Function WSASocketA Lib "ws2_32" (af As Long, type_ As Long, protocol As Long, ByRef ProtocolInfo As WSAPROTOCOL_INFOA, g As GROUP, Flags As DWord) As SOCKET
1822Declare Function WSASocketW Lib "ws2_32" (af As Long, type_ As Long, protocol As Long, ByRef ProtocolInfo As WSAPROTOCOL_INFOW, g As GROUP, Flags As DWord) As SOCKET
1823#ifdef UNICODE
1824Declare Function WSASocket Lib "ws2_32" Alias "WSASocketW" (af As Long, type_ As Long, protocol As Long, ByRef ProtocolInfo As WSAPROTOCOL_INFO, g As GROUP, Flags As DWord) As SOCKET
1825#else
1826Declare Function WSASocket Lib "ws2_32" Alias "WSASocketA" (af As Long, type_ As Long, protocol As Long, ByRef ProtocolInfo As WSAPROTOCOL_INFO, g As GROUP, Flags As DWord) As SOCKET
1827#endif
1828#endif
1829
1830#ifdef INCL_WINSOCK_API_TYPEDEFS
1831TypeDef LPFN_WSASOCKETA = *Function(af As Long, type_ As Long, protocol As Long, ByRef ProtocolInfo As WSAPROTOCOL_INFOA, g As GROUP, Flags As DWord) As SOCKET
1832TypeDef LPFN_WSASOCKETW = *Function(af As Long, type_ As Long, protocol As Long, ByRef ProtocolInfo As WSAPROTOCOL_INFOW, g As GROUP, Flags As DWord) As SOCKET
1833#ifdef UNICODE
1834TypeDef LPFN_WSASOCKET = LPFN_WSASOCKETW
1835#else
1836TypeDef LPFN_WSASOCKET = LPFN_WSASOCKETA
1837#endif
1838#endif
1839
1840#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1841Declare Function WSAWaitForMultipleEvents Lib "ws2_32" (cEvents As DWord, phEvents As *WSAEVENT, WaitAll As BOOL, Timeout As DWord, Alertable As BOOL) As DWord
1842#endif
1843
1844#ifdef INCL_WINSOCK_API_TYPEDEFS
1845TypeDef LPFN_WSAWAITFORMULTIPLEEVENTS = *Function(cEvents As DWord, phEvents As *WSAEVENT, WaitAll As BOOL, Timeout As DWord, Alertable As BOOL) As DWord
1846#endif
1847
1848#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1849Declare Function WSAAddressToStringA Lib "ws2_32" (ByRef saAddress As SOCKADDR, AddressLength As DWord, ByRef ProtocolInfo As WSAPROTOCOL_INFOA,
1850    AddressString As PSTR, ByRef dwAddressStringLength As DWord) As Long
1851Declare Function WSAAddressToStringW Lib "ws2_32" (ByRef saAddress As SOCKADDR, AddressLength As DWord, ByRef ProtocolInfo As WSAPROTOCOL_INFOA,
1852    AddressString As PWSTR, ByRef dwAddressStringLength As DWord) As Long
1853#ifdef UNICODE
1854Declare Function WSAAddressToString Lib "ws2_32" Alias "WSAAddressToStringW" (ByRef saAddress As SOCKADDR, AddressLength As DWord,
1855    ByRef ProtocolInfo As WSAPROTOCOL_INFO, AddressString As PSTR, ByRef dwAddressStringLength As DWord) As Long
1856#else
1857Declare Function WSAAddressToString Lib "ws2_32" Alias "WSAAddressToStringA" (ByRef saAddress As SOCKADDR, AddressLength As DWord,
1858    ByRef ProtocolInfo As WSAPROTOCOL_INFO, AddressString As PSTR, ByRef dwAddressStringLength As DWord) As Long
1859#endif
1860#endif
1861
1862#ifdef INCL_WINSOCK_API_TYPEDEFS
1863TypeDef LPFN_WSAADDRESSTOSTRINGA = *Function(ByRef saAddress As SOCKADDR, AddressLength As DWord, ByRef ProtocolInfo As WSAPROTOCOL_INFOA,
1864    AddressString As PSTR, ByRef dwAddressStringLength As DWord) As Long
1865TypeDef LPFN_WSAADDRESSTOSTRINGW = *Function(ByRef saAddress As SOCKADDR, AddressLength As DWord, ByRef ProtocolInfo As WSAPROTOCOL_INFOA,
1866    AddressString As PWSTR, ByRef dwAddressStringLength As DWord) As Long
1867#ifdef UNICODE
1868TypeDef LPFN_WSAADDRESSTOSTRING = LPFN_WSAADDRESSTOSTRINGW
1869#else
1870TypeDef LPFN_WSAADDRESSTOSTRING = LPFN_WSAADDRESSTOSTRINGA
1871#endif
1872#endif
1873
1874#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1875Declare Function WSAStringToAddressA Lib "ws2_32" (AddressString As PSTR, AddressFamily As Long, ByRef ProtocolInfo As WSAPROTOCOL_INFOA,
1876    ByRef Address As SOCKADDR, ByRef AddressLength As Long) As Long
1877Declare Function WSAStringToAddressW Lib "ws2_32" (AddressString As PWSTR, AddressFamily As Long, ByRef ProtocolInfo As WSAPROTOCOL_INFOW,
1878    ByRef Address As SOCKADDR, ByRef AddressLength As Long) As Long
1879#ifdef UNICODE
1880Declare Function WSAStringToAddress Lib "ws2_32" Alias "WSAStringToAddressW" (AddressString As PSTR, AddressFamily As Long,
1881    ByRef ProtocolInfo As WSAPROTOCOL_INFO, ByRef Address As SOCKADDR, ByRef AddressLength As Long) As Long
1882#else
1883Declare Function WSAStringToAddress Lib "ws2_32" Alias "WSAStringToAddressA" (AddressString As PSTR, AddressFamily As Long,
1884    ByRef ProtocolInfo As WSAPROTOCOL_INFO, ByRef Address As SOCKADDR, ByRef AddressLength As Long) As Long
1885#endif
1886#endif
1887
1888#ifdef INCL_WINSOCK_API_TYPEDEFS
1889TypeDef LPFN_WSASTRINGTOADDRESSA = *Function(AddressString As PSTR, AddressFamily As Long, ByRef ProtocolInfo As WSAPROTOCOL_INFOA,
1890    ByRef Address As SOCKADDR, ByRef AddressLength As Long) As Long
1891TypeDef LPFN_WSASTRINGTOADDRESSW = *Function(AddressString As PWSTR, AddressFamily As Long, ByRef ProtocolInfo As WSAPROTOCOL_INFOW,
1892    ByRef Address As SOCKADDR, ByRef AddressLength As Long) As Long
1893#ifdef UNICODE
1894TypeDef LPFN_WSASTRINGTOADDRESS = LPFN_WSASTRINGTOADDRESSW
1895#else
1896TypeDef LPFN_WSASTRINGTOADDRESS = LPFN_WSASTRINGTOADDRESSA
1897#endif
1898#endif
1899
1900' Registration and Name Resolution API functions
1901#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1902Declare Function WSALookupServiceBeginA Lib "ws2_32" (ByRef qsRestrictions As WSAQUERYSETA, ControlFlags As DWord, ByRef hLookup As HANDLE) As Long
1903Declare Function WSALookupServiceBeginW Lib "ws2_32" (ByRef qsRestrictions As WSAQUERYSETW, ControlFlags As DWord, ByRef hLookup As HANDLE) As Long
1904#ifdef UNICODE
1905Declare Function WSALookupServiceBegin Lib "ws2_32" Alias "WSALookupServiceBeginW" (ByRef qsRestrictions As WSAQUERYSET, ControlFlags As DWord, ByRef hLookup As HANDLE) As Long
1906#else
1907Declare Function WSALookupServiceBegin Lib "ws2_32" Alias "WSALookupServiceBeginA" (ByRef qsRestrictions As WSAQUERYSET, ControlFlags As DWord, ByRef hLookup As HANDLE) As Long
1908#endif
1909#endif
1910
1911#ifdef INCL_WINSOCK_API_TYPEDEFS
1912TypeDef LPFN_WSALOOKUPSERVICEBEGINA = *Function(ByRef qsRestrictions As WSAQUERYSETA, ControlFlags As DWord, ByRef hLookup As HANDLE) As Long
1913TypeDef LPFN_WSALOOKUPSERVICEBEGINW = *Function(ByRef qsRestrictions As WSAQUERYSETW, ControlFlags As DWord, ByRef hLookup As HANDLE) As Long
1914#ifdef UNICODE
1915TypeDef LPFN_WSALOOKUPSERVICEBEGIN = LPFN_WSALOOKUPSERVICEBEGINW
1916#else
1917TypeDef LPFN_WSALOOKUPSERVICEBEGIN = LPFN_WSALOOKUPSERVICEBEGINA
1918#endif
1919#endif
1920
1921#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1922Declare Function WSALookupServiceNextA Lib "ws2_32" (hLookup As HANDLE, ControlFlags As DWord, ByRef BufferLength As DWord, ByRef qsResults As WSAQUERYSETA) As Long
1923Declare Function WSALookupServiceNextW Lib "ws2_32" (hLookup As HANDLE, ControlFlags As DWord, ByRef BufferLength As DWord, ByRef qsResults As WSAQUERYSETW) As Long
1924#ifdef UNICODE
1925Declare Function WSALookupServiceNext Lib "ws2_32" Alias "WSALookupServiceNextW" (hLookup As HANDLE, ControlFlags As DWord, ByRef BufferLength As DWord, ByRef qsResults As WSAQUERYSET) As Long
1926#else
1927Declare Function WSALookupServiceNext Lib "ws2_32" Alias "WSALookupServiceNextA" (hLookup As HANDLE, ControlFlags As DWord, ByRef BufferLength As DWord, ByRef qsResults As WSAQUERYSET) As Long
1928#endif
1929#endif
1930
1931#ifdef INCL_WINSOCK_API_TYPEDEFS
1932TypeDef LPFN_WSALOOKUPSERVICENEXTA = *FunctionhLookup As HANDLE, ControlFlags As DWord, ByRef BufferLength As DWord, ByRef qsResults As WSAQUERYSETA) As Long
1933TypeDef LPFN_WSALOOKUPSERVICENEXTW = *FunctionhLookup As HANDLE, ControlFlags As DWord, ByRef BufferLength As DWord, ByRef qsResults As WSAQUERYSETW) As Long
1934#ifdef UNICODE
1935TypeDef LPFN_WSALOOKUPSERVICENEXT = LPFN_WSALOOKUPSERVICENEXTW
1936#else
1937TypeDef LPFN_WSALOOKUPSERVICENEXT = LPFN_WSALOOKUPSERVICENEXTA
1938#endif
1939#endif
1940
1941#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1942Declare Function WSANSPIoctl Lib "ws2_32" (hLookup As HANDLE, ControlCode As DWord, pvInBuffer As VoidPtr, cbInBuffer As DWord,
1943    pvOutBuffer As VoidPtr, cbOutBuffer As DWord, ByRef cbBytesReturned As DWord, ByRef Completion As WSACOMPLETION) As Long
1944#endif
1945
1946#ifdef INCL_WINSOCK_API_TYPEDEFS
1947TypeDef LPFN_WSANSPIOCTL = *Function(hLookup As HANDLE, ControlCode As DWord, pvInBuffer As VoidPtr, cbInBuffer As DWord,
1948    pvOutBuffer As VoidPtr, cbOutBuffer As DWord, ByRef cbBytesReturned As DWord, ByRef Completion As WSACOMPLETION) As Long
1949#endif
1950
1951#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1952Declare Function WSALookupServiceEnd Lib "ws2_32" (hLookup As HANDLE) As Long
1953#endif
1954
1955#ifdef INCL_WINSOCK_API_TYPEDEFS
1956TypeDef LPFN_WSALOOKUPSERVICEEND = *Function(hLookup As HANDLE) As Long
1957#endif
1958
1959#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1960Declare Function WSAInstallServiceClassA Lib "ws2_32" (ByRef ServiceClassInfo As WSASERVICECLASSINFOA) As Long
1961Declare Function WSAInstallServiceClassW Lib "ws2_32" (ByRef ServiceClassInfo As WSASERVICECLASSINFOW) As Long
1962#ifdef UNICODE
1963Declare Function WSAInstallServiceClass Lib "ws2_32" Alias "WSAInstallServiceClassW" (ByRef ServiceClassInfo As WSASERVICECLASSINFO) As Long
1964#else
1965Declare Function WSAInstallServiceClass Lib "ws2_32" Alias "WSAInstallServiceClassA" (ByRef ServiceClassInfo As WSASERVICECLASSINFO) As Long
1966#endif
1967#endif
1968
1969#ifdef INCL_WINSOCK_API_TYPEDEFS
1970TypeDef LPFN_WSAINSTALLSERVICECLASSA = *Function(ByRef ServiceClassInfo As WSASERVICECLASSINFOA) As Long
1971TypeDef LPFN_WSAINSTALLSERVICECLASSW = *Function(ByRef ServiceClassInfo As WSASERVICECLASSINFOW) As Long
1972#ifdef UNICODE
1973TypeDef LPFN_WSAINSTALLSERVICECLASS = LPFN_WSAINSTALLSERVICECLASSW
1974#else
1975TypeDef LPFN_WSAINSTALLSERVICECLASS = LPFN_WSAINSTALLSERVICECLASSA
1976#endif
1977#endif
1978
1979#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1980Declare Function WSARemoveServiceClass Lib "ws2_32" (ByRef ServiceClassId As GUID) As Long
1981#endif
1982
1983#ifdef INCL_WINSOCK_API_TYPEDEFS
1984TypeDef LPFN_WSAREMOVESERVICECLASS = *Function(ByRef ServiceClassId As GUID) As Long
1985#endif
1986
1987#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
1988Declare Function WSAGetServiceClassInfoA Lib "ws2_32" (ByRef ProviderId As GUID, ByRef ServiceClassId As GUID, ByRef BufSize As DWord, ByRef ServiceClassInfo As WSASERVICECLASSINFOA) As Long
1989Declare Function WSAGetServiceClassInfoW Lib "ws2_32" (ByRef ProviderId As GUID, ByRef ServiceClassId As GUID, ByRef BufSize As DWord, ByRef ServiceClassInfo As WSASERVICECLASSINFOW) As Long
1990#ifdef UNICODE
1991Declare Function WSAGetServiceClassInfo Lib "ws2_32" Alias "WSAGetServiceClassInfoW" (ByRef ProviderId As GUID, ByRef ServiceClassId As GUID, ByRef BufSize As DWord, ByRef ServiceClassInfo As WSASERVICECLASSINFO) As Long
1992#else
1993Declare Function WSAGetServiceClassInfo Lib "ws2_32" Alias "WSAGetServiceClassInfoA" (ByRef ProviderId As GUID, ByRef ServiceClassId As GUID, ByRef BufSize As DWord, ByRef ServiceClassInfo As WSASERVICECLASSINFO) As Long
1994#endif
1995#endif
1996
1997#ifdef INCL_WINSOCK_API_TYPEDEFS
1998TypeDef LPFN_WSAGETSERVICECLASSINFOA = *Function(ByRef ProviderId As GUID, ByRef ServiceClassId As GUID, ByRef BufSize As DWord, ByRef ServiceClassInfo As WSASERVICECLASSINFOA) As Long
1999TypeDef LPFN_WSAGETSERVICECLASSINFOW = *Function(ByRef ProviderId As GUID, ByRef ServiceClassId As GUID, ByRef BufSize As DWord, ByRef ServiceClassInfo As WSASERVICECLASSINFOW) As Long
2000#ifdef UNICODE
2001TypeDef LPFN_WSAGETSERVICECLASSINFO = LPFN_WSAGETSERVICECLASSINFOW
2002#else
2003TypeDef LPFN_WSAGETSERVICECLASSINFO = LPFN_WSAGETSERVICECLASSINFOA
2004#endif
2005#endif
2006
2007#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
2008Declare Function WSAEnumNameSpaceProvidersA Lib "ws2_32" (ByRef BufferLength As DWord, ByRef nspBuffer As WSANAMESPACE_INFOA) As Long
2009Declare Function WSAEnumNameSpaceProvidersW Lib "ws2_32" (ByRef BufferLength As DWord, ByRef nspBuffer As WSANAMESPACE_INFOW) As Long
2010#ifdef UNICODE
2011Declare Function WSAEnumNameSpaceProviders Lib "ws2_32" Alias "WSAEnumNameSpaceProvidersW" (ByRef BufferLength As DWord, ByRef nspBuffer As WSANAMESPACE_INFO) As Long
2012#else
2013Declare Function WSAEnumNameSpaceProviders Lib "ws2_32" Alias "WSAEnumNameSpaceProvidersA" (ByRef BufferLength As DWord, ByRef nspBuffer As WSANAMESPACE_INFO) As Long
2014#endif
2015#endif
2016
2017#ifdef INCL_WINSOCK_API_TYPEDEFS
2018TypeDef LPFN_WSAENUMNAMESPACEPROVIDERSA = *Function(ByRef BufferLength As DWord, ByRef nspBuffer As WSANAMESPACE_INFOA) As Long
2019TypeDef LPFN_WSAENUMNAMESPACEPROVIDERSW = *Function(ByRef BufferLength As DWord, ByRef nspBuffer As WSANAMESPACE_INFOW) As Long
2020#ifdef UNICODE
2021TypeDef LPFN_WSAENUMNAMESPACEPROVIDERS = LPFN_WSAENUMNAMESPACEPROVIDERSW
2022#else
2023TypeDef LPFN_WSAENUMNAMESPACEPROVIDERS = LPFN_WSAENUMNAMESPACEPROVIDERSA
2024#endif
2025#endif
2026
2027#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
2028Declare Function WSAGetServiceClassNameByClassIdA Lib "ws2_32" (ByRef ServiceClassId As GUID, ServiceClassName As PSTR, ByRef BufferLength As DWord) As Long
2029Declare Function WSAGetServiceClassNameByClassIdW Lib "ws2_32" (ByRef ServiceClassId As GUID, ServiceClassName As PWSTR, ByRef BufferLength As DWord) As Long
2030#ifdef UNICODE
2031Declare Function WSAGetServiceClassNameByClassId Lib "ws2_32" Alias "WSAGetServiceClassNameByClassIdW" (ByRef ServiceClassId As GUID, ServiceClassName As PWSTR, ByRef BufferLength As DWord) As Long
2032#else
2033Declare Function WSAGetServiceClassNameByClassId Lib "ws2_32" Alias "WSAGetServiceClassNameByClassIdA" (ByRef ServiceClassId As GUID, ServiceClassName As PSTR, ByRef BufferLength As DWord) As Long
2034#endif
2035#endif
2036
2037#ifdef INCL_WINSOCK_API_TYPEDEFS
2038TypeDef LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA = *Function(ByRef ServiceClassId As GUID, ServiceClassName As PSTR, ByRef BufferLength As DWord) As Long
2039TypeDef LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW = *Function(ByRef ServiceClassId As GUID, ServiceClassName As PWSTR, ByRef BufferLength As DWord) As Long
2040#ifdef UNICODE
2041TypeDef LPFN_WSAGETSERVICECLASSNAMEBYCLASSID = LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW
2042#else
2043TypeDef LPFN_WSAGETSERVICECLASSNAMEBYCLASSID = LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA
2044#endif
2045#endif
2046
2047#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
2048Declare Function WSASetServiceA Lib "ws2_32" (ByRef qsRegInfo As WSAQUERYSETA, essoperation As WSAESETSERVICEOP, ControlFlags As DWord) As Long
2049Declare Function WSASetServiceW Lib "ws2_32" (ByRef qsRegInfo As WSAQUERYSETW, essoperation As WSAESETSERVICEOP, ControlFlags As DWord) As Long
2050#ifdef UNICODE
2051Declare Function WSASetService Lib "ws2_32" Alias "WSASetServiceW" (ByRef qsRegInfo As WSAQUERYSET, essoperation As WSAESETSERVICEOP, ControlFlags As DWord) As Long
2052#else
2053Declare Function WSASetService Lib "ws2_32" Alias "WSASetServiceA" (ByRef qsRegInfo As WSAQUERYSET, essoperation As WSAESETSERVICEOP, ControlFlags As DWord) As Long
2054#endif
2055#endif
2056
2057#ifdef INCL_WINSOCK_API_TYPEDEFS
2058TypeDef LPFN_WSASETSERVICEA = *Function(ByRef qsRegInfo As WSAQUERYSETA, essoperation As WSAESETSERVICEOP, ControlFlags As DWord) As Long
2059TypeDef LPFN_WSASETSERVICEW = *Function(ByRef qsRegInfo As WSAQUERYSETW, essoperation As WSAESETSERVICEOP, ControlFlags As DWord) As Long
2060#ifdef UNICODE
2061TypeDef LPFN_WSASETSERVICE = LPFN_WSASETSERVICEW
2062#else
2063TypeDef LPFN_WSASETSERVICE = LPFN_WSASETSERVICEA
2064#endif
2065#endif
2066
2067#ifndef NO_INCL_WINSOCK_API_PROTOTYPES
2068Declare Function WSAProviderConfigChange Lib "ws2_32" (ByRef NotificationHandle As HANDLE, ByRef Overlapped As WSAOVERLAPPED, lpCompletionRoutine As LPWSAOVERLAPPED_COMPLETION_ROUTINE) As Long
2069#endif
2070
2071#ifdef INCL_WINSOCK_API_TYPEDEFS
2072TypeDef LPFN_WSAPROVIDERCONFIGCHANGE = *Function(ByRef NotificationHandle As HANDLE, ByRef Overlapped As WSAOVERLAPPED, lpCompletionRoutine As LPWSAOVERLAPPED_COMPLETION_ROUTINE) As Long
2073#endif
2074
2075' Microsoft Windows Extended data types
2076TypeDef SOCKADDR_IN = sockaddr_in
2077TypeDef PSOCKADDR_IN = *sockaddr_in
2078TypeDef LPSOCKADDR_IN = *sockaddr_in
2079
2080TypeDef LINGER = linger
2081TypeDef PLINGER = *linger
2082TypeDef LPLINGER = *linger
2083
2084TypeDef IN_ADDR = in_addr
2085TypeDef PIN_ADDR = *in_addr
2086TypeDef LPIN_ADDR = *in_addr
2087
2088TypeDef FD_SET = fd_set
2089TypeDef PFD_SET = *fd_set
2090TypeDef LPFD_SET = *fd_set
2091
2092TypeDef HOSTENT = hostent
2093TypeDef PHOSTENT = *hostent
2094TypeDef LPHOSTENT = *hostent
2095
2096TypeDef SERVENT = servent
2097TypeDef PSERVENT = *servent
2098TypeDef LPSERVENT = *servent
2099
2100TypeDef PROTOENT = protoent
2101TypeDef PPROTOENT = *protoent
2102TypeDef LPPROTOENT = *protoent
2103
2104TypeDef TIMEVAL = timeval
2105TypeDef PTIMEVAL = *timeval
2106TypeDef LPTIMEVAL = *timeval
2107
2108' Windows message parameter composition and decomposition macros.
2109Const WSAMAKEASYNCREPLY(buflen, error) = MAKELONG(buflen, error)
2110Const WSAMAKESELECTREPLY(event, error) = MAKELONG(event, error)
2111Const WSAGETASYNCBUFLEN(lParam) = LOWORD(lParam)
2112Const WSAGETASYNCERROR(lParam) = HIWORD(lParam)
2113Const WSAGETSELECTEVENT(lParam) = LOWORD(lParam)
2114Const WSAGETSELECTERROR(lParam) = HIWORD(lParam)
2115
2116'#ifdef IPV6STRICT
2117'#require <wsipv6ok.ab>
2118'#endif
2119
2120#endif
Note: See TracBrowser for help on using the repository browser.