123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439 |
- {
- 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 have to install winsock-support (i.e. nw4wsock.exe)
- NetWare >= 5.0 contains winsock support by default
- ************************************************************************}
- {$PACKRECORDS 1}
- {$R-}
- unit winsock;
- {$mode objfpc}
- interface
- const
- {
- Default maximium number of sockets.
- this does not mean that the underlying netware
- 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 = longint;
- 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;
- 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
- n_name : ^char; // official name of net
- n_aliases : ^pchar; // alias list
- n_addrtype : SmallInt; // net address type
- n_pad1 : SmallInt; // ensure right packaging
- n_net : u_long; // network #
- 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 = longint(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}
- { 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;
- { 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 }
- REG_BOOL = 11; // Boolean value; TRUE or FALSE }
- REG_KEYWORD = 12; // Keyword with no value
- {___[ 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}
- {
- Winsock types all buffers as pchar (char *), modern POSIX does it the ANSI
- C way with pointer (void *). If the pointer overloaded version doesn't exist,
- a "pointer" will be passed to the "var" version. (bug 3142).
- So if there are var/const versions:
- - To keep ported unix code working, there must be "pointer" variants (ANSI)
- - To keep Delphi/ported C Winsock code working there must be pchar variants
- (K&R)
- IOW, there _must_ be 3 versions then: var/const, pchar and pointer}
- {$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; const 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; Const 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; Const 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;
- function ioctlsocket(s:TSocket; cmd:longint; var arg:longint):tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name _fn_ioctlsocket;
- function ioctlsocket(s:TSocket; cmd:longint; argp:pu_long):tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif}external winsockdll name _fn_ioctlsocket;
- 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; optval:pointer;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;buf:pointer; 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;buf:pointer; 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;Const 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 send(s:TSocket;buf : pchar; len:tOS_INT; flags:tOS_INT):tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name _fn_send;
- function send(s:TSocket;buf : pointer; 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;toaddr:PSockAddr; tolen:tOS_INT):tOS_INT;{$ifdef Netware}cdecl;{$else}stdcall;{$endif} external winsockdll name _fn_sendto;
- function sendto(s:TSocket; buf:pointer; len:tOS_INT; flags:tOS_INT;toaddr:PSockAddr; 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;Const 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; Const 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';
- {$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; Const 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;buf:pointer; 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;buf:pointer; 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;buf:pointer;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;buf:pointer;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);
- begin
- fillchar(FDSet,sizeof(FDSet),0);
- {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; Const 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;
- var
- oldUnloadProc : pointer;
- procedure exitProc;
- begin
- {$ifdef DEBUG_MT}
- ConsolePrintf (#13'winsock.exitProc called'#13#10);
- {$endif}
- NetwareUnloadProc := oldUnloadProc;
- WSACleanup;
- end;
- initialization
- WSAstartupData.wVersion := $ffff;
- oldUnloadProc := NetwareUnloadProc;
- NetwareUnloadProc := @exitProc;
- finalization
- WSACleanUp;
- end.
|