| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305 | {**************************************************************************************************}{  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}interfaceuses  {$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}// EJclWin32Errortype  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 and MountPointReparseBuffer        SubstituteNameOffset: Word;        SubstituteNameLength: Word;        PrintNameOffset: Word;        PrintNameLength: Word;        PathBuffer: array [0..0] of WCHAR);      1: ( // GenericReparseBuffer        DataBuffer: array [0..0] of Byte);  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 72const  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_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_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 Valuesconst  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 cachable.  {$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); // MBZtype  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 7351const  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 7462type  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 typestype  _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 2727type  _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 3189function BackupSeek(hFile: THandle; dwLowBytesToSeek, dwHighBytesToSeek: DWORD;  out lpdwLowByteSeeked, lpdwHighByteSeeked: DWORD;  var lpContext: Pointer): BOOL; stdcall;{$EXTERNALSYM BackupSeek}// line 5454function 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 bugDate: 1999/12/10Message-ID: <[email protected]>#1/1Content-Transfer-Encoding: 7bitOrganization: Tempest Software, Inc., Corvallis, OregonContent-Type: text/plain; charset=us-asciiMime-Version: 1.0Newsgroups: borland.public.delphi.winapiWindows NT 4 has a bug in CreateMutex. The second argument is documentedto be a BOOL, but in truth, the CreateMutex interprets 1 as True and allother values as False. (Do I detect an "if (bInitialOwner == TRUE)" inthe implementation of CreateMutex?)The problem is that Delphi declares CreateMutex according to thedocumentation, so bInitialOwner is declared as LongBool. Delphi mapsTrue values to $FFFFFFFF, which should work, but doesn't in this case.My workaround is to declare CreateMutex with a LongInt as the secondargument, 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: DWORD; 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 3585function SetWaitableTimer(hTimer: THandle; var lpDueTime: TLargeInteger;  lPeriod: Longint; pfnCompletionRoutine: TFNTimerAPCRoutine;  lpArgToCompletionRoutine: Pointer; fResume: BOOL): BOOL; stdcall;  {$EXTERNALSYM SetWaitableTimer}// WinBase.h line 8839function 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 10251function 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 APIfunction 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 185function 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 152function 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 227function GetImageUnusedHeaderBytes(const LoadedImage: LOADED_IMAGE;  var SizeUnusedHeaderBytes: DWORD): DWORD; stdcall;{$EXTERNALSYM GetImageUnusedHeaderBytes}// line 285function 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 347function 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 1342type  {$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.hfunction 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 definitionsconst  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 stateconst  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_idconst  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 Direcotry }  CSIDL_RESOURCES_LOCALIZED  = $0039; { Localized Resource Direcotry }  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.dwFlagsconst  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.dwMaskconst  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.SetProgressStateconst  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 22146const//// 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 597const////  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 841const  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 1424type  CALINFO_ENUMPROCEXW = function (lpCalendarInfoString: LPWSTR; Calendar: CALID): BOOL; stdcall;  {$EXTERNALSYM CALINFO_ENUMPROCEXW}  TCalInfoEnumProcExW = CALINFO_ENUMPROCEXW;// line 1635function 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 1754function 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 SetWindowLongconst  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 Installerconst  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 404const  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.hconst  FMTID_Storage: TGUID = '{b725f130-47ef-101a-a5f1-02608c9eebac}';  {$EXTERNALSYM FMTID_Storage}// Image propertiesconst  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 identifiersconst  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 identifiersconst  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 setsconst  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 390const  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 913type  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 IDsconst  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 implementationsconst  PID_MIN_READONLY = $80000000;  {$EXTERNALSYM PID_MIN_READONLY}  PID_MAX_READONLY = $BFFFFFFF;  {$EXTERNALSYM PID_MAX_READONLY}// Property IDs for the DiscardableInformation Property Setconst  PIDDI_THUMBNAIL = $00000002; // VT_BLOB  {$EXTERNALSYM PIDDI_THUMBNAIL}// Property IDs for the SummaryInformation Property Setconst  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 Setconst  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 IDsconst  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 566type  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 914type  _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 1298type  LSA_HANDLE = Pointer;  PLSA_HANDLE = ^LSA_HANDLE;  TLsaHandle = LSA_HANDLE;// NtSecApi.h line 1714type  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 functionfunction 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 walkingtype  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-ENDconst  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}implementationuses  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: DWORD; 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 9078function 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 9149function 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 Fuchsfunction IMAGE_FIRST_SECTION(NtHeader: PImageNtHeaders): PImageSectionHeader;var  OptionalHeaderAddr: PByte;begin  OptionalHeaderAddr := @NtHeader^.OptionalHeader;  Inc(OptionalHeaderAddr, NtHeader^.FileHeader.SizeOfOptionalHeader);  Result := PImageSectionHeader(OptionalHeaderAddr);end;// line 9204function 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.
 |