| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333 | 
							- {**************************************************************************************************}
 
- {  WARNING:  JEDI preprocessor generated unit.  Do not edit.                                       }
 
- {**************************************************************************************************}
 
- {**************************************************************************************************}
 
- {                                                                                                  }
 
- { Project JEDI Code Library (JCL)                                                                  }
 
- {                                                                                                  }
 
- { The contents of this file are 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/                                                           }
 
- {                                                                                                  }
 
- { 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.                                                               }
 
- {                                                                                                  }
 
- { Portions of this code are translated from DelayImp.h.                                            }
 
- { The Initial Developer of DelayImp.h is Inprise Corporation. Portions created by Inprise          }
 
- { Corporation are Copyright (C) 1999, 2000 by Inprise Corporation. All Rights Reserved.            }
 
- {                                                                                                  }
 
- { The Original Code is JclWin32.pas.                                                               }
 
- {                                                                                                  }
 
- { The Initial Developer of the Original Code is Marcel van Brakel. Portions created by Marcel van  }
 
- { Brakel are Copyright (C) Marcel van Brakel. All Rights Reserved.                                 }
 
- {                                                                                                  }
 
- { Contributors:                                                                                    }
 
- {   Marcel van Brakel                                                                              }
 
- {   Peter Friese                                                                                   }
 
- {   Andreas Hausladen (ahuser)                                                                     }
 
- {   Flier Lu (flier)                                                                               }
 
- {   Robert Marquardt (marquardt)                                                                   }
 
- {   Robert Rossmair (rrossmair)                                                                    }
 
- {   Olivier Sannier (obones)                                                                       }
 
- {   Matthias Thoma (mthoma)                                                                        }
 
- {   Petr Vones (pvones)                                                                            }
 
- {   Florent Ouchet (outchy)                                                                        }
 
- {                                                                                                  }
 
- {**************************************************************************************************}
 
- {                                                                                                  }
 
- { This unit defines various Win32 API declarations which are either missing or incorrect in one or }
 
- { more of the supported Delphi versions. This unit is not intended for regular code, only API      }
 
- { declarations.                                                                                    }
 
- {                                                                                                  }
 
- {**************************************************************************************************}
 
- {                                                                                                  }
 
- { Last modified: $Date::                                                                         $ }
 
- { Revision:      $Rev::                                                                          $ }
 
- { Author:        $Author::                                                                       $ }
 
- {                                                                                                  }
 
- {**************************************************************************************************}
 
- unit JclWin32;
 
- {$I jcl.inc}
 
- {$I windowsonly.inc}
 
- {$MINENUMSIZE 4}
 
- {$ALIGN ON}
 
- interface
 
- uses
 
-   {$IFDEF UNITVERSIONING}
 
-   JclUnitVersioning,
 
-   {$ENDIF UNITVERSIONING}
 
-   {$IFDEF HAS_UNITSCOPE}
 
-   Winapi.Windows, System.SysUtils,
 
-   {$IFNDEF FPC}
 
-   Winapi.AccCtrl, Winapi.ActiveX,
 
-   {$ENDIF ~FPC}
 
-   {$ELSE ~HAS_UNITSCOPE}
 
-   Windows, SysUtils,
 
-   {$IFNDEF FPC}
 
-   AccCtrl,
 
-   {$ENDIF ~FPC}
 
-   ActiveX,
 
-   {$ENDIF ~HAS_UNITSCOPE}
 
-   JclBase;
 
- {$HPPEMIT '#include <WinDef.h>'}
 
- {$HPPEMIT '#include <WinNT.h>'}
 
- {$HPPEMIT '#include <WinBase.h>'}
 
- {$HPPEMIT '#include <BaseTsd.h>'}
 
- {$HPPEMIT '#include <ImageHlp.h>'}
 
- {$HPPEMIT '#include <lm.h>'}
 
- {$HPPEMIT '#include <Nb30.h>'}
 
- {$HPPEMIT '#include <RasDlg.h>'}
 
- {$HPPEMIT '#include <Reason.h>'}
 
- {$HPPEMIT '#include <ShlWApi.h>'}
 
- {$HPPEMIT '#include <WinError.h>'}
 
- {$HPPEMIT '#include <WinIoCtl.h>'}
 
- {$HPPEMIT '#include <WinUser.h>'}
 
- //{$HPPEMIT '#include <Powrprof.h>'}
 
- {$HPPEMIT '#include <delayimp.h>'}
 
- {$HPPEMIT '#include <propidl.h>'}
 
- {$HPPEMIT '#include <msidefs.h>'}
 
- {$HPPEMIT '#include <shlguid.h>'}
 
- {$IFNDEF COMPILER14_UP}
 
- {$HPPEMIT '#include <imgguids.h>'}
 
- {$ENDIF ~COMPILER14_UP}
 
- {$HPPEMIT '#include <objbase.h>'}
 
- {$HPPEMIT '#include <ntsecapi.h>'}
 
- {$HPPEMIT ''}
 
- {$IFDEF RTL230_UP}
 
- {$HPPEMIT '// To avoid ambiguity between IMAGE_LOAD_CONFIG_DIRECTORY32 and  Winapi::Windows::IMAGE_LOAD_CONFIG_DIRECTORY32'}
 
- {$HPPEMIT '#define IMAGE_LOAD_CONFIG_DIRECTORY32 ::IMAGE_LOAD_CONFIG_DIRECTORY32'}
 
- {$HPPEMIT ''}
 
- {$HPPEMIT '// To avoid ambiguity between IMAGE_LOAD_CONFIG_DIRECTORY64 and  Winapi::Windows::IMAGE_LOAD_CONFIG_DIRECTORY64'}
 
- {$HPPEMIT '#define IMAGE_LOAD_CONFIG_DIRECTORY64 ::IMAGE_LOAD_CONFIG_DIRECTORY64'}
 
- {$HPPEMIT ''}
 
- {$ENDIF RTL230_UP}
 
- // EJclWin32Error
 
- type
 
-   EJclWin32Error = class(EJclError)
 
-   private
 
-     FLastError: DWORD;
 
-     FLastErrorMsg: string;
 
-   public
 
-     constructor Create(const Msg: string);
 
-     constructor CreateFmt(const Msg: string; const Args: array of const);
 
-     constructor CreateRes(Ident: Integer); overload;
 
-     constructor CreateRes(ResStringRec: PResStringRec); overload;
 
-     property LastError: DWORD read FLastError;
 
-     property LastErrorMsg: string read FLastErrorMsg;
 
-   end;
 
- //DOM-IGNORE-BEGIN
 
- {$IFNDEF FPC}
 
- //
 
- // Unsigned Basics
 
- //
 
- type
 
-   USHORT = Word;
 
-   {$EXTERNALSYM USHORT}
 
- {$ENDIF ~FPC}
 
- //==================================================================================================
 
- // presumable from any older WinNT.h or from WinIfs.h
 
- //==================================================================================================
 
- //--------------------------------------------------------------------------------------------------
 
- // NTFS Reparse Points
 
- //--------------------------------------------------------------------------------------------------
 
- // The reparse structure is used by layered drivers to store data in a
 
- // reparse point. The constraints on reparse tags are defined below.
 
- // This version of the reparse data buffer is only for Microsoft tags.
 
- (*$HPPEMIT 'typedef struct _REPARSE_DATA_BUFFER {'*)
 
- (*$HPPEMIT ''*)
 
- (*$HPPEMIT '    DWORD   ReparseTag;'*)
 
- (*$HPPEMIT '    WORD    ReparseDataLength;'*)
 
- (*$HPPEMIT '    WORD    Reserved;'*)
 
- (*$HPPEMIT ''*)
 
- (*$HPPEMIT '    union {'*)
 
- (*$HPPEMIT ''*)
 
- (*$HPPEMIT '        struct {'*)
 
- (*$HPPEMIT '            WORD    SubstituteNameOffset;'*)
 
- (*$HPPEMIT '            WORD    SubstituteNameLength;'*)
 
- (*$HPPEMIT '            WORD    PrintNameOffset;'*)
 
- (*$HPPEMIT '            WORD    PrintNameLength;'*)
 
- (*$HPPEMIT '            WCHAR   PathBuffer[1];'*)
 
- (*$HPPEMIT '        } SymbolicLinkReparseBuffer;'*)
 
- (*$HPPEMIT ''*)
 
- (*$HPPEMIT '        struct {'*)
 
- (*$HPPEMIT '            WORD    SubstituteNameOffset;'*)
 
- (*$HPPEMIT '            WORD    SubstituteNameLength;'*)
 
- (*$HPPEMIT '            WORD    PrintNameOffset;'*)
 
- (*$HPPEMIT '            WORD    PrintNameLength;'*)
 
- (*$HPPEMIT '            WCHAR   PathBuffer[1];'*)
 
- (*$HPPEMIT '        } MountPointReparseBuffer;'*)
 
- (*$HPPEMIT ''*)
 
- (*$HPPEMIT '        struct {'*)
 
- (*$HPPEMIT '            UCHAR   DataBuffer[1];'*)
 
- (*$HPPEMIT '        } GenericReparseBuffer;'*)
 
- (*$HPPEMIT '    };'*)
 
- (*$HPPEMIT ''*)
 
- (*$HPPEMIT '} REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER;'*)
 
- (*$HPPEMIT ''*)
 
- (*$HPPEMIT '#ifndef REPARSE_DATA_BUFFER_HEADER_SIZE'*)
 
- (*$HPPEMIT '#define REPARSE_DATA_BUFFER_HEADER_SIZE   8'*)
 
- (*$HPPEMIT '#endif'*)
 
- (*$HPPEMIT ''*)
 
- (*$HPPEMIT 'typedef struct _REPARSE_POINT_INFORMATION {'*)
 
- (*$HPPEMIT '        WORD    ReparseDataLength;'*)
 
- (*$HPPEMIT '        WORD    UnparsedNameLength;'*)
 
- (*$HPPEMIT '} REPARSE_POINT_INFORMATION, *PREPARSE_POINT_INFORMATION;'*)
 
- (*$HPPEMIT ''*)
 
- (*$HPPEMIT '#ifndef IO_REPARSE_TAG_VALID_VALUES'*)
 
- (*$HPPEMIT '#define IO_REPARSE_TAG_VALID_VALUES 0x0E000FFFF'*)
 
- (*$HPPEMIT '#endif'*)
 
- (*$HPPEMIT ''*)
 
- type
 
-   {$EXTERNALSYM _REPARSE_DATA_BUFFER}
 
-   _REPARSE_DATA_BUFFER = record
 
-     ReparseTag: DWORD;
 
-     ReparseDataLength: Word;
 
-     Reserved: Word;
 
-     case Integer of
 
-       0: (
 
-         SymbolicLinkReparseBuffer: record
 
-           SubstituteNameOffset: Word;
 
-           SubstituteNameLength: Word;
 
-           PrintNameOffset: Word;
 
-           PrintNameLength: Word;
 
-           Flags: ULONG;
 
-           PathBuffer: array [0..0] of WCHAR;
 
-         end);
 
-       1: (
 
-         MountPointReparseBuffer: record
 
-           SubstituteNameOffset: Word;
 
-           SubstituteNameLength: Word;
 
-           PrintNameOffset: Word;
 
-           PrintNameLength: Word;
 
-           PathBuffer: array [0..0] of WCHAR;
 
-         end);
 
-       2: (
 
-         GenericReparseBuffer: record
 
-           DataBuffer: array [0..0] of Byte;
 
-         end);
 
-   end;
 
-   {$EXTERNALSYM REPARSE_DATA_BUFFER}
 
-   REPARSE_DATA_BUFFER = _REPARSE_DATA_BUFFER;
 
-   {$EXTERNALSYM PREPARSE_DATA_BUFFER}
 
-   PREPARSE_DATA_BUFFER = ^_REPARSE_DATA_BUFFER;
 
-   TReparseDataBuffer = _REPARSE_DATA_BUFFER;
 
-   PReparseDataBuffer = PREPARSE_DATA_BUFFER;
 
- const
 
-   {$EXTERNALSYM REPARSE_DATA_BUFFER_HEADER_SIZE}
 
-   REPARSE_DATA_BUFFER_HEADER_SIZE = 8;
 
- type
 
-   {$EXTERNALSYM _REPARSE_POINT_INFORMATION}
 
-   _REPARSE_POINT_INFORMATION = record
 
-     ReparseDataLength: Word;
 
-     UnparsedNameLength: Word;
 
-   end;
 
-   {$EXTERNALSYM REPARSE_POINT_INFORMATION}
 
-   REPARSE_POINT_INFORMATION = _REPARSE_POINT_INFORMATION;
 
-   {$EXTERNALSYM PREPARSE_POINT_INFORMATION}
 
-   PREPARSE_POINT_INFORMATION = ^_REPARSE_POINT_INFORMATION;
 
-   TReparsePointInformation = _REPARSE_POINT_INFORMATION;
 
-   PReparsePointInformation = PREPARSE_POINT_INFORMATION;
 
- const
 
-   {$EXTERNALSYM IO_REPARSE_TAG_VALID_VALUES}
 
-   IO_REPARSE_TAG_VALID_VALUES = DWORD($E000FFFF);
 
- //==================================================================================================
 
- // from JwaWinNT.pas (few declarations from JwaWinType)
 
- const
 
-   MAXLONGLONG = $7fffffffffffffff;
 
-   {$EXTERNALSYM MAXLONGLONG}
 
- {$IFNDEF FPC}
 
- type
 
-   ULONGLONG = Int64;
 
-   {$EXTERNALSYM ULONGLONG}
 
-   PLONGLONG = ^LONGLONG;
 
-   {$EXTERNALSYM PLONGLONG}
 
-   PULONGLONG = ^ULONGLONG;
 
-   {$EXTERNALSYM PULONGLONG}
 
- {$ENDIF ~FPC}
 
- const
 
-   ANYSIZE_ARRAY = 1;
 
-   {$EXTERNALSYM ANYSIZE_ARRAY}
 
-   MAX_NATURAL_ALIGNMENT = SizeOf(ULONG);
 
-   {$EXTERNALSYM MAX_NATURAL_ALIGNMENT}
 
- // line 72
 
- const
 
-   VER_SERVER_NT                      = DWORD($80000000);
 
-   {$EXTERNALSYM VER_SERVER_NT}
 
-   VER_WORKSTATION_NT                 = $40000000;
 
-   {$EXTERNALSYM VER_WORKSTATION_NT}
 
-   VER_SUITE_SMALLBUSINESS            = $00000001;
 
-   {$EXTERNALSYM VER_SUITE_SMALLBUSINESS}
 
-   VER_SUITE_ENTERPRISE               = $00000002;
 
-   {$EXTERNALSYM VER_SUITE_ENTERPRISE}
 
-   VER_SUITE_BACKOFFICE               = $00000004;
 
-   {$EXTERNALSYM VER_SUITE_BACKOFFICE}
 
-   VER_SUITE_COMMUNICATIONS           = $00000008;
 
-   {$EXTERNALSYM VER_SUITE_COMMUNICATIONS}
 
-   VER_SUITE_TERMINAL                 = $00000010;
 
-   {$EXTERNALSYM VER_SUITE_TERMINAL}
 
-   VER_SUITE_SMALLBUSINESS_RESTRICTED = $00000020;
 
-   {$EXTERNALSYM VER_SUITE_SMALLBUSINESS_RESTRICTED}
 
-   VER_SUITE_EMBEDDEDNT               = $00000040;
 
-   {$EXTERNALSYM VER_SUITE_EMBEDDEDNT}
 
-   VER_SUITE_DATACENTER               = $00000080;
 
-   {$EXTERNALSYM VER_SUITE_DATACENTER}
 
-   VER_SUITE_SINGLEUSERTS             = $00000100;
 
-   {$EXTERNALSYM VER_SUITE_SINGLEUSERTS}
 
-   VER_SUITE_PERSONAL                 = $00000200;
 
-   {$EXTERNALSYM VER_SUITE_PERSONAL}
 
-   VER_SUITE_BLADE                    = $00000400;
 
-   {$EXTERNALSYM VER_SUITE_BLADE}
 
-   VER_SUITE_EMBEDDED_RESTRICTED      = $00000800;
 
-   {$EXTERNALSYM VER_SUITE_EMBEDDED_RESTRICTED}
 
-   VER_SUITE_SECURITY_APPLIANCE       = $00001000;
 
-   {$EXTERNALSYM VER_SUITE_SECURITY_APPLIANCE}
 
-   VER_SUITE_STORAGE_SERVER           = $00002000;
 
-   {$EXTERNALSYM VER_SUITE_STORAGE_SERVER}
 
-   VER_SUITE_COMPUTE_SERVER           = $00004000;
 
-   {$EXTERNALSYM VER_SUITE_COMPUTE_SERVER}
 
- // line 515
 
- //
 
- //  A language ID is a 16 bit value which is the combination of a
 
- //  primary language ID and a secondary language ID.  The bits are
 
- //  allocated as follows:
 
- //
 
- //       +-----------------------+-------------------------+
 
- //       |     Sublanguage ID    |   Primary Language ID   |
 
- //       +-----------------------+-------------------------+
 
- //        15                   10 9                       0   bit
 
- //
 
- //
 
- //  Language ID creation/extraction macros:
 
- //
 
- //    MAKELANGID    - construct language id from a primary language id and
 
- //                    a sublanguage id.
 
- //    PRIMARYLANGID - extract primary language id from a language id.
 
- //    SUBLANGID     - extract sublanguage id from a language id.
 
- //
 
- function MAKELANGID(PrimaryLang, SubLang: USHORT): WORD;
 
- {$EXTERNALSYM MAKELANGID}
 
- function PRIMARYLANGID(LangId: WORD): WORD;
 
- {$EXTERNALSYM PRIMARYLANGID}
 
- function SUBLANGID(LangId: WORD): WORD;
 
- {$EXTERNALSYM SUBLANGID}
 
- //
 
- //  A locale ID is a 32 bit value which is the combination of a
 
- //  language ID, a sort ID, and a reserved area.  The bits are
 
- //  allocated as follows:
 
- //
 
- //       +-------------+---------+-------------------------+
 
- //       |   Reserved  | Sort ID |      Language ID        |
 
- //       +-------------+---------+-------------------------+
 
- //        31         20 19     16 15                      0   bit
 
- //
 
- //
 
- //  Locale ID creation/extraction macros:
 
- //
 
- //    MAKELCID            - construct the locale id from a language id and a sort id.
 
- //    MAKESORTLCID        - construct the locale id from a language id, sort id, and sort version.
 
- //    LANGIDFROMLCID      - extract the language id from a locale id.
 
- //    SORTIDFROMLCID      - extract the sort id from a locale id.
 
- //    SORTVERSIONFROMLCID - extract the sort version from a locale id.
 
- //
 
- const
 
-   NLS_VALID_LOCALE_MASK = $000fffff;
 
-   {$EXTERNALSYM NLS_VALID_LOCALE_MASK}
 
- function MAKELCID(LangId, SortId: WORD): DWORD;
 
- {$EXTERNALSYM MAKELCID}
 
- function MAKESORTLCID(LangId, SortId, SortVersion: WORD): DWORD;
 
- {$EXTERNALSYM MAKESORTLCID}
 
- function LANGIDFROMLCID(LocaleId: LCID): WORD;
 
- {$EXTERNALSYM LANGIDFROMLCID}
 
- function SORTIDFROMLCID(LocaleId: LCID): WORD;
 
- {$EXTERNALSYM SORTIDFROMLCID}
 
- function SORTVERSIONFROMLCID(LocaleId: LCID): WORD;
 
- {$EXTERNALSYM SORTVERSIONFROMLCID}
 
- // line 1154
 
- ////////////////////////////////////////////////////////////////////////
 
- //                                                                    //
 
- //              Security Id     (SID)                                 //
 
- //                                                                    //
 
- ////////////////////////////////////////////////////////////////////////
 
- //
 
- //
 
- // Pictorially the structure of an SID is as follows:
 
- //
 
- //         1   1   1   1   1   1
 
- //         5   4   3   2   1   0   9   8   7   6   5   4   3   2   1   0
 
- //      +---------------------------------------------------------------+
 
- //      |      SubAuthorityCount        |Reserved1 (SBZ)|   Revision    |
 
- //      +---------------------------------------------------------------+
 
- //      |                   IdentifierAuthority[0]                      |
 
- //      +---------------------------------------------------------------+
 
- //      |                   IdentifierAuthority[1]                      |
 
- //      +---------------------------------------------------------------+
 
- //      |                   IdentifierAuthority[2]                      |
 
- //      +---------------------------------------------------------------+
 
- //      |                                                               |
 
- //      +- -  -  -  -  -  -  -  SubAuthority[]  -  -  -  -  -  -  -  - -+
 
- //      |                                                               |
 
- //      +---------------------------------------------------------------+
 
- //
 
- //
 
- {$IFNDEF FPC}
 
- type
 
-   _SID_IDENTIFIER_AUTHORITY = record
 
-     Value: array [0..5] of Byte;
 
-   end;
 
-   {$EXTERNALSYM _SID_IDENTIFIER_AUTHORITY}
 
-   SID_IDENTIFIER_AUTHORITY = _SID_IDENTIFIER_AUTHORITY;
 
-   {$EXTERNALSYM SID_IDENTIFIER_AUTHORITY}
 
-   PSID_IDENTIFIER_AUTHORITY = ^_SID_IDENTIFIER_AUTHORITY;
 
-   {$EXTERNALSYM PSID_IDENTIFIER_AUTHORITY}
 
-   // PSid = ^SID;
 
-   _SID = record
 
-     Revision: Byte;
 
-     SubAuthorityCount: Byte;
 
-     IdentifierAuthority: SID_IDENTIFIER_AUTHORITY;
 
-     SubAuthority: array [0..ANYSIZE_ARRAY - 1] of DWORD;
 
-   end;
 
-   {$EXTERNALSYM _SID}
 
-   SID = _SID;
 
-   {$EXTERNALSYM SID}
 
-   PPSID = ^PSID;
 
-   {$NODEFINE PPSID}
 
-   TSid = SID;
 
- {$ENDIF ~FPC}
 
- const
 
-   SID_REVISION                    = (1); // Current revision level
 
-   {$EXTERNALSYM SID_REVISION}
 
-   SID_MAX_SUB_AUTHORITIES         = (15);
 
-   {$EXTERNALSYM SID_MAX_SUB_AUTHORITIES}
 
-   SID_RECOMMENDED_SUB_AUTHORITIES = (1); // Will change to around 6 in a future release.
 
-   {$EXTERNALSYM SID_RECOMMENDED_SUB_AUTHORITIES}
 
-   SECURITY_MAX_SID_SIZE = SizeOf(SID) - SizeOf(DWORD) + (SID_MAX_SUB_AUTHORITIES * SizeOf(DWORD));
 
-   {$EXTERNALSYM SECURITY_MAX_SID_SIZE}
 
- {$IFNDEF FPC}
 
-   SidTypeUser           = 1;
 
-   {$EXTERNALSYM SidTypeUser}
 
-   SidTypeGroup          = 2;
 
-   {$EXTERNALSYM SidTypeGroup}
 
-   SidTypeDomain         = 3;
 
-   {$EXTERNALSYM SidTypeDomain}
 
-   SidTypeAlias          = 4;
 
-   {$EXTERNALSYM SidTypeAlias}
 
-   SidTypeWellKnownGroup = 5;
 
-   {$EXTERNALSYM SidTypeWellKnownGroup}
 
-   SidTypeDeletedAccount = 6;
 
-   {$EXTERNALSYM SidTypeDeletedAccount}
 
-   SidTypeInvalid        = 7;
 
-   {$EXTERNALSYM SidTypeInvalid}
 
-   SidTypeUnknown        = 8;
 
-   {$EXTERNALSYM SidTypeUnknown}
 
-   SidTypeComputer       = 9;
 
-   {$EXTERNALSYM SidTypeComputer}
 
- type
 
-   _SID_NAME_USE = DWORD;
 
-   {$EXTERNALSYM _SID_NAME_USE}
 
- //  SID_NAME_USE = _SID_NAME_USE;
 
- //  {$EXTERNALSYM SID_NAME_USE}
 
-   PSID_NAME_USE = ^SID_NAME_USE;
 
-   {$EXTERNALSYM PSID_NAME_USE}
 
-   TSidNameUse = SID_NAME_USE;
 
-   PSidNameUSe = PSID_NAME_USE;
 
-   PSID_AND_ATTRIBUTES = ^SID_AND_ATTRIBUTES;
 
-   {$EXTERNALSYM PSID_AND_ATTRIBUTES}
 
-   _SID_AND_ATTRIBUTES = record
 
-     Sid: PSID;
 
-     Attributes: DWORD;
 
-   end;
 
-   {$EXTERNALSYM _SID_AND_ATTRIBUTES}
 
-   SID_AND_ATTRIBUTES = _SID_AND_ATTRIBUTES;
 
-   {$EXTERNALSYM SID_AND_ATTRIBUTES}
 
-   TSidAndAttributes = SID_AND_ATTRIBUTES;
 
-   PSidAndAttributes = PSID_AND_ATTRIBUTES;
 
-   SID_AND_ATTRIBUTES_ARRAY = array [0..ANYSIZE_ARRAY - 1] of SID_AND_ATTRIBUTES;
 
-   {$EXTERNALSYM SID_AND_ATTRIBUTES_ARRAY}
 
-   PSID_AND_ATTRIBUTES_ARRAY = ^SID_AND_ATTRIBUTES_ARRAY;
 
-   {$EXTERNALSYM PSID_AND_ATTRIBUTES_ARRAY}
 
-   PSidAndAttributesArray = ^TSidAndAttributesArray;
 
-   TSidAndAttributesArray = SID_AND_ATTRIBUTES_ARRAY;
 
- {$ENDIF ~FPC}
 
- /////////////////////////////////////////////////////////////////////////////
 
- //                                                                         //
 
- // Universal well-known SIDs                                               //
 
- //                                                                         //
 
- //     Null SID                     S-1-0-0                                //
 
- //     World                        S-1-1-0                                //
 
- //     Local                        S-1-2-0                                //
 
- //     Creator Owner ID             S-1-3-0                                //
 
- //     Creator Group ID             S-1-3-1                                //
 
- //     Creator Owner Server ID      S-1-3-2                                //
 
- //     Creator Group Server ID      S-1-3-3                                //
 
- //                                                                         //
 
- //     (Non-unique IDs)             S-1-4                                  //
 
- //                                                                         //
 
- /////////////////////////////////////////////////////////////////////////////
 
- const
 
-   SECURITY_NULL_SID_AUTHORITY: TSidIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 0));
 
-   {$EXTERNALSYM SECURITY_NULL_SID_AUTHORITY}
 
-   SECURITY_WORLD_SID_AUTHORITY: TSidIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 1));
 
-   {$EXTERNALSYM SECURITY_WORLD_SID_AUTHORITY}
 
-   SECURITY_LOCAL_SID_AUTHORITY: TSidIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 2));
 
-   {$EXTERNALSYM SECURITY_LOCAL_SID_AUTHORITY}
 
-   SECURITY_CREATOR_SID_AUTHORITY: TSidIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 3));
 
-   {$EXTERNALSYM SECURITY_CREATOR_SID_AUTHORITY}
 
-   SECURITY_NON_UNIQUE_AUTHORITY: TSidIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 4));
 
-   {$EXTERNALSYM SECURITY_NON_UNIQUE_AUTHORITY}
 
-   SECURITY_RESOURCE_MANAGER_AUTHORITY: TSidIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 9));
 
-   {$EXTERNALSYM SECURITY_RESOURCE_MANAGER_AUTHORITY}
 
-   SECURITY_NULL_RID                 = ($00000000);
 
-   {$EXTERNALSYM SECURITY_NULL_RID}
 
-   SECURITY_WORLD_RID                = ($00000000);
 
-   {$EXTERNALSYM SECURITY_WORLD_RID}
 
-   SECURITY_LOCAL_RID                = ($00000000);
 
-   {$EXTERNALSYM SECURITY_LOCAL_RID}
 
-   SECURITY_CREATOR_OWNER_RID        = ($00000000);
 
-   {$EXTERNALSYM SECURITY_CREATOR_OWNER_RID}
 
-   SECURITY_CREATOR_GROUP_RID        = ($00000001);
 
-   {$EXTERNALSYM SECURITY_CREATOR_GROUP_RID}
 
-   SECURITY_CREATOR_OWNER_SERVER_RID = ($00000002);
 
-   {$EXTERNALSYM SECURITY_CREATOR_OWNER_SERVER_RID}
 
-   SECURITY_CREATOR_GROUP_SERVER_RID = ($00000003);
 
-   {$EXTERNALSYM SECURITY_CREATOR_GROUP_SERVER_RID}
 
- /////////////////////////////////////////////////////////////////////////////
 
- //                                                                         //
 
- // NT well-known SIDs                                                        //
 
- //                                                                           //
 
- //     NT Authority            S-1-5                                         //
 
- //     Dialup                  S-1-5-1                                       //
 
- //                                                                           //
 
- //     Network                 S-1-5-2                                       //
 
- //     Batch                   S-1-5-3                                       //
 
- //     Interactive             S-1-5-4                                       //
 
- //     (Logon IDs)             S-1-5-5-X-Y                                   //
 
- //     Service                 S-1-5-6                                       //
 
- //     AnonymousLogon          S-1-5-7       (aka null logon session)        //
 
- //     Proxy                   S-1-5-8                                       //
 
- //     Enterprise DC (EDC)     S-1-5-9       (aka domain controller account) //
 
- //     Self                    S-1-5-10      (self RID)                      //
 
- //     Authenticated User      S-1-5-11      (Authenticated user somewhere)  //
 
- //     Restricted Code         S-1-5-12      (Running restricted code)       //
 
- //     Terminal Server         S-1-5-13      (Running on Terminal Server)    //
 
- //     Remote Logon            S-1-5-14      (Remote Interactive Logon)      //
 
- //     This Organization       S-1-5-15                                      //
 
- //                                                                           //
 
- //     Local System            S-1-5-18                                      //
 
- //     Local Service           S-1-5-19                                      //
 
- //     Network Service         S-1-5-20                                      //
 
- //                                                                           //
 
- //     (NT non-unique IDs)     S-1-5-0x15-... (NT Domain Sids)               //
 
- //                                                                           //
 
- //     (Built-in domain)       S-1-5-0x20                                    //
 
- //                                                                           //
 
- //     (Security Package IDs)  S-1-5-0x40                                    //
 
- //     NTLM Authentication     S-1-5-0x40-10                                 //
 
- //     SChannel Authentication S-1-5-0x40-14                                 //
 
- //     Digest Authentication   S-1-5-0x40-21                                 //
 
- //                                                                           //
 
- //     Other Organization      S-1-5-1000    (>=1000 can not be filtered)    //
 
- //                                                                           //
 
- //                                                                           //
 
- // NOTE: the relative identifier values (RIDs) determine which security      //
 
- //       boundaries the SID is allowed to cross.  Before adding new RIDs,    //
 
- //       a determination needs to be made regarding which range they should  //
 
- //       be added to in order to ensure proper "SID filtering"               //
 
- //                                                                         //
 
- /////////////////////////////////////////////////////////////////////////////
 
- const
 
-   SECURITY_NT_AUTHORITY: TSidIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 5));
 
-   {$EXTERNALSYM SECURITY_NT_AUTHORITY}
 
-   SECURITY_DIALUP_RID                 = ($00000001);
 
-   {$EXTERNALSYM SECURITY_DIALUP_RID}
 
-   SECURITY_NETWORK_RID                = ($00000002);
 
-   {$EXTERNALSYM SECURITY_NETWORK_RID}
 
-   SECURITY_BATCH_RID                  = ($00000003);
 
-   {$EXTERNALSYM SECURITY_BATCH_RID}
 
-   SECURITY_INTERACTIVE_RID            = ($00000004);
 
-   {$EXTERNALSYM SECURITY_INTERACTIVE_RID}
 
-   SECURITY_LOGON_IDS_RID              = ($00000005);
 
-   {$EXTERNALSYM SECURITY_LOGON_IDS_RID}
 
-   SECURITY_LOGON_IDS_RID_COUNT        = (3);
 
-   {$EXTERNALSYM SECURITY_LOGON_IDS_RID_COUNT}
 
-   SECURITY_SERVICE_RID                = ($00000006);
 
-   {$EXTERNALSYM SECURITY_SERVICE_RID}
 
-   SECURITY_ANONYMOUS_LOGON_RID        = ($00000007);
 
-   {$EXTERNALSYM SECURITY_ANONYMOUS_LOGON_RID}
 
-   SECURITY_PROXY_RID                  = ($00000008);
 
-   {$EXTERNALSYM SECURITY_PROXY_RID}
 
-   SECURITY_ENTERPRISE_CONTROLLERS_RID = ($00000009);
 
-   {$EXTERNALSYM SECURITY_ENTERPRISE_CONTROLLERS_RID}
 
-   SECURITY_SERVER_LOGON_RID           = SECURITY_ENTERPRISE_CONTROLLERS_RID;
 
-   {$EXTERNALSYM SECURITY_SERVER_LOGON_RID}
 
-   SECURITY_PRINCIPAL_SELF_RID         = ($0000000A);
 
-   {$EXTERNALSYM SECURITY_PRINCIPAL_SELF_RID}
 
-   SECURITY_AUTHENTICATED_USER_RID     = ($0000000B);
 
-   {$EXTERNALSYM SECURITY_AUTHENTICATED_USER_RID}
 
-   SECURITY_RESTRICTED_CODE_RID        = ($0000000C);
 
-   {$EXTERNALSYM SECURITY_RESTRICTED_CODE_RID}
 
-   SECURITY_TERMINAL_SERVER_RID        = ($0000000D);
 
-   {$EXTERNALSYM SECURITY_TERMINAL_SERVER_RID}
 
-   SECURITY_REMOTE_LOGON_RID           = ($0000000E);
 
-   {$EXTERNALSYM SECURITY_REMOTE_LOGON_RID}
 
-   SECURITY_THIS_ORGANIZATION_RID      = ($0000000F);
 
-   {$EXTERNALSYM SECURITY_THIS_ORGANIZATION_RID}
 
-   SECURITY_LOCAL_SYSTEM_RID    = ($00000012);
 
-   {$EXTERNALSYM SECURITY_LOCAL_SYSTEM_RID}
 
-   SECURITY_LOCAL_SERVICE_RID   = ($00000013);
 
-   {$EXTERNALSYM SECURITY_LOCAL_SERVICE_RID}
 
-   SECURITY_NETWORK_SERVICE_RID = ($00000014);
 
-   {$EXTERNALSYM SECURITY_NETWORK_SERVICE_RID}
 
-   SECURITY_NT_NON_UNIQUE       = ($00000015);
 
-   {$EXTERNALSYM SECURITY_NT_NON_UNIQUE}
 
-   SECURITY_NT_NON_UNIQUE_SUB_AUTH_COUNT = (3);
 
-   {$EXTERNALSYM SECURITY_NT_NON_UNIQUE_SUB_AUTH_COUNT}
 
-   SECURITY_BUILTIN_DOMAIN_RID  = ($00000020);
 
-   {$EXTERNALSYM SECURITY_BUILTIN_DOMAIN_RID}
 
-   SECURITY_PACKAGE_BASE_RID       = ($00000040);
 
-   {$EXTERNALSYM SECURITY_PACKAGE_BASE_RID}
 
-   SECURITY_PACKAGE_RID_COUNT      = (2);
 
-   {$EXTERNALSYM SECURITY_PACKAGE_RID_COUNT}
 
-   SECURITY_PACKAGE_NTLM_RID       = ($0000000A);
 
-   {$EXTERNALSYM SECURITY_PACKAGE_NTLM_RID}
 
-   SECURITY_PACKAGE_SCHANNEL_RID   = ($0000000E);
 
-   {$EXTERNALSYM SECURITY_PACKAGE_SCHANNEL_RID}
 
-   SECURITY_PACKAGE_DIGEST_RID     = ($00000015);
 
-   {$EXTERNALSYM SECURITY_PACKAGE_DIGEST_RID}
 
-   SECURITY_MAX_ALWAYS_FILTERED    = ($000003E7);
 
-   {$EXTERNALSYM SECURITY_MAX_ALWAYS_FILTERED}
 
-   SECURITY_MIN_NEVER_FILTERED     = ($000003E8);
 
-   {$EXTERNALSYM SECURITY_MIN_NEVER_FILTERED}
 
-   SECURITY_OTHER_ORGANIZATION_RID = ($000003E8);
 
-   {$EXTERNALSYM SECURITY_OTHER_ORGANIZATION_RID}
 
- /////////////////////////////////////////////////////////////////////////////
 
- //                                                                         //
 
- // well-known domain relative sub-authority values (RIDs)...               //
 
- //                                                                         //
 
- /////////////////////////////////////////////////////////////////////////////
 
- // Well-known users ...
 
-   FOREST_USER_RID_MAX    = ($000001F3);
 
-   {$EXTERNALSYM FOREST_USER_RID_MAX}
 
-   DOMAIN_USER_RID_ADMIN  = ($000001F4);
 
-   {$EXTERNALSYM DOMAIN_USER_RID_ADMIN}
 
-   DOMAIN_USER_RID_GUEST  = ($000001F5);
 
-   {$EXTERNALSYM DOMAIN_USER_RID_GUEST}
 
-   DOMAIN_USER_RID_KRBTGT = ($000001F6);
 
-   {$EXTERNALSYM DOMAIN_USER_RID_KRBTGT}
 
-   DOMAIN_USER_RID_MAX    = ($000003E7);
 
-   {$EXTERNALSYM DOMAIN_USER_RID_MAX}
 
- // well-known groups ...
 
-   DOMAIN_GROUP_RID_ADMINS            = ($00000200);
 
-   {$EXTERNALSYM DOMAIN_GROUP_RID_ADMINS}
 
-   DOMAIN_GROUP_RID_USERS             = ($00000201);
 
-   {$EXTERNALSYM DOMAIN_GROUP_RID_USERS}
 
-   DOMAIN_GROUP_RID_GUESTS            = ($00000202);
 
-   {$EXTERNALSYM DOMAIN_GROUP_RID_GUESTS}
 
-   DOMAIN_GROUP_RID_COMPUTERS         = ($00000203);
 
-   {$EXTERNALSYM DOMAIN_GROUP_RID_COMPUTERS}
 
-   DOMAIN_GROUP_RID_CONTROLLERS       = ($00000204);
 
-   {$EXTERNALSYM DOMAIN_GROUP_RID_CONTROLLERS}
 
-   DOMAIN_GROUP_RID_CERT_ADMINS       = ($00000205);
 
-   {$EXTERNALSYM DOMAIN_GROUP_RID_CERT_ADMINS}
 
-   DOMAIN_GROUP_RID_SCHEMA_ADMINS     = ($00000206);
 
-   {$EXTERNALSYM DOMAIN_GROUP_RID_SCHEMA_ADMINS}
 
-   DOMAIN_GROUP_RID_ENTERPRISE_ADMINS = ($00000207);
 
-   {$EXTERNALSYM DOMAIN_GROUP_RID_ENTERPRISE_ADMINS}
 
-   DOMAIN_GROUP_RID_POLICY_ADMINS     = ($00000208);
 
-   {$EXTERNALSYM DOMAIN_GROUP_RID_POLICY_ADMINS}
 
- // well-known aliases ...
 
-   DOMAIN_ALIAS_RID_ADMINS           = ($00000220);
 
-   {$EXTERNALSYM DOMAIN_ALIAS_RID_ADMINS}
 
-   DOMAIN_ALIAS_RID_USERS            = ($00000221);
 
-   {$EXTERNALSYM DOMAIN_ALIAS_RID_USERS}
 
-   DOMAIN_ALIAS_RID_GUESTS           = ($00000222);
 
-   {$EXTERNALSYM DOMAIN_ALIAS_RID_GUESTS}
 
-   DOMAIN_ALIAS_RID_POWER_USERS      = ($00000223);
 
-   {$EXTERNALSYM DOMAIN_ALIAS_RID_POWER_USERS}
 
-   DOMAIN_ALIAS_RID_ACCOUNT_OPS      = ($00000224);
 
-   {$EXTERNALSYM DOMAIN_ALIAS_RID_ACCOUNT_OPS}
 
-   DOMAIN_ALIAS_RID_SYSTEM_OPS       = ($00000225);
 
-   {$EXTERNALSYM DOMAIN_ALIAS_RID_SYSTEM_OPS}
 
-   DOMAIN_ALIAS_RID_PRINT_OPS        = ($00000226);
 
-   {$EXTERNALSYM DOMAIN_ALIAS_RID_PRINT_OPS}
 
-   DOMAIN_ALIAS_RID_BACKUP_OPS       = ($00000227);
 
-   {$EXTERNALSYM DOMAIN_ALIAS_RID_BACKUP_OPS}
 
-   DOMAIN_ALIAS_RID_REPLICATOR       = ($00000228);
 
-   {$EXTERNALSYM DOMAIN_ALIAS_RID_REPLICATOR}
 
-   DOMAIN_ALIAS_RID_RAS_SERVERS      = ($00000229);
 
-   {$EXTERNALSYM DOMAIN_ALIAS_RID_RAS_SERVERS}
 
-   DOMAIN_ALIAS_RID_PREW2KCOMPACCESS = ($0000022A);
 
-   {$EXTERNALSYM DOMAIN_ALIAS_RID_PREW2KCOMPACCESS}
 
-   DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS = ($0000022B);
 
-   {$EXTERNALSYM DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS}
 
-   DOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS = ($0000022C);
 
-   {$EXTERNALSYM DOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS}
 
-   DOMAIN_ALIAS_RID_INCOMING_FOREST_TRUST_BUILDERS = ($0000022D);
 
-   {$EXTERNALSYM DOMAIN_ALIAS_RID_INCOMING_FOREST_TRUST_BUILDERS}
 
-   DOMAIN_ALIAS_RID_MONITORING_USERS      = ($0000022E);
 
-   {$EXTERNALSYM DOMAIN_ALIAS_RID_MONITORING_USERS}
 
-   DOMAIN_ALIAS_RID_LOGGING_USERS         = ($0000022F);
 
-   {$EXTERNALSYM DOMAIN_ALIAS_RID_LOGGING_USERS}
 
-   DOMAIN_ALIAS_RID_AUTHORIZATIONACCESS   = ($00000230);
 
-   {$EXTERNALSYM DOMAIN_ALIAS_RID_AUTHORIZATIONACCESS}
 
-   DOMAIN_ALIAS_RID_TS_LICENSE_SERVERS    = ($00000231);
 
-   {$EXTERNALSYM DOMAIN_ALIAS_RID_TS_LICENSE_SERVERS}
 
- // line 2495
 
- ////////////////////////////////////////////////////////////////////////
 
- //                                                                    //
 
- //               NT Defined Privileges                                //
 
- //                                                                    //
 
- ////////////////////////////////////////////////////////////////////////
 
- const
 
-   SE_CREATE_TOKEN_NAME        = 'SeCreateTokenPrivilege';
 
-   {$EXTERNALSYM SE_CREATE_TOKEN_NAME}
 
-   SE_ASSIGNPRIMARYTOKEN_NAME  = 'SeAssignPrimaryTokenPrivilege';
 
-   {$EXTERNALSYM SE_ASSIGNPRIMARYTOKEN_NAME}
 
-   SE_LOCK_MEMORY_NAME         = 'SeLockMemoryPrivilege';
 
-   {$EXTERNALSYM SE_LOCK_MEMORY_NAME}
 
-   SE_INCREASE_QUOTA_NAME      = 'SeIncreaseQuotaPrivilege';
 
-   {$EXTERNALSYM SE_INCREASE_QUOTA_NAME}
 
-   SE_UNSOLICITED_INPUT_NAME   = 'SeUnsolicitedInputPrivilege';
 
-   {$EXTERNALSYM SE_UNSOLICITED_INPUT_NAME}
 
-   SE_MACHINE_ACCOUNT_NAME     = 'SeMachineAccountPrivilege';
 
-   {$EXTERNALSYM SE_MACHINE_ACCOUNT_NAME}
 
-   SE_TCB_NAME                 = 'SeTcbPrivilege';
 
-   {$EXTERNALSYM SE_TCB_NAME}
 
-   SE_SECURITY_NAME            = 'SeSecurityPrivilege';
 
-   {$EXTERNALSYM SE_SECURITY_NAME}
 
-   SE_TAKE_OWNERSHIP_NAME      = 'SeTakeOwnershipPrivilege';
 
-   {$EXTERNALSYM SE_TAKE_OWNERSHIP_NAME}
 
-   SE_LOAD_DRIVER_NAME         = 'SeLoadDriverPrivilege';
 
-   {$EXTERNALSYM SE_LOAD_DRIVER_NAME}
 
-   SE_SYSTEM_PROFILE_NAME      = 'SeSystemProfilePrivilege';
 
-   {$EXTERNALSYM SE_SYSTEM_PROFILE_NAME}
 
-   SE_SYSTEMTIME_NAME          = 'SeSystemtimePrivilege';
 
-   {$EXTERNALSYM SE_SYSTEMTIME_NAME}
 
-   SE_PROF_SINGLE_PROCESS_NAME = 'SeProfileSingleProcessPrivilege';
 
-   {$EXTERNALSYM SE_PROF_SINGLE_PROCESS_NAME}
 
-   SE_INC_BASE_PRIORITY_NAME   = 'SeIncreaseBasePriorityPrivilege';
 
-   {$EXTERNALSYM SE_INC_BASE_PRIORITY_NAME}
 
-   SE_CREATE_PAGEFILE_NAME     = 'SeCreatePagefilePrivilege';
 
-   {$EXTERNALSYM SE_CREATE_PAGEFILE_NAME}
 
-   SE_CREATE_PERMANENT_NAME    = 'SeCreatePermanentPrivilege';
 
-   {$EXTERNALSYM SE_CREATE_PERMANENT_NAME}
 
-   SE_BACKUP_NAME              = 'SeBackupPrivilege';
 
-   {$EXTERNALSYM SE_BACKUP_NAME}
 
-   SE_RESTORE_NAME             = 'SeRestorePrivilege';
 
-   {$EXTERNALSYM SE_RESTORE_NAME}
 
-   SE_SHUTDOWN_NAME            = 'SeShutdownPrivilege';
 
-   {$EXTERNALSYM SE_SHUTDOWN_NAME}
 
-   SE_DEBUG_NAME               = 'SeDebugPrivilege';
 
-   {$EXTERNALSYM SE_DEBUG_NAME}
 
-   SE_AUDIT_NAME               = 'SeAuditPrivilege';
 
-   {$EXTERNALSYM SE_AUDIT_NAME}
 
-   SE_SYSTEM_ENVIRONMENT_NAME  = 'SeSystemEnvironmentPrivilege';
 
-   {$EXTERNALSYM SE_SYSTEM_ENVIRONMENT_NAME}
 
-   SE_CHANGE_NOTIFY_NAME       = 'SeChangeNotifyPrivilege';
 
-   {$EXTERNALSYM SE_CHANGE_NOTIFY_NAME}
 
-   SE_REMOTE_SHUTDOWN_NAME     = 'SeRemoteShutdownPrivilege';
 
-   {$EXTERNALSYM SE_REMOTE_SHUTDOWN_NAME}
 
-   SE_UNDOCK_NAME              = 'SeUndockPrivilege';
 
-   {$EXTERNALSYM SE_UNDOCK_NAME}
 
-   SE_SYNC_AGENT_NAME          = 'SeSyncAgentPrivilege';
 
-   {$EXTERNALSYM SE_SYNC_AGENT_NAME}
 
-   SE_ENABLE_DELEGATION_NAME   = 'SeEnableDelegationPrivilege';
 
-   {$EXTERNALSYM SE_ENABLE_DELEGATION_NAME}
 
-   SE_MANAGE_VOLUME_NAME       = 'SeManageVolumePrivilege';
 
-   {$EXTERNALSYM SE_MANAGE_VOLUME_NAME}
 
-   SE_IMPERSONATE_NAME         = 'SeImpersonatePrivilege';
 
-   {$EXTERNALSYM SE_IMPERSONATE_NAME}
 
-   SE_CREATE_GLOBAL_NAME       = 'SeCreateGlobalPrivilege';
 
-   {$EXTERNALSYM SE_CREATE_GLOBAL_NAME}
 
- //
 
- // Thread Information Block (TIB)
 
- //
 
- type
 
-   NT_TIB32 = packed record
 
-     ExceptionList: DWORD;
 
-     StackBase: DWORD;
 
-     StackLimit: DWORD;
 
-     SubSystemTib: DWORD;
 
-     case Integer of
 
-       0 : (
 
-         FiberData: DWORD;
 
-         ArbitraryUserPointer: DWORD;
 
-         Self: DWORD;
 
-       );
 
-       1 : (
 
-         Version: DWORD;
 
-       );
 
-   end;
 
-   {$EXTERNALSYM NT_TIB32}
 
-   PNT_TIB32 = ^NT_TIB32;
 
-   {$EXTERNALSYM PNT_TIB32}
 
-   NT_TIB64 = packed record
 
-     ExceptionList: TJclAddr64;
 
-     StackBase: TJclAddr64;
 
-     StackLimit: TJclAddr64;
 
-     SubSystemTib: TJclAddr64;
 
-     case Integer of
 
-       0 : (
 
-         FiberData: TJclAddr64;
 
-         ArbitraryUserPointer: TJclAddr64;
 
-         Self: TJclAddr64;
 
-       );
 
-       1 : (
 
-         Version: DWORD;
 
-       );
 
-   end;
 
-   {$EXTERNALSYM NT_TIB64}
 
-   PNT_TIB64 = ^NT_TIB64;
 
-   {$EXTERNALSYM PNT_TIB64}
 
- // line 2686
 
- //
 
- // Token information class structures
 
- //
 
- {$IFNDEF FPC}
 
- type
 
-   PTOKEN_USER = ^TOKEN_USER;
 
-   {$EXTERNALSYM PTOKEN_USER}
 
-   _TOKEN_USER = record
 
-     User: SID_AND_ATTRIBUTES;
 
-   end;
 
-   {$EXTERNALSYM _TOKEN_USER}
 
-   TOKEN_USER = _TOKEN_USER;
 
-   {$EXTERNALSYM TOKEN_USER}
 
-   TTokenUser = TOKEN_USER;
 
-   PTokenUser = PTOKEN_USER;
 
- {$ENDIF ~FPC}
 
- function CaptureStackBackTrace(FramesToSkip, FramesToCapture: DWORD;
 
-   BackTrace: Pointer; out BackTraceHash: DWORD): Word; stdcall;
 
- {$EXTERNALSYM CaptureStackBackTrace}
 
- // line 3858
 
- //
 
- // Define access rights to files and directories
 
- //
 
- //
 
- // The FILE_READ_DATA and FILE_WRITE_DATA constants are also defined in
 
- // devioctl.h as FILE_READ_ACCESS and FILE_WRITE_ACCESS. The values for these
 
- // constants *MUST* always be in sync.
 
- // The values are redefined in devioctl.h because they must be available to
 
- // both DOS and NT.
 
- //
 
- const
 
-   FILE_READ_DATA            = ($0001); // file & pipe
 
-   {$EXTERNALSYM FILE_READ_DATA}
 
-   FILE_LIST_DIRECTORY       = ($0001); // directory
 
-   {$EXTERNALSYM FILE_LIST_DIRECTORY}
 
-   FILE_WRITE_DATA           = ($0002); // file & pipe
 
-   {$EXTERNALSYM FILE_WRITE_DATA}
 
-   FILE_ADD_FILE             = ($0002); // directory
 
-   {$EXTERNALSYM FILE_ADD_FILE}
 
-   FILE_APPEND_DATA          = ($0004); // file
 
-   {$EXTERNALSYM FILE_APPEND_DATA}
 
-   FILE_ADD_SUBDIRECTORY     = ($0004); // directory
 
-   {$EXTERNALSYM FILE_ADD_SUBDIRECTORY}
 
-   FILE_CREATE_PIPE_INSTANCE = ($0004); // named pipe
 
-   {$EXTERNALSYM FILE_CREATE_PIPE_INSTANCE}
 
-   FILE_READ_EA = ($0008); // file & directory
 
-   {$EXTERNALSYM FILE_READ_EA}
 
-   FILE_WRITE_EA = ($0010); // file & directory
 
-   {$EXTERNALSYM FILE_WRITE_EA}
 
-   FILE_EXECUTE = ($0020); // file
 
-   {$EXTERNALSYM FILE_EXECUTE}
 
-   FILE_TRAVERSE = ($0020); // directory
 
-   {$EXTERNALSYM FILE_TRAVERSE}
 
-   FILE_DELETE_CHILD = ($0040); // directory
 
-   {$EXTERNALSYM FILE_DELETE_CHILD}
 
-   FILE_READ_ATTRIBUTES = ($0080); // all
 
-   {$EXTERNALSYM FILE_READ_ATTRIBUTES}
 
-   FILE_WRITE_ATTRIBUTES = ($0100); // all
 
-   {$EXTERNALSYM FILE_WRITE_ATTRIBUTES}
 
-   FILE_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or $1FF);
 
-   {$EXTERNALSYM FILE_ALL_ACCESS}
 
-   FILE_GENERIC_READ = (STANDARD_RIGHTS_READ or FILE_READ_DATA or
 
-     FILE_READ_ATTRIBUTES or FILE_READ_EA or SYNCHRONIZE);
 
-   {$EXTERNALSYM FILE_GENERIC_READ}
 
-   FILE_GENERIC_WRITE = (STANDARD_RIGHTS_WRITE or FILE_WRITE_DATA or
 
-     FILE_WRITE_ATTRIBUTES or FILE_WRITE_EA or FILE_APPEND_DATA or SYNCHRONIZE);
 
-   {$EXTERNALSYM FILE_GENERIC_WRITE}
 
-   FILE_GENERIC_EXECUTE = (STANDARD_RIGHTS_EXECUTE or FILE_READ_ATTRIBUTES or
 
-     FILE_EXECUTE or SYNCHRONIZE);
 
-   {$EXTERNALSYM FILE_GENERIC_EXECUTE}
 
-   FILE_SHARE_READ                    = $00000001;
 
-   {$EXTERNALSYM FILE_SHARE_READ}
 
-   FILE_SHARE_WRITE                   = $00000002;
 
-   {$EXTERNALSYM FILE_SHARE_WRITE}
 
-   FILE_SHARE_DELETE                  = $00000004;
 
-   {$EXTERNALSYM FILE_SHARE_DELETE}
 
-   FILE_ATTRIBUTE_READONLY            = $00000001;
 
-   {$EXTERNALSYM FILE_ATTRIBUTE_READONLY}
 
-   FILE_ATTRIBUTE_HIDDEN              = $00000002;
 
-   {$EXTERNALSYM FILE_ATTRIBUTE_HIDDEN}
 
-   FILE_ATTRIBUTE_SYSTEM              = $00000004;
 
-   {$EXTERNALSYM FILE_ATTRIBUTE_SYSTEM}
 
-   FILE_ATTRIBUTE_DIRECTORY           = $00000010;
 
-   {$EXTERNALSYM FILE_ATTRIBUTE_DIRECTORY}
 
-   FILE_ATTRIBUTE_ARCHIVE             = $00000020;
 
-   {$EXTERNALSYM FILE_ATTRIBUTE_ARCHIVE}
 
-   FILE_ATTRIBUTE_DEVICE              = $00000040;
 
-   {$EXTERNALSYM FILE_ATTRIBUTE_DEVICE}
 
-   FILE_ATTRIBUTE_NORMAL              = $00000080;
 
-   {$EXTERNALSYM FILE_ATTRIBUTE_NORMAL}
 
-   FILE_ATTRIBUTE_TEMPORARY           = $00000100;
 
-   {$EXTERNALSYM FILE_ATTRIBUTE_TEMPORARY}
 
-   FILE_ATTRIBUTE_SPARSE_FILE         = $00000200;
 
-   {$EXTERNALSYM FILE_ATTRIBUTE_SPARSE_FILE}
 
-   FILE_ATTRIBUTE_REPARSE_POINT       = $00000400;
 
-   {$EXTERNALSYM FILE_ATTRIBUTE_REPARSE_POINT}
 
-   FILE_ATTRIBUTE_COMPRESSED          = $00000800;
 
-   {$EXTERNALSYM FILE_ATTRIBUTE_COMPRESSED}
 
-   FILE_ATTRIBUTE_OFFLINE             = $00001000;
 
-   {$EXTERNALSYM FILE_ATTRIBUTE_OFFLINE}
 
-   FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = $00002000;
 
-   {$EXTERNALSYM FILE_ATTRIBUTE_NOT_CONTENT_INDEXED}
 
-   FILE_ATTRIBUTE_ENCRYPTED           = $00004000;
 
-   {$EXTERNALSYM FILE_ATTRIBUTE_ENCRYPTED}
 
-   FILE_NOTIFY_CHANGE_FILE_NAME       = $00000001;
 
-   {$EXTERNALSYM FILE_NOTIFY_CHANGE_FILE_NAME}
 
-   FILE_NOTIFY_CHANGE_DIR_NAME        = $00000002;
 
-   {$EXTERNALSYM FILE_NOTIFY_CHANGE_DIR_NAME}
 
-   FILE_NOTIFY_CHANGE_ATTRIBUTES      = $00000004;
 
-   {$EXTERNALSYM FILE_NOTIFY_CHANGE_ATTRIBUTES}
 
-   FILE_NOTIFY_CHANGE_SIZE            = $00000008;
 
-   {$EXTERNALSYM FILE_NOTIFY_CHANGE_SIZE}
 
-   FILE_NOTIFY_CHANGE_LAST_WRITE      = $00000010;
 
-   {$EXTERNALSYM FILE_NOTIFY_CHANGE_LAST_WRITE}
 
-   FILE_NOTIFY_CHANGE_LAST_ACCESS     = $00000020;
 
-   {$EXTERNALSYM FILE_NOTIFY_CHANGE_LAST_ACCESS}
 
-   FILE_NOTIFY_CHANGE_CREATION        = $00000040;
 
-   {$EXTERNALSYM FILE_NOTIFY_CHANGE_CREATION}
 
-   FILE_NOTIFY_CHANGE_SECURITY        = $00000100;
 
-   {$EXTERNALSYM FILE_NOTIFY_CHANGE_SECURITY}
 
-   FILE_ACTION_ADDED                  = $00000001;
 
-   {$EXTERNALSYM FILE_ACTION_ADDED}
 
-   FILE_ACTION_REMOVED                = $00000002;
 
-   {$EXTERNALSYM FILE_ACTION_REMOVED}
 
-   FILE_ACTION_MODIFIED               = $00000003;
 
-   {$EXTERNALSYM FILE_ACTION_MODIFIED}
 
-   FILE_ACTION_RENAMED_OLD_NAME       = $00000004;
 
-   {$EXTERNALSYM FILE_ACTION_RENAMED_OLD_NAME}
 
-   FILE_ACTION_RENAMED_NEW_NAME       = $00000005;
 
-   {$EXTERNALSYM FILE_ACTION_RENAMED_NEW_NAME}
 
-   MAILSLOT_NO_MESSAGE                = DWORD(-1);
 
-   {$EXTERNALSYM MAILSLOT_NO_MESSAGE}
 
-   MAILSLOT_WAIT_FOREVER              = DWORD(-1);
 
-   {$EXTERNALSYM MAILSLOT_WAIT_FOREVER}
 
-   FILE_CASE_SENSITIVE_SEARCH         = $00000001;
 
-   {$EXTERNALSYM FILE_CASE_SENSITIVE_SEARCH}
 
-   FILE_CASE_PRESERVED_NAMES          = $00000002;
 
-   {$EXTERNALSYM FILE_CASE_PRESERVED_NAMES}
 
-   FILE_UNICODE_ON_DISK               = $00000004;
 
-   {$EXTERNALSYM FILE_UNICODE_ON_DISK}
 
-   FILE_PERSISTENT_ACLS               = $00000008;
 
-   {$EXTERNALSYM FILE_PERSISTENT_ACLS}
 
-   FILE_FILE_COMPRESSION              = $00000010;
 
-   {$EXTERNALSYM FILE_FILE_COMPRESSION}
 
-   FILE_VOLUME_QUOTAS                 = $00000020;
 
-   {$EXTERNALSYM FILE_VOLUME_QUOTAS}
 
-   FILE_SUPPORTS_SPARSE_FILES         = $00000040;
 
-   {$EXTERNALSYM FILE_SUPPORTS_SPARSE_FILES}
 
-   FILE_SUPPORTS_REPARSE_POINTS       = $00000080;
 
-   {$EXTERNALSYM FILE_SUPPORTS_REPARSE_POINTS}
 
-   FILE_SUPPORTS_REMOTE_STORAGE       = $00000100;
 
-   {$EXTERNALSYM FILE_SUPPORTS_REMOTE_STORAGE}
 
-   FILE_VOLUME_IS_COMPRESSED          = $00008000;
 
-   {$EXTERNALSYM FILE_VOLUME_IS_COMPRESSED}
 
-   FILE_SUPPORTS_OBJECT_IDS           = $00010000;
 
-   {$EXTERNALSYM FILE_SUPPORTS_OBJECT_IDS}
 
-   FILE_SUPPORTS_ENCRYPTION           = $00020000;
 
-   {$EXTERNALSYM FILE_SUPPORTS_ENCRYPTION}
 
-   FILE_NAMED_STREAMS                 = $00040000;
 
-   {$EXTERNALSYM FILE_NAMED_STREAMS}
 
-   FILE_READ_ONLY_VOLUME              = $00080000;
 
-   {$EXTERNALSYM FILE_READ_ONLY_VOLUME}
 
- // line 4052
 
- //
 
- // The reparse GUID structure is used by all 3rd party layered drivers to
 
- // store data in a reparse point. For non-Microsoft tags, The GUID field
 
- // cannot be GUID_NULL.
 
- // The constraints on reparse tags are defined below.
 
- // Microsoft tags can also be used with this format of the reparse point buffer.
 
- //
 
- type
 
-   TGenericReparseBuffer = record
 
-     DataBuffer: array [0..0] of BYTE;
 
-   end;
 
-   PREPARSE_GUID_DATA_BUFFER = ^REPARSE_GUID_DATA_BUFFER;
 
-   {$EXTERNALSYM PREPARSE_GUID_DATA_BUFFER}
 
-   _REPARSE_GUID_DATA_BUFFER = record
 
-     ReparseTag: DWORD;
 
-     ReparseDataLength: WORD;
 
-     Reserved: WORD;
 
-     ReparseGuid: TGUID;
 
-     GenericReparseBuffer: TGenericReparseBuffer;
 
-   end;
 
-   {$EXTERNALSYM _REPARSE_GUID_DATA_BUFFER}
 
-   REPARSE_GUID_DATA_BUFFER = _REPARSE_GUID_DATA_BUFFER;
 
-   {$EXTERNALSYM REPARSE_GUID_DATA_BUFFER}
 
-   TReparseGuidDataBuffer = REPARSE_GUID_DATA_BUFFER;
 
-   PReparseGuidDataBuffer = PREPARSE_GUID_DATA_BUFFER;
 
- const
 
-   REPARSE_GUID_DATA_BUFFER_HEADER_SIZE = 24;
 
-   {$EXTERNALSYM REPARSE_GUID_DATA_BUFFER_HEADER_SIZE}
 
- //
 
- // Maximum allowed size of the reparse data.
 
- //
 
- const
 
-   MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024;
 
-   {$EXTERNALSYM MAXIMUM_REPARSE_DATA_BUFFER_SIZE}
 
- //
 
- // Predefined reparse tags.
 
- // These tags need to avoid conflicting with IO_REMOUNT defined in ntos\inc\io.h
 
- //
 
-   IO_REPARSE_TAG_RESERVED_ZERO = (0);
 
-   {$EXTERNALSYM IO_REPARSE_TAG_RESERVED_ZERO}
 
-   IO_REPARSE_TAG_RESERVED_ONE  = (1);
 
-   {$EXTERNALSYM IO_REPARSE_TAG_RESERVED_ONE}
 
- //
 
- // The value of the following constant needs to satisfy the following conditions:
 
- //  (1) Be at least as large as the largest of the reserved tags.
 
- //  (2) Be strictly smaller than all the tags in use.
 
- //
 
-   IO_REPARSE_TAG_RESERVED_RANGE = IO_REPARSE_TAG_RESERVED_ONE;
 
-   {$EXTERNALSYM IO_REPARSE_TAG_RESERVED_RANGE}
 
- //
 
- // The reparse tags are a DWORD. The 32 bits are laid out as follows:
 
- //
 
- //   3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
 
- //   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
 
- //  +-+-+-+-+-----------------------+-------------------------------+
 
- //  |M|R|N|R|     Reserved bits     |       Reparse Tag Value       |
 
- //  +-+-+-+-+-----------------------+-------------------------------+
 
- //
 
- // M is the Microsoft bit. When set to 1, it denotes a tag owned by Microsoft.
 
- //   All ISVs must use a tag with a 0 in this position.
 
- //   Note: If a Microsoft tag is used by non-Microsoft software, the
 
- //   behavior is not defined.
 
- //
 
- // R is reserved.  Must be zero for non-Microsoft tags.
 
- //
 
- // N is name surrogate. When set to 1, the file represents another named
 
- //   entity in the system.
 
- //
 
- // The M and N bits are OR-able.
 
- // The following macros check for the M and N bit values:
 
- //
 
- //
 
- // Macro to determine whether a reparse point tag corresponds to a tag
 
- // owned by Microsoft.
 
- //
 
- function IsReparseTagMicrosoft(Tag: ULONG): Boolean;
 
- {$EXTERNALSYM IsReparseTagMicrosoft}
 
- //
 
- // Macro to determine whether a reparse point tag corresponds to a file
 
- // that is to be displayed with the slow icon overlay.
 
- //
 
- function IsReparseTagHighLatency(Tag: ULONG): Boolean;
 
- {$EXTERNALSYM IsReparseTagHighLatency}
 
- //
 
- // Macro to determine whether a reparse point tag is a name surrogate
 
- //
 
- function IsReparseTagNameSurrogate(Tag: ULONG): Boolean;
 
- {$EXTERNALSYM IsReparseTagNameSurrogate}
 
- const
 
-   IO_REPARSE_TAG_MOUNT_POINT = DWORD($A0000003);
 
-   {$EXTERNALSYM IO_REPARSE_TAG_MOUNT_POINT}
 
-   IO_REPARSE_TAG_HSM         = DWORD($C0000004);
 
-   {$EXTERNALSYM IO_REPARSE_TAG_HSM}
 
-   IO_REPARSE_TAG_DRIVER_EXTENDER = DWORD($80000005);
 
-   {$EXTERNALSYM IO_REPARSE_TAG_DRIVER_EXTENDER}
 
-   IO_REPARSE_TAG_HSM2        = DWORD($80000006);
 
-   {$EXTERNALSYM IO_REPARSE_TAG_HSM2}
 
-   IO_REPARSE_TAG_SIS         = DWORD($80000007);
 
-   {$EXTERNALSYM IO_REPARSE_TAG_SIS}
 
-   IO_REPARSE_TAG_DFS         = DWORD($8000000A);
 
-   {$EXTERNALSYM IO_REPARSE_TAG_DFS}
 
-   IO_REPARSE_TAG_FILTER_MANAGER = DWORD($8000000B);
 
-   {$EXTERNALSYM IO_REPARSE_TAG_FILTER_MANAGER}
 
-   IO_REPARSE_TAG_SYMLINK     = DWORD($A000000C);
 
-   {$EXTERNALSYM IO_REPARSE_TAG_SYMLINK}
 
-   IO_REPARSE_TAG_DFSR        = DWORD($80000012);
 
-   {$EXTERNALSYM IO_REPARSE_TAG_DFSR}
 
-   IO_REPARSE_TAG_NFS         = DWORD($80000014);
 
-   {$EXTERNALSYM IO_REPARSE_TAG_NFS}
 
-   IO_COMPLETION_MODIFY_STATE = $0002;
 
-   {$EXTERNALSYM IO_COMPLETION_MODIFY_STATE}
 
-   IO_COMPLETION_ALL_ACCESS   = DWORD(STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or $3);
 
-   {$EXTERNALSYM IO_COMPLETION_ALL_ACCESS}
 
-   DUPLICATE_CLOSE_SOURCE     = $00000001;
 
-   {$EXTERNALSYM DUPLICATE_CLOSE_SOURCE}
 
-   DUPLICATE_SAME_ACCESS      = $00000002;
 
-   {$EXTERNALSYM DUPLICATE_SAME_ACCESS}
 
- // line 4763
 
- //
 
- // File header format.
 
- //
 
- {$IFNDEF FPC}
 
- type
 
-   PIMAGE_FILE_HEADER = ^IMAGE_FILE_HEADER;
 
-   {$EXTERNALSYM PIMAGE_FILE_HEADER}
 
-   _IMAGE_FILE_HEADER = record
 
-     Machine: WORD;
 
-     NumberOfSections: WORD;
 
-     TimeDateStamp: DWORD;
 
-     PointerToSymbolTable: DWORD;
 
-     NumberOfSymbols: DWORD;
 
-     SizeOfOptionalHeader: WORD;
 
-     Characteristics: WORD;
 
-   end;
 
-   {$EXTERNALSYM _IMAGE_FILE_HEADER}
 
-   IMAGE_FILE_HEADER = _IMAGE_FILE_HEADER;
 
-   {$EXTERNALSYM IMAGE_FILE_HEADER}
 
-   TImageFileHeader = IMAGE_FILE_HEADER;
 
-   PImageFileHeader = PIMAGE_FILE_HEADER;
 
- {$ENDIF ~FPC}
 
- const
 
-   IMAGE_SIZEOF_FILE_HEADER = 20;
 
-   {$EXTERNALSYM IMAGE_SIZEOF_FILE_HEADER}
 
-   IMAGE_FILE_RELOCS_STRIPPED         = $0001; // Relocation info stripped from file.
 
-   {$EXTERNALSYM IMAGE_FILE_RELOCS_STRIPPED}
 
-   IMAGE_FILE_EXECUTABLE_IMAGE        = $0002; // File is executable  (i.e. no unresolved externel references).
 
-   {$EXTERNALSYM IMAGE_FILE_EXECUTABLE_IMAGE}
 
-   IMAGE_FILE_LINE_NUMS_STRIPPED      = $0004; // Line nunbers stripped from file.
 
-   {$EXTERNALSYM IMAGE_FILE_LINE_NUMS_STRIPPED}
 
-   IMAGE_FILE_LOCAL_SYMS_STRIPPED     = $0008; // Local symbols stripped from file.
 
-   {$EXTERNALSYM IMAGE_FILE_LOCAL_SYMS_STRIPPED}
 
-   IMAGE_FILE_AGGRESIVE_WS_TRIM       = $0010; // Agressively trim working set
 
-   {$EXTERNALSYM IMAGE_FILE_AGGRESIVE_WS_TRIM}
 
-   IMAGE_FILE_LARGE_ADDRESS_AWARE     = $0020; // App can handle >2gb addresses
 
-   {$EXTERNALSYM IMAGE_FILE_LARGE_ADDRESS_AWARE}
 
-   IMAGE_FILE_BYTES_REVERSED_LO       = $0080; // Bytes of machine word are reversed.
 
-   {$EXTERNALSYM IMAGE_FILE_BYTES_REVERSED_LO}
 
-   IMAGE_FILE_32BIT_MACHINE           = $0100; // 32 bit word machine.
 
-   {$EXTERNALSYM IMAGE_FILE_32BIT_MACHINE}
 
-   IMAGE_FILE_DEBUG_STRIPPED          = $0200; // Debugging info stripped from file in .DBG file
 
-   {$EXTERNALSYM IMAGE_FILE_DEBUG_STRIPPED}
 
-   IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP = $0400; // If Image is on removable media, copy and run from the swap file.
 
-   {$EXTERNALSYM IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP}
 
-   IMAGE_FILE_NET_RUN_FROM_SWAP       = $0800; // If Image is on Net, copy and run from the swap file.
 
-   {$EXTERNALSYM IMAGE_FILE_NET_RUN_FROM_SWAP}
 
-   IMAGE_FILE_SYSTEM                  = $1000; // System File.
 
-   {$EXTERNALSYM IMAGE_FILE_SYSTEM}
 
-   IMAGE_FILE_DLL                     = $2000; // File is a DLL.
 
-   {$EXTERNALSYM IMAGE_FILE_DLL}
 
-   IMAGE_FILE_UP_SYSTEM_ONLY          = $4000; // File should only be run on a UP machine
 
-   {$EXTERNALSYM IMAGE_FILE_UP_SYSTEM_ONLY}
 
-   IMAGE_FILE_BYTES_REVERSED_HI       = $8000; // Bytes of machine word are reversed.
 
-   {$EXTERNALSYM IMAGE_FILE_BYTES_REVERSED_HI}
 
-   IMAGE_FILE_MACHINE_UNKNOWN   = 0;
 
-   {$EXTERNALSYM IMAGE_FILE_MACHINE_UNKNOWN}
 
-   IMAGE_FILE_MACHINE_I386      = $014c; // Intel 386.
 
-   {$EXTERNALSYM IMAGE_FILE_MACHINE_I386}
 
-   IMAGE_FILE_MACHINE_R3000     = $0162; // MIPS little-endian, 0x160 big-endian
 
-   {$EXTERNALSYM IMAGE_FILE_MACHINE_R3000}
 
-   IMAGE_FILE_MACHINE_R4000     = $0166; // MIPS little-endian
 
-   {$EXTERNALSYM IMAGE_FILE_MACHINE_R4000}
 
-   IMAGE_FILE_MACHINE_R10000    = $0168; // MIPS little-endian
 
-   {$EXTERNALSYM IMAGE_FILE_MACHINE_R10000}
 
-   IMAGE_FILE_MACHINE_WCEMIPSV2 = $0169; // MIPS little-endian WCE v2
 
-   {$EXTERNALSYM IMAGE_FILE_MACHINE_WCEMIPSV2}
 
-   IMAGE_FILE_MACHINE_ALPHA     = $0184; // Alpha_AXP
 
-   {$EXTERNALSYM IMAGE_FILE_MACHINE_ALPHA}
 
-   IMAGE_FILE_MACHINE_SH3       = $01a2; // SH3 little-endian
 
-   {$EXTERNALSYM IMAGE_FILE_MACHINE_SH3}
 
-   IMAGE_FILE_MACHINE_SH3DSP    = $01a3;
 
-   {$EXTERNALSYM IMAGE_FILE_MACHINE_SH3DSP}
 
-   IMAGE_FILE_MACHINE_SH3E      = $01a4; // SH3E little-endian
 
-   {$EXTERNALSYM IMAGE_FILE_MACHINE_SH3E}
 
-   IMAGE_FILE_MACHINE_SH4       = $01a6; // SH4 little-endian
 
-   {$EXTERNALSYM IMAGE_FILE_MACHINE_SH4}
 
-   IMAGE_FILE_MACHINE_SH5       = $01a8; // SH5
 
-   {$EXTERNALSYM IMAGE_FILE_MACHINE_SH5}
 
-   IMAGE_FILE_MACHINE_ARM       = $01c0; // ARM Little-Endian
 
-   {$EXTERNALSYM IMAGE_FILE_MACHINE_ARM}
 
-   IMAGE_FILE_MACHINE_THUMB     = $01c2;
 
-   {$EXTERNALSYM IMAGE_FILE_MACHINE_THUMB}
 
-   IMAGE_FILE_MACHINE_AM33      = $01d3;
 
-   {$EXTERNALSYM IMAGE_FILE_MACHINE_AM33}
 
-   IMAGE_FILE_MACHINE_POWERPC   = $01F0; // IBM PowerPC Little-Endian
 
-   {$EXTERNALSYM IMAGE_FILE_MACHINE_POWERPC}
 
-   IMAGE_FILE_MACHINE_POWERPCFP = $01f1;
 
-   {$EXTERNALSYM IMAGE_FILE_MACHINE_POWERPCFP}
 
-   IMAGE_FILE_MACHINE_IA64      = $0200; // Intel 64
 
-   {$EXTERNALSYM IMAGE_FILE_MACHINE_IA64}
 
-   IMAGE_FILE_MACHINE_MIPS16    = $0266; // MIPS
 
-   {$EXTERNALSYM IMAGE_FILE_MACHINE_MIPS16}
 
-   IMAGE_FILE_MACHINE_ALPHA64   = $0284; // ALPHA64
 
-   {$EXTERNALSYM IMAGE_FILE_MACHINE_ALPHA64}
 
-   IMAGE_FILE_MACHINE_MIPSFPU   = $0366; // MIPS
 
-   {$EXTERNALSYM IMAGE_FILE_MACHINE_MIPSFPU}
 
-   IMAGE_FILE_MACHINE_MIPSFPU16 = $0466; // MIPS
 
-   {$EXTERNALSYM IMAGE_FILE_MACHINE_MIPSFPU16}
 
-   IMAGE_FILE_MACHINE_AXP64     = IMAGE_FILE_MACHINE_ALPHA64;
 
-   {$EXTERNALSYM IMAGE_FILE_MACHINE_AXP64}
 
-   IMAGE_FILE_MACHINE_TRICORE   = $0520; // Infineon
 
-   {$EXTERNALSYM IMAGE_FILE_MACHINE_TRICORE}
 
-   IMAGE_FILE_MACHINE_CEF       = $0CEF;
 
-   {$EXTERNALSYM IMAGE_FILE_MACHINE_CEF}
 
-   IMAGE_FILE_MACHINE_EBC       = $0EBC; // EFI Byte Code
 
-   {$EXTERNALSYM IMAGE_FILE_MACHINE_EBC}
 
-   IMAGE_FILE_MACHINE_AMD64     = $8664; // AMD64 (K8)
 
-   {$EXTERNALSYM IMAGE_FILE_MACHINE_AMD64}
 
-   IMAGE_FILE_MACHINE_M32R      = $9041; // M32R little-endian
 
-   {$EXTERNALSYM IMAGE_FILE_MACHINE_M32R}
 
-   IMAGE_FILE_MACHINE_CEE       = $C0EE;
 
-   {$EXTERNALSYM IMAGE_FILE_MACHINE_CEE}
 
- //
 
- // Directory format.
 
- //
 
- const
 
-   IMAGE_NUMBEROF_DIRECTORY_ENTRIES = 16;
 
-   {$EXTERNALSYM IMAGE_NUMBEROF_DIRECTORY_ENTRIES}
 
- //
 
- // Optional header format.
 
- //
 
- {$IFNDEF FPC}
 
- type
 
-   PIMAGE_OPTIONAL_HEADER32 = ^IMAGE_OPTIONAL_HEADER32;
 
-   {$EXTERNALSYM PIMAGE_OPTIONAL_HEADER32}
 
-   {$IF declared(_IMAGE_OPTIONAL_HEADER32)} // XE2+
 
-   IMAGE_OPTIONAL_HEADER32 = _IMAGE_OPTIONAL_HEADER32;
 
-   {$ELSE}
 
-   IMAGE_OPTIONAL_HEADER32 = _IMAGE_OPTIONAL_HEADER;
 
-   {$IFEND}
 
-   {$EXTERNALSYM IMAGE_OPTIONAL_HEADER32}
 
-   TImageOptionalHeader32 = IMAGE_OPTIONAL_HEADER32;
 
-   PImageOptionalHeader32 = PIMAGE_OPTIONAL_HEADER32;
 
-   PIMAGE_ROM_OPTIONAL_HEADER = ^IMAGE_ROM_OPTIONAL_HEADER;
 
-   {$EXTERNALSYM PIMAGE_ROM_OPTIONAL_HEADER}
 
-   _IMAGE_ROM_OPTIONAL_HEADER = record
 
-     Magic: Word;
 
-     MajorLinkerVersion: Byte;
 
-     MinorLinkerVersion: Byte;
 
-     SizeOfCode: DWORD;
 
-     SizeOfInitializedData: DWORD;
 
-     SizeOfUninitializedData: DWORD;
 
-     AddressOfEntryPoint: DWORD;
 
-     BaseOfCode: DWORD;
 
-     BaseOfData: DWORD;
 
-     BaseOfBss: DWORD;
 
-     GprMask: DWORD;
 
-     CprMask: array [0..3] of DWORD;
 
-     GpValue: DWORD;
 
-   end;
 
-   {$EXTERNALSYM _IMAGE_ROM_OPTIONAL_HEADER}
 
-   IMAGE_ROM_OPTIONAL_HEADER = _IMAGE_ROM_OPTIONAL_HEADER;
 
-   {$EXTERNALSYM IMAGE_ROM_OPTIONAL_HEADER}
 
-   TImageRomOptionalHeader = IMAGE_ROM_OPTIONAL_HEADER;
 
-   PImageRomOptionalHeader = PIMAGE_ROM_OPTIONAL_HEADER;
 
-   PIMAGE_OPTIONAL_HEADER64 = ^IMAGE_OPTIONAL_HEADER64;
 
-   {$EXTERNALSYM PIMAGE_OPTIONAL_HEADER64}
 
-   _IMAGE_OPTIONAL_HEADER64 = record
 
-     Magic: Word;
 
-     MajorLinkerVersion: Byte;
 
-     MinorLinkerVersion: Byte;
 
-     SizeOfCode: DWORD;
 
-     SizeOfInitializedData: DWORD;
 
-     SizeOfUninitializedData: DWORD;
 
-     AddressOfEntryPoint: DWORD;
 
-     BaseOfCode: DWORD;
 
-     ImageBase: Int64;
 
-     SectionAlignment: DWORD;
 
-     FileAlignment: DWORD;
 
-     MajorOperatingSystemVersion: Word;
 
-     MinorOperatingSystemVersion: Word;
 
-     MajorImageVersion: Word;
 
-     MinorImageVersion: Word;
 
-     MajorSubsystemVersion: Word;
 
-     MinorSubsystemVersion: Word;
 
-     Win32VersionValue: DWORD;
 
-     SizeOfImage: DWORD;
 
-     SizeOfHeaders: DWORD;
 
-     CheckSum: DWORD;
 
-     Subsystem: Word;
 
-     DllCharacteristics: Word;
 
-     SizeOfStackReserve: Int64;
 
-     SizeOfStackCommit: Int64;
 
-     SizeOfHeapReserve: Int64;
 
-     SizeOfHeapCommit: Int64;
 
-     LoaderFlags: DWORD;
 
-     NumberOfRvaAndSizes: DWORD;
 
-     DataDirectory: array [0..IMAGE_NUMBEROF_DIRECTORY_ENTRIES - 1] of IMAGE_DATA_DIRECTORY;
 
-   end;
 
-   {$EXTERNALSYM _IMAGE_OPTIONAL_HEADER64}
 
-   IMAGE_OPTIONAL_HEADER64 = _IMAGE_OPTIONAL_HEADER64;
 
-   {$EXTERNALSYM IMAGE_OPTIONAL_HEADER64}
 
-   TImageOptionalHeader64 = IMAGE_OPTIONAL_HEADER64;
 
-   PImageOptionalHeader64 = PIMAGE_OPTIONAL_HEADER64;
 
- {$ENDIF ~FPC}
 
- const
 
-   IMAGE_SIZEOF_ROM_OPTIONAL_HEADER  = 56;
 
-   {$EXTERNALSYM IMAGE_SIZEOF_ROM_OPTIONAL_HEADER}
 
-   IMAGE_SIZEOF_STD_OPTIONAL_HEADER  = 28;
 
-   {$EXTERNALSYM IMAGE_SIZEOF_STD_OPTIONAL_HEADER}
 
-   IMAGE_SIZEOF_NT_OPTIONAL32_HEADER = 224;
 
-   {$EXTERNALSYM IMAGE_SIZEOF_NT_OPTIONAL32_HEADER}
 
-   IMAGE_SIZEOF_NT_OPTIONAL64_HEADER = 240;
 
-   {$EXTERNALSYM IMAGE_SIZEOF_NT_OPTIONAL64_HEADER}
 
-   IMAGE_NT_OPTIONAL_HDR32_MAGIC = $10b;
 
-   {$EXTERNALSYM IMAGE_NT_OPTIONAL_HDR32_MAGIC}
 
-   IMAGE_NT_OPTIONAL_HDR64_MAGIC = $20b;
 
-   {$EXTERNALSYM IMAGE_NT_OPTIONAL_HDR64_MAGIC}
 
-   IMAGE_ROM_OPTIONAL_HDR_MAGIC  = $107;
 
-   {$EXTERNALSYM IMAGE_ROM_OPTIONAL_HDR_MAGIC}
 
- (*
 
- type
 
-   IMAGE_OPTIONAL_HEADER = IMAGE_OPTIONAL_HEADER32;
 
-   {$EXTERNALSYM IMAGE_OPTIONAL_HEADER}
 
-   PIMAGE_OPTIONAL_HEADER = PIMAGE_OPTIONAL_HEADER32;
 
-   {$EXTERNALSYM PIMAGE_OPTIONAL_HEADER}
 
- *)
 
- const
 
-   IMAGE_SIZEOF_NT_OPTIONAL_HEADER = IMAGE_SIZEOF_NT_OPTIONAL32_HEADER;
 
-   {$EXTERNALSYM IMAGE_SIZEOF_NT_OPTIONAL_HEADER}
 
-   IMAGE_NT_OPTIONAL_HDR_MAGIC     = IMAGE_NT_OPTIONAL_HDR32_MAGIC;
 
-   {$EXTERNALSYM IMAGE_NT_OPTIONAL_HDR_MAGIC}
 
- {$IFNDEF FPC}
 
- type
 
-   PIMAGE_NT_HEADERS64 = ^IMAGE_NT_HEADERS64;
 
-   {$EXTERNALSYM PIMAGE_NT_HEADERS64}
 
-   _IMAGE_NT_HEADERS64 = record
 
-     Signature: DWORD;
 
-     FileHeader: IMAGE_FILE_HEADER;
 
-     OptionalHeader: IMAGE_OPTIONAL_HEADER64;
 
-   end;
 
-   {$EXTERNALSYM _IMAGE_NT_HEADERS64}
 
-   IMAGE_NT_HEADERS64 = _IMAGE_NT_HEADERS64;
 
-   {$EXTERNALSYM IMAGE_NT_HEADERS64}
 
-   TImageNtHeaders64 = IMAGE_NT_HEADERS64;
 
-   PImageNtHeaders64 = PIMAGE_NT_HEADERS64;
 
-   PIMAGE_NT_HEADERS32 = ^IMAGE_NT_HEADERS32;
 
-   {$EXTERNALSYM PIMAGE_NT_HEADERS32}
 
-   _IMAGE_NT_HEADERS = record
 
-     Signature: DWORD;
 
-     FileHeader: IMAGE_FILE_HEADER;
 
-     OptionalHeader: IMAGE_OPTIONAL_HEADER32;
 
-   end;
 
-   {$EXTERNALSYM _IMAGE_NT_HEADERS}
 
-   IMAGE_NT_HEADERS32 = _IMAGE_NT_HEADERS;
 
-   {$EXTERNALSYM IMAGE_NT_HEADERS32}
 
-   TImageNtHeaders32 = IMAGE_NT_HEADERS32;
 
-   PImageNtHeaders32 = PIMAGE_NT_HEADERS32;
 
- {$ENDIF ~FPC}
 
- // Subsystem Values
 
- const
 
-   IMAGE_SUBSYSTEM_UNKNOWN                 = 0; // Unknown subsystem.
 
-   {$EXTERNALSYM IMAGE_SUBSYSTEM_UNKNOWN}
 
-   IMAGE_SUBSYSTEM_NATIVE                  = 1; // Image doesn't require a subsystem.
 
-   {$EXTERNALSYM IMAGE_SUBSYSTEM_NATIVE}
 
-   IMAGE_SUBSYSTEM_WINDOWS_GUI             = 2; // Image runs in the Windows GUI subsystem.
 
-   {$EXTERNALSYM IMAGE_SUBSYSTEM_WINDOWS_GUI}
 
-   IMAGE_SUBSYSTEM_WINDOWS_CUI             = 3; // Image runs in the Windows character subsystem.
 
-   {$EXTERNALSYM IMAGE_SUBSYSTEM_WINDOWS_CUI}
 
-   IMAGE_SUBSYSTEM_OS2_CUI                 = 5; // image runs in the OS/2 character subsystem.
 
-   {$EXTERNALSYM IMAGE_SUBSYSTEM_OS2_CUI}
 
-   IMAGE_SUBSYSTEM_POSIX_CUI               = 7; // image runs in the Posix character subsystem.
 
-   {$EXTERNALSYM IMAGE_SUBSYSTEM_POSIX_CUI}
 
-   IMAGE_SUBSYSTEM_NATIVE_WINDOWS          = 8; // image is a native Win9x driver.
 
-   {$EXTERNALSYM IMAGE_SUBSYSTEM_NATIVE_WINDOWS}
 
-   IMAGE_SUBSYSTEM_WINDOWS_CE_GUI          = 9; // Image runs in the Windows CE subsystem.
 
-   {$EXTERNALSYM IMAGE_SUBSYSTEM_WINDOWS_CE_GUI}
 
-   IMAGE_SUBSYSTEM_EFI_APPLICATION         = 10;
 
-   {$EXTERNALSYM IMAGE_SUBSYSTEM_EFI_APPLICATION}
 
-   IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER = 11;
 
-   {$EXTERNALSYM IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER}
 
-   IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER      = 12;
 
-   {$EXTERNALSYM IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER}
 
-   IMAGE_SUBSYSTEM_EFI_ROM                 = 13;
 
-   {$EXTERNALSYM IMAGE_SUBSYSTEM_EFI_ROM}
 
-   IMAGE_SUBSYSTEM_XBOX                    = 14;
 
-   {$EXTERNALSYM IMAGE_SUBSYSTEM_XBOX}
 
- // DllCharacteristics Entries
 
- //      IMAGE_LIBRARY_PROCESS_INIT           0x0001     // Reserved.
 
- //      IMAGE_LIBRARY_PROCESS_TERM           0x0002     // Reserved.
 
- //      IMAGE_LIBRARY_THREAD_INIT            0x0004     // Reserved.
 
- //      IMAGE_LIBRARY_THREAD_TERM            0x0008     // Reserved.
 
-   IMAGE_DLLCHARACTERISTICS_NO_ISOLATION = $0200;    // Image understands isolation and doesn't want it
 
-   {$EXTERNALSYM IMAGE_DLLCHARACTERISTICS_NO_ISOLATION}
 
-   IMAGE_DLLCHARACTERISTICS_NO_SEH  = $0400; // Image does not use SEH.  No SE handler may reside in this image
 
-   {$EXTERNALSYM IMAGE_DLLCHARACTERISTICS_NO_SEH}
 
-   IMAGE_DLLCHARACTERISTICS_NO_BIND = $0800; // Do not bind this image.
 
-   {$EXTERNALSYM IMAGE_DLLCHARACTERISTICS_NO_BIND}
 
- //                                           0x1000     // Reserved.
 
-   IMAGE_DLLCHARACTERISTICS_WDM_DRIVER = $2000; // Driver uses WDM model
 
-   {$EXTERNALSYM IMAGE_DLLCHARACTERISTICS_WDM_DRIVER}
 
- //                                           0x4000     // Reserved.
 
-   IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = $8000;
 
-   {$EXTERNALSYM IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE}
 
- // Directory Entries
 
-   IMAGE_DIRECTORY_ENTRY_EXPORT    = 0; // Export Directory
 
-   {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_EXPORT}
 
-   IMAGE_DIRECTORY_ENTRY_IMPORT    = 1; // Import Directory
 
-   {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_IMPORT}
 
-   IMAGE_DIRECTORY_ENTRY_RESOURCE  = 2; // Resource Directory
 
-   {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_RESOURCE}
 
-   IMAGE_DIRECTORY_ENTRY_EXCEPTION = 3; // Exception Directory
 
-   {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_EXCEPTION}
 
-   IMAGE_DIRECTORY_ENTRY_SECURITY  = 4; // Security Directory
 
-   {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_SECURITY}
 
-   IMAGE_DIRECTORY_ENTRY_BASERELOC = 5; // Base Relocation Table
 
-   {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_BASERELOC}
 
-   IMAGE_DIRECTORY_ENTRY_DEBUG     = 6; // Debug Directory
 
-   {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_DEBUG}
 
- //      IMAGE_DIRECTORY_ENTRY_COPYRIGHT       7   // (X86 usage)
 
-   IMAGE_DIRECTORY_ENTRY_ARCHITECTURE   = 7; // Architecture Specific Data
 
-   {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_ARCHITECTURE}
 
-   IMAGE_DIRECTORY_ENTRY_GLOBALPTR      = 8; // RVA of GP
 
-   {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_GLOBALPTR}
 
-   IMAGE_DIRECTORY_ENTRY_TLS            = 9; // TLS Directory
 
-   {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_TLS}
 
-   IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG    = 10; // Load Configuration Directory
 
-   {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG}
 
-   IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT   = 11; // Bound Import Directory in headers
 
-   {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT}
 
-   IMAGE_DIRECTORY_ENTRY_IAT            = 12; // Import Address Table
 
-   {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_IAT}
 
-   IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT   = 13; // Delay Load Import Descriptors
 
-   {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT}
 
-   IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR = 14; // COM Runtime descriptor
 
-   {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR}
 
- //
 
- // Non-COFF Object file header
 
- //
 
- type
 
-   PAnonObjectHeader = ^ANON_OBJECT_HEADER;
 
-   ANON_OBJECT_HEADER = record
 
-     Sig1: Word;        // Must be IMAGE_FILE_MACHINE_UNKNOWN
 
-     Sig2: Word;        // Must be 0xffff
 
-     Version: Word;     // >= 1 (implies the CLSID field is present)
 
-     Machine: Word;
 
-     TimeDateStamp: DWORD;
 
-     ClassID: TCLSID;    // Used to invoke CoCreateInstance
 
-     SizeOfData: DWORD; // Size of data that follows the header
 
-   end;
 
-   {$EXTERNALSYM ANON_OBJECT_HEADER}
 
-   TAnonObjectHeader = ANON_OBJECT_HEADER;
 
- //
 
- // Section header format.
 
- //
 
- const
 
-   IMAGE_SIZEOF_SHORT_NAME = 8;
 
-   {$EXTERNALSYM IMAGE_SIZEOF_SHORT_NAME}
 
- type
 
-   PPImageSectionHeader = ^PImageSectionHeader;
 
- // IMAGE_FIRST_SECTION doesn't need 32/64 versions since the file header is the same either way.
 
- function IMAGE_FIRST_SECTION(NtHeader: PImageNtHeaders): PImageSectionHeader;
 
- {$EXTERNALSYM IMAGE_FIRST_SECTION}
 
- const
 
-   IMAGE_SIZEOF_SECTION_HEADER = 40;
 
-   {$EXTERNALSYM IMAGE_SIZEOF_SECTION_HEADER}
 
- //
 
- // Section characteristics.
 
- //
 
- //      IMAGE_SCN_TYPE_REG                   0x00000000  // Reserved.
 
- //      IMAGE_SCN_TYPE_DSECT                 0x00000001  // Reserved.
 
- //      IMAGE_SCN_TYPE_NOLOAD                0x00000002  // Reserved.
 
- //      IMAGE_SCN_TYPE_GROUP                 0x00000004  // Reserved.
 
-   IMAGE_SCN_TYPE_NO_PAD = $00000008; // Reserved.
 
-   {$EXTERNALSYM IMAGE_SCN_TYPE_NO_PAD}
 
- //      IMAGE_SCN_TYPE_COPY                  0x00000010  // Reserved.
 
-   IMAGE_SCN_CNT_CODE               = $00000020; // Section contains code.
 
-   {$EXTERNALSYM IMAGE_SCN_CNT_CODE}
 
-   IMAGE_SCN_CNT_INITIALIZED_DATA   = $00000040; // Section contains initialized data.
 
-   {$EXTERNALSYM IMAGE_SCN_CNT_INITIALIZED_DATA}
 
-   IMAGE_SCN_CNT_UNINITIALIZED_DATA = $00000080; // Section contains uninitialized data.
 
-   {$EXTERNALSYM IMAGE_SCN_CNT_UNINITIALIZED_DATA}
 
-   IMAGE_SCN_LNK_OTHER = $00000100; // Reserved.
 
-   {$EXTERNALSYM IMAGE_SCN_LNK_OTHER}
 
-   IMAGE_SCN_LNK_INFO  = $00000200; // Section contains comments or some other type of information.
 
-   {$EXTERNALSYM IMAGE_SCN_LNK_INFO}
 
- //      IMAGE_SCN_TYPE_OVER                  0x00000400  // Reserved.
 
-   IMAGE_SCN_LNK_REMOVE = $00000800; // Section contents will not become part of image.
 
-   {$EXTERNALSYM IMAGE_SCN_LNK_REMOVE}
 
-   IMAGE_SCN_LNK_COMDAT = $00001000; // Section contents comdat.
 
-   {$EXTERNALSYM IMAGE_SCN_LNK_COMDAT}
 
- //                                           0x00002000  // Reserved.
 
- //      IMAGE_SCN_MEM_PROTECTED - Obsolete   0x00004000
 
-   IMAGE_SCN_NO_DEFER_SPEC_EXC = $00004000; // Reset speculative exceptions handling bits in the TLB entries for this section.
 
-   {$EXTERNALSYM IMAGE_SCN_NO_DEFER_SPEC_EXC}
 
-   IMAGE_SCN_GPREL             = $00008000; // Section content can be accessed relative to GP
 
-   {$EXTERNALSYM IMAGE_SCN_GPREL}
 
-   IMAGE_SCN_MEM_FARDATA       = $00008000;
 
-   {$EXTERNALSYM IMAGE_SCN_MEM_FARDATA}
 
- //      IMAGE_SCN_MEM_SYSHEAP  - Obsolete    0x00010000
 
-   IMAGE_SCN_MEM_PURGEABLE = $00020000;
 
-   {$EXTERNALSYM IMAGE_SCN_MEM_PURGEABLE}
 
-   IMAGE_SCN_MEM_16BIT     = $00020000;
 
-   {$EXTERNALSYM IMAGE_SCN_MEM_16BIT}
 
-   IMAGE_SCN_MEM_LOCKED    = $00040000;
 
-   {$EXTERNALSYM IMAGE_SCN_MEM_LOCKED}
 
-   IMAGE_SCN_MEM_PRELOAD   = $00080000;
 
-   {$EXTERNALSYM IMAGE_SCN_MEM_PRELOAD}
 
-   IMAGE_SCN_ALIGN_1BYTES    = $00100000;
 
-   {$EXTERNALSYM IMAGE_SCN_ALIGN_1BYTES}
 
-   IMAGE_SCN_ALIGN_2BYTES    = $00200000;
 
-   {$EXTERNALSYM IMAGE_SCN_ALIGN_2BYTES}
 
-   IMAGE_SCN_ALIGN_4BYTES    = $00300000;
 
-   {$EXTERNALSYM IMAGE_SCN_ALIGN_4BYTES}
 
-   IMAGE_SCN_ALIGN_8BYTES    = $00400000;
 
-   {$EXTERNALSYM IMAGE_SCN_ALIGN_8BYTES}
 
-   IMAGE_SCN_ALIGN_16BYTES   = $00500000; // Default alignment if no others are specified.
 
-   {$EXTERNALSYM IMAGE_SCN_ALIGN_16BYTES}
 
-   IMAGE_SCN_ALIGN_32BYTES   = $00600000;
 
-   {$EXTERNALSYM IMAGE_SCN_ALIGN_32BYTES}
 
-   IMAGE_SCN_ALIGN_64BYTES   = $00700000;
 
-   {$EXTERNALSYM IMAGE_SCN_ALIGN_64BYTES}
 
-   IMAGE_SCN_ALIGN_128BYTES  = $00800000;
 
-   {$EXTERNALSYM IMAGE_SCN_ALIGN_128BYTES}
 
-   IMAGE_SCN_ALIGN_256BYTES  = $00900000;
 
-   {$EXTERNALSYM IMAGE_SCN_ALIGN_256BYTES}
 
-   IMAGE_SCN_ALIGN_512BYTES  = $00A00000;
 
-   {$EXTERNALSYM IMAGE_SCN_ALIGN_512BYTES}
 
-   IMAGE_SCN_ALIGN_1024BYTES = $00B00000;
 
-   {$EXTERNALSYM IMAGE_SCN_ALIGN_1024BYTES}
 
-   IMAGE_SCN_ALIGN_2048BYTES = $00C00000;
 
-   {$EXTERNALSYM IMAGE_SCN_ALIGN_2048BYTES}
 
-   IMAGE_SCN_ALIGN_4096BYTES = $00D00000;
 
-   {$EXTERNALSYM IMAGE_SCN_ALIGN_4096BYTES}
 
-   IMAGE_SCN_ALIGN_8192BYTES = $00E00000;
 
-   {$EXTERNALSYM IMAGE_SCN_ALIGN_8192BYTES}
 
- // Unused                                    0x00F00000
 
-   IMAGE_SCN_ALIGN_MASK = $00F00000;
 
-   {$EXTERNALSYM IMAGE_SCN_ALIGN_MASK}
 
-   IMAGE_SCN_LNK_NRELOC_OVFL = $01000000; // Section contains extended relocations.
 
-   {$EXTERNALSYM IMAGE_SCN_LNK_NRELOC_OVFL}
 
-   IMAGE_SCN_MEM_DISCARDABLE = $02000000; // Section can be discarded.
 
-   {$EXTERNALSYM IMAGE_SCN_MEM_DISCARDABLE}
 
-   IMAGE_SCN_MEM_NOT_CACHED  = $04000000; // Section is not cacheable.
 
-   {$EXTERNALSYM IMAGE_SCN_MEM_NOT_CACHED}
 
-   IMAGE_SCN_MEM_NOT_PAGED   = $08000000; // Section is not pageable.
 
-   {$EXTERNALSYM IMAGE_SCN_MEM_NOT_PAGED}
 
-   IMAGE_SCN_MEM_SHARED      = $10000000; // Section is shareable.
 
-   {$EXTERNALSYM IMAGE_SCN_MEM_SHARED}
 
-   IMAGE_SCN_MEM_EXECUTE     = $20000000; // Section is executable.
 
-   {$EXTERNALSYM IMAGE_SCN_MEM_EXECUTE}
 
-   IMAGE_SCN_MEM_READ        = $40000000; // Section is readable.
 
-   {$EXTERNALSYM IMAGE_SCN_MEM_READ}
 
-   IMAGE_SCN_MEM_WRITE       = DWORD($80000000); // Section is writeable.
 
-   {$EXTERNALSYM IMAGE_SCN_MEM_WRITE}
 
- // line 6232
 
- //
 
- // Line number format.
 
- //
 
- type
 
-   TImgLineNoType = record
 
-     case Integer of
 
-       0: (SymbolTableIndex: DWORD);               // Symbol table index of function name if Linenumber is 0.
 
-       1: (VirtualAddress: DWORD);                 // Virtual address of line number.
 
-   end;
 
-   PIMAGE_LINENUMBER = ^IMAGE_LINENUMBER;
 
-   {$EXTERNALSYM PIMAGE_LINENUMBER}
 
-   _IMAGE_LINENUMBER = record
 
-     Type_: TImgLineNoType;
 
-     Linenumber: WORD;                         // Line number.
 
-   end;
 
-   {$EXTERNALSYM _IMAGE_LINENUMBER}
 
-   IMAGE_LINENUMBER = _IMAGE_LINENUMBER;
 
-   {$EXTERNALSYM IMAGE_LINENUMBER}
 
-   TImageLineNumber = IMAGE_LINENUMBER;
 
-   PImageLineNumber = PIMAGE_LINENUMBER;
 
- const
 
-   IMAGE_SIZEOF_LINENUMBER = 6;
 
-   {$EXTERNALSYM IMAGE_SIZEOF_LINENUMBER}
 
- // #include "poppack.h"                        // Back to 4 byte packing
 
- //
 
- // Based relocation format.
 
- //
 
- type
 
-   PIMAGE_BASE_RELOCATION = ^IMAGE_BASE_RELOCATION;
 
-   {$EXTERNALSYM PIMAGE_BASE_RELOCATION}
 
-   _IMAGE_BASE_RELOCATION = record
 
-     VirtualAddress: DWORD;
 
-     SizeOfBlock: DWORD;
 
-     //  WORD    TypeOffset[1];
 
-   end;
 
-   {$EXTERNALSYM _IMAGE_BASE_RELOCATION}
 
-   IMAGE_BASE_RELOCATION = _IMAGE_BASE_RELOCATION;
 
-   {$EXTERNALSYM IMAGE_BASE_RELOCATION}
 
-   TImageBaseRelocation = IMAGE_BASE_RELOCATION;
 
-   PImageBaseRelocation = PIMAGE_BASE_RELOCATION;
 
- const
 
-   IMAGE_SIZEOF_BASE_RELOCATION = 8;
 
-   {$EXTERNALSYM IMAGE_SIZEOF_BASE_RELOCATION}
 
- //
 
- // Based relocation types.
 
- //
 
-   IMAGE_REL_BASED_ABSOLUTE     = 0;
 
-   {$EXTERNALSYM IMAGE_REL_BASED_ABSOLUTE}
 
-   IMAGE_REL_BASED_HIGH         = 1;
 
-   {$EXTERNALSYM IMAGE_REL_BASED_HIGH}
 
-   IMAGE_REL_BASED_LOW          = 2;
 
-   {$EXTERNALSYM IMAGE_REL_BASED_LOW}
 
-   IMAGE_REL_BASED_HIGHLOW      = 3;
 
-   {$EXTERNALSYM IMAGE_REL_BASED_HIGHLOW}
 
-   IMAGE_REL_BASED_HIGHADJ      = 4;
 
-   {$EXTERNALSYM IMAGE_REL_BASED_HIGHADJ}
 
-   IMAGE_REL_BASED_MIPS_JMPADDR = 5;
 
-   {$EXTERNALSYM IMAGE_REL_BASED_MIPS_JMPADDR}
 
-   IMAGE_REL_BASED_MIPS_JMPADDR16 = 9;
 
-   {$EXTERNALSYM IMAGE_REL_BASED_MIPS_JMPADDR16}
 
-   IMAGE_REL_BASED_IA64_IMM64     = 9;
 
-   {$EXTERNALSYM IMAGE_REL_BASED_IA64_IMM64}
 
-   IMAGE_REL_BASED_DIR64          = 10;
 
-   {$EXTERNALSYM IMAGE_REL_BASED_DIR64}
 
- //
 
- // Archive format.
 
- //
 
-   IMAGE_ARCHIVE_START_SIZE       = 8;
 
-   {$EXTERNALSYM IMAGE_ARCHIVE_START_SIZE}
 
-   IMAGE_ARCHIVE_START            = '!<arch>'#10;
 
-   {$EXTERNALSYM IMAGE_ARCHIVE_START}
 
-   IMAGE_ARCHIVE_END              = '`'#10;
 
-   {$EXTERNALSYM IMAGE_ARCHIVE_END}
 
-   IMAGE_ARCHIVE_PAD              = #10;
 
-   {$EXTERNALSYM IMAGE_ARCHIVE_PAD}
 
-   IMAGE_ARCHIVE_LINKER_MEMBER    = '/               ';
 
-   {$EXTERNALSYM IMAGE_ARCHIVE_LINKER_MEMBER}
 
-   IMAGE_ARCHIVE_LONGNAMES_MEMBER = '//              ';
 
-   {$EXTERNALSYM IMAGE_ARCHIVE_LONGNAMES_MEMBER}
 
- type
 
-   PIMAGE_ARCHIVE_MEMBER_HEADER = ^IMAGE_ARCHIVE_MEMBER_HEADER;
 
-   {$EXTERNALSYM PIMAGE_ARCHIVE_MEMBER_HEADER}
 
-   _IMAGE_ARCHIVE_MEMBER_HEADER = record
 
-     Name: array [0..15] of Byte; // File member name - `/' terminated.
 
-     Date: array [0..11] of Byte; // File member date - decimal.
 
-     UserID: array [0..5] of Byte; // File member user id - decimal.
 
-     GroupID: array [0..5] of Byte; // File member group id - decimal.
 
-     Mode: array [0..7] of Byte; // File member mode - octal.
 
-     Size: array [0..9] of Byte; // File member size - decimal.
 
-     EndHeader: array [0..1] of Byte; // String to end header.
 
-   end;
 
-   {$EXTERNALSYM _IMAGE_ARCHIVE_MEMBER_HEADER}
 
-   IMAGE_ARCHIVE_MEMBER_HEADER = _IMAGE_ARCHIVE_MEMBER_HEADER;
 
-   {$EXTERNALSYM IMAGE_ARCHIVE_MEMBER_HEADER}
 
-   TImageArchiveMemberHeader = IMAGE_ARCHIVE_MEMBER_HEADER;
 
-   PImageArchiveMemberHeader = PIMAGE_ARCHIVE_MEMBER_HEADER;
 
- const
 
-   IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR = 60;
 
-   {$EXTERNALSYM IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR}
 
- // line 6346
 
- //
 
- // DLL support.
 
- //
 
- //
 
- // Export Format
 
- //
 
- type
 
-   PIMAGE_EXPORT_DIRECTORY = ^IMAGE_EXPORT_DIRECTORY;
 
-   {$EXTERNALSYM PIMAGE_EXPORT_DIRECTORY}
 
-   _IMAGE_EXPORT_DIRECTORY = record
 
-     Characteristics: DWORD;
 
-     TimeDateStamp: DWORD;
 
-     MajorVersion: Word;
 
-     MinorVersion: Word;
 
-     Name: DWORD;
 
-     Base: DWORD;
 
-     NumberOfFunctions: DWORD;
 
-     NumberOfNames: DWORD;
 
-     AddressOfFunctions: DWORD; // RVA from base of image
 
-     AddressOfNames: DWORD; // RVA from base of image
 
-     AddressOfNameOrdinals: DWORD; // RVA from base of image
 
-   end;
 
-   {$EXTERNALSYM _IMAGE_EXPORT_DIRECTORY}
 
-   IMAGE_EXPORT_DIRECTORY = _IMAGE_EXPORT_DIRECTORY;
 
-   {$EXTERNALSYM IMAGE_EXPORT_DIRECTORY}
 
-   TImageExportDirectory = IMAGE_EXPORT_DIRECTORY;
 
-   PImageExportDirectory = PIMAGE_EXPORT_DIRECTORY;
 
- //
 
- // Import Format
 
- //
 
-   PIMAGE_IMPORT_BY_NAME = ^IMAGE_IMPORT_BY_NAME;
 
-   {$EXTERNALSYM PIMAGE_IMPORT_BY_NAME}
 
-   _IMAGE_IMPORT_BY_NAME = record
 
-     Hint: Word;
 
-     Name: array [0..0] of AnsiChar;
 
-   end;
 
-   {$EXTERNALSYM _IMAGE_IMPORT_BY_NAME}
 
-   IMAGE_IMPORT_BY_NAME = _IMAGE_IMPORT_BY_NAME;
 
-   {$EXTERNALSYM IMAGE_IMPORT_BY_NAME}
 
-   TImageImportByName = IMAGE_IMPORT_BY_NAME;
 
-   PImageImportByName = PIMAGE_IMPORT_BY_NAME;
 
- // #include "pshpack8.h"                       // Use align 8 for the 64-bit IAT.
 
-   PIMAGE_THUNK_DATA64 = ^IMAGE_THUNK_DATA64;
 
-   {$EXTERNALSYM PIMAGE_THUNK_DATA64}
 
-   _IMAGE_THUNK_DATA64 = record
 
-     case Integer of
 
-       0: (ForwarderString: ULONGLONG);   // PBYTE
 
-       1: (Function_: ULONGLONG);         // PDWORD
 
-       2: (Ordinal: ULONGLONG);
 
-       3: (AddressOfData: ULONGLONG);     // PIMAGE_IMPORT_BY_NAME
 
-   end;
 
-   {$EXTERNALSYM _IMAGE_THUNK_DATA64}
 
-   IMAGE_THUNK_DATA64 = _IMAGE_THUNK_DATA64;
 
-   {$EXTERNALSYM IMAGE_THUNK_DATA64}
 
-   TImageThunkData64 = IMAGE_THUNK_DATA64;
 
-   PImageThunkData64 = PIMAGE_THUNK_DATA64;
 
- // #include "poppack.h"                        // Back to 4 byte packing
 
-   PIMAGE_THUNK_DATA32 = ^IMAGE_THUNK_DATA32;
 
-   {$EXTERNALSYM PIMAGE_THUNK_DATA32}
 
-   _IMAGE_THUNK_DATA32 = record
 
-     case Integer of
 
-       0: (ForwarderString: DWORD);   // PBYTE
 
-       1: (Function_: DWORD);         // PDWORD
 
-       2: (Ordinal: DWORD);
 
-       3: (AddressOfData: DWORD);     // PIMAGE_IMPORT_BY_NAME
 
-   end;
 
-   {$EXTERNALSYM _IMAGE_THUNK_DATA32}
 
-   IMAGE_THUNK_DATA32 = _IMAGE_THUNK_DATA32;
 
-   {$EXTERNALSYM IMAGE_THUNK_DATA32}
 
-   TImageThunkData32 = IMAGE_THUNK_DATA32;
 
-   PImageThunkData32 = PIMAGE_THUNK_DATA32;
 
- const
 
-   IMAGE_ORDINAL_FLAG64 = ULONGLONG($8000000000000000);
 
-   {$EXTERNALSYM IMAGE_ORDINAL_FLAG64}
 
-   IMAGE_ORDINAL_FLAG32 = DWORD($80000000);
 
-   {$EXTERNALSYM IMAGE_ORDINAL_FLAG32}
 
- function IMAGE_ORDINAL64(Ordinal: ULONGLONG): ULONGLONG;
 
- {$EXTERNALSYM IMAGE_ORDINAL64}
 
- function IMAGE_ORDINAL32(Ordinal: DWORD): DWORD;
 
- {$EXTERNALSYM IMAGE_ORDINAL32}
 
- function IMAGE_SNAP_BY_ORDINAL64(Ordinal: ULONGLONG): Boolean;
 
- {$EXTERNALSYM IMAGE_SNAP_BY_ORDINAL64}
 
- function IMAGE_SNAP_BY_ORDINAL32(Ordinal: DWORD): Boolean;
 
- {$EXTERNALSYM IMAGE_SNAP_BY_ORDINAL32}
 
- //
 
- // Thread Local Storage
 
- //
 
- type
 
-   PIMAGE_TLS_CALLBACK = procedure (DllHandle: Pointer; Reason: DWORD; Reserved: Pointer); stdcall;
 
-   {$EXTERNALSYM PIMAGE_TLS_CALLBACK}
 
-   TImageTlsCallback = PIMAGE_TLS_CALLBACK;
 
-   PIMAGE_TLS_DIRECTORY64 = ^IMAGE_TLS_DIRECTORY64;
 
-   {$EXTERNALSYM PIMAGE_TLS_DIRECTORY64}
 
-   _IMAGE_TLS_DIRECTORY64 = record
 
-     StartAddressOfRawData: ULONGLONG;
 
-     EndAddressOfRawData: ULONGLONG;
 
-     AddressOfIndex: ULONGLONG;         // PDWORD
 
-     AddressOfCallBacks: ULONGLONG;     // PIMAGE_TLS_CALLBACK *;
 
-     SizeOfZeroFill: DWORD;
 
-     Characteristics: DWORD;
 
-   end;
 
-   {$EXTERNALSYM _IMAGE_TLS_DIRECTORY64}
 
-   IMAGE_TLS_DIRECTORY64 = _IMAGE_TLS_DIRECTORY64;
 
-   {$EXTERNALSYM IMAGE_TLS_DIRECTORY64}
 
-   TImageTlsDirectory64 = IMAGE_TLS_DIRECTORY64;
 
-   {$EXTERNALSYM TImageTlsDirectory64}
 
-   PImageTlsDirectory64 = PIMAGE_TLS_DIRECTORY64;
 
-   {$EXTERNALSYM PImageTlsDirectory64}
 
-   PIMAGE_TLS_DIRECTORY32 = ^IMAGE_TLS_DIRECTORY32;
 
-   {$EXTERNALSYM PIMAGE_TLS_DIRECTORY32}
 
-   _IMAGE_TLS_DIRECTORY32 = record
 
-     StartAddressOfRawData: DWORD;
 
-     EndAddressOfRawData: DWORD;
 
-     AddressOfIndex: DWORD;             // PDWORD
 
-     AddressOfCallBacks: DWORD;         // PIMAGE_TLS_CALLBACK *
 
-     SizeOfZeroFill: DWORD;
 
-     Characteristics: DWORD;
 
-   end;
 
-   {$EXTERNALSYM _IMAGE_TLS_DIRECTORY32}
 
-   IMAGE_TLS_DIRECTORY32 = _IMAGE_TLS_DIRECTORY32;
 
-   {$EXTERNALSYM IMAGE_TLS_DIRECTORY32}
 
-   TImageTlsDirectory32 = IMAGE_TLS_DIRECTORY32;
 
-   {$EXTERNALSYM TImageTlsDirectory32}
 
-   PImageTlsDirectory32 = PIMAGE_TLS_DIRECTORY32;
 
-   {$EXTERNALSYM PImageTlsDirectory32}
 
- const
 
-   IMAGE_ORDINAL_FLAG = IMAGE_ORDINAL_FLAG32;
 
-   {$EXTERNALSYM IMAGE_ORDINAL_FLAG}
 
- function IMAGE_ORDINAL(Ordinal: DWORD): DWORD;
 
- {$EXTERNALSYM IMAGE_ORDINAL}
 
- type
 
-   IMAGE_THUNK_DATA = IMAGE_THUNK_DATA32;
 
-   {$EXTERNALSYM IMAGE_THUNK_DATA}
 
-   PIMAGE_THUNK_DATA = PIMAGE_THUNK_DATA32;
 
-   {$EXTERNALSYM PIMAGE_THUNK_DATA}
 
-   TImageThunkData = TImageThunkData32;
 
-   PImageThunkData = PImageThunkData32;
 
- function IMAGE_SNAP_BY_ORDINAL(Ordinal: DWORD): Boolean;
 
- {$EXTERNALSYM IMAGE_SNAP_BY_ORDINAL}
 
- type
 
-   IMAGE_TLS_DIRECTORY = IMAGE_TLS_DIRECTORY32;
 
-   {$EXTERNALSYM IMAGE_TLS_DIRECTORY}
 
-   PIMAGE_TLS_DIRECTORY = PIMAGE_TLS_DIRECTORY32;
 
-   {$EXTERNALSYM PIMAGE_TLS_DIRECTORY}
 
-   TImageTlsDirectory = TImageTlsDirectory32;
 
-   {$EXTERNALSYM TImageTlsDirectory}
 
-   PImageTlsDirectory = PImageTlsDirectory32;
 
-   {$EXTERNALSYM PImageTlsDirectory}
 
-   TIIDUnion = record
 
-     case Integer of
 
-       0: (Characteristics: DWORD);         // 0 for terminating null import descriptor
 
-       1: (OriginalFirstThunk: DWORD);      // RVA to original unbound IAT (PIMAGE_THUNK_DATA)
 
-   end;
 
-   PIMAGE_IMPORT_DESCRIPTOR = ^IMAGE_IMPORT_DESCRIPTOR;
 
-   {$EXTERNALSYM PIMAGE_IMPORT_DESCRIPTOR}
 
-   _IMAGE_IMPORT_DESCRIPTOR = record
 
-     Union: TIIDUnion;
 
-     TimeDateStamp: DWORD;                  // 0 if not bound,
 
-                                            // -1 if bound, and real date\time stamp
 
-                                            //     in IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT (new BIND)
 
-                                            // O.W. date/time stamp of DLL bound to (Old BIND)
 
-     ForwarderChain: DWORD;                 // -1 if no forwarders
 
-     Name: DWORD;
 
-     FirstThunk: DWORD;                     // RVA to IAT (if bound this IAT has actual addresses)
 
-   end;
 
-   {$EXTERNALSYM _IMAGE_IMPORT_DESCRIPTOR}
 
-   IMAGE_IMPORT_DESCRIPTOR = _IMAGE_IMPORT_DESCRIPTOR;
 
-   {$EXTERNALSYM IMAGE_IMPORT_DESCRIPTOR}
 
-   TImageImportDescriptor = IMAGE_IMPORT_DESCRIPTOR;
 
-   PImageImportDescriptor = PIMAGE_IMPORT_DESCRIPTOR;
 
- //
 
- // New format import descriptors pointed to by DataDirectory[ IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT ]
 
- //
 
- type
 
-   PIMAGE_BOUND_IMPORT_DESCRIPTOR = ^IMAGE_BOUND_IMPORT_DESCRIPTOR;
 
-   {$EXTERNALSYM PIMAGE_BOUND_IMPORT_DESCRIPTOR}
 
-   _IMAGE_BOUND_IMPORT_DESCRIPTOR = record
 
-     TimeDateStamp: DWORD;
 
-     OffsetModuleName: Word;
 
-     NumberOfModuleForwarderRefs: Word;
 
-     // Array of zero or more IMAGE_BOUND_FORWARDER_REF follows
 
-   end;
 
-   {$EXTERNALSYM _IMAGE_BOUND_IMPORT_DESCRIPTOR}
 
-   IMAGE_BOUND_IMPORT_DESCRIPTOR = _IMAGE_BOUND_IMPORT_DESCRIPTOR;
 
-   {$EXTERNALSYM IMAGE_BOUND_IMPORT_DESCRIPTOR}
 
-   TImageBoundImportDescriptor = IMAGE_BOUND_IMPORT_DESCRIPTOR;
 
-   PImageBoundImportDescriptor = PIMAGE_BOUND_IMPORT_DESCRIPTOR;
 
-   PIMAGE_BOUND_FORWARDER_REF = ^IMAGE_BOUND_FORWARDER_REF;
 
-   {$EXTERNALSYM PIMAGE_BOUND_FORWARDER_REF}
 
-   _IMAGE_BOUND_FORWARDER_REF = record
 
-     TimeDateStamp: DWORD;
 
-     OffsetModuleName: Word;
 
-     Reserved: Word;
 
-   end;
 
-   {$EXTERNALSYM _IMAGE_BOUND_FORWARDER_REF}
 
-   IMAGE_BOUND_FORWARDER_REF = _IMAGE_BOUND_FORWARDER_REF;
 
-   {$EXTERNALSYM IMAGE_BOUND_FORWARDER_REF}
 
-   TImageBoundForwarderRef = IMAGE_BOUND_FORWARDER_REF;
 
-   PImageBoundForwarderRef = PIMAGE_BOUND_FORWARDER_REF;
 
- //
 
- // Resource Format.
 
- //
 
- //
 
- // Resource directory consists of two counts, following by a variable length
 
- // array of directory entries.  The first count is the number of entries at
 
- // beginning of the array that have actual names associated with each entry.
 
- // The entries are in ascending order, case insensitive strings.  The second
 
- // count is the number of entries that immediately follow the named entries.
 
- // This second count identifies the number of entries that have 16-bit integer
 
- // Ids as their name.  These entries are also sorted in ascending order.
 
- //
 
- // This structure allows fast lookup by either name or number, but for any
 
- // given resource entry only one form of lookup is supported, not both.
 
- // This is consistant with the syntax of the .RC file and the .RES file.
 
- //
 
-   PIMAGE_RESOURCE_DIRECTORY = ^IMAGE_RESOURCE_DIRECTORY;
 
-   {$EXTERNALSYM PIMAGE_RESOURCE_DIRECTORY}
 
-   _IMAGE_RESOURCE_DIRECTORY = record
 
-     Characteristics: DWORD;
 
-     TimeDateStamp: DWORD;
 
-     MajorVersion: Word;
 
-     MinorVersion: Word;
 
-     NumberOfNamedEntries: Word;
 
-     NumberOfIdEntries: Word;
 
-     // IMAGE_RESOURCE_DIRECTORY_ENTRY DirectoryEntries[];
 
-   end;
 
-   {$EXTERNALSYM _IMAGE_RESOURCE_DIRECTORY}
 
-   IMAGE_RESOURCE_DIRECTORY = _IMAGE_RESOURCE_DIRECTORY;
 
-   {$EXTERNALSYM IMAGE_RESOURCE_DIRECTORY}
 
-   TImageResourceDirectory = IMAGE_RESOURCE_DIRECTORY;
 
-   PImageResourceDirectory = PIMAGE_RESOURCE_DIRECTORY;
 
- const
 
-   IMAGE_RESOURCE_NAME_IS_STRING    = DWORD($80000000);
 
-   {$EXTERNALSYM IMAGE_RESOURCE_NAME_IS_STRING}
 
-   IMAGE_RESOURCE_DATA_IS_DIRECTORY = DWORD($80000000);
 
-   {$EXTERNALSYM IMAGE_RESOURCE_DATA_IS_DIRECTORY}
 
- //
 
- // Each directory contains the 32-bit Name of the entry and an offset,
 
- // relative to the beginning of the resource directory of the data associated
 
- // with this directory entry.  If the name of the entry is an actual text
 
- // string instead of an integer Id, then the high order bit of the name field
 
- // is set to one and the low order 31-bits are an offset, relative to the
 
- // beginning of the resource directory of the string, which is of type
 
- // IMAGE_RESOURCE_DIRECTORY_STRING.  Otherwise the high bit is clear and the
 
- // low-order 16-bits are the integer Id that identify this resource directory
 
- // entry. If the directory entry is yet another resource directory (i.e. a
 
- // subdirectory), then the high order bit of the offset field will be
 
- // set to indicate this.  Otherwise the high bit is clear and the offset
 
- // field points to a resource data entry.
 
- //
 
- type
 
-   PIMAGE_RESOURCE_DIRECTORY_ENTRY = ^IMAGE_RESOURCE_DIRECTORY_ENTRY;
 
-   {$EXTERNALSYM PIMAGE_RESOURCE_DIRECTORY_ENTRY}
 
-   _IMAGE_RESOURCE_DIRECTORY_ENTRY = record
 
-     case Integer of
 
-       0: (
 
-         // DWORD NameOffset:31;
 
-         // DWORD NameIsString:1;
 
-         NameOffset: DWORD;
 
-         OffsetToData: DWORD
 
-       );
 
-       1: (
 
-         Name: DWORD;
 
-         // DWORD OffsetToDirectory:31;
 
-         // DWORD DataIsDirectory:1;
 
-         OffsetToDirectory: DWORD;
 
-       );
 
-       2: (
 
-         Id: WORD;
 
-       );
 
-   end;
 
-   {$EXTERNALSYM _IMAGE_RESOURCE_DIRECTORY_ENTRY}
 
-   IMAGE_RESOURCE_DIRECTORY_ENTRY = _IMAGE_RESOURCE_DIRECTORY_ENTRY;
 
-   {$EXTERNALSYM IMAGE_RESOURCE_DIRECTORY_ENTRY}
 
-   TImageResourceDirectoryEntry = IMAGE_RESOURCE_DIRECTORY_ENTRY;
 
-   PImageResourceDirectoryEntry = PIMAGE_RESOURCE_DIRECTORY_ENTRY;
 
- //
 
- // For resource directory entries that have actual string names, the Name
 
- // field of the directory entry points to an object of the following type.
 
- // All of these string objects are stored together after the last resource
 
- // directory entry and before the first resource data object.  This minimizes
 
- // the impact of these variable length objects on the alignment of the fixed
 
- // size directory entry objects.
 
- //
 
- type
 
-   PIMAGE_RESOURCE_DIRECTORY_STRING = ^IMAGE_RESOURCE_DIRECTORY_STRING;
 
-   {$EXTERNALSYM PIMAGE_RESOURCE_DIRECTORY_STRING}
 
-   _IMAGE_RESOURCE_DIRECTORY_STRING = record
 
-     Length: Word;
 
-     NameString: array [0..0] of AnsiCHAR;
 
-   end;
 
-   {$EXTERNALSYM _IMAGE_RESOURCE_DIRECTORY_STRING}
 
-   IMAGE_RESOURCE_DIRECTORY_STRING = _IMAGE_RESOURCE_DIRECTORY_STRING;
 
-   {$EXTERNALSYM IMAGE_RESOURCE_DIRECTORY_STRING}
 
-   TImageResourceDirectoryString = IMAGE_RESOURCE_DIRECTORY_STRING;
 
-   PImageResourceDirectoryString = PIMAGE_RESOURCE_DIRECTORY_STRING;
 
-   PIMAGE_RESOURCE_DIR_STRING_U = ^IMAGE_RESOURCE_DIR_STRING_U;
 
-   {$EXTERNALSYM PIMAGE_RESOURCE_DIR_STRING_U}
 
-   _IMAGE_RESOURCE_DIR_STRING_U = record
 
-     Length: Word;
 
-     NameString: array [0..0] of WCHAR;
 
-   end;
 
-   {$EXTERNALSYM _IMAGE_RESOURCE_DIR_STRING_U}
 
-   IMAGE_RESOURCE_DIR_STRING_U = _IMAGE_RESOURCE_DIR_STRING_U;
 
-   {$EXTERNALSYM IMAGE_RESOURCE_DIR_STRING_U}
 
-   TImageResourceDirStringU = IMAGE_RESOURCE_DIR_STRING_U;
 
-   PImageResourceDirStringU = PIMAGE_RESOURCE_DIR_STRING_U;
 
- //
 
- // Each resource data entry describes a leaf node in the resource directory
 
- // tree.  It contains an offset, relative to the beginning of the resource
 
- // directory of the data for the resource, a size field that gives the number
 
- // of bytes of data at that offset, a CodePage that should be used when
 
- // decoding code point values within the resource data.  Typically for new
 
- // applications the code page would be the unicode code page.
 
- //
 
-   PIMAGE_RESOURCE_DATA_ENTRY = ^IMAGE_RESOURCE_DATA_ENTRY;
 
-   {$EXTERNALSYM PIMAGE_RESOURCE_DATA_ENTRY}
 
-   _IMAGE_RESOURCE_DATA_ENTRY = record
 
-     OffsetToData: DWORD;
 
-     Size: DWORD;
 
-     CodePage: DWORD;
 
-     Reserved: DWORD;
 
-   end;
 
-   {$EXTERNALSYM _IMAGE_RESOURCE_DATA_ENTRY}
 
-   IMAGE_RESOURCE_DATA_ENTRY = _IMAGE_RESOURCE_DATA_ENTRY;
 
-   {$EXTERNALSYM IMAGE_RESOURCE_DATA_ENTRY}
 
-   TImageResourceDataEntry = IMAGE_RESOURCE_DATA_ENTRY;
 
-   PImageResourceDataEntry = PIMAGE_RESOURCE_DATA_ENTRY;
 
- //
 
- // Load Configuration Directory Entry
 
- //
 
- {$IFNDEF FPC}
 
- type
 
-   PIMAGE_LOAD_CONFIG_DIRECTORY32 = ^IMAGE_LOAD_CONFIG_DIRECTORY32;
 
-   {$EXTERNALSYM PIMAGE_LOAD_CONFIG_DIRECTORY32}
 
-   IMAGE_LOAD_CONFIG_DIRECTORY32 = record
 
-     Size: DWORD;
 
-     TimeDateStamp: DWORD;
 
-     MajorVersion: WORD;
 
-     MinorVersion: WORD;
 
-     GlobalFlagsClear: DWORD;
 
-     GlobalFlagsSet: DWORD;
 
-     CriticalSectionDefaultTimeout: DWORD;
 
-     DeCommitFreeBlockThreshold: DWORD;
 
-     DeCommitTotalFreeThreshold: DWORD;
 
-     LockPrefixTable: DWORD;            // VA
 
-     MaximumAllocationSize: DWORD;
 
-     VirtualMemoryThreshold: DWORD;
 
-     ProcessHeapFlags: DWORD;
 
-     ProcessAffinityMask: DWORD;
 
-     CSDVersion: WORD;
 
-     Reserved1: WORD;
 
-     EditList: DWORD;                   // VA
 
-     SecurityCookie: DWORD;             // VA
 
-     SEHandlerTable: DWORD;             // VA
 
-     SEHandlerCount: DWORD;
 
-   end;
 
-   {$EXTERNALSYM IMAGE_LOAD_CONFIG_DIRECTORY32}
 
-   TImageLoadConfigDirectory32 = IMAGE_LOAD_CONFIG_DIRECTORY32;
 
-   PImageLoadConfigDirectory32 = PIMAGE_LOAD_CONFIG_DIRECTORY32;
 
-   PIMAGE_LOAD_CONFIG_DIRECTORY64 = ^IMAGE_LOAD_CONFIG_DIRECTORY64;
 
-   {$EXTERNALSYM PIMAGE_LOAD_CONFIG_DIRECTORY64}
 
-   IMAGE_LOAD_CONFIG_DIRECTORY64 = record
 
-     Size: DWORD;
 
-     TimeDateStamp: DWORD;
 
-     MajorVersion: WORD;
 
-     MinorVersion: WORD;
 
-     GlobalFlagsClear: DWORD;
 
-     GlobalFlagsSet: DWORD;
 
-     CriticalSectionDefaultTimeout: DWORD;
 
-     DeCommitFreeBlockThreshold: ULONGLONG;
 
-     DeCommitTotalFreeThreshold: ULONGLONG;
 
-     LockPrefixTable: ULONGLONG;         // VA
 
-     MaximumAllocationSize: ULONGLONG;
 
-     VirtualMemoryThreshold: ULONGLONG;
 
-     ProcessAffinityMask: ULONGLONG;
 
-     ProcessHeapFlags: DWORD;
 
-     CSDVersion: WORD;
 
-     Reserved1: WORD;
 
-     EditList: ULONGLONG;                // VA
 
-     SecurityCookie: ULONGLONG;             // VA
 
-     SEHandlerTable: ULONGLONG;             // VA
 
-     SEHandlerCount: ULONGLONG;
 
-   end;
 
-   {$EXTERNALSYM IMAGE_LOAD_CONFIG_DIRECTORY64}
 
-   TImageLoadConfigDirectory64 = IMAGE_LOAD_CONFIG_DIRECTORY64;
 
-   PImageLoadConfigDirectory64 = PIMAGE_LOAD_CONFIG_DIRECTORY64;
 
-   IMAGE_LOAD_CONFIG_DIRECTORY = IMAGE_LOAD_CONFIG_DIRECTORY32;
 
-   {$EXTERNALSYM IMAGE_LOAD_CONFIG_DIRECTORY}
 
-   PIMAGE_LOAD_CONFIG_DIRECTORY = PIMAGE_LOAD_CONFIG_DIRECTORY32;
 
-   {$EXTERNALSYM PIMAGE_LOAD_CONFIG_DIRECTORY}
 
-   TImageLoadConfigDirectory = TImageLoadConfigDirectory32;
 
-   PImageLoadConfigDirectory = PImageLoadConfigDirectory32;
 
- {$ENDIF ~FPC}
 
- // line 6802
 
- //
 
- // Debug Format
 
- //
 
- (*
 
- type
 
-   PIMAGE_DEBUG_DIRECTORY = ^IMAGE_DEBUG_DIRECTORY;
 
-   {$EXTERNALSYM PIMAGE_DEBUG_DIRECTORY}
 
-   _IMAGE_DEBUG_DIRECTORY = record
 
-     Characteristics: DWORD;
 
-     TimeDateStamp: DWORD;
 
-     MajorVersion: Word;
 
-     MinorVersion: Word;
 
-     Type_: DWORD;
 
-     SizeOfData: DWORD;
 
-     AddressOfRawData: DWORD;
 
-     PointerToRawData: DWORD;
 
-   end;
 
-   {$EXTERNALSYM _IMAGE_DEBUG_DIRECTORY}
 
-   IMAGE_DEBUG_DIRECTORY = _IMAGE_DEBUG_DIRECTORY;
 
-   {$EXTERNALSYM IMAGE_DEBUG_DIRECTORY}
 
-   TImageDebugDirectory = IMAGE_DEBUG_DIRECTORY;
 
-   PImageDebugDirectory = PIMAGE_DEBUG_DIRECTORY;
 
- const
 
-   IMAGE_DEBUG_TYPE_UNKNOWN       = 0;
 
-   {$EXTERNALSYM IMAGE_DEBUG_TYPE_UNKNOWN}
 
-   IMAGE_DEBUG_TYPE_COFF          = 1;
 
-   {$EXTERNALSYM IMAGE_DEBUG_TYPE_COFF}
 
-   IMAGE_DEBUG_TYPE_CODEVIEW      = 2;
 
-   {$EXTERNALSYM IMAGE_DEBUG_TYPE_CODEVIEW}
 
-   IMAGE_DEBUG_TYPE_FPO           = 3;
 
-   {$EXTERNALSYM IMAGE_DEBUG_TYPE_FPO}
 
-   IMAGE_DEBUG_TYPE_MISC          = 4;
 
-   {$EXTERNALSYM IMAGE_DEBUG_TYPE_MISC}
 
-   IMAGE_DEBUG_TYPE_EXCEPTION     = 5;
 
-   {$EXTERNALSYM IMAGE_DEBUG_TYPE_EXCEPTION}
 
-   IMAGE_DEBUG_TYPE_FIXUP         = 6;
 
-   {$EXTERNALSYM IMAGE_DEBUG_TYPE_FIXUP}
 
-   IMAGE_DEBUG_TYPE_OMAP_TO_SRC   = 7;
 
-   {$EXTERNALSYM IMAGE_DEBUG_TYPE_OMAP_TO_SRC}
 
-   IMAGE_DEBUG_TYPE_OMAP_FROM_SRC = 8;
 
-   {$EXTERNALSYM IMAGE_DEBUG_TYPE_OMAP_FROM_SRC}
 
-   IMAGE_DEBUG_TYPE_BORLAND       = 9;
 
-   {$EXTERNALSYM IMAGE_DEBUG_TYPE_BORLAND}
 
-   IMAGE_DEBUG_TYPE_RESERVED10    = 10;
 
-   {$EXTERNALSYM IMAGE_DEBUG_TYPE_RESERVED10}
 
-   IMAGE_DEBUG_TYPE_CLSID         = 11;
 
-   {$EXTERNALSYM IMAGE_DEBUG_TYPE_CLSID}
 
- *)
 
- {$IFNDEF FPC}
 
- type
 
-   PIMAGE_COFF_SYMBOLS_HEADER = ^IMAGE_COFF_SYMBOLS_HEADER;
 
-   {$EXTERNALSYM PIMAGE_COFF_SYMBOLS_HEADER}
 
-   _IMAGE_COFF_SYMBOLS_HEADER = record
 
-     NumberOfSymbols: DWORD;
 
-     LvaToFirstSymbol: DWORD;
 
-     NumberOfLinenumbers: DWORD;
 
-     LvaToFirstLinenumber: DWORD;
 
-     RvaToFirstByteOfCode: DWORD;
 
-     RvaToLastByteOfCode: DWORD;
 
-     RvaToFirstByteOfData: DWORD;
 
-     RvaToLastByteOfData: DWORD;
 
-   end;
 
-   {$EXTERNALSYM _IMAGE_COFF_SYMBOLS_HEADER}
 
-   IMAGE_COFF_SYMBOLS_HEADER = _IMAGE_COFF_SYMBOLS_HEADER;
 
-   {$EXTERNALSYM IMAGE_COFF_SYMBOLS_HEADER}
 
-   TImageCoffSymbolsHeader = IMAGE_COFF_SYMBOLS_HEADER;
 
-   PImageCoffSymbolsHeader = PIMAGE_COFF_SYMBOLS_HEADER;
 
- {$ENDIF ~FPC}
 
- const
 
-   FRAME_FPO    = 0;
 
-   {$EXTERNALSYM FRAME_FPO}
 
-   FRAME_TRAP   = 1;
 
-   {$EXTERNALSYM FRAME_TRAP}
 
-   FRAME_TSS    = 2;
 
-   {$EXTERNALSYM FRAME_TSS}
 
-   FRAME_NONFPO = 3;
 
-   {$EXTERNALSYM FRAME_NONFPO}
 
-   FPOFLAGS_PROLOG   = $00FF; // # bytes in prolog
 
-   FPOFLAGS_REGS     = $0700; // # regs saved
 
-   FPOFLAGS_HAS_SEH  = $0800; // TRUE if SEH in func
 
-   FPOFLAGS_USE_BP   = $1000; // TRUE if EBP has been allocated
 
-   FPOFLAGS_RESERVED = $2000; // reserved for future use
 
-   FPOFLAGS_FRAME    = $C000; // frame type
 
- {$IFNDEF FPC}
 
- type
 
-   PFPO_DATA = ^FPO_DATA;
 
-   {$EXTERNALSYM PFPO_DATA}
 
-   _FPO_DATA = record
 
-     ulOffStart: DWORD;       // offset 1st byte of function code
 
-     cbProcSize: DWORD;       // # bytes in function
 
-     cdwLocals: DWORD;        // # bytes in locals/4
 
-     cdwParams: WORD;         // # bytes in params/4
 
-     Flags: WORD;
 
-   end;
 
-   {$EXTERNALSYM _FPO_DATA}
 
-   FPO_DATA = _FPO_DATA;
 
-   {$EXTERNALSYM FPO_DATA}
 
-   TFpoData = FPO_DATA;
 
-   PFpoData = PFPO_DATA;
 
- {$ENDIF ~FPC}
 
- const
 
-   SIZEOF_RFPO_DATA = 16;
 
-   {$EXTERNALSYM SIZEOF_RFPO_DATA}
 
-   IMAGE_DEBUG_MISC_EXENAME = 1;
 
-   {$EXTERNALSYM IMAGE_DEBUG_MISC_EXENAME}
 
- type
 
-   PIMAGE_DEBUG_MISC = ^IMAGE_DEBUG_MISC;
 
-   {$EXTERNALSYM PIMAGE_DEBUG_MISC}
 
-   _IMAGE_DEBUG_MISC = record
 
-     DataType: DWORD;   // type of misc data, see defines
 
-     Length: DWORD;     // total length of record, rounded to four byte multiple.
 
-     Unicode: ByteBool; // TRUE if data is unicode string
 
-     Reserved: array [0..2] of Byte;
 
-     Data: array [0..0] of Byte; // Actual data
 
-   end;
 
-   {$EXTERNALSYM _IMAGE_DEBUG_MISC}
 
-   IMAGE_DEBUG_MISC = _IMAGE_DEBUG_MISC;
 
-   {$EXTERNALSYM IMAGE_DEBUG_MISC}
 
-   TImageDebugMisc = IMAGE_DEBUG_MISC;
 
-   PImageDebugMisc = PIMAGE_DEBUG_MISC;
 
- //
 
- // Function table extracted from MIPS/ALPHA/IA64 images.  Does not contain
 
- // information needed only for runtime support.  Just those fields for
 
- // each entry needed by a debugger.
 
- //
 
- {$IFNDEF FPC}
 
-   PIMAGE_FUNCTION_ENTRY = ^IMAGE_FUNCTION_ENTRY;
 
-   {$EXTERNALSYM PIMAGE_FUNCTION_ENTRY}
 
-   _IMAGE_FUNCTION_ENTRY = record
 
-     StartingAddress: DWORD;
 
-     EndingAddress: DWORD;
 
-     EndOfPrologue: DWORD;
 
-   end;
 
-   {$EXTERNALSYM _IMAGE_FUNCTION_ENTRY}
 
-   IMAGE_FUNCTION_ENTRY = _IMAGE_FUNCTION_ENTRY;
 
-   {$EXTERNALSYM IMAGE_FUNCTION_ENTRY}
 
-   TImageFunctionEntry = IMAGE_FUNCTION_ENTRY;
 
-   PImageFunctionEntry = PIMAGE_FUNCTION_ENTRY;
 
-   PIMAGE_FUNCTION_ENTRY64 = ^IMAGE_FUNCTION_ENTRY64;
 
-   {$EXTERNALSYM PIMAGE_FUNCTION_ENTRY64}
 
-   _IMAGE_FUNCTION_ENTRY64 = record
 
-     StartingAddress: ULONGLONG;
 
-     EndingAddress: ULONGLONG;
 
-     case Integer of
 
-       0: (EndOfPrologue: ULONGLONG);
 
-       1: (UnwindInfoAddress: ULONGLONG);
 
-   end;
 
-   {$EXTERNALSYM _IMAGE_FUNCTION_ENTRY64}
 
-   IMAGE_FUNCTION_ENTRY64 = _IMAGE_FUNCTION_ENTRY64;
 
-   {$EXTERNALSYM IMAGE_FUNCTION_ENTRY64}
 
-   TImageFunctionEntry64 = IMAGE_FUNCTION_ENTRY64;
 
-   PImageFunctionEntry64 = PIMAGE_FUNCTION_ENTRY64;
 
- {$ENDIF ~FPC}
 
- //
 
- // Debugging information can be stripped from an image file and placed
 
- // in a separate .DBG file, whose file name part is the same as the
 
- // image file name part (e.g. symbols for CMD.EXE could be stripped
 
- // and placed in CMD.DBG).  This is indicated by the IMAGE_FILE_DEBUG_STRIPPED
 
- // flag in the Characteristics field of the file header.  The beginning of
 
- // the .DBG file contains the following structure which captures certain
 
- // information from the image file.  This allows a debug to proceed even if
 
- // the original image file is not accessable.  This header is followed by
 
- // zero of more IMAGE_SECTION_HEADER structures, followed by zero or more
 
- // IMAGE_DEBUG_DIRECTORY structures.  The latter structures and those in
 
- // the image file contain file offsets relative to the beginning of the
 
- // .DBG file.
 
- //
 
- // If symbols have been stripped from an image, the IMAGE_DEBUG_MISC structure
 
- // is left in the image file, but not mapped.  This allows a debugger to
 
- // compute the name of the .DBG file, from the name of the image in the
 
- // IMAGE_DEBUG_MISC structure.
 
- //
 
-   PIMAGE_SEPARATE_DEBUG_HEADER = ^IMAGE_SEPARATE_DEBUG_HEADER;
 
-   {$EXTERNALSYM PIMAGE_SEPARATE_DEBUG_HEADER}
 
-   _IMAGE_SEPARATE_DEBUG_HEADER = record
 
-     Signature: Word;
 
-     Flags: Word;
 
-     Machine: Word;
 
-     Characteristics: Word;
 
-     TimeDateStamp: DWORD;
 
-     CheckSum: DWORD;
 
-     ImageBase: DWORD;
 
-     SizeOfImage: DWORD;
 
-     NumberOfSections: DWORD;
 
-     ExportedNamesSize: DWORD;
 
-     DebugDirectorySize: DWORD;
 
-     SectionAlignment: DWORD;
 
-     Reserved: array [0..1] of DWORD;
 
-   end;
 
-   {$EXTERNALSYM _IMAGE_SEPARATE_DEBUG_HEADER}
 
-   IMAGE_SEPARATE_DEBUG_HEADER = _IMAGE_SEPARATE_DEBUG_HEADER;
 
-   {$EXTERNALSYM IMAGE_SEPARATE_DEBUG_HEADER}
 
-   TImageSeparateDebugHeader = IMAGE_SEPARATE_DEBUG_HEADER;
 
-   PImageSeparateDebugHeader = PIMAGE_SEPARATE_DEBUG_HEADER;
 
-   _NON_PAGED_DEBUG_INFO = record
 
-     Signature: WORD;
 
-     Flags: WORD;
 
-     Size: DWORD;
 
-     Machine: WORD;
 
-     Characteristics: WORD;
 
-     TimeDateStamp: DWORD;
 
-     CheckSum: DWORD;
 
-     SizeOfImage: DWORD;
 
-     ImageBase: ULONGLONG;
 
-     //DebugDirectorySize
 
-     //IMAGE_DEBUG_DIRECTORY
 
-   end;
 
-   {$EXTERNALSYM _NON_PAGED_DEBUG_INFO}
 
-   NON_PAGED_DEBUG_INFO = _NON_PAGED_DEBUG_INFO;
 
-   {$EXTERNALSYM NON_PAGED_DEBUG_INFO}
 
-   PNON_PAGED_DEBUG_INFO = ^NON_PAGED_DEBUG_INFO;
 
-   {$EXTERNALSYM PNON_PAGED_DEBUG_INFO}
 
- const
 
-   IMAGE_SEPARATE_DEBUG_SIGNATURE = $4944;
 
-   {$EXTERNALSYM IMAGE_SEPARATE_DEBUG_SIGNATURE}
 
-   NON_PAGED_DEBUG_SIGNATURE      = $494E;
 
-   {$EXTERNALSYM NON_PAGED_DEBUG_SIGNATURE}
 
-   IMAGE_SEPARATE_DEBUG_FLAGS_MASK = $8000;
 
-   {$EXTERNALSYM IMAGE_SEPARATE_DEBUG_FLAGS_MASK}
 
-   IMAGE_SEPARATE_DEBUG_MISMATCH   = $8000; // when DBG was updated, the old checksum didn't match.
 
-   {$EXTERNALSYM IMAGE_SEPARATE_DEBUG_MISMATCH}
 
- //
 
- //  The .arch section is made up of headers, each describing an amask position/value
 
- //  pointing to an array of IMAGE_ARCHITECTURE_ENTRY's.  Each "array" (both the header
 
- //  and entry arrays) are terminiated by a quadword of 0xffffffffL.
 
- //
 
- //  NOTE: There may be quadwords of 0 sprinkled around and must be skipped.
 
- //
 
- const
 
-   IAHMASK_VALUE = $00000001; // 1 -> code section depends on mask bit
 
-                              // 0 -> new instruction depends on mask bit
 
-   IAHMASK_MBZ7  = $000000FE; // MBZ
 
-   IAHMASK_SHIFT = $0000FF00; // Amask bit in question for this fixup
 
-   IAHMASK_MBZ16 = DWORD($FFFF0000); // MBZ
 
- type
 
-   PIMAGE_ARCHITECTURE_HEADER = ^IMAGE_ARCHITECTURE_HEADER;
 
-   {$EXTERNALSYM PIMAGE_ARCHITECTURE_HEADER}
 
-   _ImageArchitectureHeader = record
 
-     Mask: DWORD;
 
-     FirstEntryRVA: DWORD;    // RVA into .arch section to array of ARCHITECTURE_ENTRY's
 
-   end;
 
-   {$EXTERNALSYM _ImageArchitectureHeader}
 
-   IMAGE_ARCHITECTURE_HEADER = _ImageArchitectureHeader;
 
-   {$EXTERNALSYM IMAGE_ARCHITECTURE_HEADER}
 
-   TImageArchitectureHeader = IMAGE_ARCHITECTURE_HEADER;
 
-   PImageArchitectureHeader = PIMAGE_ARCHITECTURE_HEADER;
 
-   PIMAGE_ARCHITECTURE_ENTRY = ^IMAGE_ARCHITECTURE_ENTRY;
 
-   {$EXTERNALSYM PIMAGE_ARCHITECTURE_ENTRY}
 
-   _ImageArchitectureEntry = record
 
-     FixupInstRVA: DWORD;                         // RVA of instruction to fixup
 
-     NewInst: DWORD;                              // fixup instruction (see alphaops.h)
 
-   end;
 
-   {$EXTERNALSYM _ImageArchitectureEntry}
 
-   IMAGE_ARCHITECTURE_ENTRY = _ImageArchitectureEntry;
 
-   {$EXTERNALSYM IMAGE_ARCHITECTURE_ENTRY}
 
-   TImageArchitectureEntry = IMAGE_ARCHITECTURE_ENTRY;
 
-   PImageArchitectureEntry = PIMAGE_ARCHITECTURE_ENTRY;
 
- // #include "poppack.h"                // Back to the initial value
 
- // The following structure defines the new import object.  Note the values of the first two fields,
 
- // which must be set as stated in order to differentiate old and new import members.
 
- // Following this structure, the linker emits two null-terminated strings used to recreate the
 
- // import at the time of use.  The first string is the import's name, the second is the dll's name.
 
- const
 
-   IMPORT_OBJECT_HDR_SIG2 = $ffff;
 
-   {$EXTERNALSYM IMPORT_OBJECT_HDR_SIG2}
 
- const
 
-   IOHFLAGS_TYPE = $0003;      // IMPORT_TYPE
 
-   IAHFLAGS_NAMETYPE = $001C;  // IMPORT_NAME_TYPE
 
-   IAHFLAGS_RESERVED = $FFE0;  // Reserved. Must be zero.
 
- type
 
-   PImportObjectHeader = ^IMPORT_OBJECT_HEADER;
 
-   IMPORT_OBJECT_HEADER = record
 
-     Sig1: WORD;                       // Must be IMAGE_FILE_MACHINE_UNKNOWN
 
-     Sig2: WORD;                       // Must be IMPORT_OBJECT_HDR_SIG2.
 
-     Version: WORD;
 
-     Machine: WORD;
 
-     TimeDateStamp: DWORD;             // Time/date stamp
 
-     SizeOfData: DWORD;                // particularly useful for incremental links
 
-     OrdinalOrHint: record
 
-     case Integer of
 
-       0: (Ordinal: WORD);             // if grf & IMPORT_OBJECT_ORDINAL
 
-       1: (Flags: DWORD);
 
-     end;
 
-     Flags: WORD;
 
-     //WORD    Type : 2;                   // IMPORT_TYPE
 
-     //WORD    NameType : 3;               // IMPORT_NAME_TYPE
 
-     //WORD    Reserved : 11;              // Reserved. Must be zero.
 
-   end;
 
-   {$EXTERNALSYM IMPORT_OBJECT_HEADER}
 
-   TImportObjectHeader = IMPORT_OBJECT_HEADER;
 
-   IMPORT_OBJECT_TYPE = (IMPORT_OBJECT_CODE, IMPORT_OBJECT_DATA, IMPORT_OBJECT_CONST);
 
-   {$EXTERNALSYM IMPORT_OBJECT_TYPE}
 
-   TImportObjectType = IMPORT_OBJECT_TYPE;
 
-   IMPORT_OBJECT_NAME_TYPE = (
 
-     IMPORT_OBJECT_ORDINAL,          // Import by ordinal
 
-     IMPORT_OBJECT_NAME,             // Import name == public symbol name.
 
-     IMPORT_OBJECT_NAME_NO_PREFIX,   // Import name == public symbol name skipping leading ?, @, or optionally _.
 
-     IMPORT_OBJECT_NAME_UNDECORATE); // Import name == public symbol name skipping leading ?, @, or optionally _
 
-                                     // and truncating at first @
 
-   {$EXTERNALSYM IMPORT_OBJECT_NAME_TYPE}
 
-   TImportObjectNameType = IMPORT_OBJECT_NAME_TYPE;
 
-   ReplacesCorHdrNumericDefines = DWORD;
 
-   {$EXTERNALSYM ReplacesCorHdrNumericDefines}
 
- const
 
- // COM+ Header entry point flags.
 
-   COMIMAGE_FLAGS_ILONLY               = $00000001;
 
-   {$EXTERNALSYM COMIMAGE_FLAGS_ILONLY}
 
-   COMIMAGE_FLAGS_32BITREQUIRED        = $00000002;
 
-   {$EXTERNALSYM COMIMAGE_FLAGS_32BITREQUIRED}
 
-   COMIMAGE_FLAGS_IL_LIBRARY           = $00000004;
 
-   {$EXTERNALSYM COMIMAGE_FLAGS_IL_LIBRARY}
 
-   COMIMAGE_FLAGS_STRONGNAMESIGNED     = $00000008;
 
-   {$EXTERNALSYM COMIMAGE_FLAGS_STRONGNAMESIGNED}
 
-   COMIMAGE_FLAGS_TRACKDEBUGDATA       = $00010000;
 
-   {$EXTERNALSYM COMIMAGE_FLAGS_TRACKDEBUGDATA}
 
- // Version flags for image.
 
-   COR_VERSION_MAJOR_V2                = 2;
 
-   {$EXTERNALSYM COR_VERSION_MAJOR_V2}
 
-   COR_VERSION_MAJOR                   = COR_VERSION_MAJOR_V2;
 
-   {$EXTERNALSYM COR_VERSION_MAJOR}
 
-   COR_VERSION_MINOR                   = 0;
 
-   {$EXTERNALSYM COR_VERSION_MINOR}
 
-   COR_DELETED_NAME_LENGTH             = 8;
 
-   {$EXTERNALSYM COR_DELETED_NAME_LENGTH}
 
-   COR_VTABLEGAP_NAME_LENGTH           = 8;
 
-   {$EXTERNALSYM COR_VTABLEGAP_NAME_LENGTH}
 
- // Maximum size of a NativeType descriptor.
 
-   NATIVE_TYPE_MAX_CB                  = 1;
 
-   {$EXTERNALSYM NATIVE_TYPE_MAX_CB}
 
-   COR_ILMETHOD_SECT_SMALL_MAX_DATASIZE= $FF;
 
-   {$EXTERNALSYM COR_ILMETHOD_SECT_SMALL_MAX_DATASIZE}
 
- // #defines for the MIH FLAGS
 
-   IMAGE_COR_MIH_METHODRVA             = $01;
 
-   {$EXTERNALSYM IMAGE_COR_MIH_METHODRVA}
 
-   IMAGE_COR_MIH_EHRVA                 = $02;
 
-   {$EXTERNALSYM IMAGE_COR_MIH_EHRVA}
 
-   IMAGE_COR_MIH_BASICBLOCK            = $08;
 
-   {$EXTERNALSYM IMAGE_COR_MIH_BASICBLOCK}
 
- // V-table constants
 
-   COR_VTABLE_32BIT                    = $01;          // V-table slots are 32-bits in size.
 
-   {$EXTERNALSYM COR_VTABLE_32BIT}
 
-   COR_VTABLE_64BIT                    = $02;          // V-table slots are 64-bits in size.
 
-   {$EXTERNALSYM COR_VTABLE_64BIT}
 
-   COR_VTABLE_FROM_UNMANAGED           = $04;          // If set, transition from unmanaged.
 
-   {$EXTERNALSYM COR_VTABLE_FROM_UNMANAGED}
 
-   COR_VTABLE_CALL_MOST_DERIVED        = $10;          // Call most derived method described by
 
-   {$EXTERNALSYM COR_VTABLE_CALL_MOST_DERIVED}
 
- // EATJ constants
 
-   IMAGE_COR_EATJ_THUNK_SIZE           = 32;            // Size of a jump thunk reserved range.
 
-   {$EXTERNALSYM IMAGE_COR_EATJ_THUNK_SIZE}
 
- // Max name lengths
 
- // Change to unlimited name lengths.
 
-   MAX_CLASS_NAME                      = 1024;
 
-   {$EXTERNALSYM MAX_CLASS_NAME}
 
-   MAX_PACKAGE_NAME                    = 1024;
 
-   {$EXTERNALSYM MAX_PACKAGE_NAME}
 
- // COM+ 2.0 header structure.
 
- type
 
-   IMAGE_COR20_HEADER = record
 
-     // Header versioning
 
-     cb: DWORD;
 
-     MajorRuntimeVersion: WORD;
 
-     MinorRuntimeVersion: WORD;
 
-     // Symbol table and startup information
 
-     MetaData: IMAGE_DATA_DIRECTORY;
 
-     Flags: DWORD;
 
-     EntryPointToken: DWORD;
 
-     // Binding information
 
-     Resources: IMAGE_DATA_DIRECTORY;
 
-     StrongNameSignature: IMAGE_DATA_DIRECTORY;
 
-     // Regular fixup and binding information
 
-     CodeManagerTable: IMAGE_DATA_DIRECTORY;
 
-     VTableFixups: IMAGE_DATA_DIRECTORY;
 
-     ExportAddressTableJumps: IMAGE_DATA_DIRECTORY;
 
-     // Precompiled image info (internal use only - set to zero)
 
-     ManagedNativeHeader: IMAGE_DATA_DIRECTORY;
 
-   end;
 
-   PIMAGE_COR20_HEADER = ^IMAGE_COR20_HEADER;
 
-   TImageCor20Header = IMAGE_COR20_HEADER;
 
-   PImageCor20Header = PIMAGE_COR20_HEADER;
 
- // line 7351
 
- const
 
-   COMPRESSION_FORMAT_NONE     = ($0000);
 
-   {$EXTERNALSYM COMPRESSION_FORMAT_NONE}
 
-   COMPRESSION_FORMAT_DEFAULT  = ($0001);
 
-   {$EXTERNALSYM COMPRESSION_FORMAT_DEFAULT}
 
-   COMPRESSION_FORMAT_LZNT1    = ($0002);
 
-   {$EXTERNALSYM COMPRESSION_FORMAT_LZNT1}
 
-   COMPRESSION_ENGINE_STANDARD = ($0000);
 
-   {$EXTERNALSYM COMPRESSION_ENGINE_STANDARD}
 
-   COMPRESSION_ENGINE_MAXIMUM  = ($0100);
 
-   {$EXTERNALSYM COMPRESSION_ENGINE_MAXIMUM}
 
-   COMPRESSION_ENGINE_HIBER    = ($0200);
 
-   {$EXTERNALSYM COMPRESSION_ENGINE_HIBER}
 
- // line 7462
 
- type
 
-   POSVERSIONINFOEXA = ^OSVERSIONINFOEXA;
 
-   {$EXTERNALSYM POSVERSIONINFOEXA}
 
-   _OSVERSIONINFOEXA = record
 
-     dwOSVersionInfoSize: DWORD;
 
-     dwMajorVersion: DWORD;
 
-     dwMinorVersion: DWORD;
 
-     dwBuildNumber: DWORD;
 
-     dwPlatformId: DWORD;
 
-     szCSDVersion: array [0..127] of ANSICHAR;     // Maintenance string for PSS usage
 
-     wServicePackMajor: WORD;
 
-     wServicePackMinor: WORD;
 
-     wSuiteMask: WORD;
 
-     wProductType: BYTE;
 
-     wReserved: BYTE;
 
-   end;
 
-   {$EXTERNALSYM _OSVERSIONINFOEXA}
 
-   OSVERSIONINFOEXA = _OSVERSIONINFOEXA;
 
-   {$EXTERNALSYM OSVERSIONINFOEXA}
 
-   LPOSVERSIONINFOEXA = ^OSVERSIONINFOEXA;
 
-   {$EXTERNALSYM LPOSVERSIONINFOEXA}
 
-   TOSVersionInfoExA = _OSVERSIONINFOEXA;
 
-   POSVERSIONINFOEXW = ^OSVERSIONINFOEXW;
 
-   {$EXTERNALSYM POSVERSIONINFOEXW}
 
-   _OSVERSIONINFOEXW = record
 
-     dwOSVersionInfoSize: DWORD;
 
-     dwMajorVersion: DWORD;
 
-     dwMinorVersion: DWORD;
 
-     dwBuildNumber: DWORD;
 
-     dwPlatformId: DWORD;
 
-     szCSDVersion: array [0..127] of WCHAR;     // Maintenance string for PSS usage
 
-     wServicePackMajor: WORD;
 
-     wServicePackMinor: WORD;
 
-     wSuiteMask: WORD;
 
-     wProductType: BYTE;
 
-     wReserved: BYTE;
 
-   end;
 
-   {$EXTERNALSYM _OSVERSIONINFOEXW}
 
-   OSVERSIONINFOEXW = _OSVERSIONINFOEXW;
 
-   {$EXTERNALSYM OSVERSIONINFOEXW}
 
-   LPOSVERSIONINFOEXW = ^OSVERSIONINFOEXW;
 
-   {$EXTERNALSYM LPOSVERSIONINFOEXW}
 
-   RTL_OSVERSIONINFOEXW = _OSVERSIONINFOEXW;
 
-   {$EXTERNALSYM RTL_OSVERSIONINFOEXW}
 
-   PRTL_OSVERSIONINFOEXW = ^RTL_OSVERSIONINFOEXW;
 
-   {$EXTERNALSYM PRTL_OSVERSIONINFOEXW}
 
-   TOSVersionInfoExW = _OSVERSIONINFOEXW;
 
- {$IFDEF SUPPORTS_UNICODE}
 
-   OSVERSIONINFOEX = OSVERSIONINFOEXW;
 
-   {$EXTERNALSYM OSVERSIONINFOEX}
 
-   POSVERSIONINFOEX = POSVERSIONINFOEXW;
 
-   {$EXTERNALSYM POSVERSIONINFOEX}
 
-   LPOSVERSIONINFOEX = LPOSVERSIONINFOEXW;
 
-   {$EXTERNALSYM LPOSVERSIONINFOEX}
 
-   TOSVersionInfoEx = TOSVersionInfoExW;
 
- {$ELSE ~SUPPORTS_UNICODE}
 
-   OSVERSIONINFOEX = OSVERSIONINFOEXA;
 
-   {$EXTERNALSYM OSVERSIONINFOEX}
 
-   POSVERSIONINFOEX = POSVERSIONINFOEXA;
 
-   {$EXTERNALSYM POSVERSIONINFOEX}
 
-   LPOSVERSIONINFOEX = LPOSVERSIONINFOEXA;
 
-   {$EXTERNALSYM LPOSVERSIONINFOEX}
 
-   TOSVersionInfoEx = TOSVersionInfoExA;
 
- {$ENDIF ~SUPPORTS_UNICODE}
 
- //
 
- // RtlVerifyVersionInfo() conditions
 
- //
 
- const
 
-   VER_EQUAL         = 1;
 
-   {$EXTERNALSYM VER_EQUAL}
 
-   VER_GREATER       = 2;
 
-   {$EXTERNALSYM VER_GREATER}
 
-   VER_GREATER_EQUAL = 3;
 
-   {$EXTERNALSYM VER_GREATER_EQUAL}
 
-   VER_LESS          = 4;
 
-   {$EXTERNALSYM VER_LESS}
 
-   VER_LESS_EQUAL    = 5;
 
-   {$EXTERNALSYM VER_LESS_EQUAL}
 
-   VER_AND           = 6;
 
-   {$EXTERNALSYM VER_AND}
 
-   VER_OR            = 7;
 
-   {$EXTERNALSYM VER_OR}
 
-   VER_CONDITION_MASK              = 7;
 
-   {$EXTERNALSYM VER_CONDITION_MASK}
 
-   VER_NUM_BITS_PER_CONDITION_MASK = 3;
 
-   {$EXTERNALSYM VER_NUM_BITS_PER_CONDITION_MASK}
 
- //
 
- // RtlVerifyVersionInfo() type mask bits
 
- //
 
-   VER_MINORVERSION     = $0000001;
 
-   {$EXTERNALSYM VER_MINORVERSION}
 
-   VER_MAJORVERSION     = $0000002;
 
-   {$EXTERNALSYM VER_MAJORVERSION}
 
-   VER_BUILDNUMBER      = $0000004;
 
-   {$EXTERNALSYM VER_BUILDNUMBER}
 
-   VER_PLATFORMID       = $0000008;
 
-   {$EXTERNALSYM VER_PLATFORMID}
 
-   VER_SERVICEPACKMINOR = $0000010;
 
-   {$EXTERNALSYM VER_SERVICEPACKMINOR}
 
-   VER_SERVICEPACKMAJOR = $0000020;
 
-   {$EXTERNALSYM VER_SERVICEPACKMAJOR}
 
-   VER_SUITENAME        = $0000040;
 
-   {$EXTERNALSYM VER_SUITENAME}
 
-   VER_PRODUCT_TYPE     = $0000080;
 
-   {$EXTERNALSYM VER_PRODUCT_TYPE}
 
- //
 
- // RtlVerifyVersionInfo() os product type values
 
- //
 
-   VER_NT_WORKSTATION       = $0000001;
 
-   {$EXTERNALSYM VER_NT_WORKSTATION}
 
-   VER_NT_DOMAIN_CONTROLLER = $0000002;
 
-   {$EXTERNALSYM VER_NT_DOMAIN_CONTROLLER}
 
-   VER_NT_SERVER            = $0000003;
 
-   {$EXTERNALSYM VER_NT_SERVER}
 
- //
 
- // dwPlatformId defines:
 
- //
 
-   VER_PLATFORM_WIN32s        = 0;
 
-   {$EXTERNALSYM VER_PLATFORM_WIN32s}
 
-   VER_PLATFORM_WIN32_WINDOWS = 1;
 
-   {$EXTERNALSYM VER_PLATFORM_WIN32_WINDOWS}
 
-   VER_PLATFORM_WIN32_NT      = 2;
 
-   {$EXTERNALSYM VER_PLATFORM_WIN32_NT}
 
- const
 
- //
 
- //
 
- // Predefined Value Types.
 
- //
 
-   REG_NONE      = ( 0 ); // No value type
 
-   {$EXTERNALSYM REG_NONE}
 
-   REG_SZ        = ( 1 ); // Unicode nul terminated string
 
-   {$EXTERNALSYM REG_SZ}
 
-   REG_EXPAND_SZ = ( 2 ); // Unicode nul terminated string
 
-   {$EXTERNALSYM REG_EXPAND_SZ}
 
-                                             // (with environment variable references)
 
-   REG_BINARY                     = ( 3 ); // Free form binary
 
-   {$EXTERNALSYM REG_BINARY}
 
-   REG_DWORD                      = ( 4 ); // 32-bit number
 
-   {$EXTERNALSYM REG_DWORD}
 
-   REG_DWORD_LITTLE_ENDIAN        = ( 4 ); // 32-bit number (same as REG_DWORD)
 
-   {$EXTERNALSYM REG_DWORD_LITTLE_ENDIAN}
 
-   REG_DWORD_BIG_ENDIAN           = ( 5 ); // 32-bit number
 
-   {$EXTERNALSYM REG_DWORD_BIG_ENDIAN}
 
-   REG_LINK                       = ( 6 ); // Symbolic Link (unicode)
 
-   {$EXTERNALSYM REG_LINK}
 
-   REG_MULTI_SZ                   = ( 7 ); // Multiple Unicode strings
 
-   {$EXTERNALSYM REG_MULTI_SZ}
 
-   REG_RESOURCE_LIST              = ( 8 ); // Resource list in the resource map
 
-   {$EXTERNALSYM REG_RESOURCE_LIST}
 
-   REG_FULL_RESOURCE_DESCRIPTOR   = ( 9 ); // Resource list in the hardware description
 
-   {$EXTERNALSYM REG_FULL_RESOURCE_DESCRIPTOR}
 
-   REG_RESOURCE_REQUIREMENTS_LIST = ( 10 );
 
-   {$EXTERNALSYM REG_RESOURCE_REQUIREMENTS_LIST}
 
-   REG_QWORD                      = ( 11 ); // 64-bit number
 
-   {$EXTERNALSYM REG_QWORD}
 
-   REG_QWORD_LITTLE_ENDIAN        = ( 11 ); // 64-bit number (same as REG_QWORD)
 
-   {$EXTERNALSYM REG_QWORD_LITTLE_ENDIAN}
 
-   // Windows 7 debugging types
 
- type
 
-   _CONTEXT_CHUNK = packed record
 
-     Offset: Integer;
 
-     Length: DWORD;
 
-   end;
 
-   {$EXTERNALSYM _CONTEXT_CHUNK}
 
-   CONTEXT_CHUNK = _CONTEXT_CHUNK;
 
-   {$EXTERNALSYM CONTEXT_CHUNK}
 
-   PCONTEXT_CHUNK = ^_CONTEXT_CHUNK;
 
-   {$EXTERNALSYM PCONTEXT_CHUNK}
 
- type
 
-   _CONTEXT_EX = packed record
 
-     //
 
-     // The total length of the structure starting from the chunk with
 
-     // the smallest offset. N.B. that the offset may be negative.
 
-     //
 
-     All: CONTEXT_CHUNK;
 
-     //
 
-     // Wrapper for the traditional CONTEXT structure. N.B. the size of
 
-     // the chunk may be less than sizeof(CONTEXT) is some cases (when
 
-     // CONTEXT_EXTENDED_REGISTERS is not set on x86 for instance).
 
-     //
 
-     Legacy: CONTEXT_CHUNK;
 
-     //
 
-     // CONTEXT_XSTATE: Extended processor state chunk. The state is
 
-     // stored in the same format XSAVE operation strores it with
 
-     // exception of the first 512 bytes, i.e. staring from
 
-     // XSAVE_AREA_HEADER. The lower two bits corresponding FP and
 
-     // SSE state must be zero.
 
-     //
 
-     XState: CONTEXT_CHUNK;
 
-   end;
 
-   {$EXTERNALSYM _CONTEXT_EX}
 
-   CONTEXT_EX = _CONTEXT_EX;
 
-   {$EXTERNALSYM CONTEXT_EX}
 
-   PCONTEXT_EX = ^_CONTEXT_EX;
 
-   {$EXTERNALSYM PCONTEXT_EX}
 
- //
 
- // Known extended CPU state feature IDs
 
- //
 
- const
 
-   XSTATE_LEGACY_FLOATING_POINT = 0;
 
-   {$EXTERNALSYM XSTATE_LEGACY_FLOATING_POINT}
 
-   XSTATE_LEGACY_SSE            = 1;
 
-   {$EXTERNALSYM XSTATE_LEGACY_SSE}
 
-   XSTATE_GSSE                  = 2;
 
-   {$EXTERNALSYM XSTATE_GSSE}
 
-   XSTATE_MASK_LEGACY_FLOATING_POINT = Int64(1) shl XSTATE_LEGACY_FLOATING_POINT;
 
-   {$EXTERNALSYM XSTATE_MASK_LEGACY_FLOATING_POINT}
 
-   XSTATE_MASK_LEGACY_SSE            = Int64(1) shl XSTATE_LEGACY_SSE;
 
-   {$EXTERNALSYM XSTATE_MASK_LEGACY_SSE}
 
-   XSTATE_MASK_LEGACY                = XSTATE_MASK_LEGACY_FLOATING_POINT or XSTATE_MASK_LEGACY_SSE;
 
-   {$EXTERNALSYM XSTATE_MASK_LEGACY}
 
-   XSTATE_MASK_GSSE                  = Int64(1) shl XSTATE_GSSE;
 
-   {$EXTERNALSYM XSTATE_MASK_GSSE}
 
-   MAXIMUM_XSTATE_FEATURES = 64;
 
-   {$EXTERNALSYM MAXIMUM_XSTATE_FEATURES}
 
- //
 
- // The following flags control the contents of the CONTEXT structure.
 
- //
 
- const
 
-   CONTEXT_i386 = $00010000;    // this assumes that i386 and
 
-   {$EXTERNALSYM CONTEXT_i386}
 
-   CONTEXT_i486 = $00010000;    // i486 have identical context records
 
-   {$EXTERNALSYM CONTEXT_i486}
 
-   CONTEXT_CONTROL            = CONTEXT_i386 or $00000001; // SS:SP, CS:IP, FLAGS, BP
 
-   {$EXTERNALSYM CONTEXT_CONTROL}
 
-   CONTEXT_INTEGER            = CONTEXT_i386 or $00000002; // AX, BX, CX, DX, SI, DI
 
-   {$EXTERNALSYM CONTEXT_INTEGER}
 
-   CONTEXT_SEGMENTS           = CONTEXT_i386 or $00000004; // DS, ES, FS, GS
 
-   {$EXTERNALSYM CONTEXT_SEGMENTS}
 
-   CONTEXT_FLOATING_POINT     = CONTEXT_i386 or $00000008; // 387 state
 
-   {$EXTERNALSYM CONTEXT_FLOATING_POINT}
 
-   CONTEXT_DEBUG_REGISTERS    = CONTEXT_i386 or $00000010; // DB 0-3,6,7
 
-   {$EXTERNALSYM CONTEXT_DEBUG_REGISTERS}
 
-   CONTEXT_EXTENDED_REGISTERS = CONTEXT_i386 or $00000020; // cpu specific extensions
 
-   {$EXTERNALSYM CONTEXT_EXTENDED_REGISTERS}
 
-   CONTEXT_FULL = CONTEXT_CONTROL or CONTEXT_INTEGER or CONTEXT_SEGMENTS;
 
-   {$EXTERNALSYM CONTEXT_FULL}
 
-   CONTEXT_ALL  = CONTEXT_CONTROL or CONTEXT_INTEGER or CONTEXT_SEGMENTS or CONTEXT_FLOATING_POINT or
 
-                  CONTEXT_DEBUG_REGISTERS or CONTEXT_EXTENDED_REGISTERS;
 
-   {$EXTERNALSYM CONTEXT_ALL}
 
-   CONTEXT_XSTATE = CONTEXT_i386 or $00000040;
 
-   {$EXTERNALSYM CONTEXT_XSTATE}
 
- // line 160
 
- //
 
- // File creation flags must start at the high end since they
 
- // are combined with the attributes
 
- //
 
- const
 
-   FILE_FLAG_WRITE_THROUGH      = DWORD($80000000);
 
-   {$EXTERNALSYM FILE_FLAG_WRITE_THROUGH}
 
-   FILE_FLAG_OVERLAPPED         = $40000000;
 
-   {$EXTERNALSYM FILE_FLAG_OVERLAPPED}
 
-   FILE_FLAG_NO_BUFFERING       = $20000000;
 
-   {$EXTERNALSYM FILE_FLAG_NO_BUFFERING}
 
-   FILE_FLAG_RANDOM_ACCESS      = $10000000;
 
-   {$EXTERNALSYM FILE_FLAG_RANDOM_ACCESS}
 
-   FILE_FLAG_SEQUENTIAL_SCAN    = $08000000;
 
-   {$EXTERNALSYM FILE_FLAG_SEQUENTIAL_SCAN}
 
-   FILE_FLAG_DELETE_ON_CLOSE    = $04000000;
 
-   {$EXTERNALSYM FILE_FLAG_DELETE_ON_CLOSE}
 
-   FILE_FLAG_BACKUP_SEMANTICS   = $02000000;
 
-   {$EXTERNALSYM FILE_FLAG_BACKUP_SEMANTICS}
 
-   FILE_FLAG_POSIX_SEMANTICS    = $01000000;
 
-   {$EXTERNALSYM FILE_FLAG_POSIX_SEMANTICS}
 
-   FILE_FLAG_OPEN_REPARSE_POINT = $00200000;
 
-   {$EXTERNALSYM FILE_FLAG_OPEN_REPARSE_POINT}
 
-   FILE_FLAG_OPEN_NO_RECALL     = $00100000;
 
-   {$EXTERNALSYM FILE_FLAG_OPEN_NO_RECALL}
 
-   FILE_FLAG_FIRST_PIPE_INSTANCE = $00080000;
 
-   {$EXTERNALSYM FILE_FLAG_FIRST_PIPE_INSTANCE}
 
- // line 2727
 
- type
 
-   _MEMORYSTATUSEX = packed record
 
-     dwLength: DWORD;
 
-     dwMemoryLoad: DWORD;
 
-     ullTotalPhys: Int64;
 
-     ullAvailPhys: Int64;
 
-     ullTotalPageFile: Int64;
 
-     ullAvailPageFile: Int64;
 
-     ullTotalVirtual: Int64;
 
-     ullAvailVirtual: Int64;
 
-     ullAvailExtendedVirtual: Int64;
 
-   end;
 
-   {$EXTERNALSYM _MEMORYSTATUSEX}
 
-   MEMORYSTATUSEX = _MEMORYSTATUSEX;
 
-   {$EXTERNALSYM MEMORYSTATUSEX}
 
-   LPMEMORYSTATUSEX = ^_MEMORYSTATUSEX;
 
-   {$EXTERNALSYM LPMEMORYSTATUSEX}
 
-   TMemoryStatusEx = _MEMORYSTATUSEX;
 
- function GlobalMemoryStatusEx(out lpBuffer: TMemoryStatusEx): BOOL; stdcall;
 
- // line 3189
 
- function BackupSeek(hFile: THandle; dwLowBytesToSeek, dwHighBytesToSeek: DWORD;
 
-   out lpdwLowByteSeeked, lpdwHighByteSeeked: DWORD;
 
-   var lpContext: Pointer): BOOL; stdcall;
 
- {$EXTERNALSYM BackupSeek}
 
- // line 5454
 
- function AdjustTokenPrivileges(TokenHandle: THandle; DisableAllPrivileges: BOOL;
 
-   const NewState: TTokenPrivileges; BufferLength: DWORD;
 
-   PreviousState: PTokenPrivileges;
 
-   ReturnLength: PDWORD
 
-   ): BOOL; stdcall;
 
- {$EXTERNALSYM AdjustTokenPrivileges}
 
- {
 
- From: Ray Lischner <[email protected]>
 
- Subject: CreateMutex bug
 
- Date: 1999/12/10
 
- Message-ID: <[email protected]>#1/1
 
- Content-Transfer-Encoding: 7bit
 
- Organization: Tempest Software, Inc., Corvallis, Oregon
 
- Content-Type: text/plain; charset=us-ascii
 
- Mime-Version: 1.0
 
- Newsgroups: borland.public.delphi.winapi
 
- Windows NT 4 has a bug in CreateMutex. The second argument is documented
 
- to be a BOOL, but in truth, the CreateMutex interprets 1 as True and all
 
- other values as False. (Do I detect an "if (bInitialOwner == TRUE)" in
 
- the implementation of CreateMutex?)
 
- The problem is that Delphi declares CreateMutex according to the
 
- documentation, so bInitialOwner is declared as LongBool. Delphi maps
 
- True values to $FFFFFFFF, which should work, but doesn't in this case.
 
- My workaround is to declare CreateMutex with a LongInt as the second
 
- argument, and pass the value 1 for True.
 
- I have not had this problem on Windows 98.
 
- --
 
- Ray Lischner, author of Delphi in a Nutshell (coming later this year)
 
- http://www.bardware.com and http://www.tempest-sw.com
 
- }
 
- function CreateMutex(lpMutexAttributes: PSecurityAttributes; bInitialOwner: BOOL; lpName: PChar): THandle; stdcall;
 
- {$EXTERNALSYM CreateMutex}
 
- // alternative conversion for WinNT 4.0 SP6 and later (OSVersionInfoEx instead of OSVersionInfo)
 
- {$EXTERNALSYM GetVersionEx}
 
- function GetVersionEx(var lpVersionInformation: TOSVersionInfoEx): BOOL; stdcall; overload;
 
- {$EXTERNALSYM GetVersionEx}
 
- function GetVersionEx(lpVersionInformation: POSVERSIONINFOEX): BOOL; stdcall; overload;
 
-   {$IFDEF SUPPORTS_DEPRECATED} deprecated; {$ENDIF}
 
- // line 3585
 
- function SetWaitableTimer(hTimer: THandle; var lpDueTime: TLargeInteger;
 
-   lPeriod: Longint; pfnCompletionRoutine: TFNTimerAPCRoutine;
 
-   lpArgToCompletionRoutine: Pointer; fResume: BOOL): BOOL; stdcall;
 
-   {$EXTERNALSYM SetWaitableTimer}
 
- // WinBase.h line 8839
 
- function SetFileSecurityA(lpFileName: LPCSTR; SecurityInformation: SECURITY_INFORMATION;
 
-   pSecurityDescriptor: PSECURITY_DESCRIPTOR): BOOL; stdcall;
 
- {$EXTERNALSYM SetFileSecurityA}
 
- function SetFileSecurityW(lpFileName: LPCWSTR; SecurityInformation: SECURITY_INFORMATION;
 
-   pSecurityDescriptor: PSECURITY_DESCRIPTOR): BOOL; stdcall;
 
- {$EXTERNALSYM SetFileSecurityW}
 
- function SetFileSecurity(lpFileName: LPCTSTR; SecurityInformation: SECURITY_INFORMATION;
 
-   pSecurityDescriptor: PSECURITY_DESCRIPTOR): BOOL; stdcall;
 
- {$EXTERNALSYM SetFileSecurity}
 
- function GetFileSecurityA(lpFileName: LPCSTR; RequestedInformation: SECURITY_INFORMATION;
 
-   pSecurityDescriptor: PSECURITY_DESCRIPTOR; nLength: DWORD;
 
-   var lpnLengthNeeded: DWORD): BOOL; stdcall;
 
- {$EXTERNALSYM GetFileSecurityA}
 
- function GetFileSecurityW(lpFileName: LPCWSTR; RequestedInformation: SECURITY_INFORMATION;
 
-   pSecurityDescriptor: PSECURITY_DESCRIPTOR; nLength: DWORD;
 
-   var lpnLengthNeeded: DWORD): BOOL; stdcall;
 
- {$EXTERNALSYM GetFileSecurityW}
 
- function GetFileSecurity(lpFileName: LPCTSTR; RequestedInformation: SECURITY_INFORMATION;
 
-   pSecurityDescriptor: PSECURITY_DESCRIPTOR; nLength: DWORD;
 
-   var lpnLengthNeeded: DWORD): BOOL; stdcall;
 
- {$EXTERNALSYM GetFileSecurity}
 
- // WinBase.h line 10251
 
- function SetVolumeMountPointW(lpszVolumeMountPoint, lpszVolumeName: LPCWSTR): BOOL; stdcall;
 
- {$EXTERNALSYM SetVolumeMountPointW}
 
- function DeleteVolumeMountPointW(lpszVolumeMountPoint: LPCWSTR): BOOL; stdcall;
 
- {$EXTERNALSYM DeleteVolumeMountPointW}
 
- function GetVolumeNameForVolumeMountPointW(lpszVolumeMountPoint: LPCWSTR;
 
-   lpszVolumeName: LPWSTR; cchBufferLength: DWORD): BOOL; stdcall;
 
- {$EXTERNALSYM GetVolumeNameForVolumeMountPointW}
 
- // new Windows 7 debugging API
 
- function CopyExtendedContext(Destination: PCONTEXT_EX; ContextFlags: DWORD; Source: PCONTEXT_EX): BOOL; stdcall;
 
- {$EXTERNALSYM CopyExtendedContext}
 
- function InitializeExtendedContext(Context: Pointer; ContextFlags: DWORD; out ContextEx: PCONTEXT_EX): BOOL; stdcall;
 
- {$EXTERNALSYM InitializeExtendedContext}
 
- function GetEnabledExtendedFeatures(const FeatureMask: Int64): Int64; stdcall;
 
- {$EXTERNALSYM GetEnabledExtendedFeatures}
 
- function GetExtendedContextLength(ContextFlags: DWORD; ContextLength: PDWORD): BOOL; stdcall;
 
- {$EXTERNALSYM GetExtendedContextLength}
 
- function GetExtendedFeaturesMask(ContextEx: PCONTEXT_EX): Int64; stdcall;
 
- {$EXTERNALSYM GetExtendedFeaturesMask}
 
- function LocateExtendedFeature(ContextEx: PCONTEXT_EX; FeatureId: DWORD; Length: PDWORD): Pointer; stdcall;
 
- {$EXTERNALSYM LocateExtendedFeature}
 
- function LocateLegacyContext(ContextEx: PCONTEXT_EX; Length: PDWORD): PCONTEXT; stdcall;
 
- {$EXTERNALSYM LocateLegacyContext}
 
- procedure SetExtendedFeaturesMask(ContextEx: PCONTEXT_EX; const FeatureMask: Int64); stdcall;
 
- {$EXTERNALSYM SetExtendedFeaturesMask}
 
- function ProcessIdToSessionId(dwProcessId: DWORD; out dwSessionId: DWORD): BOOL; stdcall;
 
- {$EXTERNALSYM ProcessIdToSessionId}
 
- // From JwaAclApi
 
- // line 185
 
- function SetNamedSecurityInfoW(pObjectName: LPWSTR; ObjectType: SE_OBJECT_TYPE;
 
-   SecurityInfo: SECURITY_INFORMATION; psidOwner, psidGroup: PSID;
 
-   pDacl, pSacl: PACL): DWORD; stdcall;
 
- {$EXTERNALSYM SetNamedSecurityInfoW}
 
- const
 
-   IMAGE_SEPARATION = (64*1024);
 
-   {$EXTERNALSYM IMAGE_SEPARATION}
 
- type
 
-   PLOADED_IMAGE = ^LOADED_IMAGE;
 
-   {$EXTERNALSYM PLOADED_IMAGE}
 
-   _LOADED_IMAGE = record
 
-     ModuleName: PAnsiChar;
 
-     hFile: THandle;
 
-     MappedAddress: PUCHAR;
 
-     FileHeader: PImageNtHeaders;
 
-     LastRvaSection: PImageSectionHeader;
 
-     NumberOfSections: ULONG;
 
-     Sections: PImageSectionHeader;
 
-     Characteristics: ULONG;
 
-     fSystemImage: ByteBool;
 
-     fDOSImage: ByteBool;
 
-     Links: LIST_ENTRY;
 
-     SizeOfImage: ULONG;
 
-   end;
 
-   {$EXTERNALSYM _LOADED_IMAGE}
 
-   LOADED_IMAGE = _LOADED_IMAGE;
 
-   {$EXTERNALSYM LOADED_IMAGE}
 
-   TLoadedImage = LOADED_IMAGE;
 
-   PLoadedImage = PLOADED_IMAGE;
 
-   PIMAGE_SYMBOL = ^IMAGE_SYMBOL;
 
-   {$EXTERNALSYM PIMAGE_SYMBOL}
 
-   _IMAGE_SYMBOL = packed record  // MUST pack to obtain the right size
 
-     Name: array [0..7] of AnsiChar;
 
-     Value: ULONG;
 
-     SectionNumber: USHORT;
 
-     _Type: USHORT;
 
-     StorageClass: BYTE;
 
-     NumberOfAuxSymbols: BYTE;
 
-   end;
 
-   {$EXTERNALSYM _IMAGE_SYMBOL}
 
-   IMAGE_SYMBOL = _IMAGE_SYMBOL;
 
-   {$EXTERNALSYM IMAGE_SYMBOL}
 
-   TImageSymbol = IMAGE_SYMBOL;
 
-   PImageSymbol = PIMAGE_SYMBOL;
 
- // line 152
 
- function ReBaseImage(CurrentImageName: PAnsiChar; SymbolPath: PAnsiChar; fReBase: BOOL;
 
-   fRebaseSysfileOk: BOOL; fGoingDown: BOOL; CheckImageSize: ULONG;
 
-   var OldImageSize: TJclAddr32; var OldImageBase: TJclAddr;
 
-   var NewImageSize: TJclAddr32; var NewImageBase: TJclAddr; TimeStamp: ULONG): BOOL; stdcall;
 
- {$EXTERNALSYM ReBaseImage}
 
- function ReBaseImage64(CurrentImageName: PAnsiChar; SymbolPath: PAnsiChar; fReBase: BOOL;
 
-   fRebaseSysfileOk: BOOL; fGoingDown: BOOL; CheckImageSize: ULONG;
 
-   var OldImageSize: TJclAddr32; var OldImageBase: TJclAddr64;
 
-   var NewImageSize: TJclAddr32; var NewImageBase: TJclAddr64; TimeStamp: ULONG): BOOL; stdcall;
 
- {$EXTERNALSYM ReBaseImage64}
 
- // line 199
 
- //
 
- // Define checksum function prototypes.
 
- //
 
- function CheckSumMappedFile(BaseAddress: Pointer; FileLength: DWORD;
 
-   out HeaderSum, CheckSum: DWORD): PImageNtHeaders; stdcall;
 
- {$EXTERNALSYM CheckSumMappedFile}
 
- // line 227
 
- function GetImageUnusedHeaderBytes(const LoadedImage: LOADED_IMAGE;
 
-   var SizeUnusedHeaderBytes: DWORD): DWORD; stdcall;
 
- {$EXTERNALSYM GetImageUnusedHeaderBytes}
 
- // line 285
 
- function MapAndLoad(ImageName, DllPath: PAnsiChar; var LoadedImage: LOADED_IMAGE;
 
-   DotDll: BOOL; ReadOnly: BOOL): BOOL; stdcall;
 
- {$EXTERNALSYM MapAndLoad}
 
- function UnMapAndLoad(const LoadedImage: LOADED_IMAGE): BOOL; stdcall;
 
- {$EXTERNALSYM UnMapAndLoad}
 
- function TouchFileTimes(const FileHandle: THandle; const pSystemTime: TSystemTime): BOOL; stdcall;
 
- {$EXTERNALSYM TouchFileTimes}
 
- // line 347
 
- function ImageDirectoryEntryToData(Base: Pointer; MappedAsImage: ByteBool;
 
-   DirectoryEntry: USHORT; var Size: ULONG): Pointer; stdcall;
 
- {$EXTERNALSYM ImageDirectoryEntryToData}
 
- function ImageRvaToSection(NtHeaders: PImageNtHeaders; Base: Pointer; Rva: ULONG): PImageSectionHeader; stdcall;
 
- {$EXTERNALSYM ImageRvaToSection}
 
- function ImageRvaToVa(NtHeaders: PImageNtHeaders; Base: Pointer; Rva: ULONG;
 
-   LastRvaSection: PPImageSectionHeader): Pointer; stdcall;
 
- {$EXTERNALSYM ImageRvaToVa}
 
- // line 461
 
- //
 
- // UnDecorateSymbolName Flags
 
- //
 
- const
 
-   UNDNAME_COMPLETE               = ($0000); // Enable full undecoration
 
-   {$EXTERNALSYM UNDNAME_COMPLETE}
 
-   UNDNAME_NO_LEADING_UNDERSCORES = ($0001); // Remove leading underscores from MS extended keywords
 
-   {$EXTERNALSYM UNDNAME_NO_LEADING_UNDERSCORES}
 
-   UNDNAME_NO_MS_KEYWORDS         = ($0002); // Disable expansion of MS extended keywords
 
-   {$EXTERNALSYM UNDNAME_NO_MS_KEYWORDS}
 
-   UNDNAME_NO_FUNCTION_RETURNS    = ($0004); // Disable expansion of return type for primary declaration
 
-   {$EXTERNALSYM UNDNAME_NO_FUNCTION_RETURNS}
 
-   UNDNAME_NO_ALLOCATION_MODEL    = ($0008); // Disable expansion of the declaration model
 
-   {$EXTERNALSYM UNDNAME_NO_ALLOCATION_MODEL}
 
-   UNDNAME_NO_ALLOCATION_LANGUAGE = ($0010); // Disable expansion of the declaration language specifier
 
-   {$EXTERNALSYM UNDNAME_NO_ALLOCATION_LANGUAGE}
 
-   UNDNAME_NO_MS_THISTYPE         = ($0020); // NYI Disable expansion of MS keywords on the 'this' type for primary declaration
 
-   {$EXTERNALSYM UNDNAME_NO_MS_THISTYPE}
 
-   UNDNAME_NO_CV_THISTYPE         = ($0040); // NYI Disable expansion of CV modifiers on the 'this' type for primary declaration
 
-   {$EXTERNALSYM UNDNAME_NO_CV_THISTYPE}
 
-   UNDNAME_NO_THISTYPE            = ($0060); // Disable all modifiers on the 'this' type
 
-   {$EXTERNALSYM UNDNAME_NO_THISTYPE}
 
-   UNDNAME_NO_ACCESS_SPECIFIERS   = ($0080); // Disable expansion of access specifiers for members
 
-   {$EXTERNALSYM UNDNAME_NO_ACCESS_SPECIFIERS}
 
-   UNDNAME_NO_THROW_SIGNATURES    = ($0100); // Disable expansion of 'throw-signatures' for functions and pointers to functions
 
-   {$EXTERNALSYM UNDNAME_NO_THROW_SIGNATURES}
 
-   UNDNAME_NO_MEMBER_TYPE         = ($0200); // Disable expansion of 'static' or 'virtual'ness of members
 
-   {$EXTERNALSYM UNDNAME_NO_MEMBER_TYPE}
 
-   UNDNAME_NO_RETURN_UDT_MODEL    = ($0400); // Disable expansion of MS model for UDT returns
 
-   {$EXTERNALSYM UNDNAME_NO_RETURN_UDT_MODEL}
 
-   UNDNAME_32_BIT_DECODE          = ($0800); // Undecorate 32-bit decorated names
 
-   {$EXTERNALSYM UNDNAME_32_BIT_DECODE}
 
-   UNDNAME_NAME_ONLY              = ($1000); // Crack only the name for primary declaration;
 
-   {$EXTERNALSYM UNDNAME_NAME_ONLY}
 
-                                                                                                    //  return just [scope::]name.  Does expand template params
 
-   UNDNAME_NO_ARGUMENTS    = ($2000); // Don't undecorate arguments to function
 
-   {$EXTERNALSYM UNDNAME_NO_ARGUMENTS}
 
-   UNDNAME_NO_SPECIAL_SYMS = ($4000); // Don't undecorate special names (v-table, vcall, vector xxx, metatype, etc)
 
-   {$EXTERNALSYM UNDNAME_NO_SPECIAL_SYMS}
 
- // line 1342
 
- type
 
-   {$EXTERNALSYM SYM_TYPE}
 
-   SYM_TYPE = (
 
-     SymNone,
 
-     SymCoff,
 
-     SymCv,
 
-     SymPdb,
 
-     SymExport,
 
-     SymDeferred,
 
-     SymSym                  { .sym file }
 
-   );
 
-   TSymType = SYM_TYPE;
 
-   { symbol data structure }
 
-   {$EXTERNALSYM PImagehlpSymbolA}
 
-   PImagehlpSymbolA = ^TImagehlpSymbolA;
 
-   {$EXTERNALSYM _IMAGEHLP_SYMBOLA}
 
-   _IMAGEHLP_SYMBOLA = packed record
 
-     SizeOfStruct: DWORD;                                { set to sizeof(IMAGEHLP_SYMBOL) }
 
-     Address: DWORD;                                     { virtual address including dll base address }
 
-     Size: DWORD;                                        { estimated size of symbol, can be zero }
 
-     Flags: DWORD;                                       { info about the symbols, see the SYMF defines }
 
-     MaxNameLength: DWORD;                               { maximum size of symbol name in 'Name' }
 
-     Name: packed array[0..0] of AnsiChar;               { symbol name (null terminated string) }
 
-   end;
 
-   {$EXTERNALSYM IMAGEHLP_SYMBOLA}
 
-   IMAGEHLP_SYMBOLA = _IMAGEHLP_SYMBOLA;
 
-   {$EXTERNALSYM TImagehlpSymbolA}
 
-   TImagehlpSymbolA = _IMAGEHLP_SYMBOLA;
 
-   { symbol data structure }
 
-   {$EXTERNALSYM PImagehlpSymbolA64}
 
-   PImagehlpSymbolA64 = ^TImagehlpSymbolA64;
 
-   {$EXTERNALSYM _IMAGEHLP_SYMBOLA64}
 
-   _IMAGEHLP_SYMBOLA64 = packed record
 
-     SizeOfStruct: DWORD;                                { set to sizeof(IMAGEHLP_SYMBOL) }
 
-     Address: TJclAddr64;                                { virtual address including dll base address }
 
-     Size: DWORD;                                        { estimated size of symbol, can be zero }
 
-     Flags: DWORD;                                       { info about the symbols, see the SYMF defines }
 
-     MaxNameLength: DWORD;                               { maximum size of symbol name in 'Name' }
 
-     Name: packed array[0..0] of AnsiChar;               { symbol name (null terminated string) }
 
-   end;
 
-   {$EXTERNALSYM IMAGEHLP_SYMBOLA64}
 
-   IMAGEHLP_SYMBOLA64 = _IMAGEHLP_SYMBOLA64;
 
-   {$EXTERNALSYM TImagehlpSymbolA64}
 
-   TImagehlpSymbolA64 = _IMAGEHLP_SYMBOLA64;
 
-   { symbol data structure }
 
-   {$EXTERNALSYM PImagehlpSymbolW}
 
-   PImagehlpSymbolW = ^TImagehlpSymbolW;
 
-   {$EXTERNALSYM _IMAGEHLP_SYMBOLW}
 
-   _IMAGEHLP_SYMBOLW = packed record
 
-     SizeOfStruct: DWORD;                                { set to sizeof(IMAGEHLP_SYMBOL) }
 
-     Address: DWORD;                                     { virtual address including dll base address }
 
-     Size: DWORD;                                        { estimated size of symbol, can be zero }
 
-     Flags: DWORD;                                       { info about the symbols, see the SYMF defines }
 
-     MaxNameLength: DWORD;                               { maximum size of symbol name in 'Name' }
 
-     Name: packed array[0..0] of WideChar;               { symbol name (null terminated string) }
 
-   end;
 
-   {$EXTERNALSYM IMAGEHLP_SYMBOLW}
 
-   IMAGEHLP_SYMBOLW = _IMAGEHLP_SYMBOLW;
 
-   {$EXTERNALSYM TImagehlpSymbolW}
 
-   TImagehlpSymbolW = _IMAGEHLP_SYMBOLW;
 
-   { symbol data structure }
 
-   {$EXTERNALSYM PImagehlpSymbolW64}
 
-   PImagehlpSymbolW64 = ^TImagehlpSymbolW64;
 
-   {$EXTERNALSYM _IMAGEHLP_SYMBOLW64}
 
-   _IMAGEHLP_SYMBOLW64 = packed record
 
-     SizeOfStruct: DWORD;                                { set to sizeof(IMAGEHLP_SYMBOL) }
 
-     Address: TJclAddr64;                                { virtual address including dll base address }
 
-     Size: DWORD;                                        { estimated size of symbol, can be zero }
 
-     Flags: DWORD;                                       { info about the symbols, see the SYMF defines }
 
-     MaxNameLength: DWORD;                               { maximum size of symbol name in 'Name' }
 
-     Name: packed array[0..0] of WideChar;               { symbol name (null terminated string) }
 
-   end;
 
-   {$EXTERNALSYM IMAGEHLP_SYMBOLW64}
 
-   IMAGEHLP_SYMBOLW64 = _IMAGEHLP_SYMBOLW64;
 
-   {$EXTERNALSYM TImagehlpSymbolW64}
 
-   TImagehlpSymbolW64 = _IMAGEHLP_SYMBOLW64;
 
-   { module data structure }
 
-   {$EXTERNALSYM PImagehlpModuleA}
 
-   PImagehlpModuleA = ^TImagehlpModuleA;
 
-   {$EXTERNALSYM _IMAGEHLP_MODULEA}
 
-   _IMAGEHLP_MODULEA = record
 
-     SizeOfStruct: DWORD;                                { set to sizeof(IMAGEHLP_MODULE) }
 
-     BaseOfImage: DWORD;                                 { base load address of module }
 
-     ImageSize: DWORD;                                   { virtual size of the loaded module }
 
-     TimeDateStamp: DWORD;                               { date/time stamp from pe header }
 
-     CheckSum: DWORD;                                    { checksum from the pe header }
 
-     NumSyms: DWORD;                                     { number of symbols in the symbol table }
 
-     SymType: TSymType;                                  { type of symbols loaded }
 
-     ModuleName: packed array[0..31] of AnsiChar;        { module name }
 
-     ImageName: packed array[0..255] of AnsiChar;        { image name }
 
-     LoadedImageName: packed array[0..255] of AnsiChar;  { symbol file name }
 
-   end;
 
-   {$EXTERNALSYM IMAGEHLP_MODULEA}
 
-   IMAGEHLP_MODULEA = _IMAGEHLP_MODULEA;
 
-   {$EXTERNALSYM TImagehlpModuleA}
 
-   TImagehlpModuleA = _IMAGEHLP_MODULEA;
 
-   { module data structure }
 
-   {$EXTERNALSYM PImagehlpModuleA64}
 
-   PImagehlpModuleA64 = ^TImagehlpModuleA64;
 
-   {$EXTERNALSYM _IMAGEHLP_MODULEA64}
 
-   _IMAGEHLP_MODULEA64 = record
 
-     SizeOfStruct: DWORD;                                { set to sizeof(IMAGEHLP_MODULE) }
 
-     BaseOfImage: TJclAddr64;                            { base load address of module }
 
-     ImageSize: DWORD;                                   { virtual size of the loaded module }
 
-     TimeDateStamp: DWORD;                               { date/time stamp from pe header }
 
-     CheckSum: DWORD;                                    { checksum from the pe header }
 
-     NumSyms: DWORD;                                     { number of symbols in the symbol table }
 
-     SymType: TSymType;                                  { type of symbols loaded }
 
-     ModuleName: packed array[0..31] of AnsiChar;        { module name }
 
-     ImageName: packed array[0..255] of AnsiChar;        { image name }
 
-     LoadedImageName: packed array[0..255] of AnsiChar;  { symbol file name }
 
-   end;
 
-   {$EXTERNALSYM IMAGEHLP_MODULEA64}
 
-   IMAGEHLP_MODULEA64 = _IMAGEHLP_MODULEA64;
 
-   {$EXTERNALSYM TImagehlpModuleA64}
 
-   TImagehlpModuleA64 = _IMAGEHLP_MODULEA64;
 
-   { module data structure }
 
-   {$EXTERNALSYM PImagehlpModuleW}
 
-   PImagehlpModuleW = ^TImagehlpModuleW;
 
-   {$EXTERNALSYM _IMAGEHLP_MODULEW}
 
-   _IMAGEHLP_MODULEW = record
 
-     SizeOfStruct: DWORD;                                { set to sizeof(IMAGEHLP_MODULE) }
 
-     BaseOfImage: DWORD;                                 { base load address of module }
 
-     ImageSize: DWORD;                                   { virtual size of the loaded module }
 
-     TimeDateStamp: DWORD;                               { date/time stamp from pe header }
 
-     CheckSum: DWORD;                                    { checksum from the pe header }
 
-     NumSyms: DWORD;                                     { number of symbols in the symbol table }
 
-     SymType: TSymType;                                  { type of symbols loaded }
 
-     ModuleName: packed array[0..31] of WideChar;        { module name }
 
-     ImageName: packed array[0..255] of WideChar;        { image name }
 
-     LoadedImageName: packed array[0..255] of WideChar;  { symbol file name }
 
-   end;
 
-   {$EXTERNALSYM IMAGEHLP_MODULEW}
 
-   IMAGEHLP_MODULEW = _IMAGEHLP_MODULEW;
 
-   {$EXTERNALSYM TImagehlpModuleW}
 
-   TImagehlpModuleW = _IMAGEHLP_MODULEW;
 
-   { module data structure }
 
-   {$EXTERNALSYM PImagehlpModuleW64}
 
-   PImagehlpModuleW64 = ^TImagehlpModuleW64;
 
-   {$EXTERNALSYM _IMAGEHLP_MODULEW64}
 
-   _IMAGEHLP_MODULEW64 = record
 
-     SizeOfStruct: DWORD;                                { set to sizeof(IMAGEHLP_MODULE) }
 
-     BaseOfImage: TJclAddr64;                            { base load address of module }
 
-     ImageSize: DWORD;                                   { virtual size of the loaded module }
 
-     TimeDateStamp: DWORD;                               { date/time stamp from pe header }
 
-     CheckSum: DWORD;                                    { checksum from the pe header }
 
-     NumSyms: DWORD;                                     { number of symbols in the symbol table }
 
-     SymType: TSymType;                                  { type of symbols loaded }
 
-     ModuleName: packed array[0..31] of WideChar;        { module name }
 
-     ImageName: packed array[0..255] of WideChar;        { image name }
 
-     LoadedImageName: packed array[0..255] of WideChar;  { symbol file name }
 
-   end;
 
-   {$EXTERNALSYM IMAGEHLP_MODULEW64}
 
-   IMAGEHLP_MODULEW64 = _IMAGEHLP_MODULEW64;
 
-   {$EXTERNALSYM TImagehlpModuleW64}
 
-   TImagehlpModuleW64 = _IMAGEHLP_MODULEW64;
 
-   _IMAGEHLP_LINEA = packed record
 
-     SizeOfStruct: DWORD;           // set to sizeof(IMAGEHLP_LINE)
 
-     Key: Pointer;                  // internal
 
-     LineNumber: DWORD;             // line number in file
 
-     FileName: PAnsiChar;           // full filename
 
-     Address: DWORD;                // first instruction of line
 
-   end;
 
-   IMAGEHLP_LINEA = _IMAGEHLP_LINEA;
 
-   PIMAGEHLP_LINEA = ^_IMAGEHLP_LINEA;
 
-   TImageHlpLineA = _IMAGEHLP_LINEA;
 
-   PImageHlpLineA = PIMAGEHLP_LINEA;
 
-   _IMAGEHLP_LINEA64 = packed record
 
-     SizeOfStruct: DWORD;           // set to sizeof(IMAGEHLP_LINE)
 
-     Key: Pointer;                  // internal
 
-     LineNumber: DWORD;             // line number in file
 
-     FileName: PAnsiChar;           // full filename
 
-     Address: TJclAddr64;           // first instruction of line
 
-   end;
 
-   IMAGEHLP_LINEA64 = _IMAGEHLP_LINEA64;
 
-   PIMAGEHLP_LINEA64 = ^_IMAGEHLP_LINEA64;
 
-   TImageHlpLineA64 = _IMAGEHLP_LINEA64;
 
-   PImageHlpLineA64 = PIMAGEHLP_LINEA64;
 
-   _IMAGEHLP_LINEW = packed record
 
-     SizeOfStruct: DWORD;           // set to sizeof(IMAGEHLP_LINE)
 
-     Key: Pointer;                  // internal
 
-     LineNumber: DWORD;             // line number in file
 
-     FileName: PWideChar;           // full filename
 
-     Address: DWORD;                // first instruction of line
 
-   end;
 
-   IMAGEHLP_LINEW = _IMAGEHLP_LINEW;
 
-   PIMAGEHLP_LINEW = ^_IMAGEHLP_LINEW;
 
-   TImageHlpLineW = _IMAGEHLP_LINEW;
 
-   PImageHlpLineW = PIMAGEHLP_LINEW;
 
-   _IMAGEHLP_LINEW64 = packed record
 
-     SizeOfStruct: DWORD;           // set to sizeof(IMAGEHLP_LINE)
 
-     Key: Pointer;                  // internal
 
-     LineNumber: DWORD;             // line number in file
 
-     FileName: PWideChar;           // full filename
 
-     Address: TJclAddr64;           // first instruction of line
 
-   end;
 
-   IMAGEHLP_LINEW64 = _IMAGEHLP_LINEW64;
 
-   PIMAGEHLP_LINEW64 = ^_IMAGEHLP_LINEW64;
 
-   TImageHlpLineW64 = _IMAGEHLP_LINEW64;
 
-   PImageHlpLineW64 = PIMAGEHLP_LINEW64;
 
- // line 1475
 
- //
 
- // options that are set/returned by SymSetOptions() & SymGetOptions()
 
- // these are used as a mask
 
- //
 
- const
 
-   SYMOPT_CASE_INSENSITIVE       = $00000001;
 
-   {$EXTERNALSYM SYMOPT_CASE_INSENSITIVE}
 
-   SYMOPT_UNDNAME                = $00000002;
 
-   {$EXTERNALSYM SYMOPT_UNDNAME}
 
-   SYMOPT_DEFERRED_LOADS         = $00000004;
 
-   {$EXTERNALSYM SYMOPT_DEFERRED_LOADS}
 
-   SYMOPT_NO_CPP                 = $00000008;
 
-   {$EXTERNALSYM SYMOPT_NO_CPP}
 
-   SYMOPT_LOAD_LINES             = $00000010;
 
-   {$EXTERNALSYM SYMOPT_LOAD_LINES}
 
-   SYMOPT_OMAP_FIND_NEAREST      = $00000020;
 
-   {$EXTERNALSYM SYMOPT_OMAP_FIND_NEAREST}
 
-   SYMOPT_LOAD_ANYTHING          = $00000040;
 
-   {$EXTERNALSYM SYMOPT_LOAD_ANYTHING}
 
-   SYMOPT_IGNORE_CVREC           = $00000080;
 
-   {$EXTERNALSYM SYMOPT_IGNORE_CVREC}
 
-   SYMOPT_NO_UNQUALIFIED_LOADS   = $00000100;
 
-   {$EXTERNALSYM SYMOPT_NO_UNQUALIFIED_LOADS}
 
-   SYMOPT_FAIL_CRITICAL_ERRORS   = $00000200;
 
-   {$EXTERNALSYM SYMOPT_FAIL_CRITICAL_ERRORS}
 
-   SYMOPT_EXACT_SYMBOLS          = $00000400;
 
-   {$EXTERNALSYM SYMOPT_EXACT_SYMBOLS}
 
-   SYMOPT_ALLOW_ABSOLUTE_SYMBOLS = $00000800;
 
-   {$EXTERNALSYM SYMOPT_ALLOW_ABSOLUTE_SYMBOLS}
 
-   SYMOPT_IGNORE_NT_SYMPATH      = $00001000;
 
-   {$EXTERNALSYM SYMOPT_IGNORE_NT_SYMPATH}
 
-   SYMOPT_INCLUDE_32BIT_MODULES  = $00002000;
 
-   {$EXTERNALSYM SYMOPT_INCLUDE_32BIT_MODULES}
 
-   SYMOPT_PUBLICS_ONLY           = $00004000;
 
-   {$EXTERNALSYM SYMOPT_PUBLICS_ONLY}
 
-   SYMOPT_NO_PUBLICS             = $00008000;
 
-   {$EXTERNALSYM SYMOPT_NO_PUBLICS}
 
-   SYMOPT_AUTO_PUBLICS           = $00010000;
 
-   {$EXTERNALSYM SYMOPT_AUTO_PUBLICS}
 
-   SYMOPT_NO_IMAGE_SEARCH        = $00020000;
 
-   {$EXTERNALSYM SYMOPT_NO_IMAGE_SEARCH}
 
-   SYMOPT_SECURE                 = $00040000;
 
-   {$EXTERNALSYM SYMOPT_SECURE}
 
-   SYMOPT_NO_PROMPTS             = $00080000;
 
-   {$EXTERNALSYM SYMOPT_NO_PROMPTS}
 
-   SYMOPT_DEBUG                  = $80000000;
 
-   {$EXTERNALSYM SYMOPT_DEBUG}
 
- // IoAPI.h
 
- function CancelIo(hFile: THandle): BOOL; stdcall;
 
- {$EXTERNALSYM CancelIo}
 
- const
 
-   NERR_Success = 0; // Success
 
-   {$EXTERNALSYM NERR_Success}
 
- // ERROR_ equates can be intermixed with NERR_ equates.
 
- //    NERR_BASE is the base of error codes from network utilities,
 
- //      chosen to avoid conflict with system and redirector error codes.
 
- //      2100 is a value that has been assigned to us by system.
 
-   NERR_BASE = 2100;
 
-   {$EXTERNALSYM NERR_BASE}
 
- //*INTERNAL_ONLY*
 
- {**********WARNING *****************
 
-  *See the comment in lmcons.h for  *
 
-  *info on the allocation of errors *
 
-  ***********************************}
 
- {**********WARNING *****************
 
-  *The range 2750-2799 has been     *
 
-  *allocated to the IBM LAN Server  *
 
-  ***********************************}
 
- {**********WARNING *****************
 
-  *The range 2900-2999 has been     *
 
-  *reserved for Microsoft OEMs      *
 
-  ***********************************}
 
- // UNUSED BASE+0
 
- // UNUSED BASE+1
 
-   NERR_NetNotStarted = (NERR_BASE+2); // The workstation driver is not installed.
 
-   {$EXTERNALSYM NERR_NetNotStarted}
 
-   NERR_UnknownServer = (NERR_BASE+3); // The server could not be located.
 
-   {$EXTERNALSYM NERR_UnknownServer}
 
-   NERR_ShareMem      = (NERR_BASE+4); // An internal error occurred.  The network cannot access a shared memory segment.
 
-   {$EXTERNALSYM NERR_ShareMem}
 
-   NERR_NoNetworkResource = (NERR_BASE+5); // A network resource shortage occurred .
 
-   {$EXTERNALSYM NERR_NoNetworkResource}
 
-   NERR_RemoteOnly        = (NERR_BASE+6); // This operation is not supported on workstations.
 
-   {$EXTERNALSYM NERR_RemoteOnly}
 
-   NERR_DevNotRedirected  = (NERR_BASE+7); // The device is not connected.
 
-   {$EXTERNALSYM NERR_DevNotRedirected}
 
- // NERR_BASE+8 is used for ERROR_CONNECTED_OTHER_PASSWORD
 
- // NERR_BASE+9 is used for ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT
 
- // UNUSED BASE+10
 
- // UNUSED BASE+11
 
- // UNUSED BASE+12
 
- // UNUSED BASE+13
 
-   NERR_ServerNotStarted = (NERR_BASE+14); // The Server service is not started.
 
-   {$EXTERNALSYM NERR_ServerNotStarted}
 
-   NERR_ItemNotFound     = (NERR_BASE+15); // The queue is empty.
 
-   {$EXTERNALSYM NERR_ItemNotFound}
 
-   NERR_UnknownDevDir    = (NERR_BASE+16); // The device or directory does not exist.
 
-   {$EXTERNALSYM NERR_UnknownDevDir}
 
-   NERR_RedirectedPath   = (NERR_BASE+17); // The operation is invalid on a redirected resource.
 
-   {$EXTERNALSYM NERR_RedirectedPath}
 
-   NERR_DuplicateShare   = (NERR_BASE+18); // The name has already been shared.
 
-   {$EXTERNALSYM NERR_DuplicateShare}
 
-   NERR_NoRoom           = (NERR_BASE+19); // The server is currently out of the requested resource.
 
-   {$EXTERNALSYM NERR_NoRoom}
 
- // UNUSED BASE+20
 
-   NERR_TooManyItems    = (NERR_BASE+21); // Requested addition of items exceeds the maximum allowed.
 
-   {$EXTERNALSYM NERR_TooManyItems}
 
-   NERR_InvalidMaxUsers = (NERR_BASE+22); // The Peer service supports only two simultaneous users.
 
-   {$EXTERNALSYM NERR_InvalidMaxUsers}
 
-   NERR_BufTooSmall     = (NERR_BASE+23); // The API return buffer is too small.
 
-   {$EXTERNALSYM NERR_BufTooSmall}
 
- // UNUSED BASE+24
 
- // UNUSED BASE+25
 
- // UNUSED BASE+26
 
-   NERR_RemoteErr = (NERR_BASE+27); // A remote API error occurred.
 
-   {$EXTERNALSYM NERR_RemoteErr}
 
- // UNUSED BASE+28
 
- // UNUSED BASE+29
 
- // UNUSED BASE+30
 
-   NERR_LanmanIniError = (NERR_BASE+31); // An error occurred when opening or reading the configuration file.
 
-   {$EXTERNALSYM NERR_LanmanIniError}
 
- // UNUSED BASE+32
 
- // UNUSED BASE+33
 
- // UNUSED BASE+34
 
- // UNUSED BASE+35
 
-   NERR_NetworkError           = (NERR_BASE+36); // A general network error occurred.
 
-   {$EXTERNALSYM NERR_NetworkError}
 
-   NERR_WkstaInconsistentState = (NERR_BASE+37);
 
-   {$EXTERNALSYM NERR_WkstaInconsistentState}
 
-     // The Workstation service is in an inconsistent state. Restart the computer before restarting the Workstation service.
 
-   NERR_WkstaNotStarted   = (NERR_BASE+38); // The Workstation service has not been started.
 
-   {$EXTERNALSYM NERR_WkstaNotStarted}
 
-   NERR_BrowserNotStarted = (NERR_BASE+39); // The requested information is not available.
 
-   {$EXTERNALSYM NERR_BrowserNotStarted}
 
-   NERR_InternalError     = (NERR_BASE+40); // An internal Windows 2000 error occurred.
 
-   {$EXTERNALSYM NERR_InternalError}
 
-   NERR_BadTransactConfig = (NERR_BASE+41); // The server is not configured for transactions.
 
-   {$EXTERNALSYM NERR_BadTransactConfig}
 
-   NERR_InvalidAPI        = (NERR_BASE+42); // The requested API is not supported on the remote server.
 
-   {$EXTERNALSYM NERR_InvalidAPI}
 
-   NERR_BadEventName      = (NERR_BASE+43); // The event name is invalid.
 
-   {$EXTERNALSYM NERR_BadEventName}
 
-   NERR_DupNameReboot     = (NERR_BASE+44); // The computer name already exists on the network. Change it and restart the computer.
 
-   {$EXTERNALSYM NERR_DupNameReboot}
 
- //
 
- //      Config API related
 
- //              Error codes from BASE+45 to BASE+49
 
- // UNUSED BASE+45
 
-   NERR_CfgCompNotFound  = (NERR_BASE+46); // The specified component could not be found in the configuration information.
 
-   {$EXTERNALSYM NERR_CfgCompNotFound}
 
-   NERR_CfgParamNotFound = (NERR_BASE+47); // The specified parameter could not be found in the configuration information.
 
-   {$EXTERNALSYM NERR_CfgParamNotFound}
 
-   NERR_LineTooLong = (NERR_BASE+49); // A line in the configuration file is too long.
 
-   {$EXTERNALSYM NERR_LineTooLong}
 
- //
 
- //      Spooler API related
 
- //              Error codes from BASE+50 to BASE+79
 
-   NERR_QNotFound        = (NERR_BASE+50); // The printer does not exist.
 
-   {$EXTERNALSYM NERR_QNotFound}
 
-   NERR_JobNotFound      = (NERR_BASE+51); // The print job does not exist.
 
-   {$EXTERNALSYM NERR_JobNotFound}
 
-   NERR_DestNotFound     = (NERR_BASE+52); // The printer destination cannot be found.
 
-   {$EXTERNALSYM NERR_DestNotFound}
 
-   NERR_DestExists       = (NERR_BASE+53); // The printer destination already exists.
 
-   {$EXTERNALSYM NERR_DestExists}
 
-   NERR_QExists          = (NERR_BASE+54); // The printer queue already exists.
 
-   {$EXTERNALSYM NERR_QExists}
 
-   NERR_QNoRoom          = (NERR_BASE+55); // No more printers can be added.
 
-   {$EXTERNALSYM NERR_QNoRoom}
 
-   NERR_JobNoRoom        = (NERR_BASE+56); // No more print jobs can be added.
 
-   {$EXTERNALSYM NERR_JobNoRoom}
 
-   NERR_DestNoRoom       = (NERR_BASE+57); // No more printer destinations can be added.
 
-   {$EXTERNALSYM NERR_DestNoRoom}
 
-   NERR_DestIdle         = (NERR_BASE+58); // This printer destination is idle and cannot accept control operations.
 
-   {$EXTERNALSYM NERR_DestIdle}
 
-   NERR_DestInvalidOp    = (NERR_BASE+59); // This printer destination request contains an invalid control function.
 
-   {$EXTERNALSYM NERR_DestInvalidOp}
 
-   NERR_ProcNoRespond    = (NERR_BASE+60); // The print processor is not responding.
 
-   {$EXTERNALSYM NERR_ProcNoRespond}
 
-   NERR_SpoolerNotLoaded = (NERR_BASE+61); // The spooler is not running.
 
-   {$EXTERNALSYM NERR_SpoolerNotLoaded}
 
-   NERR_DestInvalidState = (NERR_BASE+62); // This operation cannot be performed on the print destination in its current state.
 
-   {$EXTERNALSYM NERR_DestInvalidState}
 
-   NERR_QInvalidState    = (NERR_BASE+63); // This operation cannot be performed on the printer queue in its current state.
 
-   {$EXTERNALSYM NERR_QInvalidState}
 
-   NERR_JobInvalidState  = (NERR_BASE+64); // This operation cannot be performed on the print job in its current state.
 
-   {$EXTERNALSYM NERR_JobInvalidState}
 
-   NERR_SpoolNoMemory    = (NERR_BASE+65); // A spooler memory allocation failure occurred.
 
-   {$EXTERNALSYM NERR_SpoolNoMemory}
 
-   NERR_DriverNotFound   = (NERR_BASE+66); // The device driver does not exist.
 
-   {$EXTERNALSYM NERR_DriverNotFound}
 
-   NERR_DataTypeInvalid  = (NERR_BASE+67); // The data type is not supported by the print processor.
 
-   {$EXTERNALSYM NERR_DataTypeInvalid}
 
-   NERR_ProcNotFound     = (NERR_BASE+68); // The print processor is not installed.
 
-   {$EXTERNALSYM NERR_ProcNotFound}
 
- //
 
- //      Service API related
 
- //              Error codes from BASE+80 to BASE+99
 
-   NERR_ServiceTableLocked  = (NERR_BASE+80); // The service database is locked.
 
-   {$EXTERNALSYM NERR_ServiceTableLocked}
 
-   NERR_ServiceTableFull    = (NERR_BASE+81); // The service table is full.
 
-   {$EXTERNALSYM NERR_ServiceTableFull}
 
-   NERR_ServiceInstalled    = (NERR_BASE+82); // The requested service has already been started.
 
-   {$EXTERNALSYM NERR_ServiceInstalled}
 
-   NERR_ServiceEntryLocked  = (NERR_BASE+83); // The service does not respond to control actions.
 
-   {$EXTERNALSYM NERR_ServiceEntryLocked}
 
-   NERR_ServiceNotInstalled = (NERR_BASE+84); // The service has not been started.
 
-   {$EXTERNALSYM NERR_ServiceNotInstalled}
 
-   NERR_BadServiceName      = (NERR_BASE+85); // The service name is invalid.
 
-   {$EXTERNALSYM NERR_BadServiceName}
 
-   NERR_ServiceCtlTimeout   = (NERR_BASE+86); // The service is not responding to the control function.
 
-   {$EXTERNALSYM NERR_ServiceCtlTimeout}
 
-   NERR_ServiceCtlBusy      = (NERR_BASE+87); // The service control is busy.
 
-   {$EXTERNALSYM NERR_ServiceCtlBusy}
 
-   NERR_BadServiceProgName  = (NERR_BASE+88); // The configuration file contains an invalid service program name.
 
-   {$EXTERNALSYM NERR_BadServiceProgName}
 
-   NERR_ServiceNotCtrl      = (NERR_BASE+89); // The service could not be controlled in its present state.
 
-   {$EXTERNALSYM NERR_ServiceNotCtrl}
 
-   NERR_ServiceKillProc     = (NERR_BASE+90); // The service ended abnormally.
 
-   {$EXTERNALSYM NERR_ServiceKillProc}
 
-   NERR_ServiceCtlNotValid  = (NERR_BASE+91); // The requested pause,continue, or stop is not valid for this service.
 
-   {$EXTERNALSYM NERR_ServiceCtlNotValid}
 
-   NERR_NotInDispatchTbl    = (NERR_BASE+92); // The service control dispatcher could not find the service name in the dispatch table.
 
-   {$EXTERNALSYM NERR_NotInDispatchTbl}
 
-   NERR_BadControlRecv      = (NERR_BASE+93); // The service control dispatcher pipe read failed.
 
-   {$EXTERNALSYM NERR_BadControlRecv}
 
-   NERR_ServiceNotStarting  = (NERR_BASE+94); // A thread for the new service could not be created.
 
-   {$EXTERNALSYM NERR_ServiceNotStarting}
 
- //
 
- //      Wksta and Logon API related
 
- //              Error codes from BASE+100 to BASE+118
 
-   NERR_AlreadyLoggedOn   = (NERR_BASE+100); // This workstation is already logged on to the local-area network.
 
-   {$EXTERNALSYM NERR_AlreadyLoggedOn}
 
-   NERR_NotLoggedOn       = (NERR_BASE+101); // The workstation is not logged on to the local-area network.
 
-   {$EXTERNALSYM NERR_NotLoggedOn}
 
-   NERR_BadUsername       = (NERR_BASE+102); // The user name or group name parameter is invalid.
 
-   {$EXTERNALSYM NERR_BadUsername}
 
-   NERR_BadPassword       = (NERR_BASE+103); // The password parameter is invalid.
 
-   {$EXTERNALSYM NERR_BadPassword}
 
-   NERR_UnableToAddName_W = (NERR_BASE+104); // @W The logon processor did not add the message alias.
 
-   {$EXTERNALSYM NERR_UnableToAddName_W}
 
-   NERR_UnableToAddName_F = (NERR_BASE+105); // The logon processor did not add the message alias.
 
-   {$EXTERNALSYM NERR_UnableToAddName_F}
 
-   NERR_UnableToDelName_W = (NERR_BASE+106); // @W The logoff processor did not delete the message alias.
 
-   {$EXTERNALSYM NERR_UnableToDelName_W}
 
-   NERR_UnableToDelName_F = (NERR_BASE+107); // The logoff processor did not delete the message alias.
 
-   {$EXTERNALSYM NERR_UnableToDelName_F}
 
- // UNUSED BASE+108
 
-   NERR_LogonsPaused        = (NERR_BASE+109); // Network logons are paused.
 
-   {$EXTERNALSYM NERR_LogonsPaused}
 
-   NERR_LogonServerConflict = (NERR_BASE+110); // A centralized logon-server conflict occurred.
 
-   {$EXTERNALSYM NERR_LogonServerConflict}
 
-   NERR_LogonNoUserPath     = (NERR_BASE+111); // The server is configured without a valid user path.
 
-   {$EXTERNALSYM NERR_LogonNoUserPath}
 
-   NERR_LogonScriptError    = (NERR_BASE+112); // An error occurred while loading or running the logon script.
 
-   {$EXTERNALSYM NERR_LogonScriptError}
 
- // UNUSED BASE+113
 
-   NERR_StandaloneLogon     = (NERR_BASE+114); // The logon server was not specified.  Your computer will be logged on as STANDALONE.
 
-   {$EXTERNALSYM NERR_StandaloneLogon}
 
-   NERR_LogonServerNotFound = (NERR_BASE+115); // The logon server could not be found.
 
-   {$EXTERNALSYM NERR_LogonServerNotFound}
 
-   NERR_LogonDomainExists   = (NERR_BASE+116); // There is already a logon domain for this computer.
 
-   {$EXTERNALSYM NERR_LogonDomainExists}
 
-   NERR_NonValidatedLogon   = (NERR_BASE+117); // The logon server could not validate the logon.
 
-   {$EXTERNALSYM NERR_NonValidatedLogon}
 
- //
 
- //      ACF API related (access, user, group)
 
- //              Error codes from BASE+119 to BASE+149
 
-   NERR_ACFNotFound          = (NERR_BASE+119); // The security database could not be found.
 
-   {$EXTERNALSYM NERR_ACFNotFound}
 
-   NERR_GroupNotFound        = (NERR_BASE+120); // The group name could not be found.
 
-   {$EXTERNALSYM NERR_GroupNotFound}
 
-   NERR_UserNotFound         = (NERR_BASE+121); // The user name could not be found.
 
-   {$EXTERNALSYM NERR_UserNotFound}
 
-   NERR_ResourceNotFound     = (NERR_BASE+122); // The resource name could not be found.
 
-   {$EXTERNALSYM NERR_ResourceNotFound}
 
-   NERR_GroupExists          = (NERR_BASE+123); // The group already exists.
 
-   {$EXTERNALSYM NERR_GroupExists}
 
-   NERR_UserExists           = (NERR_BASE+124); // The account already exists.
 
-   {$EXTERNALSYM NERR_UserExists}
 
-   NERR_ResourceExists       = (NERR_BASE+125); // The resource permission list already exists.
 
-   {$EXTERNALSYM NERR_ResourceExists}
 
-   NERR_NotPrimary           = (NERR_BASE+126); // This operation is only allowed on the primary domain controller of the domain.
 
-   {$EXTERNALSYM NERR_NotPrimary}
 
-   NERR_ACFNotLoaded         = (NERR_BASE+127); // The security database has not been started.
 
-   {$EXTERNALSYM NERR_ACFNotLoaded}
 
-   NERR_ACFNoRoom            = (NERR_BASE+128); // There are too many names in the user accounts database.
 
-   {$EXTERNALSYM NERR_ACFNoRoom}
 
-   NERR_ACFFileIOFail        = (NERR_BASE+129); // A disk I/O failure occurred.
 
-   {$EXTERNALSYM NERR_ACFFileIOFail}
 
-   NERR_ACFTooManyLists      = (NERR_BASE+130); // The limit of 64 entries per resource was exceeded.
 
-   {$EXTERNALSYM NERR_ACFTooManyLists}
 
-   NERR_UserLogon            = (NERR_BASE+131); // Deleting a user with a session is not allowed.
 
-   {$EXTERNALSYM NERR_UserLogon}
 
-   NERR_ACFNoParent          = (NERR_BASE+132); // The parent directory could not be located.
 
-   {$EXTERNALSYM NERR_ACFNoParent}
 
-   NERR_CanNotGrowSegment    = (NERR_BASE+133); // Unable to add to the security database session cache segment.
 
-   {$EXTERNALSYM NERR_CanNotGrowSegment}
 
-   NERR_SpeGroupOp           = (NERR_BASE+134); // This operation is not allowed on this special group.
 
-   {$EXTERNALSYM NERR_SpeGroupOp}
 
-   NERR_NotInCache           = (NERR_BASE+135); // This user is not cached in user accounts database session cache.
 
-   {$EXTERNALSYM NERR_NotInCache}
 
-   NERR_UserInGroup          = (NERR_BASE+136); // The user already belongs to this group.
 
-   {$EXTERNALSYM NERR_UserInGroup}
 
-   NERR_UserNotInGroup       = (NERR_BASE+137); // The user does not belong to this group.
 
-   {$EXTERNALSYM NERR_UserNotInGroup}
 
-   NERR_AccountUndefined     = (NERR_BASE+138); // This user account is undefined.
 
-   {$EXTERNALSYM NERR_AccountUndefined}
 
-   NERR_AccountExpired       = (NERR_BASE+139); // This user account has expired.
 
-   {$EXTERNALSYM NERR_AccountExpired}
 
-   NERR_InvalidWorkstation   = (NERR_BASE+140); // The user is not allowed to log on from this workstation.
 
-   {$EXTERNALSYM NERR_InvalidWorkstation}
 
-   NERR_InvalidLogonHours    = (NERR_BASE+141); // The user is not allowed to log on at this time.
 
-   {$EXTERNALSYM NERR_InvalidLogonHours}
 
-   NERR_PasswordExpired      = (NERR_BASE+142); // The password of this user has expired.
 
-   {$EXTERNALSYM NERR_PasswordExpired}
 
-   NERR_PasswordCantChange   = (NERR_BASE+143); // The password of this user cannot change.
 
-   {$EXTERNALSYM NERR_PasswordCantChange}
 
-   NERR_PasswordHistConflict = (NERR_BASE+144); // This password cannot be used now.
 
-   {$EXTERNALSYM NERR_PasswordHistConflict}
 
-   NERR_PasswordTooShort     = (NERR_BASE+145); // The password does not meet the password policy requirements. Check the minimum password length, password complexity and password history requirements.
 
-   {$EXTERNALSYM NERR_PasswordTooShort}
 
-   NERR_PasswordTooRecent    = (NERR_BASE+146); // The password of this user is too recent to change.
 
-   {$EXTERNALSYM NERR_PasswordTooRecent}
 
-   NERR_InvalidDatabase      = (NERR_BASE+147); // The security database is corrupted.
 
-   {$EXTERNALSYM NERR_InvalidDatabase}
 
-   NERR_DatabaseUpToDate     = (NERR_BASE+148); // No updates are necessary to this replicant network/local security database.
 
-   {$EXTERNALSYM NERR_DatabaseUpToDate}
 
-   NERR_SyncRequired         = (NERR_BASE+149); // This replicant database is outdated; synchronization is required.
 
-   {$EXTERNALSYM NERR_SyncRequired}
 
- //
 
- //      Use API related
 
- //              Error codes from BASE+150 to BASE+169
 
-   NERR_UseNotFound    = (NERR_BASE+150); // The network connection could not be found.
 
-   {$EXTERNALSYM NERR_UseNotFound}
 
-   NERR_BadAsgType     = (NERR_BASE+151); // This asg_type is invalid.
 
-   {$EXTERNALSYM NERR_BadAsgType}
 
-   NERR_DeviceIsShared = (NERR_BASE+152); // This device is currently being shared.
 
-   {$EXTERNALSYM NERR_DeviceIsShared}
 
- //
 
- //      Message Server related
 
- //              Error codes BASE+170 to BASE+209
 
-   NERR_NoComputerName     = (NERR_BASE+170); // The computer name could not be added as a message alias.  The name may already exist on the network.
 
-   {$EXTERNALSYM NERR_NoComputerName}
 
-   NERR_MsgAlreadyStarted  = (NERR_BASE+171); // The Messenger service is already started.
 
-   {$EXTERNALSYM NERR_MsgAlreadyStarted}
 
-   NERR_MsgInitFailed      = (NERR_BASE+172); // The Messenger service failed to start.
 
-   {$EXTERNALSYM NERR_MsgInitFailed}
 
-   NERR_NameNotFound       = (NERR_BASE+173); // The message alias could not be found on the network.
 
-   {$EXTERNALSYM NERR_NameNotFound}
 
-   NERR_AlreadyForwarded   = (NERR_BASE+174); // This message alias has already been forwarded.
 
-   {$EXTERNALSYM NERR_AlreadyForwarded}
 
-   NERR_AddForwarded       = (NERR_BASE+175); // This message alias has been added but is still forwarded.
 
-   {$EXTERNALSYM NERR_AddForwarded}
 
-   NERR_AlreadyExists      = (NERR_BASE+176); // This message alias already exists locally.
 
-   {$EXTERNALSYM NERR_AlreadyExists}
 
-   NERR_TooManyNames       = (NERR_BASE+177); // The maximum number of added message aliases has been exceeded.
 
-   {$EXTERNALSYM NERR_TooManyNames}
 
-   NERR_DelComputerName    = (NERR_BASE+178); // The computer name could not be deleted.
 
-   {$EXTERNALSYM NERR_DelComputerName}
 
-   NERR_LocalForward       = (NERR_BASE+179); // Messages cannot be forwarded back to the same workstation.
 
-   {$EXTERNALSYM NERR_LocalForward}
 
-   NERR_GrpMsgProcessor    = (NERR_BASE+180); // An error occurred in the domain message processor.
 
-   {$EXTERNALSYM NERR_GrpMsgProcessor}
 
-   NERR_PausedRemote       = (NERR_BASE+181); // The message was sent, but the recipient has paused the Messenger service.
 
-   {$EXTERNALSYM NERR_PausedRemote}
 
-   NERR_BadReceive         = (NERR_BASE+182); // The message was sent but not received.
 
-   {$EXTERNALSYM NERR_BadReceive}
 
-   NERR_NameInUse          = (NERR_BASE+183); // The message alias is currently in use. Try again later.
 
-   {$EXTERNALSYM NERR_NameInUse}
 
-   NERR_MsgNotStarted      = (NERR_BASE+184); // The Messenger service has not been started.
 
-   {$EXTERNALSYM NERR_MsgNotStarted}
 
-   NERR_NotLocalName       = (NERR_BASE+185); // The name is not on the local computer.
 
-   {$EXTERNALSYM NERR_NotLocalName}
 
-   NERR_NoForwardName      = (NERR_BASE+186); // The forwarded message alias could not be found on the network.
 
-   {$EXTERNALSYM NERR_NoForwardName}
 
-   NERR_RemoteFull         = (NERR_BASE+187); // The message alias table on the remote station is full.
 
-   {$EXTERNALSYM NERR_RemoteFull}
 
-   NERR_NameNotForwarded   = (NERR_BASE+188); // Messages for this alias are not currently being forwarded.
 
-   {$EXTERNALSYM NERR_NameNotForwarded}
 
-   NERR_TruncatedBroadcast = (NERR_BASE+189); // The broadcast message was truncated.
 
-   {$EXTERNALSYM NERR_TruncatedBroadcast}
 
-   NERR_InvalidDevice      = (NERR_BASE+194); // This is an invalid device name.
 
-   {$EXTERNALSYM NERR_InvalidDevice}
 
-   NERR_WriteFault         = (NERR_BASE+195); // A write fault occurred.
 
-   {$EXTERNALSYM NERR_WriteFault}
 
- // UNUSED BASE+196
 
-   NERR_DuplicateName = (NERR_BASE+197); // A duplicate message alias exists on the network.
 
-   {$EXTERNALSYM NERR_DuplicateName}
 
-   NERR_DeleteLater   = (NERR_BASE+198); // @W This message alias will be deleted later.
 
-   {$EXTERNALSYM NERR_DeleteLater}
 
-   NERR_IncompleteDel = (NERR_BASE+199); // The message alias was not successfully deleted from all networks.
 
-   {$EXTERNALSYM NERR_IncompleteDel}
 
-   NERR_MultipleNets  = (NERR_BASE+200); // This operation is not supported on computers with multiple networks.
 
-   {$EXTERNALSYM NERR_MultipleNets}
 
- //
 
- //      Server API related
 
- //             Error codes BASE+210 to BASE+229
 
-   NERR_NetNameNotFound        = (NERR_BASE+210); // This shared resource does not exist.
 
-   {$EXTERNALSYM NERR_NetNameNotFound}
 
-   NERR_DeviceNotShared        = (NERR_BASE+211); // This device is not shared.
 
-   {$EXTERNALSYM NERR_DeviceNotShared}
 
-   NERR_ClientNameNotFound     = (NERR_BASE+212); // A session does not exist with that computer name.
 
-   {$EXTERNALSYM NERR_ClientNameNotFound}
 
-   NERR_FileIdNotFound         = (NERR_BASE+214); // There is not an open file with that identification number.
 
-   {$EXTERNALSYM NERR_FileIdNotFound}
 
-   NERR_ExecFailure            = (NERR_BASE+215); // A failure occurred when executing a remote administration command.
 
-   {$EXTERNALSYM NERR_ExecFailure}
 
-   NERR_TmpFile                = (NERR_BASE+216); // A failure occurred when opening a remote temporary file.
 
-   {$EXTERNALSYM NERR_TmpFile}
 
-   NERR_TooMuchData            = (NERR_BASE+217); // The data returned from a remote administration command has been truncated to 64K.
 
-   {$EXTERNALSYM NERR_TooMuchData}
 
-   NERR_DeviceShareConflict    = (NERR_BASE+218); // This device cannot be shared as both a spooled and a non-spooled resource.
 
-   {$EXTERNALSYM NERR_DeviceShareConflict}
 
-   NERR_BrowserTableIncomplete = (NERR_BASE+219); // The information in the list of servers may be incorrect.
 
-   {$EXTERNALSYM NERR_BrowserTableIncomplete}
 
-   NERR_NotLocalDomain         = (NERR_BASE+220); // The computer is not active in this domain.
 
-   {$EXTERNALSYM NERR_NotLocalDomain}
 
-   NERR_IsDfsShare             = (NERR_BASE+221); // The share must be removed from the Distributed File System before it can be deleted.
 
-   {$EXTERNALSYM NERR_IsDfsShare}
 
- //
 
- //      CharDev API related
 
- //              Error codes BASE+230 to BASE+249
 
- // UNUSED BASE+230
 
-   NERR_DevInvalidOpCode  = (NERR_BASE+231); // The operation is invalid for this device.
 
-   {$EXTERNALSYM NERR_DevInvalidOpCode}
 
-   NERR_DevNotFound       = (NERR_BASE+232); // This device cannot be shared.
 
-   {$EXTERNALSYM NERR_DevNotFound}
 
-   NERR_DevNotOpen        = (NERR_BASE+233); // This device was not open.
 
-   {$EXTERNALSYM NERR_DevNotOpen}
 
-   NERR_BadQueueDevString = (NERR_BASE+234); // This device name list is invalid.
 
-   {$EXTERNALSYM NERR_BadQueueDevString}
 
-   NERR_BadQueuePriority  = (NERR_BASE+235); // The queue priority is invalid.
 
-   {$EXTERNALSYM NERR_BadQueuePriority}
 
-   NERR_NoCommDevs        = (NERR_BASE+237); // There are no shared communication devices.
 
-   {$EXTERNALSYM NERR_NoCommDevs}
 
-   NERR_QueueNotFound     = (NERR_BASE+238); // The queue you specified does not exist.
 
-   {$EXTERNALSYM NERR_QueueNotFound}
 
-   NERR_BadDevString      = (NERR_BASE+240); // This list of devices is invalid.
 
-   {$EXTERNALSYM NERR_BadDevString}
 
-   NERR_BadDev            = (NERR_BASE+241); // The requested device is invalid.
 
-   {$EXTERNALSYM NERR_BadDev}
 
-   NERR_InUseBySpooler    = (NERR_BASE+242); // This device is already in use by the spooler.
 
-   {$EXTERNALSYM NERR_InUseBySpooler}
 
-   NERR_CommDevInUse      = (NERR_BASE+243); // This device is already in use as a communication device.
 
-   {$EXTERNALSYM NERR_CommDevInUse}
 
- //
 
- //      NetICanonicalize and NetIType and NetIMakeLMFileName
 
- //      NetIListCanon and NetINameCheck
 
- //              Error codes BASE+250 to BASE+269
 
-   NERR_InvalidComputer = (NERR_BASE+251); // This computer name is invalid.
 
-   {$EXTERNALSYM NERR_InvalidComputer}
 
- // UNUSED BASE+252
 
- // UNUSED BASE+253
 
-   NERR_MaxLenExceeded = (NERR_BASE+254); // The string and prefix specified are too long.
 
-   {$EXTERNALSYM NERR_MaxLenExceeded}
 
- // UNUSED BASE+255
 
-   NERR_BadComponent = (NERR_BASE+256); // This path component is invalid.
 
-   {$EXTERNALSYM NERR_BadComponent}
 
-   NERR_CantType     = (NERR_BASE+257); // Could not determine the type of input.
 
-   {$EXTERNALSYM NERR_CantType}
 
- // UNUSED BASE+258
 
- // UNUSED BASE+259
 
-   NERR_TooManyEntries = (NERR_BASE+262); // The buffer for types is not big enough.
 
-   {$EXTERNALSYM NERR_TooManyEntries}
 
- //
 
- //      NetProfile
 
- //              Error codes BASE+270 to BASE+276
 
-   NERR_ProfileFileTooBig = (NERR_BASE+270); // Profile files cannot exceed 64K.
 
-   {$EXTERNALSYM NERR_ProfileFileTooBig}
 
-   NERR_ProfileOffset     = (NERR_BASE+271); // The start offset is out of range.
 
-   {$EXTERNALSYM NERR_ProfileOffset}
 
-   NERR_ProfileCleanup    = (NERR_BASE+272); // The system cannot delete current connections to network resources.
 
-   {$EXTERNALSYM NERR_ProfileCleanup}
 
-   NERR_ProfileUnknownCmd = (NERR_BASE+273); // The system was unable to parse the command line in this file.
 
-   {$EXTERNALSYM NERR_ProfileUnknownCmd}
 
-   NERR_ProfileLoadErr    = (NERR_BASE+274); // An error occurred while loading the profile file.
 
-   {$EXTERNALSYM NERR_ProfileLoadErr}
 
-   NERR_ProfileSaveErr    = (NERR_BASE+275); // @W Errors occurred while saving the profile file.  The profile was partially saved.
 
-   {$EXTERNALSYM NERR_ProfileSaveErr}
 
- //
 
- //      NetAudit and NetErrorLog
 
- //              Error codes BASE+277 to BASE+279
 
-   NERR_LogOverflow    = (NERR_BASE+277); // Log file %1 is full.
 
-   {$EXTERNALSYM NERR_LogOverflow}
 
-   NERR_LogFileChanged = (NERR_BASE+278); // This log file has changed between reads.
 
-   {$EXTERNALSYM NERR_LogFileChanged}
 
-   NERR_LogFileCorrupt = (NERR_BASE+279); // Log file %1 is corrupt.
 
-   {$EXTERNALSYM NERR_LogFileCorrupt}
 
- //
 
- //      NetRemote
 
- //              Error codes BASE+280 to BASE+299
 
-   NERR_SourceIsDir      = (NERR_BASE+280); // The source path cannot be a directory.
 
-   {$EXTERNALSYM NERR_SourceIsDir}
 
-   NERR_BadSource        = (NERR_BASE+281); // The source path is illegal.
 
-   {$EXTERNALSYM NERR_BadSource}
 
-   NERR_BadDest          = (NERR_BASE+282); // The destination path is illegal.
 
-   {$EXTERNALSYM NERR_BadDest}
 
-   NERR_DifferentServers = (NERR_BASE+283); // The source and destination paths are on different servers.
 
-   {$EXTERNALSYM NERR_DifferentServers}
 
- // UNUSED BASE+284
 
-   NERR_RunSrvPaused = (NERR_BASE+285); // The Run server you requested is paused.
 
-   {$EXTERNALSYM NERR_RunSrvPaused}
 
- // UNUSED BASE+286
 
- // UNUSED BASE+287
 
- // UNUSED BASE+288
 
-   NERR_ErrCommRunSrv = (NERR_BASE+289); // An error occurred when communicating with a Run server.
 
-   {$EXTERNALSYM NERR_ErrCommRunSrv}
 
- // UNUSED BASE+290
 
-   NERR_ErrorExecingGhost = (NERR_BASE+291); // An error occurred when starting a background process.
 
-   {$EXTERNALSYM NERR_ErrorExecingGhost}
 
-   NERR_ShareNotFound     = (NERR_BASE+292); // The shared resource you are connected to could not be found.
 
-   {$EXTERNALSYM NERR_ShareNotFound}
 
- // UNUSED BASE+293
 
- // UNUSED BASE+294
 
- //
 
- //  NetWksta.sys (redir) returned error codes.
 
- //
 
- //          NERR_BASE + (300-329)
 
-   NERR_InvalidLana     = (NERR_BASE+300); // The LAN adapter number is invalid.
 
-   {$EXTERNALSYM NERR_InvalidLana}
 
-   NERR_OpenFiles       = (NERR_BASE+301); // There are open files on the connection.
 
-   {$EXTERNALSYM NERR_OpenFiles}
 
-   NERR_ActiveConns     = (NERR_BASE+302); // Active connections still exist.
 
-   {$EXTERNALSYM NERR_ActiveConns}
 
-   NERR_BadPasswordCore = (NERR_BASE+303); // This share name or password is invalid.
 
-   {$EXTERNALSYM NERR_BadPasswordCore}
 
-   NERR_DevInUse        = (NERR_BASE+304); // The device is being accessed by an active process.
 
-   {$EXTERNALSYM NERR_DevInUse}
 
-   NERR_LocalDrive      = (NERR_BASE+305); // The drive letter is in use locally.
 
-   {$EXTERNALSYM NERR_LocalDrive}
 
- //
 
- //  Alert error codes.
 
- //
 
- //          NERR_BASE + (330-339)
 
-   NERR_AlertExists       = (NERR_BASE+330); // The specified client is already registered for the specified event.
 
-   {$EXTERNALSYM NERR_AlertExists}
 
-   NERR_TooManyAlerts     = (NERR_BASE+331); // The alert table is full.
 
-   {$EXTERNALSYM NERR_TooManyAlerts}
 
-   NERR_NoSuchAlert       = (NERR_BASE+332); // An invalid or nonexistent alert name was raised.
 
-   {$EXTERNALSYM NERR_NoSuchAlert}
 
-   NERR_BadRecipient      = (NERR_BASE+333); // The alert recipient is invalid.
 
-   {$EXTERNALSYM NERR_BadRecipient}
 
-   NERR_AcctLimitExceeded = (NERR_BASE+334); // A user's session with this server has been deleted
 
-   {$EXTERNALSYM NERR_AcctLimitExceeded}
 
-                                                 // because the user's logon hours are no longer valid.
 
- //
 
- //  Additional Error and Audit log codes.
 
- //
 
- //          NERR_BASE +(340-343)
 
-   NERR_InvalidLogSeek = (NERR_BASE+340); // The log file does not contain the requested record number.
 
-   {$EXTERNALSYM NERR_InvalidLogSeek}
 
- // UNUSED BASE+341
 
- // UNUSED BASE+342
 
- // UNUSED BASE+343
 
- //
 
- //  Additional UAS and NETLOGON codes
 
- //
 
- //          NERR_BASE +(350-359)
 
-   NERR_BadUasConfig       = (NERR_BASE+350); // The user accounts database is not configured correctly.
 
-   {$EXTERNALSYM NERR_BadUasConfig}
 
-   NERR_InvalidUASOp       = (NERR_BASE+351); // This operation is not permitted when the Netlogon service is running.
 
-   {$EXTERNALSYM NERR_InvalidUASOp}
 
-   NERR_LastAdmin          = (NERR_BASE+352); // This operation is not allowed on the last administrative account.
 
-   {$EXTERNALSYM NERR_LastAdmin}
 
-   NERR_DCNotFound         = (NERR_BASE+353); // Could not find domain controller for this domain.
 
-   {$EXTERNALSYM NERR_DCNotFound}
 
-   NERR_LogonTrackingError = (NERR_BASE+354); // Could not set logon information for this user.
 
-   {$EXTERNALSYM NERR_LogonTrackingError}
 
-   NERR_NetlogonNotStarted = (NERR_BASE+355); // The Netlogon service has not been started.
 
-   {$EXTERNALSYM NERR_NetlogonNotStarted}
 
-   NERR_CanNotGrowUASFile  = (NERR_BASE+356); // Unable to add to the user accounts database.
 
-   {$EXTERNALSYM NERR_CanNotGrowUASFile}
 
-   NERR_TimeDiffAtDC       = (NERR_BASE+357); // This server's clock is not synchronized with the primary domain controller's clock.
 
-   {$EXTERNALSYM NERR_TimeDiffAtDC}
 
-   NERR_PasswordMismatch   = (NERR_BASE+358); // A password mismatch has been detected.
 
-   {$EXTERNALSYM NERR_PasswordMismatch}
 
- //
 
- //  Server Integration error codes.
 
- //
 
- //          NERR_BASE +(360-369)
 
-   NERR_NoSuchServer       = (NERR_BASE+360); // The server identification does not specify a valid server.
 
-   {$EXTERNALSYM NERR_NoSuchServer}
 
-   NERR_NoSuchSession      = (NERR_BASE+361); // The session identification does not specify a valid session.
 
-   {$EXTERNALSYM NERR_NoSuchSession}
 
-   NERR_NoSuchConnection   = (NERR_BASE+362); // The connection identification does not specify a valid connection.
 
-   {$EXTERNALSYM NERR_NoSuchConnection}
 
-   NERR_TooManyServers     = (NERR_BASE+363); // There is no space for another entry in the table of available servers.
 
-   {$EXTERNALSYM NERR_TooManyServers}
 
-   NERR_TooManySessions    = (NERR_BASE+364); // The server has reached the maximum number of sessions it supports.
 
-   {$EXTERNALSYM NERR_TooManySessions}
 
-   NERR_TooManyConnections = (NERR_BASE+365); // The server has reached the maximum number of connections it supports.
 
-   {$EXTERNALSYM NERR_TooManyConnections}
 
-   NERR_TooManyFiles       = (NERR_BASE+366); // The server cannot open more files because it has reached its maximum number.
 
-   {$EXTERNALSYM NERR_TooManyFiles}
 
-   NERR_NoAlternateServers = (NERR_BASE+367); // There are no alternate servers registered on this server.
 
-   {$EXTERNALSYM NERR_NoAlternateServers}
 
- // UNUSED BASE+368
 
- // UNUSED BASE+369
 
-   NERR_TryDownLevel = (NERR_BASE+370); // Try down-level (remote admin protocol) version of API instead.
 
-   {$EXTERNALSYM NERR_TryDownLevel}
 
- //
 
- //  UPS error codes.
 
- //
 
- //          NERR_BASE + (380-384)
 
-   NERR_UPSDriverNotStarted = (NERR_BASE+380); // The UPS driver could not be accessed by the UPS service.
 
-   {$EXTERNALSYM NERR_UPSDriverNotStarted}
 
-   NERR_UPSInvalidConfig    = (NERR_BASE+381); // The UPS service is not configured correctly.
 
-   {$EXTERNALSYM NERR_UPSInvalidConfig}
 
-   NERR_UPSInvalidCommPort  = (NERR_BASE+382); // The UPS service could not access the specified Comm Port.
 
-   {$EXTERNALSYM NERR_UPSInvalidCommPort}
 
-   NERR_UPSSignalAsserted   = (NERR_BASE+383); // The UPS indicated a line fail or low battery situation. Service not started.
 
-   {$EXTERNALSYM NERR_UPSSignalAsserted}
 
-   NERR_UPSShutdownFailed   = (NERR_BASE+384); // The UPS service failed to perform a system shut down.
 
-   {$EXTERNALSYM NERR_UPSShutdownFailed}
 
- //
 
- //  Remoteboot error codes.
 
- //
 
- //           NERR_BASE + (400-419)
 
- //           Error codes 400 - 405 are used by RPLBOOT.SYS.
 
- //           Error codes 403, 407 - 416 are used by RPLLOADR.COM,
 
- //           Error code 417 is the alerter message of REMOTEBOOT (RPLSERVR.EXE).
 
- //           Error code 418 is for when REMOTEBOOT can't start
 
- //           Error code 419 is for a disallowed 2nd rpl connection
 
- //
 
-   NERR_BadDosRetCode      = (NERR_BASE+400); // The program below returned an MS-DOS error code:
 
-   {$EXTERNALSYM NERR_BadDosRetCode}
 
-   NERR_ProgNeedsExtraMem  = (NERR_BASE+401); // The program below needs more memory:
 
-   {$EXTERNALSYM NERR_ProgNeedsExtraMem}
 
-   NERR_BadDosFunction     = (NERR_BASE+402); // The program below called an unsupported MS-DOS function:
 
-   {$EXTERNALSYM NERR_BadDosFunction}
 
-   NERR_RemoteBootFailed   = (NERR_BASE+403); // The workstation failed to boot.
 
-   {$EXTERNALSYM NERR_RemoteBootFailed}
 
-   NERR_BadFileCheckSum    = (NERR_BASE+404); // The file below is corrupt.
 
-   {$EXTERNALSYM NERR_BadFileCheckSum}
 
-   NERR_NoRplBootSystem    = (NERR_BASE+405); // No loader is specified in the boot-block definition file.
 
-   {$EXTERNALSYM NERR_NoRplBootSystem}
 
-   NERR_RplLoadrNetBiosErr = (NERR_BASE+406); // NetBIOS returned an error: The NCB and SMB are dumped above.
 
-   {$EXTERNALSYM NERR_RplLoadrNetBiosErr}
 
-   NERR_RplLoadrDiskErr    = (NERR_BASE+407); // A disk I/O error occurred.
 
-   {$EXTERNALSYM NERR_RplLoadrDiskErr}
 
-   NERR_ImageParamErr      = (NERR_BASE+408); // Image parameter substitution failed.
 
-   {$EXTERNALSYM NERR_ImageParamErr}
 
-   NERR_TooManyImageParams = (NERR_BASE+409); // Too many image parameters cross disk sector boundaries.
 
-   {$EXTERNALSYM NERR_TooManyImageParams}
 
-   NERR_NonDosFloppyUsed   = (NERR_BASE+410); // The image was not generated from an MS-DOS diskette formatted with /S.
 
-   {$EXTERNALSYM NERR_NonDosFloppyUsed}
 
-   NERR_RplBootRestart     = (NERR_BASE+411); // Remote boot will be restarted later.
 
-   {$EXTERNALSYM NERR_RplBootRestart}
 
-   NERR_RplSrvrCallFailed  = (NERR_BASE+412); // The call to the Remoteboot server failed.
 
-   {$EXTERNALSYM NERR_RplSrvrCallFailed}
 
-   NERR_CantConnectRplSrvr = (NERR_BASE+413); // Cannot connect to the Remoteboot server.
 
-   {$EXTERNALSYM NERR_CantConnectRplSrvr}
 
-   NERR_CantOpenImageFile  = (NERR_BASE+414); // Cannot open image file on the Remoteboot server.
 
-   {$EXTERNALSYM NERR_CantOpenImageFile}
 
-   NERR_CallingRplSrvr     = (NERR_BASE+415); // Connecting to the Remoteboot server...
 
-   {$EXTERNALSYM NERR_CallingRplSrvr}
 
-   NERR_StartingRplBoot    = (NERR_BASE+416); // Connecting to the Remoteboot server...
 
-   {$EXTERNALSYM NERR_StartingRplBoot}
 
-   NERR_RplBootServiceTerm = (NERR_BASE+417); // Remote boot service was stopped; check the error log for the cause of the problem.
 
-   {$EXTERNALSYM NERR_RplBootServiceTerm}
 
-   NERR_RplBootStartFailed = (NERR_BASE+418); // Remote boot startup failed; check the error log for the cause of the problem.
 
-   {$EXTERNALSYM NERR_RplBootStartFailed}
 
-   NERR_RPL_CONNECTED      = (NERR_BASE+419); // A second connection to a Remoteboot resource is not allowed.
 
-   {$EXTERNALSYM NERR_RPL_CONNECTED}
 
- //
 
- //  FTADMIN API error codes
 
- //
 
- //       NERR_BASE + (425-434)
 
- //
 
- //       (Currently not used in NT)
 
- //
 
- //
 
- //  Browser service API error codes
 
- //
 
- //       NERR_BASE + (450-475)
 
- //
 
-   NERR_BrowserConfiguredToNotRun = (NERR_BASE+450); // The browser service was configured with MaintainServerList=No.
 
-   {$EXTERNALSYM NERR_BrowserConfiguredToNotRun}
 
- //
 
- //  Additional Remoteboot error codes.
 
- //
 
- //          NERR_BASE + (510-550)
 
-   NERR_RplNoAdaptersStarted      = (NERR_BASE+510); // Service failed to start since none of the network adapters started with this service.
 
-   {$EXTERNALSYM NERR_RplNoAdaptersStarted}
 
-   NERR_RplBadRegistry            = (NERR_BASE+511); // Service failed to start due to bad startup information in the registry.
 
-   {$EXTERNALSYM NERR_RplBadRegistry}
 
-   NERR_RplBadDatabase            = (NERR_BASE+512); // Service failed to start because its database is absent or corrupt.
 
-   {$EXTERNALSYM NERR_RplBadDatabase}
 
-   NERR_RplRplfilesShare          = (NERR_BASE+513); // Service failed to start because RPLFILES share is absent.
 
-   {$EXTERNALSYM NERR_RplRplfilesShare}
 
-   NERR_RplNotRplServer           = (NERR_BASE+514); // Service failed to start because RPLUSER group is absent.
 
-   {$EXTERNALSYM NERR_RplNotRplServer}
 
-   NERR_RplCannotEnum             = (NERR_BASE+515); // Cannot enumerate service records.
 
-   {$EXTERNALSYM NERR_RplCannotEnum}
 
-   NERR_RplWkstaInfoCorrupted     = (NERR_BASE+516); // Workstation record information has been corrupted.
 
-   {$EXTERNALSYM NERR_RplWkstaInfoCorrupted}
 
-   NERR_RplWkstaNotFound          = (NERR_BASE+517); // Workstation record was not found.
 
-   {$EXTERNALSYM NERR_RplWkstaNotFound}
 
-   NERR_RplWkstaNameUnavailable   = (NERR_BASE+518); // Workstation name is in use by some other workstation.
 
-   {$EXTERNALSYM NERR_RplWkstaNameUnavailable}
 
-   NERR_RplProfileInfoCorrupted   = (NERR_BASE+519); // Profile record information has been corrupted.
 
-   {$EXTERNALSYM NERR_RplProfileInfoCorrupted}
 
-   NERR_RplProfileNotFound        = (NERR_BASE+520); // Profile record was not found.
 
-   {$EXTERNALSYM NERR_RplProfileNotFound}
 
-   NERR_RplProfileNameUnavailable = (NERR_BASE+521); // Profile name is in use by some other profile.
 
-   {$EXTERNALSYM NERR_RplProfileNameUnavailable}
 
-   NERR_RplProfileNotEmpty        = (NERR_BASE+522); // There are workstations using this profile.
 
-   {$EXTERNALSYM NERR_RplProfileNotEmpty}
 
-   NERR_RplConfigInfoCorrupted    = (NERR_BASE+523); // Configuration record information has been corrupted.
 
-   {$EXTERNALSYM NERR_RplConfigInfoCorrupted}
 
-   NERR_RplConfigNotFound         = (NERR_BASE+524); // Configuration record was not found.
 
-   {$EXTERNALSYM NERR_RplConfigNotFound}
 
-   NERR_RplAdapterInfoCorrupted   = (NERR_BASE+525); // Adapter id record information has been corrupted.
 
-   {$EXTERNALSYM NERR_RplAdapterInfoCorrupted}
 
-   NERR_RplInternal               = (NERR_BASE+526); // An internal service error has occurred.
 
-   {$EXTERNALSYM NERR_RplInternal}
 
-   NERR_RplVendorInfoCorrupted    = (NERR_BASE+527); // Vendor id record information has been corrupted.
 
-   {$EXTERNALSYM NERR_RplVendorInfoCorrupted}
 
-   NERR_RplBootInfoCorrupted      = (NERR_BASE+528); // Boot block record information has been corrupted.
 
-   {$EXTERNALSYM NERR_RplBootInfoCorrupted}
 
-   NERR_RplWkstaNeedsUserAcct     = (NERR_BASE+529); // The user account for this workstation record is missing.
 
-   {$EXTERNALSYM NERR_RplWkstaNeedsUserAcct}
 
-   NERR_RplNeedsRPLUSERAcct       = (NERR_BASE+530); // The RPLUSER local group could not be found.
 
-   {$EXTERNALSYM NERR_RplNeedsRPLUSERAcct}
 
-   NERR_RplBootNotFound           = (NERR_BASE+531); // Boot block record was not found.
 
-   {$EXTERNALSYM NERR_RplBootNotFound}
 
-   NERR_RplIncompatibleProfile    = (NERR_BASE+532); // Chosen profile is incompatible with this workstation.
 
-   {$EXTERNALSYM NERR_RplIncompatibleProfile}
 
-   NERR_RplAdapterNameUnavailable = (NERR_BASE+533); // Chosen network adapter id is in use by some other workstation.
 
-   {$EXTERNALSYM NERR_RplAdapterNameUnavailable}
 
-   NERR_RplConfigNotEmpty         = (NERR_BASE+534); // There are profiles using this configuration.
 
-   {$EXTERNALSYM NERR_RplConfigNotEmpty}
 
-   NERR_RplBootInUse              = (NERR_BASE+535); // There are workstations, profiles or configurations using this boot block.
 
-   {$EXTERNALSYM NERR_RplBootInUse}
 
-   NERR_RplBackupDatabase         = (NERR_BASE+536); // Service failed to backup Remoteboot database.
 
-   {$EXTERNALSYM NERR_RplBackupDatabase}
 
-   NERR_RplAdapterNotFound        = (NERR_BASE+537); // Adapter record was not found.
 
-   {$EXTERNALSYM NERR_RplAdapterNotFound}
 
-   NERR_RplVendorNotFound         = (NERR_BASE+538); // Vendor record was not found.
 
-   {$EXTERNALSYM NERR_RplVendorNotFound}
 
-   NERR_RplVendorNameUnavailable  = (NERR_BASE+539); // Vendor name is in use by some other vendor record.
 
-   {$EXTERNALSYM NERR_RplVendorNameUnavailable}
 
-   NERR_RplBootNameUnavailable    = (NERR_BASE+540); // (boot name, vendor id) is in use by some other boot block record.
 
-   {$EXTERNALSYM NERR_RplBootNameUnavailable}
 
-   NERR_RplConfigNameUnavailable  = (NERR_BASE+541); // Configuration name is in use by some other configuration.
 
-   {$EXTERNALSYM NERR_RplConfigNameUnavailable}
 
- //*INTERNAL_ONLY*
 
- //
 
- //  Dfs API error codes.
 
- //
 
- //          NERR_BASE + (560-590)
 
-   NERR_DfsInternalCorruption        = (NERR_BASE+560); // The internal database maintained by the DFS service is corrupt
 
-   {$EXTERNALSYM NERR_DfsInternalCorruption}
 
-   NERR_DfsVolumeDataCorrupt         = (NERR_BASE+561); // One of the records in the internal DFS database is corrupt
 
-   {$EXTERNALSYM NERR_DfsVolumeDataCorrupt}
 
-   NERR_DfsNoSuchVolume              = (NERR_BASE+562); // There is no DFS name whose entry path matches the input Entry Path
 
-   {$EXTERNALSYM NERR_DfsNoSuchVolume}
 
-   NERR_DfsVolumeAlreadyExists       = (NERR_BASE+563); // A root or link with the given name already exists
 
-   {$EXTERNALSYM NERR_DfsVolumeAlreadyExists}
 
-   NERR_DfsAlreadyShared             = (NERR_BASE+564); // The server share specified is already shared in the DFS
 
-   {$EXTERNALSYM NERR_DfsAlreadyShared}
 
-   NERR_DfsNoSuchShare               = (NERR_BASE+565); // The indicated server share does not support the indicated DFS namespace
 
-   {$EXTERNALSYM NERR_DfsNoSuchShare}
 
-   NERR_DfsNotALeafVolume            = (NERR_BASE+566); // The operation is not valid on this portion of the namespace
 
-   {$EXTERNALSYM NERR_DfsNotALeafVolume}
 
-   NERR_DfsLeafVolume                = (NERR_BASE+567); // The operation is not valid on this portion of the namespace
 
-   {$EXTERNALSYM NERR_DfsLeafVolume}
 
-   NERR_DfsVolumeHasMultipleServers  = (NERR_BASE+568); // The operation is ambiguous because the link has multiple servers
 
-   {$EXTERNALSYM NERR_DfsVolumeHasMultipleServers}
 
-   NERR_DfsCantCreateJunctionPoint   = (NERR_BASE+569); // Unable to create a link
 
-   {$EXTERNALSYM NERR_DfsCantCreateJunctionPoint}
 
-   NERR_DfsServerNotDfsAware         = (NERR_BASE+570); // The server is not DFS Aware
 
-   {$EXTERNALSYM NERR_DfsServerNotDfsAware}
 
-   NERR_DfsBadRenamePath             = (NERR_BASE+571); // The specified rename target path is invalid
 
-   {$EXTERNALSYM NERR_DfsBadRenamePath}
 
-   NERR_DfsVolumeIsOffline           = (NERR_BASE+572); // The specified DFS link is offline
 
-   {$EXTERNALSYM NERR_DfsVolumeIsOffline}
 
-   NERR_DfsNoSuchServer              = (NERR_BASE+573); // The specified server is not a server for this link
 
-   {$EXTERNALSYM NERR_DfsNoSuchServer}
 
-   NERR_DfsCyclicalName              = (NERR_BASE+574); // A cycle in the DFS name was detected
 
-   {$EXTERNALSYM NERR_DfsCyclicalName}
 
-   NERR_DfsNotSupportedInServerDfs   = (NERR_BASE+575); // The operation is not supported on a server-based DFS
 
-   {$EXTERNALSYM NERR_DfsNotSupportedInServerDfs}
 
-   NERR_DfsDuplicateService          = (NERR_BASE+576); // This link is already supported by the specified server-share
 
-   {$EXTERNALSYM NERR_DfsDuplicateService}
 
-   NERR_DfsCantRemoveLastServerShare = (NERR_BASE+577); // Can't remove the last server-share supporting this root or link
 
-   {$EXTERNALSYM NERR_DfsCantRemoveLastServerShare}
 
-   NERR_DfsVolumeIsInterDfs          = (NERR_BASE+578); // The operation is not supported for an Inter-DFS link
 
-   {$EXTERNALSYM NERR_DfsVolumeIsInterDfs}
 
-   NERR_DfsInconsistent              = (NERR_BASE+579); // The internal state of the DFS Service has become inconsistent
 
-   {$EXTERNALSYM NERR_DfsInconsistent}
 
-   NERR_DfsServerUpgraded            = (NERR_BASE+580); // The DFS Service has been installed on the specified server
 
-   {$EXTERNALSYM NERR_DfsServerUpgraded}
 
-   NERR_DfsDataIsIdentical           = (NERR_BASE+581); // The DFS data being reconciled is identical
 
-   {$EXTERNALSYM NERR_DfsDataIsIdentical}
 
-   NERR_DfsCantRemoveDfsRoot         = (NERR_BASE+582); // The DFS root cannot be deleted - Uninstall DFS if required
 
-   {$EXTERNALSYM NERR_DfsCantRemoveDfsRoot}
 
-   NERR_DfsChildOrParentInDfs        = (NERR_BASE+583); // A child or parent directory of the share is already in a DFS
 
-   {$EXTERNALSYM NERR_DfsChildOrParentInDfs}
 
-   NERR_DfsInternalError             = (NERR_BASE+590); // DFS internal error
 
-   {$EXTERNALSYM NERR_DfsInternalError}
 
- //
 
- //  Net setup error codes.
 
- //
 
- //          NERR_BASE + (591-600)
 
-   NERR_SetupAlreadyJoined           = (NERR_BASE+591); // This machine is already joined to a domain.
 
-   {$EXTERNALSYM NERR_SetupAlreadyJoined}
 
-   NERR_SetupNotJoined               = (NERR_BASE+592); // This machine is not currently joined to a domain.
 
-   {$EXTERNALSYM NERR_SetupNotJoined}
 
-   NERR_SetupDomainController        = (NERR_BASE+593); // This machine is a domain controller and cannot be unjoined from a domain.
 
-   {$EXTERNALSYM NERR_SetupDomainController}
 
-   NERR_DefaultJoinRequired          = (NERR_BASE+594); // The destination domain controller does not support creating machine accounts in OUs.
 
-   {$EXTERNALSYM NERR_DefaultJoinRequired}
 
-   NERR_InvalidWorkgroupName         = (NERR_BASE+595); // The specified workgroup name is invalid.
 
-   {$EXTERNALSYM NERR_InvalidWorkgroupName}
 
-   NERR_NameUsesIncompatibleCodePage = (NERR_BASE+596); // The specified computer name is incompatible with the default language used on the domain controller.
 
-   {$EXTERNALSYM NERR_NameUsesIncompatibleCodePage}
 
-   NERR_ComputerAccountNotFound      = (NERR_BASE+597); // The specified computer account could not be found.
 
-   {$EXTERNALSYM NERR_ComputerAccountNotFound}
 
-   NERR_PersonalSku                  = (NERR_BASE+598); // This version of Windows cannot be joined to a domain.
 
-   {$EXTERNALSYM NERR_PersonalSku}
 
- //
 
- //  Some Password and account error results
 
- //
 
- //          NERR_BASE + (601 - 608)
 
- //
 
-   NERR_PasswordMustChange           = (NERR_BASE + 601);   // Password must change at next logon
 
-   {$EXTERNALSYM NERR_PasswordMustChange}
 
-   NERR_AccountLockedOut             = (NERR_BASE + 602);   // Account is locked out
 
-   {$EXTERNALSYM NERR_AccountLockedOut}
 
-   NERR_PasswordTooLong              = (NERR_BASE + 603);   // Password is too long
 
-   {$EXTERNALSYM NERR_PasswordTooLong}
 
-   NERR_PasswordNotComplexEnough     = (NERR_BASE + 604);   // Password doesn't meet the complexity policy
 
-   {$EXTERNALSYM NERR_PasswordNotComplexEnough}
 
-   NERR_PasswordFilterError          = (NERR_BASE + 605);   // Password doesn't meet the requirements of the filter dll's
 
-   {$EXTERNALSYM NERR_PasswordFilterError}
 
- //**********WARNING ****************
 
- //The range 2750-2799 has been     *
 
- //allocated to the IBM LAN Server  *
 
- //*********************************
 
- //**********WARNING ****************
 
- //The range 2900-2999 has been     *
 
- //reserved for Microsoft OEMs      *
 
- //*********************************
 
- //*END_INTERNAL*
 
-   MAX_NERR = (NERR_BASE+899); // This is the last error in NERR range.
 
-   {$EXTERNALSYM MAX_NERR}
 
- //
 
- // end of list
 
- //
 
- //    WARNING:  Do not exceed MAX_NERR; values above this are used by
 
- //              other error code ranges (errlog.h, service.h, apperr.h).
 
- // JwaLmCons, complete
 
- // LAN Manager common definitions
 
- const
 
-   NetApi32 = 'netapi32.dll';
 
- //
 
- // NOTE:  Lengths of strings are given as the maximum lengths of the
 
- // string in characters (not bytes).  This does not include space for the
 
- // terminating 0-characters.  When allocating space for such an item,
 
- // use the form:
 
- //
 
- //     TCHAR username[UNLEN+1];
 
- //
 
- // Definitions of the form LN20_* define those values in effect for
 
- // LanMan 2.0.
 
- //
 
- //
 
- // String Lengths for various LanMan names
 
- //
 
- const
 
-   CNLEN      = 15; // Computer name length
 
-   {$EXTERNALSYM CNLEN}
 
-   LM20_CNLEN = 15; // LM 2.0 Computer name length
 
-   {$EXTERNALSYM LM20_CNLEN}
 
-   DNLEN      = CNLEN; // Maximum domain name length
 
-   {$EXTERNALSYM DNLEN}
 
-   LM20_DNLEN = LM20_CNLEN; // LM 2.0 Maximum domain name length
 
-   {$EXTERNALSYM LM20_DNLEN}
 
- //#if (CNLEN != DNLEN)
 
- //#error CNLEN and DNLEN are not equal
 
- //#endif
 
-   UNCLEN      = (CNLEN+2); // UNC computer name length
 
-   {$EXTERNALSYM UNCLEN}
 
-   LM20_UNCLEN = (LM20_CNLEN+2); // LM 2.0 UNC computer name length
 
-   {$EXTERNALSYM LM20_UNCLEN}
 
-   NNLEN      = 80; // Net name length (share name)
 
-   {$EXTERNALSYM NNLEN}
 
-   LM20_NNLEN = 12; // LM 2.0 Net name length
 
-   {$EXTERNALSYM LM20_NNLEN}
 
-   RMLEN      = (UNCLEN+1+NNLEN); // Max remote name length
 
-   {$EXTERNALSYM RMLEN}
 
-   LM20_RMLEN = (LM20_UNCLEN+1+LM20_NNLEN); // LM 2.0 Max remote name length
 
-   {$EXTERNALSYM LM20_RMLEN}
 
-   SNLEN        = 80; // Service name length
 
-   {$EXTERNALSYM SNLEN}
 
-   LM20_SNLEN   = 15; // LM 2.0 Service name length
 
-   {$EXTERNALSYM LM20_SNLEN}
 
-   STXTLEN      = 256; // Service text length
 
-   {$EXTERNALSYM STXTLEN}
 
-   LM20_STXTLEN = 63; // LM 2.0 Service text length
 
-   {$EXTERNALSYM LM20_STXTLEN}
 
-   PATHLEN      = 256; // Max. path (not including drive name)
 
-   {$EXTERNALSYM PATHLEN}
 
-   LM20_PATHLEN = 256; // LM 2.0 Max. path
 
-   {$EXTERNALSYM LM20_PATHLEN}
 
-   DEVLEN      = 80; // Device name length
 
-   {$EXTERNALSYM DEVLEN}
 
-   LM20_DEVLEN = 8; // LM 2.0 Device name length
 
-   {$EXTERNALSYM LM20_DEVLEN}
 
-   EVLEN = 16; // Event name length
 
-   {$EXTERNALSYM EVLEN}
 
- //
 
- // User, Group and Password lengths
 
- //
 
-   UNLEN      = 256; // Maximum user name length
 
-   {$EXTERNALSYM UNLEN}
 
-   LM20_UNLEN = 20; // LM 2.0 Maximum user name length
 
-   {$EXTERNALSYM LM20_UNLEN}
 
-   GNLEN      = UNLEN; // Group name
 
-   {$EXTERNALSYM GNLEN}
 
-   LM20_GNLEN = LM20_UNLEN; // LM 2.0 Group name
 
-   {$EXTERNALSYM LM20_GNLEN}
 
-   PWLEN      = 256; // Maximum password length
 
-   {$EXTERNALSYM PWLEN}
 
-   LM20_PWLEN = 14; // LM 2.0 Maximum password length
 
-   {$EXTERNALSYM LM20_PWLEN}
 
-   SHPWLEN = 8; // Share password length (bytes)
 
-   {$EXTERNALSYM SHPWLEN}
 
-   CLTYPE_LEN = 12; // Length of client type string
 
-   {$EXTERNALSYM CLTYPE_LEN}
 
-   MAXCOMMENTSZ      = 256; // Multipurpose comment length
 
-   {$EXTERNALSYM MAXCOMMENTSZ}
 
-   LM20_MAXCOMMENTSZ = 48; // LM 2.0 Multipurpose comment length
 
-   {$EXTERNALSYM LM20_MAXCOMMENTSZ}
 
-   QNLEN      = NNLEN; // Queue name maximum length
 
-   {$EXTERNALSYM QNLEN}
 
-   LM20_QNLEN = LM20_NNLEN; // LM 2.0 Queue name maximum length
 
-   {$EXTERNALSYM LM20_QNLEN}
 
- //#if (QNLEN != NNLEN)
 
- //# error QNLEN and NNLEN are not equal
 
- //#endif
 
- //
 
- // The ALERTSZ and MAXDEVENTRIES defines have not yet been NT'ized.
 
- // Whoever ports these components should change these values appropriately.
 
- //
 
-   ALERTSZ       = 128; // size of alert string in server
 
-   {$EXTERNALSYM ALERTSZ}
 
-   MAXDEVENTRIES = (SizeOf(Integer)*8); // Max number of device entries
 
-   {$EXTERNALSYM MAXDEVENTRIES}
 
-                                         //
 
-                                         // We use int bitmap to represent
 
-                                         //
 
-   NETBIOS_NAME_LEN = 16; // NetBIOS net name (bytes)
 
-   {$EXTERNALSYM NETBIOS_NAME_LEN}
 
- //
 
- // Value to be used with APIs which have a "preferred maximum length"
 
- // parameter.  This value indicates that the API should just allocate
 
- // "as much as it takes."
 
- //
 
-   MAX_PREFERRED_LENGTH = DWORD(-1);
 
-   {$EXTERNALSYM MAX_PREFERRED_LENGTH}
 
- //
 
- //        Constants used with encryption
 
- //
 
-   CRYPT_KEY_LEN      = 7;
 
-   {$EXTERNALSYM CRYPT_KEY_LEN}
 
-   CRYPT_TXT_LEN      = 8;
 
-   {$EXTERNALSYM CRYPT_TXT_LEN}
 
-   ENCRYPTED_PWLEN    = 16;
 
-   {$EXTERNALSYM ENCRYPTED_PWLEN}
 
-   SESSION_PWLEN      = 24;
 
-   {$EXTERNALSYM SESSION_PWLEN}
 
-   SESSION_CRYPT_KLEN = 21;
 
-   {$EXTERNALSYM SESSION_CRYPT_KLEN}
 
- //
 
- //  Value to be used with SetInfo calls to allow setting of all
 
- //  settable parameters (parmnum zero option)
 
- //
 
-   PARMNUM_ALL = 0;
 
-   {$EXTERNALSYM PARMNUM_ALL}
 
-   PARM_ERROR_UNKNOWN     = DWORD(-1);
 
-   {$EXTERNALSYM PARM_ERROR_UNKNOWN}
 
-   PARM_ERROR_NONE        = 0;
 
-   {$EXTERNALSYM PARM_ERROR_NONE}
 
-   PARMNUM_BASE_INFOLEVEL = 1000;
 
-   {$EXTERNALSYM PARMNUM_BASE_INFOLEVEL}
 
- //
 
- // Only the UNICODE version of the LM APIs are available on NT.
 
- // Non-UNICODE version on other platforms
 
- //
 
- //#if defined( _WIN32_WINNT ) || defined( WINNT ) || defined( FORCE_UNICODE )
 
- {$IFDEF _WIN32_WINNT}
 
- {$DEFINE LM_USE_UNICODE}
 
- {$ENDIF}
 
- {$IFDEF FORCE_UNICODE}
 
- {$DEFINE LM_USE_UNICODE}
 
- {$ENDIF}
 
- {$IFDEF LM_USE_UNICODE}
 
- type
 
-   LMSTR = LPWSTR;
 
-   {$EXTERNALSYM LMSTR}
 
-   LMCSTR = LPCWSTR;
 
-   {$EXTERNALSYM LMCSTR}
 
-   PLMSTR = ^LMSTR;
 
-   {$NODEFINE PLMSTR}
 
- {$ELSE ~LM_USE_UNICODE}
 
- type
 
-   LMSTR = LPSTR;
 
-   {$EXTERNALSYM LMSTR}
 
-   LMCSTR = LPCSTR;
 
-   {$EXTERNALSYM LMCSTR}
 
- {$ENDIF ~LM_USE_UNICODE}
 
- //
 
- //        Message File Names
 
- //
 
- const
 
-   MESSAGE_FILENAME  = 'NETMSG';
 
-   {$EXTERNALSYM MESSAGE_FILENAME}
 
-   OS2MSG_FILENAME   = 'BASE';
 
-   {$EXTERNALSYM OS2MSG_FILENAME}
 
-   HELP_MSG_FILENAME = 'NETH';
 
-   {$EXTERNALSYM HELP_MSG_FILENAME}
 
- // ** INTERNAL_ONLY **
 
- // The backup message file named here is a duplicate of net.msg. It
 
- // is not shipped with the product, but is used at buildtime to
 
- // msgbind certain messages to netapi.dll and some of the services.
 
- // This allows for OEMs to modify the message text in net.msg and
 
- // have those changes show up.        Only in case there is an error in
 
- // retrieving the messages from net.msg do we then get the bound
 
- // messages out of bak.msg (really out of the message segment).
 
-   BACKUP_MSG_FILENAME = 'BAK.MSG';
 
-   {$EXTERNALSYM BACKUP_MSG_FILENAME}
 
- // ** END_INTERNAL **
 
- //
 
- // Keywords used in Function Prototypes
 
- //
 
- type
 
-   NET_API_STATUS = DWORD;
 
-   {$EXTERNALSYM NET_API_STATUS}
 
-   TNetApiStatus = NET_API_STATUS;
 
- //
 
- // The platform ID indicates the levels to use for platform-specific
 
- // information.
 
- //
 
- const
 
-   PLATFORM_ID_DOS = 300;
 
-   {$EXTERNALSYM PLATFORM_ID_DOS}
 
-   PLATFORM_ID_OS2 = 400;
 
-   {$EXTERNALSYM PLATFORM_ID_OS2}
 
-   PLATFORM_ID_NT  = 500;
 
-   {$EXTERNALSYM PLATFORM_ID_NT}
 
-   PLATFORM_ID_OSF = 600;
 
-   {$EXTERNALSYM PLATFORM_ID_OSF}
 
-   PLATFORM_ID_VMS = 700;
 
-   {$EXTERNALSYM PLATFORM_ID_VMS}
 
- //
 
- //      There message numbers assigned to different LANMAN components
 
- //      are as defined below.
 
- //
 
- //      lmerr.h:        2100 - 2999     NERR_BASE
 
- //      alertmsg.h:     3000 - 3049     ALERT_BASE
 
- //      lmsvc.h:        3050 - 3099     SERVICE_BASE
 
- //      lmerrlog.h:     3100 - 3299     ERRLOG_BASE
 
- //      msgtext.h:      3300 - 3499     MTXT_BASE
 
- //      apperr.h:       3500 - 3999     APPERR_BASE
 
- //      apperrfs.h:     4000 - 4299     APPERRFS_BASE
 
- //      apperr2.h:      4300 - 5299     APPERR2_BASE
 
- //      ncberr.h:       5300 - 5499     NRCERR_BASE
 
- //      alertmsg.h:     5500 - 5599     ALERT2_BASE
 
- //      lmsvc.h:        5600 - 5699     SERVICE2_BASE
 
- //      lmerrlog.h      5700 - 5899     ERRLOG2_BASE
 
- //
 
-   MIN_LANMAN_MESSAGE_ID = NERR_BASE;
 
-   {$EXTERNALSYM MIN_LANMAN_MESSAGE_ID}
 
-   MAX_LANMAN_MESSAGE_ID = 5899;
 
-   {$EXTERNALSYM MAX_LANMAN_MESSAGE_ID}
 
- // line 59
 
- //
 
- // Function Prototypes - User
 
- //
 
- function NetUserAdd(servername: LPCWSTR; level: DWORD; buf: PByte; parm_err: LPDWORD): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetUserAdd}
 
- function NetUserEnum(servername: LPCWSTR; level, filter: DWORD; var bufptr: PByte; prefmaxlen: DWORD; entriesread, totalentries, resume_handle: LPDWORD): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetUserEnum}
 
- function NetUserGetInfo(servername, username: LPCWSTR; level: DWORD; var bufptr: PByte): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetUserGetInfo}
 
- function NetUserSetInfo(servername, username: LPCWSTR; level: DWORD; buf: PByte; parm_err: LPDWORD): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetUserSetInfo}
 
- function NetUserDel(servername: LPCWSTR; username: LPCWSTR): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetUserDel}
 
- function NetUserGetGroups(servername, username: LPCWSTR; level: DWORD; var bufptr: PByte; prefmaxlen: DWORD; entriesread, totalentries: LPDWORD): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetUserGetGroups}
 
- function NetUserSetGroups(servername, username: LPCWSTR; level: DWORD; buf: PByte; num_entries: DWORD): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetUserSetGroups}
 
- function NetUserGetLocalGroups(servername, username: LPCWSTR; level, flags: DWORD; var bufptr: PByte; prefmaxlen: DWORD; entriesread, totalentries: LPDWORD): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetUserGetLocalGroups}
 
- function NetUserModalsGet(servername: LPCWSTR; level: DWORD; var bufptr: PByte): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetUserModalsGet}
 
- function NetUserModalsSet(servername: LPCWSTR; level: DWORD; buf: PByte; parm_err: LPDWORD): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetUserModalsSet}
 
- function NetUserChangePassword(domainname, username, oldpassword, newpassword: LPCWSTR): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetUserChangePassword}
 
- //
 
- //  Data Structures - User
 
- //
 
- type
 
-   {$IFNDEF FPC}
 
-   LPUSER_INFO_0 = ^USER_INFO_0;
 
-   {$EXTERNALSYM LPUSER_INFO_0}
 
-   PUSER_INFO_0 = ^USER_INFO_0;
 
-   {$EXTERNALSYM PUSER_INFO_0}
 
-   _USER_INFO_0 = record
 
-     usri0_name: LPWSTR;
 
-   end;
 
-   {$EXTERNALSYM _USER_INFO_0}
 
-   USER_INFO_0 = _USER_INFO_0;
 
-   {$EXTERNALSYM USER_INFO_0}
 
-   TUserInfo0 = USER_INFO_0;
 
-   PUserInfo0 = PUSER_INFO_0;
 
-   {$ENDIF ~FPC}
 
-   LPUSER_INFO_1 = ^USER_INFO_1;
 
-   {$EXTERNALSYM LPUSER_INFO_1}
 
-   PUSER_INFO_1 = ^USER_INFO_1;
 
-   {$EXTERNALSYM PUSER_INFO_1}
 
-   _USER_INFO_1 = record
 
-     usri1_name: LPWSTR;
 
-     usri1_password: LPWSTR;
 
-     usri1_password_age: DWORD;
 
-     usri1_priv: DWORD;
 
-     usri1_home_dir: LPWSTR;
 
-     usri1_comment: LPWSTR;
 
-     usri1_flags: DWORD;
 
-     usri1_script_path: LPWSTR;
 
-   end;
 
-   {$EXTERNALSYM _USER_INFO_1}
 
-   USER_INFO_1 = _USER_INFO_1;
 
-   {$EXTERNALSYM USER_INFO_1}
 
-   TUserInfo1 = USER_INFO_1;
 
-   PUserInfo1 = PUSER_INFO_1;
 
-   {$IFNDEF FPC}
 
-   LPUSER_INFO_2 = ^USER_INFO_2;
 
-   {$EXTERNALSYM LPUSER_INFO_2}
 
-   PUSER_INFO_2 = ^USER_INFO_2;
 
-   {$EXTERNALSYM PUSER_INFO_2}
 
-   _USER_INFO_2 = record
 
-     usri2_name: LPWSTR;
 
-     usri2_password: LPWSTR;
 
-     usri2_password_age: DWORD;
 
-     usri2_priv: DWORD;
 
-     usri2_home_dir: LPWSTR;
 
-     usri2_comment: LPWSTR;
 
-     usri2_flags: DWORD;
 
-     usri2_script_path: LPWSTR;
 
-     usri2_auth_flags: DWORD;
 
-     usri2_full_name: LPWSTR;
 
-     usri2_usr_comment: LPWSTR;
 
-     usri2_parms: LPWSTR;
 
-     usri2_workstations: LPWSTR;
 
-     usri2_last_logon: DWORD;
 
-     usri2_last_logoff: DWORD;
 
-     usri2_acct_expires: DWORD;
 
-     usri2_max_storage: DWORD;
 
-     usri2_units_per_week: DWORD;
 
-     usri2_logon_hours: PBYTE;
 
-     usri2_bad_pw_count: DWORD;
 
-     usri2_num_logons: DWORD;
 
-     usri2_logon_server: LPWSTR;
 
-     usri2_country_code: DWORD;
 
-     usri2_code_page: DWORD;
 
-   end;
 
-   {$EXTERNALSYM _USER_INFO_2}
 
-   USER_INFO_2 = _USER_INFO_2;
 
-   {$EXTERNALSYM USER_INFO_2}
 
-   TUserInfo2 = USER_INFO_2;
 
-   PUserInfo2 = puser_info_2;
 
-   {$ENDIF ~FPC}
 
- // line 799
 
- //
 
- // Special Values and Constants - User
 
- //
 
- //
 
- //  Bit masks for field usriX_flags of USER_INFO_X (X = 0/1).
 
- //
 
- const
 
-   UF_SCRIPT                          = $0001;
 
-   {$EXTERNALSYM UF_SCRIPT}
 
-   UF_ACCOUNTDISABLE                  = $0002;
 
-   {$EXTERNALSYM UF_ACCOUNTDISABLE}
 
-   UF_HOMEDIR_REQUIRED                = $0008;
 
-   {$EXTERNALSYM UF_HOMEDIR_REQUIRED}
 
-   UF_LOCKOUT                         = $0010;
 
-   {$EXTERNALSYM UF_LOCKOUT}
 
-   UF_PASSWD_NOTREQD                  = $0020;
 
-   {$EXTERNALSYM UF_PASSWD_NOTREQD}
 
-   UF_PASSWD_CANT_CHANGE              = $0040;
 
-   {$EXTERNALSYM UF_PASSWD_CANT_CHANGE}
 
-   UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED = $0080;
 
-   {$EXTERNALSYM UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED}
 
- //
 
- // Account type bits as part of usri_flags.
 
- //
 
-   UF_TEMP_DUPLICATE_ACCOUNT    = $0100;
 
-   {$EXTERNALSYM UF_TEMP_DUPLICATE_ACCOUNT}
 
-   UF_NORMAL_ACCOUNT            = $0200;
 
-   {$EXTERNALSYM UF_NORMAL_ACCOUNT}
 
-   UF_INTERDOMAIN_TRUST_ACCOUNT = $0800;
 
-   {$EXTERNALSYM UF_INTERDOMAIN_TRUST_ACCOUNT}
 
-   UF_WORKSTATION_TRUST_ACCOUNT = $1000;
 
-   {$EXTERNALSYM UF_WORKSTATION_TRUST_ACCOUNT}
 
-   UF_SERVER_TRUST_ACCOUNT      = $2000;
 
-   {$EXTERNALSYM UF_SERVER_TRUST_ACCOUNT}
 
-   UF_MACHINE_ACCOUNT_MASK = UF_INTERDOMAIN_TRUST_ACCOUNT or UF_WORKSTATION_TRUST_ACCOUNT or UF_SERVER_TRUST_ACCOUNT;
 
-   {$EXTERNALSYM UF_MACHINE_ACCOUNT_MASK}
 
-   UF_ACCOUNT_TYPE_MASK = UF_TEMP_DUPLICATE_ACCOUNT or UF_NORMAL_ACCOUNT or
 
-     UF_INTERDOMAIN_TRUST_ACCOUNT or UF_WORKSTATION_TRUST_ACCOUNT or UF_SERVER_TRUST_ACCOUNT;
 
-   {$EXTERNALSYM UF_ACCOUNT_TYPE_MASK}
 
-   UF_DONT_EXPIRE_PASSWD                     = $10000;
 
-   {$EXTERNALSYM UF_DONT_EXPIRE_PASSWD}
 
-   UF_MNS_LOGON_ACCOUNT                      = $20000;
 
-   {$EXTERNALSYM UF_MNS_LOGON_ACCOUNT}
 
-   UF_SMARTCARD_REQUIRED                     = $40000;
 
-   {$EXTERNALSYM UF_SMARTCARD_REQUIRED}
 
-   UF_TRUSTED_FOR_DELEGATION                 = $80000;
 
-   {$EXTERNALSYM UF_TRUSTED_FOR_DELEGATION}
 
-   UF_NOT_DELEGATED                          = $100000;
 
-   {$EXTERNALSYM UF_NOT_DELEGATED}
 
-   UF_USE_DES_KEY_ONLY                       = $200000;
 
-   {$EXTERNALSYM UF_USE_DES_KEY_ONLY}
 
-   UF_DONT_REQUIRE_PREAUTH                   = $400000;
 
-   {$EXTERNALSYM UF_DONT_REQUIRE_PREAUTH}
 
-   UF_PASSWORD_EXPIRED                       = DWORD($800000);
 
-   {$EXTERNALSYM UF_PASSWORD_EXPIRED}
 
-   UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION = $1000000;
 
-   {$EXTERNALSYM UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION}
 
-   UF_SETTABLE_BITS =
 
-     UF_SCRIPT or
 
-     UF_ACCOUNTDISABLE or
 
-     UF_LOCKOUT or
 
-     UF_HOMEDIR_REQUIRED or
 
-     UF_PASSWD_NOTREQD or
 
-     UF_PASSWD_CANT_CHANGE or
 
-     UF_ACCOUNT_TYPE_MASK or
 
-     UF_DONT_EXPIRE_PASSWD or
 
-     UF_MNS_LOGON_ACCOUNT or
 
-     UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED or
 
-     UF_SMARTCARD_REQUIRED or
 
-     UF_TRUSTED_FOR_DELEGATION or
 
-     UF_NOT_DELEGATED or
 
-     UF_USE_DES_KEY_ONLY or
 
-     UF_DONT_REQUIRE_PREAUTH or
 
-     UF_PASSWORD_EXPIRED or
 
-     UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION;
 
-   {$EXTERNALSYM UF_SETTABLE_BITS}
 
- // line 1056
 
- //
 
- //  For SetInfo call (parmnum 0) when password change not required
 
- //
 
-   NULL_USERSETINFO_PASSWD = '              ';
 
-   {$EXTERNALSYM NULL_USERSETINFO_PASSWD}
 
-   TIMEQ_FOREVER             = ULONG(-1);
 
-   {$EXTERNALSYM TIMEQ_FOREVER}
 
-   USER_MAXSTORAGE_UNLIMITED = ULONG(-1);
 
-   {$EXTERNALSYM USER_MAXSTORAGE_UNLIMITED}
 
-   USER_NO_LOGOFF            = ULONG(-1);
 
-   {$EXTERNALSYM USER_NO_LOGOFF}
 
-   UNITS_PER_DAY             = 24;
 
-   {$EXTERNALSYM UNITS_PER_DAY}
 
-   UNITS_PER_WEEK            = UNITS_PER_DAY * 7;
 
-   {$EXTERNALSYM UNITS_PER_WEEK}
 
- //
 
- // Privilege levels (USER_INFO_X field usriX_priv (X = 0/1)).
 
- //
 
-   USER_PRIV_MASK  = $3;
 
-   {$EXTERNALSYM USER_PRIV_MASK}
 
-   USER_PRIV_GUEST = 0;
 
-   {$EXTERNALSYM USER_PRIV_GUEST}
 
-   USER_PRIV_USER  = 1;
 
-   {$EXTERNALSYM USER_PRIV_USER}
 
-   USER_PRIV_ADMIN = 2;
 
-   {$EXTERNALSYM USER_PRIV_ADMIN}
 
- // line 1177
 
- //
 
- // Group Class
 
- //
 
- //
 
- // Function Prototypes
 
- //
 
- function NetGroupAdd(servername: LPCWSTR; level: DWORD; buf: PByte; parm_err: LPDWORD): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetGroupAdd}
 
- function NetGroupAddUser(servername, GroupName, username: LPCWSTR): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetGroupAddUser}
 
- function NetGroupEnum(servername: LPCWSTR; level: DWORD; out bufptr: PByte;
 
-   prefmaxlen: DWORD; out entriesread, totalentries: DWORD; resume_handle: PDWORD_PTR): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetGroupEnum}
 
- function NetGroupGetInfo(servername, groupname: LPCWSTR; level: DWORD; bufptr: PByte): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetGroupGetInfo}
 
- function NetGroupSetInfo(servername, groupname: LPCWSTR; level: DWORD; buf: PByte; parm_err: LPDWORD): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetGroupSetInfo}
 
- function NetGroupDel(servername: LPCWSTR; groupname: LPCWSTR): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetGroupDel}
 
- function NetGroupDelUser(servername: LPCWSTR; GroupName: LPCWSTR; Username: LPCWSTR): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetGroupDelUser}
 
- function NetGroupGetUsers(servername, groupname: LPCWSTR; level: DWORD; var bufptr: PByte; prefmaxlen: DWORD; entriesread, totalentries: LPDWORD; ResumeHandle: PDWORD_PTR): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetGroupGetUsers}
 
- function NetGroupSetUsers(servername, groupname: LPCWSTR; level: DWORD; buf: PByte; totalentries: DWORD): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetGroupSetUsers}
 
- //
 
- //  Data Structures - Group
 
- //
 
- type
 
-   LPGROUP_INFO_0 = ^GROUP_INFO_0;
 
-   {$EXTERNALSYM LPGROUP_INFO_0}
 
-   PGROUP_INFO_0 = ^GROUP_INFO_0;
 
-   {$EXTERNALSYM PGROUP_INFO_0}
 
-   _GROUP_INFO_0 = record
 
-     grpi0_name: LPWSTR;
 
-   end;
 
-   {$EXTERNALSYM _GROUP_INFO_0}
 
-   GROUP_INFO_0 = _GROUP_INFO_0;
 
-   {$EXTERNALSYM GROUP_INFO_0}
 
-   TGroupInfo0 = GROUP_INFO_0;
 
-   PGroupInfo0 = PGROUP_INFO_0;
 
-   LPGROUP_INFO_1 = ^GROUP_INFO_1;
 
-   {$EXTERNALSYM LPGROUP_INFO_1}
 
-   PGROUP_INFO_1 = ^GROUP_INFO_1;
 
-   {$EXTERNALSYM PGROUP_INFO_1}
 
-   _GROUP_INFO_1 = record
 
-     grpi1_name: LPWSTR;
 
-     grpi1_comment: LPWSTR;
 
-   end;
 
-   {$EXTERNALSYM _GROUP_INFO_1}
 
-   GROUP_INFO_1 = _GROUP_INFO_1;
 
-   {$EXTERNALSYM GROUP_INFO_1}
 
-   TGroupInfo1 = GROUP_INFO_1;
 
-   PGroupInfo1 = PGROUP_INFO_1;
 
- // line 1380
 
- //
 
- // LocalGroup Class
 
- //
 
- //
 
- // Function Prototypes
 
- //
 
- function NetLocalGroupAdd(servername: LPCWSTR; level: DWORD; buf: PByte; parm_err: LPDWORD): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetLocalGroupAdd}
 
- function NetLocalGroupAddMember(servername, groupname: LPCWSTR; membersid: PSID): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetLocalGroupAddMember}
 
- function NetLocalGroupEnum(servername: LPCWSTR; level: DWORD; out bufptr: PByte;
 
-   prefmaxlen: DWORD; out entriesread, totalentries: DWORD; resumehandle: PDWORD_PTR): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetLocalGroupEnum}
 
- function NetLocalGroupGetInfo(servername, groupname: LPCWSTR; level: DWORD; var bufptr: PByte): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetLocalGroupGetInfo}
 
- function NetLocalGroupSetInfo(servername, groupname: LPCWSTR; level: DWORD; buf: PByte; parm_err: LPDWORD): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetLocalGroupSetInfo}
 
- function NetLocalGroupDel(servername: LPCWSTR; groupname: LPCWSTR): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetLocalGroupDel}
 
- function NetLocalGroupDelMember(servername: LPCWSTR; groupname: LPCWSTR; membersid: PSID): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetLocalGroupDelMember}
 
- function NetLocalGroupGetMembers(servername, localgroupname: LPCWSTR; level: DWORD; var bufptr: PByte; prefmaxlen: DWORD; entriesread, totalentries: LPDWORD; resumehandle: PDWORD_PTR): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetLocalGroupGetMembers}
 
- function NetLocalGroupSetMembers(servername, groupname: LPCWSTR; level: DWORD; buf: PByte; totalentries: DWORD): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetLocalGroupSetMembers}
 
- function NetLocalGroupAddMembers(servername, groupname: LPCWSTR; level: DWORD; buf: PByte; totalentries: DWORD): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetLocalGroupAddMembers}
 
- function NetLocalGroupDelMembers(servername, groupname: LPCWSTR; level: DWORD; buf: PByte; totalentries: DWORD): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetLocalGroupDelMembers}
 
- //
 
- //  Data Structures - LocalGroup
 
- //
 
- type
 
-   {$IFNDEF FPC}
 
-   LPLOCALGROUP_INFO_0 = ^LOCALGROUP_INFO_0;
 
-   {$EXTERNALSYM LPLOCALGROUP_INFO_0}
 
-   PLOCALGROUP_INFO_0 = ^LOCALGROUP_INFO_0;
 
-   {$EXTERNALSYM PLOCALGROUP_INFO_0}
 
-   _LOCALGROUP_INFO_0 = record
 
-     lgrpi0_name: LPWSTR;
 
-   end;
 
-   {$EXTERNALSYM _LOCALGROUP_INFO_0}
 
-   LOCALGROUP_INFO_0 = _LOCALGROUP_INFO_0;
 
-   {$EXTERNALSYM LOCALGROUP_INFO_0}
 
-   TLocalGroupInfo0 = LOCALGROUP_INFO_0;
 
-   PLocalGroupInfo0 = PLOCALGROUP_INFO_0;
 
-   {$ENDIF ~FPC}
 
-   LPLOCALGROUP_INFO_1 = ^LOCALGROUP_INFO_1;
 
-   {$EXTERNALSYM LPLOCALGROUP_INFO_1}
 
-   PLOCALGROUP_INFO_1 = ^LOCALGROUP_INFO_1;
 
-   {$EXTERNALSYM PLOCALGROUP_INFO_1}
 
-   _LOCALGROUP_INFO_1 = record
 
-     lgrpi1_name: LPWSTR;
 
-     lgrpi1_comment: LPWSTR;
 
-   end;
 
-   {$EXTERNALSYM _LOCALGROUP_INFO_1}
 
-   LOCALGROUP_INFO_1 = _LOCALGROUP_INFO_1;
 
-   {$EXTERNALSYM LOCALGROUP_INFO_1}
 
-   TLocalGroupInfo1 = LOCALGROUP_INFO_1;
 
-   PLocalGroupInfo1 = PLOCALGROUP_INFO_1;
 
-   LPLOCALGROUP_INFO_1002 = ^LOCALGROUP_INFO_1002;
 
-   {$EXTERNALSYM LPLOCALGROUP_INFO_1002}
 
-   PLOCALGROUP_INFO_1002 = ^LOCALGROUP_INFO_1002;
 
-   {$EXTERNALSYM PLOCALGROUP_INFO_1002}
 
-   _LOCALGROUP_INFO_1002 = record
 
-     lgrpi1002_comment: LPWSTR;
 
-   end;
 
-   {$EXTERNALSYM _LOCALGROUP_INFO_1002}
 
-   LOCALGROUP_INFO_1002 = _LOCALGROUP_INFO_1002;
 
-   {$EXTERNALSYM LOCALGROUP_INFO_1002}
 
-   TLocalGroupInfo1002 = LOCALGROUP_INFO_1002;
 
-   PLocalGroupInfo1002 = PLOCALGROUP_INFO_1002;
 
-   {$IFNDEF FPC}
 
-   LPLOCALGROUP_MEMBERS_INFO_0 = ^LOCALGROUP_MEMBERS_INFO_0;
 
-   {$EXTERNALSYM LPLOCALGROUP_MEMBERS_INFO_0}
 
-   PLOCALGROUP_MEMBERS_INFO_0 = ^LOCALGROUP_MEMBERS_INFO_0;
 
-   {$EXTERNALSYM PLOCALGROUP_MEMBERS_INFO_0}
 
-   _LOCALGROUP_MEMBERS_INFO_0 = record
 
-     lgrmi0_sid: PSID;
 
-   end;
 
-   {$EXTERNALSYM _LOCALGROUP_MEMBERS_INFO_0}
 
-   LOCALGROUP_MEMBERS_INFO_0 = _LOCALGROUP_MEMBERS_INFO_0;
 
-   {$EXTERNALSYM LOCALGROUP_MEMBERS_INFO_0}
 
-   TLocalGroupMembersInfo0 = LOCALGROUP_MEMBERS_INFO_0;
 
-   PLocalGroupMembersInfo0 = PLOCALGROUP_MEMBERS_INFO_0;
 
-   {$ENDIF ~FPC}
 
-   LPLOCALGROUP_MEMBERS_INFO_1 = ^LOCALGROUP_MEMBERS_INFO_1;
 
-   {$EXTERNALSYM LPLOCALGROUP_MEMBERS_INFO_1}
 
-   PLOCALGROUP_MEMBERS_INFO_1 = ^LOCALGROUP_MEMBERS_INFO_1;
 
-   {$EXTERNALSYM PLOCALGROUP_MEMBERS_INFO_1}
 
-   _LOCALGROUP_MEMBERS_INFO_1 = record
 
-     lgrmi1_sid: PSID;
 
-     lgrmi1_sidusage: SID_NAME_USE;
 
-     lgrmi1_name: LPWSTR;
 
-   end;
 
-   {$EXTERNALSYM _LOCALGROUP_MEMBERS_INFO_1}
 
-   LOCALGROUP_MEMBERS_INFO_1 = _LOCALGROUP_MEMBERS_INFO_1;
 
-   {$EXTERNALSYM LOCALGROUP_MEMBERS_INFO_1}
 
-   TLocalGroupMembersInfo1 = LOCALGROUP_MEMBERS_INFO_1;
 
-   PLocalGroupMembersInfo1 = PLOCALGROUP_MEMBERS_INFO_1;
 
-   LPLOCALGROUP_MEMBERS_INFO_2 = ^LOCALGROUP_MEMBERS_INFO_2;
 
-   {$EXTERNALSYM LPLOCALGROUP_MEMBERS_INFO_2}
 
-   PLOCALGROUP_MEMBERS_INFO_2 = ^LOCALGROUP_MEMBERS_INFO_2;
 
-   {$EXTERNALSYM PLOCALGROUP_MEMBERS_INFO_2}
 
-   _LOCALGROUP_MEMBERS_INFO_2 = record
 
-     lgrmi2_sid: PSID;
 
-     lgrmi2_sidusage: SID_NAME_USE;
 
-     lgrmi2_domainandname: LPWSTR;
 
-   end;
 
-   {$EXTERNALSYM _LOCALGROUP_MEMBERS_INFO_2}
 
-   LOCALGROUP_MEMBERS_INFO_2 = _LOCALGROUP_MEMBERS_INFO_2;
 
-   {$EXTERNALSYM LOCALGROUP_MEMBERS_INFO_2}
 
-   TLocalGroupMembersInfo2 = LOCALGROUP_MEMBERS_INFO_2;
 
-   PLocalGroupMembersInfo2 = PLOCALGROUP_MEMBERS_INFO_2;
 
-   {$IFNDEF FPC}
 
-   LPLOCALGROUP_MEMBERS_INFO_3 = ^LOCALGROUP_MEMBERS_INFO_3;
 
-   {$EXTERNALSYM LPLOCALGROUP_MEMBERS_INFO_3}
 
-   PLOCALGROUP_MEMBERS_INFO_3 = ^LOCALGROUP_MEMBERS_INFO_3;
 
-   {$EXTERNALSYM PLOCALGROUP_MEMBERS_INFO_3}
 
-   _LOCALGROUP_MEMBERS_INFO_3 = record
 
-     lgrmi3_domainandname: LPWSTR;
 
-   end;
 
-   {$EXTERNALSYM _LOCALGROUP_MEMBERS_INFO_3}
 
-   LOCALGROUP_MEMBERS_INFO_3 = _LOCALGROUP_MEMBERS_INFO_3;
 
-   {$EXTERNALSYM LOCALGROUP_MEMBERS_INFO_3}
 
-   TLocalGroupMembersInfo3 = LOCALGROUP_MEMBERS_INFO_3;
 
-   PLocalGroupMembersInfo3 = PLOCALGROUP_MEMBERS_INFO_3;
 
-   {$ENDIF ~FPC}
 
- function NetApiBufferFree(Buffer: Pointer): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetApiBufferFree}
 
- type
 
-   _WKSTA_INFO_100 = record
 
-     wki100_platform_id: DWORD;
 
-     wki100_computername: LMSTR;
 
-     wki100_langroup: LMSTR;
 
-     wki100_ver_major: DWORD;
 
-     wki100_ver_minor: DWORD;
 
-   end;
 
-   {$EXTERNALSYM _WKSTA_INFO_100}
 
-   WKSTA_INFO_100 = _WKSTA_INFO_100;
 
-   {$EXTERNALSYM WKSTA_INFO_100}
 
-   PWKSTA_INFO_100 = ^_WKSTA_INFO_100;
 
-   {$EXTERNALSYM PWKSTA_INFO_100}
 
-   LPWKSTA_INFO_100 = ^_WKSTA_INFO_100;
 
-   {$EXTERNALSYM LPWKSTA_INFO_100}
 
- function NetWkstaGetInfo(servername: PWideChar; level: DWORD; out bufptr: PByte): NET_API_STATUS; stdcall;
 
- {$EXTERNALSYM NetWkstaGetInfo}
 
- (****************************************************************
 
-  *                                                              *
 
-  *              Data structure templates                        *
 
-  *                                                              *
 
-  ****************************************************************)
 
- const
 
-   NCBNAMSZ = 16;  // absolute length of a net name
 
-   {$EXTERNALSYM NCBNAMSZ}
 
-   MAX_LANA = 254; // lana's in range 0 to MAX_LANA inclusive
 
-   {$EXTERNALSYM MAX_LANA}
 
- //
 
- // Network Control Block
 
- //
 
- type
 
-   {$IFNDEF FPC}
 
-   PNCB = ^NCB;
 
-   {$ENDIF ~FPC}
 
-   TNcbPost = procedure (P: PNCB); stdcall;
 
-   {$IFNDEF FPC}
 
-   _NCB = record
 
-     ncb_command: UCHAR;  // command code
 
-     ncb_retcode: UCHAR;  // return code
 
-     ncb_lsn: UCHAR;      // local session number
 
-     ncb_num: UCHAR;      // number of our network name
 
-     ncb_buffer: PUCHAR;  // address of message buffer
 
-     ncb_length: Word;    // size of message buffer
 
-     ncb_callname: array [0..NCBNAMSZ - 1] of UCHAR; // blank-padded name of remote
 
-     ncb_name: array [0..NCBNAMSZ - 1] of UCHAR;     // our blank-padded netname
 
-     ncb_rto: UCHAR;      // rcv timeout/retry count
 
-     ncb_sto: UCHAR;      // send timeout/sys timeout
 
-     ncb_post: TNcbPost;  // POST routine address
 
-     ncb_lana_num: UCHAR; // lana (adapter) number
 
-     ncb_cmd_cplt: UCHAR; // 0xff => commmand pending
 
-     {$IFDEF _WIN64}
 
-     ncb_reserve: array [0..17] of UCHAR; // reserved, used by BIOS
 
-     {$ELSE ~_WIN64}
 
-     ncb_reserve: array [0..9] of UCHAR;  // reserved, used by BIOS
 
-     {$ENDIF ~_WIN64}
 
-     ncb_event: THandle;   // HANDLE to Win32 event which
 
-                          // will be set to the signalled
 
-                          // state when an ASYNCH command
 
-                          // completes
 
-   end;
 
-   {$EXTERNALSYM _NCB}
 
-   NCB = _NCB;
 
-   {$EXTERNALSYM NCB}
 
-   TNcb = NCB;
 
-   {$ENDIF ~FPC}
 
- //
 
- //  Structure returned to the NCB command NCBASTAT is ADAPTER_STATUS followed
 
- //  by an array of NAME_BUFFER structures.
 
- //
 
- {$IFNDEF FPC}
 
- type
 
-   _ADAPTER_STATUS = record
 
-     adapter_address: array [0..5] of UCHAR;
 
-     rev_major: UCHAR;
 
-     reserved0: UCHAR;
 
-     adapter_type: UCHAR;
 
-     rev_minor: UCHAR;
 
-     duration: WORD;
 
-     frmr_recv: WORD;
 
-     frmr_xmit: WORD;
 
-     iframe_recv_err: WORD;
 
-     xmit_aborts: WORD;
 
-     xmit_success: DWORD;
 
-     recv_success: DWORD;
 
-     iframe_xmit_err: WORD;
 
-     recv_buff_unavail: WORD;
 
-     t1_timeouts: WORD;
 
-     ti_timeouts: WORD;
 
-     reserved1: DWORD;
 
-     free_ncbs: WORD;
 
-     max_cfg_ncbs: WORD;
 
-     max_ncbs: WORD;
 
-     xmit_buf_unavail: WORD;
 
-     max_dgram_size: WORD;
 
-     pending_sess: WORD;
 
-     max_cfg_sess: WORD;
 
-     max_sess: WORD;
 
-     max_sess_pkt_size: WORD;
 
-     name_count: WORD;
 
-   end;
 
-   {$EXTERNALSYM _ADAPTER_STATUS}
 
-   ADAPTER_STATUS = _ADAPTER_STATUS;
 
-   {$EXTERNALSYM ADAPTER_STATUS}
 
-   PADAPTER_STATUS = ^ADAPTER_STATUS;
 
-   {$EXTERNALSYM PADAPTER_STATUS}
 
-   TAdapterStatus = ADAPTER_STATUS;
 
-   PAdapterStatus = PADAPTER_STATUS;
 
-   _NAME_BUFFER = record
 
-     name: array [0..NCBNAMSZ - 1] of UCHAR;
 
-     name_num: UCHAR;
 
-     name_flags: UCHAR;
 
-   end;
 
-   {$EXTERNALSYM _NAME_BUFFER}
 
-   NAME_BUFFER = _NAME_BUFFER;
 
-   {$EXTERNALSYM NAME_BUFFER}
 
-   PNAME_BUFFER = ^NAME_BUFFER;
 
-   {$EXTERNALSYM PNAME_BUFFER}
 
-   TNameBuffer = NAME_BUFFER;
 
-   PNameBuffer = PNAME_BUFFER;
 
- {$ENDIF ~FPC}
 
- //  values for name_flags bits.
 
- const
 
-   NAME_FLAGS_MASK = $87;
 
-   {$EXTERNALSYM NAME_FLAGS_MASK}
 
-   GROUP_NAME  = $80;
 
-   {$EXTERNALSYM GROUP_NAME}
 
-   UNIQUE_NAME = $00;
 
-   {$EXTERNALSYM UNIQUE_NAME}
 
-   REGISTERING     = $00;
 
-   {$EXTERNALSYM REGISTERING}
 
-   REGISTERED      = $04;
 
-   {$EXTERNALSYM REGISTERED}
 
-   DEREGISTERED    = $05;
 
-   {$EXTERNALSYM DEREGISTERED}
 
-   DUPLICATE       = $06;
 
-   {$EXTERNALSYM DUPLICATE}
 
-   DUPLICATE_DEREG = $07;
 
-   {$EXTERNALSYM DUPLICATE_DEREG}
 
- //
 
- //  Structure returned to the NCB command NCBSSTAT is SESSION_HEADER followed
 
- //  by an array of SESSION_BUFFER structures. If the NCB_NAME starts with an
 
- //  asterisk then an array of these structures is returned containing the
 
- //  status for all names.
 
- //
 
- {$IFNDEF FPC}
 
- type
 
-   _SESSION_HEADER = record
 
-     sess_name: UCHAR;
 
-     num_sess: UCHAR;
 
-     rcv_dg_outstanding: UCHAR;
 
-     rcv_any_outstanding: UCHAR;
 
-   end;
 
-   {$EXTERNALSYM _SESSION_HEADER}
 
-   SESSION_HEADER = _SESSION_HEADER;
 
-   {$EXTERNALSYM SESSION_HEADER}
 
-   PSESSION_HEADER = ^SESSION_HEADER;
 
-   {$EXTERNALSYM PSESSION_HEADER}
 
-   TSessionHeader = SESSION_HEADER;
 
-   PSessionHeader = PSESSION_HEADER;
 
-   _SESSION_BUFFER = record
 
-     lsn: UCHAR;
 
-     state: UCHAR;
 
-     local_name: array [0..NCBNAMSZ - 1] of UCHAR;
 
-     remote_name: array [0..NCBNAMSZ - 1] of UCHAR;
 
-     rcvs_outstanding: UCHAR;
 
-     sends_outstanding: UCHAR;
 
-   end;
 
-   {$EXTERNALSYM _SESSION_BUFFER}
 
-   SESSION_BUFFER = _SESSION_BUFFER;
 
-   {$EXTERNALSYM SESSION_BUFFER}
 
-   PSESSION_BUFFER = ^SESSION_BUFFER;
 
-   {$EXTERNALSYM PSESSION_BUFFER}
 
-   TSessionBuffer = SESSION_BUFFER;
 
-   PSessionBuffer = PSESSION_BUFFER;
 
- {$ENDIF ~FPC}
 
- //  Values for state
 
- const
 
-   LISTEN_OUTSTANDING  = $01;
 
-   {$EXTERNALSYM LISTEN_OUTSTANDING}
 
-   CALL_PENDING        = $02;
 
-   {$EXTERNALSYM CALL_PENDING}
 
-   SESSION_ESTABLISHED = $03;
 
-   {$EXTERNALSYM SESSION_ESTABLISHED}
 
-   HANGUP_PENDING      = $04;
 
-   {$EXTERNALSYM HANGUP_PENDING}
 
-   HANGUP_COMPLETE     = $05;
 
-   {$EXTERNALSYM HANGUP_COMPLETE}
 
-   SESSION_ABORTED     = $06;
 
-   {$EXTERNALSYM SESSION_ABORTED}
 
- //
 
- //  Structure returned to the NCB command NCBENUM.
 
- //
 
- //  On a system containing lana's 0, 2 and 3, a structure with
 
- //  length =3, lana[0]=0, lana[1]=2 and lana[2]=3 will be returned.
 
- //
 
- {$IFNDEF FPC}
 
- type
 
-   _LANA_ENUM = record
 
-     length: UCHAR; // Number of valid entries in lana[]
 
-     lana: array [0..MAX_LANA] of UCHAR;
 
-   end;
 
-   {$EXTERNALSYM _LANA_ENUM}
 
-   LANA_ENUM = _LANA_ENUM;
 
-   {$EXTERNALSYM LANA_ENUM}
 
-   PLANA_ENUM = ^LANA_ENUM;
 
-   {$EXTERNALSYM PLANA_ENUM}
 
-   TLanaEnum = LANA_ENUM;
 
-   PLanaEnum = PLANA_ENUM;
 
- {$ENDIF ~FPC}
 
- //
 
- //  Structure returned to the NCB command NCBFINDNAME is FIND_NAME_HEADER followed
 
- //  by an array of FIND_NAME_BUFFER structures.
 
- //
 
- {$IFNDEF FPC}
 
- type
 
-   _FIND_NAME_HEADER = record
 
-     node_count: WORD;
 
-     reserved: UCHAR;
 
-     unique_group: UCHAR;
 
-   end;
 
-   {$EXTERNALSYM _FIND_NAME_HEADER}
 
-   FIND_NAME_HEADER = _FIND_NAME_HEADER;
 
-   {$EXTERNALSYM FIND_NAME_HEADER}
 
-   PFIND_NAME_HEADER = ^FIND_NAME_HEADER;
 
-   {$EXTERNALSYM PFIND_NAME_HEADER}
 
-   TFindNameHeader = FIND_NAME_HEADER;
 
-   PFindNameHeader = PFIND_NAME_HEADER;
 
-   _FIND_NAME_BUFFER = record
 
-     length: UCHAR;
 
-     access_control: UCHAR;
 
-     frame_control: UCHAR;
 
-     destination_addr: array [0..5] of UCHAR;
 
-     source_addr: array [0..5] of UCHAR;
 
-     routing_info: array [0..17] of UCHAR;
 
-   end;
 
-   {$EXTERNALSYM _FIND_NAME_BUFFER}
 
-   FIND_NAME_BUFFER = _FIND_NAME_BUFFER;
 
-   {$EXTERNALSYM FIND_NAME_BUFFER}
 
-   PFIND_NAME_BUFFER = ^FIND_NAME_BUFFER;
 
-   {$EXTERNALSYM PFIND_NAME_BUFFER}
 
-   TFindNameBuffer = FIND_NAME_BUFFER;
 
-   PFindNameBuffer = PFIND_NAME_BUFFER;
 
- //
 
- //  Structure provided with NCBACTION. The purpose of NCBACTION is to provide
 
- //  transport specific extensions to netbios.
 
- //
 
-   _ACTION_HEADER = record
 
-     transport_id: ULONG;
 
-     action_code: USHORT;
 
-     reserved: USHORT;
 
-   end;
 
-   {$EXTERNALSYM _ACTION_HEADER}
 
-   ACTION_HEADER = _ACTION_HEADER;
 
-   {$EXTERNALSYM ACTION_HEADER}
 
-   PACTION_HEADER = ^ACTION_HEADER;
 
-   {$EXTERNALSYM PACTION_HEADER}
 
-   TActionHeader = ACTION_HEADER;
 
-   PActionHeader = PACTION_HEADER;
 
- {$ENDIF ~FPC}
 
- //  Values for transport_id
 
- const
 
-   ALL_TRANSPORTS = 'M'#0#0#0;
 
-   {$EXTERNALSYM ALL_TRANSPORTS}
 
-   MS_NBF         = 'MNBF';
 
-   {$EXTERNALSYM MS_NBF}
 
- (****************************************************************
 
-  *                                                              *
 
-  *              Special values and constants                    *
 
-  *                                                              *
 
-  ****************************************************************)
 
- //
 
- //      NCB Command codes
 
- //
 
- const
 
-   NCBCALL        = $10; // NCB CALL
 
-   {$EXTERNALSYM NCBCALL}
 
-   NCBLISTEN      = $11; // NCB LISTEN
 
-   {$EXTERNALSYM NCBLISTEN}
 
-   NCBHANGUP      = $12; // NCB HANG UP
 
-   {$EXTERNALSYM NCBHANGUP}
 
-   NCBSEND        = $14; // NCB SEND
 
-   {$EXTERNALSYM NCBSEND}
 
-   NCBRECV        = $15; // NCB RECEIVE
 
-   {$EXTERNALSYM NCBRECV}
 
-   NCBRECVANY     = $16; // NCB RECEIVE ANY
 
-   {$EXTERNALSYM NCBRECVANY}
 
-   NCBCHAINSEND   = $17; // NCB CHAIN SEND
 
-   {$EXTERNALSYM NCBCHAINSEND}
 
-   NCBDGSEND      = $20; // NCB SEND DATAGRAM
 
-   {$EXTERNALSYM NCBDGSEND}
 
-   NCBDGRECV      = $21; // NCB RECEIVE DATAGRAM
 
-   {$EXTERNALSYM NCBDGRECV}
 
-   NCBDGSENDBC    = $22; // NCB SEND BROADCAST DATAGRAM
 
-   {$EXTERNALSYM NCBDGSENDBC}
 
-   NCBDGRECVBC    = $23; // NCB RECEIVE BROADCAST DATAGRAM
 
-   {$EXTERNALSYM NCBDGRECVBC}
 
-   NCBADDNAME     = $30; // NCB ADD NAME
 
-   {$EXTERNALSYM NCBADDNAME}
 
-   NCBDELNAME     = $31; // NCB DELETE NAME
 
-   {$EXTERNALSYM NCBDELNAME}
 
-   NCBRESET       = $32; // NCB RESET
 
-   {$EXTERNALSYM NCBRESET}
 
-   NCBASTAT       = $33; // NCB ADAPTER STATUS
 
-   {$EXTERNALSYM NCBASTAT}
 
-   NCBSSTAT       = $34; // NCB SESSION STATUS
 
-   {$EXTERNALSYM NCBSSTAT}
 
-   NCBCANCEL      = $35; // NCB CANCEL
 
-   {$EXTERNALSYM NCBCANCEL}
 
-   NCBADDGRNAME   = $36; // NCB ADD GROUP NAME
 
-   {$EXTERNALSYM NCBADDGRNAME}
 
-   NCBENUM        = $37; // NCB ENUMERATE LANA NUMBERS
 
-   {$EXTERNALSYM NCBENUM}
 
-   NCBUNLINK      = $70; // NCB UNLINK
 
-   {$EXTERNALSYM NCBUNLINK}
 
-   NCBSENDNA      = $71; // NCB SEND NO ACK
 
-   {$EXTERNALSYM NCBSENDNA}
 
-   NCBCHAINSENDNA = $72; // NCB CHAIN SEND NO ACK
 
-   {$EXTERNALSYM NCBCHAINSENDNA}
 
-   NCBLANSTALERT  = $73; // NCB LAN STATUS ALERT
 
-   {$EXTERNALSYM NCBLANSTALERT}
 
-   NCBACTION      = $77; // NCB ACTION
 
-   {$EXTERNALSYM NCBACTION}
 
-   NCBFINDNAME    = $78; // NCB FIND NAME
 
-   {$EXTERNALSYM NCBFINDNAME}
 
-   NCBTRACE       = $79; // NCB TRACE
 
-   {$EXTERNALSYM NCBTRACE}
 
-   ASYNCH = $80; // high bit set == asynchronous
 
-   {$EXTERNALSYM ASYNCH}
 
- //
 
- //      NCB Return codes
 
- //
 
-   NRC_GOODRET = $00; // good return also returned when ASYNCH request accepted
 
-   {$EXTERNALSYM NRC_GOODRET}
 
-   NRC_BUFLEN      = $01; // illegal buffer length
 
-   {$EXTERNALSYM NRC_BUFLEN}
 
-   NRC_ILLCMD      = $03; // illegal command
 
-   {$EXTERNALSYM NRC_ILLCMD}
 
-   NRC_CMDTMO      = $05; // command timed out
 
-   {$EXTERNALSYM NRC_CMDTMO}
 
-   NRC_INCOMP      = $06; // message incomplete, issue another command
 
-   {$EXTERNALSYM NRC_INCOMP}
 
-   NRC_BADDR       = $07; // illegal buffer address
 
-   {$EXTERNALSYM NRC_BADDR}
 
-   NRC_SNUMOUT     = $08; // session number out of range
 
-   {$EXTERNALSYM NRC_SNUMOUT}
 
-   NRC_NORES       = $09; // no resource available
 
-   {$EXTERNALSYM NRC_NORES}
 
-   NRC_SCLOSED     = $0a; // session closed
 
-   {$EXTERNALSYM NRC_SCLOSED}
 
-   NRC_CMDCAN      = $0b; // command cancelled
 
-   {$EXTERNALSYM NRC_CMDCAN}
 
-   NRC_DUPNAME     = $0d; // duplicate name
 
-   {$EXTERNALSYM NRC_DUPNAME}
 
-   NRC_NAMTFUL     = $0e; // name table full
 
-   {$EXTERNALSYM NRC_NAMTFUL}
 
-   NRC_ACTSES      = $0f; // no deletions, name has active sessions
 
-   {$EXTERNALSYM NRC_ACTSES}
 
-   NRC_LOCTFUL     = $11; // local session table full
 
-   {$EXTERNALSYM NRC_LOCTFUL}
 
-   NRC_REMTFUL     = $12; // remote session table full
 
-   {$EXTERNALSYM NRC_REMTFUL}
 
-   NRC_ILLNN       = $13; // illegal name number
 
-   {$EXTERNALSYM NRC_ILLNN}
 
-   NRC_NOCALL      = $14; // no callname
 
-   {$EXTERNALSYM NRC_NOCALL}
 
-   NRC_NOWILD      = $15; // cannot put * in NCB_NAME
 
-   {$EXTERNALSYM NRC_NOWILD}
 
-   NRC_INUSE       = $16; // name in use on remote adapter
 
-   {$EXTERNALSYM NRC_INUSE}
 
-   NRC_NAMERR      = $17; // name deleted
 
-   {$EXTERNALSYM NRC_NAMERR}
 
-   NRC_SABORT      = $18; // session ended abnormally
 
-   {$EXTERNALSYM NRC_SABORT}
 
-   NRC_NAMCONF     = $19; // name conflict detected
 
-   {$EXTERNALSYM NRC_NAMCONF}
 
-   NRC_IFBUSY      = $21; // interface busy, IRET before retrying
 
-   {$EXTERNALSYM NRC_IFBUSY}
 
-   NRC_TOOMANY     = $22; // too many commands outstanding, retry later
 
-   {$EXTERNALSYM NRC_TOOMANY}
 
-   NRC_BRIDGE      = $23; // ncb_lana_num field invalid
 
-   {$EXTERNALSYM NRC_BRIDGE}
 
-   NRC_CANOCCR     = $24; // command completed while cancel occurring
 
-   {$EXTERNALSYM NRC_CANOCCR}
 
-   NRC_CANCEL      = $26; // command not valid to cancel
 
-   {$EXTERNALSYM NRC_CANCEL}
 
-   NRC_DUPENV      = $30; // name defined by anther local process
 
-   {$EXTERNALSYM NRC_DUPENV}
 
-   NRC_ENVNOTDEF   = $34; // environment undefined. RESET required
 
-   {$EXTERNALSYM NRC_ENVNOTDEF}
 
-   NRC_OSRESNOTAV  = $35; // required OS resources exhausted
 
-   {$EXTERNALSYM NRC_OSRESNOTAV}
 
-   NRC_MAXAPPS     = $36; // max number of applications exceeded
 
-   {$EXTERNALSYM NRC_MAXAPPS}
 
-   NRC_NOSAPS      = $37; // no saps available for netbios
 
-   {$EXTERNALSYM NRC_NOSAPS}
 
-   NRC_NORESOURCES = $38; // requested resources are not available
 
-   {$EXTERNALSYM NRC_NORESOURCES}
 
-   NRC_INVADDRESS  = $39; // invalid ncb address or length > segment
 
-   {$EXTERNALSYM NRC_INVADDRESS}
 
-   NRC_INVDDID     = $3B; // invalid NCB DDID
 
-   {$EXTERNALSYM NRC_INVDDID}
 
-   NRC_LOCKFAIL    = $3C; // lock of user area failed
 
-   {$EXTERNALSYM NRC_LOCKFAIL}
 
-   NRC_OPENERR     = $3f; // NETBIOS not loaded
 
-   {$EXTERNALSYM NRC_OPENERR}
 
-   NRC_SYSTEM      = $40; // system error
 
-   {$EXTERNALSYM NRC_SYSTEM}
 
-   NRC_PENDING = $ff; // asynchronous command is not yet finished
 
-   {$EXTERNALSYM NRC_PENDING}
 
- (****************************************************************
 
-  *                                                              *
 
-  *              main user entry point for NetBIOS 3.0           *
 
-  *                                                              *
 
-  * Usage: result = Netbios( pncb );                             *
 
-  ****************************************************************)
 
- function Netbios(pncb: PNCB): UCHAR; stdcall;
 
- {$EXTERNALSYM Netbios}
 
- type
 
-   PRasDialDlg = ^TRasDialDlg;
 
-   tagRASDIALDLG = packed record
 
-     dwSize: DWORD;
 
-     hwndOwner: HWND;
 
-     dwFlags: DWORD;
 
-     xDlg: Longint;
 
-     yDlg: Longint;
 
-     dwSubEntry: DWORD;
 
-     dwError: DWORD;
 
-     reserved: Longword;
 
-     reserved2: Longword;
 
-   end;
 
-   {$EXTERNALSYM tagRASDIALDLG}
 
-   RASDIALDLG = tagRASDIALDLG;
 
-   {$EXTERNALSYM RASDIALDLG}
 
-   TRasDialDlg = tagRASDIALDLG;
 
- // Reason flags
 
- // Flags used by the various UIs.
 
- const
 
-   SHTDN_REASON_FLAG_COMMENT_REQUIRED          = $01000000;
 
-   {$EXTERNALSYM SHTDN_REASON_FLAG_COMMENT_REQUIRED}
 
-   SHTDN_REASON_FLAG_DIRTY_PROBLEM_ID_REQUIRED = $02000000;
 
-   {$EXTERNALSYM SHTDN_REASON_FLAG_DIRTY_PROBLEM_ID_REQUIRED}
 
-   SHTDN_REASON_FLAG_CLEAN_UI                  = $04000000;
 
-   {$EXTERNALSYM SHTDN_REASON_FLAG_CLEAN_UI}
 
-   SHTDN_REASON_FLAG_DIRTY_UI                  = $08000000;
 
-   {$EXTERNALSYM SHTDN_REASON_FLAG_DIRTY_UI}
 
- // Flags that end up in the event log code.
 
-   SHTDN_REASON_FLAG_USER_DEFINED = $40000000;
 
-   {$EXTERNALSYM SHTDN_REASON_FLAG_USER_DEFINED}
 
-   SHTDN_REASON_FLAG_PLANNED      = DWORD($80000000);
 
-   {$EXTERNALSYM SHTDN_REASON_FLAG_PLANNED}
 
- // Microsoft major reasons.
 
-   SHTDN_REASON_MAJOR_OTHER           = $00000000;
 
-   {$EXTERNALSYM SHTDN_REASON_MAJOR_OTHER}
 
-   SHTDN_REASON_MAJOR_NONE            = $00000000;
 
-   {$EXTERNALSYM SHTDN_REASON_MAJOR_NONE}
 
-   SHTDN_REASON_MAJOR_HARDWARE        = $00010000;
 
-   {$EXTERNALSYM SHTDN_REASON_MAJOR_HARDWARE}
 
-   SHTDN_REASON_MAJOR_OPERATINGSYSTEM = $00020000;
 
-   {$EXTERNALSYM SHTDN_REASON_MAJOR_OPERATINGSYSTEM}
 
-   SHTDN_REASON_MAJOR_SOFTWARE        = $00030000;
 
-   {$EXTERNALSYM SHTDN_REASON_MAJOR_SOFTWARE}
 
-   SHTDN_REASON_MAJOR_APPLICATION     = $00040000;
 
-   {$EXTERNALSYM SHTDN_REASON_MAJOR_APPLICATION}
 
-   SHTDN_REASON_MAJOR_SYSTEM          = $00050000;
 
-   {$EXTERNALSYM SHTDN_REASON_MAJOR_SYSTEM}
 
-   SHTDN_REASON_MAJOR_POWER           = $00060000;
 
-   {$EXTERNALSYM SHTDN_REASON_MAJOR_POWER}
 
-   SHTDN_REASON_MAJOR_LEGACY_API      = $00070000;
 
-   {$EXTERNALSYM SHTDN_REASON_MAJOR_LEGACY_API}
 
- // Microsoft minor reasons.
 
-   SHTDN_REASON_MINOR_OTHER           = $00000000;
 
-   {$EXTERNALSYM SHTDN_REASON_MINOR_OTHER}
 
-   SHTDN_REASON_MINOR_NONE            = $000000ff;
 
-   {$EXTERNALSYM SHTDN_REASON_MINOR_NONE}
 
-   SHTDN_REASON_MINOR_MAINTENANCE     = $00000001;
 
-   {$EXTERNALSYM SHTDN_REASON_MINOR_MAINTENANCE}
 
-   SHTDN_REASON_MINOR_INSTALLATION    = $00000002;
 
-   {$EXTERNALSYM SHTDN_REASON_MINOR_INSTALLATION}
 
-   SHTDN_REASON_MINOR_UPGRADE         = $00000003;
 
-   {$EXTERNALSYM SHTDN_REASON_MINOR_UPGRADE}
 
-   SHTDN_REASON_MINOR_RECONFIG        = $00000004;
 
-   {$EXTERNALSYM SHTDN_REASON_MINOR_RECONFIG}
 
-   SHTDN_REASON_MINOR_HUNG            = $00000005;
 
-   {$EXTERNALSYM SHTDN_REASON_MINOR_HUNG}
 
-   SHTDN_REASON_MINOR_UNSTABLE        = $00000006;
 
-   {$EXTERNALSYM SHTDN_REASON_MINOR_UNSTABLE}
 
-   SHTDN_REASON_MINOR_DISK            = $00000007;
 
-   {$EXTERNALSYM SHTDN_REASON_MINOR_DISK}
 
-   SHTDN_REASON_MINOR_PROCESSOR       = $00000008;
 
-   {$EXTERNALSYM SHTDN_REASON_MINOR_PROCESSOR}
 
-   SHTDN_REASON_MINOR_NETWORKCARD     = $00000009;
 
-   {$EXTERNALSYM SHTDN_REASON_MINOR_NETWORKCARD}
 
-   SHTDN_REASON_MINOR_POWER_SUPPLY    = $0000000a;
 
-   {$EXTERNALSYM SHTDN_REASON_MINOR_POWER_SUPPLY}
 
-   SHTDN_REASON_MINOR_CORDUNPLUGGED   = $0000000b;
 
-   {$EXTERNALSYM SHTDN_REASON_MINOR_CORDUNPLUGGED}
 
-   SHTDN_REASON_MINOR_ENVIRONMENT     = $0000000c;
 
-   {$EXTERNALSYM SHTDN_REASON_MINOR_ENVIRONMENT}
 
-   SHTDN_REASON_MINOR_HARDWARE_DRIVER = $0000000d;
 
-   {$EXTERNALSYM SHTDN_REASON_MINOR_HARDWARE_DRIVER}
 
-   SHTDN_REASON_MINOR_OTHERDRIVER     = $0000000e;
 
-   {$EXTERNALSYM SHTDN_REASON_MINOR_OTHERDRIVER}
 
-   SHTDN_REASON_MINOR_BLUESCREEN      = $0000000F;
 
-   {$EXTERNALSYM SHTDN_REASON_MINOR_BLUESCREEN}
 
-   SHTDN_REASON_MINOR_SERVICEPACK           = $00000010;
 
-   {$EXTERNALSYM SHTDN_REASON_MINOR_SERVICEPACK}
 
-   SHTDN_REASON_MINOR_HOTFIX                = $00000011;
 
-   {$EXTERNALSYM SHTDN_REASON_MINOR_HOTFIX}
 
-   SHTDN_REASON_MINOR_SECURITYFIX           = $00000012;
 
-   {$EXTERNALSYM SHTDN_REASON_MINOR_SECURITYFIX}
 
-   SHTDN_REASON_MINOR_SECURITY              = $00000013;
 
-   {$EXTERNALSYM SHTDN_REASON_MINOR_SECURITY}
 
-   SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY  = $00000014;
 
-   {$EXTERNALSYM SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY}
 
-   SHTDN_REASON_MINOR_WMI                   = $00000015;
 
-   {$EXTERNALSYM SHTDN_REASON_MINOR_WMI}
 
-   SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL = $00000016;
 
-   {$EXTERNALSYM SHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL}
 
-   SHTDN_REASON_MINOR_HOTFIX_UNINSTALL      = $00000017;
 
-   {$EXTERNALSYM SHTDN_REASON_MINOR_HOTFIX_UNINSTALL}
 
-   SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL = $00000018;
 
-   {$EXTERNALSYM SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL}
 
-   SHTDN_REASON_MINOR_MMC                   = $00000019;
 
-   {$EXTERNALSYM SHTDN_REASON_MINOR_MMC}
 
-   SHTDN_REASON_MINOR_TERMSRV               = $00000020;
 
-   {$EXTERNALSYM SHTDN_REASON_MINOR_TERMSRV}
 
-   SHTDN_REASON_MINOR_DC_PROMOTION          = $00000021;
 
-   {$EXTERNALSYM SHTDN_REASON_MINOR_DC_PROMOTION}
 
-   SHTDN_REASON_MINOR_DC_DEMOTION           = $00000022;
 
-   {$EXTERNALSYM SHTDN_REASON_MINOR_DC_DEMOTION}
 
-   SHTDN_REASON_UNKNOWN = SHTDN_REASON_MINOR_NONE;
 
-   {$EXTERNALSYM SHTDN_REASON_UNKNOWN}
 
-   SHTDN_REASON_LEGACY_API = (SHTDN_REASON_MAJOR_LEGACY_API or SHTDN_REASON_FLAG_PLANNED);
 
-   {$EXTERNALSYM SHTDN_REASON_LEGACY_API}
 
- // This mask cuts out UI flags.
 
-   SHTDN_REASON_VALID_BIT_MASK = DWORD($c0ffffff);
 
-   {$EXTERNALSYM SHTDN_REASON_VALID_BIT_MASK}
 
- // Convenience flags.
 
-   PCLEANUI = (SHTDN_REASON_FLAG_PLANNED or SHTDN_REASON_FLAG_CLEAN_UI);
 
-   {$EXTERNALSYM PCLEANUI}
 
-   UCLEANUI = (SHTDN_REASON_FLAG_CLEAN_UI);
 
-   {$EXTERNALSYM UCLEANUI}
 
-   PDIRTYUI = (SHTDN_REASON_FLAG_PLANNED or SHTDN_REASON_FLAG_DIRTY_UI);
 
-   {$EXTERNALSYM PDIRTYUI}
 
-   UDIRTYUI = (SHTDN_REASON_FLAG_DIRTY_UI);
 
-   {$EXTERNALSYM UDIRTYUI}
 
- const
 
-   CSIDL_LOCAL_APPDATA        = $001C; { <user name>\Local Settings\Application Data (non roaming) }
 
-   CSIDL_COMMON_APPDATA       = $0023; { All Users\Application Data }
 
-   CSIDL_WINDOWS              = $0024; { GetWindowsDirectory() }
 
-   CSIDL_SYSTEM               = $0025; { GetSystemDirectory() }
 
-   CSIDL_PROGRAM_FILES        = $0026; { C:\Program Files }
 
-   CSIDL_MYPICTURES           = $0027; { C:\Program Files\My Pictures }
 
-   CSIDL_PROFILE              = $0028; { USERPROFILE }
 
-   CSIDL_PROGRAM_FILESX86     = $002A; { C:\Program Files (x86)\My Pictures }
 
-   CSIDL_PROGRAM_FILES_COMMON = $002B; { C:\Program Files\Common }
 
-   CSIDL_COMMON_TEMPLATES     = $002D; { All Users\Templates }
 
-   CSIDL_COMMON_DOCUMENTS     = $002E; { All Users\Documents }
 
-   CSIDL_COMMON_ADMINTOOLS    = $002F; { All Users\Start Menu\Programs\Administrative Tools }
 
-   CSIDL_ADMINTOOLS           = $0030; { <user name>\Start Menu\Programs\Administrative Tools }
 
-   CSIDL_CONNECTIONS          = $0031; { Network and Dial-up Connections }
 
-   CSIDL_COMMON_MUSIC         = $0035; { All Users\My Music }
 
-   CSIDL_COMMON_PICTURES      = $0036; { All Users\My Pictures }
 
-   CSIDL_COMMON_VIDEO         = $0037; { All Users\My Video }
 
-   CSIDL_RESOURCES            = $0038; { Resource Directory }
 
-   CSIDL_RESOURCES_LOCALIZED  = $0039; { Localized Resource Directory }
 
-   CSIDL_COMMON_OEM_LINKS     = $003A; { Links to All Users OEM specific apps }
 
-   CSIDL_CDBURN_AREA          = $003B; { USERPROFILE\Local Settings\Application Data\Microsoft\CD Burning }
 
-   CSIDL_COMPUTERSNEARME      = $003D; { Computers Near Me (computered from Workgroup membership) }
 
-   {$EXTERNALSYM CSIDL_LOCAL_APPDATA}
 
-   {$EXTERNALSYM CSIDL_COMMON_APPDATA}
 
-   {$EXTERNALSYM CSIDL_WINDOWS}
 
-   {$EXTERNALSYM CSIDL_SYSTEM}
 
-   {$EXTERNALSYM CSIDL_PROGRAM_FILES}
 
-   {$EXTERNALSYM CSIDL_MYPICTURES}
 
-   {$EXTERNALSYM CSIDL_PROFILE}
 
-   {$EXTERNALSYM CSIDL_PROGRAM_FILESX86}
 
-   {$EXTERNALSYM CSIDL_PROGRAM_FILES_COMMON}
 
-   {$EXTERNALSYM CSIDL_COMMON_TEMPLATES}
 
-   {$EXTERNALSYM CSIDL_COMMON_DOCUMENTS}
 
-   {$EXTERNALSYM CSIDL_COMMON_ADMINTOOLS}
 
-   {$EXTERNALSYM CSIDL_ADMINTOOLS}
 
-   {$EXTERNALSYM CSIDL_CONNECTIONS}
 
-   {$EXTERNALSYM CSIDL_COMMON_MUSIC}
 
-   {$EXTERNALSYM CSIDL_COMMON_PICTURES}
 
-   {$EXTERNALSYM CSIDL_COMMON_VIDEO}
 
-   {$EXTERNALSYM CSIDL_RESOURCES}
 
-   {$EXTERNALSYM CSIDL_RESOURCES_LOCALIZED}
 
-   {$EXTERNALSYM CSIDL_COMMON_OEM_LINKS}
 
-   {$EXTERNALSYM CSIDL_CDBURN_AREA}
 
-   {$EXTERNALSYM CSIDL_COMPUTERSNEARME}
 
- type
 
-   ITaskbarList = interface(IUnknown)
 
-     ['{56FDF342-FD6D-11D0-958A-006097C9A090}']
 
-     function HrInit: HRESULT; stdcall;
 
-     function AddTab(hwnd: HWND): HRESULT; stdcall;
 
-     function DeleteTab(hwnd: HWND): HRESULT; stdcall;
 
-     function ActivateTab(hwnd: HWND): HRESULT; stdcall;
 
-     function SetActiveAlt(hwnd: HWND): HRESULT; stdcall;
 
-   end;
 
-   {$EXTERNALSYM ITaskbarList}
 
-   ITaskbarList2 = interface(ITaskbarList)
 
-     ['{602D4995-B13A-429B-A66E-1935E44F4317}']
 
-     function MarkFullscreenWindow(hwnd: HWND; fFullscreen: BOOL): HRESULT; stdcall;
 
-   end;
 
-   {$EXTERNALSYM ITaskbarList2}
 
- type
 
-   THUMBBUTTON = record
 
-     dwMask: DWORD;
 
-     iId: UINT;
 
-     iBitmap: UINT;
 
-     hIcon: HICON;
 
-     szTip: packed array[0..259] of WCHAR;
 
-     dwFlags: DWORD;
 
-   end;
 
-   {$EXTERNALSYM THUMBBUTTON}
 
-   tagTHUMBBUTTON = THUMBBUTTON;
 
-   {$EXTERNALSYM tagTHUMBBUTTON}
 
-   TThumbButton = THUMBBUTTON;
 
-   {$EXTERNALSYM TThumbButton}
 
-   PThumbButton = ^TThumbButton;
 
-   {$EXTERNALSYM PThumbButton}
 
- // for ThumbButtons.dwFlags
 
- const
 
-   THBF_ENABLED        = $0000;
 
-   {$EXTERNALSYM THBF_ENABLED}
 
-   THBF_DISABLED       = $0001;
 
-   {$EXTERNALSYM THBF_DISABLED}
 
-   THBF_DISMISSONCLICK = $0002;
 
-   {$EXTERNALSYM THBF_DISMISSONCLICK}
 
-   THBF_NOBACKGROUND   = $0004;
 
-   {$EXTERNALSYM THBF_NOBACKGROUND}
 
-   THBF_HIDDEN         = $0008;
 
-   {$EXTERNALSYM THBF_HIDDEN}
 
-   THBF_NONINTERACTIVE = $0010;
 
-   {$EXTERNALSYM THBF_NONINTERACTIVE}
 
- // for ThumbButton.dwMask
 
- const
 
-   THB_BITMAP          = $0001;
 
-   {$EXTERNALSYM THB_BITMAP}
 
-   THB_ICON            = $0002;
 
-   {$EXTERNALSYM THB_ICON}
 
-   THB_TOOLTIP         = $0004;
 
-   {$EXTERNALSYM THB_TOOLTIP}
 
-   THB_FLAGS           = $0008;
 
-   {$EXTERNALSYM THB_FLAGS}
 
- // wParam for WM_COMMAND message (lParam = Button ID)
 
- const
 
-   THBN_CLICKED        = $1800;
 
-   {$EXTERNALSYM THBN_CLICKED}
 
- // for ITaskBarList3.SetProgressState
 
- const
 
-   TBPF_NOPROGRESS     = 0;
 
-   {$EXTERNALSYM TBPF_NOPROGRESS}
 
-   TBPF_INDETERMINATE  = $1;
 
-   {$EXTERNALSYM TBPF_INDETERMINATE}
 
-   TBPF_NORMAL         = $2;
 
-   {$EXTERNALSYM TBPF_NORMAL}
 
-   TBPF_ERROR          = $4;
 
-   {$EXTERNALSYM TBPF_ERROR}
 
-   TBPF_PAUSED         = $8;
 
-   {$EXTERNALSYM TBPF_PAUSED}
 
- type
 
-   ITaskbarList3 = interface(ITaskbarList2)
 
-     ['{EA1AFB91-9E28-4B86-90E9-9E9F8A5EEFAF}']
 
-     function SetProgressValue(hwnd: HWND; ullCompleted: ULONGLONG;
 
-       ullTotal: ULONGLONG): HRESULT; stdcall;
 
-     function SetProgressState(hwnd: HWND; tbpFlags: Integer): HRESULT; stdcall;
 
-     function RegisterTab(hwndTab: HWND; hwndMDI: HWND): HRESULT; stdcall;
 
-     function UnregisterTab(hwndTab: HWND): HRESULT; stdcall;
 
-     function SetTabOrder(hwndTab: HWND; hwndInsertBefore: HWND): HRESULT; stdcall;
 
-     function SetTabActive(hwndTab: HWND; hwndMDI: HWND;
 
-       tbatFlags: Integer): HRESULT; stdcall;
 
-     function ThumbBarAddButtons(hwnd: HWND; cButtons: UINT;
 
-       pButton: PThumbButton): HRESULT; stdcall;
 
-     function ThumbBarUpdateButtons(hwnd: HWND; cButtons: UINT;
 
-       pButton: PThumbButton): HRESULT; stdcall;
 
-     function ThumbBarSetImageList(hwnd: HWND; himl: THandle): HRESULT; stdcall;
 
-     function SetOverlayIcon(hwnd: HWND; hIcon: HICON;
 
-       pszDescription: LPCWSTR): HRESULT; stdcall;
 
-     function SetThumbnailTooltip(hwnd: HWND; pszTip: LPCWSTR): HRESULT; stdcall;
 
-     function SetThumbnailClip(hwnd: HWND; var prcClip: TRect): HRESULT; stdcall;
 
-   end;
 
-   {$EXTERNALSYM ITaskbarList3}
 
- type
 
-   STPFLAG = Integer;
 
-   {$EXTERNALSYM STPFLAG}
 
- const
 
-   STPF_NONE                      = 0;
 
-   {$EXTERNALSYM STPF_NONE}
 
-   STPF_USEAPPTHUMBNAILALWAYS     = $1;
 
-   {$EXTERNALSYM STPF_USEAPPTHUMBNAILALWAYS}
 
-   STPF_USEAPPTHUMBNAILWHENACTIVE = $2;
 
-   {$EXTERNALSYM STPF_USEAPPTHUMBNAILWHENACTIVE}
 
-   STPF_USEAPPPEEKALWAYS          = $4;
 
-   {$EXTERNALSYM STPF_USEAPPPEEKALWAYS}
 
-   STPF_USEAPPPEEKWHENACTIVE      = $8;
 
-   {$EXTERNALSYM STPF_USEAPPPEEKWHENACTIVE}
 
- type
 
-   ITaskbarList4 = interface(ITaskbarList3)
 
-     ['{C43DC798-95D1-4BEA-9030-BB99E2983A1A}']
 
-     function SetTabProperties(hwndTab: HWND; stpFlags: STPFLAG): HRESULT; stdcall;
 
-   end;
 
-   {$EXTERNALSYM ITaskbarList4}
 
- const
 
-   CLSID_TaskbarList: TGUID                            = '{56FDF344-FD6D-11d0-958A-006097C9A090}';
 
-   {$EXTERNALSYM CLSID_TaskbarList}
 
- { TODO BCB-compatibility}
 
- const
 
-   DLLVER_PLATFORM_WINDOWS = $00000001;
 
-   {$EXTERNALSYM DLLVER_PLATFORM_WINDOWS}
 
-   DLLVER_PLATFORM_NT      = $00000002;
 
-   {$EXTERNALSYM DLLVER_PLATFORM_NT}
 
- type
 
-   PDllVersionInfo = ^TDllVersionInfo;
 
-   _DLLVERSIONINFO = packed record
 
-     cbSize: DWORD;
 
-     dwMajorVersion: DWORD;
 
-     dwMinorVersion: DWORD;
 
-     dwBuildNumber: DWORD;
 
-     dwPlatformId: DWORD;
 
-   end;
 
-   {$EXTERNALSYM _DLLVERSIONINFO}
 
-   TDllVersionInfo = _DLLVERSIONINFO;
 
-   DLLVERSIONINFO = _DLLVERSIONINFO;
 
-   {$EXTERNALSYM DLLVERSIONINFO}
 
- // JwaWinError
 
- // line 22146
 
- const
 
- //
 
- // Task Scheduler errors
 
- //
 
- //
 
- // MessageId: SCHED_S_TASK_READY
 
- //
 
- // MessageText:
 
- //
 
- //  The task is ready to run at its next scheduled time.
 
- //
 
-   SCHED_S_TASK_READY = HRESULT($00041300);
 
-   {$EXTERNALSYM SCHED_S_TASK_READY}
 
- //
 
- // MessageId: SCHED_S_TASK_RUNNING
 
- //
 
- // MessageText:
 
- //
 
- //  The task is currently running.
 
- //
 
-   SCHED_S_TASK_RUNNING = HRESULT($00041301);
 
-   {$EXTERNALSYM SCHED_S_TASK_RUNNING}
 
- //
 
- // MessageId: SCHED_S_TASK_DISABLED
 
- //
 
- // MessageText:
 
- //
 
- //  The task will not run at the scheduled times because it has been disabled.
 
- //
 
-   SCHED_S_TASK_DISABLED = HRESULT($00041302);
 
-   {$EXTERNALSYM SCHED_S_TASK_DISABLED}
 
- //
 
- // MessageId: SCHED_S_TASK_HAS_NOT_RUN
 
- //
 
- // MessageText:
 
- //
 
- //  The task has not yet run.
 
- //
 
-   SCHED_S_TASK_HAS_NOT_RUN = HRESULT($00041303);
 
-   {$EXTERNALSYM SCHED_S_TASK_HAS_NOT_RUN}
 
- //
 
- // MessageId: SCHED_S_TASK_NO_MORE_RUNS
 
- //
 
- // MessageText:
 
- //
 
- //  There are no more runs scheduled for this task.
 
- //
 
-   SCHED_S_TASK_NO_MORE_RUNS = HRESULT($00041304);
 
-   {$EXTERNALSYM SCHED_S_TASK_NO_MORE_RUNS}
 
- //
 
- // MessageId: SCHED_S_TASK_NOT_SCHEDULED
 
- //
 
- // MessageText:
 
- //
 
- //  One or more of the properties that are needed to run this task on a schedule have not been set.
 
- //
 
-   SCHED_S_TASK_NOT_SCHEDULED = HRESULT($00041305);
 
-   {$EXTERNALSYM SCHED_S_TASK_NOT_SCHEDULED}
 
- //
 
- // MessageId: SCHED_S_TASK_TERMINATED
 
- //
 
- // MessageText:
 
- //
 
- //  The last run of the task was terminated by the user.
 
- //
 
-   SCHED_S_TASK_TERMINATED = HRESULT($00041306);
 
-   {$EXTERNALSYM SCHED_S_TASK_TERMINATED}
 
- //
 
- // MessageId: SCHED_S_TASK_NO_VALID_TRIGGERS
 
- //
 
- // MessageText:
 
- //
 
- //  Either the task has no triggers or the existing triggers are disabled or not set.
 
- //
 
-   SCHED_S_TASK_NO_VALID_TRIGGERS = HRESULT($00041307);
 
-   {$EXTERNALSYM SCHED_S_TASK_NO_VALID_TRIGGERS}
 
- //
 
- // MessageId: SCHED_S_EVENT_TRIGGER
 
- //
 
- // MessageText:
 
- //
 
- //  Event triggers don't have set run times.
 
- //
 
-   SCHED_S_EVENT_TRIGGER = HRESULT($00041308);
 
-   {$EXTERNALSYM SCHED_S_EVENT_TRIGGER}
 
- //
 
- // MessageId: SCHED_E_TRIGGER_NOT_FOUND
 
- //
 
- // MessageText:
 
- //
 
- //  Trigger not found.
 
- //
 
-   SCHED_E_TRIGGER_NOT_FOUND = HRESULT($80041309);
 
-   {$EXTERNALSYM SCHED_E_TRIGGER_NOT_FOUND}
 
- //
 
- // MessageId: SCHED_E_TASK_NOT_READY
 
- //
 
- // MessageText:
 
- //
 
- //  One or more of the properties that are needed to run this task have not been set.
 
- //
 
-   SCHED_E_TASK_NOT_READY = HRESULT($8004130A);
 
-   {$EXTERNALSYM SCHED_E_TASK_NOT_READY}
 
- //
 
- // MessageId: SCHED_E_TASK_NOT_RUNNING
 
- //
 
- // MessageText:
 
- //
 
- //  There is no running instance of the task to terminate.
 
- //
 
-   SCHED_E_TASK_NOT_RUNNING = HRESULT($8004130B);
 
-   {$EXTERNALSYM SCHED_E_TASK_NOT_RUNNING}
 
- //
 
- // MessageId: SCHED_E_SERVICE_NOT_INSTALLED
 
- //
 
- // MessageText:
 
- //
 
- //  The Task Scheduler Service is not installed on this computer.
 
- //
 
-   SCHED_E_SERVICE_NOT_INSTALLED = HRESULT($8004130C);
 
-   {$EXTERNALSYM SCHED_E_SERVICE_NOT_INSTALLED}
 
- //
 
- // MessageId: SCHED_E_CANNOT_OPEN_TASK
 
- //
 
- // MessageText:
 
- //
 
- //  The task object could not be opened.
 
- //
 
-   SCHED_E_CANNOT_OPEN_TASK = HRESULT($8004130D);
 
-   {$EXTERNALSYM SCHED_E_CANNOT_OPEN_TASK}
 
- //
 
- // MessageId: SCHED_E_INVALID_TASK
 
- //
 
- // MessageText:
 
- //
 
- //  The object is either an invalid task object or is not a task object.
 
- //
 
-   SCHED_E_INVALID_TASK = HRESULT($8004130E);
 
-   {$EXTERNALSYM SCHED_E_INVALID_TASK}
 
- //
 
- // MessageId: SCHED_E_ACCOUNT_INFORMATION_NOT_SET
 
- //
 
- // MessageText:
 
- //
 
- //  No account information could be found in the Task Scheduler security database for the task indicated.
 
- //
 
-   SCHED_E_ACCOUNT_INFORMATION_NOT_SET = HRESULT($8004130F);
 
-   {$EXTERNALSYM SCHED_E_ACCOUNT_INFORMATION_NOT_SET}
 
- //
 
- // MessageId: SCHED_E_ACCOUNT_NAME_NOT_FOUND
 
- //
 
- // MessageText:
 
- //
 
- //  Unable to establish existence of the account specified.
 
- //
 
-   SCHED_E_ACCOUNT_NAME_NOT_FOUND = HRESULT($80041310);
 
-   {$EXTERNALSYM SCHED_E_ACCOUNT_NAME_NOT_FOUND}
 
- //
 
- // MessageId: SCHED_E_ACCOUNT_DBASE_CORRUPT
 
- //
 
- // MessageText:
 
- //
 
- //  Corruption was detected in the Task Scheduler security database; the database has been reset.
 
- //
 
-   SCHED_E_ACCOUNT_DBASE_CORRUPT = HRESULT($80041311);
 
-   {$EXTERNALSYM SCHED_E_ACCOUNT_DBASE_CORRUPT}
 
- //
 
- // MessageId: SCHED_E_NO_SECURITY_SERVICES
 
- //
 
- // MessageText:
 
- //
 
- //  Task Scheduler security services are available only on Windows NT.
 
- //
 
-   SCHED_E_NO_SECURITY_SERVICES = HRESULT($80041312);
 
-   {$EXTERNALSYM SCHED_E_NO_SECURITY_SERVICES}
 
- //
 
- // MessageId: SCHED_E_UNKNOWN_OBJECT_VERSION
 
- //
 
- // MessageText:
 
- //
 
- //  The task object version is either unsupported or invalid.
 
- //
 
-   SCHED_E_UNKNOWN_OBJECT_VERSION = HRESULT($80041313);
 
-   {$EXTERNALSYM SCHED_E_UNKNOWN_OBJECT_VERSION}
 
- //
 
- // MessageId: SCHED_E_UNSUPPORTED_ACCOUNT_OPTION
 
- //
 
- // MessageText:
 
- //
 
- //  The task has been configured with an unsupported combination of account settings and run time options.
 
- //
 
-   SCHED_E_UNSUPPORTED_ACCOUNT_OPTION = HRESULT($80041314);
 
-   {$EXTERNALSYM SCHED_E_UNSUPPORTED_ACCOUNT_OPTION}
 
- //
 
- // MessageId: SCHED_E_SERVICE_NOT_RUNNING
 
- //
 
- // MessageText:
 
- //
 
- //  The Task Scheduler Service is not running.
 
- //
 
-   SCHED_E_SERVICE_NOT_RUNNING = HRESULT($80041315);
 
-   {$EXTERNALSYM SCHED_E_SERVICE_NOT_RUNNING}
 
- // line 151
 
- //
 
- // Define the various device type values.  Note that values used by Microsoft
 
- // Corporation are in the range 0-32767, and 32768-65535 are reserved for use
 
- // by customers.
 
- //
 
- type
 
-   DEVICE_TYPE = DWORD;
 
-   {$EXTERNALSYM DEVICE_TYPE}
 
- const
 
-   FILE_DEVICE_BEEP                = $00000001;
 
-   {$EXTERNALSYM FILE_DEVICE_BEEP}
 
-   FILE_DEVICE_CD_ROM              = $00000002;
 
-   {$EXTERNALSYM FILE_DEVICE_CD_ROM}
 
-   FILE_DEVICE_CD_ROM_FILE_SYSTEM  = $00000003;
 
-   {$EXTERNALSYM FILE_DEVICE_CD_ROM_FILE_SYSTEM}
 
-   FILE_DEVICE_CONTROLLER          = $00000004;
 
-   {$EXTERNALSYM FILE_DEVICE_CONTROLLER}
 
-   FILE_DEVICE_DATALINK            = $00000005;
 
-   {$EXTERNALSYM FILE_DEVICE_DATALINK}
 
-   FILE_DEVICE_DFS                 = $00000006;
 
-   {$EXTERNALSYM FILE_DEVICE_DFS}
 
-   FILE_DEVICE_DISK                = $00000007;
 
-   {$EXTERNALSYM FILE_DEVICE_DISK}
 
-   FILE_DEVICE_DISK_FILE_SYSTEM    = $00000008;
 
-   {$EXTERNALSYM FILE_DEVICE_DISK_FILE_SYSTEM}
 
-   FILE_DEVICE_FILE_SYSTEM         = $00000009;
 
-   {$EXTERNALSYM FILE_DEVICE_FILE_SYSTEM}
 
-   FILE_DEVICE_INPORT_PORT         = $0000000a;
 
-   {$EXTERNALSYM FILE_DEVICE_INPORT_PORT}
 
-   FILE_DEVICE_KEYBOARD            = $0000000b;
 
-   {$EXTERNALSYM FILE_DEVICE_KEYBOARD}
 
-   FILE_DEVICE_MAILSLOT            = $0000000c;
 
-   {$EXTERNALSYM FILE_DEVICE_MAILSLOT}
 
-   FILE_DEVICE_MIDI_IN             = $0000000d;
 
-   {$EXTERNALSYM FILE_DEVICE_MIDI_IN}
 
-   FILE_DEVICE_MIDI_OUT            = $0000000e;
 
-   {$EXTERNALSYM FILE_DEVICE_MIDI_OUT}
 
-   FILE_DEVICE_MOUSE               = $0000000f;
 
-   {$EXTERNALSYM FILE_DEVICE_MOUSE}
 
-   FILE_DEVICE_MULTI_UNC_PROVIDER  = $00000010;
 
-   {$EXTERNALSYM FILE_DEVICE_MULTI_UNC_PROVIDER}
 
-   FILE_DEVICE_NAMED_PIPE          = $00000011;
 
-   {$EXTERNALSYM FILE_DEVICE_NAMED_PIPE}
 
-   FILE_DEVICE_NETWORK             = $00000012;
 
-   {$EXTERNALSYM FILE_DEVICE_NETWORK}
 
-   FILE_DEVICE_NETWORK_BROWSER     = $00000013;
 
-   {$EXTERNALSYM FILE_DEVICE_NETWORK_BROWSER}
 
-   FILE_DEVICE_NETWORK_FILE_SYSTEM = $00000014;
 
-   {$EXTERNALSYM FILE_DEVICE_NETWORK_FILE_SYSTEM}
 
-   FILE_DEVICE_NULL                = $00000015;
 
-   {$EXTERNALSYM FILE_DEVICE_NULL}
 
-   FILE_DEVICE_PARALLEL_PORT       = $00000016;
 
-   {$EXTERNALSYM FILE_DEVICE_PARALLEL_PORT}
 
-   FILE_DEVICE_PHYSICAL_NETCARD    = $00000017;
 
-   {$EXTERNALSYM FILE_DEVICE_PHYSICAL_NETCARD}
 
-   FILE_DEVICE_PRINTER             = $00000018;
 
-   {$EXTERNALSYM FILE_DEVICE_PRINTER}
 
-   FILE_DEVICE_SCANNER             = $00000019;
 
-   {$EXTERNALSYM FILE_DEVICE_SCANNER}
 
-   FILE_DEVICE_SERIAL_MOUSE_PORT   = $0000001a;
 
-   {$EXTERNALSYM FILE_DEVICE_SERIAL_MOUSE_PORT}
 
-   FILE_DEVICE_SERIAL_PORT         = $0000001b;
 
-   {$EXTERNALSYM FILE_DEVICE_SERIAL_PORT}
 
-   FILE_DEVICE_SCREEN              = $0000001c;
 
-   {$EXTERNALSYM FILE_DEVICE_SCREEN}
 
-   FILE_DEVICE_SOUND               = $0000001d;
 
-   {$EXTERNALSYM FILE_DEVICE_SOUND}
 
-   FILE_DEVICE_STREAMS             = $0000001e;
 
-   {$EXTERNALSYM FILE_DEVICE_STREAMS}
 
-   FILE_DEVICE_TAPE                = $0000001f;
 
-   {$EXTERNALSYM FILE_DEVICE_TAPE}
 
-   FILE_DEVICE_TAPE_FILE_SYSTEM    = $00000020;
 
-   {$EXTERNALSYM FILE_DEVICE_TAPE_FILE_SYSTEM}
 
-   FILE_DEVICE_TRANSPORT           = $00000021;
 
-   {$EXTERNALSYM FILE_DEVICE_TRANSPORT}
 
-   FILE_DEVICE_UNKNOWN             = $00000022;
 
-   {$EXTERNALSYM FILE_DEVICE_UNKNOWN}
 
-   FILE_DEVICE_VIDEO               = $00000023;
 
-   {$EXTERNALSYM FILE_DEVICE_VIDEO}
 
-   FILE_DEVICE_VIRTUAL_DISK        = $00000024;
 
-   {$EXTERNALSYM FILE_DEVICE_VIRTUAL_DISK}
 
-   FILE_DEVICE_WAVE_IN             = $00000025;
 
-   {$EXTERNALSYM FILE_DEVICE_WAVE_IN}
 
-   FILE_DEVICE_WAVE_OUT            = $00000026;
 
-   {$EXTERNALSYM FILE_DEVICE_WAVE_OUT}
 
-   FILE_DEVICE_8042_PORT           = $00000027;
 
-   {$EXTERNALSYM FILE_DEVICE_8042_PORT}
 
-   FILE_DEVICE_NETWORK_REDIRECTOR  = $00000028;
 
-   {$EXTERNALSYM FILE_DEVICE_NETWORK_REDIRECTOR}
 
-   FILE_DEVICE_BATTERY             = $00000029;
 
-   {$EXTERNALSYM FILE_DEVICE_BATTERY}
 
-   FILE_DEVICE_BUS_EXTENDER        = $0000002a;
 
-   {$EXTERNALSYM FILE_DEVICE_BUS_EXTENDER}
 
-   FILE_DEVICE_MODEM               = $0000002b;
 
-   {$EXTERNALSYM FILE_DEVICE_MODEM}
 
-   FILE_DEVICE_VDM                 = $0000002c;
 
-   {$EXTERNALSYM FILE_DEVICE_VDM}
 
-   FILE_DEVICE_MASS_STORAGE        = $0000002d;
 
-   {$EXTERNALSYM FILE_DEVICE_MASS_STORAGE}
 
-   FILE_DEVICE_SMB                 = $0000002e;
 
-   {$EXTERNALSYM FILE_DEVICE_SMB}
 
-   FILE_DEVICE_KS                  = $0000002f;
 
-   {$EXTERNALSYM FILE_DEVICE_KS}
 
-   FILE_DEVICE_CHANGER             = $00000030;
 
-   {$EXTERNALSYM FILE_DEVICE_CHANGER}
 
-   FILE_DEVICE_SMARTCARD           = $00000031;
 
-   {$EXTERNALSYM FILE_DEVICE_SMARTCARD}
 
-   FILE_DEVICE_ACPI                = $00000032;
 
-   {$EXTERNALSYM FILE_DEVICE_ACPI}
 
-   FILE_DEVICE_DVD                 = $00000033;
 
-   {$EXTERNALSYM FILE_DEVICE_DVD}
 
-   FILE_DEVICE_FULLSCREEN_VIDEO    = $00000034;
 
-   {$EXTERNALSYM FILE_DEVICE_FULLSCREEN_VIDEO}
 
-   FILE_DEVICE_DFS_FILE_SYSTEM     = $00000035;
 
-   {$EXTERNALSYM FILE_DEVICE_DFS_FILE_SYSTEM}
 
-   FILE_DEVICE_DFS_VOLUME          = $00000036;
 
-   {$EXTERNALSYM FILE_DEVICE_DFS_VOLUME}
 
-   FILE_DEVICE_SERENUM             = $00000037;
 
-   {$EXTERNALSYM FILE_DEVICE_SERENUM}
 
-   FILE_DEVICE_TERMSRV             = $00000038;
 
-   {$EXTERNALSYM FILE_DEVICE_TERMSRV}
 
-   FILE_DEVICE_KSEC                = $00000039;
 
-   {$EXTERNALSYM FILE_DEVICE_KSEC}
 
-   FILE_DEVICE_FIPS                = $0000003A;
 
-   {$EXTERNALSYM FILE_DEVICE_FIPS}
 
-   FILE_DEVICE_INFINIBAND          = $0000003B;
 
-   {$EXTERNALSYM FILE_DEVICE_INFINIBAND}
 
- // line 297
 
- //
 
- // Define the method codes for how buffers are passed for I/O and FS controls
 
- //
 
- const
 
-   METHOD_BUFFERED   = 0;
 
-   {$EXTERNALSYM METHOD_BUFFERED}
 
-   METHOD_IN_DIRECT  = 1;
 
-   {$EXTERNALSYM METHOD_IN_DIRECT}
 
-   METHOD_OUT_DIRECT = 2;
 
-   {$EXTERNALSYM METHOD_OUT_DIRECT}
 
-   METHOD_NEITHER    = 3;
 
-   {$EXTERNALSYM METHOD_NEITHER}
 
- //
 
- // Define some easier to comprehend aliases:
 
- //   METHOD_DIRECT_TO_HARDWARE (writes, aka METHOD_IN_DIRECT)
 
- //   METHOD_DIRECT_FROM_HARDWARE (reads, aka METHOD_OUT_DIRECT)
 
- //
 
-   METHOD_DIRECT_TO_HARDWARE     = METHOD_IN_DIRECT;
 
-   {$EXTERNALSYM METHOD_DIRECT_TO_HARDWARE}
 
-   METHOD_DIRECT_FROM_HARDWARE   = METHOD_OUT_DIRECT;
 
-   {$EXTERNALSYM METHOD_DIRECT_FROM_HARDWARE}
 
- //
 
- // Define the access check value for any access
 
- //
 
- //
 
- // The FILE_READ_ACCESS and FILE_WRITE_ACCESS constants are also defined in
 
- // ntioapi.h as FILE_READ_DATA and FILE_WRITE_DATA. The values for these
 
- // constants *MUST* always be in sync.
 
- //
 
- //
 
- // FILE_SPECIAL_ACCESS is checked by the NT I/O system the same as FILE_ANY_ACCESS.
 
- // The file systems, however, may add additional access checks for I/O and FS controls
 
- // that use this value.
 
- //
 
- const
 
-   FILE_ANY_ACCESS     = 0;
 
-   {$EXTERNALSYM FILE_ANY_ACCESS}
 
-   FILE_SPECIAL_ACCESS = FILE_ANY_ACCESS;
 
-   {$EXTERNALSYM FILE_SPECIAL_ACCESS}
 
-   FILE_READ_ACCESS    = $0001;           // file & pipe
 
-   {$EXTERNALSYM FILE_READ_ACCESS}
 
-   FILE_WRITE_ACCESS   = $0002;           // file & pipe
 
-   {$EXTERNALSYM FILE_WRITE_ACCESS}
 
- // line 3425
 
- //
 
- // The following is a list of the native file system fsctls followed by
 
- // additional network file system fsctls.  Some values have been
 
- // decommissioned.
 
- //
 
- const
 
-   FSCTL_REQUEST_OPLOCK_LEVEL_1 = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (0 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_REQUEST_OPLOCK_LEVEL_1}
 
-   FSCTL_REQUEST_OPLOCK_LEVEL_2 = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (1 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_REQUEST_OPLOCK_LEVEL_2}
 
-   FSCTL_REQUEST_BATCH_OPLOCK = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (2 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_REQUEST_BATCH_OPLOCK}
 
-   FSCTL_OPLOCK_BREAK_ACKNOWLEDGE = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (3 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_OPLOCK_BREAK_ACKNOWLEDGE}
 
-   FSCTL_OPBATCH_ACK_CLOSE_PENDING = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (4 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_OPBATCH_ACK_CLOSE_PENDING}
 
-   FSCTL_OPLOCK_BREAK_NOTIFY = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (5 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_OPLOCK_BREAK_NOTIFY}
 
-   FSCTL_LOCK_VOLUME = ((FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or (6 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_LOCK_VOLUME}
 
-   FSCTL_UNLOCK_VOLUME = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (7 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_UNLOCK_VOLUME}
 
-   FSCTL_DISMOUNT_VOLUME = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (8 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_DISMOUNT_VOLUME}
 
- // decommissioned fsctl value                                              9
 
-   FSCTL_IS_VOLUME_MOUNTED = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (10 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_IS_VOLUME_MOUNTED}
 
-   FSCTL_IS_PATHNAME_VALID = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (11 shl 2) or METHOD_BUFFERED);    // PATHNAME_BUFFER,
 
-   {$EXTERNALSYM FSCTL_IS_PATHNAME_VALID}
 
-   FSCTL_MARK_VOLUME_DIRTY = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (12 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_MARK_VOLUME_DIRTY}
 
- // decommissioned fsctl value                                             13
 
-   FSCTL_QUERY_RETRIEVAL_POINTERS = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (14 shl 2) or METHOD_NEITHER);
 
-   {$EXTERNALSYM FSCTL_QUERY_RETRIEVAL_POINTERS}
 
-   FSCTL_GET_COMPRESSION = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (15 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_GET_COMPRESSION}
 
-   FSCTL_SET_COMPRESSION = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or ((FILE_READ_DATA or FILE_WRITE_DATA) shl 14) or
 
-     (16 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_SET_COMPRESSION}
 
- // decommissioned fsctl value                                             17
 
- // decommissioned fsctl value                                             18
 
-   FSCTL_MARK_AS_SYSTEM_HIVE = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (19 shl 2) or METHOD_NEITHER);
 
-   {$EXTERNALSYM FSCTL_MARK_AS_SYSTEM_HIVE}
 
-   FSCTL_OPLOCK_BREAK_ACK_NO_2 = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (20 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_OPLOCK_BREAK_ACK_NO_2}
 
-   FSCTL_INVALIDATE_VOLUMES = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (21 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_INVALIDATE_VOLUMES}
 
-   FSCTL_QUERY_FAT_BPB = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (22 shl 2) or METHOD_BUFFERED); // FSCTL_QUERY_FAT_BPB_BUFFER
 
-   {$EXTERNALSYM FSCTL_QUERY_FAT_BPB}
 
-   FSCTL_REQUEST_FILTER_OPLOCK = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (23 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_REQUEST_FILTER_OPLOCK}
 
-   FSCTL_FILESYSTEM_GET_STATISTICS = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (24 shl 2) or METHOD_BUFFERED); // FILESYSTEM_STATISTICS
 
-   {$EXTERNALSYM FSCTL_FILESYSTEM_GET_STATISTICS}
 
-   FSCTL_GET_NTFS_VOLUME_DATA = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (25 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_GET_NTFS_VOLUME_DATA}
 
-   FSCTL_GET_NTFS_FILE_RECORD = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (26 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_GET_NTFS_FILE_RECORD}
 
-   FSCTL_GET_VOLUME_BITMAP = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (27 shl 2) or METHOD_NEITHER);
 
-   {$EXTERNALSYM FSCTL_GET_VOLUME_BITMAP}
 
-   FSCTL_GET_RETRIEVAL_POINTERS = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (28 shl 2) or METHOD_NEITHER);
 
-   {$EXTERNALSYM FSCTL_GET_RETRIEVAL_POINTERS}
 
-   FSCTL_MOVE_FILE = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_SPECIAL_ACCESS shl 14) or
 
-     (29 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_MOVE_FILE}
 
-   FSCTL_IS_VOLUME_DIRTY = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (30 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_IS_VOLUME_DIRTY}
 
- // decomissioned fsctl value  31
 
- (*  FSCTL_GET_HFS_INFORMATION = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (31 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_GET_HFS_INFORMATION}
 
- *)
 
-   FSCTL_ALLOW_EXTENDED_DASD_IO = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (32 shl 2) or METHOD_NEITHER);
 
-   {$EXTERNALSYM FSCTL_ALLOW_EXTENDED_DASD_IO}
 
- // decommissioned fsctl value                                             33
 
- // decommissioned fsctl value                                             34
 
- (*
 
-   FSCTL_READ_PROPERTY_DATA = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (33 shl 2) or METHOD_NEITHER);
 
-   {$EXTERNALSYM FSCTL_READ_PROPERTY_DATA}
 
-   FSCTL_WRITE_PROPERTY_DATA = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (34 shl 2) or METHOD_NEITHER);
 
-   {$EXTERNALSYM FSCTL_WRITE_PROPERTY_DATA}
 
- *)
 
-   FSCTL_FIND_FILES_BY_SID = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (35 shl 2) or METHOD_NEITHER);
 
-   {$EXTERNALSYM FSCTL_FIND_FILES_BY_SID}
 
- // decommissioned fsctl value                                             36
 
- // decommissioned fsctl value                                             37
 
- (*  FSCTL_DUMP_PROPERTY_DATA = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (37 shl 2) or METHOD_NEITHER);
 
-   {$EXTERNALSYM FSCTL_DUMP_PROPERTY_DATA}
 
- *)
 
-   FSCTL_SET_OBJECT_ID = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_SPECIAL_ACCESS shl 14) or
 
-     (38 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_SET_OBJECT_ID}
 
-   FSCTL_GET_OBJECT_ID = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (39 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_GET_OBJECT_ID}
 
-   FSCTL_DELETE_OBJECT_ID = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_SPECIAL_ACCESS shl 14) or
 
-     (40 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_DELETE_OBJECT_ID}
 
-   FSCTL_SET_REPARSE_POINT = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_SPECIAL_ACCESS shl 14) or
 
-     (41 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_SET_REPARSE_POINT}
 
-   FSCTL_GET_REPARSE_POINT = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (42 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_GET_REPARSE_POINT}
 
-   FSCTL_DELETE_REPARSE_POINT = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_SPECIAL_ACCESS shl 14) or
 
-     (43 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_DELETE_REPARSE_POINT}
 
-   FSCTL_ENUM_USN_DATA = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (44 shl 2) or METHOD_NEITHER);
 
-   {$EXTERNALSYM FSCTL_ENUM_USN_DATA}
 
-   FSCTL_SECURITY_ID_CHECK = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_READ_DATA shl 14) or
 
-     (45 shl 2) or METHOD_NEITHER);
 
-   {$EXTERNALSYM FSCTL_SECURITY_ID_CHECK}
 
-   FSCTL_READ_USN_JOURNAL = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (46 shl 2) or METHOD_NEITHER);
 
-   {$EXTERNALSYM FSCTL_READ_USN_JOURNAL}
 
-   FSCTL_SET_OBJECT_ID_EXTENDED = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_SPECIAL_ACCESS shl 14) or
 
-     (47 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_SET_OBJECT_ID_EXTENDED}
 
-   FSCTL_CREATE_OR_GET_OBJECT_ID = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (48 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_CREATE_OR_GET_OBJECT_ID}
 
-   FSCTL_SET_SPARSE = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_SPECIAL_ACCESS shl 14) or
 
-     (49 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_SET_SPARSE}
 
-   FSCTL_SET_ZERO_DATA = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_WRITE_DATA shl 14) or
 
-     (50 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_SET_ZERO_DATA}
 
-   FSCTL_QUERY_ALLOCATED_RANGES = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_READ_DATA shl 14) or
 
-     (51 shl 2) or METHOD_NEITHER);
 
-   {$EXTERNALSYM FSCTL_QUERY_ALLOCATED_RANGES}
 
- // decommissioned fsctl value                                             52
 
- (*
 
-   FSCTL_ENABLE_UPGRADE = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_WRITE_DATA shl 14) or
 
-     (52 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_ENABLE_UPGRADE}
 
- *)
 
-   FSCTL_SET_ENCRYPTION = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (53 shl 2) or METHOD_NEITHER);
 
-   {$EXTERNALSYM FSCTL_SET_ENCRYPTION}
 
-   FSCTL_ENCRYPTION_FSCTL_IO = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (54 shl 2) or METHOD_NEITHER);
 
-   {$EXTERNALSYM FSCTL_ENCRYPTION_FSCTL_IO}
 
-   FSCTL_WRITE_RAW_ENCRYPTED = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_SPECIAL_ACCESS shl 14) or
 
-     (55 shl 2) or METHOD_NEITHER);
 
-   {$EXTERNALSYM FSCTL_WRITE_RAW_ENCRYPTED}
 
-   FSCTL_READ_RAW_ENCRYPTED = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_SPECIAL_ACCESS shl 14) or
 
-     (56 shl 2) or METHOD_NEITHER);
 
-   {$EXTERNALSYM FSCTL_READ_RAW_ENCRYPTED}
 
-   FSCTL_CREATE_USN_JOURNAL = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (57 shl 2) or METHOD_NEITHER);
 
-   {$EXTERNALSYM FSCTL_CREATE_USN_JOURNAL}
 
-   FSCTL_READ_FILE_USN_DATA = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (58 shl 2) or METHOD_NEITHER);
 
-   {$EXTERNALSYM FSCTL_READ_FILE_USN_DATA}
 
-   FSCTL_WRITE_USN_CLOSE_RECORD = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (59 shl 2) or METHOD_NEITHER);
 
-   {$EXTERNALSYM FSCTL_WRITE_USN_CLOSE_RECORD}
 
-   FSCTL_EXTEND_VOLUME = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (60 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_EXTEND_VOLUME}
 
-   FSCTL_QUERY_USN_JOURNAL = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (61 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_QUERY_USN_JOURNAL}
 
-   FSCTL_DELETE_USN_JOURNAL = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (62 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_DELETE_USN_JOURNAL}
 
-   FSCTL_MARK_HANDLE = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (63 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_MARK_HANDLE}
 
-   FSCTL_SIS_COPYFILE = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (64 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_SIS_COPYFILE}
 
-   FSCTL_SIS_LINK_FILES = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or ((FILE_READ_DATA or FILE_WRITE_DATA) shl 14) or
 
-     (65 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_SIS_LINK_FILES}
 
-   FSCTL_HSM_MSG = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or ((FILE_READ_DATA or FILE_WRITE_DATA) shl 14) or
 
-     (66 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_HSM_MSG}
 
- // decommissioned fsctl value                                             67
 
- (*
 
-   FSCTL_NSS_CONTROL = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_WRITE_DATA shl 14) or
 
-     (67 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_NSS_CONTROL}
 
- *)
 
-   FSCTL_HSM_DATA = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or ((FILE_READ_DATA or FILE_WRITE_DATA) shl 14) or
 
-     (68 shl 2) or METHOD_NEITHER);
 
-   {$EXTERNALSYM FSCTL_HSM_DATA}
 
-   FSCTL_RECALL_FILE = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_ANY_ACCESS shl 14) or
 
-     (69 shl 2) or METHOD_NEITHER);
 
-   {$EXTERNALSYM FSCTL_RECALL_FILE}
 
- // decommissioned fsctl value                                             70
 
- (*
 
-   FSCTL_NSS_RCONTROL = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_READ_DATA shl 14) or
 
-     (70 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_NSS_RCONTROL}
 
- *)
 
-   FSCTL_READ_FROM_PLEX = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_READ_DATA shl 14) or
 
-     (71 shl 2) or METHOD_OUT_DIRECT);
 
-   {$EXTERNALSYM FSCTL_READ_FROM_PLEX}
 
-   FSCTL_FILE_PREFETCH = (
 
-     (FILE_DEVICE_FILE_SYSTEM shl 16) or (FILE_SPECIAL_ACCESS shl 14) or
 
-     (72 shl 2) or METHOD_BUFFERED);
 
-   {$EXTERNALSYM FSCTL_FILE_PREFETCH}
 
- // line 4553
 
- //
 
- // Structure for FSCTL_SET_ZERO_DATA
 
- //
 
- type
 
-   PFILE_ZERO_DATA_INFORMATION = ^FILE_ZERO_DATA_INFORMATION;
 
-   {$EXTERNALSYM PFILE_ZERO_DATA_INFORMATION}
 
-   _FILE_ZERO_DATA_INFORMATION = record
 
-     FileOffset: LARGE_INTEGER;
 
-     BeyondFinalZero: LARGE_INTEGER;
 
-   end;
 
-   {$EXTERNALSYM _FILE_ZERO_DATA_INFORMATION}
 
-   FILE_ZERO_DATA_INFORMATION = _FILE_ZERO_DATA_INFORMATION;
 
-   {$EXTERNALSYM FILE_ZERO_DATA_INFORMATION}
 
-   TFileZeroDataInformation = FILE_ZERO_DATA_INFORMATION;
 
-   PFileZeroDataInformation = PFILE_ZERO_DATA_INFORMATION;
 
- //
 
- // Structure for FSCTL_QUERY_ALLOCATED_RANGES
 
- //
 
- //
 
- // Querying the allocated ranges requires an output buffer to store the
 
- // allocated ranges and an input buffer to specify the range to query.
 
- // The input buffer contains a single entry, the output buffer is an
 
- // array of the following structure.
 
- //
 
-   PFILE_ALLOCATED_RANGE_BUFFER = ^FILE_ALLOCATED_RANGE_BUFFER;
 
-   {$EXTERNALSYM PFILE_ALLOCATED_RANGE_BUFFER}
 
-   _FILE_ALLOCATED_RANGE_BUFFER = record
 
-     FileOffset: LARGE_INTEGER;
 
-     Length: LARGE_INTEGER;
 
-   end;
 
-   {$EXTERNALSYM _FILE_ALLOCATED_RANGE_BUFFER}
 
-   FILE_ALLOCATED_RANGE_BUFFER = _FILE_ALLOCATED_RANGE_BUFFER;
 
-   {$EXTERNALSYM FILE_ALLOCATED_RANGE_BUFFER}
 
-   TFileAllocatedRangeBuffer = FILE_ALLOCATED_RANGE_BUFFER;
 
-   PFileAllocatedRangeBuffer = PFILE_ALLOCATED_RANGE_BUFFER;
 
- // line 340
 
- //
 
- //  Code Page Default Values.
 
- //
 
- const
 
-   CP_ACP        = 0; // default to ANSI code page
 
-   {$EXTERNALSYM CP_ACP}
 
-   CP_OEMCP      = 1; // default to OEM  code page
 
-   {$EXTERNALSYM CP_OEMCP}
 
-   CP_MACCP      = 2; // default to MAC  code page
 
-   {$EXTERNALSYM CP_MACCP}
 
-   CP_THREAD_ACP = 3; // current thread's ANSI code page
 
-   {$EXTERNALSYM CP_THREAD_ACP}
 
-   CP_SYMBOL     = 42; // SYMBOL translations
 
-   {$EXTERNALSYM CP_SYMBOL}
 
-   CP_UTF7 = 65000; // UTF-7 translation
 
-   {$EXTERNALSYM CP_UTF7}
 
-   CP_UTF8 = 65001; // UTF-8 translation
 
-   {$EXTERNALSYM CP_UTF8}
 
- // line 597
 
- const
 
- //
 
- //  The following LCTypes may be used in combination with any other LCTypes.
 
- //
 
- //    LOCALE_NOUSEROVERRIDE is also used in GetTimeFormat and
 
- //    GetDateFormat.
 
- //
 
- //    LOCALE_USE_CP_ACP is used in many of the A (Ansi) apis that need
 
- //    to do string translation.
 
- //
 
- //    LOCALE_RETURN_NUMBER will return the result from GetLocaleInfo as a
 
- //    number instead of a string.  This flag is only valid for the LCTypes
 
- //    beginning with LOCALE_I.
 
- //
 
-   LOCALE_NOUSEROVERRIDE = DWORD($80000000); // do not use user overrides
 
-   {$EXTERNALSYM LOCALE_NOUSEROVERRIDE}
 
-   LOCALE_USE_CP_ACP     = $40000000; // use the system ACP
 
-   {$EXTERNALSYM LOCALE_USE_CP_ACP}
 
-   LOCALE_RETURN_NUMBER = $20000000; // return number instead of string
 
-   {$EXTERNALSYM LOCALE_RETURN_NUMBER}
 
- // line 841
 
- const
 
-   LOCALE_IDEFAULTEBCDICCODEPAGE = $00001012; // default ebcdic code page
 
-   {$EXTERNALSYM LOCALE_IDEFAULTEBCDICCODEPAGE}
 
-   LOCALE_IPAPERSIZE             = $0000100A; // 1 = letter, 5 = legal, 8 = a3, 9 = a4
 
-   {$EXTERNALSYM LOCALE_IPAPERSIZE}
 
-   LOCALE_SENGCURRNAME           = $00001007; // english name of currency
 
-   {$EXTERNALSYM LOCALE_SENGCURRNAME}
 
-   LOCALE_SNATIVECURRNAME        = $00001008; // native name of currency
 
-   {$EXTERNALSYM LOCALE_SNATIVECURRNAME}
 
-   LOCALE_SYEARMONTH             = $00001006; // year month format string
 
-   {$EXTERNALSYM LOCALE_SYEARMONTH}
 
-   LOCALE_SSORTNAME              = $00001013; // sort name
 
-   {$EXTERNALSYM LOCALE_SSORTNAME}
 
-   LOCALE_IDIGITSUBSTITUTION     = $00001014; // 0 = context, 1 = none, 2 = national
 
-   {$EXTERNALSYM LOCALE_IDIGITSUBSTITUTION}
 
- // line 880
 
-   DATE_YEARMONTH  = $00000008; // use year month picture
 
-   {$EXTERNALSYM DATE_YEARMONTH}
 
-   DATE_LTRREADING = $00000010; // add marks for left to right reading order layout
 
-   {$EXTERNALSYM DATE_LTRREADING}
 
-   DATE_RTLREADING = $00000020; // add marks for right to left reading order layout
 
-   {$EXTERNALSYM DATE_RTLREADING}
 
- //
 
- //  Calendar Types.
 
- //
 
- //  These types are used for the EnumCalendarInfo and GetCalendarInfo
 
- //  NLS API routines.
 
- //  Some of these types are also used for the SetCalendarInfo NLS API
 
- //  routine.
 
- //
 
- //
 
- //  The following CalTypes may be used in combination with any other CalTypes.
 
- //
 
- //    CAL_NOUSEROVERRIDE
 
- //
 
- //    CAL_USE_CP_ACP is used in the A (Ansi) apis that need to do string
 
- //    translation.
 
- //
 
- //    CAL_RETURN_NUMBER will return the result from GetCalendarInfo as a
 
- //    number instead of a string.  This flag is only valid for the CalTypes
 
- //    beginning with CAL_I.
 
- //
 
-   CAL_NOUSEROVERRIDE = LOCALE_NOUSEROVERRIDE; // do not use user overrides
 
-   {$EXTERNALSYM CAL_NOUSEROVERRIDE}
 
-   CAL_USE_CP_ACP     = LOCALE_USE_CP_ACP; // use the system ACP
 
-   {$EXTERNALSYM CAL_USE_CP_ACP}
 
-   CAL_RETURN_NUMBER  = LOCALE_RETURN_NUMBER; // return number instead of string
 
-   {$EXTERNALSYM CAL_RETURN_NUMBER}
 
- // line 1014
 
-   CAL_SYEARMONTH       = $0000002f; // year month format string
 
-   {$EXTERNALSYM CAL_SYEARMONTH}
 
-   CAL_ITWODIGITYEARMAX = $00000030; // two digit year max
 
-   {$EXTERNALSYM CAL_ITWODIGITYEARMAX}
 
- // line 1424
 
- type
 
-   CALINFO_ENUMPROCEXW = function (lpCalendarInfoString: LPWSTR; Calendar: CALID): BOOL; stdcall;
 
-   {$EXTERNALSYM CALINFO_ENUMPROCEXW}
 
-   TCalInfoEnumProcExW = CALINFO_ENUMPROCEXW;
 
- // line 1635
 
- function GetCalendarInfoA(Locale: LCID; Calendar: CALID; CalType: CALTYPE;
 
-   lpCalData: LPSTR; cchData: Integer; lpValue: LPDWORD): Integer; stdcall;
 
- {$EXTERNALSYM GetCalendarInfoA}
 
- function GetCalendarInfoW(Locale: LCID; Calendar: CALID; CalType: CALTYPE;
 
-   lpCalData: LPWSTR; cchData: Integer; lpValue: LPDWORD): Integer; stdcall;
 
- {$EXTERNALSYM GetCalendarInfoW}
 
- // line 1754
 
- function EnumCalendarInfoExW(lpCalInfoEnumProcEx: CALINFO_ENUMPROCEXW;
 
-   Locale: LCID; Calendar: CALID; CalType: CALTYPE): BOOL; stdcall;
 
- {$EXTERNALSYM EnumCalendarInfoExW}
 
- {$IFNDEF FPC}
 
- type
 
-   MAKEINTRESOURCEA = LPSTR;
 
-   {$EXTERNALSYM MAKEINTRESOURCEA}
 
-   MAKEINTRESOURCEW = LPWSTR;
 
-   {$EXTERNALSYM MAKEINTRESOURCEW}
 
- {$IFDEF SUPPORTS_UNICODE}
 
-   MAKEINTRESOURCE = MAKEINTRESOURCEW;
 
-   {$EXTERNALSYM MAKEINTRESOURCE}
 
- {$ELSE ~SUPPORTS_UNICODE}
 
-   MAKEINTRESOURCE = MAKEINTRESOURCEA;
 
-   {$EXTERNALSYM MAKEINTRESOURCE}
 
- {$ENDIF ~SUPPORTS_UNICODE}
 
- {$ENDIF ~FPC}
 
- //
 
- // Predefined Resource Types
 
- //
 
- const
 
-   RT_CURSOR       = MAKEINTRESOURCE(1);
 
-   {$EXTERNALSYM RT_CURSOR}
 
-   RT_BITMAP       = MAKEINTRESOURCE(2);
 
-   {$EXTERNALSYM RT_BITMAP}
 
-   RT_ICON         = MAKEINTRESOURCE(3);
 
-   {$EXTERNALSYM RT_ICON}
 
-   RT_MENU         = MAKEINTRESOURCE(4);
 
-   {$EXTERNALSYM RT_MENU}
 
-   RT_DIALOG       = MAKEINTRESOURCE(5);
 
-   {$EXTERNALSYM RT_DIALOG}
 
-   RT_STRING       = MAKEINTRESOURCE(6);
 
-   {$EXTERNALSYM RT_STRING}
 
-   RT_FONTDIR      = MAKEINTRESOURCE(7);
 
-   {$EXTERNALSYM RT_FONTDIR}
 
-   RT_FONT         = MAKEINTRESOURCE(8);
 
-   {$EXTERNALSYM RT_FONT}
 
-   RT_ACCELERATOR  = MAKEINTRESOURCE(9);
 
-   {$EXTERNALSYM RT_ACCELERATOR}
 
-   RT_RCDATA       = MAKEINTRESOURCE(10);
 
-   {$EXTERNALSYM RT_RCDATA}
 
-   RT_MESSAGETABLE = MAKEINTRESOURCE(11);
 
-   {$EXTERNALSYM RT_MESSAGETABLE}
 
-   DIFFERENCE = 11;
 
-   {$EXTERNALSYM DIFFERENCE}
 
-   RT_GROUP_CURSOR = MAKEINTRESOURCE(ULONG_PTR(RT_CURSOR) + DIFFERENCE);
 
-   {$EXTERNALSYM RT_GROUP_CURSOR}
 
-   RT_GROUP_ICON = MAKEINTRESOURCE(ULONG_PTR(RT_ICON) + DIFFERENCE);
 
-   {$EXTERNALSYM RT_GROUP_ICON}
 
-   RT_VERSION    = MAKEINTRESOURCE(16);
 
-   {$EXTERNALSYM RT_VERSION}
 
-   RT_DLGINCLUDE = MAKEINTRESOURCE(17);
 
-   {$EXTERNALSYM RT_DLGINCLUDE}
 
-   RT_PLUGPLAY   = MAKEINTRESOURCE(19);
 
-   {$EXTERNALSYM RT_PLUGPLAY}
 
-   RT_VXD        = MAKEINTRESOURCE(20);
 
-   {$EXTERNALSYM RT_VXD}
 
-   RT_ANICURSOR  = MAKEINTRESOURCE(21);
 
-   {$EXTERNALSYM RT_ANICURSOR}
 
-   RT_ANIICON    = MAKEINTRESOURCE(22);
 
-   {$EXTERNALSYM RT_ANIICON}
 
-   RT_HTML       = MAKEINTRESOURCE(23);
 
-   {$EXTERNALSYM RT_HTML}
 
-   RT_MANIFEST   = MAKEINTRESOURCE(24);
 
-   CREATEPROCESS_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE(1);
 
-   {$EXTERNALSYM CREATEPROCESS_MANIFEST_RESOURCE_ID}
 
-   ISOLATIONAWARE_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE(2);
 
-   {$EXTERNALSYM ISOLATIONAWARE_MANIFEST_RESOURCE_ID}
 
-   ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE(3);
 
-   {$EXTERNALSYM ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID}
 
-   MINIMUM_RESERVED_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE(1{inclusive});
 
-   {$EXTERNALSYM MINIMUM_RESERVED_MANIFEST_RESOURCE_ID}
 
-   MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID = MAKEINTRESOURCE(16{inclusive});
 
-   {$EXTERNALSYM MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID}
 
- // line 1451
 
-   KLF_SETFORPROCESS = $00000100;
 
-   {$EXTERNALSYM KLF_SETFORPROCESS}
 
-   KLF_SHIFTLOCK     = $00010000;
 
-   {$EXTERNALSYM KLF_SHIFTLOCK}
 
-   KLF_RESET         = $40000000;
 
-   {$EXTERNALSYM KLF_RESET}
 
- // 64 compatible version of GetWindowLong and SetWindowLong
 
- const
 
-   GWLP_WNDPROC    = -4;
 
-   {$EXTERNALSYM GWLP_WNDPROC}
 
-   GWLP_HINSTANCE  = -6;
 
-   {$EXTERNALSYM GWLP_HINSTANCE}
 
-   GWLP_HWNDPARENT = -8;
 
-   {$EXTERNALSYM GWLP_HWNDPARENT}
 
-   GWLP_USERDATA   = -21;
 
-   {$EXTERNALSYM GWLP_USERDATA}
 
-   GWLP_ID         = -12;
 
-   {$EXTERNALSYM GWLP_ID}
 
- {$EXTERNALSYM GetWindowLongPtr}
 
- function GetWindowLongPtr(hWnd: HWND; nIndex: Integer): TJclAddr; stdcall;
 
- {$EXTERNALSYM SetWindowLongPtr}
 
- function SetWindowLongPtr(hWnd: HWND; nIndex: Integer; dwNewLong: TJclAddr): Longint; stdcall;
 
- function IsPwrSuspendAllowed: BOOL; stdcall;
 
- function IsPwrHibernateAllowed: BOOL; stdcall;
 
- function IsPwrShutdownAllowed: BOOL; stdcall;
 
- function SetSuspendState(Hibernate, ForceCritical, DisableWakeEvent: BOOL): BOOL; stdcall;
 
- type
 
-   // Microsoft version (64 bit SDK)
 
-   {$EXTERNALSYM RVA}
 
-   RVA = DWORD;
 
-   // 64-bit PE
 
-   {$EXTERNALSYM ImgDelayDescrV2}
 
-   ImgDelayDescrV2 = packed record
 
-     grAttrs: DWORD;      // attributes
 
-     rvaDLLName: RVA;     // RVA to dll name
 
-     rvaHmod: RVA;        // RVA of module handle
 
-     rvaIAT: RVA;         // RVA of the IAT
 
-     rvaINT: RVA;         // RVA of the INT
 
-     rvaBoundIAT: RVA;    // RVA of the optional bound IAT
 
-     rvaUnloadIAT: RVA;   // RVA of optional copy of original IAT
 
-     dwTimeStamp: DWORD;  // 0 if not bound,
 
-                          // O.W. date/time stamp of DLL bound to (Old BIND)
 
-   end;
 
-   {$EXTERNALSYM TImgDelayDescrV2}
 
-   TImgDelayDescrV2 = ImgDelayDescrV2;
 
-   {$EXTERNALSYM PImgDelayDescrV2}
 
-   PImgDelayDescrV2 = ^ImgDelayDescrV2;
 
-   {$EXTERNALSYM PHMODULE}
 
-   PHMODULE = ^HMODULE;
 
-   // 32-bit PE
 
-   {$EXTERNALSYM ImgDelayDescrV1}
 
-   ImgDelayDescrV1 = packed record
 
-     grAttrs: DWORD;                // attributes
 
-     szName: LPCSTR;                // pointer to dll name
 
-     phmod: PHMODULE;               // address of module handle
 
-     pIAT: PImageThunkData32;       // address of the IAT
 
-     pINT: PImageThunkData32;       // address of the INT
 
-     pBoundIAT: PImageThunkData32;  // address of the optional bound IAT
 
-     pUnloadIAT: PImageThunkData32; // address of optional copy of original IAT
 
-     dwTimeStamp: DWORD;            // 0 if not bound,
 
-                                    // O.W. date/time stamp of DLL bound to (Old BIND)
 
-   end;
 
-   {$EXTERNALSYM TImgDelayDescrV1}
 
-   TImgDelayDescrV1 = ImgDelayDescrV1;
 
-   {$EXTERNALSYM PImgDelayDescrV1}
 
-   PImgDelayDescrV1 = ^ImgDelayDescrV1;
 
-   //{$EXTERNALSYM PImgDelayDescr}
 
-   //PImgDelayDescr = ImgDelayDescr;
 
-   //TImgDelayDescr = ImgDelayDescr;
 
- // msidefs.h line 349
 
- // PIDs given specific meanings for Installer
 
- const
 
-   PID_MSIVERSION  = $0000000E; // integer, Installer version number (major*100+minor)
 
-   {$EXTERNALSYM PID_MSIVERSION}
 
-   PID_MSISOURCE   = $0000000F; // integer, type of file image, short/long, media/tree
 
-   {$EXTERNALSYM PID_MSISOURCE}
 
-   PID_MSIRESTRICT = $00000010; // integer, transform restrictions
 
-   {$EXTERNALSYM PID_MSIRESTRICT}
 
- // shlguid.h line 404
 
- const
 
-   FMTID_ShellDetails: TGUID = '{28636aa6-953d-11d2-b5d6-00c04fd918d0}';
 
-   {$EXTERNALSYM FMTID_ShellDetails}
 
-   PID_FINDDATA        = 0;
 
-   {$EXTERNALSYM PID_FINDDATA}
 
-   PID_NETRESOURCE     = 1;
 
-   {$EXTERNALSYM PID_NETRESOURCE}
 
-   PID_DESCRIPTIONID   = 2;
 
-   {$EXTERNALSYM PID_DESCRIPTIONID}
 
-   PID_WHICHFOLDER     = 3;
 
-   {$EXTERNALSYM PID_WHICHFOLDER}
 
-   PID_NETWORKLOCATION = 4;
 
-   {$EXTERNALSYM PID_NETWORKLOCATION}
 
-   PID_COMPUTERNAME    = 5;
 
-   {$EXTERNALSYM PID_COMPUTERNAME}
 
- // PSGUID_STORAGE comes from ntquery.h
 
- const
 
-   FMTID_Storage: TGUID = '{b725f130-47ef-101a-a5f1-02608c9eebac}';
 
-   {$EXTERNALSYM FMTID_Storage}
 
- // Image properties
 
- const
 
-   FMTID_ImageProperties: TGUID = '{14b81da1-0135-4d31-96d9-6cbfc9671a99}';
 
-   {$EXTERNALSYM FMTID_ImageProperties}
 
- // The GUIDs used to identify shell item attributes (columns). See IShellFolder2::GetDetailsEx implementations...
 
- const
 
-   FMTID_Displaced: TGUID = '{9B174B33-40FF-11d2-A27E-00C04FC30871}';
 
-   {$EXTERNALSYM FMTID_Displaced}
 
-   PID_DISPLACED_FROM = 2;
 
-   {$EXTERNALSYM PID_DISPLACED_FROM}
 
-   PID_DISPLACED_DATE = 3;
 
-   {$EXTERNALSYM PID_DISPLACED_DATE}
 
- const
 
-   FMTID_Briefcase: TGUID = '{328D8B21-7729-4bfc-954C-902B329D56B0}';
 
-   {$EXTERNALSYM FMTID_Briefcase}
 
-   PID_SYNC_COPY_IN = 2;
 
-   {$EXTERNALSYM PID_SYNC_COPY_IN}
 
- const
 
-   FMTID_Misc: TGUID = '{9B174B34-40FF-11d2-A27E-00C04FC30871}';
 
-   {$EXTERNALSYM FMTID_Misc}
 
-   PID_MISC_STATUS      = 2;
 
-   {$EXTERNALSYM PID_MISC_STATUS}
 
-   PID_MISC_ACCESSCOUNT = 3;
 
-   {$EXTERNALSYM PID_MISC_ACCESSCOUNT}
 
-   PID_MISC_OWNER       = 4;
 
-   {$EXTERNALSYM PID_MISC_OWNER}
 
-   PID_HTMLINFOTIPFILE  = 5;
 
-   {$EXTERNALSYM PID_HTMLINFOTIPFILE}
 
-   PID_MISC_PICS        = 6;
 
-   {$EXTERNALSYM PID_MISC_PICS}
 
- const
 
-   FMTID_WebView: TGUID = '{F2275480-F782-4291-BD94-F13693513AEC}';
 
-   {$EXTERNALSYM FMTID_WebView}
 
-   PID_DISPLAY_PROPERTIES = 0;
 
-   {$EXTERNALSYM PID_DISPLAY_PROPERTIES}
 
-   PID_INTROTEXT          = 1;
 
-   {$EXTERNALSYM PID_INTROTEXT}
 
- const
 
-   FMTID_MUSIC: TGUID = '{56A3372E-CE9C-11d2-9F0E-006097C686F6}';
 
-   {$EXTERNALSYM FMTID_MUSIC}
 
-   PIDSI_ARTIST    = 2;
 
-   {$EXTERNALSYM PIDSI_ARTIST}
 
-   PIDSI_SONGTITLE = 3;
 
-   {$EXTERNALSYM PIDSI_SONGTITLE}
 
-   PIDSI_ALBUM     = 4;
 
-   {$EXTERNALSYM PIDSI_ALBUM}
 
-   PIDSI_YEAR      = 5;
 
-   {$EXTERNALSYM PIDSI_YEAR}
 
-   PIDSI_COMMENT   = 6;
 
-   {$EXTERNALSYM PIDSI_COMMENT}
 
-   PIDSI_TRACK     = 7;
 
-   {$EXTERNALSYM PIDSI_TRACK}
 
-   PIDSI_GENRE     = 11;
 
-   {$EXTERNALSYM PIDSI_GENRE}
 
-   PIDSI_LYRICS    = 12;
 
-   {$EXTERNALSYM PIDSI_LYRICS}
 
- const
 
-   FMTID_DRM: TGUID = '{AEAC19E4-89AE-4508-B9B7-BB867ABEE2ED}';
 
-   {$EXTERNALSYM FMTID_DRM}
 
-   PIDDRSI_PROTECTED   = 2;
 
-   {$EXTERNALSYM PIDDRSI_PROTECTED}
 
-   PIDDRSI_DESCRIPTION = 3;
 
-   {$EXTERNALSYM PIDDRSI_DESCRIPTION}
 
-   PIDDRSI_PLAYCOUNT   = 4;
 
-   {$EXTERNALSYM PIDDRSI_PLAYCOUNT}
 
-   PIDDRSI_PLAYSTARTS  = 5;
 
-   {$EXTERNALSYM PIDDRSI_PLAYSTARTS}
 
-   PIDDRSI_PLAYEXPIRES = 6;
 
-   {$EXTERNALSYM PIDDRSI_PLAYEXPIRES}
 
- //  FMTID_VideoSummaryInformation property identifiers
 
- const
 
-   FMTID_Video: TGUID = '{64440491-4c8b-11d1-8b70-080036b11a03}';
 
-   {$EXTERNALSYM FMTID_Video}
 
-   PIDVSI_STREAM_NAME   = $00000002; // "StreamName", VT_LPWSTR
 
-   {$EXTERNALSYM PIDVSI_STREAM_NAME}
 
-   PIDVSI_FRAME_WIDTH   = $00000003; // "FrameWidth", VT_UI4
 
-   {$EXTERNALSYM PIDVSI_FRAME_WIDTH}
 
-   PIDVSI_FRAME_HEIGHT  = $00000004; // "FrameHeight", VT_UI4
 
-   {$EXTERNALSYM PIDVSI_FRAME_HEIGHT}
 
-   PIDVSI_TIMELENGTH    = $00000007; // "TimeLength", VT_UI4, milliseconds
 
-   {$EXTERNALSYM PIDVSI_TIMELENGTH}
 
-   PIDVSI_FRAME_COUNT   = $00000005; // "FrameCount". VT_UI4
 
-   {$EXTERNALSYM PIDVSI_FRAME_COUNT}
 
-   PIDVSI_FRAME_RATE    = $00000006; // "FrameRate", VT_UI4, frames/millisecond
 
-   {$EXTERNALSYM PIDVSI_FRAME_RATE}
 
-   PIDVSI_DATA_RATE     = $00000008; // "DataRate", VT_UI4, bytes/second
 
-   {$EXTERNALSYM PIDVSI_DATA_RATE}
 
-   PIDVSI_SAMPLE_SIZE   = $00000009; // "SampleSize", VT_UI4
 
-   {$EXTERNALSYM PIDVSI_SAMPLE_SIZE}
 
-   PIDVSI_COMPRESSION   = $0000000A; // "Compression", VT_LPWSTR
 
-   {$EXTERNALSYM PIDVSI_COMPRESSION}
 
-   PIDVSI_STREAM_NUMBER = $0000000B; // "StreamNumber", VT_UI2
 
-   {$EXTERNALSYM PIDVSI_STREAM_NUMBER}
 
- //  FMTID_AudioSummaryInformation property identifiers
 
- const
 
-   FMTID_Audio: TGUID = '{64440490-4c8b-11d1-8b70-080036b11a03}';
 
-   {$EXTERNALSYM FMTID_Audio}
 
-   PIDASI_FORMAT        = $00000002; // VT_BSTR
 
-   {$EXTERNALSYM PIDASI_FORMAT}
 
-   PIDASI_TIMELENGTH    = $00000003; // VT_UI4, milliseconds
 
-   {$EXTERNALSYM PIDASI_TIMELENGTH}
 
-   PIDASI_AVG_DATA_RATE = $00000004; // VT_UI4,  Hz
 
-   {$EXTERNALSYM PIDASI_AVG_DATA_RATE}
 
-   PIDASI_SAMPLE_RATE   = $00000005; // VT_UI4,  bits
 
-   {$EXTERNALSYM PIDASI_SAMPLE_RATE}
 
-   PIDASI_SAMPLE_SIZE   = $00000006; // VT_UI4,  bits
 
-   {$EXTERNALSYM PIDASI_SAMPLE_SIZE}
 
-   PIDASI_CHANNEL_COUNT = $00000007; // VT_UI4
 
-   {$EXTERNALSYM PIDASI_CHANNEL_COUNT}
 
-   PIDASI_STREAM_NUMBER = $00000008; // VT_UI2
 
-   {$EXTERNALSYM PIDASI_STREAM_NUMBER}
 
-   PIDASI_STREAM_NAME   = $00000009; // VT_LPWSTR
 
-   {$EXTERNALSYM PIDASI_STREAM_NAME}
 
-   PIDASI_COMPRESSION   = $0000000A; // VT_LPWSTR
 
-   {$EXTERNALSYM PIDASI_COMPRESSION}
 
- const
 
-   FMTID_ControlPanel: TGUID = '{305CA226-D286-468e-B848-2B2E8E697B74}';
 
-   {$EXTERNALSYM FMTID_ControlPanel}
 
-   PID_CONTROLPANEL_CATEGORY = 2;
 
-   {$EXTERNALSYM PID_CONTROLPANEL_CATEGORY}
 
- const
 
-   FMTID_Volume: TGUID = '{9B174B35-40FF-11d2-A27E-00C04FC30871}';
 
-   {$EXTERNALSYM FMTID_Volume}
 
-   PID_VOLUME_FREE       = 2;
 
-   {$EXTERNALSYM PID_VOLUME_FREE}
 
-   PID_VOLUME_CAPACITY   = 3;
 
-   {$EXTERNALSYM PID_VOLUME_CAPACITY}
 
-   PID_VOLUME_FILESYSTEM = 4;
 
-   {$EXTERNALSYM PID_VOLUME_FILESYSTEM}
 
- const
 
-   FMTID_Share: TGUID = '{D8C3986F-813B-449c-845D-87B95D674ADE}';
 
-   {$EXTERNALSYM FMTID_Share}
 
-   PID_SHARE_CSC_STATUS = 2;
 
-   {$EXTERNALSYM PID_SHARE_CSC_STATUS}
 
- const
 
-   FMTID_Link: TGUID = '{B9B4B3FC-2B51-4a42-B5D8-324146AFCF25}';
 
-   {$EXTERNALSYM FMTID_Link}
 
-   PID_LINK_TARGET = 2;
 
-   {$EXTERNALSYM PID_LINK_TARGET}
 
- const
 
-   FMTID_Query: TGUID = '{49691c90-7e17-101a-a91c-08002b2ecda9}';
 
-   {$EXTERNALSYM FMTID_Query}
 
-   PID_QUERY_RANK = 2;
 
-   {$EXTERNALSYM PID_QUERY_RANK}
 
- const
 
-   FMTID_SummaryInformation: TGUID = '{f29f85e0-4ff9-1068-ab91-08002b27b3d9}';
 
-   {$EXTERNALSYM FMTID_SummaryInformation}
 
-   FMTID_DocumentSummaryInformation: TGUID = '{d5cdd502-2e9c-101b-9397-08002b2cf9ae}';
 
-   {$EXTERNALSYM FMTID_DocumentSummaryInformation}
 
-   FMTID_MediaFileSummaryInformation: TGUID = '{64440492-4c8b-11d1-8b70-080036b11a03}';
 
-   {$EXTERNALSYM FMTID_MediaFileSummaryInformation}
 
-   FMTID_ImageSummaryInformation: TGUID = '{6444048f-4c8b-11d1-8b70-080036b11a03}';
 
-   {$EXTERNALSYM FMTID_ImageSummaryInformation}
 
- // imgguids.h line 75
 
- // Property sets
 
- const
 
-   FMTID_ImageInformation: TGUID = '{e5836cbe-5eef-4f1d-acde-ae4c43b608ce}';
 
-   {$EXTERNALSYM FMTID_ImageInformation}
 
-   FMTID_JpegAppHeaders: TGUID = '{1c4afdcd-6177-43cf-abc7-5f51af39ee85}';
 
-   {$EXTERNALSYM FMTID_JpegAppHeaders}
 
- // objbase.h line 390
 
- const
 
-   STGFMT_STORAGE  = 0;
 
-   {$EXTERNALSYM STGFMT_STORAGE}
 
-   STGFMT_NATIVE   = 1;
 
-   {$EXTERNALSYM STGFMT_NATIVE}
 
-   STGFMT_FILE     = 3;
 
-   {$EXTERNALSYM STGFMT_FILE}
 
-   STGFMT_ANY      = 4;
 
-   {$EXTERNALSYM STGFMT_ANY}
 
-   STGFMT_DOCFILE  = 5;
 
-   {$EXTERNALSYM STGFMT_DOCFILE}
 
- // This is a legacy define to allow old component to builds
 
-   STGFMT_DOCUMENT = 0;
 
-   {$EXTERNALSYM STGFMT_DOCUMENT}
 
- // objbase.h line 913
 
- type
 
-   tagSTGOPTIONS = record
 
-     usVersion: Word;             // Versions 1 and 2 supported
 
-     reserved: Word;              // must be 0 for padding
 
-     ulSectorSize: Cardinal;      // docfile header sector size (512)
 
-     pwcsTemplateFile: PWideChar; // version 2 or above
 
-   end;
 
-   {$EXTERNALSYM tagSTGOPTIONS}
 
-   STGOPTIONS = tagSTGOPTIONS;
 
-   {$EXTERNALSYM STGOPTIONS}
 
-   PSTGOPTIONS = ^STGOPTIONS;
 
-   {$EXTERNALSYM PSTGOPTIONS}
 
- function StgCreateStorageEx(const pwcsName: PWideChar; grfMode: DWORD;
 
-   stgfmt: DWORD; grfAttrs: DWORD; pStgOptions: PSTGOPTIONS; reserved2: Pointer;
 
-   riid: PGUID; out stgOpen: IInterface): HResult; stdcall;
 
- {$EXTERNALSYM StgCreateStorageEx}
 
- function StgOpenStorageEx(const pwcsName: PWideChar; grfMode: DWORD;
 
-   stgfmt: DWORD; grfAttrs: DWORD; pStgOptions: PSTGOPTIONS; reserved2: Pointer;
 
-   riid: PGUID; out stgOpen: IInterface): HResult; stdcall;
 
- {$EXTERNALSYM StgOpenStorageEx}
 
- // propidl.h line 386
 
- // Reserved global Property IDs
 
- const
 
-   PID_DICTIONARY         = $00000000; // integer count + array of entries
 
-   {$EXTERNALSYM PID_DICTIONARY}
 
-   PID_CODEPAGE           = $00000001; // short integer
 
-   {$EXTERNALSYM PID_CODEPAGE}
 
-   PID_FIRST_USABLE       = $00000002;
 
-   {$EXTERNALSYM PID_FIRST_USABLE}
 
-   PID_FIRST_NAME_DEFAULT = $00000FFF;
 
-   {$EXTERNALSYM PID_FIRST_NAME_DEFAULT}
 
-   PID_LOCALE             = $80000000;
 
-   {$EXTERNALSYM PID_LOCALE}
 
-   PID_MODIFY_TIME        = $80000001;
 
-   {$EXTERNALSYM PID_MODIFY_TIME}
 
-   PID_SECURITY           = $80000002;
 
-   {$EXTERNALSYM PID_SECURITY}
 
-   PID_BEHAVIOR           = $80000003;
 
-   {$EXTERNALSYM PID_BEHAVIOR}
 
-   PID_ILLEGAL            = $FFFFFFFF;
 
-   {$EXTERNALSYM PID_ILLEGAL}
 
- // Range which is read-only to downlevel implementations
 
- const
 
-   PID_MIN_READONLY = $80000000;
 
-   {$EXTERNALSYM PID_MIN_READONLY}
 
-   PID_MAX_READONLY = $BFFFFFFF;
 
-   {$EXTERNALSYM PID_MAX_READONLY}
 
- // Property IDs for the DiscardableInformation Property Set
 
- const
 
-   PIDDI_THUMBNAIL = $00000002; // VT_BLOB
 
-   {$EXTERNALSYM PIDDI_THUMBNAIL}
 
- // Property IDs for the SummaryInformation Property Set
 
- const
 
-   PIDSI_TITLE        = $00000002; // VT_LPSTR
 
-   {$EXTERNALSYM PIDSI_TITLE}
 
-   PIDSI_SUBJECT      = $00000003; // VT_LPSTR
 
-   {$EXTERNALSYM PIDSI_SUBJECT}
 
-   PIDSI_AUTHOR       = $00000004; // VT_LPSTR
 
-   {$EXTERNALSYM PIDSI_AUTHOR}
 
-   PIDSI_KEYWORDS     = $00000005; // VT_LPSTR
 
-   {$EXTERNALSYM PIDSI_KEYWORDS}
 
-   PIDSI_COMMENTS     = $00000006; // VT_LPSTR
 
-   {$EXTERNALSYM PIDSI_COMMENTS}
 
-   PIDSI_TEMPLATE     = $00000007; // VT_LPSTR
 
-   {$EXTERNALSYM PIDSI_TEMPLATE}
 
-   PIDSI_LASTAUTHOR   = $00000008; // VT_LPSTR
 
-   {$EXTERNALSYM PIDSI_LASTAUTHOR}
 
-   PIDSI_REVNUMBER    = $00000009; // VT_LPSTR
 
-   {$EXTERNALSYM PIDSI_REVNUMBER}
 
-   PIDSI_EDITTIME     = $0000000A; // VT_FILETIME (UTC)
 
-   {$EXTERNALSYM PIDSI_EDITTIME}
 
-   PIDSI_LASTPRINTED  = $0000000B; // VT_FILETIME (UTC)
 
-   {$EXTERNALSYM PIDSI_LASTPRINTED}
 
-   PIDSI_CREATE_DTM   = $0000000C; // VT_FILETIME (UTC)
 
-   {$EXTERNALSYM PIDSI_CREATE_DTM}
 
-   PIDSI_LASTSAVE_DTM = $0000000D; // VT_FILETIME (UTC)
 
-   {$EXTERNALSYM PIDSI_LASTSAVE_DTM}
 
-   PIDSI_PAGECOUNT    = $0000000E; // VT_I4
 
-   {$EXTERNALSYM PIDSI_PAGECOUNT}
 
-   PIDSI_WORDCOUNT    = $0000000F; // VT_I4
 
-   {$EXTERNALSYM PIDSI_WORDCOUNT}
 
-   PIDSI_CHARCOUNT    = $00000010; // VT_I4
 
-   {$EXTERNALSYM PIDSI_CHARCOUNT}
 
-   PIDSI_THUMBNAIL    = $00000011; // VT_CF
 
-   {$EXTERNALSYM PIDSI_THUMBNAIL}
 
-   PIDSI_APPNAME      = $00000012; // VT_LPSTR
 
-   {$EXTERNALSYM PIDSI_APPNAME}
 
-   PIDSI_DOC_SECURITY = $00000013; // VT_I4
 
-   {$EXTERNALSYM PIDSI_DOC_SECURITY}
 
- // Property IDs for the DocSummaryInformation Property Set
 
- const
 
-   PIDDSI_CATEGORY    = $00000002; // VT_LPSTR
 
-   {$EXTERNALSYM PIDDSI_CATEGORY}
 
-   PIDDSI_PRESFORMAT  = $00000003; // VT_LPSTR
 
-   {$EXTERNALSYM PIDDSI_PRESFORMAT}
 
-   PIDDSI_BYTECOUNT   = $00000004; // VT_I4
 
-   {$EXTERNALSYM PIDDSI_BYTECOUNT}
 
-   PIDDSI_LINECOUNT   = $00000005; // VT_I4
 
-   {$EXTERNALSYM PIDDSI_LINECOUNT}
 
-   PIDDSI_PARCOUNT    = $00000006; // VT_I4
 
-   {$EXTERNALSYM PIDDSI_PARCOUNT}
 
-   PIDDSI_SLIDECOUNT  = $00000007; // VT_I4
 
-   {$EXTERNALSYM PIDDSI_SLIDECOUNT}
 
-   PIDDSI_NOTECOUNT   = $00000008; // VT_I4
 
-   {$EXTERNALSYM PIDDSI_NOTECOUNT}
 
-   PIDDSI_HIDDENCOUNT = $00000009; // VT_I4
 
-   {$EXTERNALSYM PIDDSI_HIDDENCOUNT}
 
-   PIDDSI_MMCLIPCOUNT = $0000000A; // VT_I4
 
-   {$EXTERNALSYM PIDDSI_MMCLIPCOUNT}
 
-   PIDDSI_SCALE       = $0000000B; // VT_BOOL
 
-   {$EXTERNALSYM PIDDSI_SCALE}
 
-   PIDDSI_HEADINGPAIR = $0000000C; // VT_VARIANT | VT_VECTOR
 
-   {$EXTERNALSYM PIDDSI_HEADINGPAIR}
 
-   PIDDSI_DOCPARTS    = $0000000D; // VT_LPSTR | VT_VECTOR
 
-   {$EXTERNALSYM PIDDSI_DOCPARTS}
 
-   PIDDSI_MANAGER     = $0000000E; // VT_LPSTR
 
-   {$EXTERNALSYM PIDDSI_MANAGER}
 
-   PIDDSI_COMPANY     = $0000000F; // VT_LPSTR
 
-   {$EXTERNALSYM PIDDSI_COMPANY}
 
-   PIDDSI_LINKSDIRTY  = $00000010; // VT_BOOL
 
-   {$EXTERNALSYM PIDDSI_LINKSDIRTY}
 
- //  FMTID_MediaFileSummaryInfo - Property IDs
 
- const
 
-   PIDMSI_EDITOR      = $00000002; // VT_LPWSTR
 
-   {$EXTERNALSYM PIDMSI_EDITOR}
 
-   PIDMSI_SUPPLIER    = $00000003; // VT_LPWSTR
 
-   {$EXTERNALSYM PIDMSI_SUPPLIER}
 
-   PIDMSI_SOURCE      = $00000004; // VT_LPWSTR
 
-   {$EXTERNALSYM PIDMSI_SOURCE}
 
-   PIDMSI_SEQUENCE_NO = $00000005; // VT_LPWSTR
 
-   {$EXTERNALSYM PIDMSI_SEQUENCE_NO}
 
-   PIDMSI_PROJECT     = $00000006; // VT_LPWSTR
 
-   {$EXTERNALSYM PIDMSI_PROJECT}
 
-   PIDMSI_STATUS      = $00000007; // VT_UI4
 
-   {$EXTERNALSYM PIDMSI_STATUS}
 
-   PIDMSI_OWNER       = $00000008; // VT_LPWSTR
 
-   {$EXTERNALSYM PIDMSI_OWNER}
 
-   PIDMSI_RATING      = $00000009; // VT_LPWSTR
 
-   {$EXTERNALSYM PIDMSI_RATING}
 
-   PIDMSI_PRODUCTION  = $0000000A; // VT_FILETIME (UTC)
 
-   {$EXTERNALSYM PIDMSI_PRODUCTION}
 
-   PIDMSI_COPYRIGHT   = $0000000B; // VT_LPWSTR
 
-   {$EXTERNALSYM PIDMSI_COPYRIGHT}
 
- function PropVariantClear(var Prop: TPropVariant): HResult; stdcall;
 
- {$EXTERNALSYM PropVariantClear}
 
- // NtSecApi.h line 566
 
- type
 
-   PLSA_UNICODE_STRING = ^LSA_UNICODE_STRING;
 
-   _LSA_UNICODE_STRING = record
 
-     Length: USHORT;
 
-     MaximumLength: USHORT;
 
-     Buffer: {$IFDEF HAS_UNITSCOPE}Winapi.{$ENDIF}Windows.LPWSTR;
 
-   end;
 
-   LSA_UNICODE_STRING = _LSA_UNICODE_STRING;
 
-   TLsaUnicodeString = LSA_UNICODE_STRING;
 
-   PLsaUnicodeString = PLSA_UNICODE_STRING;
 
-   PLSA_STRING = ^LSA_STRING;
 
-   _LSA_STRING = record
 
-     Length: USHORT;
 
-     MaximumLength: USHORT;
 
-     Buffer: PANSICHAR;
 
-   end;
 
-   LSA_STRING = _LSA_STRING;
 
-   TLsaString = LSA_STRING;
 
-   PLsaString = PLSA_STRING;
 
-   PLSA_OBJECT_ATTRIBUTES = ^LSA_OBJECT_ATTRIBUTES;
 
-   _LSA_OBJECT_ATTRIBUTES = record
 
-     Length: ULONG;
 
-     RootDirectory: {$IFDEF HAS_UNITSCOPE}Winapi.{$ENDIF}Windows.THandle;
 
-     ObjectName: PLSA_UNICODE_STRING;
 
-     Attributes: ULONG;
 
-     SecurityDescriptor: Pointer; // Points to type SECURITY_DESCRIPTOR
 
-     SecurityQualityOfService: Pointer; // Points to type SECURITY_QUALITY_OF_SERVICE
 
-   end;
 
-   LSA_OBJECT_ATTRIBUTES = _LSA_OBJECT_ATTRIBUTES;
 
-   TLsaObjectAttributes = _LSA_OBJECT_ATTRIBUTES;
 
-   PLsaObjectAttributes = PLSA_OBJECT_ATTRIBUTES;
 
- // NtSecApi.h line 680
 
- ////////////////////////////////////////////////////////////////////////////
 
- //                                                                        //
 
- // Local Security Policy Administration API datatypes and defines         //
 
- //                                                                        //
 
- ////////////////////////////////////////////////////////////////////////////
 
- //
 
- // Access types for the Policy object
 
- //
 
- const
 
-   POLICY_VIEW_LOCAL_INFORMATION = $00000001;
 
-   {$EXTERNALSYM POLICY_VIEW_LOCAL_INFORMATION}
 
-   POLICY_VIEW_AUDIT_INFORMATION = $00000002;
 
-   {$EXTERNALSYM POLICY_VIEW_AUDIT_INFORMATION}
 
-   POLICY_GET_PRIVATE_INFORMATION = $00000004;
 
-   {$EXTERNALSYM POLICY_GET_PRIVATE_INFORMATION}
 
-   POLICY_TRUST_ADMIN = $00000008;
 
-   {$EXTERNALSYM POLICY_TRUST_ADMIN}
 
-   POLICY_CREATE_ACCOUNT = $00000010;
 
-   {$EXTERNALSYM POLICY_CREATE_ACCOUNT}
 
-   POLICY_CREATE_SECRET = $00000020;
 
-   {$EXTERNALSYM POLICY_CREATE_SECRET}
 
-   POLICY_CREATE_PRIVILEGE = $00000040;
 
-   {$EXTERNALSYM POLICY_CREATE_PRIVILEGE}
 
-   POLICY_SET_DEFAULT_QUOTA_LIMITS = $00000080;
 
-   {$EXTERNALSYM POLICY_SET_DEFAULT_QUOTA_LIMITS}
 
-   POLICY_SET_AUDIT_REQUIREMENTS = $00000100;
 
-   {$EXTERNALSYM POLICY_SET_AUDIT_REQUIREMENTS}
 
-   POLICY_AUDIT_LOG_ADMIN = $00000200;
 
-   {$EXTERNALSYM POLICY_AUDIT_LOG_ADMIN}
 
-   POLICY_SERVER_ADMIN = $00000400;
 
-   {$EXTERNALSYM POLICY_SERVER_ADMIN}
 
-   POLICY_LOOKUP_NAMES = $00000800;
 
-   {$EXTERNALSYM POLICY_LOOKUP_NAMES}
 
-   POLICY_NOTIFICATION = $00001000;
 
-   {$EXTERNALSYM POLICY_NOTIFICATION}
 
-   POLICY_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED or
 
-                                POLICY_VIEW_LOCAL_INFORMATION or
 
-                                POLICY_VIEW_AUDIT_INFORMATION or
 
-                                POLICY_GET_PRIVATE_INFORMATION or
 
-                                POLICY_TRUST_ADMIN or
 
-                                POLICY_CREATE_ACCOUNT or
 
-                                POLICY_CREATE_SECRET or
 
-                                POLICY_CREATE_PRIVILEGE or
 
-                                POLICY_SET_DEFAULT_QUOTA_LIMITS or
 
-                                POLICY_SET_AUDIT_REQUIREMENTS or
 
-                                POLICY_AUDIT_LOG_ADMIN or
 
-                                POLICY_SERVER_ADMIN or
 
-                                POLICY_LOOKUP_NAMES);
 
-   {$EXTERNALSYM POLICY_ALL_ACCESS}
 
-   POLICY_READ = (STANDARD_RIGHTS_READ or
 
-                                POLICY_VIEW_AUDIT_INFORMATION or
 
-                                POLICY_GET_PRIVATE_INFORMATION);
 
-   {$EXTERNALSYM POLICY_READ}
 
-   POLICY_WRITE = (STANDARD_RIGHTS_WRITE or
 
-                                POLICY_TRUST_ADMIN or
 
-                                POLICY_CREATE_ACCOUNT or
 
-                                POLICY_CREATE_SECRET or
 
-                                POLICY_CREATE_PRIVILEGE or
 
-                                POLICY_SET_DEFAULT_QUOTA_LIMITS or
 
-                                POLICY_SET_AUDIT_REQUIREMENTS or
 
-                                POLICY_AUDIT_LOG_ADMIN or
 
-                                POLICY_SERVER_ADMIN);
 
-   {$EXTERNALSYM POLICY_WRITE}
 
-   POLICY_EXECUTE = (STANDARD_RIGHTS_EXECUTE or
 
-                                POLICY_VIEW_LOCAL_INFORMATION or
 
-                                POLICY_LOOKUP_NAMES);
 
-   {$EXTERNALSYM POLICY_EXECUTE}
 
- // NtSecApi.h line 914
 
- type
 
-   _POLICY_INFORMATION_CLASS = (
 
-     picFill0,
 
-     PolicyAuditLogInformation,
 
-     PolicyAuditEventsInformation,
 
-     PolicyPrimaryDomainInformation,
 
-     PolicyPdAccountInformation,
 
-     PolicyAccountDomainInformation,
 
-     PolicyLsaServerRoleInformation,
 
-     PolicyReplicaSourceInformation,
 
-     PolicyDefaultQuotaInformation,
 
-     PolicyModificationInformation,
 
-     PolicyAuditFullSetInformation,
 
-     PolicyAuditFullQueryInformation,
 
-     PolicyDnsDomainInformation,
 
-     PolicyDnsDomainInformationInt);
 
-   {$EXTERNALSYM _POLICY_INFORMATION_CLASS}
 
-   POLICY_INFORMATION_CLASS = _POLICY_INFORMATION_CLASS;
 
-   {$EXTERNALSYM POLICY_INFORMATION_CLASS}
 
-   PPOLICY_INFORMATION_CLASS = ^POLICY_INFORMATION_CLASS;
 
-   {$EXTERNALSYM PPOLICY_INFORMATION_CLASS}
 
-   TPolicyInformationClass = POLICY_INFORMATION_CLASS;
 
-   {$EXTERNALSYM TPolicyInformationClass}
 
-   PPolicyInformationClass = PPOLICY_INFORMATION_CLASS;
 
-   {$EXTERNALSYM PPolicyInformationClass}
 
- // NtSecApi.h line 1031
 
- //
 
- // The following structure corresponds to the PolicyAccountDomainInformation
 
- // information class.
 
- //
 
- type
 
-   PPOLICY_ACCOUNT_DOMAIN_INFO = ^POLICY_ACCOUNT_DOMAIN_INFO;
 
-   _POLICY_ACCOUNT_DOMAIN_INFO = record
 
-     DomainName: LSA_UNICODE_STRING;
 
-     DomainSid: {$IFDEF HAS_UNITSCOPE}Winapi.{$ENDIF}Windows.PSID;
 
-   end;
 
-   POLICY_ACCOUNT_DOMAIN_INFO = _POLICY_ACCOUNT_DOMAIN_INFO;
 
-   TPolicyAccountDomainInfo = POLICY_ACCOUNT_DOMAIN_INFO;
 
-   PPolicyAccountDomainInfo = PPOLICY_ACCOUNT_DOMAIN_INFO;
 
- // NtSecApi.h line 1298
 
- type
 
-   LSA_HANDLE = Pointer;
 
-   PLSA_HANDLE = ^LSA_HANDLE;
 
-   TLsaHandle = LSA_HANDLE;
 
- // NtSecApi.h line 1714
 
- type
 
-   NTSTATUS = DWORD;
 
- function LsaOpenPolicy(SystemName: PLSA_UNICODE_STRING;
 
-   var ObjectAttributes: LSA_OBJECT_ATTRIBUTES; DesiredAccess: ACCESS_MASK;
 
-   var PolicyHandle: LSA_HANDLE): NTSTATUS; stdcall;
 
- function LsaQueryInformationPolicy(PolicyHandle: LSA_HANDLE;
 
-   InformationClass: POLICY_INFORMATION_CLASS; var Buffer: Pointer): NTSTATUS; stdcall;
 
- function LsaFreeMemory(Buffer: Pointer): NTSTATUS; stdcall;
 
- function LsaFreeReturnBuffer(Buffer: Pointer): NTSTATUS; stdcall;
 
- function LsaClose(ObjectHandle: LSA_HANDLE): NTSTATUS; stdcall;
 
- function LsaNtStatusToWinError(Status: NTSTATUS): ULONG; stdcall;
 
- // Snapshot function
 
- function CreateToolhelp32Snapshot(dwFlags, th32ProcessID: DWORD): THandle; stdcall;
 
- {$EXTERNALSYM CreateToolhelp32Snapshot}
 
- //
 
- // The th32ProcessID argument is only used if TH32CS_SNAPHEAPLIST or
 
- // TH32CS_SNAPMODULE is specified. th32ProcessID == 0 means the current
 
- // process.
 
- //
 
- // NOTE that all of the snapshots are global except for the heap and module
 
- //      lists which are process specific. To enumerate the heap or module
 
- //      state for all WIN32 processes call with TH32CS_SNAPALL and the
 
- //      current process. Then for each process in the TH32CS_SNAPPROCESS
 
- //      list that isn't the current process, do a call with just
 
- //      TH32CS_SNAPHEAPLIST and/or TH32CS_SNAPMODULE.
 
- //
 
- // dwFlags
 
- //
 
- const
 
-   TH32CS_SNAPHEAPLIST = $00000001;
 
-   {$EXTERNALSYM TH32CS_SNAPHEAPLIST}
 
-   TH32CS_SNAPPROCESS  = $00000002;
 
-   {$EXTERNALSYM TH32CS_SNAPPROCESS}
 
-   TH32CS_SNAPTHREAD   = $00000004;
 
-   {$EXTERNALSYM TH32CS_SNAPTHREAD}
 
-   TH32CS_SNAPMODULE   = $00000008;
 
-   {$EXTERNALSYM TH32CS_SNAPMODULE}
 
-   TH32CS_SNAPMODULE32 = $00000010;
 
-   {$EXTERNALSYM TH32CS_SNAPMODULE32}
 
-   TH32CS_SNAPALL      = TH32CS_SNAPHEAPLIST or TH32CS_SNAPPROCESS or
 
-                         TH32CS_SNAPTHREAD or TH32CS_SNAPMODULE;
 
-   {$EXTERNALSYM TH32CS_SNAPALL}
 
-   TH32CS_INHERIT      = $80000000;
 
-   {$EXTERNALSYM TH32CS_INHERIT}
 
- //
 
- // Use CloseHandle to destroy the snapshot
 
- //
 
- // Thread walking
 
- type
 
-   PTHREADENTRY32 = ^THREADENTRY32;
 
-   {$EXTERNALSYM PTHREADENTRY32}
 
-   tagTHREADENTRY32 = record
 
-     dwSize: DWORD;
 
-     cntUsage: DWORD;
 
-     th32ThreadID: DWORD;       // this thread
 
-     th32OwnerProcessID: DWORD; // Process this thread is associated with
 
-     tpBasePri: Longint;
 
-     tpDeltaPri: Longint;
 
-     dwFlags: DWORD;
 
-   end;
 
-   {$EXTERNALSYM tagTHREADENTRY32}
 
-   THREADENTRY32 = tagTHREADENTRY32;
 
-   {$EXTERNALSYM THREADENTRY32}
 
-   LPTHREADENTRY32 = ^THREADENTRY32;
 
-   {$EXTERNALSYM LPTHREADENTRY32}
 
-   TThreadEntry32 = THREADENTRY32;
 
-   {$EXTERNALSYM TThreadEntry32}
 
- function Thread32First(hSnapshot: THandle; var lpte: THREADENTRY32): BOOL; stdcall;
 
- {$EXTERNALSYM Thread32First}
 
- function Thread32Next(hSnapshot: THandle; var lpte: THREADENTRY32): BOOL; stdcall;
 
- {$EXTERNALSYM Thread32Next}
 
- type
 
-   _THREAD_INFORMATION_CLASS = type Cardinal;
 
-   {$EXTERNALSYM _THREAD_INFORMATION_CLASS}
 
-   THREAD_INFORMATION_CLASS = _THREAD_INFORMATION_CLASS;
 
-   {$EXTERNALSYM THREAD_INFORMATION_CLASS}
 
-   PTHREAD_INFORMATION_CLASS = ^_THREAD_INFORMATION_CLASS;
 
-   {$EXTERNALSYM PTHREAD_INFORMATION_CLASS}
 
- const
 
-   ThreadBasicInformation          = 0;
 
-   {$EXTERNALSYM ThreadBasicInformation}
 
-   ThreadTimes                     = 1;
 
-   {$EXTERNALSYM ThreadTimes}
 
-   ThreadPriority                  = 2;
 
-   {$EXTERNALSYM ThreadPriority}
 
-   ThreadBasePriority              = 3;
 
-   {$EXTERNALSYM ThreadBasePriority}
 
-   ThreadAffinityMask              = 4;
 
-   {$EXTERNALSYM ThreadAffinityMask}
 
-   ThreadImpersonationToken        = 5;
 
-   {$EXTERNALSYM ThreadImpersonationToken}
 
-   ThreadDescriptorTableEntry      = 6;
 
-   {$EXTERNALSYM ThreadDescriptorTableEntry}
 
-   ThreadEnableAlignmentFaultFixup = 7;
 
-   {$EXTERNALSYM ThreadEnableAlignmentFaultFixup}
 
-   ThreadEventPair                 = 8;
 
-   {$EXTERNALSYM ThreadEventPair}
 
-   ThreadQuerySetWin32StartAddress = 9;
 
-   {$EXTERNALSYM ThreadQuerySetWin32StartAddress}
 
-   ThreadZeroTlsCell               = 10;
 
-   {$EXTERNALSYM ThreadZeroTlsCell}
 
-   ThreadPerformanceCount          = 11;
 
-   {$EXTERNALSYM ThreadPerformanceCount}
 
-   ThreadAmILastThread             = 12;
 
-   {$EXTERNALSYM ThreadAmILastThread}
 
-   ThreadIdealProcessor            = 13;
 
-   {$EXTERNALSYM ThreadIdealProcessor}
 
-   ThreadPriorityBoost             = 14;
 
-   {$EXTERNALSYM ThreadPriorityBoost}
 
-   ThreadSetTlsArrayAddress        = 15;
 
-   {$EXTERNALSYM ThreadSetTlsArrayAddress}
 
-   ThreadIsIoPending               = 16;
 
-   {$EXTERNALSYM ThreadIsIoPending}
 
-   ThreadHideFromDebugger          = 17;
 
-   {$EXTERNALSYM ThreadHideFromDebugger}
 
- type
 
-   _CLIENT_ID = record
 
-     UniqueProcess: THandle;
 
-     UniqueThread: THandle;
 
-   end;
 
-   {$EXTERNALSYM _CLIENT_ID}
 
-   CLIENT_ID = _CLIENT_ID;
 
-   {$EXTERNALSYM CLIENT_ID}
 
-   PCLIENT_ID = ^CLIENT_ID;
 
-   {$EXTERNALSYM PCLIENT_ID}
 
-   KAFFINITY = ULONG;
 
-   {$EXTERNALSYM KAFFINITY}
 
-   KPRIORITY = LongInt;
 
-   {$EXTERNALSYM KPRIORITY}
 
-   _THREAD_BASIC_INFORMATION = record
 
-     ExitStatus: NTSTATUS;
 
-     TebBaseAddress: Pointer;
 
-     ClientId: CLIENT_ID;
 
-     AffinityMask: KAFFINITY;
 
-     Priority: KPRIORITY;
 
-     BasePriority: KPRIORITY;
 
-   end;
 
-   {$EXTERNALSYM _THREAD_BASIC_INFORMATION}
 
-   THREAD_BASIC_INFORMATION = _THREAD_BASIC_INFORMATION;
 
-   {$EXTERNALSYM THREAD_BASIC_INFORMATION}
 
-   PTHREAD_BASIC_INFORMATION = ^_THREAD_BASIC_INFORMATION;
 
-   {$EXTERNALSYM PTHREAD_BASIC_INFORMATION}
 
- function NtQueryInformationThread(ThreadHandle: THandle; ThreadInformationClass: THREAD_INFORMATION_CLASS;
 
-   ThreadInformation: Pointer; ThreadInformationLength: ULONG; ReturnLength: PULONG): NTSTATUS; stdcall;
 
- {$EXTERNALSYM NtQueryInformationThread}
 
- //DOM-IGNORE-END
 
- const
 
-   RtdlSetNamedSecurityInfoW: function(pObjectName: LPWSTR; ObjectType: SE_OBJECT_TYPE;
 
-     SecurityInfo: SECURITY_INFORMATION; psidOwner, psidGroup: PSID;
 
-     pDacl, pSacl: PACL): DWORD stdcall = SetNamedSecurityInfoW;
 
-   RtdlSetWaitableTimer: function(hTimer: THandle; var lpDueTime: TLargeInteger;
 
-     lPeriod: Longint; pfnCompletionRoutine: TFNTimerAPCRoutine;
 
-     lpArgToCompletionRoutine: Pointer; fResume: BOOL): BOOL stdcall = SetWaitableTimer;
 
-   RtdlNetUserAdd: function(servername: LPCWSTR; level: DWORD;
 
-     buf: PByte; parm_err: PDWord): NET_API_STATUS stdcall = NetUserAdd;
 
-   RtdlNetUserDel: function(servername: LPCWSTR;
 
-     username: LPCWSTR): NET_API_STATUS stdcall = NetUserDel;
 
-   RtdlNetGroupAdd: function(servername: LPCWSTR; level: DWORD; buf: PByte;
 
-     parm_err: PDWord): NET_API_STATUS stdcall = NetGroupAdd;
 
-   RtdlNetGroupEnum: function(servername: LPCWSTR; level: DWORD;
 
-     out bufptr: PByte; prefmaxlen: DWORD; out entriesread, totalentries: DWORD;
 
-     resume_handle: PDWORD_PTR): NET_API_STATUS stdcall = NetGroupEnum;
 
-   RtdlNetGroupDel: function(servername: LPCWSTR;
 
-     groupname: LPCWSTR): NET_API_STATUS stdcall = NetGroupDel;
 
-   RtdlNetLocalGroupAdd: function(servername: LPCWSTR; level: DWORD;
 
-     buf: PByte; parm_err: PDWord): NET_API_STATUS stdcall = NetLocalGroupAdd;
 
-   RtdlNetLocalGroupEnum: function(servername: LPCWSTR; level: DWORD;
 
-     out bufptr: PByte; prefmaxlen: DWORD; out entriesread, totalentries: DWORD;
 
-     resumehandle: PDWORD_PTR): NET_API_STATUS stdcall = NetLocalGroupEnum;
 
-   RtdlNetLocalGroupDel: function(servername: LPCWSTR;
 
-     groupname: LPCWSTR): NET_API_STATUS stdcall = NetLocalGroupDel;
 
-   RtdlNetLocalGroupAddMembers: function(servername: LPCWSTR; groupname: LPCWSTR;
 
-     level: DWORD; buf: PByte;
 
-     totalentries: DWORD): NET_API_STATUS stdcall = NetLocalGroupAddMembers;
 
-   RtdlNetApiBufferFree: function(Buffer: Pointer): NET_API_STATUS stdcall = NetApiBufferFree;
 
-   RtdlGetCalendarInfoA: function(Locale: LCID; Calendar: CALID; CalType: CALTYPE;
 
-     lpCalData: PAnsiChar; cchData: Integer;
 
-     lpValue: PDWORD): Integer stdcall = GetCalendarInfoA;
 
-   RtdlGetCalendarInfoW: function(Locale: LCID; Calendar: CALID; CalType: CALTYPE;
 
-     lpCalData: PWideChar; cchData: Integer;
 
-     lpValue: PDWORD): Integer stdcall = GetCalendarInfoW;
 
-   RtdlEnumCalendarInfoExW: function(lpCalInfoEnumProc: TCalInfoEnumProcExW;
 
-     Locale: LCID; Calendar: CALID; CalType: CALTYPE): BOOL stdcall = EnumCalendarInfoExW;
 
-   RtdlGetVolumeNameForVolumeMountPointW: function(lpszVolumeMountPoint: LPCWSTR;
 
-     lpszVolumeName: LPWSTR; cchBufferLength: DWORD): BOOL stdcall = GetVolumeNameForVolumeMountPointW;
 
-   RtdlSetVolumeMountPointW: function(lpszVolumeMountPoint: LPCWSTR;
 
-     lpszVolumeName: LPCWSTR): BOOL stdcall = SetVolumeMountPointW;
 
-   RtdlDeleteVolumeMountPointW: function(lpszVolumeMountPoint: LPCWSTR): BOOL
 
-     stdcall = DeleteVolumeMountPointW;
 
-   RtdlNetBios: function(P: PNCB): UCHAR stdcall = NetBios;
 
- {$IFDEF UNITVERSIONING}
 
- const
 
-   UnitVersioning: TUnitVersionInfo = (
 
-     RCSfile: '$URL$';
 
-     Revision: '$Revision$';
 
-     Date: '$Date$';
 
-     LogPath: 'JCL\source\windows'
 
-     );
 
- {$ENDIF UNITVERSIONING}
 
- implementation
 
- uses
 
-   JclResources;
 
- procedure GetProcedureAddress(var P: Pointer; const ModuleName, ProcName: string);
 
- var
 
-   ModuleHandle: HMODULE;
 
- begin
 
-   if not Assigned(P) then
 
-   begin
 
-     ModuleHandle := GetModuleHandle(PChar(ModuleName));
 
-     if ModuleHandle = 0 then
 
-     begin
 
-       ModuleHandle := SafeLoadLibrary(PChar(ModuleName));
 
-       if ModuleHandle = 0 then
 
-         raise EJclError.CreateResFmt(@RsELibraryNotFound, [ModuleName]);
 
-     end;
 
-     P := GetProcAddress(ModuleHandle, PChar(ProcName));
 
-     if not Assigned(P) then
 
-       raise EJclError.CreateResFmt(@RsEFunctionNotFound, [ModuleName, ProcName]);
 
-   end;
 
- end;
 
- //== { EJclWin32Error } ======================================================
 
- constructor EJclWin32Error.Create(const Msg: string);
 
- begin
 
-   FLastError := GetLastError;
 
-   FLastErrorMsg := SysErrorMessage(FLastError);
 
-   inherited CreateResFmt(@RsWin32Error, [FLastErrorMsg, FLastError, NativeLineBreak, Msg]);
 
- end;
 
- constructor EJclWin32Error.CreateFmt(const Msg: string; const Args: array of const);
 
- begin
 
-   FLastError := GetLastError;
 
-   FLastErrorMsg := SysErrorMessage(FLastError);
 
-   inherited CreateResFmt(@RsWin32Error, [FLastErrorMsg, FLastError, NativeLineBreak, Format(Msg, Args)]);
 
- end;
 
- constructor EJclWin32Error.CreateRes(Ident: Integer);
 
- begin
 
-   FLastError := GetLastError;
 
-   FLastErrorMsg := SysErrorMessage(FLastError);
 
-   inherited CreateResFmt(@RsWin32Error, [FLastErrorMsg, FLastError, NativeLineBreak, LoadStr(Ident)]);
 
- end;
 
- constructor EJclWin32Error.CreateRes(ResStringRec: PResStringRec);
 
- begin
 
-   FLastError := GetLastError;
 
-   FLastErrorMsg := SysErrorMessage(FLastError);
 
-   inherited CreateResFmt(@RsWin32Error, [FLastErrorMsg, FLastError, NativeLineBreak, LoadResString(ResStringRec)]);
 
- end;
 
- const
 
-   aclapilib = 'advapi32.dll';
 
- type
 
-   TSetNamedSecurityInfoW = function (pObjectName: LPWSTR; ObjectType: SE_OBJECT_TYPE;
 
-     SecurityInfo: SECURITY_INFORMATION; psidOwner, psidGroup: PSID;
 
-     pDacl, pSacl: PACL): DWORD; stdcall;
 
- var
 
-   _SetNamedSecurityInfoW: TSetNamedSecurityInfoW = nil;
 
- function SetNamedSecurityInfoW(pObjectName: LPWSTR; ObjectType: SE_OBJECT_TYPE;
 
-   SecurityInfo: SECURITY_INFORMATION; psidOwner, psidGroup: PSID;
 
-   pDacl, pSacl: PACL): DWORD;
 
- begin
 
-   GetProcedureAddress(Pointer(@_SetNamedSecurityInfoW), aclapilib, 'SetNamedSecurityInfoW');
 
-   Result := _SetNamedSecurityInfoW(pObjectName, ObjectType, SecurityInfo, psidOwner, psidGroup, pDacl, pSacl);
 
- end;
 
- const
 
-   ImageHlpLib = 'imagehlp.dll';
 
- type
 
-   TReBaseImage = function (CurrentImageName: PAnsiChar; SymbolPath: PAnsiChar; fReBase: BOOL;
 
-     fRebaseSysfileOk: BOOL; fGoingDown: BOOL; CheckImageSize: ULONG;
 
-     var OldImageSize: TJclAddr32; var OldImageBase: TJclAddr;
 
-     var NewImageSize: TJclAddr32; var NewImageBase: TJclAddr; TimeStamp: ULONG): BOOL; stdcall;
 
- var
 
-   _ReBaseImage: TReBaseImage = nil;
 
- function ReBaseImage(CurrentImageName: PAnsiChar; SymbolPath: PAnsiChar; fReBase: BOOL;
 
-   fRebaseSysfileOk: BOOL; fGoingDown: BOOL; CheckImageSize: ULONG;
 
-   var OldImageSize: TJclAddr32; var OldImageBase: TJclAddr;
 
-   var NewImageSize: TJclAddr32; var NewImageBase: TJclAddr; TimeStamp: ULONG): BOOL;
 
- begin
 
-   GetProcedureAddress(Pointer(@_ReBaseImage), ImageHlpLib, 'ReBaseImage');
 
-   Result := _ReBaseImage(CurrentImageName, SymbolPath, fReBase, fRebaseSysfileOk, fGoingDown, CheckImageSize, OldImageSize, OldImageBase, NewImageSize, NewImageBase, TimeStamp);
 
- end;
 
- type
 
-   TReBaseImage64 = function (CurrentImageName: PAnsiChar; SymbolPath: PAnsiChar; fReBase: BOOL;
 
-     fRebaseSysfileOk: BOOL; fGoingDown: BOOL; CheckImageSize: ULONG;
 
-     var OldImageSize: TJclAddr32; var OldImageBase: TJclAddr64;
 
-     var NewImageSize: TJclAddr32; var NewImageBase: TJclAddr64; TimeStamp: ULONG): BOOL; stdcall;
 
- var
 
-   _ReBaseImage64: TReBaseImage64 = nil;
 
- function ReBaseImage64(CurrentImageName: PAnsiChar; SymbolPath: PAnsiChar; fReBase: BOOL;
 
-   fRebaseSysfileOk: BOOL; fGoingDown: BOOL; CheckImageSize: ULONG;
 
-   var OldImageSize: TJclAddr32; var OldImageBase: TJclAddr64;
 
-   var NewImageSize: TJclAddr32; var NewImageBase: TJclAddr64; TimeStamp: ULONG): BOOL;
 
- begin
 
-   GetProcedureAddress(Pointer(@_ReBaseImage64), ImageHlpLib, 'ReBaseImage64');
 
-   Result := _ReBaseImage64(CurrentImageName, SymbolPath, fReBase, fRebaseSysfileOk, fGoingDown, CheckImageSize, OldImageSize, OldImageBase, NewImageSize, NewImageBase, TimeStamp);
 
- end;
 
- type
 
-   TCheckSumMappedFile = function (BaseAddress: Pointer; FileLength: DWORD;
 
-     out HeaderSum, CheckSum: DWORD): PImageNtHeaders; stdcall;
 
- var
 
-   _CheckSumMappedFile: TCheckSumMappedFile = nil;
 
- function CheckSumMappedFile(BaseAddress: Pointer; FileLength: DWORD;
 
-   out HeaderSum, CheckSum: DWORD): PImageNtHeaders;
 
- begin
 
-   GetProcedureAddress(Pointer(@_CheckSumMappedFile), ImageHlpLib, 'CheckSumMappedFile');
 
-   Result := _CheckSumMappedFile(BaseAddress, FileLength, HeaderSum, CheckSum);
 
- end;
 
- type
 
-   TGetImageUnusedHeaderBytes = function (const LoadedImage: LOADED_IMAGE;
 
-     var SizeUnusedHeaderBytes: DWORD): DWORD; stdcall;
 
- var
 
-   _GetImageUnusedHeaderBytes: TGetImageUnusedHeaderBytes = nil;
 
- function GetImageUnusedHeaderBytes(const LoadedImage: LOADED_IMAGE;
 
-   var SizeUnusedHeaderBytes: DWORD): DWORD;
 
- begin
 
-   GetProcedureAddress(Pointer(@_GetImageUnusedHeaderBytes), ImageHlpLib, 'GetImageUnusedHeaderBytes');
 
-   Result := _GetImageUnusedHeaderBytes(LoadedImage, SizeUnusedHeaderBytes);
 
- end;
 
- type
 
-   TMapAndLoad = function (ImageName, DllPath: PAnsiChar; var LoadedImage: LOADED_IMAGE;
 
-     DotDll: BOOL; ReadOnly: BOOL): BOOL; stdcall;
 
- var
 
-   _MapAndLoad: TMapAndLoad = nil;
 
- function MapAndLoad(ImageName, DllPath: PAnsiChar; var LoadedImage: LOADED_IMAGE;
 
-   DotDll: BOOL; ReadOnly: BOOL): BOOL;
 
- begin
 
-   GetProcedureAddress(Pointer(@_MapAndLoad), ImageHlpLib, 'MapAndLoad');
 
-   Result := _MapAndLoad(ImageName, DllPath, LoadedImage, DotDll, ReadOnly);
 
- end;
 
- type
 
-   TUnMapAndLoad = function (const LoadedImage: LOADED_IMAGE): BOOL; stdcall;
 
- var
 
-   _UnMapAndLoad: TUnMapAndLoad = nil;
 
- function UnMapAndLoad(const LoadedImage: LOADED_IMAGE): BOOL;
 
- begin
 
-   GetProcedureAddress(Pointer(@_UnMapAndLoad), ImageHlpLib, 'UnMapAndLoad');
 
-   Result := _UnMapAndLoad(LoadedImage);
 
- end;
 
- type
 
-   TTouchFileTimes = function (const FileHandle: THandle; const pSystemTime: TSystemTime): BOOL; stdcall;
 
- var
 
-   _TouchFileTimes: TTouchFileTimes = nil;
 
- function TouchFileTimes(const FileHandle: THandle; const pSystemTime: TSystemTime): BOOL;
 
- begin
 
-   GetProcedureAddress(Pointer(@_TouchFileTimes), ImageHlpLib, 'TouchFileTimes');
 
-   Result := _TouchFileTimes(FileHandle, pSystemTime);
 
- end;
 
- type
 
-   TImageDirectoryEntryToData = function (Base: Pointer; MappedAsImage: ByteBool;
 
-     DirectoryEntry: USHORT; var Size: ULONG): Pointer; stdcall;
 
- var
 
-   _ImageDirectoryEntryToData: TImageDirectoryEntryToData = nil;
 
- function ImageDirectoryEntryToData(Base: Pointer; MappedAsImage: ByteBool;
 
-   DirectoryEntry: USHORT; var Size: ULONG): Pointer;
 
- begin
 
-   GetProcedureAddress(Pointer(@_ImageDirectoryEntryToData), ImageHlpLib, 'ImageDirectoryEntryToData');
 
-   Result := _ImageDirectoryEntryToData(Base, MappedAsImage, DirectoryEntry, Size);
 
- end;
 
- type
 
-   TImageRvaToSection = function (NtHeaders: PImageNtHeaders; Base: Pointer; Rva: ULONG): PImageSectionHeader; stdcall;
 
- var
 
-   _ImageRvaToSection: TImageRvaToSection = nil;
 
- function ImageRvaToSection(NtHeaders: PImageNtHeaders; Base: Pointer; Rva: ULONG): PImageSectionHeader;
 
- begin
 
-   GetProcedureAddress(Pointer(@_ImageRvaToSection), ImageHlpLib, 'ImageRvaToSection');
 
-   Result := _ImageRvaToSection(NtHeaders, Base, Rva);
 
- end;
 
- type
 
-   TImageRvaToVa = function (NtHeaders: PImageNtHeaders; Base: Pointer; Rva: ULONG;
 
-     LastRvaSection: PPImageSectionHeader): Pointer; stdcall;
 
- var
 
-   _ImageRvaToVa: TImageRvaToVa = nil;
 
- function ImageRvaToVa(NtHeaders: PImageNtHeaders; Base: Pointer; Rva: ULONG;
 
-   LastRvaSection: PPImageSectionHeader): Pointer;
 
- begin
 
-   GetProcedureAddress(Pointer(@_ImageRvaToVa), ImageHlpLib, 'ImageRvaToVa');
 
-   Result := _ImageRvaToVa(NtHeaders, Base, Rva, LastRvaSection);
 
- end;
 
- type
 
-   TCancelIo = function (hFile: THandle): BOOL; stdcall;
 
- var
 
-   _CancelIo: TCancelIo = nil;
 
- function CancelIo(hFile: THandle): BOOL;
 
- begin
 
-   GetProcedureAddress(Pointer(@_CancelIo), kernel32, 'CancelIo');
 
-   Result := _CancelIo(hFile);
 
- end;
 
- type
 
-   TNetUserAdd = function (servername: LPCWSTR; level: DWORD; buf: PByte; parm_err: LPDWORD): NET_API_STATUS; stdcall;
 
- var
 
-   _NetUserAdd: TNetUserAdd = nil;
 
- function NetUserAdd(servername: LPCWSTR; level: DWORD; buf: PByte; parm_err: LPDWORD): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetUserAdd), netapi32, 'NetUserAdd');
 
-   Result := _NetUserAdd(servername, level, buf, parm_err);
 
- end;
 
- type
 
-   TNetUserEnum = function (servername: LPCWSTR; level, filter: DWORD; var bufptr: PByte; prefmaxlen: DWORD; entriesread, totalentries, resume_handle: LPDWORD): NET_API_STATUS; stdcall;
 
- var
 
-   _NetUserEnum: TNetUserEnum = nil;
 
- function NetUserEnum(servername: LPCWSTR; level, filter: DWORD; var bufptr: PByte; prefmaxlen: DWORD; entriesread, totalentries, resume_handle: LPDWORD): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetUserEnum), netapi32, 'NetUserEnum');
 
-   Result := _NetUserEnum(servername, level, filter, bufptr, prefmaxlen, entriesread, totalentries, resume_handle);
 
- end;
 
- type
 
-   TNetUserGetInfo = function (servername, username: LPCWSTR; level: DWORD; var bufptr: PByte): NET_API_STATUS; stdcall;
 
- var
 
-   _NetUserGetInfo: TNetUserGetInfo = nil;
 
- function NetUserGetInfo(servername, username: LPCWSTR; level: DWORD; var bufptr: PByte): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetUserGetInfo), netapi32, 'NetUserGetInfo');
 
-   Result := _NetUserGetInfo(servername, username, level, bufptr);
 
- end;
 
- type
 
-   TNetUserSetInfo = function (servername, username: LPCWSTR; level: DWORD; buf: PByte; parm_err: LPDWORD): NET_API_STATUS; stdcall;
 
- var
 
-   _NetUserSetInfo: TNetUserSetInfo = nil;
 
- function NetUserSetInfo(servername, username: LPCWSTR; level: DWORD; buf: PByte; parm_err: LPDWORD): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetUserSetInfo), netapi32, 'NetUserSetInfo');
 
-   Result := _NetUserSetInfo(servername, username, level, buf, parm_err);
 
- end;
 
- type
 
-   TNetUserDel = function (servername: LPCWSTR; username: LPCWSTR): NET_API_STATUS; stdcall;
 
- var
 
-   _NetUserDel: TNetUserDel = nil;
 
- function NetUserDel(servername: LPCWSTR; username: LPCWSTR): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetUserDel), netapi32, 'NetUserDel');
 
-   Result := _NetUserDel(servername, username);
 
- end;
 
- type
 
-   TNetUserGetGroups = function (servername, username: LPCWSTR; level: DWORD; var bufptr: PByte; prefmaxlen: DWORD; entriesread, totalentries: LPDWORD): NET_API_STATUS; stdcall;
 
- var
 
-   _NetUserGetGroups: TNetUserGetGroups = nil;
 
- function NetUserGetGroups(servername, username: LPCWSTR; level: DWORD; var bufptr: PByte; prefmaxlen: DWORD; entriesread, totalentries: LPDWORD): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetUserGetGroups), netapi32, 'NetUserGetGroups');
 
-   Result := _NetUserGetGroups(servername, username, level, bufptr, prefmaxlen, entriesread, totalentries);
 
- end;
 
- type
 
-   TNetUserSetGroups = function (servername, username: LPCWSTR; level: DWORD; buf: PByte; num_entries: DWORD): NET_API_STATUS; stdcall;
 
- var
 
-   _NetUserSetGroups: TNetUserSetGroups = nil;
 
- function NetUserSetGroups(servername, username: LPCWSTR; level: DWORD; buf: PByte; num_entries: DWORD): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetUserSetGroups), netapi32, 'NetUserSetGroups');
 
-   Result := _NetUserSetGroups(servername, username, level, buf, num_entries);
 
- end;
 
- type
 
-   TNetUserGetLocalGroups = function (servername, username: LPCWSTR; level, flags: DWORD; var bufptr: PByte; prefmaxlen: DWORD; entriesread, totalentries: LPDWORD): NET_API_STATUS; stdcall;
 
- var
 
-   _NetUserGetLocalGroups: TNetUserGetLocalGroups = nil;
 
- function NetUserGetLocalGroups(servername, username: LPCWSTR; level, flags: DWORD; var bufptr: PByte; prefmaxlen: DWORD; entriesread, totalentries: LPDWORD): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetUserGetLocalGroups), netapi32, 'NetUserGetLocalGroups');
 
-   Result := _NetUserGetLocalGroups(servername, username, level, flags, bufptr, prefmaxlen, entriesread, totalentries);
 
- end;
 
- type
 
-  TNetUserModalsGet = function (servername: LPCWSTR; level: DWORD; var bufptr: PByte): NET_API_STATUS; stdcall;
 
- var
 
-   _NetUserModalsGet: TNetUserModalsGet = nil;
 
- function NetUserModalsGet(servername: LPCWSTR; level: DWORD; var bufptr: PByte): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetUserModalsGet), netapi32, 'NetUserModalsGet');
 
-   Result := _NetUserModalsGet(servername, level, bufptr);
 
- end;
 
- type
 
-   TNetUserModalsSet = function (servername: LPCWSTR; level: DWORD; buf: PByte; parm_err: LPDWORD): NET_API_STATUS; stdcall;
 
- var
 
-   _NetUserModalsSet: TNetUserModalsSet = nil;
 
- function NetUserModalsSet(servername: LPCWSTR; level: DWORD; buf: PByte; parm_err: LPDWORD): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetUserModalsSet), netapi32, 'NetUserModalsSet');
 
-   Result := _NetUserModalsSet(servername, level, buf, parm_err);
 
- end;
 
- type
 
-  TNetUserChangePassword = function (domainname, username, oldpassword, newpassword: LPCWSTR): NET_API_STATUS; stdcall;
 
- var
 
-   _NetUserChangePassword: TNetUserChangePassword = nil;
 
- function NetUserChangePassword(domainname, username, oldpassword, newpassword: LPCWSTR): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetUserChangePassword), netapi32, 'NetUserChangePassword');
 
-   Result := _NetUserChangePassword(domainname, username, oldpassword, newpassword);
 
- end;
 
- type
 
-   TNetGroupAdd = function (servername: LPCWSTR; level: DWORD; buf: PByte; parm_err: LPDWORD): NET_API_STATUS; stdcall;
 
- var
 
-   _NetGroupAdd: TNetGroupAdd = nil;
 
- function NetGroupAdd(servername: LPCWSTR; level: DWORD; buf: PByte; parm_err: LPDWORD): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetGroupAdd), netapi32, 'NetGroupAdd');
 
-   Result := _NetGroupAdd(servername, level, buf, parm_err);
 
- end;
 
- type
 
-   TNetGroupAddUser = function (servername, GroupName, username: LPCWSTR): NET_API_STATUS; stdcall;
 
- var
 
-   _NetGroupAddUser: TNetGroupAddUser = nil;
 
- function NetGroupAddUser(servername, GroupName, username: LPCWSTR): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetGroupAddUser), netapi32, 'NetGroupAddUser');
 
-   Result := _NetGroupAddUser(servername, GroupName, username);
 
- end;
 
- type
 
-   TNetGroupEnum = function (servername: LPCWSTR; level: DWORD; out bufptr: PByte;
 
-     prefmaxlen: DWORD; out entriesread, totalentries: DWORD; resume_handle: PDWORD_PTR): NET_API_STATUS; stdcall;
 
- var
 
-   _NetGroupEnum: TNetGroupEnum = nil;
 
- function NetGroupEnum(servername: LPCWSTR; level: DWORD; out bufptr: PByte;
 
-   prefmaxlen: DWORD; out entriesread, totalentries: DWORD; resume_handle: PDWORD_PTR): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetGroupEnum), netapi32, 'NetGroupEnum');
 
-   Result := _NetGroupEnum(servername, level, bufptr, prefmaxlen, entriesread, totalentries, resume_handle);
 
- end;
 
- type
 
-   TNetGroupGetInfo = function (servername, groupname: LPCWSTR; level: DWORD; bufptr: PByte): NET_API_STATUS; stdcall;
 
- var
 
-   _NetGroupGetInfo: TNetGroupGetInfo = nil;
 
- function NetGroupGetInfo(servername, groupname: LPCWSTR; level: DWORD; bufptr: PByte): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetGroupGetInfo), netapi32, 'NetGroupGetInfo');
 
-   Result := _NetGroupGetInfo(servername, groupname, level, bufptr);
 
- end;
 
- type
 
-   TNetGroupSetInfo = function (servername, groupname: LPCWSTR; level: DWORD; buf: PByte; parm_err: LPDWORD): NET_API_STATUS; stdcall;
 
- var
 
-   _NetGroupSetInfo: TNetGroupSetInfo = nil;
 
- function NetGroupSetInfo(servername, groupname: LPCWSTR; level: DWORD; buf: PByte; parm_err: LPDWORD): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetGroupSetInfo), netapi32, 'NetGroupSetInfo');
 
-   Result := _NetGroupSetInfo(servername, groupname, level, buf, parm_err);
 
- end;
 
- type
 
-   TNetGroupDel = function (servername: LPCWSTR; groupname: LPCWSTR): NET_API_STATUS; stdcall;
 
- var
 
-   _NetGroupDel: TNetGroupDel = nil;
 
- function NetGroupDel(servername: LPCWSTR; groupname: LPCWSTR): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetGroupDel), netapi32, 'NetGroupDel');
 
-   Result := _NetGroupDel(servername, groupname);
 
- end;
 
- type
 
-   TNetGroupDelUser = function (servername: LPCWSTR; GroupName: LPCWSTR; Username: LPCWSTR): NET_API_STATUS; stdcall;
 
- var
 
-   _NetGroupDelUser: TNetGroupDelUser = nil;
 
- function NetGroupDelUser(servername: LPCWSTR; GroupName: LPCWSTR; Username: LPCWSTR): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetGroupDelUser), netapi32, 'NetGroupDelUser');
 
-   Result := _NetGroupDelUser(servername, GroupName, Username);
 
- end;
 
- type
 
-   TNetGroupGetUsers = function (servername, groupname: LPCWSTR; level: DWORD; var bufptr: PByte; prefmaxlen: DWORD; entriesread, totalentries: LPDWORD; ResumeHandle: PDWORD_PTR): NET_API_STATUS; stdcall;
 
- var
 
-   _NetGroupGetUsers: TNetGroupGetUsers = nil;
 
- function NetGroupGetUsers(servername, groupname: LPCWSTR; level: DWORD; var bufptr: PByte; prefmaxlen: DWORD; entriesread, totalentries: LPDWORD; ResumeHandle: PDWORD_PTR): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetGroupGetUsers), netapi32, 'NetGroupGetUsers');
 
-   Result := _NetGroupGetUsers(servername, groupname, level, bufptr, prefmaxlen, entriesread, totalentries, ResumeHandle);
 
- end;
 
- type
 
-   TNetGroupSetUsers = function (servername, groupname: LPCWSTR; level: DWORD; buf: PByte; totalentries: DWORD): NET_API_STATUS; stdcall;
 
- var
 
-   _NetGroupSetUsers: TNetGroupSetUsers = nil;
 
- function NetGroupSetUsers(servername, groupname: LPCWSTR; level: DWORD; buf: PByte; totalentries: DWORD): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetGroupSetUsers), netapi32, 'NetGroupSetUsers');
 
-   Result := _NetGroupSetUsers(servername, groupname, level, buf, totalentries);
 
- end;
 
- type
 
-   TNetLocalGroupAdd = function (servername: LPCWSTR; level: DWORD; buf: PByte; parm_err: LPDWORD): NET_API_STATUS; stdcall;
 
- var
 
-   _NetLocalGroupAdd: TNetLocalGroupAdd = nil;
 
- function NetLocalGroupAdd(servername: LPCWSTR; level: DWORD; buf: PByte; parm_err: LPDWORD): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetLocalGroupAdd), netapi32, 'NetLocalGroupAdd');
 
-   Result := _NetLocalGroupAdd(servername, level, buf, parm_err);
 
- end;
 
- type
 
-   TNetLocalGroupAddMember = function (servername, groupname: LPCWSTR; membersid: PSID): NET_API_STATUS; stdcall;
 
- var
 
-   _NetLocalGroupAddMember: TNetLocalGroupAddMember = nil;
 
- function NetLocalGroupAddMember(servername, groupname: LPCWSTR; membersid: PSID): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetLocalGroupAddMember), netapi32, 'NetLocalGroupAddMember');
 
-   Result := _NetLocalGroupAddMember(servername, groupname, membersid);
 
- end;
 
- type
 
-   TNetLocalGroupEnum = function (servername: LPCWSTR; level: DWORD; out bufptr: PByte;
 
-     prefmaxlen: DWORD; out entriesread, totalentries: DWORD; resumehandle: PDWORD_PTR): NET_API_STATUS; stdcall;
 
- var
 
-   _NetLocalGroupEnum: TNetLocalGroupEnum = nil;
 
- function NetLocalGroupEnum(servername: LPCWSTR; level: DWORD; out bufptr: PByte;
 
-   prefmaxlen: DWORD; out entriesread, totalentries: DWORD; resumehandle: PDWORD_PTR): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetLocalGroupEnum), netapi32, 'NetLocalGroupEnum');
 
-   Result := _NetLocalGroupEnum(servername, level, bufptr, prefmaxlen, entriesread, totalentries, resumehandle);
 
- end;
 
- type
 
-   TNetLocalGroupGetInfo = function (servername, groupname: LPCWSTR; level: DWORD; var bufptr: PByte): NET_API_STATUS; stdcall;
 
- var
 
-   _NetLocalGroupGetInfo: TNetLocalGroupGetInfo = nil;
 
- function NetLocalGroupGetInfo(servername, groupname: LPCWSTR; level: DWORD; var bufptr: PByte): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetLocalGroupGetInfo), netapi32, 'NetLocalGroupGetInfo');
 
-   Result := _NetLocalGroupGetInfo(servername, groupname, level, bufptr);
 
- end;
 
- type
 
-   TNetLocalGroupSetInfo = function (servername, groupname: LPCWSTR; level: DWORD; buf: PByte; parm_err: LPDWORD): NET_API_STATUS; stdcall;
 
- var
 
-   _NetLocalGroupSetInfo: TNetLocalGroupSetInfo = nil;
 
- function NetLocalGroupSetInfo(servername, groupname: LPCWSTR; level: DWORD; buf: PByte; parm_err: LPDWORD): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetLocalGroupSetInfo), netapi32, 'NetLocalGroupSetInfo');
 
-   Result := _NetLocalGroupSetInfo(servername, groupname, level, buf, parm_err);
 
- end;
 
- type
 
-   TNetLocalGroupDel = function (servername: LPCWSTR; groupname: LPCWSTR): NET_API_STATUS; stdcall;
 
- var
 
-   _NetLocalGroupDel: TNetLocalGroupDel = nil;
 
- function NetLocalGroupDel(servername: LPCWSTR; groupname: LPCWSTR): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetLocalGroupDel), netapi32, 'NetLocalGroupDel');
 
-   Result := _NetLocalGroupDel(servername, groupname);
 
- end;
 
- type
 
-   TNetLocalGroupDelMember = function (servername: LPCWSTR; groupname: LPCWSTR; membersid: PSID): NET_API_STATUS; stdcall;
 
- var
 
-   _NetLocalGroupDelMember: TNetLocalGroupDelMember = nil;
 
- function NetLocalGroupDelMember(servername: LPCWSTR; groupname: LPCWSTR; membersid: PSID): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetLocalGroupDelMember), netapi32, 'NetLocalGroupDelMember');
 
-   Result := _NetLocalGroupDelMember(servername, groupname, membersid);
 
- end;
 
- type
 
-   TNetLocalGroupGetMembers = function (servername, localgroupname: LPCWSTR; level: DWORD; var bufptr: PByte; prefmaxlen: DWORD; entriesread, totalentries: LPDWORD; resumehandle: PDWORD_PTR): NET_API_STATUS; stdcall;
 
- var
 
-   _NetLocalGroupGetMembers: TNetLocalGroupGetMembers = nil;
 
- function NetLocalGroupGetMembers(servername, localgroupname: LPCWSTR; level: DWORD; var bufptr: PByte; prefmaxlen: DWORD; entriesread, totalentries: LPDWORD; resumehandle: PDWORD_PTR): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetLocalGroupGetMembers), netapi32, 'NetLocalGroupGetMembers');
 
-   Result := _NetLocalGroupGetMembers(servername, localgroupname, level, bufptr, prefmaxlen, entriesread, totalentries, resumehandle);
 
- end;
 
- type
 
-   TNetLocalGroupSetMembers = function (servername, groupname: LPCWSTR; level: DWORD; buf: PByte; totalentries: DWORD): NET_API_STATUS; stdcall;
 
- var
 
-   _NetLocalGroupSetMembers: TNetLocalGroupSetMembers = nil;
 
- function NetLocalGroupSetMembers(servername, groupname: LPCWSTR; level: DWORD; buf: PByte; totalentries: DWORD): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetLocalGroupSetMembers), netapi32, 'NetLocalGroupSetMembers');
 
-   Result := _NetLocalGroupSetMembers(servername, groupname, level, buf, totalentries);
 
- end;
 
- type
 
-   TNetLocalGroupAddMembers = function (servername, groupname: LPCWSTR; level: DWORD; buf: PByte; totalentries: DWORD): NET_API_STATUS; stdcall;
 
- var
 
-   _NetLocalGroupAddMembers: TNetLocalGroupAddMembers = nil;
 
- function NetLocalGroupAddMembers(servername, groupname: LPCWSTR; level: DWORD; buf: PByte; totalentries: DWORD): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetLocalGroupAddMembers), netapi32, 'NetLocalGroupAddMembers');
 
-   Result := _NetLocalGroupAddMembers(servername, groupname, level, buf, totalentries);
 
- end;
 
- type
 
-   TNetLocalGroupDelMembers = function (servername, groupname: LPCWSTR; level: DWORD; buf: PByte; totalentries: DWORD): NET_API_STATUS; stdcall;
 
- var
 
-   _NetLocalGroupDelMembers: TNetLocalGroupDelMembers = nil;
 
- function NetLocalGroupDelMembers(servername, groupname: LPCWSTR; level: DWORD; buf: PByte; totalentries: DWORD): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetLocalGroupDelMembers), netapi32, 'NetLocalGroupDelMembers');
 
-   Result := _NetLocalGroupDelMembers(servername, groupname, level, buf, totalentries);
 
- end;
 
- type
 
-   TNetApiBufferFree = function (Buffer: Pointer): NET_API_STATUS; stdcall;
 
- var
 
-   _NetApiBufferFree: TNetApiBufferFree = nil;
 
- function NetApiBufferFree(Buffer: Pointer): NET_API_STATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetApiBufferFree), netapi32, 'NetApiBufferFree');
 
-   Result := _NetApiBufferFree(Buffer);
 
- end;
 
- type
 
-   TNetWkstaGetInfo = function (servername: PWideChar; level: DWORD; out bufptr: PByte): NET_API_STATUS; stdcall;
 
- var
 
-   _NetWkstaGetInfo: TNetWkstaGetInfo = nil;
 
- function NetWkstaGetInfo(servername: PWideChar; level: DWORD; out bufptr: PByte): NET_API_STATUS; stdcall;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NetWkstaGetInfo), netapi32, 'NetWkstaGetInfo');
 
-   Result := _NetWkstaGetInfo(servername, level, bufptr);
 
- end;
 
- type
 
-   TNetbios = function (pncb: PNCB): UCHAR; stdcall;
 
- var
 
-   _Netbios: TNetbios = nil;
 
- function Netbios(pncb: PNCB): UCHAR;
 
- begin
 
-   GetProcedureAddress(Pointer(@_Netbios), 'netapi32.dll', 'Netbios');
 
-   Result := _Netbios(pncb);
 
- end;
 
- type
 
-   TGlobalMemoryStatusEx = function (out lpBuffer: TMemoryStatusEx): BOOL; stdcall;
 
- var
 
-   _GlobalMemoryStatusEx: TGlobalMemoryStatusEx = nil;
 
- function GlobalMemoryStatusEx(out lpBuffer: TMemoryStatusEx): BOOL; stdcall;
 
- begin
 
-   GetProcedureAddress(Pointer(@_GlobalMemoryStatusEx), kernel32, 'GlobalMemoryStatusEx');
 
-   Result := _GlobalMemoryStatusEx(lpBuffer);
 
- end;
 
- type
 
-   TBackupSeek = function (hFile: THandle; dwLowBytesToSeek, dwHighBytesToSeek: DWORD;
 
-     out lpdwLowByteSeeked, lpdwHighByteSeeked: DWORD;
 
-     var lpContext: Pointer): BOOL; stdcall;
 
- var
 
-   _BackupSeek: TBackupSeek = nil;
 
- function BackupSeek(hFile: THandle; dwLowBytesToSeek, dwHighBytesToSeek: DWORD;
 
-   out lpdwLowByteSeeked, lpdwHighByteSeeked: DWORD;
 
-   var lpContext: Pointer): BOOL;
 
- begin
 
-   GetProcedureAddress(Pointer(@_BackupSeek), kernel32, 'BackupSeek');
 
-   Result := _BackupSeek(hFile, dwLowBytesToSeek, dwHighBytesToSeek, lpdwLowByteSeeked, lpdwHighByteSeeked, lpContext);
 
- end;
 
- type
 
-   TAdjustTokenPrivileges = function (TokenHandle: THandle; DisableAllPrivileges: BOOL;
 
-     const NewState: TTokenPrivileges; BufferLength: DWORD;
 
-     PreviousState: PTokenPrivileges;
 
-     ReturnLength: PDWORD
 
-     ): BOOL; stdcall;
 
- var
 
-   _AdjustTokenPrivileges: TAdjustTokenPrivileges = nil;
 
- function AdjustTokenPrivileges(TokenHandle: THandle; DisableAllPrivileges: BOOL;
 
-   const NewState: TTokenPrivileges; BufferLength: DWORD;
 
-   PreviousState: PTokenPrivileges;
 
-   ReturnLength: PDWORD
 
-   ): BOOL;
 
- begin
 
-   GetProcedureAddress(Pointer(@_AdjustTokenPrivileges), advapi32, 'AdjustTokenPrivileges');
 
-   Result := _AdjustTokenPrivileges(TokenHandle, DisableAllPrivileges, NewState, BufferLength, PreviousState, ReturnLength);
 
- end;
 
- function CreateMutex(lpMutexAttributes: PSecurityAttributes; bInitialOwner: BOOL; lpName: PChar): THandle; stdcall;
 
-   external kernel32 name 'CreateMutex' + AWSuffix;
 
- function GetVersionEx(var lpVersionInformation: TOSVersionInfoEx): BOOL; stdcall;
 
-   external kernel32 name 'GetVersionEx' + AWSuffix;
 
- function GetVersionEx(lpVersionInformation: POSVersionInfoEx): BOOL; stdcall;
 
-   external kernel32 name 'GetVersionEx' + AWSuffix;
 
- type
 
-   TSetWaitableTimer = function (hTimer: THandle; var lpDueTime: TLargeInteger;
 
-     lPeriod: Longint; pfnCompletionRoutine: TFNTimerAPCRoutine;
 
-     lpArgToCompletionRoutine: Pointer; fResume: BOOL): BOOL; stdcall;
 
- var
 
-   _SetWaitableTimer: TSetWaitableTimer = nil;
 
- function SetWaitableTimer(hTimer: THandle; var lpDueTime: TLargeInteger;
 
-   lPeriod: Longint; pfnCompletionRoutine: TFNTimerAPCRoutine;
 
-   lpArgToCompletionRoutine: Pointer; fResume: BOOL): BOOL;
 
- begin
 
-   GetProcedureAddress(Pointer(@_SetWaitableTimer), kernel32, 'SetWaitableTimer');
 
-   Result := _SetWaitableTimer(hTimer, lpDueTime, lPeriod, pfnCompletionRoutine, lpArgToCompletionRoutine, fResume);
 
- end;
 
- type
 
-   TSetFileSecurityA = function (lpFileName: LPCSTR; SecurityInformation: SECURITY_INFORMATION;
 
-     pSecurityDescriptor: PSECURITY_DESCRIPTOR): BOOL; stdcall;
 
- var
 
-   _SetFileSecurityA: TSetFileSecurityA = nil;
 
- function SetFileSecurityA(lpFileName: LPCSTR; SecurityInformation: SECURITY_INFORMATION;
 
-   pSecurityDescriptor: PSECURITY_DESCRIPTOR): BOOL;
 
- begin
 
-   GetProcedureAddress(Pointer(@_SetFileSecurityA), advapi32, 'SetFileSecurityA');
 
-   Result := _SetFileSecurityA(lpFileName, SecurityInformation, pSecurityDescriptor);
 
- end;
 
- type
 
-   TSetFileSecurityW = function (lpFileName: LPCWSTR; SecurityInformation: SECURITY_INFORMATION;
 
-     pSecurityDescriptor: PSECURITY_DESCRIPTOR): BOOL; stdcall;
 
- var
 
-   _SetFileSecurityW: TSetFileSecurityW = nil;
 
- function SetFileSecurityW(lpFileName: LPCWSTR; SecurityInformation: SECURITY_INFORMATION;
 
-   pSecurityDescriptor: PSECURITY_DESCRIPTOR): BOOL;
 
- begin
 
-   GetProcedureAddress(Pointer(@_SetFileSecurityW), advapi32, 'SetFileSecurityW');
 
-   Result := _SetFileSecurityW(lpFileName, SecurityInformation, pSecurityDescriptor);
 
- end;
 
- type
 
-   TSetFileSecurity = function (lpFileName: LPCTSTR; SecurityInformation: SECURITY_INFORMATION;
 
-     pSecurityDescriptor: PSECURITY_DESCRIPTOR): BOOL; stdcall;
 
- var
 
-   _SetFileSecurity: TSetFileSecurity = nil;
 
- function SetFileSecurity(lpFileName: LPCTSTR; SecurityInformation: SECURITY_INFORMATION;
 
-   pSecurityDescriptor: PSECURITY_DESCRIPTOR): BOOL;
 
- begin
 
-   GetProcedureAddress(Pointer(@_SetFileSecurity), advapi32, 'SetFileSecurity' + AWSuffix);
 
-   Result := _SetFileSecurity(lpFileName, SecurityInformation, pSecurityDescriptor);
 
- end;
 
- type
 
-   TGetFileSecurityA = function (lpFileName: LPCSTR; RequestedInformation: SECURITY_INFORMATION;
 
-     pSecurityDescriptor: PSECURITY_DESCRIPTOR; nLength: DWORD;
 
-     var lpnLengthNeeded: DWORD): BOOL; stdcall;
 
- var
 
-   _GetFileSecurityA: TGetFileSecurityA = nil;
 
- function GetFileSecurityA(lpFileName: LPCSTR; RequestedInformation: SECURITY_INFORMATION;
 
-   pSecurityDescriptor: PSECURITY_DESCRIPTOR; nLength: DWORD;
 
-   var lpnLengthNeeded: DWORD): BOOL;
 
- begin
 
-   GetProcedureAddress(Pointer(@_GetFileSecurityA), advapi32, 'GetFileSecurityA');
 
-   Result := _GetFileSecurityA(lpFileName, RequestedInformation, pSecurityDescriptor, nLength, lpnLengthNeeded);
 
- end;
 
- type
 
-   TGetFileSecurityW = function (lpFileName: LPCWSTR; RequestedInformation: SECURITY_INFORMATION;
 
-     pSecurityDescriptor: PSECURITY_DESCRIPTOR; nLength: DWORD;
 
-     var lpnLengthNeeded: DWORD): BOOL; stdcall;
 
- var
 
-   _GetFileSecurityW: TGetFileSecurityW = nil;
 
- function GetFileSecurityW(lpFileName: LPCWSTR; RequestedInformation: SECURITY_INFORMATION;
 
-   pSecurityDescriptor: PSECURITY_DESCRIPTOR; nLength: DWORD;
 
-   var lpnLengthNeeded: DWORD): BOOL;
 
- begin
 
-   GetProcedureAddress(Pointer(@_GetFileSecurityW), advapi32, 'GetFileSecurityW');
 
-   Result := _GetFileSecurityW(lpFileName, RequestedInformation, pSecurityDescriptor, nLength, lpnLengthNeeded);
 
- end;
 
- type
 
-   TGetFileSecurity = function (lpFileName: LPCTSTR; RequestedInformation: SECURITY_INFORMATION;
 
-     pSecurityDescriptor: PSECURITY_DESCRIPTOR; nLength: DWORD;
 
-     var lpnLengthNeeded: DWORD): BOOL; stdcall;
 
- var
 
-   _GetFileSecurity: TGetFileSecurity = nil;
 
- function GetFileSecurity(lpFileName: LPCTSTR; RequestedInformation: SECURITY_INFORMATION;
 
-   pSecurityDescriptor: PSECURITY_DESCRIPTOR; nLength: DWORD;
 
-   var lpnLengthNeeded: DWORD): BOOL;
 
- begin
 
-   GetProcedureAddress(Pointer(@_GetFileSecurity), advapi32, 'GetFileSecurity' + AWSuffix);
 
-   Result := _GetFileSecurity(lpFileName, RequestedInformation, pSecurityDescriptor, nLength, lpnLengthNeeded);
 
- end;
 
- type
 
-   TSetVolumeMountPointW = function (lpszVolumeMountPoint, lpszVolumeName: LPCWSTR): BOOL; stdcall;
 
- var
 
-   _SetVolumeMountPointW: TSetVolumeMountPointW = nil;
 
- function SetVolumeMountPointW(lpszVolumeMountPoint, lpszVolumeName: LPCWSTR): BOOL;
 
- begin
 
-   GetProcedureAddress(Pointer(@_SetVolumeMountPointW), kernel32, 'SetVolumeMountPointW');
 
-   Result := _SetVolumeMountPointW(lpszVolumeMountPoint, lpszVolumeName);
 
- end;
 
- type
 
-   TDeleteVolumeMountPointW = function (lpszVolumeMountPoint: LPCWSTR): BOOL; stdcall;
 
- var
 
-   _DeleteVolumeMountPointW: TDeleteVolumeMountPointW = nil;
 
- function DeleteVolumeMountPointW(lpszVolumeMountPoint: LPCWSTR): BOOL;
 
- begin
 
-   GetProcedureAddress(Pointer(@_DeleteVolumeMountPointW), kernel32, 'DeleteVolumeMountPointW');
 
-   Result := _DeleteVolumeMountPointW(lpszVolumeMountPoint);
 
- end;
 
- type
 
-   TGetVolumeNameForVolumeMountPointW = function (lpszVolumeMountPoint: LPCWSTR;
 
-   lpszVolumeName: LPWSTR; cchBufferLength: DWORD): BOOL; stdcall;
 
- var
 
-   _GetVolumeNameForVolMountPointW: TGetVolumeNameForVolumeMountPointW = nil;
 
- function GetVolumeNameForVolumeMountPointW(lpszVolumeMountPoint: LPCWSTR;
 
-   lpszVolumeName: LPWSTR; cchBufferLength: DWORD): BOOL;
 
- begin
 
-   GetProcedureAddress(Pointer(@_GetVolumeNameForVolMountPointW), kernel32, 'GetVolumeNameForVolumeMountPointW');
 
-   Result := _GetVolumeNameForVolMountPointW(lpszVolumeMountPoint, lpszVolumeName, cchBufferLength);
 
- end;
 
- type
 
-   TCopyExtendedContext = function (Destination: PCONTEXT_EX; ContextFlags: DWORD; Source: PCONTEXT_EX): BOOL; stdcall;
 
- var
 
-   _CopyExtendedContext: TCopyExtendedContext = nil;
 
- function CopyExtendedContext(Destination: PCONTEXT_EX; ContextFlags: DWORD; Source: PCONTEXT_EX): BOOL;
 
- begin
 
-   GetProcedureAddress(Pointer(@_CopyExtendedContext), kernel32, 'CopyExtendedContext');
 
-   Result := _CopyExtendedContext(Destination, ContextFlags, Source);
 
- end;
 
- type
 
-   TInitializeExtendedContext = function (Context: Pointer; ContextFlags: DWORD; out ContextEx: PCONTEXT_EX): BOOL; stdcall;
 
- var
 
-   _InitializeExtendedContext: TInitializeExtendedContext = nil;
 
- function InitializeExtendedContext(Context: Pointer; ContextFlags: DWORD; out ContextEx: PCONTEXT_EX): BOOL;
 
- begin
 
-   GetProcedureAddress(Pointer(@_InitializeExtendedContext), kernel32, 'InitializeExtendedContext');
 
-   Result := _InitializeExtendedContext(Context, ContextFlags, ContextEx);
 
- end;
 
- type
 
-   TGetEnabledExtendedFeatures = function (const FeatureMask: Int64): Int64; stdcall;
 
- var
 
-   _GetEnabledExtendedFeatures: TGetEnabledExtendedFeatures = nil;
 
- function GetEnabledExtendedFeatures(const FeatureMask: Int64): Int64;
 
- begin
 
-   GetProcedureAddress(Pointer(@_GetEnabledExtendedFeatures), kernel32, 'GetEnabledExtendedFeatures');
 
-   Result := _GetEnabledExtendedFeatures(FeatureMask);
 
- end;
 
- type
 
-   TGetExtendedContextLength = function (ContextFlags: DWORD; ContextLength: PDWORD): BOOL; stdcall;
 
- var
 
-   _GetExtendedContextLength: TGetExtendedContextLength = nil;
 
- function GetExtendedContextLength(ContextFlags: DWORD; ContextLength: PDWORD): BOOL;
 
- begin
 
-   GetProcedureAddress(Pointer(@_GetExtendedContextLength), kernel32, 'GetExtendedContextLength');
 
-   Result := _GetExtendedContextLength(ContextFlags, ContextLength);
 
- end;
 
- type
 
-   TGetExtendedFeaturesMask = function (ContextEx: PCONTEXT_EX): Int64; stdcall;
 
- var
 
-   _GetExtendedFeaturesMask: TGetExtendedFeaturesMask = nil;
 
- function GetExtendedFeaturesMask(ContextEx: PCONTEXT_EX): Int64;
 
- begin
 
-   GetProcedureAddress(Pointer(@_GetExtendedFeaturesMask), kernel32, 'GetExtendedFeaturesMask');
 
-   Result := _GetExtendedFeaturesMask(ContextEx);
 
- end;
 
- type
 
-   TLocateExtendedFeature = function (ContextEx: PCONTEXT_EX; FeatureId: DWORD; Length: PDWORD): Pointer; stdcall;
 
- var
 
-   _LocateExtendedFeature: TLocateExtendedFeature = nil;
 
- function LocateExtendedFeature(ContextEx: PCONTEXT_EX; FeatureId: DWORD; Length: PDWORD): Pointer;
 
- begin
 
-   GetProcedureAddress(Pointer(@_LocateExtendedFeature), kernel32, 'LocateExtendedFeature');
 
-   Result := _LocateExtendedFeature(ContextEx, FeatureId, Length);
 
- end;
 
- type
 
-   TLocateLegacyContext = function (ContextEx: PCONTEXT_EX; Length: PDWORD): PCONTEXT; stdcall;
 
- var
 
-   _LocateLegacyContext: TLocateLegacyContext = nil;
 
- function LocateLegacyContext(ContextEx: PCONTEXT_EX; Length: PDWORD): PCONTEXT;
 
- begin
 
-   GetProcedureAddress(Pointer(@_LocateLegacyContext), kernel32, 'LocateLegacyContext');
 
-   Result := _LocateLegacyContext(ContextEx, Length);
 
- end;
 
- type
 
-   TSetExtendedFeaturesMask = procedure (ContextEx: PCONTEXT_EX; const FeatureMask: Int64); stdcall;
 
- var
 
-   _SetExtendedFeaturesMask: TSetExtendedFeaturesMask = nil;
 
- procedure SetExtendedFeaturesMask(ContextEx: PCONTEXT_EX; const FeatureMask: Int64);
 
- begin
 
-   GetProcedureAddress(Pointer(@_SetExtendedFeaturesMask), kernel32, 'SetExtendedFeaturesMask');
 
-   _SetExtendedFeaturesMask(ContextEx, FeatureMask);
 
- end;
 
- type
 
-   TProcessIdToSessionId = function (dwProcessId: DWORD; out dwSessionId: DWORD): BOOL; stdcall;
 
- var
 
-   _ProcessIdToSessionId: TProcessIdToSessionId = nil;
 
- function ProcessIdToSessionId(dwProcessId: DWORD; out dwSessionId: DWORD): BOOL;
 
- begin
 
-   GetProcedureAddress(Pointer(@_ProcessIdToSessionId), kernel32, 'ProcessIdToSessionId');
 
-   Result := _ProcessIdToSessionId(dwProcessId, dwSessionId);
 
- end;
 
- type
 
-   TGetCalendarInfoA = function (Locale: LCID; Calendar: CALID; CalType: CALTYPE;
 
-     lpCalData: LPSTR; cchData: Integer; lpValue: LPDWORD): Integer; stdcall;
 
- var
 
-   _GetCalendarInfoA: TGetCalendarInfoA = nil;
 
- function GetCalendarInfoA(Locale: LCID; Calendar: CALID; CalType: CALTYPE;
 
-   lpCalData: LPSTR; cchData: Integer; lpValue: LPDWORD): Integer;
 
- begin
 
-   GetProcedureAddress(Pointer(@_GetCalendarInfoA), kernel32, 'GetCalendarInfoA');
 
-   Result := _GetCalendarInfoA(Locale, Calendar, CalType, lpCalData, cchData, lpValue);
 
- end;
 
- type
 
-   TGetCalendarInfoW = function (Locale: LCID; Calendar: CALID; CalType: CALTYPE;
 
-     lpCalData: LPWSTR; cchData: Integer; lpValue: LPDWORD): Integer; stdcall;
 
- var
 
-   _GetCalendarInfoW: TGetCalendarInfoW = nil;
 
- function GetCalendarInfoW(Locale: LCID; Calendar: CALID; CalType: CALTYPE;
 
-   lpCalData: LPWSTR; cchData: Integer; lpValue: LPDWORD): Integer;
 
- begin
 
-   GetProcedureAddress(Pointer(@_GetCalendarInfoW), kernel32, 'GetCalendarInfoW');
 
-   Result := _GetCalendarInfoW(Locale, Calendar, CalType, lpCalData, cchData, lpValue);
 
- end;
 
- type
 
-   TEnumCalendarInfoExW = function (lpCalInfoEnumProcEx: CALINFO_ENUMPROCEXW;
 
-     Locale: LCID; Calendar: CALID; CalType: CALTYPE): BOOL; stdcall;
 
- var
 
-   _EnumCalendarInfoExW: TEnumCalendarInfoExW = nil;
 
- function EnumCalendarInfoExW(lpCalInfoEnumProcEx: CALINFO_ENUMPROCEXW;
 
-   Locale: LCID; Calendar: CALID; CalType: CALTYPE): BOOL;
 
- begin
 
-   GetProcedureAddress(Pointer(@_EnumCalendarInfoExW), kernel32, 'EnumCalendarInfoExW');
 
-   Result := _EnumCalendarInfoExW(lpCalInfoEnumProcEx, Locale, Calendar, CalType);
 
- end;
 
- type
 
-   TGetWindowLongPtr = function (hWnd: HWND; nIndex: Integer): TJclAddr; stdcall;
 
- var
 
-   _GetWindowLongPtr: TGetWindowLongPtr = nil;
 
- function GetWindowLongPtr(hWnd: HWND; nIndex: Integer): TJclAddr;
 
- begin
 
-   GetProcedureAddress(Pointer(@_GetWindowLongPtr), user32, 'GetWindowLong' + AWSuffix);
 
-   Result := _GetWindowLongPtr(hWnd, nIndex);
 
- end;
 
- type
 
-   TSetWindowLongPtr = function (hWnd: HWND; nIndex: Integer; dwNewLong: TJclAddr): Longint; stdcall;
 
- var
 
-   _SetWindowLongPtr: TSetWindowLongPtr = nil;
 
- function SetWindowLongPtr(hWnd: HWND; nIndex: Integer; dwNewLong: TJclAddr): Longint;
 
- begin
 
-   GetProcedureAddress(Pointer(@_SetWindowLongPtr), user32, 'SetWindowLong' + AWSuffix);
 
-   Result := _SetWindowLongPtr(hWnd, nIndex, dwNewLong);
 
- end;
 
- // line 9078
 
- function MAKELANGID(PrimaryLang, SubLang: USHORT): WORD;
 
- begin
 
-   Result := (SubLang shl 10) or PrimaryLang;
 
- end;
 
- function PRIMARYLANGID(LangId: WORD): WORD;
 
- begin
 
-   Result := LangId and $03FF;
 
- end;
 
- function SUBLANGID(LangId: WORD): WORD;
 
- begin
 
-   Result := LangId shr 10;
 
- end;
 
- function MAKELCID(LangId, SortId: WORD): DWORD;
 
- begin
 
-   Result := (DWORD(SortId) shl 16) or DWORD(LangId);
 
- end;
 
- function MAKESORTLCID(LangId, SortId, SortVersion: WORD): DWORD;
 
- begin
 
-   Result := MAKELCID(LangId, SortId) or (SortVersion shl 20);
 
- end;
 
- function LANGIDFROMLCID(LocaleId: LCID): WORD;
 
- begin
 
-   Result := WORD(LocaleId);
 
- end;
 
- function SORTIDFROMLCID(LocaleId: LCID): WORD;
 
- begin
 
-   Result := WORD((DWORD(LocaleId) shr 16) and $000F);
 
- end;
 
- function SORTVERSIONFROMLCID(LocaleId: LCID): WORD;
 
- begin
 
-   Result := WORD((DWORD(LocaleId) shr 20) and $000F);
 
- end;
 
- type
 
-   TCaptureStackBackTrace = function(FramesToSkip, FramesToCapture: DWORD;
 
-     BackTrace: Pointer; out BackTraceHash: DWORD): Word; stdcall;
 
- var
 
-   _CaptureStackBackTrace: TCaptureStackBackTrace = nil;
 
- function CaptureStackBackTrace(FramesToSkip, FramesToCapture: DWORD;
 
-   BackTrace: Pointer; out BackTraceHash: DWORD): Word; stdcall;
 
- begin
 
-   GetProcedureAddress(Pointer(@_CaptureStackBackTrace), kernel32, 'RtlCaptureStackBackTrace');
 
-   Result := _CaptureStackBackTrace(FramesToSkip, FramesToCapture, BackTrace, BackTraceHash);
 
- end;
 
- // line 9149
 
- function IsReparseTagMicrosoft(Tag: ULONG): Boolean;
 
- begin
 
-   Result := (Tag and ULONG($80000000)) <> 0;
 
- end;
 
- function IsReparseTagHighLatency(Tag: ULONG): Boolean;
 
- begin
 
-   Result := (Tag and ULONG($40000000)) <> 0;
 
- end;
 
- function IsReparseTagNameSurrogate(Tag: ULONG): Boolean;
 
- begin
 
-   Result := (Tag and ULONG($20000000)) <> 0;
 
- end;
 
- // IMAGE_FIRST_SECTION by Nico Bendlin - supplied by Markus Fuchs
 
- function IMAGE_FIRST_SECTION(NtHeader: PImageNtHeaders): PImageSectionHeader;
 
- var
 
-   OptionalHeaderAddr: PByte;
 
- begin
 
-   OptionalHeaderAddr := @NtHeader^.OptionalHeader;
 
-   Inc(OptionalHeaderAddr, NtHeader^.FileHeader.SizeOfOptionalHeader);
 
-   Result := PImageSectionHeader(OptionalHeaderAddr);
 
- end;
 
- // line 9204
 
- function IMAGE_ORDINAL64(Ordinal: ULONGLONG): ULONGLONG;
 
- begin
 
-   Result := (Ordinal and $FFFF);
 
- end;
 
- function IMAGE_ORDINAL32(Ordinal: DWORD): DWORD;
 
- begin
 
-   Result := (Ordinal and $0000FFFF);
 
- end;
 
- function IMAGE_ORDINAL(Ordinal: DWORD): DWORD;
 
- begin
 
-   Result := (Ordinal and $0000FFFF);
 
- end;
 
- function IMAGE_SNAP_BY_ORDINAL64(Ordinal: ULONGLONG): Boolean;
 
- begin
 
-   Result := ((Ordinal and IMAGE_ORDINAL_FLAG64) <> 0);
 
- end;
 
- function IMAGE_SNAP_BY_ORDINAL32(Ordinal: DWORD): Boolean;
 
- begin
 
-   Result := ((Ordinal and IMAGE_ORDINAL_FLAG32) <> 0);
 
- end;
 
- function IMAGE_SNAP_BY_ORDINAL(Ordinal: DWORD): Boolean;
 
- begin
 
-   Result := ((Ordinal and IMAGE_ORDINAL_FLAG32) <> 0);
 
- end;
 
- const
 
-   PowrprofLib = 'PowrProf.dll';
 
- type
 
-   TIsPwrSuspendAllowed = function : BOOL; stdcall;
 
- var
 
-   _IsPwrSuspendAllowed: TIsPwrSuspendAllowed = nil;
 
- function IsPwrSuspendAllowed: BOOL;
 
- begin
 
-   GetProcedureAddress(Pointer(@_IsPwrSuspendAllowed), PowrprofLib, 'IsPwrSuspendAllowed');
 
-   Result := _IsPwrSuspendAllowed;
 
- end;
 
- type
 
-   TIsPwrHibernateAllowed = function : BOOL; stdcall;
 
- var
 
-   _IsPwrHibernateAllowed: TIsPwrHibernateAllowed = nil;
 
- function IsPwrHibernateAllowed: BOOL;
 
- begin
 
-   GetProcedureAddress(Pointer(@_IsPwrHibernateAllowed), PowrprofLib, 'IsPwrHibernateAllowed');
 
-   Result := _IsPwrHibernateAllowed;
 
- end;
 
- type
 
-   TIsPwrShutdownAllowed = function : BOOL; stdcall;
 
- var
 
-   _IsPwrShutdownAllowed: TIsPwrShutdownAllowed = nil;
 
- function IsPwrShutdownAllowed: BOOL;
 
- begin
 
-   GetProcedureAddress(Pointer(@_IsPwrShutdownAllowed), PowrprofLib, 'IsPwrShutdownAllowed');
 
-   Result := _IsPwrShutdownAllowed;
 
- end;
 
- type
 
-   TSetSuspendState = function (Hibernate, ForceCritical, DisableWakeEvent: BOOL): BOOL; stdcall;
 
- var
 
-   _SetSuspendState: TSetSuspendState = nil;
 
- function SetSuspendState(Hibernate, ForceCritical, DisableWakeEvent: BOOL): BOOL;
 
- begin
 
-   GetProcedureAddress(Pointer(@_SetSuspendState), PowrprofLib, 'SetSuspendState');
 
-   Result := _SetSuspendState(Hibernate, ForceCritical, DisableWakeEvent);
 
- end;
 
- const
 
-   Ole32Lib = 'ole32.dll';
 
- type
 
-   TStgCreateStorageEx = function (const pwcsName: PWideChar; grfMode: DWORD;
 
-     stgfmt: DWORD; grfAttrs: DWORD; pStgOptions: PSTGOPTIONS; reserved2: Pointer;
 
-     riid: PGUID; out stgOpen: IInterface): HResult; stdcall;
 
- var
 
-   _StgCreateStorageEx: TStgCreateStorageEx = nil;
 
- function StgCreateStorageEx(const pwcsName: PWideChar; grfMode: DWORD;
 
-   stgfmt: DWORD; grfAttrs: DWORD; pStgOptions: PSTGOPTIONS; reserved2: Pointer;
 
-   riid: PGUID; out stgOpen: IInterface): HResult;
 
- begin
 
-   GetProcedureAddress(Pointer(@_StgCreateStorageEx), Ole32Lib, 'StgCreateStorageEx');
 
-   Result := _StgCreateStorageEx(pwcsName, grfMode, stgfmt, grfAttrs, pStgOptions, reserved2, riid, stgOpen);
 
- end;
 
- type
 
-   TStgOpenStorageEx = function (const pwcsName: PWideChar; grfMode: DWORD;
 
-     stgfmt: DWORD; grfAttrs: DWORD; pStgOptions: PSTGOPTIONS; reserved2: Pointer;
 
-     riid: PGUID; out stgOpen: IInterface): HResult; stdcall;
 
- var
 
-   _StgOpenStorageEx: TStgOpenStorageEx = nil;
 
- function StgOpenStorageEx(const pwcsName: PWideChar; grfMode: DWORD;
 
-   stgfmt: DWORD; grfAttrs: DWORD; pStgOptions: PSTGOPTIONS; reserved2: Pointer;
 
-   riid: PGUID; out stgOpen: IInterface): HResult;
 
- begin
 
-   GetProcedureAddress(Pointer(@_StgOpenStorageEx), Ole32Lib, 'StgOpenStorageEx');
 
-   Result := _StgOpenStorageEx(pwcsName, grfMode, stgfmt, grfAttrs, pStgOptions, reserved2, riid, stgOpen);
 
- end;
 
- type
 
-   TPropVariantClear = function (var Prop: TPropVariant): HResult; stdcall;
 
- var
 
-   _PropVariantClear: TPropVariantClear = nil;
 
- function PropVariantClear(var Prop: TPropVariant): HResult;
 
- begin
 
-   GetProcedureAddress(Pointer(@_PropVariantClear), Ole32Lib, 'PropVariantClear');
 
-   Result := _PropVariantClear(Prop);
 
- end;
 
- type
 
-   TLsaOpenPolicy = function (SystemName: PLSA_UNICODE_STRING;
 
-     var ObjectAttributes: LSA_OBJECT_ATTRIBUTES; DesiredAccess: ACCESS_MASK;
 
-     var PolicyHandle: LSA_HANDLE): NTSTATUS; stdcall;
 
- var
 
-   _LsaOpenPolicy: TLsaOpenPolicy = nil;
 
- function LsaOpenPolicy(SystemName: PLSA_UNICODE_STRING;
 
-   var ObjectAttributes: LSA_OBJECT_ATTRIBUTES; DesiredAccess: ACCESS_MASK;
 
-   var PolicyHandle: LSA_HANDLE): NTSTATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_LsaOpenPolicy), advapi32, 'LsaOpenPolicy');
 
-   Result := _LsaOpenPolicy(SystemName, ObjectAttributes, DesiredAccess, PolicyHandle);
 
- end;
 
- type
 
-   TLsaQueryInformationPolicy = function (PolicyHandle: LSA_HANDLE;
 
-     InformationClass: POLICY_INFORMATION_CLASS; var Buffer: Pointer): NTSTATUS; stdcall;
 
- var
 
-   _LsaQueryInformationPolicy: TLsaQueryInformationPolicy = nil;
 
- function LsaQueryInformationPolicy(PolicyHandle: LSA_HANDLE;
 
-   InformationClass: POLICY_INFORMATION_CLASS; var Buffer: Pointer): NTSTATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_LsaQueryInformationPolicy), advapi32, 'LsaQueryInformationPolicy');
 
-   Result := _LsaQueryInformationPolicy(PolicyHandle, InformationClass, Buffer);
 
- end;
 
- type
 
-   TLsaFreeMemory = function (Buffer: Pointer): NTSTATUS; stdcall;
 
- var
 
-   _LsaFreeMemory: TLsaFreeMemory = nil;
 
- function LsaFreeMemory(Buffer: Pointer): NTSTATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_LsaFreeMemory), advapi32, 'LsaFreeMemory');
 
-   Result := _LsaFreeMemory(Buffer);
 
- end;
 
- type
 
-   TLsaFreeReturnBuffer = function (Buffer: Pointer): NTSTATUS; stdcall;
 
- var
 
-   _LsaFreeReturnBuffer: TLsaFreeReturnBuffer = nil;
 
- function LsaFreeReturnBuffer(Buffer: Pointer): NTSTATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_LsaFreeReturnBuffer), advapi32, 'LsaFreeReturnBuffer');
 
-   Result := _LsaFreeReturnBuffer(Buffer);
 
- end;
 
- type
 
-   TLsaClose = function (ObjectHandle: LSA_HANDLE): NTSTATUS; stdcall;
 
- var
 
-   _LsaClose: TLsaClose = nil;
 
- function LsaClose(ObjectHandle: LSA_HANDLE): NTSTATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_LsaClose), advapi32, 'LsaClose');
 
-   Result := _LsaClose(ObjectHandle);
 
- end;
 
- type
 
-   TLsaNtStatusToWinError = function (Status: NTSTATUS): ULONG; stdcall;
 
- var
 
-   _LsaNtStatusToWinError: TLsaNtStatusToWinError = nil;
 
- function LsaNtStatusToWinError(Status: NTSTATUS): ULONG;
 
- begin
 
-   GetProcedureAddress(Pointer(@_LsaNtStatusToWinError), advapi32, 'LsaNtStatusToWinError');
 
-   Result := _LsaNtStatusToWinError(Status);
 
- end;
 
- type
 
-   TCreateToolhelp32Snapshot = function (dwFlags, th32ProcessID: DWORD): THandle; stdcall;
 
- var
 
-   _CreateToolhelp32Snapshot: TCreateToolhelp32Snapshot = nil;
 
- function CreateToolhelp32Snapshot(dwFlags, th32ProcessID: DWORD): THandle;
 
- begin
 
-   GetProcedureAddress(Pointer(@_CreateToolhelp32Snapshot), kernel32, 'CreateToolhelp32Snapshot');
 
-   Result := _CreateToolhelp32Snapshot(dwFlags, th32ProcessID);
 
- end;
 
- type
 
-   TThread32First = function (hSnapshot: THandle; var lpte: THREADENTRY32): BOOL; stdcall;
 
- var
 
-   _Thread32First: TThread32First = nil;
 
- function Thread32First(hSnapshot: THandle; var lpte: THREADENTRY32): BOOL;
 
- begin
 
-   GetProcedureAddress(Pointer(@_Thread32First), kernel32, 'Thread32First');
 
-   Result := _Thread32First(hSnapshot, lpte);
 
- end;
 
- type
 
-   TThread32Next = function (hSnapshot: THandle; var lpte: THREADENTRY32): BOOL; stdcall;
 
- var
 
-   _Thread32Next: TThread32Next = nil;
 
- function Thread32Next(hSnapshot: THandle; var lpte: THREADENTRY32): BOOL;
 
- begin
 
-   GetProcedureAddress(Pointer(@_Thread32Next), kernel32, 'Thread32Next');
 
-   Result := _Thread32Next(hSnapshot, lpte);
 
- end;
 
- const
 
-   ntdll = 'ntdll.dll';
 
- type
 
-   TNtQueryInformationThread = function (ThreadHandle: THandle; ThreadInformationClass: THREAD_INFORMATION_CLASS;
 
-     ThreadInformation: Pointer; ThreadInformationLength: ULONG; ReturnLength: PULONG): NTSTATUS; stdcall;
 
- var
 
-   _NtQueryInformationThread: TNtQueryInformationThread = nil;
 
- function NtQueryInformationThread(ThreadHandle: THandle; ThreadInformationClass: THREAD_INFORMATION_CLASS;
 
-   ThreadInformation: Pointer; ThreadInformationLength: ULONG; ReturnLength: PULONG): NTSTATUS;
 
- begin
 
-   GetProcedureAddress(Pointer(@_NtQueryInformationThread), ntdll, 'NtQueryInformationThread');
 
-   Result := _NtQueryInformationThread(ThreadHandle, ThreadInformationClass, ThreadInformation, ThreadInformationLength, ReturnLength);
 
- end;
 
- {$IFDEF UNITVERSIONING}
 
- initialization
 
-   RegisterUnitVersion(HInstance, UnitVersioning);
 
- finalization
 
-   UnregisterUnitVersion(HInstance);
 
- {$ENDIF UNITVERSIONING}
 
- end.
 
 
  |