12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490 |
- {******************************************************************************}
- { }
- { Winsock2 API interface Unit for Object Pascal }
- { }
- { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
- { Corporation. All Rights Reserved. }
- { }
- { The original file is: winsock2.h, released June 2000. The original Pascal }
- { code is: WinSock2.pas, released December 2000. The initial developer of the }
- { Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
- { }
- { Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
- { Marcel van Brakel. All Rights Reserved. }
- { }
- { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
- { }
- { You may retrieve the latest version of this file at the Project JEDI }
- { APILIB home page, located at http://jedi-apilib.sourceforge.net }
- { }
- { The contents of this file are used with permission, subject to the Mozilla }
- { Public License Version 1.1 (the "License"); you may not use this file except }
- { in compliance with the License. You may obtain a copy of the License at }
- { http://www.mozilla.org/MPL/MPL-1.1.html }
- { }
- { Software distributed under the License is distributed on an "AS IS" basis, }
- { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
- { the specific language governing rights and limitations under the License. }
- { }
- { Alternatively, the contents of this file may be used under the terms of the }
- { GNU Lesser General Public License (the "LGPL License"), in which case the }
- { provisions of the LGPL License are applicable instead of those above. }
- { If you wish to allow use of your version of this file only under the terms }
- { of the LGPL License and not to allow others to use your version of this file }
- { under the MPL, indicate your decision by deleting the provisions above and }
- { replace them with the notice and other provisions required by the LGPL }
- { License. If you do not delete the provisions above, a recipient may use }
- { your version of this file under either the MPL or the LGPL License. }
- { }
- { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
- { }
- {******************************************************************************}
- unit JwaWinsock2;
- {$WEAKPACKAGEUNIT}
- {$HPPEMIT ''}
- {$HPPEMIT '#include "winsock2.h"'}
- {$HPPEMIT ''}
- {$I jediapilib.inc}
- interface
- uses
- JwaQos, JwaWinType, JwaWinBase, JwaWinError, JwaWinNT;
- type // TODO
- ULONG_PTR = ULONG;
- DWORD_PTR = DWORD;
- PPChar = ^PChar;
- {$NODEFINE PPChar}
- HANDLE = THandle;
- {$NODEFINE HANDLE}
- LPHANDLE = ^THandle;
- {$NODEFINE LPHANDLE}
- LPBYTE = ^BYTE;
- {$NODEFINE LPBYTE}
- LPVOID = Pointer;
- {$NODEFINE LPVOID}
- USHORT = Word;
- {$NODEFINE USHORT}
- UCHAR = Byte;
- {$NODEFINE UCHAR}
- ULONG = Cardinal;
- {$NODEFINE ULONG}
- //#include <pshpack4.h>
- {$ALIGN ON}
- // Winsock2.h -- definitions to be used with the WinSock 2 DLL and
- // WinSock 2 applications.
- //
- // This header file corresponds to version 2.2.x of the WinSock API
- // specification.
- //
- // This file includes parts which are Copyright (c) 1982-1986 Regents
- // of the University of California. All rights reserved. The
- // Berkeley Software License Agreement specifies the terms and
- // conditions for redistribution.
- //
- (*
- * Default: include function prototypes, don't include function typedefs.
- *)
- // (rom) INCL_WINSOCK_API_PROTOTYPES and INCL_WINSOCK_API_TYPEDEFS IFDEFs
- // removed because they are without meaning for Delphi.
- const
- WINSOCK_VERSION = $0202;
- {$EXTERNALSYM WINSOCK_VERSION}
- //
- // Basic system type definitions, taken from the BSD file sys/types.h.
- //
- type
- u_char = Byte;
- {$EXTERNALSYM u_char}
- u_short = Word;
- {$EXTERNALSYM u_short}
- u_int = Cardinal;
- {$EXTERNALSYM u_int}
- u_long = Cardinal;
- {$EXTERNALSYM u_long}
- u_int64 = Int64; // unsigned __int64 !! TODO For Delphi 7 ??
- {$EXTERNALSYM u_int64}
- //
- // The new type to be used in all
- // instances which refer to sockets.
- //
- type
- TSocket = Cardinal;
- //
- // Select uses arrays of SOCKETs. These macros manipulate such
- // arrays. FD_SETSIZE may be defined by the user before including
- // this file, but the default here should be >= 64.
- //
- // CAVEAT IMPLEMENTOR and USER: THESE MACROS AND TYPES MUST BE
- // INCLUDED IN WINSOCK2.H EXACTLY AS SHOWN HERE.
- //
- const
- FD_SETSIZE = 64;
- {$EXTERNALSYM FD_SETSIZE}
- type
- fd_set = record
- fd_count: u_int; // how many are SET?
- fd_array: array [0..FD_SETSIZE - 1] of TSocket; // an array of SOCKETs
- end;
- {$EXTERNALSYM fd_set}
- TFdSet = fd_set;
- PFdSet = ^fd_set;
- function __WSAFDIsSet(s: TSocket; var FDSet: TFDSet): Integer; stdcall;
- {$EXTERNALSYM __WSAFDIsSet}
- procedure FD_CLR(fd: TSocket; var fdset: TFdSet);
- {$EXTERNALSYM FD_CLR}
- procedure _FD_SET(fd: TSocket; var fdset: TFDSet);
- //{$EXTERNALSYM FD_SET}
- procedure FD_ZERO(var fdset: TFdSet);
- {$EXTERNALSYM FD_ZERO}
- function FD_ISSET(fd: TSocket; var fdset: TFdSet): Boolean;
- {$EXTERNALSYM FD_ISSET}
- //
- // Structure used in select() call, taken from the BSD file sys/time.h.
- //
- type
- timeval = record
- tv_sec: Longint; // seconds
- tv_usec: Longint; // and microseconds
- end;
- {$EXTERNALSYM timeval}
- TTimeVal = timeval;
- PTimeVal = ^timeval;
- //
- // Operations on timevals.
- //
- // NB: timercmp does not work for >= or <=.
- //
- function timerisset(const tvp: TTimeVal): Boolean;
- {$EXTERNALSYM timerisset}
- //function timercmp(const tvp, uvp: TTimeVal; cmp): Boolean;
- //{$EXTERNALSYM timercmp}
- procedure timerclear(var tvp: TTimeVal);
- {$EXTERNALSYM timerclear}
- //
- // Commands for ioctlsocket(), taken from the BSD file fcntl.h.
- //
- //
- // Ioctl's have the command encoded in the lower word,
- // and the size of any in or out parameters in the upper
- // word. The high 2 bits of the upper word are used
- // to encode the in/out status of the parameter; for now
- // we restrict parameters to at most 128 bytes.
- //
- const
- IOCPARM_MASK = $7f; // parameters must be < 128 bytes
- {$EXTERNALSYM IOCPARM_MASK}
- IOC_VOID = $20000000; // no parameters
- {$EXTERNALSYM IOC_VOID}
- IOC_OUT = $40000000; // copy out parameters
- {$EXTERNALSYM IOC_OUT}
- IOC_IN = DWORD($80000000); // copy in parameters
- {$EXTERNALSYM IOC_IN}
- IOC_INOUT = DWORD(IOC_IN or IOC_OUT);
- {$EXTERNALSYM IOC_INOUT}
- // 0x20000000 distinguishes new & old ioctl's
- function _IO(x, y: DWORD): DWORD;
- {$EXTERNALSYM _IO}
- function _IOR(x, y, t: DWORD): DWORD;
- {$EXTERNALSYM _IOR}
- function _IOW(x, y, t: DWORD): DWORD;
- {$EXTERNALSYM _IOW}
- const
- FIONREAD = IOC_OUT or ((SizeOf(u_long) and IOCPARM_MASK) shl 16) or (Ord('f') shl 8) or 127; // get # bytes to read
- {$EXTERNALSYM FIONREAD}
- FIONBIO = IOC_IN or ((SizeOf(u_long) and IOCPARM_MASK) shl 16) or (Ord('f') shl 8) or 126; // set/clear non-blocking i/o
- {$EXTERNALSYM FIONBIO}
- FIOASYNC = IOC_IN or ((SizeOf(u_long) and IOCPARM_MASK) shl 16) or (Ord('f') shl 8) or 125; // set/clear async i/o
- {$EXTERNALSYM FIOASYNC}
- // Socket I/O Controls
- SIOCSHIWAT = DWORD(IOC_IN or ((SizeOf(u_long) and IOCPARM_MASK) shl 16) or (Ord('s') shl 8) or 0); // set high watermark
- {$EXTERNALSYM SIOCSHIWAT}
- SIOCGHIWAT = IOC_OUT or ((SizeOf(u_long) and IOCPARM_MASK) shl 16) or (Ord('s') shl 8) or 1; // get high watermark
- {$EXTERNALSYM SIOCGHIWAT}
- SIOCSLOWAT = DWORD(IOC_IN or ((SizeOf(u_long) and IOCPARM_MASK) shl 16) or (Ord('s') shl 8) or 2); // set low watermark
- {$EXTERNALSYM SIOCSLOWAT}
- SIOCGLOWAT = IOC_OUT or ((SizeOf(u_long) and IOCPARM_MASK) shl 16) or (Ord('s') shl 8) or 3; // get low watermark
- {$EXTERNALSYM SIOCGLOWAT}
- SIOCATMARK = IOC_OUT or ((SizeOf(u_long) and IOCPARM_MASK) shl 16) or (Ord('s') shl 8) or 7; // at oob mark?
- {$EXTERNALSYM SIOCATMARK}
- //
- // 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).
- //
- type
- hostent = record
- h_name: PChar; // official name of host
- h_aliases: PPChar; // alias list
- h_addrtype: Smallint; // host address type
- h_length: Smallint; // length of address
- case Integer of
- 0: (h_addr_list: PPChar); // list of addresses
- 1: (h_addr: PPChar); // address, for backward compat
- end;
- {$EXTERNALSYM hostent}
- THostEnt = hostent;
- PHostEnt = ^hostent;
- //
- // It is assumed here that a network number
- // fits in 32 bits.
- //
- type
- netent = record
- n_name: PChar; // official name of net
- n_aliases: PPChar; // alias list
- n_addrtype: Smallint; // net address type
- n_net: u_long; // network #
- end;
- {$EXTERNALSYM netent}
- TNetEnt = netent;
- PNetEnt = ^netent;
- servent = record
- s_name: PChar; // official service name
- s_aliases: PPChar; // alias list
- s_port: Smallint; // port #
- s_proto: PChar; // protocol to use
- end;
- {$EXTERNALSYM servent}
- TServEnt = servent;
- PServEnt = ^servent;
- protoent = record
- p_name: PChar; // official protocol name
- p_aliases: PPChar; // alias list
- p_proto: Smallint; // protocol #
- end;
- {$EXTERNALSYM protoent}
- TProtoEnt = protoent;
- PProtoEnt = ^protoent;
- //
- // Constants and structures defined by the internet system,
- // Per RFC 790, September 1981, taken from the BSD file netinet/in.h.
- //
- //
- // Protocols
- //
- const
- IPPROTO_IP = 0; // dummy for IP
- {$EXTERNALSYM IPPROTO_IP}
- IPPROTO_HOPOPTS = 0; // IPv6 hop-by-hop options
- {$EXTERNALSYM IPPROTO_HOPOPTS}
- IPPROTO_ICMP = 1; // control message protocol
- {$EXTERNALSYM IPPROTO_ICMP}
- IPPROTO_IGMP = 2; // internet group management protocol
- {$EXTERNALSYM IPPROTO_IGMP}
- IPPROTO_GGP = 3; // gateway^2 (deprecated)
- {$EXTERNALSYM IPPROTO_GGP}
- IPPROTO_IPV4 = 4; // IPv4
- {$EXTERNALSYM IPPROTO_IPV4}
- IPPROTO_TCP = 6; // tcp
- {$EXTERNALSYM IPPROTO_TCP}
- IPPROTO_PUP = 12; // pup
- {$EXTERNALSYM IPPROTO_PUP}
- IPPROTO_UDP = 17; // user datagram protocol
- {$EXTERNALSYM IPPROTO_UDP}
- IPPROTO_IDP = 22; // xns idp
- {$EXTERNALSYM IPPROTO_IDP}
- IPPROTO_IPV6 = 41; // IPv6
- {$EXTERNALSYM IPPROTO_IPV6}
- IPPROTO_ROUTING = 43; // IPv6 routing header
- {$EXTERNALSYM IPPROTO_ROUTING}
- IPPROTO_FRAGMENT = 44; // IPv6 fragmentation header
- {$EXTERNALSYM IPPROTO_FRAGMENT}
- IPPROTO_ESP = 50; // IPsec ESP header
- {$EXTERNALSYM IPPROTO_ESP}
- IPPROTO_AH = 51; // IPsec AH
- {$EXTERNALSYM IPPROTO_AH}
- IPPROTO_ICMPV6 = 58; // ICMPv6
- {$EXTERNALSYM IPPROTO_ICMPV6}
- IPPROTO_NONE = 59; // IPv6 no next header
- {$EXTERNALSYM IPPROTO_NONE}
- IPPROTO_DSTOPTS = 60; // IPv6 destination options
- {$EXTERNALSYM IPPROTO_DSTOPTS}
- IPPROTO_ND = 77; // UNOFFICIAL net disk proto
- {$EXTERNALSYM IPPROTO_ND}
- IPPROTO_ICLFXBM = 78;
- {$EXTERNALSYM IPPROTO_ICLFXBM}
- IPPROTO_RAW = 255; // raw IP packet
- {$EXTERNALSYM IPPROTO_RAW}
- IPPROTO_MAX = 256;
- {$EXTERNALSYM IPPROTO_MAX}
- //
- // Port/socket numbers: network standard functions
- //
- IPPORT_ECHO = 7;
- {$EXTERNALSYM IPPORT_ECHO}
- IPPORT_DISCARD = 9;
- {$EXTERNALSYM IPPORT_DISCARD}
- IPPORT_SYSTAT = 11;
- {$EXTERNALSYM IPPORT_SYSTAT}
- IPPORT_DAYTIME = 13;
- {$EXTERNALSYM IPPORT_DAYTIME}
- IPPORT_NETSTAT = 15;
- {$EXTERNALSYM IPPORT_NETSTAT}
- IPPORT_FTP = 21;
- {$EXTERNALSYM IPPORT_FTP}
- IPPORT_TELNET = 23;
- {$EXTERNALSYM IPPORT_TELNET}
- IPPORT_SMTP = 25;
- {$EXTERNALSYM IPPORT_SMTP}
- IPPORT_TIMESERVER = 37;
- {$EXTERNALSYM IPPORT_TIMESERVER}
- IPPORT_NAMESERVER = 42;
- {$EXTERNALSYM IPPORT_NAMESERVER}
- IPPORT_WHOIS = 43;
- {$EXTERNALSYM IPPORT_WHOIS}
- IPPORT_MTP = 57;
- {$EXTERNALSYM IPPORT_MTP}
- //
- // Port/socket numbers: host specific functions
- //
- IPPORT_TFTP = 69;
- {$EXTERNALSYM IPPORT_TFTP}
- IPPORT_RJE = 77;
- {$EXTERNALSYM IPPORT_RJE}
- IPPORT_FINGER = 79;
- {$EXTERNALSYM IPPORT_FINGER}
- IPPORT_TTYLINK = 87;
- {$EXTERNALSYM IPPORT_TTYLINK}
- IPPORT_SUPDUP = 95;
- {$EXTERNALSYM IPPORT_SUPDUP}
- //
- // UNIX TCP sockets
- //
- IPPORT_EXECSERVER = 512;
- {$EXTERNALSYM IPPORT_EXECSERVER}
- IPPORT_LOGINSERVER = 513;
- {$EXTERNALSYM IPPORT_LOGINSERVER}
- IPPORT_CMDSERVER = 514;
- {$EXTERNALSYM IPPORT_CMDSERVER}
- IPPORT_EFSSERVER = 520;
- {$EXTERNALSYM IPPORT_EFSSERVER}
- //
- // UNIX UDP sockets
- //
- IPPORT_BIFFUDP = 512;
- {$EXTERNALSYM IPPORT_BIFFUDP}
- IPPORT_WHOSERVER = 513;
- {$EXTERNALSYM IPPORT_WHOSERVER}
- IPPORT_ROUTESERVER = 520;
- {$EXTERNALSYM IPPORT_ROUTESERVER}
- // 520+1 also used
- //
- // Ports < IPPORT_RESERVED are reserved for
- // privileged processes (e.g. root).
- //
- IPPORT_RESERVED = 1024;
- {$EXTERNALSYM IPPORT_RESERVED}
- //
- // Link numbers
- //
- IMPLINK_IP = 155;
- {$EXTERNALSYM IMPLINK_IP}
- IMPLINK_LOWEXPER = 156;
- {$EXTERNALSYM IMPLINK_LOWEXPER}
- IMPLINK_HIGHEXPER = 158;
- {$EXTERNALSYM IMPLINK_HIGHEXPER}
- //
- // Internet address (old style... should be updated)
- //
- type
- SunB = packed record
- s_b1, s_b2, s_b3, s_b4: u_char;
- end;
- {$EXTERNALSYM SunB}
- SunC = packed record
- s_c1, s_c2, s_c3, s_c4: Char;
- end;
- {$NODEFINE SunC}
- SunW = packed record
- s_w1, s_w2: u_short;
- end;
- {$EXTERNALSYM SunW}
- in_addr = record
- case Integer of
- 0: (S_un_b: SunB);
- 1: (S_un_c: SunC);
- 2: (S_un_w: SunW);
- 3: (S_addr: u_long);
- // #define s_addr S_un.S_addr // can be used for most tcp & ip code
- // #define s_host S_un.S_un_b.s_b2 // host on imp
- // #define s_net S_un.S_un_b.s_b1 // netword
- // #define s_imp S_un.S_un_w.s_w2 // imp
- // #define s_impno S_un.S_un_b.s_b4 // imp #
- // #define s_lh S_un.S_un_b.s_b3 // logical host
- end;
- {$EXTERNALSYM in_addr}
- TInAddr = in_addr;
- PInAddr = ^in_addr;
- //
- // Definitions of bits in internet address integers.
- // On subnets, the decomposition of addresses to host and net parts
- // is done according to subnet mask, not the masks here.
- //
- function IN_CLASSA(i: DWORD): Boolean;
- {$EXTERNALSYM IN_CLASSA}
- const
- IN_CLASSA_NET = DWORD($ff000000);
- {$EXTERNALSYM IN_CLASSA_NET}
- IN_CLASSA_NSHIFT = 24;
- {$EXTERNALSYM IN_CLASSA_NSHIFT}
- IN_CLASSA_HOST = $00ffffff;
- {$EXTERNALSYM IN_CLASSA_HOST}
- IN_CLASSA_MAX = 128;
- {$EXTERNALSYM IN_CLASSA_MAX}
- function IN_CLASSB(i: DWORD): Boolean;
- {$EXTERNALSYM IN_CLASSB}
- const
- IN_CLASSB_NET = DWORD($ffff0000);
- {$EXTERNALSYM IN_CLASSB_NET}
- IN_CLASSB_NSHIFT = 16;
- {$EXTERNALSYM IN_CLASSB_NSHIFT}
- IN_CLASSB_HOST = $0000ffff;
- {$EXTERNALSYM IN_CLASSB_HOST}
- IN_CLASSB_MAX = 65536;
- {$EXTERNALSYM IN_CLASSB_MAX}
- function IN_CLASSC(i: DWORD): Boolean;
- {$EXTERNALSYM IN_CLASSC}
- const
- IN_CLASSC_NET = DWORD($ffffff00);
- {$EXTERNALSYM IN_CLASSC_NET}
- IN_CLASSC_NSHIFT = 8;
- {$EXTERNALSYM IN_CLASSC_NSHIFT}
- IN_CLASSC_HOST = $000000ff;
- {$EXTERNALSYM IN_CLASSC_HOST}
- function IN_CLASSD(i: DWORD): Boolean;
- {$EXTERNALSYM IN_CLASSD}
- const
- IN_CLASSD_NET = DWORD($f0000000); // These ones aren't really
- {$EXTERNALSYM IN_CLASSD_NET}
- IN_CLASSD_NSHIFT = 28; // net and host fields, but
- {$EXTERNALSYM IN_CLASSD_NSHIFT}
- IN_CLASSD_HOST = $0fffffff; // routing needn't know.
- {$EXTERNALSYM IN_CLASSD_HOST}
- function IN_MULTICAST(i: DWORD): Boolean;
- {$EXTERNALSYM IN_MULTICAST}
- const
- INADDR_ANY = u_long($00000000);
- {$EXTERNALSYM INADDR_ANY}
- INADDR_LOOPBACK = $7f000001;
- {$EXTERNALSYM INADDR_LOOPBACK}
- INADDR_BROADCAST = u_long($ffffffff);
- {$EXTERNALSYM INADDR_BROADCAST}
- INADDR_NONE = DWORD($ffffffff);
- {$EXTERNALSYM INADDR_NONE}
- ADDR_ANY = INADDR_ANY;
- {$EXTERNALSYM ADDR_ANY}
- //
- // Socket address, internet style.
- //
- type
- sockaddr_in = record
- sin_family: Smallint;
- sin_port: u_short;
- sin_addr: in_addr;
- sin_zero: array [0..7] of Char;
- end;
- {$EXTERNALSYM sockaddr_in}
- TSockAddrIn = sockaddr_in;
- PSockAddrIn = ^sockaddr_in;
- const
- WSADESCRIPTION_LEN = 256;
- {$EXTERNALSYM WSADESCRIPTION_LEN}
- WSASYS_STATUS_LEN = 128;
- {$EXTERNALSYM WSASYS_STATUS_LEN}
- type
- WSAData = record
- wVersion: WORD;
- wHighVersion: WORD;
- szDescription: array [0..WSADESCRIPTION_LEN] of Char;
- szSystemStatus: array [0..WSASYS_STATUS_LEN] of Char;
- iMaxSockets: Word;
- iMaxUdpDg: Word;
- lpVendorInfo: PChar;
- end;
- {$EXTERNALSYM WSAData}
- LPWSADATA = ^WSAData;
- {$EXTERNALSYM LPWSADATA}
- TWsaData = WSAData;
- PWsaData = LPWSADATA;
- //
- // Definitions related to sockets: types, address families, options,
- // taken from the BSD file sys/socket.h.
- //
- //
- // This is used instead of -1, since the
- // SOCKET type is unsigned.
- //
- const
- INVALID_SOCKET = TSocket(not 0);
- {$EXTERNALSYM INVALID_SOCKET}
- SOCKET_ERROR = -1;
- {$EXTERNALSYM SOCKET_ERROR}
- //
- // The following may be used in place of the address family, socket type, or
- // protocol in a call to WSASocket to indicate that the corresponding value
- // should be taken from the supplied WSAPROTOCOL_INFO structure instead of the
- // parameter itself.
- //
- FROM_PROTOCOL_INFO = -1;
- {$EXTERNALSYM FROM_PROTOCOL_INFO}
- //
- // Types
- //
- SOCK_STREAM = 1; // stream socket
- {$EXTERNALSYM SOCK_STREAM}
- SOCK_DGRAM = 2; // datagram socket
- {$EXTERNALSYM SOCK_DGRAM}
- SOCK_RAW = 3; // raw-protocol interface
- {$EXTERNALSYM SOCK_RAW}
- SOCK_RDM = 4; // reliably-delivered message
- {$EXTERNALSYM SOCK_RDM}
- SOCK_SEQPACKET = 5; // sequenced packet stream
- {$EXTERNALSYM SOCK_SEQPACKET}
- //
- // Option flags per-socket.
- //
- SO_DEBUG = $0001; // turn on debugging info recording
- {$EXTERNALSYM SO_DEBUG}
- SO_ACCEPTCONN = $0002; // socket has had listen()
- {$EXTERNALSYM SO_ACCEPTCONN}
- SO_REUSEADDR = $0004; // allow local address reuse
- {$EXTERNALSYM SO_REUSEADDR}
- SO_KEEPALIVE = $0008; // keep connections alive
- {$EXTERNALSYM SO_KEEPALIVE}
- SO_DONTROUTE = $0010; // just use interface addresses
- {$EXTERNALSYM SO_DONTROUTE}
- SO_BROADCAST = $0020; // permit sending of broadcast msgs
- {$EXTERNALSYM SO_BROADCAST}
- SO_USELOOPBACK = $0040; // bypass hardware when possible
- {$EXTERNALSYM SO_USELOOPBACK}
- SO_LINGER = $0080; // linger on close if data present
- {$EXTERNALSYM SO_LINGER}
- SO_OOBINLINE = $0100; // leave received OOB data in line
- {$EXTERNALSYM SO_OOBINLINE}
- SO_DONTLINGER = DWORD(not SO_LINGER);
- {$EXTERNALSYM SO_DONTLINGER}
- SO_EXCLUSIVEADDRUSE = DWORD(not SO_REUSEADDR); // disallow local address reuse
- {$EXTERNALSYM SO_EXCLUSIVEADDRUSE}
- //
- // Additional options.
- //
- SO_SNDBUF = $1001; // send buffer size
- {$EXTERNALSYM SO_SNDBUF}
- SO_RCVBUF = $1002; // receive buffer size
- {$EXTERNALSYM SO_RCVBUF}
- SO_SNDLOWAT = $1003; // send low-water mark
- {$EXTERNALSYM SO_SNDLOWAT}
- SO_RCVLOWAT = $1004; // receive low-water mark
- {$EXTERNALSYM SO_RCVLOWAT}
- SO_SNDTIMEO = $1005; // send timeout
- {$EXTERNALSYM SO_SNDTIMEO}
- SO_RCVTIMEO = $1006; // receive timeout
- {$EXTERNALSYM SO_RCVTIMEO}
- SO_ERROR = $1007; // get error status and clear
- {$EXTERNALSYM SO_ERROR}
- SO_TYPE = $1008; // get socket type
- {$EXTERNALSYM SO_TYPE}
- //
- // WinSock 2 extension -- new options
- //
- SO_GROUP_ID = $2001; // ID of a socket group
- {$EXTERNALSYM SO_GROUP_ID}
- SO_GROUP_PRIORITY = $2002; // the relative priority within a group
- {$EXTERNALSYM SO_GROUP_PRIORITY}
- SO_MAX_MSG_SIZE = $2003; // maximum message size
- {$EXTERNALSYM SO_MAX_MSG_SIZE}
- SO_PROTOCOL_INFOA = $2004; // WSAPROTOCOL_INFOA structure
- {$EXTERNALSYM SO_PROTOCOL_INFOA}
- SO_PROTOCOL_INFOW = $2005; // WSAPROTOCOL_INFOW structure
- {$EXTERNALSYM SO_PROTOCOL_INFOW}
- {$IFDEF UNICODE}
- SO_PROTOCOL_INFO = SO_PROTOCOL_INFOW;
- {$EXTERNALSYM SO_PROTOCOL_INFO}
- {$ELSE}
- SO_PROTOCOL_INFO = SO_PROTOCOL_INFOA;
- {$EXTERNALSYM SO_PROTOCOL_INFO}
- {$ENDIF UNICODE}
- PVD_CONFIG = $3001; // configuration info for service provider
- {$EXTERNALSYM PVD_CONFIG}
- SO_CONDITIONAL_ACCEPT = $3002; // enable true conditional accept:
- // connection is not ack-ed to the
- // other side until conditional
- // function returns CF_ACCEPT
- {$EXTERNALSYM SO_CONDITIONAL_ACCEPT}
- //
- // TCP options.
- //
- TCP_NODELAY = $0001;
- {$EXTERNALSYM TCP_NODELAY}
- //
- // Address families.
- //
- AF_UNSPEC = 0; // unspecified
- {$EXTERNALSYM AF_UNSPEC}
- //
- // 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.
- //
- AF_UNIX = 1; // local to host (pipes, portals
- {$EXTERNALSYM AF_UNIX}
- AF_INET = 2; // internetwork: UDP, TCP, etc.
- {$EXTERNALSYM AF_INET}
- AF_IMPLINK = 3; // arpanet imp addresses
- {$EXTERNALSYM AF_IMPLINK}
- AF_PUP = 4; // pup protocols: e.g. BSP
- {$EXTERNALSYM AF_PUP}
- AF_CHAOS = 5; // mit CHAOS protocols
- {$EXTERNALSYM AF_CHAOS}
- AF_NS = 6; // XEROX NS protocols
- {$EXTERNALSYM AF_NS}
- AF_IPX = AF_NS; // IPX protocols: IPX, SPX, etc.
- {$EXTERNALSYM AF_IPX}
- AF_ISO = 7; // ISO protocols
- {$EXTERNALSYM AF_ISO}
- AF_OSI = AF_ISO; // OSI is ISO
- {$EXTERNALSYM AF_OSI}
- AF_ECMA = 8; // european computer manufacturers
- {$EXTERNALSYM AF_ECMA}
- AF_DATAKIT = 9; // datakit protocols
- {$EXTERNALSYM AF_DATAKIT}
- AF_CCITT = 10; // CCITT protocols, X.25 etc
- {$EXTERNALSYM AF_CCITT}
- AF_SNA = 11; // IBM SNA
- {$EXTERNALSYM AF_SNA}
- AF_DECnet = 12; // DECnet
- {$EXTERNALSYM AF_DECnet}
- AF_DLI = 13; // Direct data link interface
- {$EXTERNALSYM AF_DLI}
- AF_LAT = 14; // LAT
- {$EXTERNALSYM AF_LAT}
- AF_HYLINK = 15; // NSC Hyperchannel
- {$EXTERNALSYM AF_HYLINK}
- AF_APPLETALK = 16; // AppleTalk
- {$EXTERNALSYM AF_APPLETALK}
- AF_NETBIOS = 17; // NetBios-style addresses
- {$EXTERNALSYM AF_NETBIOS}
- AF_VOICEVIEW = 18; // VoiceView
- {$EXTERNALSYM AF_VOICEVIEW}
- AF_FIREFOX = 19; // Protocols from Firefox
- {$EXTERNALSYM AF_FIREFOX}
- AF_UNKNOWN1 = 20; // Somebody is using this!
- {$EXTERNALSYM AF_UNKNOWN1}
- AF_BAN = 21; // Banyan
- {$EXTERNALSYM AF_BAN}
- AF_ATM = 22; // Native ATM Services
- {$EXTERNALSYM AF_ATM}
- AF_INET6 = 23; // Internetwork Version 6
- {$EXTERNALSYM AF_INET6}
- AF_CLUSTER = 24; // Microsoft Wolfpack
- {$EXTERNALSYM AF_CLUSTER}
- AF_12844 = 25; // IEEE 1284.4 WG AF
- {$EXTERNALSYM AF_12844}
- AF_IRDA = 26; // IrDA
- {$EXTERNALSYM AF_IRDA}
- AF_NETDES = 28; // Network Designers OSI & gateway enabled protocols
- {$EXTERNALSYM AF_NETDES}
- AF_TCNPROCESS = 29;
- {$EXTERNALSYM AF_TCNPROCESS}
- AF_TCNMESSAGE = 30;
- {$EXTERNALSYM AF_TCNMESSAGE}
- AF_ICLFXBM = 31;
- {$EXTERNALSYM AF_ICLFXBM}
- AF_MAX = 32;
- {$EXTERNALSYM AF_MAX}
- //
- // Structure used by kernel to store most
- // addresses.
- //
- type
- sockaddr = record
- sa_family: u_short; // address family
- sa_data: array [0..13] of Char; // up to 14 bytes of direct address
- end;
- {$EXTERNALSYM sockaddr}
- TSockAddr = sockaddr;
- PSockAddr = ^sockaddr;
- //
- // Portable socket structure (RFC 2553).
- //
- //
- // Desired design of maximum size and alignment.
- // These are implementation specific.
- //
- const
- _SS_MAXSIZE = 128; // Maximum size.
- {$EXTERNALSYM _SS_MAXSIZE}
- _SS_ALIGNSIZE = SizeOf(Int64); // Desired alignment.
- {$EXTERNALSYM _SS_ALIGNSIZE}
- //
- // Definitions used for sockaddr_storage structure paddings design.
- //
- _SS_PAD1SIZE = _SS_ALIGNSIZE - SizeOf(short);
- {$EXTERNALSYM _SS_PAD1SIZE}
- _SS_PAD2SIZE = _SS_MAXSIZE - (SizeOf(short) + _SS_PAD1SIZE + _SS_ALIGNSIZE);
- {$EXTERNALSYM _SS_PAD2SIZE}
-
- type
- sockaddr_storage = record
- ss_family: short; // Address family.
- __ss_pad1: array [0.._SS_PAD1SIZE - 1] of char; // 6 byte pad, this is to make
- // implementation specific pad up to
- // alignment field that follows explicit
- // in the data structure.
- __ss_align: Int64; // Field to force desired structure.
- __ss_pad2: array [0.._SS_PAD2SIZE - 1] of char; // 112 byte pad to achieve desired size;
- // _SS_MAXSIZE value minus size of
- // ss_family, __ss_pad1, and
- // __ss_align fields is 112.
- end;
- {$EXTERNALSYM sockaddr_storage}
- TSockAddrStorage = sockaddr_storage;
- PSockAddrStorage = ^sockaddr_storage;
- //
- // Structure used by kernel to pass protocol
- // information in raw sockets.
- //
- sockproto = record
- sp_family: u_short; // address family
- sp_protocol: u_short; // protocol
- end;
- {$EXTERNALSYM sockproto}
- TSockProto = sockproto;
- PSockProto = ^sockproto;
- //
- // Protocol families, same as address families for now.
- //
- const
- PF_UNSPEC = AF_UNSPEC;
- {$EXTERNALSYM PF_UNSPEC}
- PF_UNIX = AF_UNIX;
- {$EXTERNALSYM PF_UNIX}
- PF_INET = AF_INET;
- {$EXTERNALSYM PF_INET}
- PF_IMPLINK = AF_IMPLINK;
- {$EXTERNALSYM PF_IMPLINK}
- PF_PUP = AF_PUP;
- {$EXTERNALSYM PF_PUP}
- PF_CHAOS = AF_CHAOS;
- {$EXTERNALSYM PF_CHAOS}
- PF_NS = AF_NS;
- {$EXTERNALSYM PF_NS}
- PF_IPX = AF_IPX;
- {$EXTERNALSYM PF_IPX}
- PF_ISO = AF_ISO;
- {$EXTERNALSYM PF_ISO}
- PF_OSI = AF_OSI;
- {$EXTERNALSYM PF_OSI}
- PF_ECMA = AF_ECMA;
- {$EXTERNALSYM PF_ECMA}
- PF_DATAKIT = AF_DATAKIT;
- {$EXTERNALSYM PF_DATAKIT}
- PF_CCITT = AF_CCITT;
- {$EXTERNALSYM PF_CCITT}
- PF_SNA = AF_SNA;
- {$EXTERNALSYM PF_SNA}
- PF_DECnet = AF_DECnet;
- {$EXTERNALSYM PF_DECnet}
- PF_DLI = AF_DLI;
- {$EXTERNALSYM PF_DLI}
- PF_LAT = AF_LAT;
- {$EXTERNALSYM PF_LAT}
- PF_HYLINK = AF_HYLINK;
- {$EXTERNALSYM PF_HYLINK}
- PF_APPLETALK = AF_APPLETALK;
- {$EXTERNALSYM PF_APPLETALK}
- PF_VOICEVIEW = AF_VOICEVIEW;
- {$EXTERNALSYM PF_VOICEVIEW}
- PF_FIREFOX = AF_FIREFOX;
- {$EXTERNALSYM PF_FIREFOX}
- PF_UNKNOWN1 = AF_UNKNOWN1;
- {$EXTERNALSYM PF_UNKNOWN1}
- PF_BAN = AF_BAN;
- {$EXTERNALSYM PF_BAN}
- PF_ATM = AF_ATM;
- {$EXTERNALSYM PF_ATM}
- PF_INET6 = AF_INET6;
- {$EXTERNALSYM PF_INET6}
- PF_MAX = AF_MAX;
- {$EXTERNALSYM PF_MAX}
- //
- // Structure used for manipulating linger option.
- //
- type
- linger = record
- l_onoff: u_short; // option on/off
- l_linger: u_short; // linger time
- end;
- {$EXTERNALSYM linger}
- TLinger = linger;
- PLinger = ^linger;
- //
- // Level number for (get/set)sockopt() to apply to socket itself.
- //
- const
- SOL_SOCKET = $ffff; // options for socket level
- {$EXTERNALSYM SOL_SOCKET}
- //
- // Maximum queue length specifiable by listen.
- //
- SOMAXCONN = $7fffffff;
- {$EXTERNALSYM SOMAXCONN}
- MSG_OOB = $1; // process out-of-band data
- {$EXTERNALSYM MSG_OOB}
- MSG_PEEK = $2; // peek at incoming message
- {$EXTERNALSYM MSG_PEEK}
- MSG_DONTROUTE = $4; // send without using routing tables
- {$EXTERNALSYM MSG_DONTROUTE}
- MSG_PARTIAL = $8000; // partial send or recv for message xport
- {$EXTERNALSYM MSG_PARTIAL}
- //
- // WinSock 2 extension -- new flags for WSASend(), WSASendTo(), WSARecv() and
- // WSARecvFrom()
- //
- MSG_INTERRUPT = $10; // send/recv in the interrupt context
- {$EXTERNALSYM MSG_INTERRUPT}
- MSG_MAXIOVLEN = 16;
- {$EXTERNALSYM MSG_MAXIOVLEN}
- //
- // Define constant based on rfc883, used by gethostbyxxxx() calls.
- //
- MAXGETHOSTSTRUCT = 1024;
- {$EXTERNALSYM MAXGETHOSTSTRUCT}
- //
- // WinSock 2 extension -- bit values and indices for FD_XXX network events
- //
- FD_READ_BIT = 0;
- {$EXTERNALSYM FD_READ_BIT}
- FD_READ = 1 shl FD_READ_BIT;
- {$EXTERNALSYM FD_READ}
- FD_WRITE_BIT = 1;
- {$EXTERNALSYM FD_WRITE_BIT}
- FD_WRITE = 1 shl FD_WRITE_BIT;
- {$EXTERNALSYM FD_WRITE}
- FD_OOB_BIT = 2;
- {$EXTERNALSYM FD_OOB_BIT}
- FD_OOB = 1 shl FD_OOB_BIT;
- {$EXTERNALSYM FD_OOB}
- FD_ACCEPT_BIT = 3;
- {$EXTERNALSYM FD_ACCEPT_BIT}
- FD_ACCEPT = 1 shl FD_ACCEPT_BIT;
- {$EXTERNALSYM FD_ACCEPT}
- FD_CONNECT_BIT = 4;
- {$EXTERNALSYM FD_CONNECT_BIT}
- FD_CONNECT = 1 shl FD_CONNECT_BIT;
- {$EXTERNALSYM FD_CONNECT}
- FD_CLOSE_BIT = 5;
- {$EXTERNALSYM FD_CLOSE_BIT}
- FD_CLOSE = 1 shl FD_CLOSE_BIT;
- {$EXTERNALSYM FD_CLOSE}
- FD_QOS_BIT = 6;
- {$EXTERNALSYM FD_QOS_BIT}
- FD_QOS = 1 shl FD_QOS_BIT;
- {$EXTERNALSYM FD_QOS}
- FD_GROUP_QOS_BIT = 7;
- {$EXTERNALSYM FD_GROUP_QOS_BIT}
- FD_GROUP_QOS = 1 shl FD_GROUP_QOS_BIT;
- {$EXTERNALSYM FD_GROUP_QOS}
- FD_ROUTING_INTERFACE_CHANGE_BIT = 8;
- {$EXTERNALSYM FD_ROUTING_INTERFACE_CHANGE_BIT}
- FD_ROUTING_INTERFACE_CHANGE = 1 shl FD_ROUTING_INTERFACE_CHANGE_BIT;
- {$EXTERNALSYM FD_ROUTING_INTERFACE_CHANGE}
- FD_ADDRESS_LIST_CHANGE_BIT = 9;
- {$EXTERNALSYM FD_ADDRESS_LIST_CHANGE_BIT}
- FD_ADDRESS_LIST_CHANGE = 1 shl FD_ADDRESS_LIST_CHANGE_BIT;
- {$EXTERNALSYM FD_ADDRESS_LIST_CHANGE}
- FD_MAX_EVENTS = 10;
- {$EXTERNALSYM FD_MAX_EVENTS}
- FD_ALL_EVENTS = (1 shl FD_MAX_EVENTS) - 1;
- {$EXTERNALSYM FD_ALL_EVENTS}
- //
- // All Windows Sockets error constants are biased by WSABASEERR from
- // the "normal"
- //
- WSABASEERR = 10000;
- {$EXTERNALSYM WSABASEERR}
- //
- // Windows Sockets definitions of regular Microsoft C error constants
- //
- WSAEINTR = WSABASEERR + 4;
- {$EXTERNALSYM WSAEINTR}
- WSAEBADF = WSABASEERR + 9;
- {$EXTERNALSYM WSAEBADF}
- WSAEACCES = WSABASEERR + 13;
- {$EXTERNALSYM WSAEACCES}
- WSAEFAULT = WSABASEERR + 14;
- {$EXTERNALSYM WSAEFAULT}
- WSAEINVAL = WSABASEERR + 22;
- {$EXTERNALSYM WSAEINVAL}
- WSAEMFILE = WSABASEERR + 24;
- {$EXTERNALSYM WSAEMFILE}
- //
- // Windows Sockets definitions of regular Berkeley error constants
- //
- WSAEWOULDBLOCK = WSABASEERR + 35;
- {$EXTERNALSYM WSAEWOULDBLOCK}
- WSAEINPROGRESS = WSABASEERR + 36;
- {$EXTERNALSYM WSAEINPROGRESS}
- WSAEALREADY = WSABASEERR + 37;
- {$EXTERNALSYM WSAEALREADY}
- WSAENOTSOCK = WSABASEERR + 38;
- {$EXTERNALSYM WSAENOTSOCK}
- WSAEDESTADDRREQ = WSABASEERR + 39;
- {$EXTERNALSYM WSAEDESTADDRREQ}
- WSAEMSGSIZE = WSABASEERR + 40;
- {$EXTERNALSYM WSAEMSGSIZE}
- WSAEPROTOTYPE = WSABASEERR + 41;
- {$EXTERNALSYM WSAEPROTOTYPE}
- WSAENOPROTOOPT = WSABASEERR + 42;
- {$EXTERNALSYM WSAENOPROTOOPT}
- WSAEPROTONOSUPPORT = WSABASEERR + 43;
- {$EXTERNALSYM WSAEPROTONOSUPPORT}
- WSAESOCKTNOSUPPORT = WSABASEERR + 44;
- {$EXTERNALSYM WSAESOCKTNOSUPPORT}
- WSAEOPNOTSUPP = WSABASEERR + 45;
- {$EXTERNALSYM WSAEOPNOTSUPP}
- WSAEPFNOSUPPORT = WSABASEERR + 46;
- {$EXTERNALSYM WSAEPFNOSUPPORT}
- WSAEAFNOSUPPORT = WSABASEERR + 47;
- {$EXTERNALSYM WSAEAFNOSUPPORT}
- WSAEADDRINUSE = WSABASEERR + 48;
- {$EXTERNALSYM WSAEADDRINUSE}
- WSAEADDRNOTAVAIL = WSABASEERR + 49;
- {$EXTERNALSYM WSAEADDRNOTAVAIL}
- WSAENETDOWN = WSABASEERR + 50;
- {$EXTERNALSYM WSAENETDOWN}
- WSAENETUNREACH = WSABASEERR + 51;
- {$EXTERNALSYM WSAENETUNREACH}
- WSAENETRESET = WSABASEERR + 52;
- {$EXTERNALSYM WSAENETRESET}
- WSAECONNABORTED = WSABASEERR + 53;
- {$EXTERNALSYM WSAECONNABORTED}
- WSAECONNRESET = WSABASEERR + 54;
- {$EXTERNALSYM WSAECONNRESET}
- WSAENOBUFS = WSABASEERR + 55;
- {$EXTERNALSYM WSAENOBUFS}
- WSAEISCONN = WSABASEERR + 56;
- {$EXTERNALSYM WSAEISCONN}
- WSAENOTCONN = WSABASEERR + 57;
- {$EXTERNALSYM WSAENOTCONN}
- WSAESHUTDOWN = WSABASEERR + 58;
- {$EXTERNALSYM WSAESHUTDOWN}
- WSAETOOMANYREFS = WSABASEERR + 59;
- {$EXTERNALSYM WSAETOOMANYREFS}
- WSAETIMEDOUT = WSABASEERR + 60;
- {$EXTERNALSYM WSAETIMEDOUT}
- WSAECONNREFUSED = WSABASEERR + 61;
- {$EXTERNALSYM WSAECONNREFUSED}
- WSAELOOP = WSABASEERR + 62;
- {$EXTERNALSYM WSAELOOP}
- WSAENAMETOOLONG = WSABASEERR + 63;
- {$EXTERNALSYM WSAENAMETOOLONG}
- WSAEHOSTDOWN = WSABASEERR + 64;
- {$EXTERNALSYM WSAEHOSTDOWN}
- WSAEHOSTUNREACH = WSABASEERR + 65;
- {$EXTERNALSYM WSAEHOSTUNREACH}
- WSAENOTEMPTY = WSABASEERR + 66;
- {$EXTERNALSYM WSAENOTEMPTY}
- WSAEPROCLIM = WSABASEERR + 67;
- {$EXTERNALSYM WSAEPROCLIM}
- WSAEUSERS = WSABASEERR + 68;
- {$EXTERNALSYM WSAEUSERS}
- WSAEDQUOT = WSABASEERR + 69;
- {$EXTERNALSYM WSAEDQUOT}
- WSAESTALE = WSABASEERR + 70;
- {$EXTERNALSYM WSAESTALE}
- WSAEREMOTE = WSABASEERR + 71;
- {$EXTERNALSYM WSAEREMOTE}
- //
- // Extended Windows Sockets error constant definitions
- //
- WSASYSNOTREADY = WSABASEERR + 91;
- {$EXTERNALSYM WSASYSNOTREADY}
- WSAVERNOTSUPPORTED = WSABASEERR + 92;
- {$EXTERNALSYM WSAVERNOTSUPPORTED}
- WSANOTINITIALISED = WSABASEERR + 93;
- {$EXTERNALSYM WSANOTINITIALISED}
- WSAEDISCON = WSABASEERR + 101;
- {$EXTERNALSYM WSAEDISCON}
- WSAENOMORE = WSABASEERR + 102;
- {$EXTERNALSYM WSAENOMORE}
- WSAECANCELLED = WSABASEERR + 103;
- {$EXTERNALSYM WSAECANCELLED}
- WSAEINVALIDPROCTABLE = WSABASEERR + 104;
- {$EXTERNALSYM WSAEINVALIDPROCTABLE}
- WSAEINVALIDPROVIDER = WSABASEERR + 105;
- {$EXTERNALSYM WSAEINVALIDPROVIDER}
- WSAEPROVIDERFAILEDINIT = WSABASEERR + 106;
- {$EXTERNALSYM WSAEPROVIDERFAILEDINIT}
- WSASYSCALLFAILURE = WSABASEERR + 107;
- {$EXTERNALSYM WSASYSCALLFAILURE}
- WSASERVICE_NOT_FOUND = WSABASEERR + 108;
- {$EXTERNALSYM WSASERVICE_NOT_FOUND}
- WSATYPE_NOT_FOUND = WSABASEERR + 109;
- {$EXTERNALSYM WSATYPE_NOT_FOUND}
- WSA_E_NO_MORE = WSABASEERR + 110;
- {$EXTERNALSYM WSA_E_NO_MORE}
- WSA_E_CANCELLED = WSABASEERR + 111;
- {$EXTERNALSYM WSA_E_CANCELLED}
- WSAEREFUSED = WSABASEERR + 112;
- {$EXTERNALSYM WSAEREFUSED}
- //
- // 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.
- //
- // Authoritative Answer: Host not found
- WSAHOST_NOT_FOUND = WSABASEERR + 1001;
- {$EXTERNALSYM WSAHOST_NOT_FOUND}
- // Non-Authoritative: Host not found, or SERVERFAIL
- WSATRY_AGAIN = WSABASEERR + 1002;
- {$EXTERNALSYM WSATRY_AGAIN}
- // Non-recoverable errors, FORMERR, REFUSED, NOTIMP
- WSANO_RECOVERY = WSABASEERR + 1003;
- {$EXTERNALSYM WSANO_RECOVERY}
- // Valid name, no data record of requested type
- WSANO_DATA = WSABASEERR + 1004;
- {$EXTERNALSYM WSANO_DATA}
- //
- // Define QOS related error return codes
- //
- //
- WSA_QOS_RECEIVERS = WSABASEERR + 1005; // at least one Reserve has arrived
- {$EXTERNALSYM WSA_QOS_RECEIVERS}
- WSA_QOS_SENDERS = WSABASEERR + 1006; // at least one Path has arrived
- {$EXTERNALSYM WSA_QOS_SENDERS}
- WSA_QOS_NO_SENDERS = WSABASEERR + 1007; // there are no senders
- {$EXTERNALSYM WSA_QOS_NO_SENDERS}
- WSA_QOS_NO_RECEIVERS = WSABASEERR + 1008; // there are no receivers
- {$EXTERNALSYM WSA_QOS_NO_RECEIVERS}
- WSA_QOS_REQUEST_CONFIRMED = WSABASEERR + 1009; // Reserve has been confirmed
- {$EXTERNALSYM WSA_QOS_REQUEST_CONFIRMED}
- WSA_QOS_ADMISSION_FAILURE = WSABASEERR + 1010; // error due to lack of resources
- {$EXTERNALSYM WSA_QOS_ADMISSION_FAILURE}
- WSA_QOS_POLICY_FAILURE = WSABASEERR + 1011; // rejected for administrative reasons - bad credentials
- {$EXTERNALSYM WSA_QOS_POLICY_FAILURE}
- WSA_QOS_BAD_STYLE = WSABASEERR + 1012; // unknown or conflicting style
- {$EXTERNALSYM WSA_QOS_BAD_STYLE}
- WSA_QOS_BAD_OBJECT = WSABASEERR + 1013; // problem with some part of the filterspec or providerspecific buffer in general
- {$EXTERNALSYM WSA_QOS_BAD_OBJECT}
- WSA_QOS_TRAFFIC_CTRL_ERROR = WSABASEERR + 1014; // problem with some part of the flowspec
- {$EXTERNALSYM WSA_QOS_TRAFFIC_CTRL_ERROR}
- WSA_QOS_GENERIC_ERROR = WSABASEERR + 1015; // general error
- {$EXTERNALSYM WSA_QOS_GENERIC_ERROR}
- WSA_QOS_ESERVICETYPE = WSABASEERR + 1016; // invalid service type in flowspec
- {$EXTERNALSYM WSA_QOS_ESERVICETYPE}
- WSA_QOS_EFLOWSPEC = WSABASEERR + 1017; // invalid flowspec
- {$EXTERNALSYM WSA_QOS_EFLOWSPEC}
- WSA_QOS_EPROVSPECBUF = WSABASEERR + 1018; // invalid provider specific buffer
- {$EXTERNALSYM WSA_QOS_EPROVSPECBUF}
- WSA_QOS_EFILTERSTYLE = WSABASEERR + 1019; // invalid filter style
- {$EXTERNALSYM WSA_QOS_EFILTERSTYLE}
- WSA_QOS_EFILTERTYPE = WSABASEERR + 1020; // invalid filter type
- {$EXTERNALSYM WSA_QOS_EFILTERTYPE}
- WSA_QOS_EFILTERCOUNT = WSABASEERR + 1021; // incorrect number of filters
- {$EXTERNALSYM WSA_QOS_EFILTERCOUNT}
- WSA_QOS_EOBJLENGTH = WSABASEERR + 1022; // invalid object length
- {$EXTERNALSYM WSA_QOS_EOBJLENGTH}
- WSA_QOS_EFLOWCOUNT = WSABASEERR + 1023; // incorrect number of flows
- {$EXTERNALSYM WSA_QOS_EFLOWCOUNT}
- WSA_QOS_EUNKOWNPSOBJ = WSABASEERR + 1024; // unknown object in provider specific buffer
- {$EXTERNALSYM WSA_QOS_EUNKOWNPSOBJ}
- WSA_QOS_EPOLICYOBJ = WSABASEERR + 1025; // invalid policy object in provider specific buffer
- {$EXTERNALSYM WSA_QOS_EPOLICYOBJ}
- WSA_QOS_EFLOWDESC = WSABASEERR + 1026; // invalid flow descriptor in the list
- {$EXTERNALSYM WSA_QOS_EFLOWDESC}
- WSA_QOS_EPSFLOWSPEC = WSABASEERR + 1027; // inconsistent flow spec in provider specific buffer
- {$EXTERNALSYM WSA_QOS_EPSFLOWSPEC}
- WSA_QOS_EPSFILTERSPEC = WSABASEERR + 1028; // invalid filter spec in provider specific buffer
- {$EXTERNALSYM WSA_QOS_EPSFILTERSPEC}
- WSA_QOS_ESDMODEOBJ = WSABASEERR + 1029; // invalid shape discard mode object in provider specific buffer
- {$EXTERNALSYM WSA_QOS_ESDMODEOBJ}
- WSA_QOS_ESHAPERATEOBJ = WSABASEERR + 1030; // invalid shaping rate object in provider specific buffer
- {$EXTERNALSYM WSA_QOS_ESHAPERATEOBJ}
- WSA_QOS_RESERVED_PETYPE = WSABASEERR + 1031; // reserved policy element in provider specific buffer
- {$EXTERNALSYM WSA_QOS_RESERVED_PETYPE}
- //
- // Compatibility macros.
- //
- function h_errno: Integer;
- {$EXTERNALSYM h_errno}
- const
- HOST_NOT_FOUND = WSAHOST_NOT_FOUND;
- {$EXTERNALSYM HOST_NOT_FOUND}
- TRY_AGAIN = WSATRY_AGAIN;
- {$EXTERNALSYM TRY_AGAIN}
- NO_RECOVERY = WSANO_RECOVERY;
- {$EXTERNALSYM NO_RECOVERY}
- NO_DATA = WSANO_DATA;
- {$EXTERNALSYM NO_DATA}
- // no address, look for MX record
- WSANO_ADDRESS = WSANO_DATA;
- {$EXTERNALSYM WSANO_ADDRESS}
- NO_ADDRESS = WSANO_ADDRESS;
- {$EXTERNALSYM NO_ADDRESS}
- //
- // Windows Sockets errors redefined as regular Berkeley error constants.
- // These are commented out in Windows NT to avoid conflicts with errno.h.
- // Use the WSA constants instead.
- //
- {$IFDEF FALSE}
- const
- EWOULDBLOCK = WSAEWOULDBLOCK;
- {$EXTERNALSYM EWOULDBLOCK}
- EINPROGRESS = WSAEINPROGRESS;
- {$EXTERNALSYM EINPROGRESS}
- EALREADY = WSAEALREADY;
- {$EXTERNALSYM EALREADY}
- ENOTSOCK = WSAENOTSOCK;
- {$EXTERNALSYM ENOTSOCK}
- EDESTADDRREQ = WSAEDESTADDRREQ;
- {$EXTERNALSYM EDESTADDRREQ}
- EMSGSIZE = WSAEMSGSIZE;
- {$EXTERNALSYM EMSGSIZE}
- EPROTOTYPE = WSAEPROTOTYPE;
- {$EXTERNALSYM EPROTOTYPE}
- ENOPROTOOPT = WSAENOPROTOOPT;
- {$EXTERNALSYM ENOPROTOOPT}
- EPROTONOSUPPORT = WSAEPROTONOSUPPORT;
- {$EXTERNALSYM EPROTONOSUPPORT}
- ESOCKTNOSUPPORT = WSAESOCKTNOSUPPORT;
- {$EXTERNALSYM ESOCKTNOSUPPORT}
- EOPNOTSUPP = WSAEOPNOTSUPP;
- {$EXTERNALSYM EOPNOTSUPP}
- EPFNOSUPPORT = WSAEPFNOSUPPORT;
- {$EXTERNALSYM EPFNOSUPPORT}
- EAFNOSUPPORT = WSAEAFNOSUPPORT;
- {$EXTERNALSYM EAFNOSUPPORT}
- EADDRINUSE = WSAEADDRINUSE;
- {$EXTERNALSYM EADDRINUSE}
- EADDRNOTAVAIL = WSAEADDRNOTAVAIL;
- {$EXTERNALSYM EADDRNOTAVAIL}
- ENETDOWN = WSAENETDOWN;
- {$EXTERNALSYM ENETDOWN}
- ENETUNREACH = WSAENETUNREACH;
- {$EXTERNALSYM ENETUNREACH}
- ENETRESET = WSAENETRESET;
- {$EXTERNALSYM ENETRESET}
- ECONNABORTED = WSAECONNABORTED;
- {$EXTERNALSYM ECONNABORTED}
- ECONNRESET = WSAECONNRESET;
- {$EXTERNALSYM ECONNRESET}
- ENOBUFS = WSAENOBUFS;
- {$EXTERNALSYM ENOBUFS}
- EISCONN = WSAEISCONN;
- {$EXTERNALSYM EISCONN}
- ENOTCONN = WSAENOTCONN;
- {$EXTERNALSYM ENOTCONN}
- ESHUTDOWN = WSAESHUTDOWN;
- {$EXTERNALSYM ESHUTDOWN}
- ETOOMANYREFS = WSAETOOMANYREFS;
- {$EXTERNALSYM ETOOMANYREFS}
- ETIMEDOUT = WSAETIMEDOUT;
- {$EXTERNALSYM ETIMEDOUT}
- ECONNREFUSED = WSAECONNREFUSED;
- {$EXTERNALSYM ECONNREFUSED}
- ELOOP = WSAELOOP;
- {$EXTERNALSYM ELOOP}
- ENAMETOOLONG = WSAENAMETOOLONG;
- {$EXTERNALSYM ENAMETOOLONG}
- EHOSTDOWN = WSAEHOSTDOWN;
- {$EXTERNALSYM EHOSTDOWN}
- EHOSTUNREACH = WSAEHOSTUNREACH;
- {$EXTERNALSYM EHOSTUNREACH}
- ENOTEMPTY = WSAENOTEMPTY;
- {$EXTERNALSYM ENOTEMPTY}
- EPROCLIM = WSAEPROCLIM;
- {$EXTERNALSYM EPROCLIM}
- EUSERS = WSAEUSERS;
- {$EXTERNALSYM EUSERS}
- EDQUOT = WSAEDQUOT;
- {$EXTERNALSYM EDQUOT}
- ESTALE = WSAESTALE;
- {$EXTERNALSYM ESTALE}
- EREMOTE = WSAEREMOTE;
- {$EXTERNALSYM EREMOTE}
- {$ENDIF FALSE}
- //
- // WinSock 2 extension -- new error codes and type definition
- //
- type
- WSAEVENT = HANDLE;
- {$EXTERNALSYM WSAEVENT}
- LPWSAEVENT = LPHANDLE;
- {$EXTERNALSYM LPWSAEVENT}
- WSAOVERLAPPED = OVERLAPPED;
- {$EXTERNALSYM WSAOVERLAPPED}
- LPWSAOVERLAPPED = ^OVERLAPPED;
- {$EXTERNALSYM LPWSAOVERLAPPED}
- TWsaEvent = WSAEVENT;
- PWsaEvent = LPWSAEVENT;
- TWsaOverlapped = WSAOVERLAPPED;
- PWsaOverlapped = LPWSAOVERLAPPED;
- const
- WSA_IO_PENDING = ERROR_IO_PENDING;
- {$EXTERNALSYM WSA_IO_PENDING}
- WSA_IO_INCOMPLETE = ERROR_IO_INCOMPLETE;
- {$EXTERNALSYM WSA_IO_INCOMPLETE}
- WSA_INVALID_HANDLE = ERROR_INVALID_HANDLE;
- {$EXTERNALSYM WSA_INVALID_HANDLE}
- WSA_INVALID_PARAMETER = ERROR_INVALID_PARAMETER;
- {$EXTERNALSYM WSA_INVALID_PARAMETER}
- WSA_NOT_ENOUGH_MEMORY = ERROR_NOT_ENOUGH_MEMORY;
- {$EXTERNALSYM WSA_NOT_ENOUGH_MEMORY}
- WSA_OPERATION_ABORTED = ERROR_OPERATION_ABORTED;
- {$EXTERNALSYM WSA_OPERATION_ABORTED}
- WSA_INVALID_EVENT = WSAEVENT(nil);
- {$EXTERNALSYM WSA_INVALID_EVENT}
- WSA_MAXIMUM_WAIT_EVENTS = MAXIMUM_WAIT_OBJECTS;
- {$EXTERNALSYM WSA_MAXIMUM_WAIT_EVENTS}
- WSA_WAIT_FAILED = WAIT_FAILED;
- {$EXTERNALSYM WSA_WAIT_FAILED}
- WSA_WAIT_EVENT_0 = WAIT_OBJECT_0;
- {$EXTERNALSYM WSA_WAIT_EVENT_0}
- WSA_WAIT_IO_COMPLETION = WAIT_IO_COMPLETION;
- {$EXTERNALSYM WSA_WAIT_IO_COMPLETION}
- WSA_WAIT_TIMEOUT = WAIT_TIMEOUT;
- {$EXTERNALSYM WSA_WAIT_TIMEOUT}
- WSA_INFINITE = INFINITE;
- {$EXTERNALSYM WSA_INFINITE}
- //
- // WinSock 2 extension -- WSABUF and QOS struct, include qos.h
- // to pull in FLOWSPEC and related definitions
- //
- type
- _WSABUF = record
- len: u_long; // the length of the buffer
- buf: PChar; // the pointer to the buffer
- end;
- {$EXTERNALSYM _WSABUF}
- WSABUF = _WSABUF;
- {$EXTERNALSYM WSABUF}
- LPWSABUF = ^_WSABUF;
- {$EXTERNALSYM LPWSABUF}
- TWsaBuf = WSABUF;
- PWsaBuf = LPWSABUF;
- _QualityOfService = record
- SendingFlowspec: FLOWSPEC; // the flow spec for data sending
- ReceivingFlowspec: FLOWSPEC; // the flow spec for data receiving
- ProviderSpecific: WSABUF; // additional provider specific stuff
- end;
- {$EXTERNALSYM _QualityOfService}
- QOS = _QualityOfService;
- {$EXTERNALSYM QOS}
- LPQOS = ^_QualityOfService;
- {$EXTERNALSYM LPQOS}
- TQOS = QOS;
- PQOS = LPQOS;
- //
- // WinSock 2 extension -- manifest constants for return values of the condition function
- //
- const
- CF_ACCEPT = $0000;
- {$EXTERNALSYM CF_ACCEPT}
- CF_REJECT = $0001;
- {$EXTERNALSYM CF_REJECT}
- CF_DEFER = $0002;
- {$EXTERNALSYM CF_DEFER}
- //
- // WinSock 2 extension -- manifest constants for shutdown()
- //
- SD_RECEIVE = $00;
- {$EXTERNALSYM SD_RECEIVE}
- SD_SEND = $01;
- {$EXTERNALSYM SD_SEND}
- SD_BOTH = $02;
- {$EXTERNALSYM SD_BOTH}
- //
- // WinSock 2 extension -- data type and manifest constants for socket groups
- //
- type
- GROUP = Cardinal;
- {$EXTERNALSYM GROUP}
- TGroup = GROUP;
- PGroup = ^GROUP;
- const
- SG_UNCONSTRAINED_GROUP = $01;
- {$EXTERNALSYM SG_UNCONSTRAINED_GROUP}
- SG_CONSTRAINED_GROUP = $02;
- {$EXTERNALSYM SG_CONSTRAINED_GROUP}
- //
- // WinSock 2 extension -- data type for WSAEnumNetworkEvents()
- //
- type
- _WSANETWORKEVENTS = record
- lNetworkEvents: Longint;
- iErrorCode: array [0..FD_MAX_EVENTS - 1] of Integer;
- end;
- {$EXTERNALSYM _WSANETWORKEVENTS}
- WSANETWORKEVENTS = _WSANETWORKEVENTS;
- {$EXTERNALSYM WSANETWORKEVENTS}
- LPWSANETWORKEVENTS = ^WSANETWORKEVENTS;
- {$EXTERNALSYM LPWSANETWORKEVENTS}
- TWsaNetworkEvents = WSANETWORKEVENTS;
- PWsaNetworkEvents = LPWSANETWORKEVENTS;
- //
- // WinSock 2 extension -- WSAPROTOCOL_INFO structure and associated
- // manifest constants
- //
- const
- MAX_PROTOCOL_CHAIN = 7;
- {$EXTERNALSYM MAX_PROTOCOL_CHAIN}
- BASE_PROTOCOL = 1;
- {$EXTERNALSYM BASE_PROTOCOL}
- LAYERED_PROTOCOL = 0;
- {$EXTERNALSYM LAYERED_PROTOCOL}
- type
- _WSAPROTOCOLCHAIN = record
- ChainLen: Integer; // the length of the chain,
- // length = 0 means layered protocol,
- // length = 1 means base protocol,
- // length > 1 means protocol chain
- ChainEntries: array [0..MAX_PROTOCOL_CHAIN - 1] of DWORD; // a list of dwCatalogEntryIds
- end;
- {$EXTERNALSYM _WSAPROTOCOLCHAIN}
- WSAPROTOCOLCHAIN = _WSAPROTOCOLCHAIN;
- {$EXTERNALSYM WSAPROTOCOLCHAIN}
- LPWSAPROTOCOLCHAIN = ^WSAPROTOCOLCHAIN;
- {$EXTERNALSYM LPWSAPROTOCOLCHAIN}
- TWsaProtocolChain = WSAPROTOCOLCHAIN;
- PWsaProtocolChain = LPWSAPROTOCOLCHAIN;
- const
- WSAPROTOCOL_LEN = 255;
- {$EXTERNALSYM WSAPROTOCOL_LEN}
- type
- _WSAPROTOCOL_INFOA = record
- dwServiceFlags1: DWORD;
- dwServiceFlags2: DWORD;
- dwServiceFlags3: DWORD;
- dwServiceFlags4: DWORD;
- dwProviderFlags: DWORD;
- ProviderId: TGUID;
- dwCatalogEntryId: DWORD;
- ProtocolChain: WSAPROTOCOLCHAIN;
- iVersion: Integer;
- iAddressFamily: Integer;
- iMaxSockAddr: Integer;
- iMinSockAddr: Integer;
- iSocketType: Integer;
- iProtocol: Integer;
- iProtocolMaxOffset: Integer;
- iNetworkByteOrder: Integer;
- iSecurityScheme: Integer;
- dwMessageSize: DWORD;
- dwProviderReserved: DWORD;
- szProtocol: array [0..WSAPROTOCOL_LEN] of Char;
- end;
- {$EXTERNALSYM _WSAPROTOCOL_INFOA}
- WSAPROTOCOL_INFOA = _WSAPROTOCOL_INFOA;
- {$EXTERNALSYM WSAPROTOCOL_INFOA}
- LPWSAPROTOCOL_INFOA = ^WSAPROTOCOL_INFOA;
- {$EXTERNALSYM LPWSAPROTOCOL_INFOA}
- TWsaProtocolInfoA = WSAPROTOCOL_INFOA;
- PWsaProtocolInfoA = LPWSAPROTOCOL_INFOA;
- _WSAPROTOCOL_INFOW = record
- dwServiceFlags1: DWORD;
- dwServiceFlags2: DWORD;
- dwServiceFlags3: DWORD;
- dwServiceFlags4: DWORD;
- dwProviderFlags: DWORD;
- ProviderId: TGUID;
- dwCatalogEntryId: DWORD;
- ProtocolChain: WSAPROTOCOLCHAIN;
- iVersion: Integer;
- iAddressFamily: Integer;
- iMaxSockAddr: Integer;
- iMinSockAddr: Integer;
- iSocketType: Integer;
- iProtocol: Integer;
- iProtocolMaxOffset: Integer;
- iNetworkByteOrder: Integer;
- iSecurityScheme: Integer;
- dwMessageSize: DWORD;
- dwProviderReserved: DWORD;
- szProtocol: array [0..WSAPROTOCOL_LEN] of WideChar;
- end;
- {$EXTERNALSYM _WSAPROTOCOL_INFOW}
- WSAPROTOCOL_INFOW = _WSAPROTOCOL_INFOW;
- {$EXTERNALSYM WSAPROTOCOL_INFOW}
- LPWSAPROTOCOL_INFOW = ^WSAPROTOCOL_INFOW;
- {$EXTERNALSYM LPWSAPROTOCOL_INFOW}
- TWsaProtocolInfoW = WSAPROTOCOL_INFOW;
- PWsaProtocolInfoW = LPWSAPROTOCOL_INFOW;
- {$IFDEF UNICODE}
- WSAPROTOCOL_INFO = WSAPROTOCOL_INFOW;
- {$EXTERNALSYM WSAPROTOCOL_INFO}
- LPWSAPROTOCOL_INFO = LPWSAPROTOCOL_INFOW;
- {$EXTERNALSYM LPWSAPROTOCOL_INFO}
- TWsaProtocolInfo = TWsaProtocolInfoW;
- PWsaProtocolInfo = PWsaProtocolInfoW;
- {$ELSE}
- WSAPROTOCOL_INFO = WSAPROTOCOL_INFOA;
- {$EXTERNALSYM WSAPROTOCOL_INFO}
- LPWSAPROTOCOL_INFO = LPWSAPROTOCOL_INFOA;
- {$EXTERNALSYM LPWSAPROTOCOL_INFO}
- TWsaProtocolInfo = TWsaProtocolInfoA;
- PWsaProtocolInfo = PWsaProtocolInfoA;
- {$ENDIF UNICODE}
- // Flag bit definitions for dwProviderFlags
- const
- PFL_MULTIPLE_PROTO_ENTRIES = $00000001;
- {$EXTERNALSYM PFL_MULTIPLE_PROTO_ENTRIES}
- PFL_RECOMMENDED_PROTO_ENTRY = $00000002;
- {$EXTERNALSYM PFL_RECOMMENDED_PROTO_ENTRY}
- PFL_HIDDEN = $00000004;
- {$EXTERNALSYM PFL_HIDDEN}
- PFL_MATCHES_PROTOCOL_ZERO = $00000008;
- {$EXTERNALSYM PFL_MATCHES_PROTOCOL_ZERO}
- // Flag bit definitions for dwServiceFlags1
- XP1_CONNECTIONLESS = $00000001;
- {$EXTERNALSYM XP1_CONNECTIONLESS}
- XP1_GUARANTEED_DELIVERY = $00000002;
- {$EXTERNALSYM XP1_GUARANTEED_DELIVERY}
- XP1_GUARANTEED_ORDER = $00000004;
- {$EXTERNALSYM XP1_GUARANTEED_ORDER}
- XP1_MESSAGE_ORIENTED = $00000008;
- {$EXTERNALSYM XP1_MESSAGE_ORIENTED}
- XP1_PSEUDO_STREAM = $00000010;
- {$EXTERNALSYM XP1_PSEUDO_STREAM}
- XP1_GRACEFUL_CLOSE = $00000020;
- {$EXTERNALSYM XP1_GRACEFUL_CLOSE}
- XP1_EXPEDITED_DATA = $00000040;
- {$EXTERNALSYM XP1_EXPEDITED_DATA}
- XP1_CONNECT_DATA = $00000080;
- {$EXTERNALSYM XP1_CONNECT_DATA}
- XP1_DISCONNECT_DATA = $00000100;
- {$EXTERNALSYM XP1_DISCONNECT_DATA}
- XP1_SUPPORT_BROADCAST = $00000200;
- {$EXTERNALSYM XP1_SUPPORT_BROADCAST}
- XP1_SUPPORT_MULTIPOINT = $00000400;
- {$EXTERNALSYM XP1_SUPPORT_MULTIPOINT}
- XP1_MULTIPOINT_CONTROL_PLANE = $00000800;
- {$EXTERNALSYM XP1_MULTIPOINT_CONTROL_PLANE}
- XP1_MULTIPOINT_DATA_PLANE = $00001000;
- {$EXTERNALSYM XP1_MULTIPOINT_DATA_PLANE}
- XP1_QOS_SUPPORTED = $00002000;
- {$EXTERNALSYM XP1_QOS_SUPPORTED}
- XP1_INTERRUPT = $00004000;
- {$EXTERNALSYM XP1_INTERRUPT}
- XP1_UNI_SEND = $00008000;
- {$EXTERNALSYM XP1_UNI_SEND}
- XP1_UNI_RECV = $00010000;
- {$EXTERNALSYM XP1_UNI_RECV}
- XP1_IFS_HANDLES = $00020000;
- {$EXTERNALSYM XP1_IFS_HANDLES}
- XP1_PARTIAL_MESSAGE = $00040000;
- {$EXTERNALSYM XP1_PARTIAL_MESSAGE}
- BIGENDIAN = $0000;
- {$EXTERNALSYM BIGENDIAN}
- LITTLEENDIAN = $0001;
- {$EXTERNALSYM LITTLEENDIAN}
- SECURITY_PROTOCOL_NONE = $0000;
- {$EXTERNALSYM SECURITY_PROTOCOL_NONE}
- //
- // WinSock 2 extension -- manifest constants for WSAJoinLeaf()
- //
- JL_SENDER_ONLY = $01;
- {$EXTERNALSYM JL_SENDER_ONLY}
- JL_RECEIVER_ONLY = $02;
- {$EXTERNALSYM JL_RECEIVER_ONLY}
- JL_BOTH = $04;
- {$EXTERNALSYM JL_BOTH}
- //
- // WinSock 2 extension -- manifest constants for WSASocket()
- //
- WSA_FLAG_OVERLAPPED = $01;
- {$EXTERNALSYM WSA_FLAG_OVERLAPPED}
- WSA_FLAG_MULTIPOINT_C_ROOT = $02;
- {$EXTERNALSYM WSA_FLAG_MULTIPOINT_C_ROOT}
- WSA_FLAG_MULTIPOINT_C_LEAF = $04;
- {$EXTERNALSYM WSA_FLAG_MULTIPOINT_C_LEAF}
- WSA_FLAG_MULTIPOINT_D_ROOT = $08;
- {$EXTERNALSYM WSA_FLAG_MULTIPOINT_D_ROOT}
- WSA_FLAG_MULTIPOINT_D_LEAF = $10;
- {$EXTERNALSYM WSA_FLAG_MULTIPOINT_D_LEAF}
- //
- // WinSock 2 extension -- manifest constants for WSAIoctl()
- //
- IOC_UNIX = $00000000;
- {$EXTERNALSYM IOC_UNIX}
- IOC_WS2 = $08000000;
- {$EXTERNALSYM IOC_WS2}
- IOC_PROTOCOL = $10000000;
- {$EXTERNALSYM IOC_PROTOCOL}
- IOC_VENDOR = $18000000;
- {$EXTERNALSYM IOC_VENDOR}
- function _WSAIO(x, y: DWORD): DWORD;
- {$EXTERNALSYM _WSAIO}
- function _WSAIOR(x, y: DWORD): DWORD;
- {$EXTERNALSYM _WSAIOR}
- function _WSAIOW(x, y: DWORD): DWORD;
- {$EXTERNALSYM _WSAIOW}
- function _WSAIORW(x, y: DWORD): DWORD;
- {$EXTERNALSYM _WSAIORW}
- const
- SIO_ASSOCIATE_HANDLE = IOC_INOUT or IOC_WS2 or 1;
- {$EXTERNALSYM SIO_ASSOCIATE_HANDLE}
- SIO_ENABLE_CIRCULAR_QUEUEING = IOC_VOID or IOC_WS2 or 2;
- {$EXTERNALSYM SIO_ENABLE_CIRCULAR_QUEUEING}
- SIO_FIND_ROUTE = IOC_OUT or IOC_WS2 or 3;
- {$EXTERNALSYM SIO_FIND_ROUTE}
- SIO_FLUSH = IOC_VOID or IOC_WS2 or 4;
- {$EXTERNALSYM SIO_FLUSH}
- SIO_GET_BROADCAST_ADDRESS = IOC_OUT or IOC_WS2 or 5;
- {$EXTERNALSYM SIO_GET_BROADCAST_ADDRESS}
- SIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT or IOC_WS2 or 6;
- {$EXTERNALSYM SIO_GET_EXTENSION_FUNCTION_POINTER}
- SIO_GET_QOS = IOC_INOUT or IOC_WS2 or 7;
- {$EXTERNALSYM SIO_GET_QOS}
- SIO_GET_GROUP_QOS = IOC_INOUT or IOC_WS2 or 8;
- {$EXTERNALSYM SIO_GET_GROUP_QOS}
- SIO_MULTIPOINT_LOOPBACK = IOC_INOUT or IOC_WS2 or 9;
- {$EXTERNALSYM SIO_MULTIPOINT_LOOPBACK}
- SIO_MULTICAST_SCOPE = IOC_INOUT or IOC_WS2 or 10;
- {$EXTERNALSYM SIO_MULTICAST_SCOPE}
- SIO_SET_QOS = IOC_INOUT or IOC_WS2 or 11;
- {$EXTERNALSYM SIO_SET_QOS}
- SIO_SET_GROUP_QOS = IOC_INOUT or IOC_WS2 or 12;
- {$EXTERNALSYM SIO_SET_GROUP_QOS}
- SIO_TRANSLATE_HANDLE = IOC_INOUT or IOC_WS2 or 13;
- {$EXTERNALSYM SIO_TRANSLATE_HANDLE}
- SIO_ROUTING_INTERFACE_QUERY = IOC_INOUT or IOC_WS2 or 20;
- {$EXTERNALSYM SIO_ROUTING_INTERFACE_QUERY}
- SIO_ROUTING_INTERFACE_CHANGE = IOC_INOUT or IOC_WS2 or 21;
- {$EXTERNALSYM SIO_ROUTING_INTERFACE_CHANGE}
- SIO_ADDRESS_LIST_QUERY = IOC_OUT or IOC_WS2 or 22;
- {$EXTERNALSYM SIO_ADDRESS_LIST_QUERY}
- SIO_ADDRESS_LIST_CHANGE = IOC_VOID or IOC_WS2 or 23;
- {$EXTERNALSYM SIO_ADDRESS_LIST_CHANGE}
- SIO_QUERY_TARGET_PNP_HANDLE = IOC_OUT or IOC_WS2 or 24;
- {$EXTERNALSYM SIO_QUERY_TARGET_PNP_HANDLE}
- SIO_ADDRESS_LIST_SORT = IOC_INOUT or IOC_WS2 or 25;
- {$EXTERNALSYM SIO_ADDRESS_LIST_SORT}
- //
- // WinSock 2 extensions -- data types for the condition function in
- // WSAAccept() and overlapped I/O completion routine.
- //
- type
- LPCONDITIONPROC = function(lpCallerId, lpCallerData: LPWSABUF; lpSQOS, lpGQOS: LPQOS; lpCalleeId, lpCalleeData: LPWSABUF;
- g: PGROUP; dwCallbackData: DWORD_PTR): Integer; stdcall;
- {$EXTERNALSYM LPCONDITIONPROC}
- LPWSAOVERLAPPED_COMPLETION_ROUTINE = procedure(dwError, cbTransferred: DWORD; lpOverlapped: LPWSAOVERLAPPED; dwFlags: DWORD); stdcall;
- {$EXTERNALSYM LPWSAOVERLAPPED_COMPLETION_ROUTINE}
- //
- // WinSock 2 extension -- manifest constants and associated structures
- // for WSANSPIoctl()
- //
- const
- SIO_NSP_NOTIFY_CHANGE = IOC_IN or IOC_WS2 or 25;
- {$EXTERNALSYM SIO_NSP_NOTIFY_CHANGE}
- type
- _WSACOMPLETIONTYPE = (
- NSP_NOTIFY_IMMEDIATELY,
- NSP_NOTIFY_HWND,
- NSP_NOTIFY_EVENT,
- NSP_NOTIFY_PORT,
- NSP_NOTIFY_APC);
- {$EXTERNALSYM _WSACOMPLETIONTYPE}
- WSACOMPLETIONTYPE = _WSACOMPLETIONTYPE;
- {$EXTERNALSYM WSACOMPLETIONTYPE}
- PWSACOMPLETIONTYPE = ^WSACOMPLETIONTYPE;
- {$EXTERNALSYM PWSACOMPLETIONTYPE}
- LPWSACOMPLETIONTYPE = ^WSACOMPLETIONTYPE;
- {$EXTERNALSYM LPWSACOMPLETIONTYPE}
- TWsaCompletionType = WSACOMPLETIONTYPE;
- _WSACOMPLETION = record
- Type_: WSACOMPLETIONTYPE;
- case Integer of // Parameters
- 0: ( // WindowMessage
- hWnd: HWND;
- uMsg: UINT;
- context: WPARAM);
- (* TODO
- 1: ( // Event
- lpOverlapped: LPWSAOVERLAPPED);
- 2: ( // Apc
- lpOverlapped: LPWSAOVERLAPPED;
- lpfnCompletionProc: LPWSAOVERLAPPED_COMPLETION_ROUTINE);
- *)
- 3: ( // Port
- lpOverlapped: LPWSAOVERLAPPED;
- hPort: HANDLE;
- Key: ULONG_PTR);
- end;
- {$EXTERNALSYM _WSACOMPLETION}
- WSACOMPLETION = _WSACOMPLETION;
- {$EXTERNALSYM WSACOMPLETION}
- PWSACOMPLETION = ^WSACOMPLETION;
- {$EXTERNALSYM PWSACOMPLETION}
- LPWSACOMPLETION = ^WSACOMPLETION;
- {$EXTERNALSYM LPWSACOMPLETION}
- TWsaCompletion = WSACOMPLETION;
- //
- // WinSock 2 extension -- manifest constants for SIO_TRANSLATE_HANDLE ioctl
- //
- const
- TH_NETDEV = $00000001;
- {$EXTERNALSYM TH_NETDEV}
- TH_TAPI = $00000002;
- {$EXTERNALSYM TH_TAPI}
- //
- // Microsoft Windows Extended data types required for the functions to
- // convert back and forth between binary and string forms of
- // addresses.
- //
- type
- LPSOCKADDR = ^sockaddr;
- {$EXTERNALSYM LPSOCKADDR}
- PSOCKADDR_STORAGE = ^sockaddr_storage;
- {$EXTERNALSYM PSOCKADDR_STORAGE}
- LPSOCKADDR_STORAGE = ^sockaddr_storage;
- {$EXTERNALSYM LPSOCKADDR_STORAGE}
- //
- // Manifest constants and type definitions related to name resolution and
- // registration (RNR) API
- //
- _BLOB = record
- cbSize: ULONG;
- pBlobData: LPBYTE;
- end;
- {$EXTERNALSYM _BLOB}
- BLOB = _BLOB;
- {$EXTERNALSYM BLOB}
- LPBLOB = ^BLOB;
- {$EXTERNALSYM LPBLOB}
- TBlob = BLOB;
- PBlob = LPBLOB;
- //
- // Service Install Flags
- //
- const
- SERVICE_MULTIPLE = $00000001;
- {$EXTERNALSYM SERVICE_MULTIPLE}
- //
- //& Name Spaces
- //
- NS_ALL = 0;
- {$EXTERNALSYM NS_ALL}
- NS_SAP = 1;
- {$EXTERNALSYM NS_SAP}
- NS_NDS = 2;
- {$EXTERNALSYM NS_NDS}
- NS_PEER_BROWSE = 3;
- {$EXTERNALSYM NS_PEER_BROWSE}
- NS_SLP = 5;
- {$EXTERNALSYM NS_SLP}
- NS_DHCP = 6;
- {$EXTERNALSYM NS_DHCP}
- NS_TCPIP_LOCAL = 10;
- {$EXTERNALSYM NS_TCPIP_LOCAL}
- NS_TCPIP_HOSTS = 11;
- {$EXTERNALSYM NS_TCPIP_HOSTS}
- NS_DNS = 12;
- {$EXTERNALSYM NS_DNS}
- NS_NETBT = 13;
- {$EXTERNALSYM NS_NETBT}
- NS_WINS = 14;
- {$EXTERNALSYM NS_WINS}
- NS_NLA = 15; // Network Location Awareness
- {$EXTERNALSYM NS_NLA}
- NS_NBP = 20;
- {$EXTERNALSYM NS_NBP}
- NS_MS = 30;
- {$EXTERNALSYM NS_MS}
- NS_STDA = 31;
- {$EXTERNALSYM NS_STDA}
- NS_NTDS = 32;
- {$EXTERNALSYM NS_NTDS}
- NS_X500 = 40;
- {$EXTERNALSYM NS_X500}
- NS_NIS = 41;
- {$EXTERNALSYM NS_NIS}
- NS_NISPLUS = 42;
- {$EXTERNALSYM NS_NISPLUS}
- NS_WRQ = 50;
- {$EXTERNALSYM NS_WRQ}
- NS_NETDES = 60; // Network Designers Limited
- {$EXTERNALSYM NS_NETDES}
- //
- // Resolution flags for WSAGetAddressByName().
- // Note these are also used by the 1.1 API GetAddressByName, so
- // leave them around.
- //
- RES_UNUSED_1 = $00000001;
- {$EXTERNALSYM RES_UNUSED_1}
- RES_FLUSH_CACHE = $00000002;
- {$EXTERNALSYM RES_FLUSH_CACHE}
- RES_SERVICE = $00000004;
- {$EXTERNALSYM RES_SERVICE}
- //
- // Well known value names for Service Types
- //
- SERVICE_TYPE_VALUE_IPXPORTA = 'IpxSocket';
- {$EXTERNALSYM SERVICE_TYPE_VALUE_IPXPORTA}
- SERVICE_TYPE_VALUE_IPXPORTW = WideString('IpxSocket');
- {$EXTERNALSYM SERVICE_TYPE_VALUE_IPXPORTW}
- SERVICE_TYPE_VALUE_SAPIDA = 'SapId';
- {$EXTERNALSYM SERVICE_TYPE_VALUE_SAPIDA}
- SERVICE_TYPE_VALUE_SAPIDW = WideString('SapId');
- {$EXTERNALSYM SERVICE_TYPE_VALUE_SAPIDW}
- SERVICE_TYPE_VALUE_TCPPORTA = 'TcpPort';
- {$EXTERNALSYM SERVICE_TYPE_VALUE_TCPPORTA}
- SERVICE_TYPE_VALUE_TCPPORTW = WideString('TcpPort');
- {$EXTERNALSYM SERVICE_TYPE_VALUE_TCPPORTW}
- SERVICE_TYPE_VALUE_UDPPORTA = 'UdpPort';
- {$EXTERNALSYM SERVICE_TYPE_VALUE_UDPPORTA}
- SERVICE_TYPE_VALUE_UDPPORTW = WideString('UdpPort');
- {$EXTERNALSYM SERVICE_TYPE_VALUE_UDPPORTW}
- SERVICE_TYPE_VALUE_OBJECTIDA = 'ObjectId';
- {$EXTERNALSYM SERVICE_TYPE_VALUE_OBJECTIDA}
- SERVICE_TYPE_VALUE_OBJECTIDW = WideString('ObjectId');
- {$EXTERNALSYM SERVICE_TYPE_VALUE_OBJECTIDW}
- {$IFDEF UNICODE}
- SERVICE_TYPE_VALUE_SAPID = SERVICE_TYPE_VALUE_SAPIDW;
- {$EXTERNALSYM SERVICE_TYPE_VALUE_SAPID}
- SERVICE_TYPE_VALUE_TCPPORT = SERVICE_TYPE_VALUE_TCPPORTW;
- {$EXTERNALSYM SERVICE_TYPE_VALUE_TCPPORT}
- SERVICE_TYPE_VALUE_UDPPORT = SERVICE_TYPE_VALUE_UDPPORTW;
- {$EXTERNALSYM SERVICE_TYPE_VALUE_UDPPORT}
- SERVICE_TYPE_VALUE_OBJECTID = SERVICE_TYPE_VALUE_OBJECTIDW;
- {$EXTERNALSYM SERVICE_TYPE_VALUE_OBJECTID}
- {$ELSE}
- SERVICE_TYPE_VALUE_SAPID = SERVICE_TYPE_VALUE_SAPIDA;
- {$EXTERNALSYM SERVICE_TYPE_VALUE_SAPID}
- SERVICE_TYPE_VALUE_TCPPORT = SERVICE_TYPE_VALUE_TCPPORTA;
- {$EXTERNALSYM SERVICE_TYPE_VALUE_TCPPORT}
- SERVICE_TYPE_VALUE_UDPPORT = SERVICE_TYPE_VALUE_UDPPORTA;
- {$EXTERNALSYM SERVICE_TYPE_VALUE_UDPPORT}
- SERVICE_TYPE_VALUE_OBJECTID = SERVICE_TYPE_VALUE_OBJECTIDA;
- {$EXTERNALSYM SERVICE_TYPE_VALUE_OBJECTID}
- {$ENDIF UNICODE}
- //
- // SockAddr Information
- //
- type
- LPSOCKET_ADDRESS = ^SOCKET_ADDRESS;
- {$EXTERNALSYM LPSOCKET_ADDRESS}
- PSOCKET_ADDRESS = ^SOCKET_ADDRESS;
- {$EXTERNALSYM PSOCKET_ADDRESS}
- _SOCKET_ADDRESS = record
- lpSockaddr: LPSOCKADDR;
- iSockaddrLength: Integer;
- end;
- {$EXTERNALSYM _SOCKET_ADDRESS}
- SOCKET_ADDRESS = _SOCKET_ADDRESS;
- {$EXTERNALSYM SOCKET_ADDRESS}
- TSocketAddress = SOCKET_ADDRESS;
- PSocketAddress = PSOCKET_ADDRESS;
- //
- // CSAddr Information
- //
- LPCSADDR_INFO = ^CSADDR_INFO;
- {$EXTERNALSYM LPCSADDR_INFO}
- PCSADDR_INFO = ^CSADDR_INFO;
- {$EXTERNALSYM PCSADDR_INFO}
- _CSADDR_INFO = record
- LocalAddr: SOCKET_ADDRESS;
- RemoteAddr: SOCKET_ADDRESS;
- iSocketType: Integer;
- iProtocol: Integer;
- end;
- {$EXTERNALSYM _CSADDR_INFO}
- CSADDR_INFO = _CSADDR_INFO;
- {$EXTERNALSYM CSADDR_INFO}
- TCsAddrInfo = CSADDR_INFO;
- PCsAddrInfo = PCSADDR_INFO;
- //
- // Address list returned via SIO_ADDRESS_LIST_QUERY
- //
- LPSOCKET_ADDRESS_LIST = ^SOCKET_ADDRESS_LIST;
- {$EXTERNALSYM LPSOCKET_ADDRESS_LIST}
- _SOCKET_ADDRESS_LIST = record
- iAddressCount: Integer;
- Address: array [0..0] of SOCKET_ADDRESS;
- end;
- {$EXTERNALSYM _SOCKET_ADDRESS_LIST}
- SOCKET_ADDRESS_LIST = _SOCKET_ADDRESS_LIST;
- {$EXTERNALSYM SOCKET_ADDRESS_LIST}
- TSocketAddressList = SOCKET_ADDRESS_LIST;
- PSocketAddressList = LPSOCKET_ADDRESS_LIST;
- //
- // Address Family/Protocol Tuples
- //
- LPAFPROTOCOLS = ^AFPROTOCOLS;
- {$EXTERNALSYM LPAFPROTOCOLS}
- PAFPROTOCOLS = ^AFPROTOCOLS;
- {$EXTERNALSYM PAFPROTOCOLS}
- _AFPROTOCOLS = record
- iAddressFamily: Integer;
- iProtocol: Integer;
- end;
- {$EXTERNALSYM _AFPROTOCOLS}
- AFPROTOCOLS = _AFPROTOCOLS;
- {$EXTERNALSYM AFPROTOCOLS}
- TAfProtocols = AFPROTOCOLS;
- //
- // Client Query API Typedefs
- //
- //
- // The comparators
- //
- _WSAEcomparator = (COMP_EQUAL, COMP_NOTLESS);
- {$EXTERNALSYM _WSAEcomparator}
- WSAECOMPARATOR = _WSAEcomparator;
- {$EXTERNALSYM WSAECOMPARATOR}
- PWSAECOMPARATOR = ^WSAECOMPARATOR;
- {$EXTERNALSYM PWSAECOMPARATOR}
- LPWSAECOMPARATOR = ^WSAECOMPARATOR;
- {$EXTERNALSYM LPWSAECOMPARATOR}
- LPWSAVERSION = ^WSAVERSION;
- {$EXTERNALSYM LPWSAVersion}
- PWSAVERSION = ^WSAVERSION;
- {$EXTERNALSYM PWSAVersion}
- _WSAVersion = record
- dwVersion: DWORD;
- ecHow: WSAECOMPARATOR;
- end;
- {$EXTERNALSYM _WSAVersion}
- WSAVERSION = _WSAVersion;
- {$EXTERNALSYM WSAVERSION}
- TWsaVersion = WSAVERSION;
- _WSAQuerySetA = record
- dwSize: DWORD;
- lpszServiceInstanceName: LPSTR;
- lpServiceClassId: PGUID;
- lpVersion: LPWSAVERSION;
- lpszComment: LPSTR;
- dwNameSpace: DWORD;
- lpNSProviderId: PGUID;
- lpszContext: LPSTR;
- dwNumberOfProtocols: DWORD;
- lpafpProtocols: LPAFPROTOCOLS;
- lpszQueryString: LPSTR;
- dwNumberOfCsAddrs: DWORD;
- lpcsaBuffer: LPCSADDR_INFO;
- dwOutputFlags: DWORD;
- lpBlob: LPBLOB;
- end;
- {$EXTERNALSYM _WSAQuerySetA}
- WSAQUERYSETA = _WSAQuerySetA;
- {$EXTERNALSYM WSAQUERYSETA}
- PWSAQUERYSETA = ^WSAQUERYSETA;
- {$EXTERNALSYM PWSAQUERYSETA}
- LPWSAQUERYSETA = ^WSAQUERYSETA;
- {$EXTERNALSYM LPWSAQUERYSETA}
- TWsaQuerySetA = WSAQUERYSETA;
- _WSAQuerySetW = record
- dwSize: DWORD;
- lpszServiceInstanceName: LPWSTR;
- lpServiceClassId: PGUID;
- lpVersion: LPWSAVERSION;
- lpszComment: LPWSTR;
- dwNameSpace: DWORD;
- lpNSProviderId: PGUID;
- lpszContext: LPWSTR;
- dwNumberOfProtocols: DWORD;
- lpafpProtocols: LPAFPROTOCOLS;
- lpszQueryString: LPWSTR;
- dwNumberOfCsAddrs: DWORD;
- lpcsaBuffer: LPCSADDR_INFO;
- dwOutputFlags: DWORD;
- lpBlob: LPBLOB;
- end;
- {$EXTERNALSYM _WSAQuerySetW}
- WSAQUERYSETW = _WSAQuerySetW;
- {$EXTERNALSYM WSAQUERYSETW}
- PWSAQUERYSETW = ^WSAQUERYSETW;
- {$EXTERNALSYM PWSAQUERYSETW}
- LPWSAQUERYSETW = ^WSAQUERYSETW;
- {$EXTERNALSYM LPWSAQUERYSETW}
- TWsaQuerySetW = WSAQUERYSETW;
- {$IFDEF UNICODE}
- WSAQUERYSET = WSAQUERYSETW;
- {$EXTERNALSYM WSAQUERYSET}
- PWSAQUERYSET = PWSAQUERYSETW;
- {$EXTERNALSYM PWSAQUERYSET}
- LPWSAQUERYSET = LPWSAQUERYSETW;
- {$EXTERNALSYM LPWSAQUERYSET}
- TWsaQuerySet = TWsaQuerySetW;
- {$ELSE}
- WSAQUERYSET = WSAQUERYSETA;
- {$EXTERNALSYM WSAQUERYSET}
- PWSAQUERYSET = PWSAQUERYSETA;
- {$EXTERNALSYM PWSAQUERYSET}
- LPWSAQUERYSET = LPWSAQUERYSETA;
- {$EXTERNALSYM LPWSAQUERYSET}
- TWsaQuerySet = TWsaQuerySetA;
- {$ENDIF UNICODE}
- const
- LUP_DEEP = $0001;
- {$EXTERNALSYM LUP_DEEP}
- LUP_CONTAINERS = $0002;
- {$EXTERNALSYM LUP_CONTAINERS}
- LUP_NOCONTAINERS = $0004;
- {$EXTERNALSYM LUP_NOCONTAINERS}
- LUP_NEAREST = $0008;
- {$EXTERNALSYM LUP_NEAREST}
- LUP_RETURN_NAME = $0010;
- {$EXTERNALSYM LUP_RETURN_NAME}
- LUP_RETURN_TYPE = $0020;
- {$EXTERNALSYM LUP_RETURN_TYPE}
- LUP_RETURN_VERSION = $0040;
- {$EXTERNALSYM LUP_RETURN_VERSION}
- LUP_RETURN_COMMENT = $0080;
- {$EXTERNALSYM LUP_RETURN_COMMENT}
- LUP_RETURN_ADDR = $0100;
- {$EXTERNALSYM LUP_RETURN_ADDR}
- LUP_RETURN_BLOB = $0200;
- {$EXTERNALSYM LUP_RETURN_BLOB}
- LUP_RETURN_ALIASES = $0400;
- {$EXTERNALSYM LUP_RETURN_ALIASES}
- LUP_RETURN_QUERY_STRING = $0800;
- {$EXTERNALSYM LUP_RETURN_QUERY_STRING}
- LUP_RETURN_ALL = $0FF0;
- {$EXTERNALSYM LUP_RETURN_ALL}
- LUP_RES_SERVICE = $8000;
- {$EXTERNALSYM LUP_RES_SERVICE}
- LUP_FLUSHCACHE = $1000;
- {$EXTERNALSYM LUP_FLUSHCACHE}
- LUP_FLUSHPREVIOUS = $2000;
- {$EXTERNALSYM LUP_FLUSHPREVIOUS}
- //
- // Return flags
- //
- RESULT_IS_ALIAS = $0001;
- {$EXTERNALSYM RESULT_IS_ALIAS}
- RESULT_IS_ADDED = $0010;
- {$EXTERNALSYM RESULT_IS_ADDED}
- RESULT_IS_CHANGED = $0020;
- {$EXTERNALSYM RESULT_IS_CHANGED}
- RESULT_IS_DELETED = $0040;
- {$EXTERNALSYM RESULT_IS_DELETED}
- //
- // Service Address Registration and Deregistration Data Types.
- //
- type
- _WSAESETSERVICEOP = (RNRSERVICE_REGISTER, RNRSERVICE_DEREGISTER, RNRSERVICE_DELETE);
- {$EXTERNALSYM _WSAESETSERVICEOP}
- WSAESETSERVICEOP = _WSAESETSERVICEOP;
- {$EXTERNALSYM WSAESETSERVICEOP}
- PWSAESETSERVICEOP = ^WSAESETSERVICEOP;
- {$EXTERNALSYM PWSAESETSERVICEOP}
- LPWSAESETSERVICEOP = ^WSAESETSERVICEOP;
- {$EXTERNALSYM LPWSAESETSERVICEOP}
- //
- // Service Installation/Removal Data Types.
- //
- _WSANSClassInfoA = record
- lpszName: LPSTR;
- dwNameSpace: DWORD;
- dwValueType: DWORD;
- dwValueSize: DWORD;
- lpValue: LPVOID;
- end;
- {$EXTERNALSYM _WSANSClassInfoA}
- WSANSCLASSINFOA = _WSANSClassInfoA;
- {$EXTERNALSYM WSANSCLASSINFOA}
- PWSANSCLASSINFOA = ^WSANSCLASSINFOA;
- {$EXTERNALSYM PWSANSCLASSINFOA}
- LPWSANSCLASSINFOA = ^WSANSCLASSINFOA;
- {$EXTERNALSYM LPWSANSCLASSINFOA}
- TWsaNsClassInfoA = WSANSCLASSINFOA;
- _WSANSClassInfoW = record
- lpszName: LPWSTR;
- dwNameSpace: DWORD;
- dwValueType: DWORD;
- dwValueSize: DWORD;
- lpValue: LPVOID;
- end;
- {$EXTERNALSYM _WSANSClassInfoW}
- WSANSCLASSINFOW = _WSANSClassInfoW;
- {$EXTERNALSYM WSANSCLASSINFOW}
- PWSANSCLASSINFOW = ^WSANSCLASSINFOW;
- {$EXTERNALSYM PWSANSCLASSINFOW}
- LPWSANSCLASSINFOW = ^WSANSCLASSINFOW;
- {$EXTERNALSYM LPWSANSCLASSINFOW}
- TWsaNsClassInfoW = WSANSCLASSINFOW;
- {$IFDEF UNICODE}
- WSANSCLASSINFO = WSANSCLASSINFOW;
- {$EXTERNALSYM WSANSCLASSINFO}
- PWSANSCLASSINFO = PWSANSCLASSINFOW;
- {$EXTERNALSYM PWSANSCLASSINFO}
- LPWSANSCLASSINFO = LPWSANSCLASSINFOW;
- {$EXTERNALSYM LPWSANSCLASSINFO}
- TWsaNsClassInfo = TWsaNsClassInfoW;
- {$ELSE}
- WSANSCLASSINFO = WSANSCLASSINFOA;
- {$EXTERNALSYM WSANSCLASSINFO}
- PWSANSCLASSINFO = PWSANSCLASSINFOA;
- {$EXTERNALSYM PWSANSCLASSINFO}
- LPWSANSCLASSINFO = LPWSANSCLASSINFOA;
- {$EXTERNALSYM LPWSANSCLASSINFO}
- TWsaNsClassInfo = TWsaNsClassInfoA;
- {$ENDIF UNICODE}
- _WSAServiceClassInfoA = record
- lpServiceClassId: PGUID;
- lpszServiceClassName: LPSTR;
- dwCount: DWORD;
- lpClassInfos: LPWSANSCLASSINFOA;
- end;
- {$EXTERNALSYM _WSAServiceClassInfoA}
- WSASERVICECLASSINFOA = _WSAServiceClassInfoA;
- {$EXTERNALSYM WSASERVICECLASSINFOA}
- PWSASERVICECLASSINFOA = ^WSASERVICECLASSINFOA;
- {$EXTERNALSYM PWSASERVICECLASSINFOA}
- LPWSASERVICECLASSINFOA = ^WSASERVICECLASSINFOA;
- {$EXTERNALSYM LPWSASERVICECLASSINFOA}
- TWsaServiceClassInfoA = WSASERVICECLASSINFOA;
- _WSAServiceClassInfoW = record
- lpServiceClassId: PGUID;
- lpszServiceClassName: LPWSTR;
- dwCount: DWORD;
- lpClassInfos: LPWSANSCLASSINFOW;
- end;
- {$EXTERNALSYM _WSAServiceClassInfoW}
- WSASERVICECLASSINFOW = _WSAServiceClassInfoW;
- {$EXTERNALSYM WSASERVICECLASSINFOW}
- PWSASERVICECLASSINFOW = ^WSASERVICECLASSINFOW;
- {$EXTERNALSYM PWSASERVICECLASSINFOW}
- LPWSASERVICECLASSINFOW = ^WSASERVICECLASSINFOW;
- {$EXTERNALSYM LPWSASERVICECLASSINFOW}
- TWsaServiceClassInfoW = WSASERVICECLASSINFOW;
- {$IFDEF UNICODE}
- WSASERVICECLASSINFO = WSASERVICECLASSINFOW;
- {$EXTERNALSYM WSASERVICECLASSINFO}
- PWSASERVICECLASSINFO = PWSASERVICECLASSINFOW;
- {$EXTERNALSYM PWSASERVICECLASSINFO}
- LPWSASERVICECLASSINFO = LPWSASERVICECLASSINFOW;
- {$EXTERNALSYM LPWSASERVICECLASSINFO}
- TWsaServiceClassInfo = TWsaServiceClassInfoW;
- {$ELSE}
- WSASERVICECLASSINFO = WSASERVICECLASSINFOA;
- {$EXTERNALSYM WSASERVICECLASSINFO}
- PWSASERVICECLASSINFO = PWSASERVICECLASSINFOA;
- {$EXTERNALSYM PWSASERVICECLASSINFO}
- LPWSASERVICECLASSINFO = LPWSASERVICECLASSINFOA;
- {$EXTERNALSYM LPWSASERVICECLASSINFO}
- TWsaServiceClassInfo = TWsaServiceClassInfoA;
- {$ENDIF UNICODE}
- LPWSANAMESPACE_INFOA = ^WSANAMESPACE_INFOA;
- {$EXTERNALSYM LPWSANAMESPACE_INFOA}
- PWSANAMESPACE_INFOA = ^WSANAMESPACE_INFOA;
- {$EXTERNALSYM PWSANAMESPACE_INFOA}
- _WSANAMESPACE_INFOA = record
- NSProviderId: TGUID;
- dwNameSpace: DWORD;
- fActive: BOOL;
- dwVersion: DWORD;
- lpszIdentifier: LPSTR;
- end;
- {$EXTERNALSYM _WSANAMESPACE_INFOA}
- WSANAMESPACE_INFOA = _WSANAMESPACE_INFOA;
- {$EXTERNALSYM WSANAMESPACE_INFOA}
- TWsaNameSpaceInfoA = WSANAMESPACE_INFOA;
- PWsaNameSpaceInfoA = LPWSANAMESPACE_INFOA;
- LPWSANAMESPACE_INFOW = ^WSANAMESPACE_INFOW;
- {$EXTERNALSYM LPWSANAMESPACE_INFOW}
- PWSANAMESPACE_INFOW = ^WSANAMESPACE_INFOW;
- {$EXTERNALSYM PWSANAMESPACE_INFOW}
- _WSANAMESPACE_INFOW = record
- NSProviderId: TGUID;
- dwNameSpace: DWORD;
- fActive: BOOL;
- dwVersion: DWORD;
- lpszIdentifier: LPWSTR;
- end;
- {$EXTERNALSYM _WSANAMESPACE_INFOW}
- WSANAMESPACE_INFOW = _WSANAMESPACE_INFOW;
- {$EXTERNALSYM WSANAMESPACE_INFOW}
- TWsaNameSpaceInfoW = WSANAMESPACE_INFOW;
- PWsaNameSpaceInfoW = PWSANAMESPACE_INFOW;
- {$IFDEF UNICODE}
- WSANAMESPACE_INFO = WSANAMESPACE_INFOW;
- {$EXTERNALSYM WSANAMESPACE_INFO}
- PWSANAMESPACE_INFO = PWSANAMESPACE_INFOW;
- {$EXTERNALSYM PWSANAMESPACE_INFO}
- LPWSANAMESPACE_INFO = LPWSANAMESPACE_INFOW;
- {$EXTERNALSYM LPWSANAMESPACE_INFO}
- TWsaNameSpaceInfo = TWsaNameSpaceInfoW;
- PWsaNameSpaceInfo = PWsaNameSpaceInfoW;
- {$ELSE}
- WSANAMESPACE_INFO = WSANAMESPACE_INFOA;
- {$EXTERNALSYM WSANAMESPACE_INFO}
- PWSANAMESPACE_INFO = PWSANAMESPACE_INFOA;
- {$EXTERNALSYM PWSANAMESPACE_INFO}
- LPWSANAMESPACE_INFO = LPWSANAMESPACE_INFOA;
- {$EXTERNALSYM LPWSANAMESPACE_INFO}
- TWsaNameSpaceInfo = TWsaNameSpaceInfoA;
- PWsaNameSpaceInfo = PWsaNameSpaceInfoA;
- {$ENDIF UNICODE}
- // Socket function prototypes
- function accept(s: TSocket; addr: PSockAddr; addrlen: PINT): TSocket; stdcall;
- {$EXTERNALSYM accept}
- function bind(s: TSocket; name: PSockAddr; namelen: Integer): Integer; stdcall;
- {$EXTERNALSYM bind}
- function closesocket(s: TSocket): Integer; stdcall;
- {$EXTERNALSYM closesocket}
- function connect(s: TSocket; name: PSockAddr; namelen: Integer): Integer; stdcall;
- {$EXTERNALSYM connect}
- function ioctlsocket(s: TSocket; cmd: Longint; var argp: u_long): Integer; stdcall;
- {$EXTERNALSYM ioctlsocket}
- function getpeername(s: TSocket; name: PSockAddr; var namelen: Integer): Integer; stdcall;
- {$EXTERNALSYM getpeername}
- function getsockname(s: TSocket; name: PSockAddr; var namelen: Integer): Integer; stdcall;
- {$EXTERNALSYM getsockname}
- function getsockopt(s: TSocket; level, optname: Integer; optval: PChar; var optlen: Integer): Integer; stdcall;
- {$EXTERNALSYM getsockopt}
- function htonl(hostlong: u_long): u_long; stdcall;
- {$EXTERNALSYM htonl}
- function htons(hostshort: u_short): u_short; stdcall;
- {$EXTERNALSYM htons}
- function inet_addr(cp: PChar): u_long; stdcall;
- {$EXTERNALSYM inet_addr}
- function inet_ntoa(inaddr: in_addr): PChar; stdcall;
- {$EXTERNALSYM inet_ntoa}
- function listen(s: TSocket; backlog: Integer): Integer; stdcall;
- {$EXTERNALSYM listen}
- function ntohl(netlong: u_long): u_long; stdcall;
- {$EXTERNALSYM ntohl}
- function ntohs(netshort: u_short): u_short; stdcall;
- {$EXTERNALSYM ntohs}
- function recv(s: TSocket; var buf; len, flags: Integer): Integer; stdcall;
- {$EXTERNALSYM recv}
- function recvfrom(s: TSocket; var buf; len, flags: Integer; from: PSockAddr; var fromlen: Integer): Integer; stdcall;
- {$EXTERNALSYM recvfrom}
- function select(nfds: Integer; readfds, writefds, exceptfds: PFdSet; timeout: PTimeVal): Integer; stdcall;
- {$EXTERNALSYM select}
- function send(s: TSocket; var buf; len, flags: Integer): Integer; stdcall;
- {$EXTERNALSYM send}
- function sendto(s: TSocket; var buf; len, flags: Integer; toaddr: PSockAddr; tolen: Integer): Integer; stdcall;
- {$EXTERNALSYM sendto}
- function setsockopt(s: TSocket; level, optname: Integer; optval: PChar; optlen: Integer): Integer; stdcall;
- {$EXTERNALSYM setsockopt}
- function shutdown(s: TSocket; how: Integer): Integer; stdcall;
- {$EXTERNALSYM shutdown}
- function socket(af, type_, protocol: Integer): TSocket; stdcall;
- {$EXTERNALSYM socket}
- // Database function prototypes
- function gethostbyaddr(addr: PChar; len, type_: Integer): PHostEnt; stdcall;
- {$EXTERNALSYM gethostbyaddr}
- function gethostbyname(name: PChar): PHostEnt; stdcall;
- {$EXTERNALSYM gethostbyname}
- function gethostname(name: PChar; namelen: Integer): Integer; stdcall;
- {$EXTERNALSYM gethostname}
- function getservbyport(port: Integer; proto: PChar): PServEnt; stdcall;
- {$EXTERNALSYM getservbyport}
- function getservbyname(name, proto: PChar): PServEnt; stdcall;
- {$EXTERNALSYM getservbyname}
- function getprotobynumber(number: Integer): PProtoEnt; stdcall;
- {$EXTERNALSYM getprotobynumber}
- function getprotobyname(name: PChar): PProtoEnt; stdcall;
- {$EXTERNALSYM getprotobyname}
- // Microsoft Windows Extension function prototypes
- function WSAStartup(wVersionRequired: WORD; var lpWSAData: TWSAData): Integer; stdcall;
- {$EXTERNALSYM WSAStartup}
- function WSACleanup: Integer; stdcall;
- {$EXTERNALSYM WSACleanup}
- procedure WSASetLastError(iError: Integer); stdcall;
- {$EXTERNALSYM WSASetLastError}
- function WSAGetLastError: Integer; stdcall;
- {$EXTERNALSYM WSAGetLastError}
- function WSAIsBlocking: BOOL; stdcall;
- {$EXTERNALSYM WSAIsBlocking}
- function WSAUnhookBlockingHook: Integer; stdcall;
- {$EXTERNALSYM WSAUnhookBlockingHook}
- function WSASetBlockingHook(lpBlockFunc: FARPROC): FARPROC; stdcall;
- {$EXTERNALSYM WSASetBlockingHook}
- function WSACancelBlockingCall: Integer; stdcall;
- {$EXTERNALSYM WSACancelBlockingCall}
- function WSAAsyncGetServByName(hWnd: HWND; wMsg: u_int; name, proto, buf: PChar;
- buflen: Integer): HANDLE; stdcall;
- {$EXTERNALSYM WSAAsyncGetServByName}
- function WSAAsyncGetServByPort(hWnd: HWND; wMsg: u_int; port: Integer;
- proto, buf: PChar; buflen: Integer): HANDLE; stdcall;
- {$EXTERNALSYM WSAAsyncGetServByPort}
- function WSAAsyncGetProtoByName(hWnd: HWND; wMsg: u_int; name, buf: PChar;
- buflen: Integer): HANDLE; stdcall;
- {$EXTERNALSYM WSAAsyncGetProtoByName}
- function WSAAsyncGetProtoByNumber(hWnd: HWND; wMsg: u_int; number: Integer;
- buf: PChar; buflen: Integer): HANDLE; stdcall;
- {$EXTERNALSYM WSAAsyncGetProtoByNumber}
- function WSAAsyncGetHostByName(hWnd: HWND; wMsg: u_int; name, buf: PChar;
- buflen: Integer): HANDLE; stdcall;
- {$EXTERNALSYM WSAAsyncGetHostByName}
- function WSAAsyncGetHostByAddr(hWnd: HWND; wMsg: u_int; addr: PChar;
- len, type_: Integer; buf: PChar; buflen: Integer): HANDLE; stdcall;
- {$EXTERNALSYM WSAAsyncGetHostByAddr}
- function WSACancelAsyncRequest(hAsyncTaskHandle: HANDLE): Integer; stdcall;
- {$EXTERNALSYM WSACancelAsyncRequest}
- function WSAAsyncSelect(s: TSocket; hWnd: HWND; wMsg: u_int; lEvent: Longint): Integer; stdcall;
- {$EXTERNALSYM WSAAsyncSelect}
- // WinSock 2 API new function prototypes
- function WSAAccept(s: TSocket; addr: PSockAddr; addrlen: PINT;
- lpfnCondition: LPCONDITIONPROC; dwCallbackData: DWORD): TSocket; stdcall;
- {$EXTERNALSYM WSAAccept}
- function WSACloseEvent(hEvent: WSAEVENT): BOOL; stdcall;
- {$EXTERNALSYM WSACloseEvent}
- function WSAConnect(s: TSocket; name: PSockAddr; namelen: Integer; lpCallerData: LPWSABUF;
- lpCalleeData: LPWSABUF; lpSQOS: LPQOS; lpGQOS: LPQOS): Integer; stdcall;
- {$EXTERNALSYM WSAConnect}
- function WSACreateEvent: WSAEVENT; stdcall;
- {$EXTERNALSYM WSACreateEvent}
- function WSADuplicateSocketA(s: TSocket; dwProcessId: DWORD; lpProtocolInfo: LPWSAPROTOCOL_INFOA): Integer; stdcall;
- {$EXTERNALSYM WSADuplicateSocketA}
- function WSADuplicateSocketW(s: TSocket; dwProcessId: DWORD; lpProtocolInfo: LPWSAPROTOCOL_INFOW): Integer; stdcall;
- {$EXTERNALSYM WSADuplicateSocketW}
- function WSADuplicateSocket(s: TSocket; dwProcessId: DWORD; lpProtocolInfo: LPWSAPROTOCOL_INFO): Integer; stdcall;
- {$EXTERNALSYM WSADuplicateSocket}
- function WSAEnumNetworkEvents(s: TSocket; hEventObject: WSAEVENT; lpNetworkEvents: LPWSANETWORKEVENTS): Integer; stdcall;
- {$EXTERNALSYM WSAEnumNetworkEvents}
- function WSAEnumProtocolsA(lpiProtocols: PINT; lpProtocolBuffer: LPWSAPROTOCOL_INFOA;
- var lpdwBufferLength: DWORD): Integer; stdcall;
- {$EXTERNALSYM WSAEnumProtocolsA}
- function WSAEnumProtocolsW(lpiProtocols: PINT; lpProtocolBuffer: LPWSAPROTOCOL_INFOW;
- var lpdwBufferLength: DWORD): Integer; stdcall;
- {$EXTERNALSYM WSAEnumProtocolsW}
- function WSAEnumProtocols(lpiProtocols: PINT; lpProtocolBuffer: LPWSAPROTOCOL_INFO;
- var lpdwBufferLength: DWORD): Integer; stdcall;
- {$EXTERNALSYM WSAEnumProtocols}
- function WSAEventSelect(s: TSocket; hEventObject: WSAEVENT; lNetworkEvents: Longint): Integer; stdcall;
- {$EXTERNALSYM WSAEventSelect}
- function WSAGetOverlappedResult(s: TSocket; lpOverlapped: LPWSAOVERLAPPED;
- var lpcbTransfer: DWORD; fWait: BOOL; var lpdwFlags: DWORD): BOOL; stdcall; // Thanks Kai Henningsen for var on lpdwFlags
- {$EXTERNALSYM WSAGetOverlappedResult}
- function WSAGetQOSByName(s: TSocket; var lpQOSName: WSABUF; lpQOS: LPQOS): BOOL; stdcall;
- {$EXTERNALSYM WSAGetQOSByName}
- function WSAHtonl(s: TSocket; hostlong: u_long; var lpnetlong: u_long): Integer; stdcall;
- {$EXTERNALSYM WSAHtonl}
- function WSAHtons(s: TSocket; hostshort: u_short; var lpnetshort: u_short): Integer; stdcall;
- {$EXTERNALSYM WSAHtons}
- function WSAIoctl(s: TSocket; dwIoControlCode: DWORD; lpvInBuffer: LPVOID; cbInBuffer: DWORD;
- lpvOutBuffer: LPVOID; cbOutBuffer: DWORD; var lpcbBytesReturned: DWORD;
- lpOverlapped: LPWSAOVERLAPPED; lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): Integer; stdcall;
- {$EXTERNALSYM WSAIoctl}
- function WSAJoinLeaf(s: TSocket; name: PSockAddr; namelen: Integer; lpCallerData: LPWSABUF;
- lpCalleeData: LPWSABUF; lpSQOS, lpGQOS: LPQOS; dwFlags: DWORD): TSocket; stdcall;
- {$EXTERNALSYM WSAJoinLeaf}
- function WSANtohl(s: TSocket; netlong: u_long; var lphostlong: u_long): Integer; stdcall;
- {$EXTERNALSYM WSANtohl}
- function WSANtohs(s: TSocket; netshort: u_short; var lphostshort: u_short): Integer; stdcall;
- {$EXTERNALSYM WSANtohs}
- function WSARecv(s: TSocket; lpBuffers: LPWSABUF; dwBufferCount: DWORD;
- var lpNumberOfBytesRecvd, lpFlags: DWORD; lpOverlapped: LPWSAOVERLAPPED;
- lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): Integer; stdcall;
- {$EXTERNALSYM WSARecv}
- function WSARecvDisconnect(s: TSocket; lpInboundDisconnectData: LPWSABUF): Integer; stdcall;
- {$EXTERNALSYM WSARecvDisconnect}
- function WSARecvFrom(s: TSocket; lpBuffers: LPWSABUF; dwBufferCount: DWORD;
- var lpNumberOfBytesRecvd, lpFlags: DWORD; lpFrom: PSockAddr; lpFromlen: PINT;
- lpOverlapped: LPWSAOVERLAPPED; lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): Integer; stdcall;
- {$EXTERNALSYM WSARecvFrom}
- function WSAResetEvent(hEvent: WSAEVENT): BOOL; stdcall;
- {$EXTERNALSYM WSAResetEvent}
- function WSASend(s: TSocket; lpBuffers: LPWSABUF; dwBufferCount: DWORD;
- var lpNumberOfBytesSent: DWORD; dwFlags: DWORD; lpOverlapped: LPWSAOVERLAPPED;
- lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): Integer; stdcall;
- {$EXTERNALSYM WSASend}
- function WSASendDisconnect(s: TSocket; lpOutboundDisconnectData: LPWSABUF): Integer; stdcall;
- {$EXTERNALSYM WSASendDisconnect}
- function WSASendTo(s: TSocket; lpBuffers: LPWSABUF; dwBufferCount: DWORD;
- var lpNumberOfBytesSent: DWORD; dwFlags: DWORD; lpTo: PSockAddr; iTolen: Integer;
- lpOverlapped: LPWSAOVERLAPPED; lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): Integer; stdcall;
- {$EXTERNALSYM WSASendTo}
- function WSASetEvent(hEvent: WSAEVENT): BOOL; stdcall;
- {$EXTERNALSYM WSASetEvent}
- function WSASocketA(af, type_, protocol: Integer; lpProtocolInfo: LPWSAPROTOCOL_INFOA;
- g: GROUP; dwFlags: DWORD): TSocket; stdcall;
- {$EXTERNALSYM WSASocketA}
- function WSASocketW(af, type_, protocol: Integer; lpProtocolInfo: LPWSAPROTOCOL_INFOW;
- g: GROUP; dwFlags: DWORD): TSocket; stdcall;
- {$EXTERNALSYM WSASocketW}
- function WSASocket(af, type_, protocol: Integer; lpProtocolInfo: LPWSAPROTOCOL_INFO;
- g: GROUP; dwFlags: DWORD): TSocket; stdcall;
- {$EXTERNALSYM WSASocket}
- function WSAWaitForMultipleEvents(cEvents: DWORD; lphEvents: PWSAEVENT;
- fWaitAll: BOOL; dwTimeout: DWORD; fAlertable: BOOL): DWORD; stdcall;
- {$EXTERNALSYM WSAWaitForMultipleEvents}
- function WSAAddressToStringA(lpsaAddress: LPSOCKADDR; dwAddressLength: DWORD;
- lpProtocolInfo: LPWSAPROTOCOL_INFOA; lpszAddressString: LPSTR;
- var lpdwAddressStringLength: DWORD): Integer; stdcall;
- {$EXTERNALSYM WSAAddressToStringA}
- function WSAAddressToStringW(lpsaAddress: LPSOCKADDR; dwAddressLength: DWORD;
- lpProtocolInfo: LPWSAPROTOCOL_INFOW; lpszAddressString: LPWSTR;
- var lpdwAddressStringLength: DWORD): Integer; stdcall;
- {$EXTERNALSYM WSAAddressToStringW}
- function WSAAddressToString(lpsaAddress: LPSOCKADDR; dwAddressLength: DWORD;
- lpProtocolInfo: LPWSAPROTOCOL_INFO; lpszAddressString: LPTSTR;
- var lpdwAddressStringLength: DWORD): Integer; stdcall;
- {$EXTERNALSYM WSAAddressToString}
- function WSAStringToAddressA(AddressString: LPSTR; AddressFamily: Integer;
- lpProtocolInfo: LPWSAPROTOCOL_INFOA; lpAddress: LPSOCKADDR;
- var lpAddressLength: Integer): Integer; stdcall;
- {$EXTERNALSYM WSAStringToAddressA}
- function WSAStringToAddressW(AddressString: LPWSTR; AddressFamily: Integer;
- lpProtocolInfo: LPWSAPROTOCOL_INFOW; lpAddress: LPSOCKADDR;
- var lpAddressLength: Integer): Integer; stdcall;
- {$EXTERNALSYM WSAStringToAddressW}
- function WSAStringToAddress(AddressString: LPTSTR; AddressFamily: Integer;
- lpProtocolInfo: LPWSAPROTOCOL_INFO; lpAddress: LPSOCKADDR;
- var lpAddressLength: Integer): Integer; stdcall;
- {$EXTERNALSYM WSAStringToAddress}
- // Registration and Name Resolution API functions
- function WSALookupServiceBeginA(lpqsRestrictions: LPWSAQUERYSETA;
- dwControlFlags: DWORD; var lphLookup: HANDLE): Integer; stdcall;
- {$EXTERNALSYM WSALookupServiceBeginA}
- function WSALookupServiceBeginW(lpqsRestrictions: LPWSAQUERYSETW;
- dwControlFlags: DWORD; var lphLookup: HANDLE): Integer; stdcall;
- {$EXTERNALSYM WSALookupServiceBeginW}
- function WSALookupServiceBegin(lpqsRestrictions: LPWSAQUERYSET;
- dwControlFlags: DWORD; var lphLookup: HANDLE): Integer; stdcall;
- {$EXTERNALSYM WSALookupServiceBegin}
- function WSALookupServiceNextA(hLookup: HANDLE; dwControlFlags: DWORD;
- var lpdwBufferLength: DWORD; lpqsResults: LPWSAQUERYSETA): Integer; stdcall;
- {$EXTERNALSYM WSALookupServiceNextA}
- function WSALookupServiceNextW(hLookup: HANDLE; dwControlFlags: DWORD;
- var lpdwBufferLength: DWORD; lpqsResults: LPWSAQUERYSETW): Integer; stdcall;
- {$EXTERNALSYM WSALookupServiceNextW}
- function WSALookupServiceNext(hLookup: HANDLE; dwControlFlags: DWORD;
- var lpdwBufferLength: DWORD; lpqsResults: LPWSAQUERYSET): Integer; stdcall;
- {$EXTERNALSYM WSALookupServiceNext}
- function WSANSPIoctl(hLookup: HANDLE; dwControlCode: DWORD; lpvInBuffer: LPVOID; cbInBuffer: DWORD;
- lpvOutBuffer: LPVOID; cbOutBuffer: DWORD; lpcbBytesReturned: LPDWORD; lpCompletion: LPWSACOMPLETION): Integer; stdcall;
- {$EXTERNALSYM WSANSPIoctl}
- function WSALookupServiceEnd(hLookup: HANDLE): Integer; stdcall;
- {$EXTERNALSYM WSALookupServiceEnd}
- function WSAInstallServiceClassA(lpServiceClassInfo: LPWSASERVICECLASSINFOA): Integer; stdcall;
- {$EXTERNALSYM WSAInstallServiceClassA}
- function WSAInstallServiceClassW(lpServiceClassInfo: LPWSASERVICECLASSINFOW): Integer; stdcall;
- {$EXTERNALSYM WSAInstallServiceClassW}
- function WSAInstallServiceClass(lpServiceClassInfo: LPWSASERVICECLASSINFO): Integer; stdcall;
- {$EXTERNALSYM WSAInstallServiceClass}
- function WSARemoveServiceClass(const lpServiceClassId: TGUID): Integer; stdcall;
- {$EXTERNALSYM WSARemoveServiceClass}
- function WSAGetServiceClassInfoA(const lpProviderId, lpServiceClassId: TGUID;
- var lpdwBufSize: DWORD; lpServiceClassInfo: LPWSASERVICECLASSINFOA): Integer; stdcall;
- {$EXTERNALSYM WSAGetServiceClassInfoA}
- function WSAGetServiceClassInfoW(const lpProviderId, lpServiceClassId: TGUID;
- var lpdwBufSize: DWORD; lpServiceClassInfo: LPWSASERVICECLASSINFOW): Integer; stdcall;
- {$EXTERNALSYM WSAGetServiceClassInfoW}
- function WSAGetServiceClassInfo(const lpProviderId, lpServiceClassId: TGUID;
- var lpdwBufSize: DWORD; lpServiceClassInfo: LPWSASERVICECLASSINFO): Integer; stdcall;
- {$EXTERNALSYM WSAGetServiceClassInfo}
- function WSAEnumNameSpaceProvidersA(var lpdwBufferLength: DWORD; lpnspBuffer: LPWSANAMESPACE_INFOA): Integer; stdcall;
- {$EXTERNALSYM WSAEnumNameSpaceProvidersA}
- function WSAEnumNameSpaceProvidersW(var lpdwBufferLength: DWORD; lpnspBuffer: LPWSANAMESPACE_INFOW): Integer; stdcall;
- {$EXTERNALSYM WSAEnumNameSpaceProvidersW}
- function WSAEnumNameSpaceProviders(var lpdwBufferLength: DWORD; lpnspBuffer: LPWSANAMESPACE_INFO): Integer; stdcall;
- {$EXTERNALSYM WSAEnumNameSpaceProviders}
- function WSAGetServiceClassNameByClassIdA(const lpServiceClassId: TGUID;
- lpszServiceClassName: LPSTR; var lpdwBufferLength: DWORD): Integer; stdcall;
- {$EXTERNALSYM WSAGetServiceClassNameByClassIdA}
- function WSAGetServiceClassNameByClassIdW(const lpServiceClassId: TGUID;
- lpszServiceClassName: LPWSTR; var lpdwBufferLength: DWORD): Integer; stdcall;
- {$EXTERNALSYM WSAGetServiceClassNameByClassIdW}
- function WSAGetServiceClassNameByClassId(const lpServiceClassId: TGUID;
- lpszServiceClassName: LPTSTR; var lpdwBufferLength: DWORD): Integer; stdcall;
- {$EXTERNALSYM WSAGetServiceClassNameByClassId}
- function WSASetServiceA(lpqsRegInfo: LPWSAQUERYSETA; essoperation: WSAESETSERVICEOP;
- dwControlFlags: DWORD): Integer; stdcall;
- {$EXTERNALSYM WSASetServiceA}
- function WSASetServiceW(lpqsRegInfo: LPWSAQUERYSETW; essoperation: WSAESETSERVICEOP;
- dwControlFlags: DWORD): Integer; stdcall;
- {$EXTERNALSYM WSASetServiceW}
- function WSASetService(lpqsRegInfo: LPWSAQUERYSET; essoperation: WSAESETSERVICEOP;
- dwControlFlags: DWORD): Integer; stdcall;
- {$EXTERNALSYM WSASetService}
- function WSAProviderConfigChange(var lpNotificationHandle: HANDLE;
- lpOverlapped: LPWSAOVERLAPPED; lpCompletionRoutine: LPWSAOVERLAPPED_COMPLETION_ROUTINE): Integer; stdcall;
- {$EXTERNALSYM WSAProviderConfigChange}
- // Microsoft Windows Extended data types
- type
- PSOCKADDR_IN = ^sockaddr_in;
- {$EXTERNALSYM PSOCKADDR_IN}
- LPSOCKADDR_IN = ^sockaddr_in;
- {$EXTERNALSYM LPSOCKADDR_IN}
- LPLINGER = PLINGER;
- {$EXTERNALSYM LPLINGER}
- PIN_ADDR = ^in_addr;
- {$EXTERNALSYM PIN_ADDR}
- LPIN_ADDR = ^in_addr;
- {$EXTERNALSYM LPIN_ADDR}
- PFD_SET = ^fd_set;
- {$EXTERNALSYM PFD_SET}
- LPFD_SET = ^fd_set;
- {$EXTERNALSYM LPFD_SET}
- LPHOSTENT = PHOSTENT;
- {$EXTERNALSYM LPHOSTENT}
- LPSERVENT = PSERVENT;
- {$EXTERNALSYM LPSERVENT}
- LPPROTOENT = PPROTOENT;
- {$EXTERNALSYM LPPROTOENT}
- LPTIMEVAL = PTIMEVAL;
- {$EXTERNALSYM LPTIMEVAL}
- //
- // Windows message parameter composition and decomposition
- // macros.
- //
- // WSAMAKEASYNCREPLY is intended for use by the Windows Sockets implementation
- // when constructing the response to a WSAAsyncGetXByY() routine.
- //
- function WSAMAKEASYNCREPLY(buflen, error: WORD): DWORD;
- {$EXTERNALSYM WSAMAKEASYNCREPLY}
- //
- // WSAMAKESELECTREPLY is intended for use by the Windows Sockets implementation
- // when constructing the response to WSAAsyncSelect().
- //
- function WSAMAKESELECTREPLY(event, error: WORD): DWORD;
- {$EXTERNALSYM WSAMAKESELECTREPLY}
- //
- // WSAGETASYNCBUFLEN is intended for use by the Windows Sockets application
- // to extract the buffer length from the lParam in the response
- // to a WSAAsyncGetXByY().
- //
- function WSAGETASYNCBUFLEN(lParam: DWORD): WORD;
- {$EXTERNALSYM WSAGETASYNCBUFLEN}
- //
- // WSAGETASYNCERROR is intended for use by the Windows Sockets application
- // to extract the error code from the lParam in the response
- // to a WSAGetXByY().
- //
- function WSAGETASYNCERROR(lParam: DWORD): WORD;
- {$EXTERNALSYM WSAGETASYNCERROR}
- //
- // WSAGETSELECTEVENT is intended for use by the Windows Sockets application
- // to extract the event code from the lParam in the response
- // to a WSAAsyncSelect().
- //
- function WSAGETSELECTEVENT(lParam: DWORD): WORD;
- {$EXTERNALSYM WSAGETSELECTEVENT}
- //
- // WSAGETSELECTERROR is intended for use by the Windows Sockets application
- // to extract the error code from the lParam in the response
- // to a WSAAsyncSelect().
- //
- function WSAGETSELECTERROR(lParam: DWORD): WORD;
- {$EXTERNALSYM WSAGETSELECTERROR}
- implementation
- const
- ws2_32 = 'ws2_32.dll';
- {$IFDEF UNICODE}
- AWSuffix = 'W';
- {$ELSE}
- AWSuffix = 'A';
- {$ENDIF UNICODE}
- procedure FD_CLR(fd: TSocket; var fdset: TFdSet);
- var
- I: Cardinal;
- begin
- I := 0;
- while I < fdset.fd_count do
- begin
- if fdset.fd_array[I] = fd then
- begin
- while I < fdset.fd_count - 1 do
- begin
- fdset.fd_array[I] := fdset.fd_array[I + 1];
- Inc(I);
- end;
- fdset.fd_count := fdset.fd_count - 1;
- Break;
- end;
- Inc(I);
- end;
- end;
- procedure _FD_SET(fd: TSocket; var fdset: TFDSet);
- var
- I: Cardinal;
- begin
- I := 0;
- while I < fdset.fd_count do
- begin
- if fdset.fd_array[I] = fd then
- Break;
- Inc(I);
- end;
- if I = fdset.fd_count then
- begin
- if fdset.fd_count < FD_SETSIZE then
- begin
- fdset.fd_array[I] := fd;
- fdset.fd_count := fdset.fd_count + 1;
- end;
- end;
- end;
- procedure FD_ZERO(var fdset: TFdSet);
- begin
- fdset.fd_count := 0;
- end;
- function FD_ISSET(fd: TSocket; var fdset: TFdSet): Boolean;
- begin
- Result := __WSAFDIsSet(fd, fdset) <> 0;
- end;
- function timerisset(const tvp: TTimeVal): Boolean;
- begin
- Result := (tvp.tv_sec <> 0) or (tvp.tv_usec <> 0);
- end;
- procedure timerclear(var tvp: TTimeVal);
- begin
- tvp.tv_sec := 0;
- tvp.tv_usec := 0;
- end;
- function _IO(x, y: DWORD): DWORD;
- begin
- Result := IOC_VOID or (x shl 8) or y;
- end;
- function _IOR(x, y, t: DWORD): DWORD;
- begin
- Result := IOC_OUT or ((T and IOCPARM_MASK) shl 16) or (x shl 8) or y;
- end;
- function _IOW(x, y, t: DWORD): DWORD;
- begin
- Result := DWORD(IOC_IN or ((T and IOCPARM_MASK) shl 16) or (x shl 8) or y);
- end;
- function IN_CLASSA(i: DWORD): Boolean;
- begin
- Result := i and DWORD($80000000) = 0;
- end;
- function IN_CLASSB(i: DWORD): Boolean;
- begin
- Result := i and DWORD($C0000000) = DWORD($80000000);
- end;
- function IN_CLASSC(i: DWORD): Boolean;
- begin
- Result := (i and DWORD($e0000000)) = DWORD($C0000000);
- end;
- function IN_CLASSD(i: DWORD): Boolean;
- begin
- Result := (i and DWORD($f0000000)) = DWORD($e0000000);
- end;
- function IN_MULTICAST(i: DWORD): Boolean;
- begin
- Result := IN_CLASSD(i);
- end;
- function h_errno: Integer;
- begin
- Result := WSAGetLastError;
- end;
- function _WSAIO(x, y: DWORD): DWORD;
- begin
- Result := IOC_VOID or x or y;
- end;
- function _WSAIOR(x, y: DWORD): DWORD;
- begin
- Result := IOC_OUT or x or y;
- end;
- function _WSAIOW(x, y: DWORD): DWORD;
- begin
- Result := IOC_IN or x or y;
- end;
- function _WSAIORW(x, y: DWORD): DWORD;
- begin
- Result := IOC_INOUT or x or y;
- end;
- function WSAMAKEASYNCREPLY(buflen, error: WORD): DWORD;
- begin
- Result := MAKELONG(buflen, error);
- end;
- function WSAMAKESELECTREPLY(event, error: WORD): DWORD;
- begin
- Result := MAKELONG(event, error);
- end;
- function WSAGETASYNCBUFLEN(lParam: DWORD): WORD;
- begin
- Result := LOWORD(lParam);
- end;
- function WSAGETASYNCERROR(lParam: DWORD): WORD;
- begin
- Result := HIWORD(lParam);
- end;
- function WSAGETSELECTEVENT(lParam: DWORD): WORD;
- begin
- Result := LOWORD(lParam);
- end;
- function WSAGETSELECTERROR(lParam: DWORD): WORD;
- begin
- Result := HIWORD(lParam);
- end;
- {$IFDEF DYNAMIC_LINK}
- var
- ___WSAFDIsSet: Pointer;
- function __WSAFDIsSet;
- begin
- GetProcedureAddress(___WSAFDIsSet, ws2_32, '__WSAFDIsSet');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [___WSAFDIsSet]
- end;
- end;
- var
- _accept: Pointer;
- function accept;
- begin
- GetProcedureAddress(_accept, ws2_32, 'accept');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_accept]
- end;
- end;
- var
- _bind: Pointer;
- function bind;
- begin
- GetProcedureAddress(_bind, ws2_32, 'bind');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_bind]
- end;
- end;
- var
- _closesocket: Pointer;
- function closesocket;
- begin
- GetProcedureAddress(_closesocket, ws2_32, 'closesocket');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_closesocket]
- end;
- end;
- var
- _connect: Pointer;
- function connect;
- begin
- GetProcedureAddress(_connect, ws2_32, 'connect');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_connect]
- end;
- end;
- var
- _ioctlsocket: Pointer;
- function ioctlsocket;
- begin
- GetProcedureAddress(_ioctlsocket, ws2_32, 'ioctlsocket');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_ioctlsocket]
- end;
- end;
- var
- _getpeername: Pointer;
- function getpeername;
- begin
- GetProcedureAddress(_getpeername, ws2_32, 'getpeername');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_getpeername]
- end;
- end;
- var
- _getsockname: Pointer;
- function getsockname;
- begin
- GetProcedureAddress(_getsockname, ws2_32, 'getsockname');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_getsockname]
- end;
- end;
- var
- _getsockopt: Pointer;
- function getsockopt;
- begin
- GetProcedureAddress(_getsockopt, ws2_32, 'getsockopt');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_getsockopt]
- end;
- end;
- var
- _htonl: Pointer;
- function htonl;
- begin
- GetProcedureAddress(_htonl, ws2_32, 'htonl');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_htonl]
- end;
- end;
- var
- _htons: Pointer;
- function htons;
- begin
- GetProcedureAddress(_htons, ws2_32, 'htons');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_htons]
- end;
- end;
- var
- _inet_addr: Pointer;
- function inet_addr;
- begin
- GetProcedureAddress(_inet_addr, ws2_32, 'inet_addr');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_inet_addr]
- end;
- end;
- var
- _inet_ntoa: Pointer;
- function inet_ntoa;
- begin
- GetProcedureAddress(_inet_ntoa, ws2_32, 'inet_ntoa');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_inet_ntoa]
- end;
- end;
- var
- _listen: Pointer;
- function listen;
- begin
- GetProcedureAddress(_listen, ws2_32, 'listen');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_listen]
- end;
- end;
- var
- _ntohl: Pointer;
- function ntohl;
- begin
- GetProcedureAddress(_ntohl, ws2_32, 'ntohl');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_ntohl]
- end;
- end;
- var
- _ntohs: Pointer;
- function ntohs;
- begin
- GetProcedureAddress(_ntohs, ws2_32, 'ntohs');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_ntohs]
- end;
- end;
- var
- _recv: Pointer;
- function recv;
- begin
- GetProcedureAddress(_recv, ws2_32, 'recv');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_recv]
- end;
- end;
- var
- _recvfrom: Pointer;
- function recvfrom;
- begin
- GetProcedureAddress(_recvfrom, ws2_32, 'recvfrom');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_recvfrom]
- end;
- end;
- var
- _select: Pointer;
- function select;
- begin
- GetProcedureAddress(_select, ws2_32, 'select');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_select]
- end;
- end;
- var
- _send: Pointer;
- function send;
- begin
- GetProcedureAddress(_send, ws2_32, 'send');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_send]
- end;
- end;
- var
- _sendto: Pointer;
- function sendto;
- begin
- GetProcedureAddress(_sendto, ws2_32, 'sendto');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_sendto]
- end;
- end;
- var
- _setsockopt: Pointer;
- function setsockopt;
- begin
- GetProcedureAddress(_setsockopt, ws2_32, 'setsockopt');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_setsockopt]
- end;
- end;
- var
- _shutdown: Pointer;
- function shutdown;
- begin
- GetProcedureAddress(_shutdown, ws2_32, 'shutdown');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_shutdown]
- end;
- end;
- var
- _socket: Pointer;
- function socket;
- begin
- GetProcedureAddress(_socket, ws2_32, 'socket');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_socket]
- end;
- end;
- var
- _gethostbyaddr: Pointer;
- function gethostbyaddr;
- begin
- GetProcedureAddress(_gethostbyaddr, ws2_32, 'gethostbyaddr');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_gethostbyaddr]
- end;
- end;
- var
- _gethostbyname: Pointer;
- function gethostbyname;
- begin
- GetProcedureAddress(_gethostbyname, ws2_32, 'gethostbyname');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_gethostbyname]
- end;
- end;
- var
- _gethostname: Pointer;
- function gethostname;
- begin
- GetProcedureAddress(_gethostname, ws2_32, 'gethostname');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_gethostname]
- end;
- end;
- var
- _getservbyport: Pointer;
- function getservbyport;
- begin
- GetProcedureAddress(_getservbyport, ws2_32, 'getservbyport');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_getservbyport]
- end;
- end;
- var
- _getservbyname: Pointer;
- function getservbyname;
- begin
- GetProcedureAddress(_getservbyname, ws2_32, 'getservbyname');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_getservbyname]
- end;
- end;
- var
- _getprotobynumber: Pointer;
- function getprotobynumber;
- begin
- GetProcedureAddress(_getprotobynumber, ws2_32, 'getprotobynumber');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_getprotobynumber]
- end;
- end;
- var
- _getprotobyname: Pointer;
- function getprotobyname;
- begin
- GetProcedureAddress(_getprotobyname, ws2_32, 'getprotobyname');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_getprotobyname]
- end;
- end;
- var
- _WSAStartup: Pointer;
- function WSAStartup;
- begin
- GetProcedureAddress(_WSAStartup, ws2_32, 'WSAStartup');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAStartup]
- end;
- end;
- var
- _WSACleanup: Pointer;
- function WSACleanup;
- begin
- GetProcedureAddress(_WSACleanup, ws2_32, 'WSACleanup');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSACleanup]
- end;
- end;
- var
- _WSASetLastError: Pointer;
- procedure WSASetLastError;
- begin
- GetProcedureAddress(_WSASetLastError, ws2_32, 'WSASetLastError');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSASetLastError]
- end;
- end;
- var
- _WSAGetLastError: Pointer;
- function WSAGetLastError;
- begin
- GetProcedureAddress(_WSAGetLastError, ws2_32, 'WSAGetLastError');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAGetLastError]
- end;
- end;
- var
- _WSAIsBlocking: Pointer;
- function WSAIsBlocking;
- begin
- GetProcedureAddress(_WSAIsBlocking, ws2_32, 'WSAIsBlocking');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAIsBlocking]
- end;
- end;
- var
- _WSAUnhookBlockingHook: Pointer;
- function WSAUnhookBlockingHook;
- begin
- GetProcedureAddress(_WSAUnhookBlockingHook, ws2_32, 'WSAUnhookBlockingHook');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAUnhookBlockingHook]
- end;
- end;
- var
- _WSASetBlockingHook: Pointer;
- function WSASetBlockingHook;
- begin
- GetProcedureAddress(_WSASetBlockingHook, ws2_32, 'WSASetBlockingHook');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSASetBlockingHook]
- end;
- end;
- var
- _WSACancelBlockingCall: Pointer;
- function WSACancelBlockingCall;
- begin
- GetProcedureAddress(_WSACancelBlockingCall, ws2_32, 'WSACancelBlockingCall');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSACancelBlockingCall]
- end;
- end;
- var
- _WSAAsyncGetServByName: Pointer;
- function WSAAsyncGetServByName;
- begin
- GetProcedureAddress(_WSAAsyncGetServByName, ws2_32, 'WSAAsyncGetServByName');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAAsyncGetServByName]
- end;
- end;
- var
- _WSAAsyncGetServByPort: Pointer;
- function WSAAsyncGetServByPort;
- begin
- GetProcedureAddress(_WSAAsyncGetServByPort, ws2_32, 'WSAAsyncGetServByPort');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAAsyncGetServByPort]
- end;
- end;
- var
- _WSAAsyncGetProtoByName: Pointer;
- function WSAAsyncGetProtoByName;
- begin
- GetProcedureAddress(_WSAAsyncGetProtoByName, ws2_32, 'WSAAsyncGetProtoByName');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAAsyncGetProtoByName]
- end;
- end;
- var
- _WSAAsyncGetProtoByNumber: Pointer;
- function WSAAsyncGetProtoByNumber;
- begin
- GetProcedureAddress(_WSAAsyncGetProtoByNumber, ws2_32, 'WSAAsyncGetProtoByNumber');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAAsyncGetProtoByNumber]
- end;
- end;
- var
- _WSAAsyncGetHostByName: Pointer;
- function WSAAsyncGetHostByName;
- begin
- GetProcedureAddress(_WSAAsyncGetHostByName, ws2_32, 'WSAAsyncGetHostByName');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAAsyncGetHostByName]
- end;
- end;
- var
- _WSAAsyncGetHostByAddr: Pointer;
- function WSAAsyncGetHostByAddr;
- begin
- GetProcedureAddress(_WSAAsyncGetHostByAddr, ws2_32, 'WSAAsyncGetHostByAddr');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAAsyncGetHostByAddr]
- end;
- end;
- var
- _WSACancelAsyncRequest: Pointer;
- function WSACancelAsyncRequest;
- begin
- GetProcedureAddress(_WSACancelAsyncRequest, ws2_32, 'WSACancelAsyncRequest');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSACancelAsyncRequest]
- end;
- end;
- var
- _WSAAsyncSelect: Pointer;
- function WSAAsyncSelect;
- begin
- GetProcedureAddress(_WSAAsyncSelect, ws2_32, 'WSAAsyncSelect');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAAsyncSelect]
- end;
- end;
- var
- _WSAAccept: Pointer;
- function WSAAccept;
- begin
- GetProcedureAddress(_WSAAccept, ws2_32, 'WSAAccept');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAAccept]
- end;
- end;
- var
- _WSACloseEvent: Pointer;
- function WSACloseEvent;
- begin
- GetProcedureAddress(_WSACloseEvent, ws2_32, 'WSACloseEvent');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSACloseEvent]
- end;
- end;
- var
- _WSAConnect: Pointer;
- function WSAConnect;
- begin
- GetProcedureAddress(_WSAConnect, ws2_32, 'WSAConnect');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAConnect]
- end;
- end;
- var
- _WSACreateEvent: Pointer;
- function WSACreateEvent;
- begin
- GetProcedureAddress(_WSACreateEvent, ws2_32, 'WSACreateEvent');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSACreateEvent]
- end;
- end;
- var
- _WSADuplicateSocketA: Pointer;
- function WSADuplicateSocketA;
- begin
- GetProcedureAddress(_WSADuplicateSocketA, ws2_32, 'WSADuplicateSocketA');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSADuplicateSocketA]
- end;
- end;
- var
- _WSADuplicateSocketW: Pointer;
- function WSADuplicateSocketW;
- begin
- GetProcedureAddress(_WSADuplicateSocketW, ws2_32, 'WSADuplicateSocketW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSADuplicateSocketW]
- end;
- end;
- var
- _WSADuplicateSocket: Pointer;
- function WSADuplicateSocket;
- begin
- GetProcedureAddress(_WSADuplicateSocket, ws2_32, 'WSADuplicateSocket' + AWSuffix);
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSADuplicateSocket]
- end;
- end;
- var
- _WSAEnumNetworkEvents: Pointer;
- function WSAEnumNetworkEvents;
- begin
- GetProcedureAddress(_WSAEnumNetworkEvents, ws2_32, 'WSAEnumNetworkEvents');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAEnumNetworkEvents]
- end;
- end;
- var
- _WSAEnumProtocolsA: Pointer;
- function WSAEnumProtocolsA;
- begin
- GetProcedureAddress(_WSAEnumProtocolsA, ws2_32, 'WSAEnumProtocolsA');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAEnumProtocolsA]
- end;
- end;
- var
- _WSAEnumProtocolsW: Pointer;
- function WSAEnumProtocolsW;
- begin
- GetProcedureAddress(_WSAEnumProtocolsW, ws2_32, 'WSAEnumProtocolsW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAEnumProtocolsW]
- end;
- end;
- var
- _WSAEnumProtocols: Pointer;
- function WSAEnumProtocols;
- begin
- GetProcedureAddress(_WSAEnumProtocols, ws2_32, 'WSAEnumProtocols' + AWSuffix);
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAEnumProtocols]
- end;
- end;
- var
- _WSAEventSelect: Pointer;
- function WSAEventSelect;
- begin
- GetProcedureAddress(_WSAEventSelect, ws2_32, 'WSAEventSelect');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAEventSelect]
- end;
- end;
- var
- _WSAGetOverlappedResult: Pointer;
- function WSAGetOverlappedResult;
- begin
- GetProcedureAddress(_WSAGetOverlappedResult, ws2_32, 'WSAGetOverlappedResult');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAGetOverlappedResult]
- end;
- end;
- var
- _WSAGetQOSByName: Pointer;
- function WSAGetQOSByName;
- begin
- GetProcedureAddress(_WSAGetQOSByName, ws2_32, 'WSAGetQOSByName');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAGetQOSByName]
- end;
- end;
- var
- _WSAHtonl: Pointer;
- function WSAHtonl;
- begin
- GetProcedureAddress(_WSAHtonl, ws2_32, 'WSAHtonl');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAHtonl]
- end;
- end;
- var
- _WSAHtons: Pointer;
- function WSAHtons;
- begin
- GetProcedureAddress(_WSAHtons, ws2_32, 'WSAHtons');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAHtons]
- end;
- end;
- var
- _WSAIoctl: Pointer;
- function WSAIoctl;
- begin
- GetProcedureAddress(_WSAIoctl, ws2_32, 'WSAIoctl');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAIoctl]
- end;
- end;
- var
- _WSAJoinLeaf: Pointer;
- function WSAJoinLeaf;
- begin
- GetProcedureAddress(_WSAJoinLeaf, ws2_32, 'WSAJoinLeaf');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAJoinLeaf]
- end;
- end;
- var
- _WSANtohl: Pointer;
- function WSANtohl;
- begin
- GetProcedureAddress(_WSANtohl, ws2_32, 'WSANtohl');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSANtohl]
- end;
- end;
- var
- _WSANtohs: Pointer;
- function WSANtohs;
- begin
- GetProcedureAddress(_WSANtohs, ws2_32, 'WSANtohs');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSANtohs]
- end;
- end;
- var
- _WSARecv: Pointer;
- function WSARecv;
- begin
- GetProcedureAddress(_WSARecv, ws2_32, 'WSARecv');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSARecv]
- end;
- end;
- var
- _WSARecvDisconnect: Pointer;
- function WSARecvDisconnect;
- begin
- GetProcedureAddress(_WSARecvDisconnect, ws2_32, 'WSARecvDisconnect');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSARecvDisconnect]
- end;
- end;
- var
- _WSARecvFrom: Pointer;
- function WSARecvFrom;
- begin
- GetProcedureAddress(_WSARecvFrom, ws2_32, 'WSARecvFrom');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSARecvFrom]
- end;
- end;
- var
- _WSAResetEvent: Pointer;
- function WSAResetEvent;
- begin
- GetProcedureAddress(_WSAResetEvent, ws2_32, 'WSAResetEvent');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAResetEvent]
- end;
- end;
- var
- _WSASend: Pointer;
- function WSASend;
- begin
- GetProcedureAddress(_WSASend, ws2_32, 'WSASend');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSASend]
- end;
- end;
- var
- _WSASendDisconnect: Pointer;
- function WSASendDisconnect;
- begin
- GetProcedureAddress(_WSASendDisconnect, ws2_32, 'WSASendDisconnect');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSASendDisconnect]
- end;
- end;
- var
- _WSASendTo: Pointer;
- function WSASendTo;
- begin
- GetProcedureAddress(_WSASendTo, ws2_32, 'WSASendTo');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSASendTo]
- end;
- end;
- var
- _WSASetEvent: Pointer;
- function WSASetEvent;
- begin
- GetProcedureAddress(_WSASetEvent, ws2_32, 'WSASetEvent');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSASetEvent]
- end;
- end;
- var
- _WSASocketA: Pointer;
- function WSASocketA;
- begin
- GetProcedureAddress(_WSASocketA, ws2_32, 'WSASocketA');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSASocketA]
- end;
- end;
- var
- _WSASocketW: Pointer;
- function WSASocketW;
- begin
- GetProcedureAddress(_WSASocketW, ws2_32, 'WSASocketW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSASocketW]
- end;
- end;
- var
- _WSASocket: Pointer;
- function WSASocket;
- begin
- GetProcedureAddress(_WSASocket, ws2_32, 'WSASocket' + AWSuffix);
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSASocket]
- end;
- end;
- var
- _WSAWaitForMultipleEvents: Pointer;
- function WSAWaitForMultipleEvents;
- begin
- GetProcedureAddress(_WSAWaitForMultipleEvents, ws2_32, 'WSAWaitForMultipleEvents');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAWaitForMultipleEvents]
- end;
- end;
- var
- _WSAAddressToStringA: Pointer;
- function WSAAddressToStringA;
- begin
- GetProcedureAddress(_WSAAddressToStringA, ws2_32, 'WSAAddressToStringA');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAAddressToStringA]
- end;
- end;
- var
- _WSAAddressToStringW: Pointer;
- function WSAAddressToStringW;
- begin
- GetProcedureAddress(_WSAAddressToStringW, ws2_32, 'WSAAddressToStringW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAAddressToStringW]
- end;
- end;
- var
- _WSAAddressToString: Pointer;
- function WSAAddressToString;
- begin
- GetProcedureAddress(_WSAAddressToString, ws2_32, 'WSAAddressToString' + AWSuffix);
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAAddressToString]
- end;
- end;
- var
- _WSAStringToAddressA: Pointer;
- function WSAStringToAddressA;
- begin
- GetProcedureAddress(_WSAStringToAddressA, ws2_32, 'WSAStringToAddressA');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAStringToAddressA]
- end;
- end;
- var
- _WSAStringToAddressW: Pointer;
- function WSAStringToAddressW;
- begin
- GetProcedureAddress(_WSAStringToAddressW, ws2_32, 'WSAStringToAddressW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAStringToAddressW]
- end;
- end;
- var
- _WSAStringToAddress: Pointer;
- function WSAStringToAddress;
- begin
- GetProcedureAddress(_WSAStringToAddress, ws2_32, 'WSAStringToAddress' + AWSuffix);
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAStringToAddress]
- end;
- end;
- var
- _WSALookupServiceBeginA: Pointer;
- function WSALookupServiceBeginA;
- begin
- GetProcedureAddress(_WSALookupServiceBeginA, ws2_32, 'WSALookupServiceBeginA');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSALookupServiceBeginA]
- end;
- end;
- var
- _WSALookupServiceBeginW: Pointer;
- function WSALookupServiceBeginW;
- begin
- GetProcedureAddress(_WSALookupServiceBeginW, ws2_32, 'WSALookupServiceBeginW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSALookupServiceBeginW]
- end;
- end;
- var
- _WSALookupServiceBegin: Pointer;
- function WSALookupServiceBegin;
- begin
- GetProcedureAddress(_WSALookupServiceBegin, ws2_32, 'WSALookupServiceBegin' + AWSuffix);
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSALookupServiceBegin]
- end;
- end;
- var
- _WSALookupServiceNextA: Pointer;
- function WSALookupServiceNextA;
- begin
- GetProcedureAddress(_WSALookupServiceNextA, ws2_32, 'WSALookupServiceNextA');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSALookupServiceNextA]
- end;
- end;
- var
- _WSALookupServiceNextW: Pointer;
- function WSALookupServiceNextW;
- begin
- GetProcedureAddress(_WSALookupServiceNextW, ws2_32, 'WSALookupServiceNextW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSALookupServiceNextW]
- end;
- end;
- var
- _WSALookupServiceNext: Pointer;
- function WSALookupServiceNext;
- begin
- GetProcedureAddress(_WSALookupServiceNext, ws2_32, 'WSALookupServiceNext' + AWSuffix);
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSALookupServiceNext]
- end;
- end;
- var
- _WSANSPIoctl: Pointer;
- function WSANSPIoctl;
- begin
- GetProcedureAddress(_WSANSPIoctl, ws2_32, 'WSANSPIoctl');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSANSPIoctl]
- end;
- end;
- var
- _WSALookupServiceEnd: Pointer;
- function WSALookupServiceEnd;
- begin
- GetProcedureAddress(_WSALookupServiceEnd, ws2_32, 'WSALookupServiceEnd');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSALookupServiceEnd]
- end;
- end;
- var
- _WSAInstallServiceClassA: Pointer;
- function WSAInstallServiceClassA;
- begin
- GetProcedureAddress(_WSAInstallServiceClassA, ws2_32, 'WSAInstallServiceClassA');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAInstallServiceClassA]
- end;
- end;
- var
- _WSAInstallServiceClassW: Pointer;
- function WSAInstallServiceClassW;
- begin
- GetProcedureAddress(_WSAInstallServiceClassW, ws2_32, 'WSAInstallServiceClassW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAInstallServiceClassW]
- end;
- end;
- var
- _WSAInstallServiceClass: Pointer;
- function WSAInstallServiceClass;
- begin
- GetProcedureAddress(_WSAInstallServiceClass, ws2_32, 'WSAInstallServiceClass' + AWSuffix);
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAInstallServiceClass]
- end;
- end;
- var
- _WSARemoveServiceClass: Pointer;
- function WSARemoveServiceClass;
- begin
- GetProcedureAddress(_WSARemoveServiceClass, ws2_32, 'WSARemoveServiceClass');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSARemoveServiceClass]
- end;
- end;
- var
- _WSAGetServiceClassInfoA: Pointer;
- function WSAGetServiceClassInfoA;
- begin
- GetProcedureAddress(_WSAGetServiceClassInfoA, ws2_32, 'WSAGetServiceClassInfoA');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAGetServiceClassInfoA]
- end;
- end;
- var
- _WSAGetServiceClassInfoW: Pointer;
- function WSAGetServiceClassInfoW;
- begin
- GetProcedureAddress(_WSAGetServiceClassInfoW, ws2_32, 'WSAGetServiceClassInfoW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAGetServiceClassInfoW]
- end;
- end;
- var
- _WSAGetServiceClassInfo: Pointer;
- function WSAGetServiceClassInfo;
- begin
- GetProcedureAddress(_WSAGetServiceClassInfo, ws2_32, 'WSAGetServiceClassInfo' + AWSuffix);
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAGetServiceClassInfo]
- end;
- end;
- var
- _WSAEnumNameSpaceProvidersA: Pointer;
- function WSAEnumNameSpaceProvidersA;
- begin
- GetProcedureAddress(_WSAEnumNameSpaceProvidersA, ws2_32, 'WSAEnumNameSpaceProvidersA');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAEnumNameSpaceProvidersA]
- end;
- end;
- var
- _WSAEnumNameSpaceProvidersW: Pointer;
- function WSAEnumNameSpaceProvidersW;
- begin
- GetProcedureAddress(_WSAEnumNameSpaceProvidersW, ws2_32, 'WSAEnumNameSpaceProvidersW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAEnumNameSpaceProvidersW]
- end;
- end;
- var
- _WSAEnumNameSpaceProviders: Pointer;
- function WSAEnumNameSpaceProviders;
- begin
- GetProcedureAddress(_WSAEnumNameSpaceProviders, ws2_32, 'WSAEnumNameSpaceProviders' + AWSuffix);
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAEnumNameSpaceProviders]
- end;
- end;
- var
- _WSAGetServClassNameByClassIdA: Pointer;
- function WSAGetServiceClassNameByClassIdA;
- begin
- GetProcedureAddress(_WSAGetServClassNameByClassIdA, ws2_32, 'WSAGetServiceClassNameByClassIdA');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAGetServClassNameByClassIdA]
- end;
- end;
- var
- _WSAGetServClassNameByClassIdW: Pointer;
- function WSAGetServiceClassNameByClassIdW;
- begin
- GetProcedureAddress(_WSAGetServClassNameByClassIdW, ws2_32, 'WSAGetServiceClassNameByClassIdW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAGetServClassNameByClassIdW]
- end;
- end;
- var
- _WSAGetServClassNameByClassId: Pointer;
- function WSAGetServiceClassNameByClassId;
- begin
- GetProcedureAddress(_WSAGetServClassNameByClassId, ws2_32, 'WSAGetServiceClassNameByClassId' + AWSuffix);
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAGetServClassNameByClassId]
- end;
- end;
- var
- _WSASetServiceA: Pointer;
- function WSASetServiceA;
- begin
- GetProcedureAddress(_WSASetServiceA, ws2_32, 'WSASetServiceA');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSASetServiceA]
- end;
- end;
- var
- _WSASetServiceW: Pointer;
- function WSASetServiceW;
- begin
- GetProcedureAddress(_WSASetServiceW, ws2_32, 'WSASetServiceW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSASetServiceW]
- end;
- end;
- var
- _WSASetService: Pointer;
- function WSASetService;
- begin
- GetProcedureAddress(_WSASetService, ws2_32, 'WSASetService' + AWSuffix);
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSASetService]
- end;
- end;
- var
- _WSAProviderConfigChange: Pointer;
- function WSAProviderConfigChange;
- begin
- GetProcedureAddress(_WSAProviderConfigChange, ws2_32, 'WSAProviderConfigChange');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WSAProviderConfigChange]
- end;
- end;
- {$ELSE}
- function __WSAFDIsSet; external ws2_32 name '__WSAFDIsSet';
- function accept; external ws2_32 name 'accept';
- function bind; external ws2_32 name 'bind';
- function closesocket; external ws2_32 name 'closesocket';
- function connect; external ws2_32 name 'connect';
- function ioctlsocket; external ws2_32 name 'ioctlsocket';
- function getpeername; external ws2_32 name 'getpeername';
- function getsockname; external ws2_32 name 'getsockname';
- function getsockopt; external ws2_32 name 'getsockopt';
- function htonl; external ws2_32 name 'htonl';
- function htons; external ws2_32 name 'htons';
- function inet_addr; external ws2_32 name 'inet_addr';
- function inet_ntoa; external ws2_32 name 'inet_ntoa';
- function listen; external ws2_32 name 'listen';
- function ntohl; external ws2_32 name 'ntohl';
- function ntohs; external ws2_32 name 'ntohs';
- function recv; external ws2_32 name 'recv';
- function recvfrom; external ws2_32 name 'recvfrom';
- function select; external ws2_32 name 'select';
- function send; external ws2_32 name 'send';
- function sendto; external ws2_32 name 'sendto';
- function setsockopt; external ws2_32 name 'setsockopt';
- function shutdown; external ws2_32 name 'shutdown';
- function socket; external ws2_32 name 'socket';
- function gethostbyaddr; external ws2_32 name 'gethostbyaddr';
- function gethostbyname; external ws2_32 name 'gethostbyname';
- function gethostname; external ws2_32 name 'gethostname';
- function getservbyport; external ws2_32 name 'getservbyport';
- function getservbyname; external ws2_32 name 'getservbyname';
- function getprotobynumber; external ws2_32 name 'getprotobynumber';
- function getprotobyname; external ws2_32 name 'getprotobyname';
- function WSAStartup; external ws2_32 name 'WSAStartup';
- function WSACleanup; external ws2_32 name 'WSACleanup';
- procedure WSASetLastError; external ws2_32 name 'WSASetLastError';
- function WSAGetLastError; external ws2_32 name 'WSAGetLastError';
- function WSAIsBlocking; external ws2_32 name 'WSAIsBlocking';
- function WSAUnhookBlockingHook; external ws2_32 name 'WSAUnhookBlockingHook';
- function WSASetBlockingHook; external ws2_32 name 'WSASetBlockingHook';
- function WSACancelBlockingCall; external ws2_32 name 'WSACancelBlockingCall';
- function WSAAsyncGetServByName; external ws2_32 name 'WSAAsyncGetServByName';
- function WSAAsyncGetServByPort; external ws2_32 name 'WSAAsyncGetServByPort';
- function WSAAsyncGetProtoByName; external ws2_32 name 'WSAAsyncGetProtoByName';
- function WSAAsyncGetProtoByNumber; external ws2_32 name 'WSAAsyncGetProtoByNumber';
- function WSAAsyncGetHostByName; external ws2_32 name 'WSAAsyncGetHostByName';
- function WSAAsyncGetHostByAddr; external ws2_32 name 'WSAAsyncGetHostByAddr';
- function WSACancelAsyncRequest; external ws2_32 name 'WSACancelAsyncRequest';
- function WSAAsyncSelect; external ws2_32 name 'WSAAsyncSelect';
- function WSAAccept; external ws2_32 name 'WSAAccept';
- function WSACloseEvent; external ws2_32 name 'WSACloseEvent';
- function WSAConnect; external ws2_32 name 'WSAConnect';
- function WSACreateEvent; external ws2_32 name 'WSACreateEvent';
- function WSADuplicateSocketA; external ws2_32 name 'WSADuplicateSocketA';
- function WSADuplicateSocketW; external ws2_32 name 'WSADuplicateSocketW';
- function WSADuplicateSocket; external ws2_32 name 'WSADuplicateSocket' + AWSuffix;
- function WSAEnumNetworkEvents; external ws2_32 name 'WSAEnumNetworkEvents';
- function WSAEnumProtocolsA; external ws2_32 name 'WSAEnumProtocolsA';
- function WSAEnumProtocolsW; external ws2_32 name 'WSAEnumProtocolsW';
- function WSAEnumProtocols; external ws2_32 name 'WSAEnumProtocols' + AWSuffix;
- function WSAEventSelect; external ws2_32 name 'WSAEventSelect';
- function WSAGetOverlappedResult; external ws2_32 name 'WSAGetOverlappedResult';
- function WSAGetQOSByName; external ws2_32 name 'WSAGetQOSByName';
- function WSAHtonl; external ws2_32 name 'WSAHtonl';
- function WSAHtons; external ws2_32 name 'WSAHtons';
- function WSAIoctl; external ws2_32 name 'WSAIoctl';
- function WSAJoinLeaf; external ws2_32 name 'WSAJoinLeaf';
- function WSANtohl; external ws2_32 name 'WSANtohl';
- function WSANtohs; external ws2_32 name 'WSANtohs';
- function WSARecv; external ws2_32 name 'WSARecv';
- function WSARecvDisconnect; external ws2_32 name 'WSARecvDisconnect';
- function WSARecvFrom; external ws2_32 name 'WSARecvFrom';
- function WSAResetEvent; external ws2_32 name 'WSAResetEvent';
- function WSASend; external ws2_32 name 'WSASend';
- function WSASendDisconnect; external ws2_32 name 'WSASendDisconnect';
- function WSASendTo; external ws2_32 name 'WSASendTo';
- function WSASetEvent; external ws2_32 name 'WSASetEvent';
- function WSASocketA; external ws2_32 name 'WSASocketA';
- function WSASocketW; external ws2_32 name 'WSASocketW';
- function WSASocket; external ws2_32 name 'WSASocket' + AWSuffix;
- function WSAWaitForMultipleEvents; external ws2_32 name 'WSAWaitForMultipleEvents';
- function WSAAddressToStringA; external ws2_32 name 'WSAAddressToStringA';
- function WSAAddressToStringW; external ws2_32 name 'WSAAddressToStringW';
- function WSAAddressToString; external ws2_32 name 'WSAAddressToString' + AWSuffix;
- function WSAStringToAddressA; external ws2_32 name 'WSAStringToAddressA';
- function WSAStringToAddressW; external ws2_32 name 'WSAStringToAddressW';
- function WSAStringToAddress; external ws2_32 name 'WSAStringToAddress' + AWSuffix;
- function WSALookupServiceBeginA; external ws2_32 name 'WSALookupServiceBeginA';
- function WSALookupServiceBeginW; external ws2_32 name 'WSALookupServiceBeginW';
- function WSALookupServiceBegin; external ws2_32 name 'WSALookupServiceBegin' + AWSuffix;
- function WSALookupServiceNextA; external ws2_32 name 'WSALookupServiceNextA';
- function WSALookupServiceNextW; external ws2_32 name 'WSALookupServiceNextW';
- function WSALookupServiceNext; external ws2_32 name 'WSALookupServiceNext' + AWSuffix;
- function WSANSPIoctl; external ws2_32 name 'WSANSPIoctl';
- function WSALookupServiceEnd; external ws2_32 name 'WSALookupServiceEnd';
- function WSAInstallServiceClassA; external ws2_32 name 'WSAInstallServiceClassA';
- function WSAInstallServiceClassW; external ws2_32 name 'WSAInstallServiceClassW';
- function WSAInstallServiceClass; external ws2_32 name 'WSAInstallServiceClass' + AWSuffix;
- function WSARemoveServiceClass; external ws2_32 name 'WSARemoveServiceClass';
- function WSAGetServiceClassInfoA; external ws2_32 name 'WSAGetServiceClassInfoA';
- function WSAGetServiceClassInfoW; external ws2_32 name 'WSAGetServiceClassInfoW';
- function WSAGetServiceClassInfo; external ws2_32 name 'WSAGetServiceClassInfo' + AWSuffix;
- function WSAEnumNameSpaceProvidersA; external ws2_32 name 'WSAEnumNameSpaceProvidersA';
- function WSAEnumNameSpaceProvidersW; external ws2_32 name 'WSAEnumNameSpaceProvidersW';
- function WSAEnumNameSpaceProviders; external ws2_32 name 'WSAEnumNameSpaceProviders' + AWSuffix;
- function WSAGetServiceClassNameByClassIdA; external ws2_32 name 'WSAGetServiceClassNameByClassIdA';
- function WSAGetServiceClassNameByClassIdW; external ws2_32 name 'WSAGetServiceClassNameByClassIdW';
- function WSAGetServiceClassNameByClassId; external ws2_32 name 'WSAGetServiceClassNameByClassId' + AWSuffix;
- function WSASetServiceA; external ws2_32 name 'WSASetServiceA';
- function WSASetServiceW; external ws2_32 name 'WSASetServiceW';
- function WSASetService; external ws2_32 name 'WSASetService' + AWSuffix;
- function WSAProviderConfigChange; external ws2_32 name 'WSAProviderConfigChange';
- {$ENDIF DYNAMIC_LINK}
- end.
|