1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446 |
- {
- $Id$
- This file is part of the Free Pascal run time library.
- This unit contains the declarations for the WinSock2
- Socket Library for Netware and Win32
- Copyright (c) 1999-2003 by the Free Pascal development team
- See the file COPYING.FPC, included in this distribution,
- for details about the copyright.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- **********************************************************************
- For NetWare 4.11 you must install winsock-support (i.e. nw4wsock.exe)
- NetWare >= 5.0 contains winsock support by default
- **********************************************************************}
- {$PACKRECORDS 1}
- {$R-}
- unit winsock;
- { ifndef VER0_99_14}
- { ifndef NO_SMART_LINK}
- { define support_smartlink}
- { endif}
- { endif}
- { ifdef support_smartlink}
- { smartlink on}
- { endif}
- {$smartlink off} {for now, there seems to be a problem with fpc or the linker !}
- {$mode objfpc}
- interface
- const
- {
- Default maximium number of sockets.
- this does not
- mean that the underlying Windows Sockets implementation has to
- support that many!
- }
- FD_SETSIZE = 64;
- type
- tOS_INT = LongInt;
- tOS_UINT = DWord;
- ptOS_INT = ^tOS_INT;
- ptOS_UINT = ^tOS_UINT;
-
- u_char = char;
- u_short = word;
- u_int = tOS_UINT;
- u_long = dword;
- pu_long = ^u_long;
- pu_short = ^u_short;
- plongint = ^longint;
- TSocket = u_long;
- BOOL = boolean;
- LPINT = ^integer;
- LPDWORD = ^dword;
- {$ifdef netware}
- OVERLAPPED = record
- Internal : DWORD;
- InternalHigh: DWORD;
- Offset : DWORD;
- OffsetHigh : DWORD;
- hEvent : THandle;
- end;
- LPOVERLAPPED = ^OVERLAPPED;
- TOVERLAPPED = OVERLAPPED;
- POVERLAPPED = ^OVERLAPPED;
- {$endif}
- PHandle = ^THandle;
- TWSAOVERLAPPED= OVERLAPPED;
- PWSAOVERLAPPED= ^OVERLAPPED;
- TWSAEVENT = THandle;
- PWSAEVENT = ^THandle;
- { there is already a procedure called FD_SET, so this
- record was renamed (FK) }
- fdset = record
- fd_count : u_int;
- fd_array : array[0..(FD_SETSIZE)-1] of TSocket;
- end;
- TFDSet = fdset;
- PFDSet = ^fdset;
- timeval = record
- tv_sec : longint;
- tv_usec : longint;
- end;
- TTimeVal = timeval;
- PTimeVal = ^TTimeVal;
- { found no reference to this type in c header files and here. AlexS }
- { minutes west of Greenwich }
- { type of dst correction }
- timezone = record
- tz_minuteswest : longint;
- tz_dsttime : longint;
- end;
- TTimeZone = timezone;
- PTimeZone = ^TTimeZone;
- const
- IOCPARM_MASK = $7f;
- IOC_VOID = $20000000;
- IOC_OUT = $40000000;
- IOC_IN = $80000000;
- IOC_INOUT = IOC_IN or IOC_OUT;
- FIONREAD = IOC_OUT or
- ((4 and IOCPARM_MASK) shl 16) or
- (102 shl 8) or 127;
- FIONBIO = IOC_IN or
- ((4 and IOCPARM_MASK) shl 16) or
- (102 shl 8) or 126;
- FIOASYNC = IOC_IN or
- ((4 and IOCPARM_MASK) shl 16) or
- (102 shl 8) or 125;
- {
- Structures returned by network data base library, taken from the
- BSD file netdb.h. All addresses are supplied in host order, and
- returned in network order (suitable for use in system calls).
- Slight modifications for differences between Linux and winsock.h
- }
- type
- hostent = record
- { official name of host }
- h_name: pchar;
- { alias list }
- h_aliases: ^pchar;
- { host address type }
- h_addrtype: SmallInt;
- { length of address }
- h_length: SmallInt;
- { list of addresses }
- case byte of
- 0: (h_addr_list: ^pchar);
- 1: (h_addr: ^pchar)
- end;
- THostEnt = hostent;
- PHostEnt = ^THostEnt;
- {
- Assumption here is that a network number
- fits in an unsigned long -- someday that won't be true!
- }
- netent = record
- { official name of net }
- n_name : ^char;
- { alias list }
- n_aliases : ^pchar;
- { net address type }
- n_addrtype : SmallInt;
- n_pad1 : SmallInt; { ensure right packaging }
- { network # }
- n_net : u_long;
- end;
- TNetEnt = netent;
- PNetEnt = ^TNetEnt;
- servent = record
- { official service name }
- s_name : ^char;
- { alias list }
- s_aliases : ^pchar;
- { port # }
- s_port : SmallInt;
- n_pad1 : SmallInt; { ensure right packaging }
- { protocol to use }
- s_proto : ^char;
- end;
- TServEnt = servent;
- PServEnt = ^TServEnt;
- protoent = record
- { official protocol name }
- p_name : ^char;
- { alias list }
- p_aliases : ^pchar;
- { protocol # }
- p_proto : SmallInt;
- p_pad1 : SmallInt; { ensure packaging }
- end;
- TProtoEnt = protoent;
- PProtoEnt = ^TProtoEnt;
- const
- {
- Standard well-known IP protocols.
- For some reason there are differences between Linx and winsock.h
- }
- IPPROTO_IP = 0;
- IPPROTO_ICMP = 1;
- IPPROTO_IGMP = 2;
- IPPROTO_GGP = 3;
- IPPROTO_TCP = 6;
- IPPORT_ECHO = 7;
- IPPORT_DISCARD = 9;
- IPPORT_SYSTAT = 11;
- IPPROTO_PUP = 12;
- IPPORT_DAYTIME = 13;
- IPPORT_NETSTAT = 15;
- IPPROTO_UDP = 17;
- IPPROTO_IDP = 22;
- IPPROTO_ND = 77;
- IPPROTO_RAW = 255;
- IPPROTO_MAX = 256;
- IPPORT_FTP = 21;
- IPPORT_TELNET = 23;
- IPPORT_SMTP = 25;
- IPPORT_TIMESERVER = 37;
- IPPORT_NAMESERVER = 42;
- IPPORT_WHOIS = 43;
- IPPORT_MTP = 57;
- IPPORT_TFTP = 69;
- IPPORT_RJE = 77;
- IPPORT_FINGER = 79;
- IPPORT_TTYLINK = 87;
- IPPORT_SUPDUP = 95;
- IPPORT_EXECSERVER = 512;
- IPPORT_LOGINSERVER = 513;
- IPPORT_CMDSERVER = 514;
- IPPORT_EFSSERVER = 520;
- IPPORT_BIFFUDP = 512;
- IPPORT_WHOSERVER = 513;
- IPPORT_ROUTESERVER = 520;
- IPPORT_RESERVED = 1024;
- const
- IMPLINK_IP = 155;
- IMPLINK_LOWEXPER = 156;
- IMPLINK_HIGHEXPER = 158;
- type
- SunB = packed record
- s_b1,s_b2,s_b3,s_b4 : u_char;
- end;
- SunW = packed record
- s_w1,s_w2 : u_short;
- end;
- in_addr = record
- case integer of
- 0 : (S_un_b : SunB);
- 1 : (S_un_w : SunW);
- 2 : (S_addr : u_long);
- end;
- TInAddr = in_addr;
- PInAddr = ^TInAddr;
- sockaddr_in = record
- case integer of
- 0 : ( (* equals to sockaddr_in, size is 16 byte *)
- sin_family : SmallInt; (* 2 byte *)
- sin_port : u_short; (* 2 byte *)
- sin_addr : TInAddr; (* 4 byte *)
- sin_zero : array[0..7] of char; (* 8 byte *)
- );
- 1 : ( (* equals to sockaddr, size is 16 byte *)
- sa_family : SmallInt; (* 2 byte *)
- sa_data : array[0..13] of char; (* 14 byte *)
- );
-
- end;
-
- TSockAddrIn = sockaddr_in;
- PSockAddrIn = ^TSockAddrIn;
- TSockAddr = sockaddr_in;
- PSockAddr = ^TSockAddr;
- const
- INADDR_ANY = $00000000;
- INADDR_LOOPBACK = $7F000001;
- INADDR_BROADCAST = $FFFFFFFF;
- IN_CLASSA_NET = $ff000000;
- IN_CLASSA_NSHIFT = 24;
- IN_CLASSA_HOST = $00ffffff;
- IN_CLASSA_MAX = 128;
- IN_CLASSB_NET = $ffff0000;
- IN_CLASSB_NSHIFT = 16;
- IN_CLASSB_HOST = $0000ffff;
- IN_CLASSB_MAX = 65536;
- IN_CLASSC_NET = $ffffff00;
- IN_CLASSC_NSHIFT = 8;
- IN_CLASSC_HOST = $000000ff;
- INADDR_NONE = $ffffffff;
- WSADESCRIPTION_LEN = 256;
- WSASYS_STATUS_LEN = 128;
- type
- WSADATA = record
- wVersion : WORD; { 2 byte, ofs 0 }
- wHighVersion : WORD; { 2 byte, ofs 2 }
- szDescription : array[0..(WSADESCRIPTION_LEN+1)-1] of char; { 257 byte, ofs 4 }
- szSystemStatus : array[0..(WSASYS_STATUS_LEN+1)-1] of char; { 129 byte, ofs 261 }
- iMaxSockets : word; { 2 byte, ofs 390 }
- iMaxUdpDg : word; { 2 byte, ofs 392 }
- pad1 : SmallInt; { 2 byte, ofs 394 } { ensure right packaging }
- lpVendorInfo : pchar; { 4 byte, ofs 396 }
- end; { total size 400 }
- TWSAData = WSADATA;
- PWSAData = TWSAData;
- const
- IP_OPTIONS = 1;
- IP_MULTICAST_IF = 2;
- IP_MULTICAST_TTL = 3;
- IP_MULTICAST_LOOP = 4;
- IP_ADD_MEMBERSHIP = 5;
- IP_DROP_MEMBERSHIP = 6;
- IP_DEFAULT_MULTICAST_TTL = 1;
- IP_DEFAULT_MULTICAST_LOOP = 1;
- IP_MAX_MEMBERSHIPS = 20;
- type
- ip_mreq = record
- imr_multiaddr : in_addr;
- imr_interface : in_addr;
- end;
- {
- Definitions related to sockets: types, address families, options,
- taken from the BSD file sys/socket.h.
- }
- const
- INVALID_SOCKET = u_long(not(1));
- SOCKET_ERROR = -1;
- SOCK_STREAM = 1;
- SOCK_DGRAM = 2;
- SOCK_RAW = 3;
- SOCK_RDM = 4;
- SOCK_SEQPACKET = 5;
- { For setsockoptions(2) }
- SO_DEBUG = $0001;
- SO_ACCEPTCONN = $0002;
- SO_REUSEADDR = $0004;
- SO_KEEPALIVE = $0008;
- SO_DONTROUTE = $0010;
- SO_BROADCAST = $0020;
- SO_USELOOPBACK = $0040;
- SO_LINGER = $0080;
- SO_OOBINLINE = $0100;
- {
- Additional options.
- }
- { send buffer size }
- SO_SNDBUF = $1001;
- { receive buffer size }
- SO_RCVBUF = $1002;
- { send low-water mark }
- SO_SNDLOWAT = $1003;
- { receive low-water mark }
- SO_RCVLOWAT = $1004;
- { send timeout }
- SO_SNDTIMEO = $1005;
- { receive timeout }
- SO_RCVTIMEO = $1006;
- { get error status and clear }
- SO_ERROR = $1007;
- { get socket type }
- SO_TYPE = $1008;
- { WinSock 2 extension -- new option }
- SO_GROUP_ID = $2001; { ID of a socket group }
- SO_GROUP_PRIORITY = $2002; { the relative priority within a group }
- SO_MAX_MSG_SIZE = $2003; { maximum message size }
- SO_PROTOCOL_INFOA = $2004; { WSAPROTOCOL_INFOA structure }
- SO_PROTOCOL_INFOW = $2005; { WSAPROTOCOL_INFOW structure }
- SO_PROTOCOL_INFO = SO_PROTOCOL_INFOW;
- PVD_CONFIG = $3001; { configuration info for service provider }
- {
- Options for connect and disconnect data and options. Used only by
- non-TCP/IP transports such as DECNet, OSI TP4, etc.
- }
- SO_CONNDATA = $7000;
- SO_CONNOPT = $7001;
- SO_DISCDATA = $7002;
- SO_DISCOPT = $7003;
- SO_CONNDATALEN = $7004;
- SO_CONNOPTLEN = $7005;
- SO_DISCDATALEN = $7006;
- SO_DISCOPTLEN = $7007;
- {
- Option for opening sockets for synchronous access.
- }
- SO_OPENTYPE = $7008;
- SO_SYNCHRONOUS_ALERT = $10;
- SO_SYNCHRONOUS_NONALERT = $20;
- {
- Other NT-specific options.
- }
- SO_MAXDG = $7009;
- SO_MAXPATHDG = $700A;
- SO_UPDATE_ACCEPT_CONTEXT = $700B;
- SO_CONNECT_TIME = $700C;
- {
- TCP options.
- }
- TCP_NODELAY = $0001;
- TCP_BSDURGENT = $7000;
- { Address families. }
- { unspecified }
- AF_UNSPEC = 0;
- {
- * Although AF_UNSPEC is defined for backwards compatibility, using
- * AF_UNSPEC for the "af" parameter when creating a socket is STRONGLY
- * DISCOURAGED. The interpretation of the "protocol" parameter
- * depends on the actual address family chosen. As environments grow
- * to include more and more address families that use overlapping
- * protocol values there is more and more chance of choosing an
- * undesired address family when AF_UNSPEC is used. }
- { local to host (pipes, portals) }
- AF_UNIX = 1;
- { internetwork: UDP, TCP, etc. }
- AF_INET = 2;
- { arpanet imp addresses }
- AF_IMPLINK = 3;
- { pup protocols: e.g. BSP }
- AF_PUP = 4;
- { mit CHAOS protocols }
- AF_CHAOS = 5;
- { IPX and SPX }
- AF_IPX = 6;
- { XEROX NS protocols }
- AF_NS = 6;
- { ISO protocols }
- AF_ISO = 7;
- { OSI is ISO }
- AF_OSI = AF_ISO;
- { european computer manufacturers }
- AF_ECMA = 8;
- { datakit protocols }
- AF_DATAKIT = 9;
- { CCITT protocols, X.25 etc }
- AF_CCITT = 10;
- { IBM SNA }
- AF_SNA = 11;
- { DECnet }
- AF_DECnet = 12;
- { Direct data link interface }
- AF_DLI = 13;
- { LAT }
- AF_LAT = 14;
- { NSC Hyperchannel }
- AF_HYLINK = 15;
- { AppleTalk }
- AF_APPLETALK = 16;
- { NetBios-style addresses }
- AF_NETBIOS = 17;
- { VoiceView }
- AF_VOICEVIEW = 18;
- { FireFox }
- AF_FIREFOX = 19;
- { Somebody is using this! }
- AF_UNKNOWN1 = 20;
- { Banyan }
- AF_BAN = 21;
- AF_ATM = 22;
- AF_INET6 = 23;
- AF_CLUSTER = 24;
- AF_12844 = 25;
- AF_IRDA = 26;
- AF_MAX = 27;
- type
- {
- Structure used by kernel to pass protocol
- information in raw sockets.
- }
- sockproto = record
- sp_family : u_short;
- sp_protocol : u_short;
- end;
- TSockProto = sockproto;
- PSockProto = ^TSockProto;
- const
- {
- Protocol families, same as address families for now.
- }
- PF_UNSPEC = AF_UNSPEC;
- PF_UNIX = AF_UNIX;
- PF_INET = AF_INET;
- PF_IMPLINK = AF_IMPLINK;
- PF_PUP = AF_PUP;
- PF_CHAOS = AF_CHAOS;
- PF_NS = AF_NS;
- PF_IPX = AF_IPX;
- PF_ISO = AF_ISO;
- PF_OSI = AF_OSI;
- PF_ECMA = AF_ECMA;
- PF_DATAKIT = AF_DATAKIT;
- PF_CCITT = AF_CCITT;
- PF_SNA = AF_SNA;
- PF_DECnet = AF_DECnet;
- PF_DLI = AF_DLI;
- PF_LAT = AF_LAT;
- PF_HYLINK = AF_HYLINK;
- PF_APPLETALK = AF_APPLETALK;
- PF_VOICEVIEW = AF_VOICEVIEW;
- PF_FIREFOX = AF_FIREFOX;
- PF_UNKNOWN1 = AF_UNKNOWN1;
- PF_BAN = AF_BAN;
- PF_ATM = AF_ATM;
- PF_INET6 = AF_INET6;
- PF_MAX = AF_MAX;
- type
- {
- Structure used for manipulating linger option.
- }
- linger = record
- l_onoff : u_short;
- l_linger : u_short;
- end;
- TLinger = linger;
- PLinger = ^TLinger;
- const
- {
- Level number for (get/set)sockopt() to apply to socket itself.
- }
- { options for socket level }
- SOL_SOCKET = $ffff;
- {
- Maximum queue length specifiable by listen.
- }
- SOMAXCONN = $7fffffff;
- { process out-of-band data }
- MSG_OOB = $1;
- { peek at incoming message }
- MSG_PEEK = $2;
- { send without using routing tables }
- MSG_DONTROUTE = $4;
- MSG_MAXIOVLEN = 16;
- { partial send or recv for message xport }
- MSG_PARTIAL = $8000;
- {
- Define constant based on rfc883, used by gethostbyxxxx() calls.
- }
- MAXGETHOSTSTRUCT = 1024;
- MAXHOSTNAMELEN = MAXGETHOSTSTRUCT;
- { Winsock2 extension -- new flags for WSASend, WSASendTo, WSARecv
- and WSARecvFrom }
- MSG_INTERRUPT = $10; { send/recv in the interrupt context }
- { Define flags to be used with the WSAAsyncSelect() call. }
- FD_READ = $01;
- FD_WRITE = $02;
- FD_OOB = $04;
- FD_ACCEPT = $08;
- FD_CONNECT = $10;
- FD_CLOSE = $20;
- FD_QOS = $40;
- FD_GROUP_QOS = $80;
- FD_ROUTING_INTERFACE_CHANGE = $100;
- FD_ADDRESS_LIST_CHANGE = $200;
- FD_MAX_EVENTS = 10;
- FD_ALL_EVENTS = $4ff;
- { All Windows Sockets error constants are biased by WSABASEERR from
- the "normal" }
- WSABASEERR = 10000;
- { Windows Sockets definitions of regular Microsoft C error constants }
- WSAEINTR = WSABASEERR + 4;
- WSAEBADF = WSABASEERR + 9;
- WSAEACCES = WSABASEERR + 13;
- WSAEFAULT = WSABASEERR + 14;
- WSAEINVAL = WSABASEERR + 22;
- WSAEMFILE = WSABASEERR + 24;
- { Windows Sockets definitions of regular Berkeley error constants }
- WSAEWOULDBLOCK = WSABASEERR + 35;
- WSAEINPROGRESS = WSABASEERR + 36;
- WSAEALREADY = WSABASEERR + 37;
- WSAENOTSOCK = WSABASEERR + 38;
- WSAEDESTADDRREQ = WSABASEERR + 39;
- WSAEMSGSIZE = WSABASEERR + 40;
- WSAEPROTOTYPE = WSABASEERR + 41;
- WSAENOPROTOOPT = WSABASEERR + 42;
- WSAEPROTONOSUPPORT = WSABASEERR + 43;
- WSAESOCKTNOSUPPORT = WSABASEERR + 44;
- WSAEOPNOTSUPP = WSABASEERR + 45;
- WSAEPFNOSUPPORT = WSABASEERR + 46;
- WSAEAFNOSUPPORT = WSABASEERR + 47;
- WSAEADDRINUSE = WSABASEERR + 48;
- WSAEADDRNOTAVAIL = WSABASEERR + 49;
- WSAENETDOWN = WSABASEERR + 50;
- WSAENETUNREACH = WSABASEERR + 51;
- WSAENETRESET = WSABASEERR + 52;
- WSAECONNABORTED = WSABASEERR + 53;
- WSAECONNRESET = WSABASEERR + 54;
- WSAENOBUFS = WSABASEERR + 55;
- WSAEISCONN = WSABASEERR + 56;
- WSAENOTCONN = WSABASEERR + 57;
- WSAESHUTDOWN = WSABASEERR + 58;
- WSAETOOMANYREFS = WSABASEERR + 59;
- WSAETIMEDOUT = WSABASEERR + 60;
- WSAECONNREFUSED = WSABASEERR + 61;
- WSAELOOP = WSABASEERR + 62;
- WSAENAMETOOLONG = WSABASEERR + 63;
- WSAEHOSTDOWN = WSABASEERR + 64;
- WSAEHOSTUNREACH = WSABASEERR + 65;
- WSAENOTEMPTY = WSABASEERR + 66;
- WSAEPROCLIM = WSABASEERR + 67;
- WSAEUSERS = WSABASEERR + 68;
- WSAEDQUOT = WSABASEERR + 69;
- WSAESTALE = WSABASEERR + 70;
- WSAEREMOTE = WSABASEERR + 71;
- { Extended Windows Sockets error constant definitions }
- WSASYSNOTREADY = WSABASEERR + 91;
- WSAVERNOTSUPPORTED = WSABASEERR + 92;
- WSANOTINITIALISED = WSABASEERR + 93;
- WSAEDISCON = WSABASEERR + 101;
- WSAENOMORE = WSABASEERR+102;
- WSAECANCELLED = WSABASEERR+103;
- WSAEINVALIDPROCTABLE = WSABASEERR+104;
- WSAEINVALIDPROVIDER = WSABASEERR+105;
- WSAEPROVIDERFAILEDINIT = WSABASEERR+106;
- WSASYSCALLFAILURE = WSABASEERR+107;
- WSASERVICE_NOT_FOUND = WSABASEERR+108;
- WSATYPE_NOT_FOUND = WSABASEERR+109;
- WSA_E_NO_MORE = WSABASEERR+110;
- WSA_E_CANCELLED = WSABASEERR+111;
- WSAEREFUSED = WSABASEERR+112;
- {
- Error return codes from gethostbyname() and gethostbyaddr()
- (when using the resolver). Note that these errors are
- retrieved via WSAGetLastError() and must therefore follow
- the rules for avoiding clashes with error numbers from
- specific implementations or language run-time systems.
- For this reason the codes are based at WSABASEERR+1001.
- Note also that [WSA]NO_ADDRESS is defined only for
- compatibility purposes.
- }
- WSAHOST_NOT_FOUND = WSABASEERR + 1001;
- HOST_NOT_FOUND = WSAHOST_NOT_FOUND;
- { Non-Authoritative: Host not found, or SERVERFAIL }
- WSATRY_AGAIN = WSABASEERR + 1002;
- TRY_AGAIN = WSATRY_AGAIN;
- { Non recoverable errors, FORMERR, REFUSED, NOTIMP }
- WSANO_RECOVERY = WSABASEERR + 1003;
- NO_RECOVERY = WSANO_RECOVERY;
- { Valid name, no data record of requested type }
- WSANO_DATA = WSABASEERR + 1004;
- NO_DATA = WSANO_DATA;
- { no address, look for MX record }
- WSANO_ADDRESS = WSANO_DATA;
- NO_ADDRESS = WSANO_ADDRESS;
- { Define QOS related error return codes }
- WSA_QOS_RECEIVERS = WSABASEERR + 1005;
- { at least one Reserve has arrived }
- WSA_QOS_SENDERS = WSABASEERR + 1006;
- { at least one Path has arrived }
- WSA_QOS_NO_SENDERS = WSABASEERR + 1007;
- { there are no senders }
- WSA_QOS_NO_RECEIVERS = WSABASEERR + 1008;
- { there are no receivers }
- WSA_QOS_REQUEST_CONFIRMED = WSABASEERR + 1009;
- { Reserve has been confirmed }
- WSA_QOS_ADMISSION_FAILURE = WSABASEERR + 1010;
- WSA_QOS_POLICY_FAILURE = WSABASEERR + 1011;
- { rejected for administrative reasons - bad credentials }
- WSA_QOS_BAD_STYLE = WSABASEERR + 1012;
- { unknown or conflicting style }
- WSA_QOS_BAD_OBJECT = WSABASEERR + 1013;
- {* problem with some part of the filterspec or providerspecific
- * buffer in general }
- WSA_QOS_TRAFFIC_CTRL_ERROR = WSABASEERR + 1014;
- { problem with some part of the flowspec }
- WSA_QOS_GENERIC_ERROR = WSABASEERR + 1015;
- { general error }
- const
- {
- Windows Sockets errors redefined as regular Berkeley error constants.
- }
- EWOULDBLOCK = WSAEWOULDBLOCK;
- EINPROGRESS = WSAEINPROGRESS;
- EALREADY = WSAEALREADY;
- ENOTSOCK = WSAENOTSOCK;
- EDESTADDRREQ = WSAEDESTADDRREQ;
- EMSGSIZE = WSAEMSGSIZE;
- EPROTOTYPE = WSAEPROTOTYPE;
- ENOPROTOOPT = WSAENOPROTOOPT;
- EPROTONOSUPPORT = WSAEPROTONOSUPPORT;
- ESOCKTNOSUPPORT = WSAESOCKTNOSUPPORT;
- EOPNOTSUPP = WSAEOPNOTSUPP;
- EPFNOSUPPORT = WSAEPFNOSUPPORT;
- EAFNOSUPPORT = WSAEAFNOSUPPORT;
- EADDRINUSE = WSAEADDRINUSE;
- EADDRNOTAVAIL = WSAEADDRNOTAVAIL;
- ENETDOWN = WSAENETDOWN;
- ENETUNREACH = WSAENETUNREACH;
- ENETRESET = WSAENETRESET;
- ECONNABORTED = WSAECONNABORTED;
- ECONNRESET = WSAECONNRESET;
- ENOBUFS = WSAENOBUFS;
- EISCONN = WSAEISCONN;
- ENOTCONN = WSAENOTCONN;
- ESHUTDOWN = WSAESHUTDOWN;
- ETOOMANYREFS = WSAETOOMANYREFS;
- ETIMEDOUT = WSAETIMEDOUT;
- ECONNREFUSED = WSAECONNREFUSED;
- ELOOP = WSAELOOP;
- ENAMETOOLONG = WSAENAMETOOLONG;
- EHOSTDOWN = WSAEHOSTDOWN;
- EHOSTUNREACH = WSAEHOSTUNREACH;
- ENOTEMPTY = WSAENOTEMPTY;
- EPROCLIM = WSAEPROCLIM;
- EUSERS = WSAEUSERS;
- EDQUOT = WSAEDQUOT;
- ESTALE = WSAESTALE;
- EREMOTE = WSAEREMOTE;
- TF_DISCONNECT = $01;
- TF_REUSE_SOCKET = $02;
- TF_WRITE_BEHIND = $04;
- {
- Options for use with [gs]etsockopt at the IP level.
- }
- IP_TTL = 7;
- IP_TOS = 8;
- IP_DONTFRAGMENT = 9;
- type
- _TRANSMIT_FILE_BUFFERS = record
- Head : Pointer;
- HeadLength : dword;
- Tail : Pointer;
- TailLength : dword;
- end;
- TRANSMIT_FILE_BUFFERS = _TRANSMIT_FILE_BUFFERS;
- TTransmitFileBuffers = _TRANSMIT_FILE_BUFFERS;
- PTransmitFileBuffers = ^TTransmitFileBuffers;
- { WinSock 2 extension -- WSABUF and QOS struct, include qos.h
- to pull in FLOWSPEC and related definitions }
- { the length of the buffer }
- (* far ignored *)
- { the pointer to the buffer }
- (* far ignored *)
- TWSABUF = record
- len : u_long;
- buf : ^char;
- end;
- _WSABUF = TWSABUF;
- LPWSABUF = ^TWSABUF;
- PWSABUF = ^TWSABUF;
- {$i qos.inc }
- { the flow spec for data sending }
- { the flow spec for data receiving }
- { additional provider specific stuff }
- type
- TQualityOfService = record
- SendingFlowspec : TFLOWSPEC;
- ReceivingFlowspec : TFLOWSPEC;
- ProviderSpecific : TWSABUF;
- end;
- TQOS = TQualityOfService;
- PQOS = ^TQOS;
- { WinSock 2 extension -- manifest constants for return values of the condition function }
- const
- CF_ACCEPT = $0000;
- CF_REJECT = $0001;
- CF_DEFER = $0002;
- { WinSock 2 extension -- manifest constants for shutdown() }
- SD_RECEIVE = $00;
- SD_SEND = $01;
- SD_BOTH = $02;
- { WinSock 2 extension -- data type and manifest constants for socket groups }
- type
- TGROUP = dword;
- PGROUP = ^TGROUP;
- const
- SG_UNCONSTRAINED_GROUP = $01;
- SG_CONSTRAINED_GROUP = $02;
- { WinSock 2 extension -- data type for WSAEnumNetworkEvents() }
- type
- TWSANETWORKEVENTS = record
- lNetworkEvents : longint;
- iErrorCode : array[0..(FD_MAX_EVENTS)-1] of longint;
- end;
- LPWSANETWORKEVENTS = ^TWSANETWORKEVENTS;
- PWSANETWORKEVENTS = ^TWSANETWORKEVENTS;
- { WinSock 2 extension -- WSAPROTOCOL_INFO structure and associated
- manifest constants }
- type
- TGUID = record
- Data1 : dword;
- Data2 : word;
- Data3 : word;
- Data4 : array[0..7] of byte;
- end;
- PGUID = ^TGUID;
- LPGUID = PGUID;
- const
- MAX_PROTOCOL_CHAIN = 7;
- BASE_PROTOCOL = 1;
- LAYERED_PROTOCOL = 0;
- { the length of the chain, }
- { length = 0 means layered protocol, }
- { length = 1 means base protocol, }
- { length > 1 means protocol chain }
- { a list of dwCatalogEntryIds }
- type
- TWSAPROTOCOLCHAIN = record
- ChainLen : longint;
- ChainEntries : array[0..(MAX_PROTOCOL_CHAIN)-1] of DWORD;
- end;
- LPWSAPROTOCOLCHAIN = ^TWSAPROTOCOLCHAIN;
- PWSAPROTOCOLCHAIN = ^TWSAPROTOCOLCHAIN;
- const
- WSAPROTOCOL_LEN = 255;
- (* far ignored *)
- type
- TWSAPROTOCOL_INFOA = record
- dwServiceFlags1 : DWORD;
- dwServiceFlags2 : DWORD;
- dwServiceFlags3 : DWORD;
- dwServiceFlags4 : DWORD;
- dwProviderFlags : DWORD;
- ProviderId : TGUID;
- dwCatalogEntryId: DWORD;
- ProtocolChain : TWSAPROTOCOLCHAIN;
- iVersion : longint;
- iAddressFamily : longint;
- iMaxSockAddr : longint;
- iMinSockAddr : longint;
- iSocketType : longint;
- iProtocol : longint;
- iProtocolMaxOffset : longint;
- iNetworkByteOrder : longint;
- iSecurityScheme : longint;
- dwMessageSize : DWORD;
- dwProviderReserved : DWORD;
- szProtocol : array[0..(WSAPROTOCOL_LEN + 1)-1] of CHAR;
- end;
- LPWSAPROTOCOL_INFOA = ^TWSAPROTOCOL_INFOA;
- PWSAPROTOCOL_INFOA = ^TWSAPROTOCOL_INFOA;
- TWSAPROTOCOL_INFOW = record
- dwServiceFlags1 : DWORD;
- dwServiceFlags2 : DWORD;
- dwServiceFlags3 : DWORD;
- dwServiceFlags4 : DWORD;
- dwProviderFlags : DWORD;
- ProviderId : TGUID;
- dwCatalogEntryId: DWORD;
- ProtocolChain : TWSAPROTOCOLCHAIN;
- iVersion : longint;
- iAddressFamily : longint;
- iMaxSockAddr : longint;
- iMinSockAddr : longint;
- iSocketType : longint;
- iProtocol : longint;
- iProtocolMaxOffset : longint;
- iNetworkByteOrder : longint;
- iSecurityScheme : longint;
- dwMessageSize : DWORD;
- dwProviderReserved : DWORD;
- szProtocol : array[0..(WSAPROTOCOL_LEN + 1)-1] of WCHAR;
- end;
- LPWSAPROTOCOL_INFOW = ^TWSAPROTOCOL_INFOW;
- PWSAPROTOCOL_INFOW = ^TWSAPROTOCOL_INFOW;
- {$ifdef UNICODE}
- type
- TWSAPROTOCOL_INFO = TWSAPROTOCOL_INFOW;
- LPWSAPROTOCOL_INFO = LPWSAPROTOCOL_INFOW;
- PWSAPROTOCOL_INFO = PWSAPROTOCOL_INFOW;
- {$else}
- type
- TWSAPROTOCOL_INFO = TWSAPROTOCOL_INFOA;
- LPWSAPROTOCOL_INFO = LPWSAPROTOCOL_INFOA;
- PWSAPROTOCOL_INFO = PWSAPROTOCOL_INFOA;
- {$endif}
- { Flag bit definitions for dwProviderFlags }
- const
- PFL_MULTIPLE_PROTO_ENTRIES = $00000001;
- PFL_RECOMMENDED_PROTO_ENTRY = $00000002;
- PFL_HIDDEN = $00000004;
- PFL_MATCHES_PROTOCOL_ZERO = $00000008;
- { Flag bit definitions for dwServiceFlags1 }
- XP1_CONNECTIONLESS = $00000001;
- XP1_GUARANTEED_DELIVERY = $00000002;
- XP1_GUARANTEED_ORDER = $00000004;
- XP1_MESSAGE_ORIENTED = $00000008;
- XP1_PSEUDO_STREAM = $00000010;
- XP1_GRACEFUL_CLOSE = $00000020;
- XP1_EXPEDITED_DATA = $00000040;
- XP1_CONNECT_DATA = $00000080;
- XP1_DISCONNECT_DATA = $00000100;
- XP1_SUPPORT_BROADCAST = $00000200;
- XP1_SUPPORT_MULTIPOINT = $00000400;
- XP1_MULTIPOINT_CONTROL_PLANE = $00000800;
- XP1_MULTIPOINT_DATA_PLANE = $00001000;
- XP1_QOS_SUPPORTED = $00002000;
- XP1_INTERRUPT = $00004000;
- XP1_UNI_SEND = $00008000;
- XP1_UNI_RECV = $00010000;
- XP1_IFS_HANDLES = $00020000;
- XP1_PARTIAL_MESSAGE = $00040000;
- BIGENDIAN = $0000;
- LITTLEENDIAN = $0001;
- SECURITY_PROTOCOL_NONE = $0000;
- { WinSock 2 extension -- manifest constants for WSAJoinLeaf() }
- JL_SENDER_ONLY = $01;
- JL_RECEIVER_ONLY = $02;
- JL_BOTH = $04;
- { WinSock 2 extension -- manifest constants for WSASocket() }
- WSA_FLAG_OVERLAPPED = $01;
- WSA_FLAG_MULTIPOINT_C_ROOT = $02;
- WSA_FLAG_MULTIPOINT_C_LEAF = $04;
- WSA_FLAG_MULTIPOINT_D_ROOT = $08;
- WSA_FLAG_MULTIPOINT_D_LEAF = $10;
- { WinSock 2 extension -- manifest constants for WSAIoctl() }
- IOC_UNIX = $00000000;
- IOC_WS2 = $08000000;
- IOC_PROTOCOL = $10000000;
- IOC_VENDOR = $18000000;
- { WinSock 2 extension -- manifest constants for SIO_TRANSLATE_HANDLE ioctl }
- const
- TH_NETDEV = $00000001;
- TH_TAPI = $00000002;
- { Microsoft Windows Extended data types required for the functions to
- convert back and forth between binary and string forms of
- addresses. }
- type
- //PSOCKADDR = sockaddr;
- LPSOCKADDR = PSockAddr;
- { Manifest constants and type definitions related to name resolution and
- registration (RNR) API }
- type
- TBLOB = record
- cbSize : u_long;
- pBlobData:ARRAY[0..0] OF POINTER; {???}
- end;
- PBLOB = ^TBLOB;
- { Service Install Flags }
- const
- SERVICE_MULTIPLE = $00000001;
- { & Name Spaces }
- NS_ALL = 0;
- NS_SAP = 1;
- NS_NDS = 2;
- NS_PEER_BROWSE = 3;
- NS_TCPIP_LOCAL = 10;
- NS_TCPIP_HOSTS = 11;
- NS_DNS = 12;
- NS_NETBT = 13;
- NS_WINS = 14;
- NS_NBP = 20;
- NS_MS = 30;
- NS_STDA = 31;
- NS_NTDS = 32;
- NS_X500 = 40;
- NS_NIS = 41;
- NS_NISPLUS = 42;
- NS_WRQ = 50;
- { Resolution flags for WSAGetAddressByName().
- Note these are also used by the 1.1 API GetAddressByName, so
- leave them around. }
- RES_UNUSED_1 = $00000001;
- RES_FLUSH_CACHE = $00000002;
- RES_SERVICE = $00000004;
- { RES_SERVICE }
- { Well known value names for Service Types }
- const
- SERVICE_TYPE_VALUE_IPXPORTA = 'IpxSocket';
- (* error #define SERVICE_TYPE_VALUE_IPXPORTW L"IpxSocket" *)
- SERVICE_TYPE_VALUE_SAPIDA = 'SapId';
- (* error #define SERVICE_TYPE_VALUE_SAPIDW L"SapId" *)
- SERVICE_TYPE_VALUE_TCPPORTA = 'TcpPort';
- (* error #define SERVICE_TYPE_VALUE_TCPPORTW L"TcpPort" *)
- SERVICE_TYPE_VALUE_UDPPORTA = 'UdpPort';
- (* error #define SERVICE_TYPE_VALUE_UDPPORTW L"UdpPort" *)
- SERVICE_TYPE_VALUE_OBJECTIDA = 'ObjectId';
- (* error #define SERVICE_TYPE_VALUE_OBJECTIDW L"ObjectId" *)
- {$ifdef UNICODE}
- const
- SERVICE_TYPE_VALUE_SAPID = SERVICE_TYPE_VALUE_SAPIDW;
- SERVICE_TYPE_VALUE_TCPPORT = SERVICE_TYPE_VALUE_TCPPORTW;
- SERVICE_TYPE_VALUE_UDPPORT = SERVICE_TYPE_VALUE_UDPPORTW;
- SERVICE_TYPE_VALUE_OBJECTID = SERVICE_TYPE_VALUE_OBJECTIDW;
- {$else}
- { not UNICODE }
- const
- SERVICE_TYPE_VALUE_SAPID = SERVICE_TYPE_VALUE_SAPIDA;
- SERVICE_TYPE_VALUE_TCPPORT = SERVICE_TYPE_VALUE_TCPPORTA;
- SERVICE_TYPE_VALUE_UDPPORT = SERVICE_TYPE_VALUE_UDPPORTA;
- SERVICE_TYPE_VALUE_OBJECTID = SERVICE_TYPE_VALUE_OBJECTIDA;
- {$endif}
- {$ifndef __CSADDR_DEFINED__}
- {$define __CSADDR_DEFINED__}
- { SockAddr Information }
- type
- TSOCKET_ADDRESS = record
- lpSockaddr : PSockAddr;
- iSockaddrLength : tOS_INT;
- end;
- PSOCKET_ADDRESS = ^TSOCKET_ADDRESS;
- LPSOCKET_ADDRESS = ^TSOCKET_ADDRESS;
- { CSAddr Information }
- TCSADDR_INFO = record
- LocalAddr : TSOCKET_ADDRESS;
- RemoteAddr : TSOCKET_ADDRESS;
- iSocketType : tOS_INT;
- iProtocol : tOS_INT;
- end;
- PCSADDR_INFO = ^TCSADDR_INFO;
- LPCSADDR_INFO = ^TCSADDR_INFO;
- {$endif}
- { Address list returned via SIO_ADDRESS_LIST_QUERY }
- type
- TSOCKET_ADDRESS_LIST = record
- iAddressCount : tOS_INT;
- Address : array[0..0] of TSOCKET_ADDRESS;
- end;
- LPSOCKET_ADDRESS_LIST = ^TSOCKET_ADDRESS_LIST;
- PSOCKET_ADDRESS_LIST = ^TSOCKET_ADDRESS_LIST;
- { Address Family/Protocol Tuples }
- TAFPROTOCOLS = record
- iAddressFamily : tOS_INT;
- iProtocol : tOS_INT;
- end;
- PAFPROTOCOLS = ^TAFPROTOCOLS;
- LPAFPROTOCOLS = ^TAFPROTOCOLS;
- { Client Query API Typedefs }
- { The comparators }
- TWSAEcomparator = (COMP_EQUAL := 0,COMP_NOTLESS);
- PWSAECOMPARATOR = ^TWSAEcomparator;
- LPWSAECOMPARATOR = ^TWSAEcomparator;
- TWSAVersion = record
- dwVersion : DWORD;
- ecHow : TWSAECOMPARATOR;
- end;
- PWSAVERSION = ^TWSAVersion;
- LPWSAVERSION = ^TWSAVersion;
- TWSAQuerySetA = record
- dwSize : DWORD;
- lpszServiceInstanceName : PChar;
- lpServiceClassId : LPGUID;
- lpVersion : LPWSAVERSION;
- lpszComment : PChar;
- dwNameSpace : DWORD;
- lpNSProviderId : LPGUID;
- lpszContext : PChar;
- dwNumberOfProtocols : DWORD;
- lpafpProtocols : LPAFPROTOCOLS;
- lpszQueryString : PChar;
- dwNumberOfCsAddrs : DWORD;
- lpcsaBuffer : LPCSADDR_INFO;
- dwOutputFlags : DWORD;
- lpBlob : PBLOB;
- end;
- PWSAQUERYSETA = ^TWSAQuerySetA;
- LPWSAQUERYSETA = ^TWSAQuerySetA;
- TWSAQuerySetW = record
- dwSize : DWORD;
- lpszServiceInstanceName : PWideChar;
- lpServiceClassId : LPGUID;
- lpVersion : LPWSAVERSION;
- lpszComment : PWideChar;
- dwNameSpace : DWORD;
- lpNSProviderId : LPGUID;
- lpszContext : PWideChar;
- dwNumberOfProtocols : DWORD;
- lpafpProtocols : LPAFPROTOCOLS;
- lpszQueryString : PWideChar;
- dwNumberOfCsAddrs : DWORD;
- lpcsaBuffer : LPCSADDR_INFO;
- dwOutputFlags : DWORD;
- lpBlob : PBLOB;
- end;
- PWSAQUERYSETW = ^TWSAQuerySetW;
- LPWSAQUERYSETW = ^TWSAQuerySetW;
- {$ifdef UNICODE}
- type
- TWSAQUERYSET = TWSAQUERYSETW;
- PWSAQUERYSET = PWSAQUERYSETW;
- LPWSAQUERYSET = LPWSAQUERYSETW;
- {$else}
- type
- TWSAQUERYSET = TWSAQUERYSETA;
- PWSAQUERYSET = PWSAQUERYSETA;
- LPWSAQUERYSET = LPWSAQUERYSETA;
- {$endif}
- const
- LUP_DEEP = $0001;
- LUP_CONTAINERS = $0002;
- LUP_NOCONTAINERS = $0004;
- LUP_NEAREST = $0008;
- LUP_RETURN_NAME = $0010;
- LUP_RETURN_TYPE = $0020;
- LUP_RETURN_VERSION = $0040;
- LUP_RETURN_COMMENT = $0080;
- LUP_RETURN_ADDR = $0100;
- LUP_RETURN_BLOB = $0200;
- LUP_RETURN_ALIASES = $0400;
- LUP_RETURN_QUERY_STRING = $0800;
- LUP_RETURN_ALL = $0FF0;
- LUP_RES_SERVICE = $8000;
- LUP_FLUSHCACHE = $1000;
- LUP_FLUSHPREVIOUS = $2000;
- { }
- { Return flags }
- { }
- RESULT_IS_ALIAS = $0001;
- { Service Address Registration and Deregistration Data Types. }
- type
- TWSAESETSERVICEOP =
- (RNRSERVICE_REGISTER := 0,RNRSERVICE_DEREGISTER, RNRSERVICE_DELETE);
- PWSAESETSERVICEOP = ^TWSAESETSERVICEOP;
- LPWSAESETSERVICEOP = ^TWSAESETSERVICEOP;
- { Service Installation/Removal Data Types. }
- TWSANSClassInfoA = record
- lpszName : PChar;
- dwNameSpace : DWORD;
- dwValueType : DWORD;
- dwValueSize : DWORD;
- lpValue : Pointer;
- end;
- PWSANSCLASSINFOA = ^TWSANSClassInfoA;
- LPWSANSCLASSINFOA = ^TWSANSClassInfoA;
- TWSANSClassInfoW = record
- lpszName : PWideChar;
- dwNameSpace : DWORD;
- dwValueType : DWORD;
- dwValueSize : DWORD;
- lpValue : Pointer;
- end;
- PWSANSCLASSINFOW = ^TWSANSClassInfoW;
- LPWSANSCLASSINFOW = ^TWSANSClassInfoW;
- {$ifdef UNICODE}
- type
- TWSANSCLASSINFO = TWSANSCLASSINFOW;
- PWSANSCLASSINFO = PWSANSCLASSINFOW;
- LPWSANSCLASSINFO = LPWSANSCLASSINFOW;
- {$else}
- type
- TWSANSCLASSINFO = TWSANSCLASSINFOA;
- PWSANSCLASSINFO = PWSANSCLASSINFOA;
- LPWSANSCLASSINFO = LPWSANSCLASSINFOA;
- {$endif}
- type
- TWSAServiceClassInfoA = record
- lpServiceClassId : LPGUID;
- lpszServiceClassName : PChar;
- dwCount : DWORD;
- lpClassInfos : LPWSANSCLASSINFOA;
- end;
- PWSASERVICECLASSINFOA = ^TWSAServiceClassInfoA;
- LPWSASERVICECLASSINFOA = ^TWSAServiceClassInfoA;
- TWSAServiceClassInfoW = record
- lpServiceClassId : LPGUID;
- lpszServiceClassName : PWideChar;
- dwCount : DWORD;
- lpClassInfos : LPWSANSCLASSINFOW;
- end;
- PWSASERVICECLASSINFOW = ^TWSAServiceClassInfoW;
- LPWSASERVICECLASSINFOW = ^TWSAServiceClassInfoW;
- {$ifdef UNICODE}
- type
- TWSASERVICECLASSINFO = TWSASERVICECLASSINFOW;
- PWSASERVICECLASSINFO = PWSASERVICECLASSINFOW;
- LPWSASERVICECLASSINFO = LPWSASERVICECLASSINFOW;
- {$else}
- type
- TWSASERVICECLASSINFO = TWSASERVICECLASSINFOA;
- PWSASERVICECLASSINFO = PWSASERVICECLASSINFOA;
- LPWSASERVICECLASSINFO = LPWSASERVICECLASSINFOA;
- {$endif}
- type
- TWSANAMESPACE_INFOA = record
- NSProviderId : TGUID;
- dwNameSpace : DWORD;
- fActive : BOOL;
- dwVersion : DWORD;
- lpszIdentifier: PChar;
- end;
- PWSANAMESPACE_INFOA = ^TWSANAMESPACE_INFOA;
- LPWSANAMESPACE_INFOA = ^TWSANAMESPACE_INFOA;
- TWSANAMESPACE_INFOW = record
- NSProviderId : TGUID;
- dwNameSpace : DWORD;
- fActive : BOOL;
- dwVersion : DWORD;
- lpszIdentifier: PWideChar;
- end;
- PWSANAMESPACE_INFOW = ^TWSANAMESPACE_INFOW;
- LPWSANAMESPACE_INFOW = ^TWSANAMESPACE_INFOW;
- {$ifdef UNICODE}
- type
- TWSANAMESPACE_INFO = TWSANAMESPACE_INFOW;
- PWSANAMESPACE_INFO = PWSANAMESPACE_INFOW;
- LPWSANAMESPACE_INFO = LPWSANAMESPACE_INFOW;
- {$else}
- type
- TWSANAMESPACE_INFO = TWSANAMESPACE_INFOA;
- PWSANAMESPACE_INFO = PWSANAMESPACE_INFOA;
- LPWSANAMESPACE_INFO = LPWSANAMESPACE_INFOA;
- {$endif}
- { WinSock 2 extensions -- data types for the condition function in
- WSAAccept() and overlapped I/O completion routine. }
- type
- TWSAOVERLAPPED_COMPLETION_ROUTINE =
- function (dwError,cbTransferred : longint;
- lpOverlapped : PWSAOVERLAPPED;
- dwFlags : longint) : longint;
- {$ifdef netware} cdecl; {$else} stdcall; {$endif}
- TCONDITIONPROC =
- function (lpCallerId, lpCallerData : PWSABUF;
- lpSQOS, lpGQOS : PQOS;
- lpCalleeId, lpCalleeData : PWSABUF;
- g : PGROUP;
- dwCallbackData : dword) : longint;
- {$ifdef netware} cdecl; {$else} stdcall; {$endif}
- {--------------------------------------------------------------------}
- {netware extensions from ws2nlm.h}
- {$ifdef netware}
- { New Address Types }
- const
- AF_INET_ACP = 25;
- AF_IPX_ACP = 26;
- AF_ACP = 27;
- { NetWare SSL Ioctls }
- const
- SECURITY_PROTOCOL_SSL = 1;
- SECURITY_PROTOCOL_TLS = 2;
- { There are three interesting authentication types }
- { CLIENT - Client initiates a SSL connection. }
- { SERVER - Listener set up to listen for incoming SSL conns, (Server sends it's cert during auth) }
- { MUTUAL is SSL Server requesting client authentication, (Server asks for client cert inaddition to sending it's cert) }
- { optval is a DWORD defined as }
- const
- MUTUAL = $00000002;
- { System flags not defined in NetWare }
- const
- INFINITE = $FFFFFFFF;
- WAIT_OBJECT_0 = 0;
- {Various Types that may not be defined }
- { }
- { }
- { Predefined Value Types. }
- { }
- { No value type }
- const
- REG_NONE = 0;
- REG_SZ = 1;
- REG_EXPAND_SZ = 2;
- REG_BINARY = 3;
- REG_DWORD = 4;
- REG_DWORD_LITTLE_ENDIAN = 4;
- REG_DWORD_BIG_ENDIAN = 5;
- REG_LINK = 6;
- REG_MULTI_SZ = 7;
- REG_RESOURCE_LIST = 8;
- REG_FULL_RESOURCE_DESCRIPTOR = 9;
- REG_RESOURCE_REQUIREMENTS_LIST = 10;
- ERROR_INVALID_HANDLE = 6;
- ERROR_NOT_ENOUGH_MEMORY = 8;
- ERROR_INVALID_PARAMETER = 87;
- ERROR_IO_PENDING = 997;
- ERROR_OPERATION_ABORTED = 995;
- ERROR_IO_INCOMPLETE = 996;
- { connect timeout }
- const
- SO_CONNTIMEO = $1009;
- { NetWare Fast Accept and Recv option structures }
- { Fast Recv also has a cleanup routine returned. }
- type
- LPFASTACCEPT_COMPLETION_ROUTINE = longint;
- LPFASTRECV_COMPLETION_ROUTINE = longint;
- TFASTACCEPT_OP = record
- acceptHandler : LPFASTACCEPT_COMPLETION_ROUTINE;
- arg : pointer;
- end;
- LPFAST_ACCEPT_OPT = ^TFASTACCEPT_OP;
- PFAST_ACCEPT_OPT = ^TFASTACCEPT_OP;
- TFASTRECV_OP = record
- recvHandler : LPFASTRECV_COMPLETION_ROUTINE;
- Arg : pointer;
- end;
- LPFAST_RECV_OPT = ^TFASTRECV_OP;
- PFAST_RECV_OPT = ^TFASTRECV_OP;
- { Winsock 2 applications that want to use SSL need to define WS_SSL }
- type
- time_t = dword;
- { Secure Sockets Layer - needed until Winsock SDK supplies ssl header file. }
- { Taken from Winsock 2 protocol Annex for SSL Security Protocol. Unsupported }
- { options are labeled "not supported". }
- { This value is the SSL protocol tag and WSAIoctl dwIoControlCode
- "T" value. }
- const
- _SO_SSL = (2 shl 27) or ($73 shl 16);
- {
- These values are used to form the WSAIoctl dwIoControlCode
- "Code" value.
- }
- _SO_SSL_FLAGS = $01;
- _SO_SSL_CIPHERS = $02;
- _SO_SSL_SERVER = $04;
- { not supported }
- _SO_SSL_AUTH_CERT_HOOK = $08;
- { not supported }
- _SO_SSL_RSA_ENCRYPT_HOOK = $10;
- { not supported }
- _SO_SSL_RSA_DECRYPT_HOOK = $20;
- { _SO_SSL_CLIENT has been changed from 0x03 to 0x80 to avoid bitwise }
- { conflicts with _SO_SSL_CIPHERS _SO_SSL_FLAGS. }
- _SO_SSL_CLIENT = $80;
- { Actual SSL Ioctl commands }
- SO_SSL_GET_FLAGS = (IOC_IN or _SO_SSL) or _SO_SSL_FLAGS;
- SO_SSL_SET_FLAGS = (IOC_OUT or _SO_SSL) or _SO_SSL_FLAGS;
- SO_SSL_GET_CIPHERS = (IOC_IN or _SO_SSL) or _SO_SSL_CIPHERS;
- {not supported }
- SO_SSL_SET_CIPHERS = (IOC_OUT or _SO_SSL) or _SO_SSL_CIPHERS;
- SO_SSL_GET_CLIENT = (IOC_IN or _SO_SSL) or _SO_SSL_CLIENT;
- SO_SSL_SET_CLIENT = (IOC_OUT or _SO_SSL) or _SO_SSL_CLIENT;
- SO_SSL_GET_SERVER = (IOC_IN or _SO_SSL) or _SO_SSL_SERVER;
- SO_SSL_SET_SERVER = (IOC_OUT or _SO_SSL) or _SO_SSL_SERVER;
- {not supported }
- SO_SSL_GET_AUTH_CERT_HOOK = (IOC_IN or _SO_SSL) or _SO_SSL_AUTH_CERT_HOOK;
- {not supported }
- SO_SSL_SET_AUTH_CERT_HOOK = (IOC_OUT or _SO_SSL) or _SO_SSL_AUTH_CERT_HOOK;
- {not supported }
- SO_SSL_GET_RSA_ENCRYPT_HOOK = (IOC_IN or _SO_SSL) or _SO_SSL_RSA_ENCRYPT_HOOK;
- {not supported }
- SO_SSL_SET_RSA_ENCRYPT_HOOK = (IOC_OUT or _SO_SSL) or _SO_SSL_RSA_ENCRYPT_HOOK;
- {not supported }
- SO_SSL_GET_RSA_DECRYPT_HOOK = (IOC_IN or _SO_SSL) or _SO_SSL_RSA_DECRYPT_HOOK;
- {not supported }
- SO_SSL_SET_RSA_DECRYPT_HOOK = (IOC_OUT or _SO_SSL) or _SO_SSL_RSA_DECRYPT_HOOK;
- SO_SSL_ENABLE = $001;
- SO_SSL_SERVER = $002;
- SO_SSL_AUTH_CLIENT = $004;
- {not supported }
- SO_SSL_ACCEPT_WEAK = $008;
- type
- Tsslcipheropts = record
- n : longint;
- specs : array[0..2] of char;
- end;
- Tsslclientopts = record
- cert : PChar;
- certlen : longint;
- sidtimeout : time_t;
- sidentries : longint;
- siddir : PChar;
- end;
- Tsslserveropts = record
- cert : PChar;
- certlen : longint;
- sidtimeout : time_t;
- sidentries : longint;
- siddir : PChar;
- end;
- {not suppported }
- {Tsslauthcertopts = record
- _type : longint;
- func : function (arg:pointer; cert:Pchar; len:longint):longint;cdecl;
- arg : pointer;
- end;}
- {not supported }
- const
- SSL_ACK_OK = 1;
- {not supported }
- SSL_ACH_WEAK_OK = 2;
- {not supported }
- SSL_ACH_LONG_DATA = 3;
- {not supported }
- SSL_ACH_BAD_DATA = 4;
- {not supported }
- SSL_ACH_BAD_SIG = 5;
- {not supported }
- SSL_ACH_CERT_EXPIRED = 6;
- {not suppported }
- type
- sslrsaencrypthook = record
- func : function (arg:pointer; blockType:longint; dest:Pchar; destlen:Plongint; src:Pchar;
- srclen:longint):longint; cdecl;
- arg : pointer;
- end;
- {not supported }
- const
- SSL_REH_OK = 0;
- {not supported }
- SSL_REH_BAD_TYPE = 1;
- {not supported }
- SSL_REH_BAD_LEN = 2;
- {not suppported }
- type
- Tsslrsadecrypthook = record
- func : function (arg:pointer; blockType:longint; dest:Pchar; destlen:Plongint; src:Pchar;
- srclen:longint):longint; cdecl;
- arg : pointer;
- end;
- Psslrsadecrypthook = ^Tsslrsadecrypthook;
- {not supported }
- const
- SSL_RDH_OK = 0;
- {not supported }
- SSL_RDH_BAD_TYPE = 1;
- {not supported }
- SSL_RDH_BAD_LEN = 2;
- { TLS options }
- { Secure Sockets Layer - needed until Winsock SDK supplies ssl header file. }
- { Taken from Winsock 2 protocol Annex for SSL Security Protocol. Unsupported }
- { options are labeled "not supported". }
- {
- This value is the SSL protocol tag and WSAIoctl dwIoControlCode
- "T" value. This value is unique to distinguish a TLS Ioctl from an SSL
- Ioctl due to different structure definitions.
- }
- _SO_TLS = (2 shl 27) or ($74 shl 16);
- {
- These values are used to form the WSAIoctl dwIoControlCode
- "Code" value.
- }
- _SO_TLS_FLAGS = $01;
- _SO_TLS_CIPHERS = $02;
- _SO_TLS_SERVER = $04;
- { not supported }
- _SO_TLS_AUTH_CERT_HOOK = $08;
- { not supported }
- _SO_TLS_RSA_ENCRYPT_HOOK = $10;
- { not supported }
- _SO_TLS_RSA_DECRYPT_HOOK = $20;
- _SO_TLS_CERT = $40;
- { _SO_TLS_CLIENT has been changed from 0x03 to 0x80 to avoid bitwise }
- { conflicts with _SO_TLS_CIPHERS _SO_TLS_FLAGS. }
- _SO_TLS_CLIENT = $80;
- {
- Actual TLS Ioctl commands
- }
- SO_TLS_GET_FLAGS = (IOC_IN or _SO_TLS) or _SO_TLS_FLAGS;
- SO_TLS_SET_FLAGS = (IOC_OUT or _SO_TLS) or _SO_TLS_FLAGS;
- SO_TLS_GET_CIPHERS = (IOC_IN or _SO_TLS) or _SO_TLS_CIPHERS;
- {not supported }
- SO_TLS_SET_CIPHERS = (IOC_OUT or _SO_TLS) or _SO_TLS_CIPHERS;
- SO_TLS_GET_CLIENT = (IOC_IN or _SO_TLS) or _SO_TLS_CLIENT;
- SO_TLS_SET_CLIENT = (IOC_OUT or _SO_TLS) or _SO_TLS_CLIENT;
- SO_TLS_GET_SERVER = (IOC_IN or _SO_TLS) or _SO_TLS_SERVER;
- SO_TLS_SET_SERVER = (IOC_OUT or _SO_TLS) or _SO_TLS_SERVER;
- SO_TLS_GET_CERT = (IOC_IN or _SO_TLS) or _SO_TLS_CERT;
- {not supported }
- SO_TLS_GET_AUTH_CERT_HOOK = (IOC_IN or _SO_TLS) or _SO_TLS_AUTH_CERT_HOOK;
- {not supported }
- SO_TLS_SET_AUTH_CERT_HOOK = (IOC_OUT or _SO_TLS) or _SO_TLS_AUTH_CERT_HOOK;
- {not supported }
- SO_TLS_GET_RSA_ENCRYPT_HOOK = (IOC_IN or _SO_TLS) or _SO_TLS_RSA_ENCRYPT_HOOK;
- {not supported }
- SO_TLS_SET_RSA_ENCRYPT_HOOK = (IOC_OUT or _SO_TLS) or _SO_TLS_RSA_ENCRYPT_HOOK;
- {not supported }
- SO_TLS_GET_RSA_DECRYPT_HOOK = (IOC_IN or _SO_TLS) or _SO_TLS_RSA_DECRYPT_HOOK;
- {not supported }
- SO_TLS_SET_RSA_DECRYPT_HOOK = (IOC_OUT or _SO_TLS) or _SO_TLS_RSA_DECRYPT_HOOK;
- SO_TLS_ENABLE = $0001;
- SO_TLS_SERVER = $0002;
- SO_TLS_AUTH_CLIENT = $0004;
- {not supported }
- SO_TLS_ACCEPT_WEAK = $0008;
- SO_TLS_MAP_DISABLE = $0010;
- SO_TLS_MAP_IDENTITY = $0020;
- SO_TLS_BLIND_ACCEPT = $0040;
- SO_TLS_INTERACTIVE_ACCEPT = $0080;
- type
- Ttlscipheropts = record
- n : longint;
- specs : array[0..2] of char;
- end;
- Ptlscipheropts = ^Ttlscipheropts;
- Ttlsclientopts = record
- wallet : PWideChar; // ^unicode;
- walletlen : longint;
- sidtimeout : time_t;
- sidentries : longint;
- siddir : PChar; // ^char;
- options : pointer;
- end;
- Ptlsclientopts = ^Ttlsclientopts;
- Ttlsserveropts = record
- wallet : PWideChar; // ^unicode;
- walletlen : longint;
- sidtimeout : time_t;
- sidentries : longint;
- siddir : PChar; // ^char;
- options : pointer;
- end;
- Ptlsserveropts = ^Ttlsserveropts;
- {wallet content provider e.g. PFX, KMO, DER. }
- {alias for private key in wallet to be used }
- { not used for anything but pfx wallet provider }
- {number of elements in the array }
- {array of trusted root names }
- {number of elements in the array }
- {reserved to set ciphers }
- {reserved for CRL }
- {reserved for CRL len. }
- Tnwtlsopts = record
- walletProvider : PWideChar; //^unicode;
- keysList : PPWideChar; // ^^unicode;
- numElementsInKeyList : longint;
- TrustedRootList : PPWideChar; // ^^unicode;
- numElementsInTRList : longint;
- reservedforfutureuse : pointer;
- reservedforfutureCRL : pointer;
- reservedforfutureCRLLen : longint;
- reserved1 : pointer;
- reserved2 : pointer;
- reserved3 : pointer;
- end;
- Pnwtlsopts=^Tnwtlsopts;
- {not suppported }
- {tlsauthcertopts = record
- _type : longint;
- func : function (arg:pointer; cert:Pchar; len:longint):longint; cdecl;
- arg : pointer;
- end;}
- {not supported }
- const
- TLS_ACK_OK = 1;
- {not supported }
- TLS_ACH_WEAK_OK = 2;
- {not supported }
- TLS_ACH_LONG_DATA = 3;
- {not supported }
- TLS_ACH_BAD_DATA = 4;
- {not supported }
- TLS_ACH_BAD_SIG = 5;
- {not supported }
- TLS_ACH_CERT_EXPIRED = 6;
- {not suppported }
- type
- Ttlsrsaencrypthook = record
- func : function (arg:pointer; blockType:longint; dest:Pchar; destlen:Plongint; src:Pchar;
- srclen:longint):longint; cdecl;
- arg : pointer;
- end;
- Ptlsrsaencrypthook=^Ttlsrsaencrypthook;
- {not supported }
- const
- TLS_REH_OK = 0;
- {not supported }
- TLS_REH_BAD_TYPE = 1;
- {not supported }
- TLS_REH_BAD_LEN = 2;
- {not suppported }
- type
- Ttlsrsadecrypthook = record
- func : function (arg:pointer; blockType:longint; dest:Pchar; destlen:Plongint; src:Pchar;
- srclen:longint):longint; cdecl;
- arg : pointer;
- end;
- Ptlsrsadecrypthook=^Ttlsrsadecrypthook;
- {not supported }
- const
- TLS_RDH_OK = 0;
- {not supported }
- TLS_RDH_BAD_TYPE = 1;
- {not supported }
- TLS_RDH_BAD_LEN = 2;
- type
- Ttlscert = record
- cert : PChar;
- certlen : longint;
- end;
- Ptlscert = ^Ttlscert;
- const SIO_RAWCALLBACKS = $1ADD0002;
- SIO_WORKTODOCALLBACKS = $1ADD0004;
- SIO_FASTACCEPTCALLBACK = $1ADD0008;
- SIO_FASTRECVCALLBACK = $1ADD000C;
- SIO_RCVFULLMSG = $1ADD0010;
- SIO_SSL_CRYPTFILE = $1ADD0010;
- SIO_SSL_AUTHTYPE = $1ADD0020;
- SIO_SSL_CONVERT = $1ADD0040;
- SKTS_RAWCALLBACKS = $40000000;
- SKTS_WORKTODOCALLBACKS = $20000000;
- WAIT_ABANDONED = $00000080;
- WAIT_TIMEOUT = $00000102;
- WAIT_FAILED = $FFFFFFFF;
- MAXIMUM_WAIT_OBJECTS = 64;
- WAIT_IO_COMPLETION = $000000C0;
- { This file contains proposed extensions to the Winsock 2 specification to }
- { support Novell's implementation of namespace providers. }
- {___[ Manifest constants ]________________________________________________________________________ }
- { Proposed output flag for deregistered services }
- const
- RESULT_IS_DEREGISTERED = $0002;
- { Proposed output flag for containers }
- RESULT_IS_CONTAINER = $0004;
- { Values used to indicate an attribute list in the blob }
- { blob contains ASCII strings }
- WS_ATTRLIST_ASCII = $b10bea1a;
- { blob contains UNICODE strings }
- WS_ATTRLIST_UNICODE = $b10bea10;
- { Name Spaces }
- { Extends definitions in WINSOCK2.H }
- NS_BINDERY = 4;
- NS_SLP = 5;
- { Predefined BLOB Value Types }
- { Extends Predefined Value Types in winnt.h }
- { }
- {#define REG_SZ ( 1 ) // Unicode NULL terminated string }
- {#define REG_BINARY ( 3 ) // Free form binary }
- {#define REG_DWORD ( 4 ) // 32-bit number }
- { Boolian value; TRUE or FALSE }
- REG_BOOL = 11;
- { Keyword with no value }
- REG_KEYWORD = 12;
- {___[ Type definitions ]__________________________________________________________________________ }
- type
- TWSAATTRINFO = TWSANSCLASSINFO;
- LPWSAATTRINFO = ^TWSAATTRINFO;
- PWSAATTRINFO = ^TWSAATTRINFO;
- { Structure of a blob containing an attribute list }
- { Identifies the blob as an attribute list }
- { Number of attributes present }
- { Pointer to attribute array }
- TWSABlobAttrList = record
- dwSignature : DWORD;
- dwAttrCount : DWORD;
- lpAttributes : PWSAATTRINFO;
- end;
- LPWSABLOBATTRLIST = ^TWSABlobAttrList;
- PWSABLOBATTRLIST = ^TWSABlobAttrList;
- {$endif netware}
- {--------------------------------------------------------------------}
- { Socket function prototypes }
- const
- {$ifndef netware}
- winsockdll = 'ws2_32.dll';
- _fn_bind = 'bind';
- _fn_closesocket = 'closesocket';
- _fn_ioctlsocket = 'ioctlsocket';
- _fn_getpeername = 'getpeername';
- _fn_getsockopt = 'getsockopt';
- _fn_htonl = 'htonl';
- _fn_htons = 'htons';
- _fn_inet_addr = 'inet_addr';
- _fn_inet_ntoa = 'inet_ntoa';
- _fn_listen = 'listen';
- _fn_recv = 'recv';
- _fn_recvfrom = 'recvfrom';
- _fn_select = 'select';
- _fn_send = 'send';
- _fn_sendto = 'sendto';
- _fn_setsockopt = 'setsockopt';
- _fn_shutdown = 'shutdown';
- _fn_socket = 'socket';
- _fn_gethostbyaddr = 'gethostbyaddr';
- _fn_gethostbyname = 'gethostbyname';
- _fn_gethostname = 'gethostname';
- _fn_getservbyport = 'getservbyport';
- _fn_getservbyname = 'getservbyname';
- _fn_getprotobynumber = 'getprotobynumber';
- _fn_getprotobyname = 'getprotobyname';
- {$else}
- winsockdll = 'ws2_32.nlm';
- {for netware the function names for the non WSA-functions are
- different because the names are already present from bsd-sockets}
- _fn_bind = 'WS2_32_bind';
- _fn_closesocket = 'WS2_32_closesocket';
- _fn_ioctlsocket = 'WS2_32_ioctlsocket';
- _fn_getpeername = 'WS2_32_getpeername';
- _fn_getsockopt = 'WS2_32_getsockopt';
- _fn_htonl = 'WS2_32_htonl';
- _fn_htons = 'WS2_32_htons';
- _fn_inet_addr = 'WS2_32_inet_addr';
- _fn_inet_ntoa = 'WS2_32_inet_ntoa';
- _fn_listen = 'WS2_32_listen';
- _fn_recv = 'WS2_32_recv';
- _fn_recvfrom = 'WS2_32_recvfrom';
- _fn_select = 'WS2_32_select';
- _fn_send = 'WS2_32_send';
- _fn_sendto = 'WS2_32_sendto';
- _fn_setsockopt = 'WS2_32_setsockopt';
- _fn_shutdown = 'WS2_32_shutdown';
- _fn_socket = 'WS2_32_socket';
- _fn_gethostbyaddr = 'WS2_32_gethostbyaddr';
- _fn_gethostbyname = 'WS2_32_gethostbyname';
- _fn_gethostname = 'WS2_32_gethostname';
- _fn_getservbyport = 'WS2_32_getservbyport';
- _fn_getservbyname = 'WS2_32_getservbyname';
- _fn_getprotobynumber = 'WS2_32_getprotobynumber';
- _fn_getprotobyname = 'WS2_32_getprotobyname';
- {$endif}
- {$ifdef netware}
- function accept(s:TSocket; addr: PSockAddr; addrlen : ptOS_INT) : TSocket;
- function accept(s:TSocket; addr: PSockAddr; var addrlen : tOS_INT) : TSocket;
- {$else}
- function accept(s:TSocket; addr: PSockAddr; addrlen : ptOS_INT) : TSocket;stdcall;external winsockdll name 'accept';
- function accept(s:TSocket; addr: PSockAddr; var addrlen : tOS_INT) : TSocket;stdcall;external winsockdll name 'accept';
- {$endif}
- function bind(s:TSocket; addr: PSockaddr;namelen:tOS_INT):tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name _fn_Bind;
- function bind(s:TSocket; var addr: TSockaddr;namelen:tOS_INT):tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name _fn_Bind;
- function closesocket(s:TSocket):tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name _fn_closesocket;
- {$ifdef netware}
- function connect(s:TSocket; addr:PSockAddr; namelen:tOS_INT):tOS_INT;
- function connect(s:TSocket; var name:TSockAddr; namelen:tOS_INT):tOS_INT;
- {$else}
- function connect(s:TSocket; addr:PSockAddr; namelen:tOS_INT):tOS_INT;
- stdcall;external winsockdll name 'connect';
- function connect(s:TSocket; var name:TSockAddr; namelen:tOS_INT):tOS_INT;
- stdcall;external winsockdll name 'connect';
- {$endif}
- function ioctlsocket(s:TSocket; cmd:longint; var arg:u_long):tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name _fn_ioctlsocket; { really a c-long }
- function ioctlsocket(s:TSocket; cmd:longint; argp:pu_long):tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name _fn_ioctlsocket; { really a c-long }
- function getpeername(s:TSocket; var name:TSockAddr;var namelen:tOS_INT):tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name _fn_getpeername;
- function getsockname(s:TSocket; var name:TSockAddr;var namelen:tOS_INT):tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name _fn_getpeername;
- function getsockopt(s:TSocket; level:tOS_INT; optname:tOS_INT; optval:pchar;var optlen:tOS_INT):tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name _fn_getsockopt;
- function getsockopt(s:TSocket; level:tOS_INT; optname:tOS_INT;var optval;var optlen:tOS_INT):tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name _fn_getsockopt;
- function htonl(hostlong:u_long):u_long;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name _fn_htonl;
- function htons(hostshort:u_short):u_short;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name _fn_htons;
- function inet_addr(cp:pchar):cardinal;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name _fn_inet_addr;
- function inet_ntoa(i : TInAddr):pchar;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name _fn_inet_ntoa;
- function listen(s:TSocket; backlog:tOS_INT):tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name _fn_listen;
- { are ntohl and ntohs macros or bsd-functions (for netware) ?? }
- {$ifndef netware}
- function ntohl(netlong:u_long):u_long;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name 'ntohl';
- function ntohs(netshort:u_short):u_short;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name 'ntohs';
- {$endif}
- function recv(s:TSocket;buf:pchar; len:tOS_INT; flags:tOS_INT):tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name _fn_recv;
- function recv(s:TSocket;var buf; len:tOS_INT; flags:tOS_INT):tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name _fn_recv;
- function recvfrom(s:TSocket;buf:pchar; len:tOS_INT; flags:tOS_INT;from:PSockAddr; fromlen:ptOS_INT):tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name _fn_recvfrom;
- function recvfrom(s:TSocket;var buf; len:tOS_INT; flags:tOS_INT;var from:TSockAddr; var fromlen:tOS_INT):tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name _fn_recvfrom;
- function select(nfds:tOS_INT; readfds,writefds,exceptfds : PFDSet;timeout: PTimeVal):tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}
- external winsockdll name _fn_select;
- function send(s:TSocket;const buf; len:tOS_INT; flags:tOS_INT):tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}
- external winsockdll name _fn_send;
- function sendto(s:TSocket; buf:pchar; len:tOS_INT; flags:tOS_INT;var toaddr:TSockAddr; tolen:tOS_INT):tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}
- external winsockdll name _fn_sendto;
- function sendto(s:TSocket; const buf; len:tOS_INT; flags:tOS_INT;var toaddr:TSockAddr; tolen:tOS_INT):tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}
- external winsockdll name _fn_sendto;
-
- function setsockopt(s:TSocket; level:tOS_INT; optname:tOS_INT; optval:pchar; optlen:tOS_INT):tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}
- external winsockdll name _fn_setsockopt;
- function setsockopt(s:TSocket; level:tOS_INT; optname:tOS_INT; var optval; optlen:tOS_INT):tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}
- external winsockdll name _fn_setsockopt;
- function setsockopt(s:TSocket; level:tOS_INT; optname:tOS_INT; optval:pointer; optlen:tOS_INT):tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}
- external winsockdll name _fn_setsockopt;
- function shutdown(s:TSocket; how:tOS_INT):tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}
- external winsockdll name _fn_shutdown;
- function socket(af:tOS_INT; t:tOS_INT; protocol:tOS_INT):TSocket;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}
- external winsockdll name _fn_socket;
- { Database function prototypes }
- function gethostbyaddr(addr:pchar; len:tOS_INT; t:tOS_INT): PHostEnt;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name _fn_gethostbyaddr;
- function gethostbyname(name:pchar):PHostEnt;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name _fn_gethostbyname;
- function gethostname(name:pchar; namelen:tOS_INT):tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name _fn_gethostname;
- function getservbyport(port:tOS_INT; proto:pchar):PServEnt;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name _fn_getservbyport;
- function getservbyname(name:pchar; proto:pchar):PServEnt;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name _fn_getservbyname;
- function getprotobynumber(proto:tOS_INT):PProtoEnt;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name _fn_getprotobynumber;
- function getprotobyname(name:pchar):PProtoEnt;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name _fn_getprotobyname;
- { Microsoft Windows Extension function prototypes }
- function WSAStartup(wVersionRequired:word;var WSAData:TWSADATA):tOS_INT;
- function WSACleanup:tOS_INT;
- procedure WSASetLastError(iError:tOS_INT);{$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name 'WSASetLastError';
- function WSAGetLastError:tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name 'WSAGetLastError';
- {$ifndef netware}
- //function WSAIsBlocking:BOOL;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name 'WSAIsBlocking';
- // function WSAUnhookBlockingHook:tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name 'WSAUnhookBlockingHook';
- // function WSASetBlockingHook(lpBlockFunc:TFarProc):TFarProc;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name 'WSASetBlockingHook';
- {$endif}
- function WSACancelBlockingCall:tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name 'WSACancelBlockingCall';
- {$ifndef netware}
- function WSAAsyncGetServByName(hWnd:HWND; wMsg:u_int; name:pchar; proto:pchar; buf:pchar;
- buflen:tOS_INT):THandle;stdcall;external winsockdll name 'WSAAsyncGetServByName';
- function WSAAsyncGetServByPort(hWnd:HWND; wMsg:u_int; port:tOS_INT; proto:pchar; buf:pchar;
- buflen:tOS_INT):THandle;stdcall;external winsockdll name 'WSAAsyncGetServByPort';
- function WSAAsyncGetProtoByName(hWnd:HWND; wMsg:u_int; name:pchar; buf:pchar; buflen:tOS_INT):THandle;stdcall;
- external winsockdll name 'WSAAsyncGetProtoByName';
- function WSAAsyncGetProtoByNumber(hWnd:HWND; wMsg:u_int; number:tOS_INT; buf:pchar; buflen:tOS_INT):THandle;stdcall;
- external winsockdll name 'WSAAsyncGetProtoByNumber';
- function WSAAsyncGetHostByName(hWnd:HWND; wMsg:u_int; name:pchar; buf:pchar; buflen:tOS_INT):THandle;stdcall;
- external winsockdll name 'WSAAsyncGetHostByName';
- function WSAAsyncGetHostByAddr(hWnd:HWND; wMsg:u_int; addr:pchar; len:tOS_INT; t:tOS_INT;
- buf:pchar; buflen:tOS_INT):THandle;stdcall;
- external winsockdll name 'WSAAsyncGetHostByAddr';
- function WSACancelAsyncRequest(hAsyncTaskHandle:THandle):tOS_INT;stdcall;
- external winsockdll name 'WSACancelAsyncRequest';
- function WSAAsyncSelect(s:TSocket; hWnd:HWND; wMsg:u_int; lEvent:longint):tOS_INT; stdcall;
- external winsockdll name 'WSAAsyncSelect';
- function WSARecvEx(s:TSocket;var buf; len:tOS_INT; flags:ptOS_INT):tOS_INT;stdcall;
- external winsockdll name 'WSARecvEx';
- {$endif}
- function __WSAFDIsSet(s:TSocket; var FDSet:TFDSet):Bool;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}
- external winsockdll name '__WSAFDIsSet';
- function __WSAFDIsSet_(s:TSocket; var FDSet:TFDSet):tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}
- external winsockdll name '__WSAFDIsSet';
- function FD_ISSET(s:TSocket; var FDSet:TFDSet):Bool;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}
- external winsockdll name '__WSAFDIsSet';
- {$ifndef netware}
- function TransmitFile(hSocket:TSocket; hFile:THandle; nNumberOfBytesToWrite:dword;
- nNumberOfBytesPerSend:DWORD; lpOverlapped:POverlapped;
- lpTransmitBuffers:PTransmitFileBuffers; dwReserved:dword):Bool;stdcall;
- external winsockdll name 'TransmitFile';
- function AcceptEx(sListenSocket,sAcceptSocket:TSocket;
- lpOutputBuffer:Pointer; dwReceiveDataLength,dwLocalAddressLength,
- dwRemoteAddressLength:dword; var lpdwBytesReceived:dword;
- lpOverlapped:POverlapped):Bool;stdcall;
- external winsockdll name 'AcceptEx';
- procedure GetAcceptExSockaddrs(lpOutputBuffer:Pointer;
- dwReceiveDataLength,dwLocalAddressLength,dwRemoteAddressLength:dword;
- var LocalSockaddr:TSockAddr; var LocalSockaddrLength:tOS_INT;
- var RemoteSockaddr:TSockAddr; var RemoteSockaddrLength:tOS_INT);stdcall;
- external winsockdll name 'GetAcceptExSockaddrs';
- {$endif}
- function WSAMakeSyncReply(Buflen,Error:Word):dword;
- function WSAMakeSelectReply(Event,Error:Word):dword;
- function WSAGetAsyncBuflen(Param:dword):Word;
- function WSAGetAsyncError(Param:dword):Word;
- function WSAGetSelectEvent(Param:dword):Word;
- function WSAGetSelectError(Param:dword):Word;
- procedure FD_CLR(Socket:TSocket; var FDSet:TFDSet);
- {function FD_ISSET(Socket:TSocket; var FDSet:TFDSet):Boolean;}
- procedure FD_SET(Socket:TSocket; var FDSet:TFDSet);
- procedure FD_ZERO(var FDSet:TFDSet);
- function MAKELONG(a,b : longint) : LONGINT;
- function MAKEWORD(a,b : longint) : WORD;
- { WinSock 2 API new function prototypes }
- function WSAAccept(s: TSocket; addr:PSockAddr; addrlen : ptOS_INT;
- lpfnCondition : TCONDITIONPROC;
- dwCallbackData: dword) : longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSAAccept';
- function WSAAccept(s: TSocket; addr:PSockAddr; var addrlen:longint;
- lpfnCondition : TCONDITIONPROC;
- dwCallbackData: dword) : longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSAAccept';
- function WSACloseEvent (hEvent : TWSAEVENT) : longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSACloseEvent';
- function WSAconnect (s:TSocket; var name:TSockAddr;
- namelen: tOS_INT;
- lpCallerData, lpCaleeData : PWSABUF;
- lpSQOS, lpGQOS : PQOS) : tOS_INT;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSAConnect';
- function WSAconnect (s:TSocket; name:PSockAddr;
- namelen: tOS_INT;
- lpCallerData, lpCaleeData : PWSABUF;
- lpSQOS, lpGQOS : PQOS) : tOS_INT;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSAConnect';
- {$ifndef netware}
- function WSADuplicateSocket (s:TSocket; dwProcessId:dword; lpProtoInfo: PWSAPROTOCOL_INFOA) : longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSADuplicateSocketA';
- {$endif}
- function WSAEnumNetworkEvents(s:TSocket;hEventObject:TWSAEVENT;lpNetworkEvents:PWSANETWORKEVENTS): longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSAEnumNetworkEvents';
- function WSAEnumProtocols (lpiProtocols:LPINT;
- lpProtocolBuffer:PWSAPROTOCOL_INFOA;
- var lpdwBufferLength : dword) : longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSAEnumProtocolsA';
- function WSAEventSelect(s:TSocket; hEventObject: TWSAEvent;lNetworkEvents:longint):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSAEventSelect';
- function WSAGetOverlappedResult (s:TSocket;
- lpOverlapped:PWSAOVERLAPPED;
- lpcbTransfer : LPDWORD;
- fWait : BOOL;
- lpdwFlags : LPDWORD) : longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSAGetOverlappedResult';
- function WSAGetQOSByName(s:TSocket; lpQOSName: LPWSABUF; lpQOS:PQOS) : longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSAGetQOSByName';
- function WSAHtonl(s:TSocket; hostlong:u_long;lpnetlong:pu_long):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSAHtonl';
- function WSAHtonl(s:TSocket; hostlong:u_long;var lpnetlong:u_long):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSAHtonl';
- function WSAHtons(s:TSocket; hostshort:u_short;lpnetshort:pu_short):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSAHtons';
- function WSAHtons(s:TSocket; hostshort:u_short;var lpnetshort:u_short):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSAHtons';
- function WSAIoctl(s:TSocket;dwIoControlCode:dword;
- lpvInBuffer:pointer; cbInBuffer:dword;
- lpvOutBuffer:pointer; cbOutBuffer:dword;
- lpcbBytesReturned:LPDWORD;
- lpOverlapped:PWSAOVERLAPPED;
- lpCompletionRoutine:TWSAOVERLAPPED_COMPLETION_ROUTINE):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSAIoctl';
- function WSAIoctl(s:TSocket;dwIoControlCode:dword;
- var lpvInBuffer; cbInBuffer:dword;
- var lpvOutBuffer; cbOutBuffer:dword;
- var lpcbBytesReturned:DWORD;
- lpOverlapped:PWSAOVERLAPPED;
- lpCompletionRoutine:TWSAOVERLAPPED_COMPLETION_ROUTINE):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSAIoctl';
- function WSAJoinLeaf(s:TSocket; name: PSockAddr; namelen:longint;
- lpCallerData,lpCalleeData:PWSABUF;
- lpSQOS, lpGQOS : PQOS; dwFlags:dword):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSAJoinLeaf';
- function WSANtohl(s:TSocket;netlong:u_long;lphostlong:pu_long):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSANtohl';
- function WSANtohl(s:TSocket;netlong:u_long;var hostlong:u_long):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSANtohl';
- function WSANtohs(s:TSocket;netshort:u_short;lphostshort:pu_short):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSANtohs';
- function WSANtohs(s:TSocket;netshort:u_short;var hostshort:u_short):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSANtohs';
- function WSARecv(s:TSocket;buf:pchar; dwBufferCount:dword;
- lpNumberOfBytesRecvd,lpFlags : LPDWORD;
- lpOverlapped:PWSAOVERLAPPED;
- lpCompletionRoutine:TWSAOVERLAPPED_COMPLETION_ROUTINE):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSARecv';
- function WSARecv(s:TSocket;var buf; dwBufferCount:dword;
- var lpNumberOfBytesRecvd,lpFlags : DWORD;
- lpOverlapped:PWSAOVERLAPPED;
- lpCompletionRoutine:TWSAOVERLAPPED_COMPLETION_ROUTINE):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSARecv';
- function WSARecvDisconnect(s:TSocket;lpInboundDisconnectData:PWSABUF):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSARecvDisconnect';
- function WSARecvDisconnect(s:TSocket;var InboundDisconnectData:TWSABUF):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSARecvDisconnect';
- function WSARecvFrom(s:TSocket;buf:pchar; dwBufferCount:dword;
- lpNumberOfBytesRecvd,lpFlags : LPDWORD;
- lpFrom: PSockaddr;
- lpFromlen: PDWORD;
- lpOverlapped:PWSAOVERLAPPED;
- lpCompletionRoutine:TWSAOVERLAPPED_COMPLETION_ROUTINE):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSARecvFrom';
- function WSARecvFrom(s:TSocket;var buf; dwBufferCount:dword;
- var lpNumberOfBytesRecvd,lpFlags : DWORD;
- var lpFrom: TSockaddr;
- var lpFromlen: DWORD;
- lpOverlapped:PWSAOVERLAPPED;
- lpCompletionRoutine:TWSAOVERLAPPED_COMPLETION_ROUTINE):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSARecvFrom';
- function WSAResetEvent(hEvent:TWSAEVENT):BOOL;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSAResetEvent';
- function WSASend(s:TSocket;buf:pchar;len:dword;
- NumberOfBytesSent:PDWORD; Flags:dword;
- lpOverlapped:PWSAOVERLAPPED;
- lpCompletionRoutine:TWSAOVERLAPPED_COMPLETION_ROUTINE):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSASend';
- function WSASend(s:TSocket;var buf;len:dword;
- var NumberOfBytesSent: DWORD; Flags:dword;
- lpOverlapped:PWSAOVERLAPPED;
- lpCompletionRoutine:TWSAOVERLAPPED_COMPLETION_ROUTINE):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSASend';
- function WSASendDisconnect(s:TSocket;lpOutboundDisconnectData:PWSABUF):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSASendDisconnect';
- function WSASendTo(s:TSocket;buf:pchar;len:dword;
- NumberOfBytesSent:LPDWORD;
- Flags:dword;
- lpTo: PSockaddr;
- iToLen:dword;
- lpOverlapped:PWSAOVERLAPPED;
- lpCompletionRoutine:TWSAOVERLAPPED_COMPLETION_ROUTINE):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSASendTo';
- function WSASendTo(s:TSocket;var buf;len:dword;
- var NumberOfBytesSent:DWORD;
- Flags:dword;
- var lpTo: TSockaddr;
- iToLen:dword;
- lpOverlapped:PWSAOVERLAPPED;
- lpCompletionRoutine:TWSAOVERLAPPED_COMPLETION_ROUTINE):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSASendTo';
- function WSASetEvent(hEvent:TWSAEVENT):BOOL;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSASetEvent';
- function WSASocket(af,typ,proto:tOS_INT;
- lpProtocolInfo:PWSAPROTOCOL_INFO;
- g : TGROUP; Flags:dword):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSASocketA';
- function WSAWaitForMultipleEvents(cEvents:dword;
- lphEvents:pointer; {IN const WSAEVENT FAR * lphEvents,}
- fWaitAll:BOOL; dwTimeout:dword; fAlertable:BOOL):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSAWaitForMultipleEvents';
- function WSAAddressToString(addr:PSockAddr; len:dword;
- ProtocolInfo:PWSAPROTOCOL_INFO;
- lpszAddressString:pchar;
- lpdwAddressStringLength:lpdword):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSAAddressToStringA';
- function WSAAddressToString(var addr:TSockAddr; len:dword;
- ProtocolInfo:PWSAPROTOCOL_INFO;
- lpszAddressString:pchar;
- var lpdwAddressStringLength:dword):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSAAddressToStringA';
- function WSAStringToAddress (AddressString : pchar;
- AddressFamily : longint;
- lpProtocolInfo : PWSAPROTOCOL_INFOA;
- VAR lpAddress : TSOCKADDR;
- VAR lpAddressLength: LONGINT) : longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name 'WSAStringToAddressA';
- function WSAStringToAddress (AddressString : pchar;
- AddressFamily : longint;
- lpProtocolInfo : PWSAPROTOCOL_INFOA;
- lpAddress : PSOCKADDR;
- VAR lpAddressLength: LONGINT) : longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name 'WSAStringToAddressA';
- function WSALookupServiceBegin(lpqsRestrictions:PWSAQUERYSET;
- ControlFlags:dword;lphLookup:PHandle):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name 'WSALookupServiceBeginA';
- function WSALookupServiceBegin(var Restrictions:TWSAQUERYSET;
- ControlFlags:dword;var hLookup:THandle):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name 'WSALookupServiceBeginA';
- function WSALookupServiceNext(hLookup:THandle;ControlFlags:dword;
- lpdwBufferLength:LPDWORD;
- lpqsResults:PWSAQUERYSET):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name 'WSALookupServiceNextA';
- function WSAInstallServiceClass(lpServiceClassInfo:PWSASERVICECLASSINFO):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name 'WSAInstallServiceClassA';
- function WSARemoveServiceClass(lpServiceClassId:PGUID):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name 'WSARemoveServiceClass';
- function WSAGetServiceClassInfo(lpProviderId,lpServiceClassId:PGUID;
- lpdwBufSize:LPDWORD;
- lpServiceClassInfo:PWSASERVICECLASSINFO):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name 'WSAGetServiceClassInfoA';
- function WSAGetServiceClassInfo(var ProviderId,ServiceClassId:TGUID;
- var BufSize:DWORD;
- var ServiceClassInfo:TWSASERVICECLASSINFO):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name 'WSAGetServiceClassInfoA';
- function WSAEnumNameSpaceProviders(lpdwBufferLength:LPDWORD;lpnspBuffer:PWSANAMESPACE_INFO):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name 'WSAEnumNameSpaceProvidersA';
- function WSAEnumNameSpaceProviders(var BufferLength:DWORD;var Buffer:TWSANAMESPACE_INFO):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name 'WSAEnumNameSpaceProvidersA';
- function WSAGetServiceClassNameByClassId(lpServiceClassId:PGUID;lpszServiceClassName:pchar;buflen:PDWORD):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name 'WSAGetServiceClassNameByClassIdA';
- function WSAGetServiceClassNameByClassId(var lpServiceClassId:TGUID;lpszServiceClassName:pchar;var buflen:DWORD):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name 'WSAGetServiceClassNameByClassIdA';
- function WSASetService(lpqsRegInfo:PWSAQUERYSET;essoperation:TWSAESETSERVICEOP;flags:dword):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name 'WSASetServiceA';
- {$ifndef Netware}
- function WSAProviderConfigChange(lpNotificationHandle:LPHANDLE;
- lpOverlapped:PWSAOVERLAPPED;
- lpCompletionRoutine:TWSAOVERLAPPED_COMPLETION_ROUTINE):longint;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name 'WSAProviderConfigChange';
- {$endif}
- implementation
- { was #define dname(params) def_expr }
- { argument types are unknown }
- function MAKELONG(a,b : longint) : LONGINT;
- begin
- MAKELONG:=LONGINT((WORD(a)) or ((DWORD(WORD(b))) shl 16));
- end;
- function MAKEWORD(a,b : longint) : WORD;
- begin
- MAKEWORD:=WORD((BYTE(a)) or ((WORD(BYTE(b))) shl 8));
- end;
- {
- Implementation of the helper routines
- }
- function WSAMakeSyncReply(Buflen,Error:Word):dword;
- begin
- WSAMakeSyncReply:=MakeLong(Buflen, Error);
- end;
- function WSAMakeSelectReply(Event,Error:Word):dword;
- begin
- WSAMakeSelectReply:=MakeLong(Event,Error);
- end;
- function WSAGetAsyncBuflen(Param:dword):Word;
- begin
- WSAGetAsyncBuflen:=lo(Param);
- end;
- function WSAGetAsyncError(Param:dword):Word;
- begin
- WSAGetAsyncError:=hi(Param);
- end;
- function WSAGetSelectEvent(Param:dword):Word;
- begin
- WSAGetSelectEvent:=lo(Param);
- end;
- function WSAGetSelectError(Param:dword):Word;
- begin
- WSAGetSelectError:=hi(Param);
- end;
- procedure FD_CLR(Socket:TSocket; var FDSet:TFDSet);
- var
- i : u_int;
- begin
- i:=0;
- while i<FDSet.fd_count do
- begin
- if FDSet.fd_array[i]=Socket then
- begin
- while i<FDSet.fd_count-1 do
- begin
- FDSet.fd_array[i]:=FDSet.fd_array[i+1];
- inc(i);
- end;
- dec(FDSet.fd_count);
- break;
- end;
- inc(i);
- end;
- end;
- {function FD_ISSET(Socket:TSocket; var FDSet:TFDSet):Boolean;
- begin
- FD_ISSET:=__WSAFDIsSet(Socket,FDSet);
- end;}
- procedure FD_SET(Socket:TSocket; var FDSet:TFDSet);
- var i : integer;
- begin
- if FDSet.fd_count > FD_SETSIZE then
- FDSet.fd_count := FD_SETSIZE;
- for i := 1 to FDSet.fd_count do
- if FDSet.fd_array[i-1] = Socket then exit; {this is what the c macro FD_SET does}
- if FDSet.fd_count<FD_SETSIZE then
- begin
- FDSet.fd_array[FDSet.fd_count]:=Socket;
- Inc(FDSet.fd_count);
- end;
- end;
- procedure FD_ZERO(var FDSet:TFDSet);
- var i : integer;
- begin
- for i := 0 to high (FDSet.fd_array) do
- FDSet.fd_array[i] := INVALID_SOCKET;
- FDSet.fd_count:=0;
- end;
- {$ifdef netware}
- {windows has connect and accept in ws2_32.dll, netware has not, they
- are defined as macros in ws2nlm.h }
- function connect(s:TSocket; addr:PSockAddr; namelen:tOS_INT):tOS_INT;
- begin
- connect := WSAConnect (s,addr,namelen,nil,nil,nil,nil);
- end;
- function connect(s:TSocket; var name:TSockAddr; namelen:tOS_INT):tOS_INT; //cdecl;external winsockdll name 'WSAConnect';
- begin
- connect := WSAConnect (s,name,namelen,nil,nil,nil,nil);
- end;
- function accept(s:TSocket; addr: PSockAddr; addrlen : ptOS_INT) : TSocket;
- begin
- accept := WSAAccept (s,addr,addrlen,nil,0);
- end;
- function accept(s:TSocket; addr: PSockAddr; var addrlen : tOS_INT) : TSocket;
- begin
- accept := WSAAccept (s,addr,addrlen,nil,0);
- end;
- {$endif}
- {AD 2003/03/25: Special for netware
- if WSAStartup is called more than once, bad thinks will happen
- on netware. This is not a problem under windows.
- This happens with fcl because the unit initialization of SSockets and
- resolve both calls WSAStartup, for the second startup we simply
- return success without calling the WS2_32 WSAStartup }
- function __WSAStartup(wVersionRequired:word;var WSAData:TWSADATA):tOS_INT;
- {$ifdef Netware}cdecl;{$else}stdcall;{$endif}
- external winsockdll name 'WSAStartup';
- function __WSACleanup:tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name 'WSACleanup';
- var WSAstartupData : TWSADATA;
- function WSACleanup:tOS_INT;
- begin
- if WSAstartupData.wVersion <> $ffff then
- begin
- Result := __WSACleanup;
- if Result = 0 then WSAstartupData.wVersion := $ffff;
- end else Result := WSANOTINITIALISED;
- end;
- function WSAStartup(wVersionRequired:word;var WSAData:TWSADATA):tOS_INT;
- begin
- if WSAstartupData.wVersion = $ffff then
- begin
- Result := __WSAStartup(wVersionRequired,WSAData);
- if Result = 0 then WSAstartupData := WSAData;
- Writeln (stderr,'WSAStartup called');
- end else
- begin
- result := 0;
- Writeln (stderr,'WSAStartup should be called only once !');
- end;
- end;
- initialization
- WSAstartupData.wVersion := $ffff;
- finalization
- WSACleanUp;
- end.
- {
- $Log$
- Revision 1.3 2003-10-25 23:42:35 hajny
- * THandle in sysutils common using System.THandle
- Revision 1.2 2003/03/30 12:35:43 armin
- * removed uses netware from winsock, DirectoryExists implemented
- Revision 1.1 2003/03/25 18:17:54 armin
- * support for fcl, support for linking without debug info
- * renamed winsock2 to winsock for win32 compatinility
- * new sockets unit for netware
- * changes for compiler warnings
- }
|