1
{ Winsock2.h -- definitions to be used with the WinSock 2 DLL and WinSock 2 applications.
2
This header file corresponds to version 2.2.x of the WinSock API specification.
3
This file includes parts which are Copyright (c) 1982-1986 Regents
4
of the University of California. All rights reserved.
5
The Berkeley Software License Agreement specifies the terms and
6
conditions for redistribution. }
8
// converted by Alex Konshin, mailto:alexk@msmt.spb.su
9
// added FreePascal stuff: AlexS@freepage.de
10
// updated for wince : orinaudo@gmail.com
11
// based on svn3257 rtl/win/winsock2.pas
15
{$ifndef NO_SMART_LINK}
18
{ convention is cdecl for WinCE API}
25
{ Define the current Winsock version. To build an earlier Winsock version
26
application redefine this value prior to including Winsock2.h. }
28
WINSOCK_VERSION = $0202;
30
WINSOCK2_DLL = 'ws2_32.dll';
32
WINSOCK2_DLL = 'ws2.dll';
45
TSocket = u_int; { The new type to be used in all instances which refer to sockets. }
48
PWSAEVENT = ^WSAEVENT;
49
LPWSAEVENT = PWSAEVENT;
63
fd_array: array[0..FD_SETSIZE-1] of TSocket;
77
IOC_INOUT = (IOC_IN or IOC_OUT);
79
FIONREAD = IOC_OUT or { get # bytes to read }
80
((Longint(SizeOf(Longint)) and IOCPARM_MASK) shl 16) or
81
(Longint(Byte('f')) shl 8) or 127;
82
FIONBIO = IOC_IN or { set/clear non-blocking i/o }
83
((Longint(SizeOf(Longint)) and IOCPARM_MASK) shl 16) or
84
(Longint(Byte('f')) shl 8) or 126;
85
FIOASYNC = IOC_IN or { set/clear async i/o }
86
((Longint(SizeOf(Longint)) and IOCPARM_MASK) shl 16) or
87
(Longint(Byte('f')) shl 8) or 125;
97
0: (h_addr_list: ^PChar);
105
n_addrtype: Smallint;
109
PServEnt = ^TServEnt;
117
PProtoEnt = ^TProtoEnt;
127
IPPROTO_IP = 0; { dummy for IP }
128
IPPROTO_ICMP = 1; { control message protocol }
129
IPPROTO_IGMP = 2; { group management protocol }
130
IPPROTO_GGP = 3; { gateway^2 (deprecated) }
131
IPPROTO_TCP = 6; { tcp }
132
IPPROTO_PUP = 12; { pup }
133
IPPROTO_UDP = 17; { user datagram protocol }
134
IPPROTO_IDP = 22; { xns idp }
135
IPPROTO_ND = 77; { UNOFFICIAL net disk proto }
137
IPPROTO_RAW = 255; { raw IP packet }
140
{ Port/socket numbers: network standard functions}
150
IPPORT_TIMESERVER = 37;
151
IPPORT_NAMESERVER = 42;
155
{ Port/socket numbers: host specific functions }
165
IPPORT_EXECSERVER = 512;
166
IPPORT_LOGINSERVER = 513;
167
IPPORT_CMDSERVER = 514;
168
IPPORT_EFSSERVER = 520;
172
IPPORT_BIFFUDP = 512;
173
IPPORT_WHOSERVER = 513;
174
IPPORT_ROUTESERVER = 520;
176
{ Ports < IPPORT_RESERVED are reserved for
177
privileged processes (e.g. root). }
179
IPPORT_RESERVED = 1024;
184
IMPLINK_LOWEXPER = 156;
185
IMPLINK_HIGHEXPER = 158;
188
TF_REUSE_SOCKET = $02;
189
TF_WRITE_BEHIND = $04;
191
{ Options for use with [gs]etsockopt at the IP level. }
194
IP_MULTICAST_IF = 2; { set/get IP multicast interface }
195
IP_MULTICAST_TTL = 3; { set/get IP multicast timetolive }
196
IP_MULTICAST_LOOP = 4; { set/get IP multicast loopback }
197
IP_ADD_MEMBERSHIP = 5; { add an IP group membership }
198
IP_DROP_MEMBERSHIP = 6; { drop an IP group membership }
199
IP_TTL = 7; { set/get IP Time To Live }
200
IP_TOS = 8; { set/get IP Type Of Service }
201
IP_DONTFRAGMENT = 9; { set/get IP Don't Fragment flag }
204
IP_DEFAULT_MULTICAST_TTL = 1; { normally limit m'casts to 1 hop }
205
IP_DEFAULT_MULTICAST_LOOP = 1; { normally hear sends if a member }
206
IP_MAX_MEMBERSHIPS = 20; { per socket; must fit in one mbuf }
208
{ This is used instead of -1, since the
209
TSocket type is unsigned.}
211
INVALID_SOCKET = TSocket(NOT(0));
216
SOCK_STREAM = 1; { stream socket }
217
SOCK_DGRAM = 2; { datagram socket }
218
SOCK_RAW = 3; { raw-protocol interface }
219
SOCK_RDM = 4; { reliably-delivered message }
220
SOCK_SEQPACKET = 5; { sequenced packet stream }
222
{ Option flags per-socket. }
224
SO_DEBUG = $0001; { turn on debugging info recording }
225
SO_ACCEPTCONN = $0002; { socket has had listen() }
226
SO_REUSEADDR = $0004; { allow local address reuse }
227
SO_KEEPALIVE = $0008; { keep connections alive }
228
SO_DONTROUTE = $0010; { just use interface addresses }
229
SO_BROADCAST = $0020; { permit sending of broadcast msgs }
230
SO_USELOOPBACK = $0040; { bypass hardware when possible }
231
SO_LINGER = $0080; { linger on close if data present }
232
SO_OOBINLINE = $0100; { leave received OOB data in line }
234
SO_DONTLINGER = $ff7f;
236
{ Additional options. }
238
SO_SNDBUF = $1001; { send buffer size }
239
SO_RCVBUF = $1002; { receive buffer size }
240
SO_SNDLOWAT = $1003; { send low-water mark }
241
SO_RCVLOWAT = $1004; { receive low-water mark }
242
SO_SNDTIMEO = $1005; { send timeout }
243
SO_RCVTIMEO = $1006; { receive timeout }
244
SO_ERROR = $1007; { get error status and clear }
245
SO_TYPE = $1008; { get socket type }
247
{ Options for connect and disconnect data and options. Used only by
248
non-TCP/IP transports such as DECNet, OSI TP4, etc. }
254
SO_CONNDATALEN = $7004;
255
SO_CONNOPTLEN = $7005;
256
SO_DISCDATALEN = $7006;
257
SO_DISCOPTLEN = $7007;
259
{ Option for opening sockets for synchronous access. }
261
SO_SYNCHRONOUS_ALERT = $10;
262
SO_SYNCHRONOUS_NONALERT = $20;
264
{ Other NT-specific options. }
266
SO_MAXPATHDG = $700A;
267
SO_UPDATE_ACCEPT_CONTEXT = $700B;
268
SO_CONNECT_TIME = $700C;
272
TCP_BSDURGENT = $7000;
274
{ WinSock 2 extension -- new options }
275
SO_GROUP_ID = $2001; // ID of a socket group
276
SO_GROUP_PRIORITY = $2002; // the relative priority within a group
277
SO_MAX_MSG_SIZE = $2003; // maximum message size
278
SO_Protocol_InfoA = $2004; // WSAPROTOCOL_INFOA structure
279
SO_Protocol_InfoW = $2005; // WSAPROTOCOL_INFOW structure
281
SO_Protocol_Info = SO_Protocol_InfoW;
283
SO_Protocol_Info = SO_Protocol_InfoA;
285
PVD_CONFIG = $3001; // configuration info for service provider
287
{ Address families. }
288
AF_UNSPEC = 0; { unspecified }
289
AF_UNIX = 1; { local to host (pipes, portals) }
290
AF_INET = 2; { internetwork: UDP, TCP, etc. }
291
AF_IMPLINK = 3; { arpanet imp addresses }
292
AF_PUP = 4; { pup protocols: e.g. BSP }
293
AF_CHAOS = 5; { mit CHAOS protocols }
294
AF_IPX = 6; { IPX and SPX }
295
AF_NS = 6; { XEROX NS protocols }
296
AF_ISO = 7; { ISO protocols }
297
AF_OSI = AF_ISO; { OSI is ISO }
298
AF_ECMA = 8; { european computer manufacturers }
299
AF_DATAKIT = 9; { datakit protocols }
300
AF_CCITT = 10; { CCITT protocols, X.25 etc }
301
AF_SNA = 11; { IBM SNA }
302
AF_DECnet = 12; { DECnet }
303
AF_DLI = 13; { Direct data link interface }
305
AF_HYLINK = 15; { NSC Hyperchannel }
306
AF_APPLETALK = 16; { AppleTalk }
307
AF_NETBIOS = 17; { NetBios-style addresses }
308
AF_VOICEVIEW = 18; { VoiceView }
309
AF_FIREFOX = 19; { FireFox }
310
AF_UNKNOWN1 = 20; { Somebody is using this! }
311
AF_BAN = 21; { Banyan }
312
AF_ATM = 22; // Native ATM Services
313
AF_INET6 = 23; // Internetwork Version 6
317
{ Socket I/O Controls }
319
SIOCSHIWAT = _IOW('s', 0, u_long); // set high watermark
320
SIOCGHIWAT = _IOR('s', 1, u_long); // get high watermark
321
SIOCSLOWAT = _IOW('s', 2, u_long); // set low watermark
322
SIOCGLOWAT = _IOR('s', 3, u_long); // get low watermark
323
SIOCATMARK = _IOR('s', 7, u_long); // at oob mark? }
325
{ Protocol families, same as address families for now. }
327
PF_UNSPEC = AF_UNSPEC;
330
PF_IMPLINK = AF_IMPLINK;
338
PF_DATAKIT = AF_DATAKIT;
341
PF_DECnet = AF_DECnet;
344
PF_HYLINK = AF_HYLINK;
345
PF_APPLETALK = AF_APPLETALK;
346
PF_VOICEVIEW = AF_VOICEVIEW;
347
PF_FIREFOX = AF_FIREFOX;
348
PF_UNKNOWN1 = AF_UNKNOWN1;
358
s_b1, s_b2, s_b3, s_b4: u_char;
373
PSockAddrIn = ^TSockAddrIn;
376
0: (sin_family: u_short;
379
sin_zero: array[0..7] of Char);
380
1: (sa_family: u_short;
381
sa_data: array[0..13] of Char)
384
{ Structure used by kernel to store most addresses. }
386
PSockAddr = ^TSockAddr;
387
TSockAddr = TSockAddrIn;
389
{ Structure used by kernel to pass protocol information in raw sockets. }
390
PSockProto = ^TSockProto;
393
sp_protocol: u_short;
396
{ Structure used for manipulating linger option. }
404
INADDR_ANY = $00000000;
405
INADDR_LOOPBACK = $7F000001;
406
INADDR_BROADCAST = $FFFFFFFF;
407
INADDR_NONE = $FFFFFFFF;
409
MSG_OOB = $1; {process out-of-band data }
410
MSG_PEEK = $2; {peek at incoming message }
411
MSG_DONTROUTE = $4; {send without using routing tables }
413
{ WinSock 2 extension -- new flags for WSASend(), WSASendTo(), WSARecv() and WSARecvFrom() }
414
MSG_INTERRUPT = $10; {/* send/recv in the interrupt context */}
417
MSG_PARTIAL = $8000; {partial send or recv for message xport }
419
{ Define constant based on rfc883, used by gethostbyxxxx() calls. }
421
MAXGETHOSTSTRUCT = 1024;
423
{ Maximum queue length specifiable by listen. }
424
SOMAXCONN = $7fffffff;
426
{ WinSock 2 extension -- bit values and indices for FD_XXX network events }
428
FD_READ = (1 shl FD_READ_BIT);
430
FD_WRITE = (1 shl FD_WRITE_BIT);
432
FD_OOB = (1 shl FD_OOB_BIT);
434
FD_ACCEPT = (1 shl FD_ACCEPT_BIT);
436
FD_CONNECT = (1 shl FD_CONNECT_BIT);
438
FD_CLOSE = (1 shl FD_CLOSE_BIT);
440
FD_QOS = (1 shl FD_QOS_BIT);
441
FD_GROUP_QOS_BIT = 7;
442
FD_GROUP_QOS = (1 shl FD_GROUP_QOS_BIT);
444
FD_ALL_EVENTS = ((1 shl FD_MAX_EVENTS) - 1);
446
{ All Windows Sockets error constants are biased by WSABASEERR from the "normal" }
450
{ Windows Sockets definitions of regular Microsoft C error constants }
452
WSAEINTR = (WSABASEERR+4);
453
WSAEBADF = (WSABASEERR+9);
454
WSAEACCES = (WSABASEERR+13);
455
WSAEFAULT = (WSABASEERR+14);
456
WSAEINVAL = (WSABASEERR+22);
457
WSAEMFILE = (WSABASEERR+24);
459
{ Windows Sockets definitions of regular Berkeley error constants }
461
WSAEWOULDBLOCK = (WSABASEERR+35);
462
WSAEINPROGRESS = (WSABASEERR+36);
463
WSAEALREADY = (WSABASEERR+37);
464
WSAENOTSOCK = (WSABASEERR+38);
465
WSAEDESTADDRREQ = (WSABASEERR+39);
466
WSAEMSGSIZE = (WSABASEERR+40);
467
WSAEPROTOTYPE = (WSABASEERR+41);
468
WSAENOPROTOOPT = (WSABASEERR+42);
469
WSAEPROTONOSUPPORT = (WSABASEERR+43);
470
WSAESOCKTNOSUPPORT = (WSABASEERR+44);
471
WSAEOPNOTSUPP = (WSABASEERR+45);
472
WSAEPFNOSUPPORT = (WSABASEERR+46);
473
WSAEAFNOSUPPORT = (WSABASEERR+47);
474
WSAEADDRINUSE = (WSABASEERR+48);
475
WSAEADDRNOTAVAIL = (WSABASEERR+49);
476
WSAENETDOWN = (WSABASEERR+50);
477
WSAENETUNREACH = (WSABASEERR+51);
478
WSAENETRESET = (WSABASEERR+52);
479
WSAECONNABORTED = (WSABASEERR+53);
480
WSAECONNRESET = (WSABASEERR+54);
481
WSAENOBUFS = (WSABASEERR+55);
482
WSAEISCONN = (WSABASEERR+56);
483
WSAENOTCONN = (WSABASEERR+57);
484
WSAESHUTDOWN = (WSABASEERR+58);
485
WSAETOOMANYREFS = (WSABASEERR+59);
486
WSAETIMEDOUT = (WSABASEERR+60);
487
WSAECONNREFUSED = (WSABASEERR+61);
488
WSAELOOP = (WSABASEERR+62);
489
WSAENAMETOOLONG = (WSABASEERR+63);
490
WSAEHOSTDOWN = (WSABASEERR+64);
491
WSAEHOSTUNREACH = (WSABASEERR+65);
492
WSAENOTEMPTY = (WSABASEERR+66);
493
WSAEPROCLIM = (WSABASEERR+67);
494
WSAEUSERS = (WSABASEERR+68);
495
WSAEDQUOT = (WSABASEERR+69);
496
WSAESTALE = (WSABASEERR+70);
497
WSAEREMOTE = (WSABASEERR+71);
499
{ Extended Windows Sockets error constant definitions }
501
WSASYSNOTREADY = (WSABASEERR+91);
502
WSAVERNOTSUPPORTED = (WSABASEERR+92);
503
WSANOTINITIALISED = (WSABASEERR+93);
504
WSAEDISCON = (WSABASEERR+101);
505
WSAENOMORE = (WSABASEERR+102);
506
WSAECANCELLED = (WSABASEERR+103);
507
WSAEINVALIDPROCTABLE = (WSABASEERR+104);
508
WSAEINVALIDPROVIDER = (WSABASEERR+105);
509
WSAEPROVIDERFAILEDINIT = (WSABASEERR+106);
510
WSASYSCALLFAILURE = (WSABASEERR+107);
511
WSASERVICE_NOT_FOUND = (WSABASEERR+108);
512
WSATYPE_NOT_FOUND = (WSABASEERR+109);
513
WSA_E_NO_MORE = (WSABASEERR+110);
514
WSA_E_CANCELLED = (WSABASEERR+111);
515
WSAEREFUSED = (WSABASEERR+112);
518
{ Error return codes from gethostbyname() and gethostbyaddr()
519
(when using the resolver). Note that these errors are
520
retrieved via WSAGetLastError() and must therefore follow
521
the rules for avoiding clashes with error numbers from
522
specific implementations or language run-time systems.
523
For this reason the codes are based at WSABASEERR+1001.
524
Note also that [WSA]NO_ADDRESS is defined only for
525
compatibility purposes. }
527
{ Authoritative Answer: Host not found }
528
WSAHOST_NOT_FOUND = (WSABASEERR+1001);
529
HOST_NOT_FOUND = WSAHOST_NOT_FOUND;
531
{ Non-Authoritative: Host not found, or SERVERFAIL }
532
WSATRY_AGAIN = (WSABASEERR+1002);
533
TRY_AGAIN = WSATRY_AGAIN;
535
{ Non recoverable errors, FORMERR, REFUSED, NOTIMP }
536
WSANO_RECOVERY = (WSABASEERR+1003);
537
NO_RECOVERY = WSANO_RECOVERY;
539
{ Valid name, no data record of requested type }
540
WSANO_DATA = (WSABASEERR+1004);
541
NO_DATA = WSANO_DATA;
543
{ no address, look for MX record }
544
WSANO_ADDRESS = WSANO_DATA;
545
NO_ADDRESS = WSANO_ADDRESS;
547
{ WinSock 2 extension -- new error codes and type definition }
548
WSA_IO_PENDING = ERROR_IO_PENDING;
549
WSA_IO_INCOMPLETE = ERROR_IO_INCOMPLETE;
550
WSA_INVALID_HANDLE = ERROR_INVALID_HANDLE;
551
WSA_INVALID_PARAMETER = ERROR_INVALID_PARAMETER;
552
WSA_NOT_ENOUGH_MEMORY = ERROR_NOT_ENOUGH_MEMORY;
553
WSA_OPERATION_ABORTED = ERROR_OPERATION_ABORTED;
555
WSA_INVALID_EVENT = WSAEVENT(nil);
557
WSA_MAXIMUM_WAIT_EVENTS = MAXIMUM_WAIT_OBJECTS;
558
WSA_WAIT_FAILED = $ffffffff;
559
WSA_WAIT_EVENT_0 = WAIT_OBJECT_0;
560
WSA_WAIT_IO_COMPLETION = WAIT_IO_COMPLETION;
561
WSA_WAIT_TIMEOUT = WAIT_TIMEOUT;
562
WSA_INFINITE = INFINITE;
564
{ Windows Sockets errors redefined as regular Berkeley error constants.
565
These are commented out in Windows NT to avoid conflicts with errno.h.
566
Use the WSA constants instead. }
568
EWOULDBLOCK = WSAEWOULDBLOCK;
569
EINPROGRESS = WSAEINPROGRESS;
570
EALREADY = WSAEALREADY;
571
ENOTSOCK = WSAENOTSOCK;
572
EDESTADDRREQ = WSAEDESTADDRREQ;
573
EMSGSIZE = WSAEMSGSIZE;
574
EPROTOTYPE = WSAEPROTOTYPE;
575
ENOPROTOOPT = WSAENOPROTOOPT;
576
EPROTONOSUPPORT = WSAEPROTONOSUPPORT;
577
ESOCKTNOSUPPORT = WSAESOCKTNOSUPPORT;
578
EOPNOTSUPP = WSAEOPNOTSUPP;
579
EPFNOSUPPORT = WSAEPFNOSUPPORT;
580
EAFNOSUPPORT = WSAEAFNOSUPPORT;
581
EADDRINUSE = WSAEADDRINUSE;
582
EADDRNOTAVAIL = WSAEADDRNOTAVAIL;
583
ENETDOWN = WSAENETDOWN;
584
ENETUNREACH = WSAENETUNREACH;
585
ENETRESET = WSAENETRESET;
586
ECONNABORTED = WSAECONNABORTED;
587
ECONNRESET = WSAECONNRESET;
588
ENOBUFS = WSAENOBUFS;
589
EISCONN = WSAEISCONN;
590
ENOTCONN = WSAENOTCONN;
591
ESHUTDOWN = WSAESHUTDOWN;
592
ETOOMANYREFS = WSAETOOMANYREFS;
593
ETIMEDOUT = WSAETIMEDOUT;
594
ECONNREFUSED = WSAECONNREFUSED;
596
ENAMETOOLONG = WSAENAMETOOLONG;
597
EHOSTDOWN = WSAEHOSTDOWN;
598
EHOSTUNREACH = WSAEHOSTUNREACH;
599
ENOTEMPTY = WSAENOTEMPTY;
600
EPROCLIM = WSAEPROCLIM;
604
EREMOTE = WSAEREMOTE;
607
WSADESCRIPTION_LEN = 256;
608
WSASYS_STATUS_LEN = 128;
609
MAX_PROTOCOL_CHAIN = 7;
611
LAYERED_PROTOCOL = 0;
612
WSAPROTOCOL_LEN = 255;
615
PWSAData = ^TWSAData;
619
szDescription: array[0..WSADESCRIPTION_LEN] of Char;
620
szSystemStatus: array[0..WSASYS_STATUS_LEN] of Char;
626
{ WSAOVERLAPPED = Record
628
InternalHigh: LongInt;
633
WSAOVERLAPPED = TOverlapped;
634
TWSAOverlapped = WSAOverlapped;
635
PWSAOverlapped = ^WSAOverlapped;
636
LPWSAOVERLAPPED = PWSAOverlapped;
638
{ WinSock 2 extension -- WSABUF and QOS struct, include qos.h }
639
{ to pull in FLOWSPEC and related definitions }
643
len: U_LONG; { the length of the buffer }
644
buf: PChar; { the pointer to the buffer }
649
TServiceType = LongInt;
652
TokenRate, // In Bytes/sec
653
TokenBucketSize, // In Bytes
654
PeakBandwidth, // In Bytes/sec
655
Latency, // In microseconds
656
DelayVariation : LongInt;// In microseconds
657
ServiceType : TServiceType;
658
MaxSduSize, MinimumPolicedSize : LongInt;// In Bytes
660
PFlowSpec = ^TFLOWSPEC;
662
TQualityOfService = record
663
SendingFlowspec: TFlowSpec; { the flow spec for data sending }
664
ReceivingFlowspec: TFlowSpec; { the flow spec for data receiving }
665
ProviderSpecific: WSABUF; { additional provider specific stuff }
666
end {TQualityOfService};
667
PQOS = ^TQualityOfService;
671
SERVICETYPE_NOTRAFFIC = $00000000; // No data in this direction
672
SERVICETYPE_BESTEFFORT = $00000001; // Best Effort
673
SERVICETYPE_CONTROLLEDLOAD = $00000002; // Controlled Load
674
SERVICETYPE_GUARANTEED = $00000003; // Guaranteed
675
SERVICETYPE_NETWORK_UNAVAILABLE = $00000004; // Used to notify change to user
676
SERVICETYPE_GENERAL_INFORMATION = $00000005; // corresponds to "General Parameters" defined by IntServ
677
SERVICETYPE_NOCHANGE = $00000006; // used to indicate that the flow spec contains no change from any previous one
678
// to turn on immediate traffic control, OR this flag with the ServiceType field in teh FLOWSPEC
679
SERVICE_IMMEDIATE_TRAFFIC_CONTROL = $80000000;
681
{ WinSock 2 extension -- manifest constants for return values of the condition function }
686
{ WinSock 2 extension -- manifest constants for shutdown() }
691
{ WinSock 2 extension -- data type and manifest constants for socket groups }
692
SG_UNCONSTRAINED_GROUP = $01;
693
SG_CONSTRAINED_GROUP = $02;
697
{ WinSock 2 extension -- data type for WSAEnumNetworkEvents() }
698
TWSANetworkEvents = record
699
lNetworkEvents: LongInt;
700
iErrorCode: Array[0..FD_MAX_EVENTS-1] of Longint;
701
end {TWSANetworkEvents};
702
PWSANetworkEvents = ^TWSANetworkEvents;
703
LPWSANetworkEvents = PWSANetworkEvents;
705
TWSAProtocolChain = record
706
ChainLen: Longint; // the length of the chain,
707
// length = 0 means layered protocol,
708
// length = 1 means base protocol,
709
// length > 1 means protocol chain
710
ChainEntries: Array[0..MAX_PROTOCOL_CHAIN-1] of LongInt; { a list of dwCatalogEntryIds }
711
end {TWSAPROTOCOLCHAIN};
714
TWSAProtocol_InfoA = record
715
dwServiceFlags1: LongInt;
716
dwServiceFlags2: LongInt;
717
dwServiceFlags3: LongInt;
718
dwServiceFlags4: LongInt;
719
dwProviderFlags: LongInt;
721
dwCatalogEntryId: LongInt;
722
ProtocolChain: TWSAProtocolChain;
724
iAddressFamily: Longint;
725
iMaxSockAddr: Longint;
726
iMinSockAddr: Longint;
727
iSocketType: Longint;
729
iProtocolMaxOffset: Longint;
730
iNetworkByteOrder: Longint;
731
iSecurityScheme: Longint;
732
dwMessageSize: LongInt;
733
dwProviderReserved: LongInt;
734
szProtocol: Array[0..WSAPROTOCOL_LEN+1-1] of Char;
735
end {TWSAProtocol_InfoA};
736
PWSAProtocol_InfoA = ^TWSAProtocol_InfoA;
737
LPWSAProtocol_InfoA = PWSAProtocol_InfoA;
739
TWSAProtocol_InfoW = record
740
dwServiceFlags1: LongInt;
741
dwServiceFlags2: LongInt;
742
dwServiceFlags3: LongInt;
743
dwServiceFlags4: LongInt;
744
dwProviderFlags: LongInt;
746
dwCatalogEntryId: LongInt;
747
ProtocolChain: TWSAProtocolChain;
749
iAddressFamily: Longint;
750
iMaxSockAddr: Longint;
751
iMinSockAddr: Longint;
752
iSocketType: Longint;
754
iProtocolMaxOffset: Longint;
755
iNetworkByteOrder: Longint;
756
iSecurityScheme: Longint;
757
dwMessageSize: LongInt;
758
dwProviderReserved: LongInt;
759
szProtocol: Array[0..(WSAPROTOCOL_LEN+1-1)] of WideChar;
760
end {TWSAProtocol_InfoW};
761
PWSAProtocol_InfoW = ^TWSAProtocol_InfoW;
762
LPWSAProtocol_InfoW = PWSAProtocol_InfoW;
765
TWSAProtocol_Info = TWSAProtocol_InfoW;
766
LPWSAProtocol_Info = PWSAProtocol_InfoW;
768
TWSAProtocol_Info = TWSAProtocol_InfoA;
769
LPWSAProtocol_Info = PWSAProtocol_InfoA;
772
{ Flag bit definitions for dwProviderFlags */ }
774
PFL_MULTIPLE_PROTO_ENTRIES = $00000001;
775
PFL_RECOMMENDED_PROTO_ENTRY = $00000002;
776
PFL_HIDDEN = $00000004;
777
PFL_MATCHES_PROTOCOL_ZERO = $00000008;
779
{ Flag bit definitions for dwServiceFlags1 */ }
780
XP1_CONNECTIONLESS = $00000001;
781
XP1_GUARANTEED_DELIVERY = $00000002;
782
XP1_GUARANTEED_ORDER = $00000004;
783
XP1_MESSAGE_ORIENTED = $00000008;
784
XP1_PSEUDO_STREAM = $00000010;
785
XP1_GRACEFUL_CLOSE = $00000020;
786
XP1_EXPEDITED_DATA = $00000040;
787
XP1_CONNECT_DATA = $00000080;
788
XP1_DISCONNECT_DATA = $00000100;
789
XP1_SUPPORT_BROADCAST = $00000200;
790
XP1_SUPPORT_MULTIPOINT = $00000400;
791
XP1_MULTIPOINT_CONTROL_PLANE = $00000800;
792
XP1_MULTIPOINT_DATA_PLANE = $00001000;
793
XP1_QOS_SUPPORTED = $00002000;
794
XP1_INTERRUPT = $00004000;
795
XP1_UNI_SEND = $00008000;
796
XP1_UNI_RECV = $00010000;
797
XP1_IFS_HANDLES = $00020000;
798
XP1_PARTIAL_MESSAGE = $00040000;
801
LITTLEENDIAN = $0001;
803
SECURITY_PROTOCOL_NONE = $0000;
805
{ WinSock 2 extension -- manifest constants for WSAJoinLeaf() }
806
JL_SENDER_ONLY = $01;
807
JL_RECEIVER_ONLY = $02;
810
{ WinSock 2 extension -- manifest constants for WSASocket() }
811
WSA_FLAG_OVERLAPPED = $01;
812
WSA_FLAG_MULTIPOINT_C_ROOT = $02;
813
WSA_FLAG_MULTIPOINT_C_LEAF = $04;
814
WSA_FLAG_MULTIPOINT_D_ROOT = $08;
815
WSA_FLAG_MULTIPOINT_D_LEAF = $10;
817
{ WinSock 2 extension -- manifest constants for WSAIoctl() }
818
IOC_UNIX = $00000000;
820
IOC_PROTOCOL = $10000000;
821
IOC_VENDOR = $18000000;
823
SIO_ASSOCIATE_HANDLE = IOC_IN or IOC_WS2 or 1;
824
SIO_ENABLE_CIRCULAR_QUEUEING = IOC_WS2 or 2;
825
SIO_FIND_ROUTE = IOC_OUT or IOC_WS2 or 3;
826
SIO_FLUSH = IOC_WS2 or 4;
827
SIO_GET_BROADCAST_ADDRESS = IOC_OUT or IOC_WS2 or 5;
828
SIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT or IOC_WS2 or 6;
829
SIO_GET_QOS = IOC_INOUT or IOC_WS2 or 7;
830
SIO_GET_GROUP_QOS = IOC_INOUT or IOC_WS2 or 8;
831
SIO_MULTIPOINT_LOOPBACK = IOC_IN or IOC_WS2 or 9;
832
SIO_MULTICAST_SCOPE = IOC_IN or IOC_WS2 or 10;
833
SIO_SET_QOS = IOC_IN or IOC_WS2 or 11;
834
SIO_SET_GROUP_QOS = IOC_IN or IOC_WS2 or 12;
835
SIO_TRANSLATE_HANDLE = IOC_INOUT or IOC_WS2 or 13;
837
{WinSock 2 extension -- manifest constants for SIO_TRANSLATE_HANDLE ioctl }
838
TH_NETDEV = $00000001;
842
SERVICE_MULTIPLE = $00000001;
849
NS_PEER_BROWSE = (3);
851
NS_TCPIP_LOCAL = (10);
852
NS_TCPIP_HOSTS = (11);
869
{ Resolution flags for WSAGetAddressByName().
870
Note these are also used by the 1.1 API GetAddressByName, so leave them around. }
871
RES_UNUSED_1 = $00000001;
872
RES_FLUSH_CACHE = $00000002;
873
RES_SERVICE = $00000004;
875
{ Well known value names for Service Types }
876
SERVICE_TYPE_VALUE_IPXPORTA = 'IpxSocket';
878
SERVICE_TYPE_VALUE_IPXPORTW : PWideChar = 'IpxSocket';
879
SERVICE_TYPE_VALUE_SAPIDA = 'SapId';
880
SERVICE_TYPE_VALUE_SAPIDW : PWideChar = 'SapId';
882
SERVICE_TYPE_VALUE_TCPPORTA = 'TcpPort';
883
SERVICE_TYPE_VALUE_TCPPORTW : PWideChar = 'TcpPort';
885
SERVICE_TYPE_VALUE_UDPPORTA = 'UdpPort';
886
SERVICE_TYPE_VALUE_UDPPORTW : PWideChar = 'UdpPort';
888
SERVICE_TYPE_VALUE_OBJECTIDA = 'ObjectId';
889
SERVICE_TYPE_VALUE_OBJECTIDW : PWideChar = 'ObjectId';
892
SERVICE_TYPE_VALUE_SAPID = SERVICE_TYPE_VALUE_SAPIDW;
893
SERVICE_TYPE_VALUE_TCPPORT = SERVICE_TYPE_VALUE_TCPPORTW;
894
SERVICE_TYPE_VALUE_UDPPORT = SERVICE_TYPE_VALUE_UDPPORTW;
895
SERVICE_TYPE_VALUE_OBJECTID = SERVICE_TYPE_VALUE_OBJECTIDW;
897
SERVICE_TYPE_VALUE_SAPID = SERVICE_TYPE_VALUE_SAPIDA;
898
SERVICE_TYPE_VALUE_TCPPORT = SERVICE_TYPE_VALUE_TCPPORTA;
899
SERVICE_TYPE_VALUE_UDPPORT = SERVICE_TYPE_VALUE_UDPPORTA;
900
SERVICE_TYPE_VALUE_OBJECTID = SERVICE_TYPE_VALUE_OBJECTIDA;
905
{ SockAddr Information }
909
SOCKET_ADDRESS = record
910
lpSockaddr : PSockAddr;
911
iSockaddrLength : Longint;
912
end {SOCKET_ADDRESS};
913
PSOCKET_ADDRESS = ^SOCKET_ADDRESS;
915
{ CSAddr Information }
917
LocalAddr, RemoteAddr: SOCKET_ADDRESS;
918
iSocketType, iProtocol : LongInt;
920
PCSADDR_INFO = ^CSADDR_INFO;
922
{ Address Family/Protocol Tuples }
923
TAFProtocols = record
924
iAddressFamily: Longint;
927
PAFProtocols = TAFProtocols;
929
{ Client Query API Typedefs }
932
TWSAEComparator = (COMP_EQUAL {= 0}, COMP_NOTLESS );
936
ecHow: TWSAEComparator;
938
PWSAVersion = ^TWSAVersion;
940
TWSAQuerySetA = record
942
lpszServiceInstanceName: PChar;
943
lpServiceClassId: PGUID;
944
lpVersion: PWSAVERSION;
946
dwNameSpace: LongInt;
947
lpNSProviderId: PGUID;
949
dwNumberOfProtocols: LongInt;
950
lpafpProtocols: PAFProtocols;
951
lpszQueryString: PChar;
952
dwNumberOfCsAddrs: LongInt;
953
lpcsaBuffer: PCSADDR_INFO;
954
dwOutputFlags: LongInt;
957
PWSAQuerySetA = ^TWSAQuerySetA;
958
LPWSAQuerySetA = PWSAQuerySetA;
959
TWSAQuerySetW = record
961
lpszServiceInstanceName: PWideChar;
962
lpServiceClassId: PGUID;
963
lpVersion: PWSAVERSION;
964
lpszComment: PWideChar;
965
dwNameSpace: LongInt;
966
lpNSProviderId: PGUID;
967
lpszContext: PWideChar;
968
dwNumberOfProtocols: LongInt;
969
lpafpProtocols: PAFProtocols;
970
lpszQueryString: PWideChar;
971
dwNumberOfCsAddrs: LongInt;
972
lpcsaBuffer: PCSADDR_INFO;
973
dwOutputFlags: LongInt;
976
PWSAQuerySetW = ^TWSAQuerySetW;
977
LPWSAQuerySetW = PWSAQuerySetW;
979
PWSAQuerySet = PWSAQuerySetW;
980
LPWSAQuerySet = PWSAQuerySetW;
982
PWSAQuerySet = PWSAQuerySetA;
983
LPWSAQuerySet = PWSAQuerySetA;
988
LUP_CONTAINERS = $0002;
989
LUP_NOCONTAINERS = $0004;
991
LUP_RETURN_NAME = $0010;
992
LUP_RETURN_TYPE = $0020;
993
LUP_RETURN_VERSION = $0040;
994
LUP_RETURN_COMMENT = $0080;
995
LUP_RETURN_ADDR = $0100;
996
LUP_RETURN_BLOB = $0200;
997
LUP_RETURN_ALIASES = $0400;
998
LUP_RETURN_QUERY_STRING = $0800;
999
LUP_RETURN_ALL = $0FF0;
1000
LUP_RES_SERVICE = $8000;
1002
LUP_FLUSHCACHE = $1000;
1003
LUP_FLUSHPREVIOUS = $2000;
1007
RESULT_IS_ALIAS = $0001;
1010
{ Service Address Registration and Deregistration Data Types. }
1011
TWSAeSetServiceOp = (RNRSERVICE_REGISTER{=0},RNRSERVICE_DEREGISTER,RNRSERVICE_DELETE);
1013
{ Service Installation/Removal Data Types. }
1014
TWSANSClassInfoA = record
1016
dwNameSpace: LongInt;
1017
dwValueType: LongInt;
1018
dwValueSize: LongInt;
1020
end {_WSANSClassInfoA};
1021
PWSANSClassInfoA = ^TWSANSClassInfoA;
1022
TWSANSClassInfoW = record
1023
lpszName: PWideChar;
1024
dwNameSpace: LongInt;
1025
dwValueType: LongInt;
1026
dwValueSize: LongInt;
1028
end {TWSANSClassInfoW};
1029
PWSANSClassInfoW = ^TWSANSClassInfoW;
1031
TWSANSClassInfo = TWSANSClassInfoW;
1032
PWSANSClassInfo = PWSANSClassInfoW;
1033
LPWSANSClassInfo = PWSANSClassInfoW;
1035
TWSANSClassInfo = TWSANSClassInfoA;
1036
PWSANSClassInfo = PWSANSClassInfoA;
1037
LPWSANSClassInfo = PWSANSClassInfoA;
1040
TWSAServiceClassInfoA = record
1041
lpServiceClassId: PGUID;
1042
lpszServiceClassName: PChar;
1044
lpClassInfos: PWSANSClassInfoA;
1045
end {TWSAServiceClassInfoA};
1046
PWSAServiceClassInfoA = ^TWSAServiceClassInfoA;
1047
LPWSAServiceClassInfoA = PWSAServiceClassInfoA;
1048
TWSAServiceClassInfoW = record
1049
lpServiceClassId: PGUID;
1050
lpszServiceClassName: PWideChar;
1052
lpClassInfos: PWSANSClassInfoW;
1053
end {TWSAServiceClassInfoW};
1054
PWSAServiceClassInfoW = ^TWSAServiceClassInfoW;
1055
LPWSAServiceClassInfoW = PWSAServiceClassInfoW;
1057
TWSAServiceClassInfo = TWSAServiceClassInfoW;
1058
PWSAServiceClassInfo = PWSAServiceClassInfoW;
1059
LPWSAServiceClassInfo = PWSAServiceClassInfoW;
1061
TWSAServiceClassInfo = TWSAServiceClassInfoA;
1062
PWSAServiceClassInfo = PWSAServiceClassInfoA;
1063
LPWSAServiceClassInfo = PWSAServiceClassInfoA;
1066
TWSANameSpace_InfoA = record
1067
NSProviderId: TGUID;
1068
dwNameSpace: LongInt;
1069
fActive: LongInt{Bool};
1071
lpszIdentifier: PChar;
1072
end {TWSANameSpace_InfoA};
1073
PWSANameSpace_InfoA = ^TWSANameSpace_InfoA;
1074
LPWSANameSpace_InfoA = PWSANameSpace_InfoA;
1075
TWSANameSpace_InfoW = record
1076
NSProviderId: TGUID;
1077
dwNameSpace: LongInt;
1078
fActive: LongInt{Bool};
1080
lpszIdentifier: PWideChar;
1081
end {TWSANameSpace_InfoW};
1082
PWSANameSpace_InfoW = ^TWSANameSpace_InfoW;
1083
LPWSANameSpace_InfoW = PWSANameSpace_InfoW;
1085
TWSANameSpace_Info = TWSANameSpace_InfoW;
1086
PWSANameSpace_Info = PWSANameSpace_InfoW;
1087
LPWSANameSpace_Info = PWSANameSpace_InfoW;
1089
TWSANameSpace_Info = TWSANameSpace_InfoA;
1090
PWSANameSpace_Info = PWSANameSpace_InfoA;
1091
LPWSANameSpace_Info = PWSANameSpace_InfoA;
1094
{ WinSock 2 extensions -- data types for the condition function in }
1095
{ WSAAccept() and overlapped I/O completion routine. }
1097
LPCONDITIONPROC = function (lpCallerId: LPWSABUF; lpCallerData : LPWSABUF; lpSQOS,lpGQOS : LPQOS; lpCalleeId,lpCalleeData : LPWSABUF;
1098
g : GROUP; dwCallbackData : DWORD ) : Longint;
1099
LPWSAOVERLAPPED_COMPLETION_ROUTINE = procedure ( const dwError, cbTransferred : DWORD; const lpOverlapped : LPWSAOVERLAPPED; const dwFlags : DWORD );
1102
//begin common win & wince
1103
function accept( const s: TSocket; addr: PSockAddr; addrlen: PLongint ): TSocket; external WINSOCK2_DLL name 'accept';
1104
function accept( const s: TSocket; addr: PSockAddr; var addrlen: Longint ): TSocket; external WINSOCK2_DLL name 'accept';
1105
function bind( const s: TSocket; addr: PSockAddr; const namelen: Longint ): Longint; external WINSOCK2_DLL name 'bind';
1106
function bind( const s: TSocket; const addr: TSockAddr; namelen: Longint ): Longint; external WINSOCK2_DLL name 'bind';
1107
function closesocket( const s: TSocket ): Longint; external WINSOCK2_DLL name 'closesocket';
1108
function connect( const s: TSocket; name: PSockAddr; namelen: Longint): Longint; external WINSOCK2_DLL name 'connect';
1109
function connect( const s: TSocket; const name: TSockAddr; namelen: Longint): Longint; external WINSOCK2_DLL name 'connect';
1111
function gethostbyaddr(addr: Pointer; len, struct: Longint): PHostEnt; external WINSOCK2_DLL name 'gethostbyaddr';
1112
function gethostbyname(name: PChar): PHostEnt; external WINSOCK2_DLL name 'gethostbyname';
1113
function gethostname(name: PChar; len: Longint): Longint; external WINSOCK2_DLL name 'gethostname';
1114
function getpeername( const s: TSocket; var name: TSockAddr; var namelen: Longint ): Longint; external WINSOCK2_DLL name 'getpeername';
1115
function getprotobyname(name: PChar): PProtoEnt; external WINSOCK2_DLL name 'getprotobyname';
1116
function getprotobynumber(proto: Longint): PProtoEnt; external WINSOCK2_DLL name 'getprotobynumber';
1117
function getservbyport(port: Longint; proto: PChar): PServEnt; external WINSOCK2_DLL name 'getservbyport';
1118
function getservbyname(name, proto: PChar): PServEnt; external WINSOCK2_DLL name 'getservbyname';
1119
function getsockname( const s: TSocket; var name: TSockAddr; var namelen: Longint ): Longint; external WINSOCK2_DLL name 'getsockname';
1120
function getsockopt( const s: TSocket; const level, optname: Longint; optval: PChar; var optlen: Longint ): Longint; external WINSOCK2_DLL name 'getsockopt';
1121
function getsockopt( const s: TSocket; const level, optname: Longint; optval: Pointer; var optlen: Longint ): Longint; external WINSOCK2_DLL name 'getsockopt';
1122
function getsockopt( const s: TSocket; const level, optname: Longint; var optval; var optlen: Longint ): Longint; external WINSOCK2_DLL name 'getsockopt';
1123
function htonl(hostlong: u_long): u_long; external WINSOCK2_DLL name 'htonl';
1124
function htons(hostshort: u_short): u_short; external WINSOCK2_DLL name 'htons';
1125
function inet_addr(cp: PChar): u_long; external WINSOCK2_DLL name 'inet_addr';
1126
function inet_ntoa(inaddr: TInAddr): PChar; external WINSOCK2_DLL name 'inet_ntoa';
1127
function ioctlsocket( const s: TSocket; cmd: Longint; var arg: u_long ): Longint; external WINSOCK2_DLL name 'ioctlsocket';
1128
function ioctlsocket( const s: TSocket; cmd: Longint; argp: pu_long ): Longint; external WINSOCK2_DLL name 'ioctlsocket';
1129
function listen(s: TSocket; backlog: Longint): Longint; external WINSOCK2_DLL name 'listen';
1130
function ntohl(netlong: u_long): u_long; external WINSOCK2_DLL name 'ntohl';
1131
function ntohs(netshort: u_short): u_short; external WINSOCK2_DLL name 'ntohs';
1132
function recv(s: TSocket; var Buf; len, flags: Longint): Longint; external WINSOCK2_DLL name 'recv';
1133
function recv(s: TSocket; Buf: PChar; len, flags: Longint): Longint; external WINSOCK2_DLL name 'recv';
1134
function recv(s: TSocket; Buf: Pointer; len, flags: Longint): Longint; external WINSOCK2_DLL name 'recv';
1135
function recvfrom(s: TSocket; Buf: PChar; len, flags: Longint; from: PSockAddr; fromlen: PLongint): Longint; external WINSOCK2_DLL name 'recvfrom';
1136
function recvfrom(s: TSocket; Buf: Pointer; len, flags: Longint; from: PSockAddr; fromlen: PLongint): Longint; external WINSOCK2_DLL name 'recvfrom';
1137
function recvfrom(s: TSocket; var Buf; len, flags: Longint; const from: TSockAddr; var fromlen: Longint): Longint; external WINSOCK2_DLL name 'recvfrom';
1138
function select(nfds: Longint; readfds, writefds, exceptfds: PFDSet; timeout: PTimeVal): Longint; external WINSOCK2_DLL name 'select';
1139
function send(s: TSocket; const Buf; len, flags: Longint): Longint; external WINSOCK2_DLL name 'send';
1140
function send(s: TSocket; Buf: PChar; len, flags: Longint): Longint; external WINSOCK2_DLL name 'send';
1141
function send(s: TSocket; Buf: Pointer; len, flags: Longint): Longint; external WINSOCK2_DLL name 'send';
1142
function sendto(s: TSocket; const Buf; len, flags: Longint; const addrto: TSockAddr; tolen: Longint): Longint; external WINSOCK2_DLL name 'sendto';
1143
function sendto(s: TSocket; Buf: PChar; len, flags: Longint; addrto: PSockAddr; tolen: Longint): Longint; external WINSOCK2_DLL name 'sendto';
1144
function sendto(s: TSocket; Buf: Pointer; len, flags: Longint; addrto: PSockAddr; tolen: Longint): Longint; external WINSOCK2_DLL name 'sendto';
1145
function setsockopt(s: TSocket; level, optname: Longint; const optval; optlen: Longint): Longint; external WINSOCK2_DLL name 'setsockopt';
1146
function setsockopt(s: TSocket; level, optname: Longint; optval: PChar; optlen: Longint): Longint; external WINSOCK2_DLL name 'setsockopt';
1147
function setsockopt(s: TSocket; level, optname: Longint; optval: Pointer; optlen: Longint): Longint; external WINSOCK2_DLL name 'setsockopt';
1148
function shutdown(s: TSocket; how: Longint): Longint; external WINSOCK2_DLL name 'shutdown';
1149
function socket(af, struct, protocol: Longint): TSocket; external WINSOCK2_DLL name 'socket';
1151
{ WinSock 2 API new function prototypes }
1152
function WSAAccept( s : TSocket; addr : TSockAddr; addrlen : PLongint; lpfnCondition : LPCONDITIONPROC; dwCallbackData : DWORD ): TSocket; external WINSOCK2_DLL name 'WSAAccept';
1153
function WSAAddressToStringW( var lpsaAddress : TSockAddr; const dwAddressLength : DWORD; const lpProtocolInfo : LPWSAProtocol_InfoW;
1154
const lpszAddressString : PWideChar; var lpdwAddressStringLength : DWORD ): Longint; external WINSOCK2_DLL name 'WSAAddressToStringW';
1155
function WSAAsyncGetHostByName(HWindow: HWND; wMsg: u_int; name, buf: PChar; buflen: Longint): THandle; external WINSOCK2_DLL name 'WSAAsyncGetHostByName';
1156
function WSAAsyncSelect(s: TSocket; HWindow: HWND; wMsg: u_int; lEvent: Longint): Longint; external WINSOCK2_DLL name 'WSAAsyncSelect';
1157
function WSACancelAsyncRequest(hAsyncTaskHandle: THandle): Longint; external WINSOCK2_DLL name 'WSACancelAsyncRequest';
1158
function WSACleanup: Longint; external WINSOCK2_DLL name 'WSACleanup';
1159
function WSACloseEvent( hEvent : WSAEVENT) : WordBool; external WINSOCK2_DLL name 'WSACloseEvent';
1160
function WSAConnect( s : TSocket; const name : PSockAddr; namelen : Longint; lpCallerData,lpCalleeData : LPWSABUF; lpSQOS,lpGQOS : LPQOS ) : Longint; external WINSOCK2_DLL name 'WSAConnect';
1161
function WSACreateEvent : WSAEVENT; external WINSOCK2_DLL name 'WSACreateEvent';
1162
function WSAEnumNameSpaceProvidersW( var lpdwBufferLength: DWORD; const lpnspBuffer: LPWSANameSpace_InfoW ): Longint; external WINSOCK2_DLL name 'WSAEnumNameSpaceProvidersW';
1163
function WSAEnumNetworkEvents( const s : TSocket; const hEventObject : WSAEVENT; lpNetworkEvents : LPWSANETWORKEVENTS ) :Longint; external WINSOCK2_DLL name 'WSAEnumNetworkEvents';
1164
function WSAEnumProtocolsW( lpiProtocols : PLongint; lpProtocolBuffer : LPWSAProtocol_InfoW; var lpdwBufferLength : DWORD ) : Longint; external WINSOCK2_DLL name 'WSAEnumProtocolsW';
1165
function WSAEventSelect( s : TSocket; hEventObject : WSAEVENT; lNetworkEvents : LongInt ): Longint; external WINSOCK2_DLL name 'WSAEventSelect';
1166
function WSAGetLastError: Longint; external WINSOCK2_DLL name 'WSAGetLastError';
1167
function WSAGetOverlappedResult( s : TSocket; lpOverlapped : LPWSAOVERLAPPED; lpcbTransfer : LPDWORD; fWait : BOOL; var lpdwFlags : DWORD ) : WordBool; external WINSOCK2_DLL name 'WSAGetOverlappedResult';
1168
function WSAhtonl( s : TSocket; hostlong : u_long; var lpnetlong : DWORD ): Longint; external WINSOCK2_DLL name 'WSAhtonl';
1169
function WSAhtons( s : TSocket; hostshort : u_short; var lpnetshort : WORD ): Longint; external WINSOCK2_DLL name 'WSAhtons';
1170
function WSAIoctl( s : TSocket; dwIoControlCode : DWORD; lpvInBuffer : Pointer; cbInBuffer : DWORD; lpvOutBuffer : Pointer; cbOutBuffer : DWORD;
1171
lpcbBytesReturned : LPDWORD; lpOverlapped : LPWSAOVERLAPPED; lpCompletionRoutine : LPWSAOVERLAPPED_COMPLETION_ROUTINE ) : Longint; external WINSOCK2_DLL name 'WSAIoctl';
1172
function WSAJoinLeaf( s : TSocket; name : PSockAddr; namelen : Longint; lpCallerData,lpCalleeData : LPWSABUF;
1173
lpSQOS,lpGQOS : LPQOS; dwFlags : DWORD ) : TSocket; external WINSOCK2_DLL name 'WSAJoinLeaf';
1174
function WSALookupServiceBeginW( const lpqsRestrictions : LPWSAQuerySetW; const dwControlFlags : DWORD; lphLookup : PHANDLE ): Longint; external WINSOCK2_DLL name 'WSALookupServiceBeginW';
1175
function WSALookupServiceEnd( const hLookup : THandle ): Longint; external WINSOCK2_DLL name 'WSALookupServiceEnd';
1176
function WSALookupServiceNextW( const hLookup : THandle; const dwControlFlags : DWORD; var lpdwBufferLength : DWORD; lpqsResults : LPWSAQuerySetW ): Longint; external WINSOCK2_DLL name 'WSALookupServiceNextW';
1177
function WSANtohl( s : TSocket; netlong : u_long; var lphostlong : DWORD ): Longint; external WINSOCK2_DLL name 'WSANtohl';
1178
function WSANtohs( s : TSocket; netshort : u_short; var lphostshort : WORD ): Longint; external WINSOCK2_DLL name 'WSANtohs';
1179
function WSARecv( s : TSocket; lpBuffers : LPWSABUF; dwBufferCount : DWORD; var lpNumberOfBytesRecvd : DWORD; var lpFlags : DWORD;
1180
lpOverlapped : LPWSAOVERLAPPED; lpCompletionRoutine : LPWSAOVERLAPPED_COMPLETION_ROUTINE ): Longint; external WINSOCK2_DLL name 'WSARecv';
1181
function WSARecvFrom( s : TSocket; lpBuffers : LPWSABUF; dwBufferCount : DWORD; var lpNumberOfBytesRecvd : DWORD; var lpFlags : DWORD;
1182
lpFrom : PSockAddr; lpFromlen : PLongint; lpOverlapped : LPWSAOVERLAPPED; lpCompletionRoutine : LPWSAOVERLAPPED_COMPLETION_ROUTINE ): Longint; external WINSOCK2_DLL name 'WSARecvFrom';
1183
function WSAResetEvent( hEvent : WSAEVENT ): WordBool; external WINSOCK2_DLL name 'WSAResetEvent';
1184
function WSASend( s : TSocket; lpBuffers : LPWSABUF; dwBufferCount : DWORD; var lpNumberOfBytesSent : DWORD; dwFlags : DWORD;
1185
lpOverlapped : LPWSAOVERLAPPED; lpCompletionRoutine : LPWSAOVERLAPPED_COMPLETION_ROUTINE ): Longint; external WINSOCK2_DLL name 'WSASend';
1186
function WSASendTo( s : TSocket; lpBuffers : LPWSABUF; dwBufferCount : DWORD; var lpNumberOfBytesSent : DWORD; dwFlags : DWORD;
1187
lpTo : PSockAddr; iTolen : Longint; lpOverlapped : LPWSAOVERLAPPED; lpCompletionRoutine : LPWSAOVERLAPPED_COMPLETION_ROUTINE ): Longint; external WINSOCK2_DLL name 'WSASendTo';
1188
function WSASetEvent( hEvent : WSAEVENT ): WordBool; external WINSOCK2_DLL name 'WSASetEvent';
1189
procedure WSASetLastError(iError: Longint); external WINSOCK2_DLL name 'WSASetLastError';
1190
function WSASetServiceW( const lpqsRegInfo: LPWSAQuerySetW; const essoperation: TWSAeSetServiceOp;
1191
const dwControlFlags: DWORD ): Longint; external WINSOCK2_DLL name 'WSASetServiceW';
1192
function WSASocketW( af, iType, protocol : Longint; lpProtocolInfo : LPWSAProtocol_InfoW; g : GROUP; dwFlags : DWORD ): TSocket; external WINSOCK2_DLL name 'WSASocketW';
1193
function WSAStartup(wVersionRequired: word; var WSData: TWSAData): Longint; external WINSOCK2_DLL name 'WSAStartup';
1194
function WSAStringToAddressW( const AddressString : PWideChar; const AddressFamily: Longint; const lpProtocolInfo : LPWSAProtocol_InfoA;
1195
var lpAddress : TSockAddr; var lpAddressLength : Longint ): Longint; external WINSOCK2_DLL name 'WSAStringToAddressW';
1196
function WSAWaitForMultipleEvents( cEvents : DWORD; lphEvents : PWSAEVENT; fWaitAll : LongBool;
1197
dwTimeout : DWORD; fAlertable : LongBool ): DWORD; external WINSOCK2_DLL name 'WSAWaitForMultipleEvents';
1198
function __WSAFDIsSet(s: TSOcket; var FDSet: TFDSet): Bool; external WINSOCK2_DLL name '__WSAFDIsSet';
1202
function WSAMakeSyncReply(Buflen, Error: Word): Longint;
1203
function WSAMakeSelectReply(Event, Error: Word): Longint;
1204
function WSAGetAsyncBuflen(Param: Longint): Word;
1205
function WSAGetAsyncError(Param: Longint): Word;
1206
function WSAGetSelectEvent(Param: Longint): Word;
1207
function WSAGetSelectError(Param: Longint): Word;
1209
procedure FD_CLR(Socket: TSocket; var FDSet: TFDSet);
1210
function FD_ISSET(Socket: TSocket; var FDSet: TFDSet): Boolean;
1211
procedure FD_SET(Socket: TSocket; var FDSet: TFDSet);
1212
procedure FD_ZERO(var FDSet: TFDSet);
1213
//end common win & wince
1217
function WSAIsBlocking: BOOL; external WINSOCK2_DLL name 'WSAIsBlocking';
1218
function WSAUnhookBlockingHook: Longint; external WINSOCK2_DLL name 'WSAUnhookBlockingHook';
1219
function WSASetBlockingHook(lpBlockFunc: TFarProc): TFarProc; external WINSOCK2_DLL name 'WSASetBlockingHook';
1220
function WSACancelBlockingCall: Longint; external WINSOCK2_DLL name 'WSACancelBlockingCall';
1221
function WSAAsyncGetServByName(HWindow: HWND; wMsg: u_int; name, proto, buf: PChar; buflen: Longint): THandle; external WINSOCK2_DLL name 'WSAAsyncGetServByName';
1222
function WSAAsyncGetServByPort( HWindow: HWND; wMsg, port: u_int; proto, buf: PChar; buflen: Longint): THandle; external WINSOCK2_DLL name 'WSAAsyncGetServByPort';
1223
function WSAAsyncGetProtoByName(HWindow: HWND; wMsg: u_int; name, buf: PChar; buflen: Longint): THandle; external WINSOCK2_DLL name 'WSAAsyncGetProtoByName';
1224
function WSAAsyncGetProtoByNumber(HWindow: HWND; wMsg: u_int; number: Longint; buf: PChar; buflen: Longint): THandle; external WINSOCK2_DLL name 'WSAAsyncGetProtoByNumber';
1225
function WSAAsyncGetHostByAddr(HWindow: HWND; wMsg: u_int; addr: PChar; len, struct: Longint; buf: PChar; buflen: Longint): THandle; external WINSOCK2_DLL name 'WSAAsyncGetHostByAddr';
1227
function WSADuplicateSocketA( s : TSocket; dwProcessId : DWORD; lpProtocolInfo : LPWSAProtocol_InfoA ) : Longint; external WINSOCK2_DLL name 'WSADuplicateSocketA';
1228
function WSADuplicateSocketW( s : TSocket; dwProcessId : DWORD; lpProtocolInfo : LPWSAProtocol_InfoW ) : Longint; external WINSOCK2_DLL name 'WSADuplicateSocketW';
1229
function WSADuplicateSocket( s : TSocket; dwProcessId : DWORD; lpProtocolInfo : LPWSAProtocol_Info ) : Longint; external WINSOCK2_DLL name 'WSADuplicateSocket';
1230
function WSAEnumProtocolsA( lpiProtocols : PLongint; lpProtocolBuffer : LPWSAProtocol_InfoA; var lpdwBufferLength : DWORD ) : Longint; external WINSOCK2_DLL name 'WSAEnumProtocolsA';
1231
function WSAEnumProtocols( lpiProtocols : PLongint; lpProtocolBuffer : LPWSAProtocol_Info; var lpdwBufferLength : DWORD ) : Longint; external WINSOCK2_DLL name 'WSAEnumProtocols';
1232
function WSAGetQosByName( s : TSocket; lpQOSName : LPWSABUF; lpQOS : LPQOS ): WordBool; external WINSOCK2_DLL name 'WSAGetQosByName';
1233
function WSARecvDisconnect( s : TSocket; lpInboundDisconnectData : LPWSABUF ): Longint; external WINSOCK2_DLL name 'WSARecvDisconnect';
1234
function WSASendDisconnect( s : TSocket; lpOutboundDisconnectData : LPWSABUF ): Longint; external WINSOCK2_DLL name 'WSASendDisconnect';
1235
function WSASocketA( af, iType, protocol : Longint; lpProtocolInfo : LPWSAProtocol_InfoA; g : GROUP; dwFlags : DWORD ): TSocket; external WINSOCK2_DLL name 'WSASocketA';
1236
function WSASocket( af, iType, protocol : Longint; lpProtocolInfo : LPWSAProtocol_Info; g : GROUP; dwFlags : DWORD ): TSocket; external WINSOCK2_DLL name 'WSASocket';
1237
function WSAAddressToStringA( var lpsaAddress : TSockAddr; const dwAddressLength : DWORD; const lpProtocolInfo : LPWSAProtocol_InfoA;
1238
const lpszAddressString : PChar; var lpdwAddressStringLength : DWORD ): Longint; external WINSOCK2_DLL name 'WSAAddressToStringA';
1239
function WSAAddressToString( var lpsaAddress : TSockAddr; const dwAddressLength : DWORD; const lpProtocolInfo : LPWSAProtocol_Info;
1240
const lpszAddressString : PMBChar; var lpdwAddressStringLength : DWORD ): Longint; external WINSOCK2_DLL name 'WSAAddressToString';
1241
function WSAStringToAddressA( const AddressString : PChar; const AddressFamily: Longint; const lpProtocolInfo : LPWSAProtocol_InfoA;
1242
var lpAddress : TSockAddr; var lpAddressLength : Longint ): Longint; external WINSOCK2_DLL name 'WSAStringToAddressA';
1243
function WSAStringToAddress( const AddressString : PMBChar; const AddressFamily: Longint; const lpProtocolInfo : LPWSAProtocol_Info;
1244
var lpAddress : TSockAddr; var lpAddressLength : Longint ): Longint; external WINSOCK2_DLL name 'WSAStringToAddress';
1246
{ Registration and Name Resolution API functions }
1247
function WSALookupServiceBeginA( const lpqsRestrictions : LPWSAQuerySetA; const dwControlFlags : DWORD; lphLookup : PHANDLE ): Longint; external WINSOCK2_DLL name 'WSALookupServiceBeginA';
1248
function WSALookupServiceBegin( const lpqsRestrictions : LPWSAQuerySet; const dwControlFlags : DWORD; lphLookup : PHANDLE ): Longint; external WINSOCK2_DLL name 'WSALookupServiceBegin';
1249
function WSALookupServiceNextA( const hLookup : THandle; const dwControlFlags : DWORD; var lpdwBufferLength : DWORD; lpqsResults : LPWSAQuerySetA ): Longint; external WINSOCK2_DLL name 'WSALookupServiceNextA';
1250
function WSALookupServiceNext( const hLookup : THandle; const dwControlFlags : DWORD; var lpdwBufferLength : DWORD; lpqsResults : LPWSAQuerySet ): Longint; external WINSOCK2_DLL name 'WSALookupServiceNext';
1251
function WSAInstallServiceClassA( const lpServiceClassInfo : LPWSAServiceClassInfoA ) : Longint; external WINSOCK2_DLL name 'WSAInstallServiceClassA';
1252
function WSAInstallServiceClassW( const lpServiceClassInfo : LPWSAServiceClassInfoW ) : Longint; external WINSOCK2_DLL name 'WSAInstallServiceClassW';
1253
function WSAInstallServiceClass( const lpServiceClassInfo : LPWSAServiceClassInfo ) : Longint; external WINSOCK2_DLL name 'WSAInstallServiceClass';
1254
function WSARemoveServiceClass( const lpServiceClassId : PGUID ) : Longint; external WINSOCK2_DLL name 'WSARemoveServiceClass';
1255
function WSAGetServiceClassInfoA( const lpProviderId : PGUID; const lpServiceClassId : PGUID; var lpdwBufSize : DWORD;
1256
lpServiceClassInfo : LPWSAServiceClassInfoA ): Longint; external WINSOCK2_DLL name 'WSAGetServiceClassInfoA';
1257
function WSAGetServiceClassInfoW( const lpProviderId : PGUID; const lpServiceClassId : PGUID; var lpdwBufSize : DWORD;
1258
lpServiceClassInfo : LPWSAServiceClassInfoW ): Longint; external WINSOCK2_DLL name 'WSAGetServiceClassInfoW';
1259
function WSAGetServiceClassInfo( const lpProviderId : PGUID; const lpServiceClassId : PGUID; var lpdwBufSize : DWORD;
1260
lpServiceClassInfo : LPWSAServiceClassInfo ): Longint; external WINSOCK2_DLL name 'WSAGetServiceClassInfo';
1261
function WSAEnumNameSpaceProvidersA( var lpdwBufferLength: DWORD; const lpnspBuffer: LPWSANameSpace_InfoA ): Longint; external WINSOCK2_DLL name 'WSAEnumNameSpaceProvidersA';
1262
function WSAEnumNameSpaceProviders( var lpdwBufferLength: DWORD; const lpnspBuffer: LPWSANameSpace_Info ): Longint; external WINSOCK2_DLL name 'WSAEnumNameSpaceProviders';
1263
function WSAGetServiceClassNameByClassIdA( const lpServiceClassId: PGUID; lpszServiceClassName: PChar;
1264
var lpdwBufferLength: DWORD ): Longint; external WINSOCK2_DLL name 'WSAGetServiceClassNameByClassIdA';
1265
function WSAGetServiceClassNameByClassIdW( const lpServiceClassId: PGUID; lpszServiceClassName: PWideChar;
1266
var lpdwBufferLength: DWORD ): Longint; external WINSOCK2_DLL name 'WSAGetServiceClassNameByClassIdW';
1267
function WSAGetServiceClassNameByClassId( const lpServiceClassId: PGUID; lpszServiceClassName: PMBChar;
1268
var lpdwBufferLength: DWORD ): Longint; external WINSOCK2_DLL name 'WSAGetServiceClassNameByClassId';
1269
function WSASetServiceA( const lpqsRegInfo: LPWSAQuerySetA; const essoperation: TWSAeSetServiceOp;
1270
const dwControlFlags: DWORD ): Longint; external WINSOCK2_DLL name 'WSASetServiceA';
1271
function WSASetService( const lpqsRegInfo: LPWSAQuerySet; const essoperation: TWSAeSetServiceOp;
1272
const dwControlFlags: DWORD ): Longint; external WINSOCK2_DLL name 'WSASetService';
1277
//begin wince only or not present in current winsock2
1283
WSCDeinstallProvider
1287
WSCUnInstallNameSpace
1296
//=============================================================
1298
//=============================================================
1301
function WSAMakeSyncReply(Buflen, Error: Word): Longint;
1303
WSAMakeSyncReply:= MakeLong(Buflen, Error);
1306
function WSAMakeSelectReply(Event, Error: Word): Longint;
1308
WSAMakeSelectReply:= MakeLong(Event, Error);
1311
function WSAGetAsyncBuflen(Param: Longint): Word;
1313
WSAGetAsyncBuflen:= LOWORD(Param);
1316
function WSAGetAsyncError(Param: Longint): Word;
1318
WSAGetAsyncError:= HIWORD(Param);
1321
function WSAGetSelectEvent(Param: Longint): Word;
1323
WSAGetSelectEvent:= LOWORD(Param);
1326
function WSAGetSelectError(Param: Longint): Word;
1328
WSAGetSelectError:= HIWORD(Param);
1331
procedure FD_CLR(Socket: TSocket; var FDSet: TFDSet);
1336
while I < FDSet.fd_count do
1338
if FDSet.fd_array[I] = Socket then
1340
while I < FDSet.fd_count - 1 do
1342
FDSet.fd_array[I] := FDSet.fd_array[I + 1];
1345
Dec(FDSet.fd_count);
1352
function FD_ISSET(Socket: TSocket; var FDSet: TFDSet): Boolean;
1354
FD_ISSET := __WSAFDIsSet(Socket, FDSet);
1357
procedure FD_SET(Socket: TSocket; var FDSet: TFDSet);
1359
if FDSet.fd_count < FD_SETSIZE then
1361
FDSet.fd_array[FDSet.fd_count] := Socket;
1362
Inc(FDSet.fd_count);
1366
procedure FD_ZERO(var FDSet: TFDSet);
1368
FDSet.fd_count := 0;