jwawinbase.pas 543 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370173711737217373173741737517376173771737817379173801738117382173831738417385173861738717388173891739017391173921739317394173951739617397173981739917400174011740217403174041740517406174071740817409174101741117412174131741417415174161741717418174191742017421174221742317424174251742617427174281742917430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457174581745917460174611746217463174641746517466174671746817469174701747117472174731747417475174761747717478174791748017481174821748317484174851748617487174881748917490174911749217493174941749517496174971749817499175001750117502175031750417505175061750717508175091751017511175121751317514175151751617517175181751917520175211752217523175241752517526175271752817529175301753117532175331753417535175361753717538175391754017541175421754317544175451754617547175481754917550175511755217553175541755517556175571755817559175601756117562175631756417565175661756717568175691757017571175721757317574175751757617577175781757917580175811758217583175841758517586175871758817589175901759117592175931759417595175961759717598175991760017601176021760317604176051760617607176081760917610176111761217613176141761517616176171761817619176201762117622176231762417625176261762717628176291763017631176321763317634176351763617637176381763917640176411764217643176441764517646176471764817649176501765117652176531765417655176561765717658176591766017661176621766317664176651766617667176681766917670176711767217673176741767517676176771767817679176801768117682176831768417685176861768717688176891769017691176921769317694176951769617697176981769917700177011770217703177041770517706177071770817709177101771117712177131771417715177161771717718177191772017721177221772317724177251772617727177281772917730177311773217733177341773517736177371773817739177401774117742177431774417745177461774717748177491775017751177521775317754177551775617757177581775917760177611776217763177641776517766177671776817769177701777117772177731777417775177761777717778177791778017781177821778317784177851778617787177881778917790177911779217793177941779517796177971779817799178001780117802178031780417805178061780717808178091781017811178121781317814178151781617817178181781917820178211782217823178241782517826178271782817829178301783117832178331783417835178361783717838178391784017841178421784317844178451784617847178481784917850178511785217853178541785517856178571785817859178601786117862178631786417865178661786717868178691787017871178721787317874178751787617877178781787917880178811788217883178841788517886178871788817889178901789117892178931789417895178961789717898178991790017901179021790317904179051790617907179081790917910179111791217913179141791517916179171791817919179201792117922179231792417925179261792717928179291793017931179321793317934179351793617937179381793917940179411794217943179441794517946179471794817949179501795117952179531795417955179561795717958179591796017961179621796317964179651796617967179681796917970179711797217973179741797517976179771797817979179801798117982179831798417985179861798717988179891799017991179921799317994179951799617997179981799918000180011800218003180041800518006180071800818009180101801118012180131801418015180161801718018180191802018021180221802318024180251802618027180281802918030180311803218033180341803518036180371803818039180401804118042180431804418045180461804718048180491805018051180521805318054180551805618057180581805918060180611806218063180641806518066180671806818069180701807118072180731807418075180761807718078180791808018081180821808318084180851808618087180881808918090180911809218093180941809518096180971809818099181001810118102181031810418105181061810718108181091811018111181121811318114181151811618117181181811918120181211812218123181241812518126181271812818129181301813118132181331813418135181361813718138181391814018141181421814318144181451814618147181481814918150181511815218153181541815518156181571815818159181601816118162181631816418165181661816718168181691817018171181721817318174181751817618177181781817918180181811818218183181841818518186181871818818189181901819118192181931819418195181961819718198181991820018201182021820318204182051820618207182081820918210182111821218213182141821518216182171821818219182201822118222182231822418225182261822718228182291823018231182321823318234182351823618237182381823918240182411824218243182441824518246182471824818249182501825118252182531825418255182561825718258182591826018261182621826318264182651826618267182681826918270182711827218273182741827518276182771827818279182801828118282182831828418285182861828718288182891829018291182921829318294182951829618297182981829918300183011830218303183041830518306183071830818309183101831118312183131831418315183161831718318183191832018321183221832318324183251832618327183281832918330183311833218333183341833518336183371833818339183401834118342183431834418345183461834718348183491835018351183521835318354183551835618357183581835918360183611836218363183641836518366183671836818369183701837118372183731837418375183761837718378183791838018381183821838318384183851838618387183881838918390183911839218393183941839518396183971839818399184001840118402184031840418405184061840718408184091841018411184121841318414184151841618417184181841918420184211842218423184241842518426184271842818429184301843118432184331843418435184361843718438184391844018441184421844318444184451844618447184481844918450184511845218453184541845518456184571845818459184601846118462184631846418465184661846718468184691847018471184721847318474184751847618477184781847918480184811848218483184841848518486184871848818489184901849118492184931849418495184961849718498184991850018501185021850318504185051850618507185081850918510185111851218513185141851518516185171851818519185201852118522185231852418525185261852718528185291853018531185321853318534185351853618537185381853918540185411854218543185441854518546185471854818549185501855118552185531855418555185561855718558185591856018561185621856318564185651856618567185681856918570185711857218573185741857518576185771857818579185801858118582185831858418585185861858718588185891859018591185921859318594185951859618597185981859918600186011860218603186041860518606186071860818609186101861118612186131861418615186161861718618186191862018621186221862318624186251862618627186281862918630186311863218633186341863518636186371863818639186401864118642186431864418645186461864718648186491865018651186521865318654186551865618657186581865918660186611866218663186641866518666186671866818669186701867118672186731867418675186761867718678186791868018681186821868318684186851868618687186881868918690186911869218693186941869518696186971869818699187001870118702187031870418705187061870718708187091871018711187121871318714187151871618717187181871918720187211872218723187241872518726187271872818729187301873118732187331873418735187361873718738187391874018741187421874318744187451874618747187481874918750187511875218753187541875518756187571875818759187601876118762187631876418765187661876718768187691877018771187721877318774187751877618777187781877918780187811878218783187841878518786187871878818789187901879118792187931879418795187961879718798187991880018801188021880318804188051880618807188081880918810188111881218813188141881518816188171881818819188201882118822188231882418825188261882718828188291883018831188321883318834188351883618837188381883918840188411884218843188441884518846188471884818849188501885118852188531885418855188561885718858188591886018861188621886318864188651886618867188681886918870188711887218873188741887518876188771887818879188801888118882188831888418885188861888718888188891889018891188921889318894188951889618897188981889918900189011890218903189041890518906189071890818909189101891118912189131891418915189161891718918189191892018921189221892318924189251892618927189281892918930189311893218933189341893518936189371893818939189401894118942189431894418945189461894718948189491895018951189521895318954189551895618957189581895918960189611896218963189641896518966189671896818969189701897118972189731897418975189761897718978189791898018981189821898318984189851898618987189881898918990189911899218993189941899518996189971899818999190001900119002190031900419005190061900719008190091901019011190121901319014190151901619017190181901919020190211902219023190241902519026190271902819029190301903119032190331903419035190361903719038190391904019041190421904319044190451904619047190481904919050190511905219053190541905519056190571905819059190601906119062190631906419065190661906719068190691907019071190721907319074190751907619077190781907919080190811908219083190841908519086190871908819089190901909119092190931909419095190961909719098190991910019101191021910319104191051910619107191081910919110191111911219113191141911519116191171911819119191201912119122191231912419125191261912719128191291913019131191321913319134191351913619137191381913919140191411914219143191441914519146191471914819149191501915119152191531915419155191561915719158191591916019161191621916319164191651916619167191681916919170191711917219173191741917519176191771917819179191801918119182191831918419185191861918719188191891919019191191921919319194191951919619197191981919919200192011920219203192041920519206192071920819209192101921119212192131921419215192161921719218192191922019221192221922319224192251922619227192281922919230192311923219233192341923519236192371923819239192401924119242192431924419245192461924719248192491925019251192521925319254192551925619257192581925919260192611926219263192641926519266192671926819269192701927119272192731927419275192761927719278192791928019281192821928319284192851928619287192881928919290192911929219293192941929519296192971929819299193001930119302193031930419305193061930719308193091931019311193121931319314193151931619317193181931919320193211932219323193241932519326193271932819329193301933119332193331933419335193361933719338193391934019341193421934319344193451934619347193481934919350193511935219353193541935519356193571935819359193601936119362193631936419365193661936719368193691937019371193721937319374193751937619377193781937919380193811938219383193841938519386193871938819389193901939119392193931939419395193961939719398193991940019401194021940319404194051940619407194081940919410194111941219413194141941519416194171941819419194201942119422194231942419425194261942719428194291943019431194321943319434194351943619437194381943919440194411944219443194441944519446194471944819449194501945119452194531945419455194561945719458194591946019461194621946319464194651946619467194681946919470194711947219473194741947519476194771947819479194801948119482194831948419485194861948719488194891949019491194921949319494194951949619497194981949919500195011950219503195041950519506195071950819509195101951119512195131951419515195161951719518195191952019521195221952319524195251952619527195281952919530195311953219533195341953519536195371953819539195401954119542195431954419545195461954719548195491955019551195521955319554195551955619557195581955919560195611956219563195641956519566195671956819569195701957119572195731957419575195761957719578195791958019581195821958319584195851958619587195881958919590195911959219593195941959519596195971959819599196001960119602196031960419605196061960719608196091961019611196121961319614196151961619617196181961919620196211962219623196241962519626196271962819629196301963119632196331963419635196361963719638196391964019641196421964319644196451964619647196481964919650196511965219653196541965519656196571965819659196601966119662196631966419665196661966719668196691967019671196721967319674196751967619677196781967919680196811968219683196841968519686196871968819689196901969119692196931969419695196961969719698196991970019701197021970319704197051970619707197081970919710197111971219713197141971519716197171971819719197201972119722197231972419725197261972719728197291973019731197321973319734197351973619737197381973919740197411974219743197441974519746197471974819749197501975119752197531975419755197561975719758197591976019761197621976319764197651976619767197681976919770197711977219773197741977519776197771977819779197801978119782197831978419785197861978719788197891979019791197921979319794197951979619797197981979919800198011980219803198041980519806198071980819809198101981119812198131981419815198161981719818198191982019821198221982319824198251982619827198281982919830198311983219833198341983519836198371983819839198401984119842198431984419845198461984719848198491985019851198521985319854198551985619857198581985919860198611986219863198641986519866198671986819869198701987119872198731987419875198761987719878198791988019881198821988319884198851988619887198881988919890198911989219893198941989519896198971989819899199001990119902199031990419905199061990719908199091991019911199121991319914199151991619917199181991919920199211992219923199241992519926199271992819929199301993119932
  1. {******************************************************************************}
  2. { }
  3. { Windows Base Services API interface Unit for Object Pascal }
  4. { }
  5. { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
  6. { Corporation. All Rights Reserved. }
  7. { }
  8. { The original file is: winbase.h, released August 2001. The original Pascal }
  9. { code is: WinBase.pas, released December 2000. The initial developer of the }
  10. { Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
  11. { }
  12. { Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
  13. { Marcel van Brakel. All Rights Reserved. }
  14. { }
  15. { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
  16. { }
  17. { You may retrieve the latest version of this file at the Project JEDI }
  18. { APILIB home page, located at http://jedi-apilib.sourceforge.net }
  19. { }
  20. { The contents of this file are used with permission, subject to the Mozilla }
  21. { Public License Version 1.1 (the "License"); you may not use this file except }
  22. { in compliance with the License. You may obtain a copy of the License at }
  23. { http://www.mozilla.org/MPL/MPL-1.1.html }
  24. { }
  25. { Software distributed under the License is distributed on an "AS IS" basis, }
  26. { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
  27. { the specific language governing rights and limitations under the License. }
  28. { }
  29. { Alternatively, the contents of this file may be used under the terms of the }
  30. { GNU Lesser General Public License (the "LGPL License"), in which case the }
  31. { provisions of the LGPL License are applicable instead of those above. }
  32. { If you wish to allow use of your version of this file only under the terms }
  33. { of the LGPL License and not to allow others to use your version of this file }
  34. { under the MPL, indicate your decision by deleting the provisions above and }
  35. { replace them with the notice and other provisions required by the LGPL }
  36. { License. If you do not delete the provisions above, a recipient may use }
  37. { your version of this file under either the MPL or the LGPL License. }
  38. { }
  39. { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
  40. { }
  41. {******************************************************************************}
  42. unit JwaWinBase;
  43. {$WEAKPACKAGEUNIT}
  44. {$HPPEMIT ''}
  45. {$HPPEMIT '#include "WinBase.h"'}
  46. {$HPPEMIT ''}
  47. {$I jediapilib.inc}
  48. {$STACKFRAMES ON}
  49. interface
  50. uses
  51. {$IFDEF USE_DELPHI_TYPES}
  52. Windows,
  53. {$ENDIF USE_DELPHI_TYPES}
  54. JwaNtStatus, JwaWinNT, JwaWinType;
  55. const
  56. INVALID_HANDLE_VALUE = HANDLE(-1);
  57. {$EXTERNALSYM INVALID_HANDLE_VALUE}
  58. INVALID_FILE_SIZE = DWORD($FFFFFFFF);
  59. {$EXTERNALSYM INVALID_FILE_SIZE}
  60. INVALID_SET_FILE_POINTER = DWORD(-1);
  61. {$EXTERNALSYM INVALID_SET_FILE_POINTER}
  62. INVALID_FILE_ATTRIBUTES = DWORD(-1);
  63. {$EXTERNALSYM INVALID_FILE_ATTRIBUTES}
  64. FILE_BEGIN = 0;
  65. {$EXTERNALSYM FILE_BEGIN}
  66. FILE_CURRENT = 1;
  67. {$EXTERNALSYM FILE_CURRENT}
  68. FILE_END = 2;
  69. {$EXTERNALSYM FILE_END}
  70. TIME_ZONE_ID_INVALID = DWORD($FFFFFFFF);
  71. {$EXTERNALSYM TIME_ZONE_ID_INVALID}
  72. WAIT_FAILED = DWORD($FFFFFFFF);
  73. {$EXTERNALSYM WAIT_FAILED}
  74. WAIT_OBJECT_0 = STATUS_WAIT_0 + 0;
  75. {$EXTERNALSYM WAIT_OBJECT_0}
  76. WAIT_ABANDONED = STATUS_ABANDONED_WAIT_0 + 0;
  77. {$EXTERNALSYM WAIT_ABANDONED}
  78. WAIT_ABANDONED_0 = STATUS_ABANDONED_WAIT_0 + 0;
  79. {$EXTERNALSYM WAIT_ABANDONED_0}
  80. WAIT_IO_COMPLETION = STATUS_USER_APC;
  81. {$EXTERNALSYM WAIT_IO_COMPLETION}
  82. STILL_ACTIVE = STATUS_PENDING;
  83. {$EXTERNALSYM STILL_ACTIVE}
  84. EXCEPTION_ACCESS_VIOLATION = STATUS_ACCESS_VIOLATION;
  85. {$EXTERNALSYM EXCEPTION_ACCESS_VIOLATION}
  86. EXCEPTION_DATATYPE_MISALIGNMENT = STATUS_DATATYPE_MISALIGNMENT;
  87. {$EXTERNALSYM EXCEPTION_DATATYPE_MISALIGNMENT}
  88. EXCEPTION_BREAKPOINT = STATUS_BREAKPOINT;
  89. {$EXTERNALSYM EXCEPTION_BREAKPOINT}
  90. EXCEPTION_SINGLE_STEP = STATUS_SINGLE_STEP;
  91. {$EXTERNALSYM EXCEPTION_SINGLE_STEP}
  92. EXCEPTION_ARRAY_BOUNDS_EXCEEDED = STATUS_ARRAY_BOUNDS_EXCEEDED;
  93. {$EXTERNALSYM EXCEPTION_ARRAY_BOUNDS_EXCEEDED}
  94. EXCEPTION_FLT_DENORMAL_OPERAND = STATUS_FLOAT_DENORMAL_OPERAND;
  95. {$EXTERNALSYM EXCEPTION_FLT_DENORMAL_OPERAND}
  96. EXCEPTION_FLT_DIVIDE_BY_ZERO = STATUS_FLOAT_DIVIDE_BY_ZERO;
  97. {$EXTERNALSYM EXCEPTION_FLT_DIVIDE_BY_ZERO}
  98. EXCEPTION_FLT_INEXACT_RESULT = STATUS_FLOAT_INEXACT_RESULT;
  99. {$EXTERNALSYM EXCEPTION_FLT_INEXACT_RESULT}
  100. EXCEPTION_FLT_INVALID_OPERATION = STATUS_FLOAT_INVALID_OPERATION;
  101. {$EXTERNALSYM EXCEPTION_FLT_INVALID_OPERATION}
  102. EXCEPTION_FLT_OVERFLOW = STATUS_FLOAT_OVERFLOW;
  103. {$EXTERNALSYM EXCEPTION_FLT_OVERFLOW}
  104. EXCEPTION_FLT_STACK_CHECK = STATUS_FLOAT_STACK_CHECK;
  105. {$EXTERNALSYM EXCEPTION_FLT_STACK_CHECK}
  106. EXCEPTION_FLT_UNDERFLOW = STATUS_FLOAT_UNDERFLOW;
  107. {$EXTERNALSYM EXCEPTION_FLT_UNDERFLOW}
  108. EXCEPTION_INT_DIVIDE_BY_ZERO = STATUS_INTEGER_DIVIDE_BY_ZERO;
  109. {$EXTERNALSYM EXCEPTION_INT_DIVIDE_BY_ZERO}
  110. EXCEPTION_INT_OVERFLOW = STATUS_INTEGER_OVERFLOW;
  111. {$EXTERNALSYM EXCEPTION_INT_OVERFLOW}
  112. EXCEPTION_PRIV_INSTRUCTION = STATUS_PRIVILEGED_INSTRUCTION;
  113. {$EXTERNALSYM EXCEPTION_PRIV_INSTRUCTION}
  114. EXCEPTION_IN_PAGE_ERROR = STATUS_IN_PAGE_ERROR;
  115. {$EXTERNALSYM EXCEPTION_IN_PAGE_ERROR}
  116. EXCEPTION_ILLEGAL_INSTRUCTION = STATUS_ILLEGAL_INSTRUCTION;
  117. {$EXTERNALSYM EXCEPTION_ILLEGAL_INSTRUCTION}
  118. EXCEPTION_NONCONTINUABLE_EXCEPTION = STATUS_NONCONTINUABLE_EXCEPTION;
  119. {$EXTERNALSYM EXCEPTION_NONCONTINUABLE_EXCEPTION}
  120. EXCEPTION_STACK_OVERFLOW = STATUS_STACK_OVERFLOW;
  121. {$EXTERNALSYM EXCEPTION_STACK_OVERFLOW}
  122. EXCEPTION_INVALID_DISPOSITION = STATUS_INVALID_DISPOSITION;
  123. {$EXTERNALSYM EXCEPTION_INVALID_DISPOSITION}
  124. EXCEPTION_GUARD_PAGE = STATUS_GUARD_PAGE_VIOLATION;
  125. {$EXTERNALSYM EXCEPTION_GUARD_PAGE}
  126. EXCEPTION_INVALID_HANDLE = STATUS_INVALID_HANDLE;
  127. {$EXTERNALSYM EXCEPTION_INVALID_HANDLE}
  128. EXCEPTION_POSSIBLE_DEADLOCK = STATUS_POSSIBLE_DEADLOCK;
  129. {$EXTERNALSYM EXCEPTION_POSSIBLE_DEADLOCK}
  130. CONTROL_C_EXIT = STATUS_CONTROL_C_EXIT;
  131. {$EXTERNALSYM CONTROL_C_EXIT}
  132. procedure MoveMemory(Destination, Source: PVOID; Length: SIZE_T);
  133. {$EXTERNALSYM MoveMemory}
  134. procedure CopyMemory(Destination, Source: PVOID; Length: SIZE_T);
  135. {$EXTERNALSYM CopyMemory}
  136. procedure FillMemory(Destination: PVOID; Length: SIZE_T; Fill: BYTE);
  137. {$EXTERNALSYM FillMemory}
  138. procedure ZeroMemory(Destination: PVOID; Length: SIZE_T);
  139. {$EXTERNALSYM ZeroMemory}
  140. //#define SecureZeroMemory RtlSecureZeroMemory TODO
  141. //
  142. // File creation flags must start at the high end since they
  143. // are combined with the attributes
  144. //
  145. const
  146. FILE_FLAG_WRITE_THROUGH = DWORD($80000000);
  147. {$EXTERNALSYM FILE_FLAG_WRITE_THROUGH}
  148. FILE_FLAG_OVERLAPPED = $40000000;
  149. {$EXTERNALSYM FILE_FLAG_OVERLAPPED}
  150. FILE_FLAG_NO_BUFFERING = $20000000;
  151. {$EXTERNALSYM FILE_FLAG_NO_BUFFERING}
  152. FILE_FLAG_RANDOM_ACCESS = $10000000;
  153. {$EXTERNALSYM FILE_FLAG_RANDOM_ACCESS}
  154. FILE_FLAG_SEQUENTIAL_SCAN = $08000000;
  155. {$EXTERNALSYM FILE_FLAG_SEQUENTIAL_SCAN}
  156. FILE_FLAG_DELETE_ON_CLOSE = $04000000;
  157. {$EXTERNALSYM FILE_FLAG_DELETE_ON_CLOSE}
  158. FILE_FLAG_BACKUP_SEMANTICS = $02000000;
  159. {$EXTERNALSYM FILE_FLAG_BACKUP_SEMANTICS}
  160. FILE_FLAG_POSIX_SEMANTICS = $01000000;
  161. {$EXTERNALSYM FILE_FLAG_POSIX_SEMANTICS}
  162. FILE_FLAG_OPEN_REPARSE_POINT = $00200000;
  163. {$EXTERNALSYM FILE_FLAG_OPEN_REPARSE_POINT}
  164. FILE_FLAG_OPEN_NO_RECALL = $00100000;
  165. {$EXTERNALSYM FILE_FLAG_OPEN_NO_RECALL}
  166. FILE_FLAG_FIRST_PIPE_INSTANCE = $00080000;
  167. {$EXTERNALSYM FILE_FLAG_FIRST_PIPE_INSTANCE}
  168. CREATE_NEW = 1;
  169. {$EXTERNALSYM CREATE_NEW}
  170. CREATE_ALWAYS = 2;
  171. {$EXTERNALSYM CREATE_ALWAYS}
  172. OPEN_EXISTING = 3;
  173. {$EXTERNALSYM OPEN_EXISTING}
  174. OPEN_ALWAYS = 4;
  175. {$EXTERNALSYM OPEN_ALWAYS}
  176. TRUNCATE_EXISTING = 5;
  177. {$EXTERNALSYM TRUNCATE_EXISTING}
  178. //
  179. // Define possible return codes from the CopyFileEx callback routine
  180. //
  181. PROGRESS_CONTINUE = 0;
  182. {$EXTERNALSYM PROGRESS_CONTINUE}
  183. PROGRESS_CANCEL = 1;
  184. {$EXTERNALSYM PROGRESS_CANCEL}
  185. PROGRESS_STOP = 2;
  186. {$EXTERNALSYM PROGRESS_STOP}
  187. PROGRESS_QUIET = 3;
  188. {$EXTERNALSYM PROGRESS_QUIET}
  189. //
  190. // Define CopyFileEx callback routine state change values
  191. //
  192. CALLBACK_CHUNK_FINISHED = $00000000;
  193. {$EXTERNALSYM CALLBACK_CHUNK_FINISHED}
  194. CALLBACK_STREAM_SWITCH = $00000001;
  195. {$EXTERNALSYM CALLBACK_STREAM_SWITCH}
  196. //
  197. // Define CopyFileEx option flags
  198. //
  199. COPY_FILE_FAIL_IF_EXISTS = $00000001;
  200. {$EXTERNALSYM COPY_FILE_FAIL_IF_EXISTS}
  201. COPY_FILE_RESTARTABLE = $00000002;
  202. {$EXTERNALSYM COPY_FILE_RESTARTABLE}
  203. COPY_FILE_OPEN_SOURCE_FOR_WRITE = $00000004;
  204. {$EXTERNALSYM COPY_FILE_OPEN_SOURCE_FOR_WRITE}
  205. COPY_FILE_ALLOW_DECRYPTED_DESTINATION = $00000008;
  206. {$EXTERNALSYM COPY_FILE_ALLOW_DECRYPTED_DESTINATION}
  207. //
  208. // Define ReplaceFile option flags
  209. //
  210. REPLACEFILE_WRITE_THROUGH = $00000001;
  211. {$EXTERNALSYM REPLACEFILE_WRITE_THROUGH}
  212. REPLACEFILE_IGNORE_MERGE_ERRORS = $00000002;
  213. {$EXTERNALSYM REPLACEFILE_IGNORE_MERGE_ERRORS}
  214. //
  215. // Define the NamedPipe definitions
  216. //
  217. //
  218. // Define the dwOpenMode values for CreateNamedPipe
  219. //
  220. PIPE_ACCESS_INBOUND = $00000001;
  221. {$EXTERNALSYM PIPE_ACCESS_INBOUND}
  222. PIPE_ACCESS_OUTBOUND = $00000002;
  223. {$EXTERNALSYM PIPE_ACCESS_OUTBOUND}
  224. PIPE_ACCESS_DUPLEX = $00000003;
  225. {$EXTERNALSYM PIPE_ACCESS_DUPLEX}
  226. //
  227. // Define the Named Pipe End flags for GetNamedPipeInfo
  228. //
  229. PIPE_CLIENT_END = $00000000;
  230. {$EXTERNALSYM PIPE_CLIENT_END}
  231. PIPE_SERVER_END = $00000001;
  232. {$EXTERNALSYM PIPE_SERVER_END}
  233. //
  234. // Define the dwPipeMode values for CreateNamedPipe
  235. //
  236. PIPE_WAIT = $00000000;
  237. {$EXTERNALSYM PIPE_WAIT}
  238. PIPE_NOWAIT = $00000001;
  239. {$EXTERNALSYM PIPE_NOWAIT}
  240. PIPE_READMODE_BYTE = $00000000;
  241. {$EXTERNALSYM PIPE_READMODE_BYTE}
  242. PIPE_READMODE_MESSAGE = $00000002;
  243. {$EXTERNALSYM PIPE_READMODE_MESSAGE}
  244. PIPE_TYPE_BYTE = $00000000;
  245. {$EXTERNALSYM PIPE_TYPE_BYTE}
  246. PIPE_TYPE_MESSAGE = $00000004;
  247. {$EXTERNALSYM PIPE_TYPE_MESSAGE}
  248. //
  249. // Define the well known values for CreateNamedPipe nMaxInstances
  250. //
  251. PIPE_UNLIMITED_INSTANCES = 255;
  252. {$EXTERNALSYM PIPE_UNLIMITED_INSTANCES}
  253. //
  254. // Define the Security Quality of Service bits to be passed
  255. // into CreateFile
  256. //
  257. SECURITY_ANONYMOUS = Ord(SecurityAnonymous) shl 16;
  258. {$EXTERNALSYM SECURITY_ANONYMOUS}
  259. SECURITY_IDENTIFICATION = Ord(SecurityIdentification) shl 16;
  260. {$EXTERNALSYM SECURITY_IDENTIFICATION}
  261. SECURITY_IMPERSONATION = Ord(SecurityImpersonation) shl 16;
  262. {$EXTERNALSYM SECURITY_IMPERSONATION}
  263. SECURITY_DELEGATION = Ord(SecurityDelegation) shl 16;
  264. {$EXTERNALSYM SECURITY_DELEGATION}
  265. SECURITY_CONTEXT_TRACKING = $00040000;
  266. {$EXTERNALSYM SECURITY_CONTEXT_TRACKING}
  267. SECURITY_EFFECTIVE_ONLY = $00080000;
  268. {$EXTERNALSYM SECURITY_EFFECTIVE_ONLY}
  269. SECURITY_SQOS_PRESENT = $00100000;
  270. {$EXTERNALSYM SECURITY_SQOS_PRESENT}
  271. SECURITY_VALID_SQOS_FLAGS = $001F0000;
  272. {$EXTERNALSYM SECURITY_VALID_SQOS_FLAGS}
  273. //
  274. // File structures
  275. //
  276. type
  277. LPOVERLAPPED = ^OVERLAPPED;
  278. {$EXTERNALSYM LPOVERLAPPED}
  279. _OVERLAPPED = record
  280. Internal: ULONG_PTR;
  281. InternalHigh: ULONG_PTR;
  282. Union: record
  283. case Integer of
  284. 0: (
  285. Offset: DWORD;
  286. OffsetHigh: DWORD);
  287. 1: (
  288. Pointer: PVOID);
  289. end;
  290. hEvent: HANDLE;
  291. end;
  292. {$EXTERNALSYM _OVERLAPPED}
  293. OVERLAPPED = _OVERLAPPED;
  294. {$EXTERNALSYM OVERLAPPED}
  295. TOverlapped = OVERLAPPED;
  296. POverlapped = LPOVERLAPPED;
  297. PSECURITY_ATTRIBUTES = ^SECURITY_ATTRIBUTES;
  298. {$EXTERNALSYM PSECURITY_ATTRIBUTES}
  299. _SECURITY_ATTRIBUTES = record
  300. nLength: DWORD;
  301. lpSecurityDescriptor: LPVOID;
  302. bInheritHandle: BOOL;
  303. end;
  304. {$EXTERNALSYM _SECURITY_ATTRIBUTES}
  305. SECURITY_ATTRIBUTES = _SECURITY_ATTRIBUTES;
  306. {$EXTERNALSYM SECURITY_ATTRIBUTES}
  307. LPSECURITY_ATTRIBUTES = ^SECURITY_ATTRIBUTES;
  308. {$EXTERNALSYM LPSECURITY_ATTRIBUTES}
  309. TSecurityAttributes = SECURITY_ATTRIBUTES;
  310. PSecurityAttributes = PSECURITY_ATTRIBUTES;
  311. PPROCESS_INFORMATION = ^PROCESS_INFORMATION;
  312. {$EXTERNALSYM PPROCESS_INFORMATION}
  313. _PROCESS_INFORMATION = record
  314. hProcess: HANDLE;
  315. hThread: HANDLE;
  316. dwProcessId: DWORD;
  317. dwThreadId: DWORD;
  318. end;
  319. {$EXTERNALSYM _PROCESS_INFORMATION}
  320. PROCESS_INFORMATION = _PROCESS_INFORMATION;
  321. {$EXTERNALSYM PROCESS_INFORMATION}
  322. LPPROCESS_INFORMATION = ^PROCESS_INFORMATION;
  323. {$EXTERNALSYM LPPROCESS_INFORMATION}
  324. TProcessInformation = PROCESS_INFORMATION;
  325. PProcessInformation = PPROCESS_INFORMATION;
  326. //
  327. // File System time stamps are represented with the following structure:
  328. //
  329. LPFILETIME = ^FILETIME;
  330. {$EXTERNALSYM LPFILETIME}
  331. _FILETIME = record
  332. dwLowDateTime: DWORD;
  333. dwHighDateTime: DWORD;
  334. end;
  335. {$EXTERNALSYM _FILETIME}
  336. FILETIME = _FILETIME;
  337. {$EXTERNALSYM FILETIME}
  338. TFileTime = FILETIME;
  339. PFileTime = LPFILETIME;
  340. //
  341. // System time is represented with the following structure:
  342. //
  343. LPSYSTEMTIME = ^SYSTEMTIME;
  344. {$EXTERNALSYM LPSYSTEMTIME}
  345. {$IFDEF USE_DELPHI_TYPES}
  346. _SYSTEMTIME = Windows._SYSTEMTIME;
  347. SYSTEMTIME = Windows.SYSTEMTIME;
  348. TSystemTime = Windows.TSystemTime;
  349. PSystemtime = Windows.PSystemTime;
  350. {$ELSE}
  351. _SYSTEMTIME = record
  352. wYear: Word;
  353. wMonth: Word;
  354. wDayOfWeek: Word;
  355. wDay: Word;
  356. wHour: Word;
  357. wMinute: Word;
  358. wSecond: Word;
  359. wMilliseconds: Word;
  360. end;
  361. {$EXTERNALSYM _SYSTEMTIME}
  362. SYSTEMTIME = _SYSTEMTIME;
  363. {$EXTERNALSYM SYSTEMTIME}
  364. TSystemTime = SYSTEMTIME;
  365. PSystemTime = LPSYSTEMTIME;
  366. {$ENDIF USE_DELPHI_TYPES}
  367. PTHREAD_START_ROUTINE = function(lpThreadParameter: LPVOID): DWORD; stdcall;
  368. {$EXTERNALSYM PTHREAD_START_ROUTINE}
  369. LPTHREAD_START_ROUTINE = PTHREAD_START_ROUTINE;
  370. {$EXTERNALSYM LPTHREAD_START_ROUTINE}
  371. TThreadStartRoutine = PTHREAD_START_ROUTINE;
  372. PFIBER_START_ROUTINE = procedure(lpFiberParameter: LPVOID); stdcall;
  373. {$EXTERNALSYM PFIBER_START_ROUTINE}
  374. LPFIBER_START_ROUTINE = PFIBER_START_ROUTINE;
  375. {$EXTERNALSYM LPFIBER_START_ROUTINE}
  376. TFiberStartRoutine = PFIBER_START_ROUTINE;
  377. CRITICAL_SECTION = RTL_CRITICAL_SECTION;
  378. {$EXTERNALSYM CRITICAL_SECTION}
  379. PCRITICAL_SECTION = PRTL_CRITICAL_SECTION;
  380. {$EXTERNALSYM PCRITICAL_SECTION}
  381. LPCRITICAL_SECTION = PRTL_CRITICAL_SECTION;
  382. {$EXTERNALSYM LPCRITICAL_SECTION}
  383. TCriticalSection = CRITICAL_SECTION;
  384. PCriticalSection = PCRITICAL_SECTION;
  385. CRITICAL_SECTION_DEBUG = RTL_CRITICAL_SECTION_DEBUG;
  386. {$EXTERNALSYM CRITICAL_SECTION_DEBUG}
  387. PCRITICAL_SECTION_DEBUG = PRTL_CRITICAL_SECTION_DEBUG;
  388. {$EXTERNALSYM PCRITICAL_SECTION_DEBUG}
  389. LPCRITICAL_SECTION_DEBUG = PRTL_CRITICAL_SECTION_DEBUG;
  390. {$EXTERNALSYM LPCRITICAL_SECTION_DEBUG}
  391. TCriticalSectionDebug = CRITICAL_SECTION_DEBUG;
  392. PCriticalSectionDebug = PCRITICAL_SECTION_DEBUG;
  393. LPLDT_ENTRY = PLDT_ENTRY;
  394. {$EXTERNALSYM LPLDT_ENTRY}
  395. PLdtEntry = LPLDT_ENTRY;
  396. const
  397. MUTEX_MODIFY_STATE = MUTANT_QUERY_STATE;
  398. {$EXTERNALSYM MUTEX_MODIFY_STATE}
  399. MUTEX_ALL_ACCESS = MUTANT_ALL_ACCESS;
  400. {$EXTERNALSYM MUTEX_ALL_ACCESS}
  401. //
  402. // Serial provider type.
  403. //
  404. SP_SERIALCOMM = DWORD($00000001);
  405. {$EXTERNALSYM SP_SERIALCOMM}
  406. //
  407. // Provider SubTypes
  408. //
  409. PST_UNSPECIFIED = DWORD($00000000);
  410. {$EXTERNALSYM PST_UNSPECIFIED}
  411. PST_RS232 = DWORD($00000001);
  412. {$EXTERNALSYM PST_RS232}
  413. PST_PARALLELPORT = DWORD($00000002);
  414. {$EXTERNALSYM PST_PARALLELPORT}
  415. PST_RS422 = DWORD($00000003);
  416. {$EXTERNALSYM PST_RS422}
  417. PST_RS423 = DWORD($00000004);
  418. {$EXTERNALSYM PST_RS423}
  419. PST_RS449 = DWORD($00000005);
  420. {$EXTERNALSYM PST_RS449}
  421. PST_MODEM = DWORD($00000006);
  422. {$EXTERNALSYM PST_MODEM}
  423. PST_FAX = DWORD($00000021);
  424. {$EXTERNALSYM PST_FAX}
  425. PST_SCANNER = DWORD($00000022);
  426. {$EXTERNALSYM PST_SCANNER}
  427. PST_NETWORK_BRIDGE = DWORD($00000100);
  428. {$EXTERNALSYM PST_NETWORK_BRIDGE}
  429. PST_LAT = DWORD($00000101);
  430. {$EXTERNALSYM PST_LAT}
  431. PST_TCPIP_TELNET = DWORD($00000102);
  432. {$EXTERNALSYM PST_TCPIP_TELNET}
  433. PST_X25 = DWORD($00000103);
  434. {$EXTERNALSYM PST_X25}
  435. //
  436. // Provider capabilities flags.
  437. //
  438. PCF_DTRDSR = DWORD($0001);
  439. {$EXTERNALSYM PCF_DTRDSR}
  440. PCF_RTSCTS = DWORD($0002);
  441. {$EXTERNALSYM PCF_RTSCTS}
  442. PCF_RLSD = DWORD($0004);
  443. {$EXTERNALSYM PCF_RLSD}
  444. PCF_PARITY_CHECK = DWORD($0008);
  445. {$EXTERNALSYM PCF_PARITY_CHECK}
  446. PCF_XONXOFF = DWORD($0010);
  447. {$EXTERNALSYM PCF_XONXOFF}
  448. PCF_SETXCHAR = DWORD($0020);
  449. {$EXTERNALSYM PCF_SETXCHAR}
  450. PCF_TOTALTIMEOUTS = DWORD($0040);
  451. {$EXTERNALSYM PCF_TOTALTIMEOUTS}
  452. PCF_INTTIMEOUTS = DWORD($0080);
  453. {$EXTERNALSYM PCF_INTTIMEOUTS}
  454. PCF_SPECIALCHARS = DWORD($0100);
  455. {$EXTERNALSYM PCF_SPECIALCHARS}
  456. PCF_16BITMODE = DWORD($0200);
  457. {$EXTERNALSYM PCF_16BITMODE}
  458. //
  459. // Comm provider settable parameters.
  460. //
  461. SP_PARITY = DWORD($0001);
  462. {$EXTERNALSYM SP_PARITY}
  463. SP_BAUD = DWORD($0002);
  464. {$EXTERNALSYM SP_BAUD}
  465. SP_DATABITS = DWORD($0004);
  466. {$EXTERNALSYM SP_DATABITS}
  467. SP_STOPBITS = DWORD($0008);
  468. {$EXTERNALSYM SP_STOPBITS}
  469. SP_HANDSHAKING = DWORD($0010);
  470. {$EXTERNALSYM SP_HANDSHAKING}
  471. SP_PARITY_CHECK = DWORD($0020);
  472. {$EXTERNALSYM SP_PARITY_CHECK}
  473. SP_RLSD = DWORD($0040);
  474. {$EXTERNALSYM SP_RLSD}
  475. //
  476. // Settable baud rates in the provider.
  477. //
  478. BAUD_075 = DWORD($00000001);
  479. {$EXTERNALSYM BAUD_075}
  480. BAUD_110 = DWORD($00000002);
  481. {$EXTERNALSYM BAUD_110}
  482. BAUD_134_5 = DWORD($00000004);
  483. {$EXTERNALSYM BAUD_134_5}
  484. BAUD_150 = DWORD($00000008);
  485. {$EXTERNALSYM BAUD_150}
  486. BAUD_300 = DWORD($00000010);
  487. {$EXTERNALSYM BAUD_300}
  488. BAUD_600 = DWORD($00000020);
  489. {$EXTERNALSYM BAUD_600}
  490. BAUD_1200 = DWORD($00000040);
  491. {$EXTERNALSYM BAUD_1200}
  492. BAUD_1800 = DWORD($00000080);
  493. {$EXTERNALSYM BAUD_1800}
  494. BAUD_2400 = DWORD($00000100);
  495. {$EXTERNALSYM BAUD_2400}
  496. BAUD_4800 = DWORD($00000200);
  497. {$EXTERNALSYM BAUD_4800}
  498. BAUD_7200 = DWORD($00000400);
  499. {$EXTERNALSYM BAUD_7200}
  500. BAUD_9600 = DWORD($00000800);
  501. {$EXTERNALSYM BAUD_9600}
  502. BAUD_14400 = DWORD($00001000);
  503. {$EXTERNALSYM BAUD_14400}
  504. BAUD_19200 = DWORD($00002000);
  505. {$EXTERNALSYM BAUD_19200}
  506. BAUD_38400 = DWORD($00004000);
  507. {$EXTERNALSYM BAUD_38400}
  508. BAUD_56K = DWORD($00008000);
  509. {$EXTERNALSYM BAUD_56K}
  510. BAUD_128K = DWORD($00010000);
  511. {$EXTERNALSYM BAUD_128K}
  512. BAUD_115200 = DWORD($00020000);
  513. {$EXTERNALSYM BAUD_115200}
  514. BAUD_57600 = DWORD($00040000);
  515. {$EXTERNALSYM BAUD_57600}
  516. BAUD_USER = DWORD($10000000);
  517. {$EXTERNALSYM BAUD_USER}
  518. //
  519. // Settable Data Bits
  520. //
  521. DATABITS_5 = WORD($0001);
  522. {$EXTERNALSYM DATABITS_5}
  523. DATABITS_6 = WORD($0002);
  524. {$EXTERNALSYM DATABITS_6}
  525. DATABITS_7 = WORD($0004);
  526. {$EXTERNALSYM DATABITS_7}
  527. DATABITS_8 = WORD($0008);
  528. {$EXTERNALSYM DATABITS_8}
  529. DATABITS_16 = WORD($0010);
  530. {$EXTERNALSYM DATABITS_16}
  531. DATABITS_16X = WORD($0020);
  532. {$EXTERNALSYM DATABITS_16X}
  533. //
  534. // Settable Stop and Parity bits.
  535. //
  536. STOPBITS_10 = WORD($0001);
  537. {$EXTERNALSYM STOPBITS_10}
  538. STOPBITS_15 = WORD($0002);
  539. {$EXTERNALSYM STOPBITS_15}
  540. STOPBITS_20 = WORD($0004);
  541. {$EXTERNALSYM STOPBITS_20}
  542. PARITY_NONE = WORD($0100);
  543. {$EXTERNALSYM PARITY_NONE}
  544. PARITY_ODD = WORD($0200);
  545. {$EXTERNALSYM PARITY_ODD}
  546. PARITY_EVEN = WORD($0400);
  547. {$EXTERNALSYM PARITY_EVEN}
  548. PARITY_MARK = WORD($0800);
  549. {$EXTERNALSYM PARITY_MARK}
  550. PARITY_SPACE = WORD($1000);
  551. {$EXTERNALSYM PARITY_SPACE}
  552. type
  553. LPCOMMPROP = ^COMMPROP;
  554. {$EXTERNALSYM LPCOMMPROP}
  555. _COMMPROP = record
  556. wPacketLength: Word;
  557. wPacketVersion: Word;
  558. dwServiceMask: DWORD;
  559. dwReserved1: DWORD;
  560. dwMaxTxQueue: DWORD;
  561. dwMaxRxQueue: DWORD;
  562. dwMaxBaud: DWORD;
  563. dwProvSubType: DWORD;
  564. dwProvCapabilities: DWORD;
  565. dwSettableParams: DWORD;
  566. dwSettableBaud: DWORD;
  567. wSettableData: Word;
  568. wSettableStopParity: Word;
  569. dwCurrentTxQueue: DWORD;
  570. dwCurrentRxQueue: DWORD;
  571. dwProvSpec1: DWORD;
  572. dwProvSpec2: DWORD;
  573. wcProvChar: array [0..0] of WCHAR;
  574. end;
  575. {$EXTERNALSYM _COMMPROP}
  576. COMMPROP = _COMMPROP;
  577. {$EXTERNALSYM COMMPROP}
  578. TCommProp = COMMPROP;
  579. PCommProp = LPCOMMPROP;
  580. //
  581. // Set dwProvSpec1 to COMMPROP_INITIALIZED to indicate that wPacketLength
  582. // is valid before a call to GetCommProperties().
  583. //
  584. const
  585. COMMPROP_INITIALIZED = DWORD($E73CF52E);
  586. {$EXTERNALSYM COMMPROP_INITIALIZED}
  587. //_COMSTAT Flags (bitfield)
  588. COMSTAT_CTS_HOLD = 1 shl 0;
  589. COMSTAT_DSR_HOLD = 1 shl 1;
  590. COMSTAT_RLSD_HOLD = 1 shl 2;
  591. COMSTAT_XOFF_HOLD = 1 shl 3;
  592. COMSTAT_XOFF_SENT = 1 shl 4;
  593. COMSTAT_F_EOF = 1 shl 5;
  594. COMSTAT_F_TXIM = 1 shl 6;
  595. type
  596. LPCOMSTAT = ^COMSTAT;
  597. {$EXTERNALSYM LPCOMSTAT}
  598. _COMSTAT = record
  599. Flags: DWORD;
  600. cbInQue: DWORD;
  601. cbOutQue: DWORD;
  602. end;
  603. {$EXTERNALSYM _COMSTAT}
  604. COMSTAT = _COMSTAT;
  605. {$EXTERNALSYM COMSTAT}
  606. TComstat = COMSTAT;
  607. PComstat = LPCOMSTAT;
  608. //
  609. // DTR Control Flow Values.
  610. //
  611. const
  612. DTR_CONTROL_DISABLE = $00;
  613. {$EXTERNALSYM DTR_CONTROL_DISABLE}
  614. DTR_CONTROL_ENABLE = $01;
  615. {$EXTERNALSYM DTR_CONTROL_ENABLE}
  616. DTR_CONTROL_HANDSHAKE = $02;
  617. {$EXTERNALSYM DTR_CONTROL_HANDSHAKE}
  618. //
  619. // RTS Control Flow Values
  620. //
  621. RTS_CONTROL_DISABLE = $00;
  622. {$EXTERNALSYM RTS_CONTROL_DISABLE}
  623. RTS_CONTROL_ENABLE = $01;
  624. {$EXTERNALSYM RTS_CONTROL_ENABLE}
  625. RTS_CONTROL_HANDSHAKE = $02;
  626. {$EXTERNALSYM RTS_CONTROL_HANDSHAKE}
  627. RTS_CONTROL_TOGGLE = $03;
  628. {$EXTERNALSYM RTS_CONTROL_TOGGLE}
  629. // _DCB.Flags
  630. const
  631. fDcbBinary = 1 shl 0; // Binary Mode (skip EOF check)
  632. fDcbParity = 1 shl 1; // Enable parity checking
  633. fDcbOutxCtsFlow = 1 shl 2; // CTS handshaking on output
  634. fDcbOutxDsrFlow = 1 shl 3; // DSR handshaking on output
  635. fDcbDtrControl = $0030; // DTR Flow control
  636. fDcbDsrSensitivity = 1 shl 6; // DSR Sensitivity
  637. fDcbTXContinueOnXoff = 1 shl 7; // Continue TX when Xoff sent
  638. fDcbOutX = 1 shl 8; // Enable output X-ON/X-OFF
  639. fDcbInX = 1 shl 9; // Enable input X-ON/X-OFF
  640. fDcbErrorChar = 1 shl 10; // Enable Err Replacement
  641. fDcbNull = 1 shl 11; // Enable Null stripping
  642. fDcbRtsControl = $3000; // Rts Flow control
  643. fAbortOnError = 1 shl 14; // Abort all reads and writes on Error
  644. type
  645. LPDCB = ^DCB;
  646. {$EXTERNALSYM LPDCB}
  647. _DCB = record
  648. DCBlength: DWORD; // sizeof(DCB)
  649. BaudRate: DWORD; // Baudrate at which running
  650. Flags: DWORD; // See constants above
  651. wReserved: WORD; // Not currently used
  652. XonLim: WORD; // Transmit X-ON threshold
  653. XoffLim: WORD; // Transmit X-OFF threshold
  654. ByteSize: BYTE; // Number of bits/byte, 4-8
  655. Parity: BYTE; // 0-4=None,Odd,Even,Mark,Space
  656. StopBits: BYTE; // 0,1,2 = 1, 1.5, 2
  657. XonChar: Char; // Tx and Rx X-ON character
  658. XoffChar: Char; // Tx and Rx X-OFF character
  659. ErrorChar: Char; // Error replacement char
  660. EofChar: Char; // End of Input character
  661. EvtChar: Char; // Received Event character
  662. wReserved1: WORD; // Fill for now.
  663. end;
  664. {$EXTERNALSYM _DCB}
  665. DCB = _DCB;
  666. {$EXTERNALSYM DCB}
  667. TDCB = DCB;
  668. PDCB = LPDCB;
  669. LPCOMMTIMEOUTS = ^COMMTIMEOUTS;
  670. {$EXTERNALSYM LPCOMMTIMEOUTS}
  671. _COMMTIMEOUTS = record
  672. ReadIntervalTimeout: DWORD; // Maximum time between read chars.
  673. ReadTotalTimeoutMultiplier: DWORD; // Multiplier of characters.
  674. ReadTotalTimeoutConstant: DWORD; // Constant in milliseconds.
  675. WriteTotalTimeoutMultiplier: DWORD; // Multiplier of characters.
  676. WriteTotalTimeoutConstant: DWORD; // Constant in milliseconds.
  677. end;
  678. {$EXTERNALSYM _COMMTIMEOUTS}
  679. COMMTIMEOUTS = _COMMTIMEOUTS;
  680. {$EXTERNALSYM COMMTIMEOUTS}
  681. TCommTimeouts = COMMTIMEOUTS;
  682. PCommTimeouts = LPCOMMTIMEOUTS;
  683. LPCOMMCONFIG = ^COMMCONFIG;
  684. {$EXTERNALSYM LPCOMMCONFIG}
  685. _COMMCONFIG = record
  686. dwSize: DWORD; // Size of the entire struct
  687. wVersion: Word; // version of the structure
  688. wReserved: Word; // alignment
  689. dcb: DCB; // device control block
  690. dwProviderSubType: DWORD; // ordinal value for identifying
  691. // provider-defined data structure format
  692. dwProviderOffset: DWORD; // Specifies the offset of provider specific
  693. // data field in bytes from the start
  694. dwProviderSize: DWORD; // size of the provider-specific data field
  695. wcProviderData: array [0..0] of WCHAR; // provider-specific data
  696. end;
  697. {$EXTERNALSYM _COMMCONFIG}
  698. COMMCONFIG = _COMMCONFIG;
  699. {$EXTERNALSYM COMMCONFIG}
  700. TCommConfig = COMMCONFIG;
  701. PCommConfig = LPCOMMCONFIG;
  702. LPSYSTEM_INFO = ^SYSTEM_INFO;
  703. {$EXTERNALSYM LPSYSTEM_INFO}
  704. _SYSTEM_INFO = record
  705. case Integer of
  706. 0: (
  707. dwOemId: DWORD); // absolete, do not use
  708. 1: (
  709. wProcessorArchitecture: WORD;
  710. wReserved: WORD;
  711. dwPageSize: DWORD;
  712. lpMinimumApplicationAddress: LPVOID;
  713. lpMaximumApplicationAddress: LPVOID;
  714. dwActiveProcessorMask: DWORD_PTR;
  715. dwNumberOfProcessors: DWORD;
  716. dwProcessorType: DWORD;
  717. dwAllocationGranularity: DWORD;
  718. wProcessorLevel: WORD;
  719. wProcessorRevision: WORD);
  720. end;
  721. {$EXTERNALSYM _SYSTEM_INFO}
  722. SYSTEM_INFO = _SYSTEM_INFO;
  723. {$EXTERNALSYM SYSTEM_INFO}
  724. TSystemInfo = SYSTEM_INFO;
  725. PSystemInfo = LPSYSTEM_INFO;
  726. //
  727. //
  728. function FreeModule(hLibModule: HMODULE): BOOL;
  729. {$EXTERNALSYM FreeModule}
  730. function MakeProcInstance(lpProc: FARPROC; hInstance: HINSTANCE): FARPROC;
  731. {$EXTERNALSYM MakeProcInstance}
  732. procedure FreeProcInstance(lpProc: FARPROC);
  733. {$EXTERNALSYM FreeProcInstance}
  734. // Global Memory Flags
  735. const
  736. GMEM_FIXED = $0000;
  737. {$EXTERNALSYM GMEM_FIXED}
  738. GMEM_MOVEABLE = $0002;
  739. {$EXTERNALSYM GMEM_MOVEABLE}
  740. GMEM_NOCOMPACT = $0010;
  741. {$EXTERNALSYM GMEM_NOCOMPACT}
  742. GMEM_NODISCARD = $0020;
  743. {$EXTERNALSYM GMEM_NODISCARD}
  744. GMEM_ZEROINIT = $0040;
  745. {$EXTERNALSYM GMEM_ZEROINIT}
  746. GMEM_MODIFY = $0080;
  747. {$EXTERNALSYM GMEM_MODIFY}
  748. GMEM_DISCARDABLE = $0100;
  749. {$EXTERNALSYM GMEM_DISCARDABLE}
  750. GMEM_NOT_BANKED = $1000;
  751. {$EXTERNALSYM GMEM_NOT_BANKED}
  752. GMEM_SHARE = $2000;
  753. {$EXTERNALSYM GMEM_SHARE}
  754. GMEM_DDESHARE = $2000;
  755. {$EXTERNALSYM GMEM_DDESHARE}
  756. GMEM_NOTIFY = $4000;
  757. {$EXTERNALSYM GMEM_NOTIFY}
  758. GMEM_LOWER = GMEM_NOT_BANKED;
  759. {$EXTERNALSYM GMEM_LOWER}
  760. GMEM_VALID_FLAGS = $7F72;
  761. {$EXTERNALSYM GMEM_VALID_FLAGS}
  762. GMEM_INVALID_HANDLE = $8000;
  763. {$EXTERNALSYM GMEM_INVALID_HANDLE}
  764. GHND = GMEM_MOVEABLE or GMEM_ZEROINIT;
  765. {$EXTERNALSYM GHND}
  766. GPTR = GMEM_FIXED or GMEM_ZEROINIT;
  767. {$EXTERNALSYM GPTR}
  768. function GlobalLRUNewest(h: HANDLE): HANDLE;
  769. {$EXTERNALSYM GlobalLRUNewest}
  770. function GlobalLRUOldest(h: HANDLE): HANDLE;
  771. {$EXTERNALSYM GlobalLRUOldest}
  772. function GlobalDiscard(h: HANDLE): HANDLE;
  773. {$EXTERNALSYM GlobalDiscard}
  774. // Flags returned by GlobalFlags (in addition to GMEM_DISCARDABLE)
  775. const
  776. GMEM_DISCARDED = $4000;
  777. {$EXTERNALSYM GMEM_DISCARDED}
  778. GMEM_LOCKCOUNT = $00FF;
  779. {$EXTERNALSYM GMEM_LOCKCOUNT}
  780. type
  781. LPMEMORYSTATUS = ^MEMORYSTATUS;
  782. {$EXTERNALSYM LPMEMORYSTATUS}
  783. _MEMORYSTATUS = record
  784. dwLength: DWORD;
  785. dwMemoryLoad: DWORD;
  786. dwTotalPhys: SIZE_T;
  787. dwAvailPhys: SIZE_T;
  788. dwTotalPageFile: SIZE_T;
  789. dwAvailPageFile: SIZE_T;
  790. dwTotalVirtual: SIZE_T;
  791. dwAvailVirtual: SIZE_T;
  792. end;
  793. {$EXTERNALSYM _MEMORYSTATUS}
  794. MEMORYSTATUS = _MEMORYSTATUS;
  795. {$EXTERNALSYM MEMORYSTATUS}
  796. TMemoryStatus = MEMORYSTATUS;
  797. PMemoryStatus = LPMEMORYSTATUS;
  798. // Local Memory Flags
  799. const
  800. LMEM_FIXED = $0000;
  801. {$EXTERNALSYM LMEM_FIXED}
  802. LMEM_MOVEABLE = $0002;
  803. {$EXTERNALSYM LMEM_MOVEABLE}
  804. LMEM_NOCOMPACT = $0010;
  805. {$EXTERNALSYM LMEM_NOCOMPACT}
  806. LMEM_NODISCARD = $0020;
  807. {$EXTERNALSYM LMEM_NODISCARD}
  808. LMEM_ZEROINIT = $0040;
  809. {$EXTERNALSYM LMEM_ZEROINIT}
  810. LMEM_MODIFY = $0080;
  811. {$EXTERNALSYM LMEM_MODIFY}
  812. LMEM_DISCARDABLE = $0F00;
  813. {$EXTERNALSYM LMEM_DISCARDABLE}
  814. LMEM_VALID_FLAGS = $0F72;
  815. {$EXTERNALSYM LMEM_VALID_FLAGS}
  816. LMEM_INVALID_HANDLE = $8000;
  817. {$EXTERNALSYM LMEM_INVALID_HANDLE}
  818. LHND = LMEM_MOVEABLE or LMEM_ZEROINIT;
  819. {$EXTERNALSYM LHND}
  820. LPTR = LMEM_FIXED or LMEM_ZEROINIT;
  821. {$EXTERNALSYM LPTR}
  822. NONZEROLHND = LMEM_MOVEABLE;
  823. {$EXTERNALSYM NONZEROLHND}
  824. NONZEROLPTR = LMEM_FIXED;
  825. {$EXTERNALSYM NONZEROLPTR}
  826. function LocalDiscard(h: HLOCAL): HLOCAL;
  827. {$EXTERNALSYM LocalDiscard}
  828. // Flags returned by LocalFlags (in addition to LMEM_DISCARDABLE)
  829. const
  830. LMEM_DISCARDED = $4000;
  831. {$EXTERNALSYM LMEM_DISCARDED}
  832. LMEM_LOCKCOUNT = $00FF;
  833. {$EXTERNALSYM LMEM_LOCKCOUNT}
  834. //
  835. // dwCreationFlag values
  836. //
  837. DEBUG_PROCESS = $00000001;
  838. {$EXTERNALSYM DEBUG_PROCESS}
  839. DEBUG_ONLY_THIS_PROCESS = $00000002;
  840. {$EXTERNALSYM DEBUG_ONLY_THIS_PROCESS}
  841. CREATE_SUSPENDED = $00000004;
  842. {$EXTERNALSYM CREATE_SUSPENDED}
  843. DETACHED_PROCESS = $00000008;
  844. {$EXTERNALSYM DETACHED_PROCESS}
  845. CREATE_NEW_CONSOLE = $00000010;
  846. {$EXTERNALSYM CREATE_NEW_CONSOLE}
  847. NORMAL_PRIORITY_CLASS = $00000020;
  848. {$EXTERNALSYM NORMAL_PRIORITY_CLASS}
  849. IDLE_PRIORITY_CLASS = $00000040;
  850. {$EXTERNALSYM IDLE_PRIORITY_CLASS}
  851. HIGH_PRIORITY_CLASS = $00000080;
  852. {$EXTERNALSYM HIGH_PRIORITY_CLASS}
  853. REALTIME_PRIORITY_CLASS = $00000100;
  854. {$EXTERNALSYM REALTIME_PRIORITY_CLASS}
  855. CREATE_NEW_PROCESS_GROUP = $00000200;
  856. {$EXTERNALSYM CREATE_NEW_PROCESS_GROUP}
  857. CREATE_UNICODE_ENVIRONMENT = $00000400;
  858. {$EXTERNALSYM CREATE_UNICODE_ENVIRONMENT}
  859. CREATE_SEPARATE_WOW_VDM = $00000800;
  860. {$EXTERNALSYM CREATE_SEPARATE_WOW_VDM}
  861. CREATE_SHARED_WOW_VDM = $00001000;
  862. {$EXTERNALSYM CREATE_SHARED_WOW_VDM}
  863. CREATE_FORCEDOS = $00002000;
  864. {$EXTERNALSYM CREATE_FORCEDOS}
  865. BELOW_NORMAL_PRIORITY_CLASS = $00004000;
  866. {$EXTERNALSYM BELOW_NORMAL_PRIORITY_CLASS}
  867. ABOVE_NORMAL_PRIORITY_CLASS = $00008000;
  868. {$EXTERNALSYM ABOVE_NORMAL_PRIORITY_CLASS}
  869. STACK_SIZE_PARAM_IS_A_RESERVATION = $00010000;
  870. {$EXTERNALSYM STACK_SIZE_PARAM_IS_A_RESERVATION}
  871. CREATE_BREAKAWAY_FROM_JOB = $01000000;
  872. {$EXTERNALSYM CREATE_BREAKAWAY_FROM_JOB}
  873. CREATE_PRESERVE_CODE_AUTHZ_LEVEL = $02000000;
  874. {$EXTERNALSYM CREATE_PRESERVE_CODE_AUTHZ_LEVEL}
  875. CREATE_DEFAULT_ERROR_MODE = $04000000;
  876. {$EXTERNALSYM CREATE_DEFAULT_ERROR_MODE}
  877. CREATE_NO_WINDOW = $08000000;
  878. {$EXTERNALSYM CREATE_NO_WINDOW}
  879. PROFILE_USER = $10000000;
  880. {$EXTERNALSYM PROFILE_USER}
  881. PROFILE_KERNEL = $20000000;
  882. {$EXTERNALSYM PROFILE_KERNEL}
  883. PROFILE_SERVER = $40000000;
  884. {$EXTERNALSYM PROFILE_SERVER}
  885. CREATE_IGNORE_SYSTEM_DEFAULT = DWORD($80000000);
  886. {$EXTERNALSYM CREATE_IGNORE_SYSTEM_DEFAULT}
  887. THREAD_PRIORITY_LOWEST = THREAD_BASE_PRIORITY_MIN;
  888. {$EXTERNALSYM THREAD_PRIORITY_LOWEST}
  889. THREAD_PRIORITY_BELOW_NORMAL = THREAD_PRIORITY_LOWEST + 1;
  890. {$EXTERNALSYM THREAD_PRIORITY_BELOW_NORMAL}
  891. THREAD_PRIORITY_NORMAL = 0;
  892. {$EXTERNALSYM THREAD_PRIORITY_NORMAL}
  893. THREAD_PRIORITY_HIGHEST = THREAD_BASE_PRIORITY_MAX;
  894. {$EXTERNALSYM THREAD_PRIORITY_HIGHEST}
  895. THREAD_PRIORITY_ABOVE_NORMAL = THREAD_PRIORITY_HIGHEST - 1;
  896. {$EXTERNALSYM THREAD_PRIORITY_ABOVE_NORMAL}
  897. THREAD_PRIORITY_ERROR_RETURN = MAXLONG;
  898. {$EXTERNALSYM THREAD_PRIORITY_ERROR_RETURN}
  899. THREAD_PRIORITY_TIME_CRITICAL = THREAD_BASE_PRIORITY_LOWRT;
  900. {$EXTERNALSYM THREAD_PRIORITY_TIME_CRITICAL}
  901. THREAD_PRIORITY_IDLE = THREAD_BASE_PRIORITY_IDLE;
  902. {$EXTERNALSYM THREAD_PRIORITY_IDLE}
  903. //
  904. // Debug APIs
  905. //
  906. EXCEPTION_DEBUG_EVENT = 1;
  907. {$EXTERNALSYM EXCEPTION_DEBUG_EVENT}
  908. CREATE_THREAD_DEBUG_EVENT = 2;
  909. {$EXTERNALSYM CREATE_THREAD_DEBUG_EVENT}
  910. CREATE_PROCESS_DEBUG_EVENT = 3;
  911. {$EXTERNALSYM CREATE_PROCESS_DEBUG_EVENT}
  912. EXIT_THREAD_DEBUG_EVENT = 4;
  913. {$EXTERNALSYM EXIT_THREAD_DEBUG_EVENT}
  914. EXIT_PROCESS_DEBUG_EVENT = 5;
  915. {$EXTERNALSYM EXIT_PROCESS_DEBUG_EVENT}
  916. LOAD_DLL_DEBUG_EVENT = 6;
  917. {$EXTERNALSYM LOAD_DLL_DEBUG_EVENT}
  918. UNLOAD_DLL_DEBUG_EVENT = 7;
  919. {$EXTERNALSYM UNLOAD_DLL_DEBUG_EVENT}
  920. OUTPUT_DEBUG_STRING_EVENT = 8;
  921. {$EXTERNALSYM OUTPUT_DEBUG_STRING_EVENT}
  922. RIP_EVENT = 9;
  923. {$EXTERNALSYM RIP_EVENT}
  924. type
  925. LPEXCEPTION_DEBUG_INFO = ^EXCEPTION_DEBUG_INFO;
  926. {$EXTERNALSYM LPEXCEPTION_DEBUG_INFO}
  927. _EXCEPTION_DEBUG_INFO = record
  928. ExceptionRecord: EXCEPTION_RECORD;
  929. dwFirstChance: DWORD;
  930. end;
  931. {$EXTERNALSYM _EXCEPTION_DEBUG_INFO}
  932. EXCEPTION_DEBUG_INFO = _EXCEPTION_DEBUG_INFO;
  933. {$EXTERNALSYM EXCEPTION_DEBUG_INFO}
  934. TExceptionDebugInfo = EXCEPTION_DEBUG_INFO;
  935. PExceptionDebugInfo = LPEXCEPTION_DEBUG_INFO;
  936. LPCREATE_THREAD_DEBUG_INFO = ^CREATE_THREAD_DEBUG_INFO;
  937. {$EXTERNALSYM LPCREATE_THREAD_DEBUG_INFO}
  938. _CREATE_THREAD_DEBUG_INFO = record
  939. hThread: HANDLE;
  940. lpThreadLocalBase: LPVOID;
  941. lpStartAddress: LPTHREAD_START_ROUTINE;
  942. end;
  943. {$EXTERNALSYM _CREATE_THREAD_DEBUG_INFO}
  944. CREATE_THREAD_DEBUG_INFO = _CREATE_THREAD_DEBUG_INFO;
  945. {$EXTERNALSYM CREATE_THREAD_DEBUG_INFO}
  946. TCreateThreadDebugInfo = CREATE_THREAD_DEBUG_INFO;
  947. PCreateThreadDebugInfo = LPCREATE_THREAD_DEBUG_INFO;
  948. LPCREATE_PROCESS_DEBUG_INFO = ^CREATE_PROCESS_DEBUG_INFO;
  949. {$EXTERNALSYM LPCREATE_PROCESS_DEBUG_INFO}
  950. _CREATE_PROCESS_DEBUG_INFO = record
  951. hFile: HANDLE;
  952. hProcess: HANDLE;
  953. hThread: HANDLE;
  954. lpBaseOfImage: LPVOID;
  955. dwDebugInfoFileOffset: DWORD;
  956. nDebugInfoSize: DWORD;
  957. lpThreadLocalBase: LPVOID;
  958. lpStartAddress: LPTHREAD_START_ROUTINE;
  959. lpImageName: LPVOID;
  960. fUnicode: Word;
  961. end;
  962. {$EXTERNALSYM _CREATE_PROCESS_DEBUG_INFO}
  963. CREATE_PROCESS_DEBUG_INFO = _CREATE_PROCESS_DEBUG_INFO;
  964. {$EXTERNALSYM CREATE_PROCESS_DEBUG_INFO}
  965. TCreateProcessDebugInfo = CREATE_PROCESS_DEBUG_INFO;
  966. PCreateProcessDebugInfo = LPCREATE_PROCESS_DEBUG_INFO;
  967. LPEXIT_THREAD_DEBUG_INFO = ^EXIT_THREAD_DEBUG_INFO;
  968. {$EXTERNALSYM LPEXIT_THREAD_DEBUG_INFO}
  969. _EXIT_THREAD_DEBUG_INFO = record
  970. dwExitCode: DWORD;
  971. end;
  972. {$EXTERNALSYM _EXIT_THREAD_DEBUG_INFO}
  973. EXIT_THREAD_DEBUG_INFO = _EXIT_THREAD_DEBUG_INFO;
  974. {$EXTERNALSYM EXIT_THREAD_DEBUG_INFO}
  975. TExitThreadDebugInfo = EXIT_THREAD_DEBUG_INFO;
  976. PExitThreadDebugInfo = LPEXIT_THREAD_DEBUG_INFO;
  977. LPEXIT_PROCESS_DEBUG_INFO = ^EXIT_PROCESS_DEBUG_INFO;
  978. {$EXTERNALSYM LPEXIT_PROCESS_DEBUG_INFO}
  979. _EXIT_PROCESS_DEBUG_INFO = record
  980. dwExitCode: DWORD;
  981. end;
  982. {$EXTERNALSYM _EXIT_PROCESS_DEBUG_INFO}
  983. EXIT_PROCESS_DEBUG_INFO = _EXIT_PROCESS_DEBUG_INFO;
  984. {$EXTERNALSYM EXIT_PROCESS_DEBUG_INFO}
  985. TExitProcessDebugInfo = EXIT_PROCESS_DEBUG_INFO;
  986. PExitProcessDebugInfo = LPEXIT_PROCESS_DEBUG_INFO;
  987. LPLOAD_DLL_DEBUG_INFO = ^LOAD_DLL_DEBUG_INFO;
  988. {$EXTERNALSYM LPLOAD_DLL_DEBUG_INFO}
  989. _LOAD_DLL_DEBUG_INFO = record
  990. hFile: HANDLE;
  991. lpBaseOfDll: LPVOID;
  992. dwDebugInfoFileOffset: DWORD;
  993. nDebugInfoSize: DWORD;
  994. lpImageName: LPVOID;
  995. fUnicode: Word;
  996. end;
  997. {$EXTERNALSYM _LOAD_DLL_DEBUG_INFO}
  998. LOAD_DLL_DEBUG_INFO = _LOAD_DLL_DEBUG_INFO;
  999. {$EXTERNALSYM LOAD_DLL_DEBUG_INFO}
  1000. TLoadDllDebugInfo = LOAD_DLL_DEBUG_INFO;
  1001. PLoadDllDebugInfo = LPLOAD_DLL_DEBUG_INFO;
  1002. LPUNLOAD_DLL_DEBUG_INFO = ^UNLOAD_DLL_DEBUG_INFO;
  1003. {$EXTERNALSYM LPUNLOAD_DLL_DEBUG_INFO}
  1004. _UNLOAD_DLL_DEBUG_INFO = record
  1005. lpBaseOfDll: LPVOID;
  1006. end;
  1007. {$EXTERNALSYM _UNLOAD_DLL_DEBUG_INFO}
  1008. UNLOAD_DLL_DEBUG_INFO = _UNLOAD_DLL_DEBUG_INFO;
  1009. {$EXTERNALSYM UNLOAD_DLL_DEBUG_INFO}
  1010. TUnloadDllDebugInfo = UNLOAD_DLL_DEBUG_INFO;
  1011. PUnloadDllDebugInfo = LPUNLOAD_DLL_DEBUG_INFO;
  1012. LPOUTPUT_DEBUG_STRING_INFO = ^OUTPUT_DEBUG_STRING_INFO;
  1013. {$EXTERNALSYM LPOUTPUT_DEBUG_STRING_INFO}
  1014. _OUTPUT_DEBUG_STRING_INFO = record
  1015. lpDebugStringData: LPSTR;
  1016. fUnicode: Word;
  1017. nDebugStringLength: Word;
  1018. end;
  1019. {$EXTERNALSYM _OUTPUT_DEBUG_STRING_INFO}
  1020. OUTPUT_DEBUG_STRING_INFO = _OUTPUT_DEBUG_STRING_INFO;
  1021. {$EXTERNALSYM OUTPUT_DEBUG_STRING_INFO}
  1022. TOutputDebugStringInfo = OUTPUT_DEBUG_STRING_INFO;
  1023. POutputDebugStringInfo = LPOUTPUT_DEBUG_STRING_INFO;
  1024. LPRIP_INFO = ^RIP_INFO;
  1025. {$EXTERNALSYM LPRIP_INFO}
  1026. _RIP_INFO = record
  1027. dwError: DWORD;
  1028. dwType: DWORD;
  1029. end;
  1030. {$EXTERNALSYM _RIP_INFO}
  1031. RIP_INFO = _RIP_INFO;
  1032. {$EXTERNALSYM RIP_INFO}
  1033. TRipInfo = RIP_INFO;
  1034. PRipInfo = LPRIP_INFO;
  1035. LPDEBUG_EVENT = ^DEBUG_EVENT;
  1036. {$EXTERNALSYM LPDEBUG_EVENT}
  1037. _DEBUG_EVENT = record
  1038. dwDebugEventCode: DWORD;
  1039. dwProcessId: DWORD;
  1040. dwThreadId: DWORD;
  1041. case Integer of
  1042. 0: (Exception: EXCEPTION_DEBUG_INFO);
  1043. 1: (CreateThread: CREATE_THREAD_DEBUG_INFO);
  1044. 2: (CreateProcessInfo: CREATE_PROCESS_DEBUG_INFO);
  1045. 3: (ExitThread: EXIT_THREAD_DEBUG_INFO);
  1046. 4: (ExitProcess: EXIT_PROCESS_DEBUG_INFO);
  1047. 5: (LoadDll: LOAD_DLL_DEBUG_INFO);
  1048. 6: (UnloadDll: UNLOAD_DLL_DEBUG_INFO);
  1049. 7: (DebugString: OUTPUT_DEBUG_STRING_INFO);
  1050. 8: (RipInfo: RIP_INFO);
  1051. end;
  1052. {$EXTERNALSYM _DEBUG_EVENT}
  1053. DEBUG_EVENT = _DEBUG_EVENT;
  1054. {$EXTERNALSYM DEBUG_EVENT}
  1055. TDebugEvent = DEBUG_EVENT;
  1056. PDebugEvent = LPDEBUG_EVENT;
  1057. LPCONTEXT = PCONTEXT;
  1058. {$EXTERNALSYM LPCONTEXT}
  1059. LPEXCEPTION_RECORD = PEXCEPTION_RECORD;
  1060. {$EXTERNALSYM LPEXCEPTION_RECORD}
  1061. LPEXCEPTION_POINTERS = PEXCEPTION_POINTERS;
  1062. {$EXTERNALSYM LPEXCEPTION_POINTERS}
  1063. const
  1064. DRIVE_UNKNOWN = 0;
  1065. {$EXTERNALSYM DRIVE_UNKNOWN}
  1066. DRIVE_NO_ROOT_DIR = 1;
  1067. {$EXTERNALSYM DRIVE_NO_ROOT_DIR}
  1068. DRIVE_REMOVABLE = 2;
  1069. {$EXTERNALSYM DRIVE_REMOVABLE}
  1070. DRIVE_FIXED = 3;
  1071. {$EXTERNALSYM DRIVE_FIXED}
  1072. DRIVE_REMOTE = 4;
  1073. {$EXTERNALSYM DRIVE_REMOTE}
  1074. DRIVE_CDROM = 5;
  1075. {$EXTERNALSYM DRIVE_CDROM}
  1076. DRIVE_RAMDISK = 6;
  1077. {$EXTERNALSYM DRIVE_RAMDISK}
  1078. function GetFreeSpace(w: WORD): DWORD;
  1079. {$EXTERNALSYM GetFreeSpace}
  1080. const
  1081. FILE_TYPE_UNKNOWN = $0000;
  1082. {$EXTERNALSYM FILE_TYPE_UNKNOWN}
  1083. FILE_TYPE_DISK = $0001;
  1084. {$EXTERNALSYM FILE_TYPE_DISK}
  1085. FILE_TYPE_CHAR = $0002;
  1086. {$EXTERNALSYM FILE_TYPE_CHAR}
  1087. FILE_TYPE_PIPE = $0003;
  1088. {$EXTERNALSYM FILE_TYPE_PIPE}
  1089. FILE_TYPE_REMOTE = $8000;
  1090. {$EXTERNALSYM FILE_TYPE_REMOTE}
  1091. STD_INPUT_HANDLE = DWORD(-10);
  1092. {$EXTERNALSYM STD_INPUT_HANDLE}
  1093. STD_OUTPUT_HANDLE = DWORD(-11);
  1094. {$EXTERNALSYM STD_OUTPUT_HANDLE}
  1095. STD_ERROR_HANDLE = DWORD(-12);
  1096. {$EXTERNALSYM STD_ERROR_HANDLE}
  1097. NOPARITY = 0;
  1098. {$EXTERNALSYM NOPARITY}
  1099. ODDPARITY = 1;
  1100. {$EXTERNALSYM ODDPARITY}
  1101. EVENPARITY = 2;
  1102. {$EXTERNALSYM EVENPARITY}
  1103. MARKPARITY = 3;
  1104. {$EXTERNALSYM MARKPARITY}
  1105. SPACEPARITY = 4;
  1106. {$EXTERNALSYM SPACEPARITY}
  1107. ONESTOPBIT = 0;
  1108. {$EXTERNALSYM ONESTOPBIT}
  1109. ONE5STOPBITS = 1;
  1110. {$EXTERNALSYM ONE5STOPBITS}
  1111. TWOSTOPBITS = 2;
  1112. {$EXTERNALSYM TWOSTOPBITS}
  1113. IGNORE = 0; // Ignore signal
  1114. {$EXTERNALSYM IGNORE}
  1115. INFINITE = DWORD($FFFFFFFF); // Infinite timeout
  1116. {$EXTERNALSYM INFINITE}
  1117. //
  1118. // Baud rates at which the communication device operates
  1119. //
  1120. CBR_110 = 110;
  1121. {$EXTERNALSYM CBR_110}
  1122. CBR_300 = 300;
  1123. {$EXTERNALSYM CBR_300}
  1124. CBR_600 = 600;
  1125. {$EXTERNALSYM CBR_600}
  1126. CBR_1200 = 1200;
  1127. {$EXTERNALSYM CBR_1200}
  1128. CBR_2400 = 2400;
  1129. {$EXTERNALSYM CBR_2400}
  1130. CBR_4800 = 4800;
  1131. {$EXTERNALSYM CBR_4800}
  1132. CBR_9600 = 9600;
  1133. {$EXTERNALSYM CBR_9600}
  1134. CBR_14400 = 14400;
  1135. {$EXTERNALSYM CBR_14400}
  1136. CBR_19200 = 19200;
  1137. {$EXTERNALSYM CBR_19200}
  1138. CBR_38400 = 38400;
  1139. {$EXTERNALSYM CBR_38400}
  1140. CBR_56000 = 56000;
  1141. {$EXTERNALSYM CBR_56000}
  1142. CBR_57600 = 57600;
  1143. {$EXTERNALSYM CBR_57600}
  1144. CBR_115200 = 115200;
  1145. {$EXTERNALSYM CBR_115200}
  1146. CBR_128000 = 128000;
  1147. {$EXTERNALSYM CBR_128000}
  1148. CBR_256000 = 256000;
  1149. {$EXTERNALSYM CBR_256000}
  1150. //
  1151. // Error Flags
  1152. //
  1153. CE_RXOVER = $0001; // Receive Queue overflow
  1154. {$EXTERNALSYM CE_RXOVER}
  1155. CE_OVERRUN = $0002; // Receive Overrun Error
  1156. {$EXTERNALSYM CE_OVERRUN}
  1157. CE_RXPARITY = $0004; // Receive Parity Error
  1158. {$EXTERNALSYM CE_RXPARITY}
  1159. CE_FRAME = $0008; // Receive Framing error
  1160. {$EXTERNALSYM CE_FRAME}
  1161. CE_BREAK = $0010; // Break Detected
  1162. {$EXTERNALSYM CE_BREAK}
  1163. CE_TXFULL = $0100; // TX Queue is full
  1164. {$EXTERNALSYM CE_TXFULL}
  1165. CE_PTO = $0200; // LPTx Timeout
  1166. {$EXTERNALSYM CE_PTO}
  1167. CE_IOE = $0400; // LPTx I/O Error
  1168. {$EXTERNALSYM CE_IOE}
  1169. CE_DNS = $0800; // LPTx Device not selected
  1170. {$EXTERNALSYM CE_DNS}
  1171. CE_OOP = $1000; // LPTx Out-Of-Paper
  1172. {$EXTERNALSYM CE_OOP}
  1173. CE_MODE = $8000; // Requested mode unsupported
  1174. {$EXTERNALSYM CE_MODE}
  1175. IE_BADID = DWORD(-1); // Invalid or unsupported id
  1176. {$EXTERNALSYM IE_BADID}
  1177. IE_OPEN = DWORD(-2); // Device Already Open
  1178. {$EXTERNALSYM IE_OPEN}
  1179. IE_NOPEN = DWORD(-3); // Device Not Open
  1180. {$EXTERNALSYM IE_NOPEN}
  1181. IE_MEMORY = DWORD(-4); // Unable to allocate queues
  1182. {$EXTERNALSYM IE_MEMORY}
  1183. IE_DEFAULT = DWORD(-5); // Error in default parameters
  1184. {$EXTERNALSYM IE_DEFAULT}
  1185. IE_HARDWARE = DWORD(-10); // Hardware Not Present
  1186. {$EXTERNALSYM IE_HARDWARE}
  1187. IE_BYTESIZE = DWORD(-11); // Illegal Byte Size
  1188. {$EXTERNALSYM IE_BYTESIZE}
  1189. IE_BAUDRATE = DWORD(-12); // Unsupported BaudRate
  1190. {$EXTERNALSYM IE_BAUDRATE}
  1191. //
  1192. // Events
  1193. //
  1194. EV_RXCHAR = $0001; // Any Character received
  1195. {$EXTERNALSYM EV_RXCHAR}
  1196. EV_RXFLAG = $0002; // Received certain character
  1197. {$EXTERNALSYM EV_RXFLAG}
  1198. EV_TXEMPTY = $0004; // Transmitt Queue Empty
  1199. {$EXTERNALSYM EV_TXEMPTY}
  1200. EV_CTS = $0008; // CTS changed state
  1201. {$EXTERNALSYM EV_CTS}
  1202. EV_DSR = $0010; // DSR changed state
  1203. {$EXTERNALSYM EV_DSR}
  1204. EV_RLSD = $0020; // RLSD changed state
  1205. {$EXTERNALSYM EV_RLSD}
  1206. EV_BREAK = $0040; // BREAK received
  1207. {$EXTERNALSYM EV_BREAK}
  1208. EV_ERR = $0080; // Line status error occurred
  1209. {$EXTERNALSYM EV_ERR}
  1210. EV_RING = $0100; // Ring signal detected
  1211. {$EXTERNALSYM EV_RING}
  1212. EV_PERR = $0200; // Printer error occured
  1213. {$EXTERNALSYM EV_PERR}
  1214. EV_RX80FULL = $0400; // Receive buffer is 80 percent full
  1215. {$EXTERNALSYM EV_RX80FULL}
  1216. EV_EVENT1 = $0800; // Provider specific event 1
  1217. {$EXTERNALSYM EV_EVENT1}
  1218. EV_EVENT2 = $1000; // Provider specific event 2
  1219. {$EXTERNALSYM EV_EVENT2}
  1220. //
  1221. // Escape Functions
  1222. //
  1223. SETXOFF = 1; // Simulate XOFF received
  1224. {$EXTERNALSYM SETXOFF}
  1225. SETXON = 2; // Simulate XON received
  1226. {$EXTERNALSYM SETXON}
  1227. SETRTS = 3; // Set RTS high
  1228. {$EXTERNALSYM SETRTS}
  1229. CLRRTS = 4; // Set RTS low
  1230. {$EXTERNALSYM CLRRTS}
  1231. SETDTR = 5; // Set DTR high
  1232. {$EXTERNALSYM SETDTR}
  1233. CLRDTR = 6; // Set DTR low
  1234. {$EXTERNALSYM CLRDTR}
  1235. RESETDEV = 7; // Reset device if possible
  1236. {$EXTERNALSYM RESETDEV}
  1237. SETBREAK = 8; // Set the device break line.
  1238. {$EXTERNALSYM SETBREAK}
  1239. CLRBREAK = 9; // Clear the device break line.
  1240. {$EXTERNALSYM CLRBREAK}
  1241. //
  1242. // PURGE function flags.
  1243. //
  1244. PURGE_TXABORT = $0001; // Kill the pending/current writes to the comm port.
  1245. {$EXTERNALSYM PURGE_TXABORT}
  1246. PURGE_RXABORT = $0002; // Kill the pending/current reads to the comm port.
  1247. {$EXTERNALSYM PURGE_RXABORT}
  1248. PURGE_TXCLEAR = $0004; // Kill the transmit queue if there.
  1249. {$EXTERNALSYM PURGE_TXCLEAR}
  1250. PURGE_RXCLEAR = $0008; // Kill the typeahead buffer if there.
  1251. {$EXTERNALSYM PURGE_RXCLEAR}
  1252. LPTx = $80; // Set if ID is for LPT device
  1253. {$EXTERNALSYM LPTx}
  1254. //
  1255. // Modem Status Flags
  1256. //
  1257. MS_CTS_ON = DWORD($0010);
  1258. {$EXTERNALSYM MS_CTS_ON}
  1259. MS_DSR_ON = DWORD($0020);
  1260. {$EXTERNALSYM MS_DSR_ON}
  1261. MS_RING_ON = DWORD($0040);
  1262. {$EXTERNALSYM MS_RING_ON}
  1263. MS_RLSD_ON = DWORD($0080);
  1264. {$EXTERNALSYM MS_RLSD_ON}
  1265. //
  1266. // WaitSoundState() Constants
  1267. //
  1268. S_QUEUEEMPTY = 0;
  1269. {$EXTERNALSYM S_QUEUEEMPTY}
  1270. S_THRESHOLD = 1;
  1271. {$EXTERNALSYM S_THRESHOLD}
  1272. S_ALLTHRESHOLD = 2;
  1273. {$EXTERNALSYM S_ALLTHRESHOLD}
  1274. //
  1275. // Accent Modes
  1276. //
  1277. S_NORMAL = 0;
  1278. {$EXTERNALSYM S_NORMAL}
  1279. S_LEGATO = 1;
  1280. {$EXTERNALSYM S_LEGATO}
  1281. S_STACCATO = 2;
  1282. {$EXTERNALSYM S_STACCATO}
  1283. //
  1284. // SetSoundNoise() Sources
  1285. //
  1286. S_PERIOD512 = 0; // Freq = N/512 high pitch, less coarse hiss
  1287. {$EXTERNALSYM S_PERIOD512}
  1288. S_PERIOD1024 = 1; // Freq = N/1024
  1289. {$EXTERNALSYM S_PERIOD1024}
  1290. S_PERIOD2048 = 2; // Freq = N/2048 low pitch, more coarse hiss
  1291. {$EXTERNALSYM S_PERIOD2048}
  1292. S_PERIODVOICE = 3; // Source is frequency from voice channel (3)
  1293. {$EXTERNALSYM S_PERIODVOICE}
  1294. S_WHITE512 = 4; // Freq = N/512 high pitch, less coarse hiss
  1295. {$EXTERNALSYM S_WHITE512}
  1296. S_WHITE1024 = 5; // Freq = N/1024
  1297. {$EXTERNALSYM S_WHITE1024}
  1298. S_WHITE2048 = 6; // Freq = N/2048 low pitch, more coarse hiss
  1299. {$EXTERNALSYM S_WHITE2048}
  1300. S_WHITEVOICE = 7; // Source is frequency from voice channel (3)
  1301. {$EXTERNALSYM S_WHITEVOICE}
  1302. S_SERDVNA = DWORD(-1); // Device not available
  1303. {$EXTERNALSYM S_SERDVNA}
  1304. S_SEROFM = DWORD(-2); // Out of memory
  1305. {$EXTERNALSYM S_SEROFM}
  1306. S_SERMACT = DWORD(-3); // Music active
  1307. {$EXTERNALSYM S_SERMACT}
  1308. S_SERQFUL = DWORD(-4); // Queue full
  1309. {$EXTERNALSYM S_SERQFUL}
  1310. S_SERBDNT = DWORD(-5); // Invalid note
  1311. {$EXTERNALSYM S_SERBDNT}
  1312. S_SERDLN = DWORD(-6); // Invalid note length
  1313. {$EXTERNALSYM S_SERDLN}
  1314. S_SERDCC = DWORD(-7); // Invalid note count
  1315. {$EXTERNALSYM S_SERDCC}
  1316. S_SERDTP = DWORD(-8); // Invalid tempo
  1317. {$EXTERNALSYM S_SERDTP}
  1318. S_SERDVL = DWORD(-9); // Invalid volume
  1319. {$EXTERNALSYM S_SERDVL}
  1320. S_SERDMD = DWORD(-10); // Invalid mode
  1321. {$EXTERNALSYM S_SERDMD}
  1322. S_SERDSH = DWORD(-11); // Invalid shape
  1323. {$EXTERNALSYM S_SERDSH}
  1324. S_SERDPT = DWORD(-12); // Invalid pitch
  1325. {$EXTERNALSYM S_SERDPT}
  1326. S_SERDFQ = DWORD(-13); // Invalid frequency
  1327. {$EXTERNALSYM S_SERDFQ}
  1328. S_SERDDR = DWORD(-14); // Invalid duration
  1329. {$EXTERNALSYM S_SERDDR}
  1330. S_SERDSR = DWORD(-15); // Invalid source
  1331. {$EXTERNALSYM S_SERDSR}
  1332. S_SERDST = DWORD(-16); // Invalid state
  1333. {$EXTERNALSYM S_SERDST}
  1334. NMPWAIT_WAIT_FOREVER = DWORD($ffffffff);
  1335. {$EXTERNALSYM NMPWAIT_WAIT_FOREVER}
  1336. NMPWAIT_NOWAIT = $00000001;
  1337. {$EXTERNALSYM NMPWAIT_NOWAIT}
  1338. NMPWAIT_USE_DEFAULT_WAIT = $00000000;
  1339. {$EXTERNALSYM NMPWAIT_USE_DEFAULT_WAIT}
  1340. FS_CASE_IS_PRESERVED = FILE_CASE_PRESERVED_NAMES;
  1341. {$EXTERNALSYM FS_CASE_IS_PRESERVED}
  1342. FS_CASE_SENSITIVE = FILE_CASE_SENSITIVE_SEARCH;
  1343. {$EXTERNALSYM FS_CASE_SENSITIVE}
  1344. FS_UNICODE_STORED_ON_DISK = FILE_UNICODE_ON_DISK;
  1345. {$EXTERNALSYM FS_UNICODE_STORED_ON_DISK}
  1346. FS_PERSISTENT_ACLS = FILE_PERSISTENT_ACLS;
  1347. {$EXTERNALSYM FS_PERSISTENT_ACLS}
  1348. FS_VOL_IS_COMPRESSED = FILE_VOLUME_IS_COMPRESSED;
  1349. {$EXTERNALSYM FS_VOL_IS_COMPRESSED}
  1350. FS_FILE_COMPRESSION = FILE_FILE_COMPRESSION;
  1351. {$EXTERNALSYM FS_FILE_COMPRESSION}
  1352. FS_FILE_ENCRYPTION = FILE_SUPPORTS_ENCRYPTION;
  1353. {$EXTERNALSYM FS_FILE_ENCRYPTION}
  1354. FILE_MAP_COPY = SECTION_QUERY;
  1355. {$EXTERNALSYM FILE_MAP_COPY}
  1356. FILE_MAP_WRITE = SECTION_MAP_WRITE;
  1357. {$EXTERNALSYM FILE_MAP_WRITE}
  1358. FILE_MAP_READ = SECTION_MAP_READ;
  1359. {$EXTERNALSYM FILE_MAP_READ}
  1360. FILE_MAP_ALL_ACCESS = SECTION_ALL_ACCESS;
  1361. {$EXTERNALSYM FILE_MAP_ALL_ACCESS}
  1362. OF_READ = $00000000;
  1363. {$EXTERNALSYM OF_READ}
  1364. OF_WRITE = $00000001;
  1365. {$EXTERNALSYM OF_WRITE}
  1366. OF_READWRITE = $00000002;
  1367. {$EXTERNALSYM OF_READWRITE}
  1368. OF_SHARE_COMPAT = $00000000;
  1369. {$EXTERNALSYM OF_SHARE_COMPAT}
  1370. OF_SHARE_EXCLUSIVE = $00000010;
  1371. {$EXTERNALSYM OF_SHARE_EXCLUSIVE}
  1372. OF_SHARE_DENY_WRITE = $00000020;
  1373. {$EXTERNALSYM OF_SHARE_DENY_WRITE}
  1374. OF_SHARE_DENY_READ = $00000030;
  1375. {$EXTERNALSYM OF_SHARE_DENY_READ}
  1376. OF_SHARE_DENY_NONE = $00000040;
  1377. {$EXTERNALSYM OF_SHARE_DENY_NONE}
  1378. OF_PARSE = $00000100;
  1379. {$EXTERNALSYM OF_PARSE}
  1380. OF_DELETE = $00000200;
  1381. {$EXTERNALSYM OF_DELETE}
  1382. OF_VERIFY = $00000400;
  1383. {$EXTERNALSYM OF_VERIFY}
  1384. OF_CANCEL = $00000800;
  1385. {$EXTERNALSYM OF_CANCEL}
  1386. OF_CREATE = $00001000;
  1387. {$EXTERNALSYM OF_CREATE}
  1388. OF_PROMPT = $00002000;
  1389. {$EXTERNALSYM OF_PROMPT}
  1390. OF_EXIST = $00004000;
  1391. {$EXTERNALSYM OF_EXIST}
  1392. OF_REOPEN = $00008000;
  1393. {$EXTERNALSYM OF_REOPEN}
  1394. OFS_MAXPATHNAME = 128;
  1395. {$EXTERNALSYM OFS_MAXPATHNAME}
  1396. type
  1397. LPOFSTRUCT = ^OFSTRUCT;
  1398. {$EXTERNALSYM LPOFSTRUCT}
  1399. _OFSTRUCT = record
  1400. cBytes: Byte;
  1401. fFixedDisk: Byte;
  1402. nErrCode: Word;
  1403. Reserved1: Word;
  1404. Reserved2: Word;
  1405. szPathName: array [0..OFS_MAXPATHNAME - 1] of CHAR;
  1406. end;
  1407. {$EXTERNALSYM _OFSTRUCT}
  1408. OFSTRUCT = _OFSTRUCT;
  1409. {$EXTERNALSYM OFSTRUCT}
  1410. TOfStruct = OFSTRUCT;
  1411. POfStruct = LPOFSTRUCT;
  1412. // 64 bit interlocked functions, donated by Will DeWitt Jr.
  1413. function InterlockedCompareExchange64(var Destination: LONGLONG; Exchange, Comperand: LONGLONG): LONGLONG; stdcall;
  1414. {$EXTERNALSYM InterlockedCompareExchange64}
  1415. function InterlockedAnd64(var Destination: LONGLONG; Value: LONGLONG): LONGLONG;
  1416. {$EXTERNALSYM InterlockedAnd64}
  1417. function InterlockedOr64(var Destination: LONGLONG; Value: LONGLONG): LONGLONG;
  1418. {$EXTERNALSYM InterlockedOr64}
  1419. function InterlockedXor64(var Destination: LONGLONG; Value: LONGLONG): LONGLONG;
  1420. {$EXTERNALSYM InterlockedXor64}
  1421. function InterlockedIncrement64(var Addend: LONGLONG): LONGLONG;
  1422. {$EXTERNALSYM InterlockedIncrement64}
  1423. function InterlockedDecrement64(var Addend: LONGLONG): LONGLONG;
  1424. {$EXTERNALSYM InterlockedDecrement}
  1425. function InterlockedExchange64(var Target: LONGLONG; Value: LONGLONG): LONGLONG;
  1426. {$EXTERNALSYM InterlockedExchange64}
  1427. function InterlockedExchangeAdd64(var Addend: LONGLONG; Value: LONGLONG): LONGLONG;
  1428. {$EXTERNALSYM InterlockedExchangeAdd64}
  1429. //
  1430. // The Risc compilers support intrinsic functions for interlocked
  1431. // increment, decrement, and exchange.
  1432. //
  1433. function InterlockedIncrement(var lpAddend: LONG): LONG; stdcall;
  1434. {$EXTERNALSYM InterlockedIncrement}
  1435. function InterlockedDecrement(var lpAddend: LONG): LONG; stdcall;
  1436. {$EXTERNALSYM InterlockedDecrement}
  1437. function InterlockedExchange(var Target: LONG; Value: LONG): LONG; stdcall;
  1438. {$EXTERNALSYM InterlockedExchange}
  1439. function InterlockedExchangePointer(var Target: PVOID; Value: PVOID): PVOID;
  1440. {$EXTERNALSYM InterlockedExchangePointer}
  1441. function InterlockedExchangeAdd(var Addend: LONG; Value: LONG): LONG; stdcall;
  1442. {$EXTERNALSYM InterlockedExchangeAdd}
  1443. function InterlockedCompareExchange(var Destination: LONG; Exchange: LONG;
  1444. Comperand: LONG): LONG; stdcall;
  1445. {$EXTERNALSYM InterlockedCompareExchange}
  1446. function InterlockedCompareExchangePointer(var Destination: PVOID;
  1447. Exchange, Comperand: PVOID): PVOID;
  1448. {$EXTERNALSYM InterlockedCompareExchangePointer}
  1449. {
  1450. #define InterlockedIncrementAcquire InterlockedIncrement
  1451. #define InterlockedIncrementRelease InterlockedIncrement
  1452. #define InterlockedDecrementAcquire InterlockedDecrement
  1453. #define InterlockedDecrementRelease InterlockedDecrement
  1454. #define InterlockedIncrementAcquire InterlockedIncrement
  1455. #define InterlockedIncrementRelease InterlockedIncrement
  1456. #define InterlockedCompareExchangeAcquire InterlockedCompareExchange
  1457. #define InterlockedCompareExchangeRelease InterlockedCompareExchange
  1458. #define InterlockedCompareExchangeAcquire64 InterlockedCompareExchange64
  1459. #define InterlockedCompareExchangeRelease64 InterlockedCompareExchange64
  1460. }
  1461. procedure InitializeSListHead(ListHead: PSLIST_HEADER); stdcall;
  1462. {$EXTERNALSYM InitializeSListHead}
  1463. function InterlockedPopEntrySList(ListHead: PSLIST_HEADER): PSLIST_ENTRY; stdcall;
  1464. {$EXTERNALSYM InterlockedPopEntrySList}
  1465. function InterlockedPushEntrySList(ListHead: PSLIST_HEADER; ListEntry: PSLIST_ENTRY): PSLIST_ENTRY; stdcall;
  1466. {$EXTERNALSYM InterlockedPushEntrySList}
  1467. function InterlockedFlushSList(ListHead: PSLIST_HEADER): PSLIST_ENTRY; stdcall;
  1468. {$EXTERNALSYM InterlockedFlushSList}
  1469. function QueryDepthSList(ListHead: PSLIST_HEADER): USHORT; stdcall;
  1470. {$EXTERNALSYM QueryDepthSList}
  1471. function FreeResource(hResData: HGLOBAL): BOOL; stdcall;
  1472. {$EXTERNALSYM FreeResource}
  1473. function LockResource(hResData: HGLOBAL): LPVOID; stdcall;
  1474. {$EXTERNALSYM LockResource}
  1475. function UnlockResource(hResData: HANDLE): BOOL;
  1476. {$EXTERNALSYM UnlockResource}
  1477. const
  1478. MAXINTATOM = $C000;
  1479. {$EXTERNALSYM MAXINTATOM}
  1480. INVALID_ATOM = ATOM(0);
  1481. {$EXTERNALSYM INVALID_ATOM}
  1482. type
  1483. MAKEINTATOMA = PAnsiChar;
  1484. MAKEINTATOMW = PWideChar;
  1485. {$IFDEF UNICODE}
  1486. MAKEINTATOM = MAKEINTATOMW;
  1487. {$EXTERNALSYM MAKEINTATOM}
  1488. {$ELSE}
  1489. MAKEINTATOM = MAKEINTATOMA;
  1490. {$EXTERNALSYM MAKEINTATOM}
  1491. {$ENDIF UNICODE}
  1492. function FreeLibrary(hLibModule: HMODULE): BOOL; stdcall;
  1493. {$EXTERNALSYM FreeLibrary}
  1494. procedure FreeLibraryAndExitThread(hLibModule: HMODULE; dwExitCode: DWORD); stdcall;
  1495. {$EXTERNALSYM FreeLibraryAndExitThread}
  1496. function DisableThreadLibraryCalls(hLibModule: HMODULE): BOOL; stdcall;
  1497. {$EXTERNALSYM DisableThreadLibraryCalls}
  1498. function GetProcAddress(hModule: HMODULE; lpProcName: LPCSTR): FARPROC; stdcall;
  1499. {$EXTERNALSYM GetProcAddress}
  1500. function GetVersion: DWORD; stdcall;
  1501. {$EXTERNALSYM GetVersion)}
  1502. function GlobalAlloc(uFlags: UINT; dwBytes: SIZE_T): HGLOBAL; stdcall;
  1503. {$EXTERNALSYM GlobalAlloc}
  1504. function GlobalReAlloc(hMem: HGLOBAL; dwBytes: SIZE_T; uFlags: UINT): HGLOBAL; stdcall;
  1505. {$EXTERNALSYM GlobalReAlloc}
  1506. function GlobalSize(hMem: HGLOBAL): SIZE_T; stdcall;
  1507. {$EXTERNALSYM GlobalSize}
  1508. function GlobalFlags(hMem: HGLOBAL): UINT; stdcall;
  1509. {$EXTERNALSYM GlobalFlags}
  1510. function GlobalLock(hMem: HGLOBAL): LPVOID; stdcall;
  1511. {$EXTERNALSYM GlobalLock}
  1512. //!!!MWH My version win31 = DWORD WINAPI GlobalHandle(UINT)
  1513. function GlobalHandle(pMem: LPCVOID): HGLOBAL; stdcall;
  1514. {$EXTERNALSYM GlobalHandle}
  1515. function GlobalUnlock(hMem: HGLOBAL): BOOL; stdcall;
  1516. {$EXTERNALSYM GlobalUnlock}
  1517. function GlobalFree(hMem: HGLOBAL): HGLOBAL; stdcall;
  1518. {$EXTERNALSYM GlobalFree}
  1519. function GlobalCompact(dwMinFree: DWORD): SIZE_T; stdcall;
  1520. {$EXTERNALSYM GlobalCompact}
  1521. procedure GlobalFix(hMem: HGLOBAL); stdcall;
  1522. {$EXTERNALSYM GlobalFix}
  1523. procedure GlobalUnfix(hMem: HGLOBAL); stdcall;
  1524. {$EXTERNALSYM GlobalUnfix}
  1525. function GlobalWire(hMem: HGLOBAL): LPVOID; stdcall;
  1526. {$EXTERNALSYM GlobalWire}
  1527. function GlobalUnWire(hMem: HGLOBAL): BOOL; stdcall;
  1528. {$EXTERNALSYM GlobalUnWire}
  1529. procedure GlobalMemoryStatus(var lpBuffer: MEMORYSTATUS); stdcall;
  1530. {$EXTERNALSYM GlobalMemoryStatus}
  1531. type
  1532. LPMEMORYSTATUSEX = ^MEMORYSTATUSEX;
  1533. {$EXTERNALSYM LPMEMORYSTATUSEX}
  1534. _MEMORYSTATUSEX = record
  1535. dwLength: DWORD;
  1536. dwMemoryLoad: DWORD;
  1537. ullTotalPhys: DWORDLONG;
  1538. ullAvailPhys: DWORDLONG;
  1539. ullTotalPageFile: DWORDLONG;
  1540. ullAvailPageFile: DWORDLONG;
  1541. ullTotalVirtual: DWORDLONG;
  1542. ullAvailVirtual: DWORDLONG;
  1543. ullAvailExtendedVirtual: DWORDLONG;
  1544. end;
  1545. {$EXTERNALSYM _MEMORYSTATUSEX}
  1546. MEMORYSTATUSEX = _MEMORYSTATUSEX;
  1547. {$EXTERNALSYM MEMORYSTATUSEX}
  1548. TMemoryStatusEx = MEMORYSTATUSEX;
  1549. PMemoryStatusEx = LPMEMORYSTATUSEX;
  1550. function GlobalMemoryStatusEx(var lpBuffer: MEMORYSTATUSEX): BOOL; stdcall;
  1551. {$EXTERNALSYM GlobalMemoryStatusEx}
  1552. function LocalAlloc(uFlags: UINT; uBytes: SIZE_T): HLOCAL; stdcall;
  1553. {$EXTERNALSYM LocalAlloc}
  1554. function LocalReAlloc(hMem: HLOCAL; uBytes: SIZE_T; uFlags: UINT): HLOCAL; stdcall;
  1555. {$EXTERNALSYM LocalReAlloc}
  1556. function LocalLock(hMem: HLOCAL): LPVOID; stdcall;
  1557. {$EXTERNALSYM LocalLock}
  1558. function LocalHandle(pMem: LPCVOID): HLOCAL; stdcall;
  1559. {$EXTERNALSYM LocalHandle}
  1560. function LocalUnlock(hMem: HLOCAL): BOOL; stdcall;
  1561. {$EXTERNALSYM LocalUnlock}
  1562. function LocalSize(hMem: HLOCAL): SIZE_T; stdcall;
  1563. {$EXTERNALSYM LocalSize}
  1564. function LocalFlags(hMem: HLOCAL): UINT; stdcall;
  1565. {$EXTERNALSYM LocalFlags}
  1566. function LocalFree(hMem: HLOCAL): HLOCAL; stdcall;
  1567. {$EXTERNALSYM LocalFree}
  1568. function LocalShrink(hMem: HLOCAL; cbNewSize: UINT): SIZE_T; stdcall;
  1569. {$EXTERNALSYM LocalShrink}
  1570. function LocalCompact(uMinFree: UINT): SIZE_T; stdcall;
  1571. {$EXTERNALSYM LocalCompact}
  1572. function FlushInstructionCache(hProcess: HANDLE; lpBaseAddress: LPCVOID;
  1573. dwSize: DWORD): BOOL; stdcall;
  1574. {$EXTERNALSYM FlushInstructionCache}
  1575. function VirtualAlloc(lpAddress: LPVOID; dwSize: SIZE_T; flAllocationType: DWORD;
  1576. flProtect: DWORD): LPVOID; stdcall;
  1577. {$EXTERNALSYM VirtualAlloc}
  1578. function VirtualFree(lpAddress: LPVOID; dwSize: SIZE_T; dwFreeType: DWORD): BOOL; stdcall;
  1579. {$EXTERNALSYM VirtualFree}
  1580. function VirtualProtect(lpAddress: LPVOID; dwSize: SIZE_T; flNewProtect: DWORD;
  1581. lpflOldProtect: PDWORD): BOOL; stdcall;
  1582. {$EXTERNALSYM VirtualProtect}
  1583. function VirtualQuery(lpAddress: LPCVOID; var lpBuffer: MEMORY_BASIC_INFORMATION;
  1584. dwLength: DWORD): DWORD; stdcall;
  1585. {$EXTERNALSYM VirtualQuery}
  1586. function VirtualAllocEx(hProcess: HANDLE; lpAddress: LPVOID; dwSize: SIZE_T;
  1587. flAllocationType: DWORD; flProtect: DWORD): LPVOID; stdcall;
  1588. {$EXTERNALSYM VirtualAllocEx}
  1589. function GetWriteWatch(dwFlags: DWORD; lpBaseAddress: PVOID;
  1590. dwRegionSize: SIZE_T; var lpAddresses: PVOID; var lpdwCount: ULONG_PTR;
  1591. var lpdwGranularity: ULONG): UINT; stdcall;
  1592. {$EXTERNALSYM GetWriteWatch}
  1593. function ResetWriteWatch(lpBaseAddress: LPVOID; dwRegionSize: SIZE_T): UINT; stdcall;
  1594. {$EXTERNALSYM ResetWriteWatch}
  1595. function GetLargePageMinimum: SIZE_T; stdcall;
  1596. {$EXTERNALSYM GetLargePageMinimum}
  1597. function VirtualFreeEx(hProcess: HANDLE; lpAddress: LPVOID; dwSize: SIZE_T;
  1598. dwFreeType: DWORD): BOOL; stdcall;
  1599. {$EXTERNALSYM VirtualFreeEx}
  1600. function VirtualProtectEx(hProcess: HANDLE; lpAddress: LPVOID; dwSize: SIZE_T;
  1601. flNewProtect: DWORD; lpflOldProtect: PDWORD): BOOL; stdcall;
  1602. {$EXTERNALSYM VirtualProtectEx}
  1603. function VirtualQueryEx(hProcess: HANDLE; lpAddress: LPCVOID;
  1604. var lpBuffer: MEMORY_BASIC_INFORMATION; dwLength: DWORD): DWORD; stdcall;
  1605. {$EXTERNALSYM VirtualQueryEx}
  1606. function HeapCreate(flOptions: DWORD; dwInitialSize: SIZE_T;
  1607. dwMaximumSize: SIZE_T): HANDLE; stdcall;
  1608. {$EXTERNALSYM HeapCreate}
  1609. function HeapDestroy(hHeap: HANDLE): BOOL; stdcall;
  1610. {$EXTERNALSYM HeapDestroy}
  1611. function HeapAlloc(hHeap: HANDLE; dwFlags: DWORD; dwBytes: SIZE_T): LPVOID; stdcall;
  1612. {$EXTERNALSYM HeapAlloc}
  1613. function HeapReAlloc(hHeap: HANDLE; dwFlags: DWORD; lpMem: LPVOID; dwBytes: SIZE_T): LPVOID; stdcall;
  1614. {$EXTERNALSYM HeapReAlloc}
  1615. function HeapFree(hHeap: HANDLE; dwFlags: DWORD; lpMem: LPVOID): BOOL; stdcall;
  1616. {$EXTERNALSYM HeapFree}
  1617. function HeapSize(hHeap: HANDLE; dwFlags: DWORD; lpMem: LPCVOID): SIZE_T; stdcall;
  1618. {$EXTERNALSYM HeapSize}
  1619. function HeapValidate(hHeap: HANDLE; dwFlags: DWORD; lpMem: LPCVOID): BOOL; stdcall;
  1620. {$EXTERNALSYM HeapValidate}
  1621. function HeapCompact(hHeap: HANDLE; dwFlags: DWORD): SIZE_T; stdcall;
  1622. {$EXTERNALSYM HeapCompact}
  1623. function GetProcessHeap: HANDLE; stdcall;
  1624. {$EXTERNALSYM GetProcessHeap)}
  1625. function GetProcessHeaps(NumberOfHeaps: DWORD; var ProcessHeaps: HANDLE): DWORD; stdcall;
  1626. {$EXTERNALSYM GetProcessHeaps}
  1627. type
  1628. PPROCESS_HEAP_ENTRY = ^PROCESS_HEAP_ENTRY;
  1629. {$EXTERNALSYM PPROCESS_HEAP_ENTRY}
  1630. _PROCESS_HEAP_ENTRY = record
  1631. lpData: PVOID;
  1632. cbData: DWORD;
  1633. cbOverhead: BYTE;
  1634. iRegionIndex: BYTE;
  1635. wFlags: WORD;
  1636. case Integer of
  1637. 0: (
  1638. hMem: HANDLE;
  1639. dwReserved: array [0..2] of DWORD);
  1640. 1: (
  1641. dwComittedSize: DWORD;
  1642. dwUnComittedSize: DWORD;
  1643. lpFirstBlock: LPVOID;
  1644. lpLastBlock: LPVOID);
  1645. end;
  1646. {$EXTERNALSYM _PROCESS_HEAP_ENTRY}
  1647. PROCESS_HEAP_ENTRY = _PROCESS_HEAP_ENTRY;
  1648. {$EXTERNALSYM PROCESS_HEAP_ENTRY}
  1649. LPPROCESS_HEAP_ENTRY = ^PROCESS_HEAP_ENTRY;
  1650. {$EXTERNALSYM LPPROCESS_HEAP_ENTRY}
  1651. TProcessHeapEntry = PROCESS_HEAP_ENTRY;
  1652. PProcessHeapEntry = PPROCESS_HEAP_ENTRY;
  1653. const
  1654. PROCESS_HEAP_REGION = $0001;
  1655. {$EXTERNALSYM PROCESS_HEAP_REGION}
  1656. PROCESS_HEAP_UNCOMMITTED_RANGE = $0002;
  1657. {$EXTERNALSYM PROCESS_HEAP_UNCOMMITTED_RANGE}
  1658. PROCESS_HEAP_ENTRY_BUSY = $0004;
  1659. {$EXTERNALSYM PROCESS_HEAP_ENTRY_BUSY}
  1660. PROCESS_HEAP_ENTRY_MOVEABLE = $0010;
  1661. {$EXTERNALSYM PROCESS_HEAP_ENTRY_MOVEABLE}
  1662. PROCESS_HEAP_ENTRY_DDESHARE = $0020;
  1663. {$EXTERNALSYM PROCESS_HEAP_ENTRY_DDESHARE}
  1664. function HeapLock(hHeap: HANDLE): BOOL; stdcall;
  1665. {$EXTERNALSYM HeapLock}
  1666. function HeapUnlock(hHeap: HANDLE): BOOL; stdcall;
  1667. {$EXTERNALSYM HeapUnlock}
  1668. function HeapWalk(hHeap: HANDLE; var lpEntry: PROCESS_HEAP_ENTRY): BOOL; stdcall;
  1669. {$EXTERNALSYM HeapWalk}
  1670. function HeapSetInformation(HeapHandle: HANDLE; HeapInformationClass: HEAP_INFORMATION_CLASS;
  1671. HeapInformation: PVOID; HeapInformationLength: SIZE_T): BOOL; stdcall;
  1672. {$EXTERNALSYM HeapSetInformation}
  1673. function HeapQueryInformation(HeapHandle: HANDLE; HeapInformationClass: HEAP_INFORMATION_CLASS;
  1674. HeapInformation: PVOID; HeapInformationLength: SIZE_T; ReturnLength: PSIZE_T): BOOL; stdcall;
  1675. {$EXTERNALSYM HeapQueryInformation}
  1676. // GetBinaryType return values.
  1677. const
  1678. SCS_32BIT_BINARY = 0;
  1679. {$EXTERNALSYM SCS_32BIT_BINARY}
  1680. SCS_DOS_BINARY = 1;
  1681. {$EXTERNALSYM SCS_DOS_BINARY}
  1682. SCS_WOW_BINARY = 2;
  1683. {$EXTERNALSYM SCS_WOW_BINARY}
  1684. SCS_PIF_BINARY = 3;
  1685. {$EXTERNALSYM SCS_PIF_BINARY}
  1686. SCS_POSIX_BINARY = 4;
  1687. {$EXTERNALSYM SCS_POSIX_BINARY}
  1688. SCS_OS216_BINARY = 5;
  1689. {$EXTERNALSYM SCS_OS216_BINARY}
  1690. SCS_64BIT_BINARY = 6;
  1691. {$EXTERNALSYM SCS_64BIT_BINARY}
  1692. SCS_THIS_PLATFORM_BINARY = SCS_32BIT_BINARY;
  1693. {$EXTERNALSYM SCS_THIS_PLATFORM_BINARY}
  1694. function GetBinaryTypeA(lpApplicationName: LPCSTR; var lpBinaryType: DWORD): BOOL; stdcall;
  1695. {$EXTERNALSYM GetBinaryTypeA}
  1696. function GetBinaryTypeW(lpApplicationName: LPCWSTR; var lpBinaryType: DWORD): BOOL; stdcall;
  1697. {$EXTERNALSYM GetBinaryTypeW}
  1698. function GetBinaryType(lpApplicationName: LPCTSTR; var lpBinaryType: DWORD): BOOL; stdcall;
  1699. {$EXTERNALSYM GetBinaryType}
  1700. function GetShortPathNameA(lpszLongPath: LPCSTR; lpszShortPath: LPSTR;
  1701. cchBuffer: DWORD): DWORD; stdcall;
  1702. {$EXTERNALSYM GetShortPathNameA}
  1703. function GetShortPathNameW(lpszLongPath: LPCWSTR; lpszShortPath: LPWSTR;
  1704. cchBuffer: DWORD): DWORD; stdcall;
  1705. {$EXTERNALSYM GetShortPathNameW}
  1706. function GetShortPathName(lpszLongPath: LPCTSTR; lpszShortPath: LPTSTR;
  1707. cchBuffer: DWORD): DWORD; stdcall;
  1708. {$EXTERNALSYM GetShortPathName}
  1709. function GetLongPathNameA(lpszShortPath: LPCSTR; lpszLongPath: LPSTR;
  1710. cchBuffer: DWORD): DWORD; stdcall;
  1711. {$EXTERNALSYM GetLongPathNameA}
  1712. function GetLongPathNameW(lpszShortPath: LPCWSTR; lpszLongPath: LPWSTR;
  1713. cchBuffer: DWORD): DWORD; stdcall;
  1714. {$EXTERNALSYM GetLongPathNameW}
  1715. function GetLongPathName(lpszShortPath: LPCTSTR; lpszLongPath: LPTSTR;
  1716. cchBuffer: DWORD): DWORD; stdcall;
  1717. {$EXTERNALSYM GetLongPathName}
  1718. function GetProcessAffinityMask(hProcess: HANDLE;
  1719. var lpProcessAffinityMask, lpSystemAffinityMask: DWORD_PTR): BOOL; stdcall;
  1720. {$EXTERNALSYM GetProcessAffinityMask}
  1721. function SetProcessAffinityMask(hProcess: HANDLE;
  1722. dwProcessAffinityMask: DWORD_PTR): BOOL; stdcall;
  1723. {$EXTERNALSYM SetProcessAffinityMask}
  1724. function GetProcessHandleCount(hProcess: HANDLE; out pdwHandleCount: DWORD): BOOL; stdcall;
  1725. {$EXTERNALSYM GetProcessHandleCount}
  1726. function GetProcessTimes(hProcess: HANDLE; var lpCreationTime, lpExitTime,
  1727. lpKernelTime, lpUserTime: FILETIME): BOOL; stdcall;
  1728. {$EXTERNALSYM GetProcessTimes}
  1729. function GetProcessIoCounters(hProcess: HANDLE; var lpIoCounters: IO_COUNTERS): BOOL; stdcall;
  1730. {$EXTERNALSYM GetProcessIoCounters}
  1731. function GetProcessWorkingSetSize(hProcess: HANDLE;
  1732. var lpMinimumWorkingSetSize, lpMaximumWorkingSetSize: SIZE_T): BOOL; stdcall;
  1733. {$EXTERNALSYM GetProcessWorkingSetSize}
  1734. function GetProcessWorkingSetSizeEx(hProcess: HANDLE; out lpMinimumWorkingSetSize, lpMaximumWorkingSetSize: SIZE_T; out Flags: DWORD): BOOL; stdcall;
  1735. {$EXTERNALSYM GetProcessWorkingSetSizeEx}
  1736. function SetProcessWorkingSetSize(hProcess: HANDLE; dwMinimumWorkingSetSize,
  1737. dwMaximumWorkingSetSize: SIZE_T): BOOL; stdcall;
  1738. {$EXTERNALSYM SetProcessWorkingSetSize}
  1739. function SetProcessWorkingSetSizeEx(hProcess: HANDLE; dwMinimumWorkingSetSize, dwMaximumWorkingSetSize: SIZE_T; Flags: DWORD): BOOL; stdcall;
  1740. {$EXTERNALSYM SetProcessWorkingSetSizeEx}
  1741. function OpenProcess(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
  1742. dwProcessId: DWORD): HANDLE; stdcall;
  1743. {$EXTERNALSYM OpenProcess}
  1744. function GetCurrentProcess: HANDLE; stdcall;
  1745. {$EXTERNALSYM GetCurrentProcess}
  1746. function GetCurrentProcessId: DWORD; stdcall;
  1747. {$EXTERNALSYM GetCurrentProcessId}
  1748. procedure ExitProcess(uExitCode: UINT); stdcall;
  1749. {$EXTERNALSYM ExitProcess}
  1750. function TerminateProcess(hProcess: HANDLE; uExitCode: UINT): BOOL; stdcall;
  1751. {$EXTERNALSYM TerminateProcess}
  1752. function GetExitCodeProcess(hProcess: HANDLE; var lpExitCode: DWORD): BOOL; stdcall;
  1753. {$EXTERNALSYM GetExitCodeProcess}
  1754. procedure FatalExit(ExitCode: Integer); stdcall;
  1755. {$EXTERNALSYM FatalExit}
  1756. function GetEnvironmentStringsW: LPWSTR; stdcall;
  1757. {$EXTERNALSYM GetEnvironmentStringsW}
  1758. function GetEnvironmentStrings: LPSTR; stdcall;
  1759. {$EXTERNALSYM GetEnvironmentStrings}
  1760. {$IFNDEF UNICODE}
  1761. function GetEnvironmentStringsA: LPSTR; stdcall;
  1762. {$EXTERNALSYM GetEnvironmentStringsA}
  1763. {$ENDIF !UNICODE}
  1764. function SetEnvironmentStringsA(NewEnvironment: LPSTR): BOOL; stdcall;
  1765. {$EXTERNALSYM SetEnvironmentStringsA}
  1766. function SetEnvironmentStringsW(NewEnvironment: LPWSTR): BOOL; stdcall;
  1767. {$EXTERNALSYM SetEnvironmentStringsW}
  1768. function SetEnvironmentStrings(NewEnvironment: LPTSTR): BOOL; stdcall;
  1769. {$EXTERNALSYM SetEnvironmentStrings}
  1770. function FreeEnvironmentStringsA(pstr: LPSTR): BOOL; stdcall;
  1771. {$EXTERNALSYM FreeEnvironmentStringsA}
  1772. function FreeEnvironmentStringsW(pstr: LPWSTR): BOOL; stdcall;
  1773. {$EXTERNALSYM FreeEnvironmentStringsW}
  1774. function FreeEnvironmentStrings(pstr: LPTSTR): BOOL; stdcall;
  1775. {$EXTERNALSYM FreeEnvironmentStrings}
  1776. procedure RaiseException(dwExceptionCode: DWORD; dwExceptionFlags: DWORD;
  1777. nNumberOfArguments: DWORD; lpArguments: PULONG_PTR); stdcall;
  1778. {$EXTERNALSYM RaiseException}
  1779. function UnhandledExceptionFilter(ExceptionInfo: PEXCEPTION_POINTERS): LONG; stdcall;
  1780. {$EXTERNALSYM UnhandledExceptionFilter}
  1781. type
  1782. PTOP_LEVEL_EXCEPTION_FILTER = function(ExceptionInfo: PEXCEPTION_POINTERS): LONG; stdcall;
  1783. {$EXTERNALSYM PTOP_LEVEL_EXCEPTION_FILTER}
  1784. LPTOP_LEVEL_EXCEPTION_FILTER = PTOP_LEVEL_EXCEPTION_FILTER;
  1785. {$EXTERNALSYM LPTOP_LEVEL_EXCEPTION_FILTER}
  1786. TTopLevelExceptionFilter = PTOP_LEVEL_EXCEPTION_FILTER;
  1787. function SetUnhandledExceptionFilter(lpTopLevelExceptionFilter: LPTOP_LEVEL_EXCEPTION_FILTER): LPTOP_LEVEL_EXCEPTION_FILTER; stdcall;
  1788. {$EXTERNALSYM SetUnhandledExceptionFilter}
  1789. //
  1790. // Fiber creation flags
  1791. //
  1792. const
  1793. FIBER_FLAG_FLOAT_SWITCH = $1; // context switch floating point
  1794. {$EXTERNALSYM FIBER_FLAG_FLOAT_SWITCH}
  1795. function CreateFiber(dwStackSize: DWORD; lpStartAddress: LPFIBER_START_ROUTINE;
  1796. lpParameter: LPVOID): LPVOID; stdcall;
  1797. {$EXTERNALSYM CreateFiber}
  1798. function CreateFiberEx(dwStackCommitSize, dwStackReserveSize: SIZE_T; dwFlags: DWORD;
  1799. lpStartAddress: LPFIBER_START_ROUTINE; lpParameter: LPVOID): LPVOID; stdcall;
  1800. {$EXTERNALSYM CreateFiberEx}
  1801. procedure DeleteFiber(lpFiber: LPVOID); stdcall;
  1802. {$EXTERNALSYM DeleteFiber}
  1803. function ConvertThreadToFiber(lpParameter: LPVOID): LPVOID; stdcall;
  1804. {$EXTERNALSYM ConvertThreadToFiber}
  1805. function ConvertThreadToFiberEx(lpParameter: LPVOID; dwFlags: DWORD): LPVOID; stdcall;
  1806. {$EXTERNALSYM ConvertThreadToFiberEx}
  1807. function ConvertFiberToThread: BOOL; stdcall;
  1808. {$EXTERNALSYM ConvertFiberToThread}
  1809. procedure SwitchToFiber(lpFiber: LPVOID); stdcall;
  1810. {$EXTERNALSYM SwitchToFiber}
  1811. function SwitchToThread: BOOL; stdcall;
  1812. {$EXTERNALSYM SwitchToThread}
  1813. function CreateThread(lpThreadAttributes: LPSECURITY_ATTRIBUTES;
  1814. dwStackSize: DWORD; lpStartAddress: LPTHREAD_START_ROUTINE; lpParameter: LPVOID;
  1815. dwCreationFlags: DWORD; lpThreadId: LPDWORD): HANDLE; stdcall;
  1816. {$EXTERNALSYM CreateThread}
  1817. function CreateRemoteThread(hProcess: HANDLE;
  1818. lpThreadAttributes: LPSECURITY_ATTRIBUTES; dwStackSize: DWORD;
  1819. lpStartAddress: LPTHREAD_START_ROUTINE; lpParameter: LPVOID;
  1820. dwCreationFlags: DWORD; lpThreadId: LPDWORD): HANDLE; stdcall;
  1821. {$EXTERNALSYM CreateRemoteThread}
  1822. function GetCurrentThread: HANDLE; stdcall;
  1823. {$EXTERNALSYM GetCurrentThread}
  1824. function GetCurrentThreadId: DWORD; stdcall;
  1825. {$EXTERNALSYM GetCurrentThreadId}
  1826. function GetProcessIdOfThread(Thread: HANDLE): DWORD; stdcall;
  1827. {$EXTERNALSYM GetProcessIdOfThread}
  1828. function GetThreadId(Thread: HANDLE): DWORD; stdcall;
  1829. {$EXTERNALSYM GetThreadId}
  1830. function GetProcessId(Process: HANDLE): DWORD; stdcall;
  1831. {$EXTERNALSYM GetProcessId}
  1832. function GetCurrentProcessorNumber: DWORD; stdcall;
  1833. {$EXTERNALSYM GetCurrentProcessorNumber}
  1834. function SetThreadAffinityMask(hThread: HANDLE;
  1835. dwThreadAffinityMask: DWORD_PTR): DWORD_PTR; stdcall;
  1836. {$EXTERNALSYM SetThreadAffinityMask}
  1837. function SetThreadIdealProcessor(hThread: HANDLE; dwIdealProcessor: DWORD): DWORD; stdcall;
  1838. {$EXTERNALSYM SetThreadIdealProcessor}
  1839. function SetProcessPriorityBoost(hProcess: HANDLE;
  1840. bDisablePriorityBoost: BOOL): BOOL; stdcall;
  1841. {$EXTERNALSYM SetProcessPriorityBoost}
  1842. function GetProcessPriorityBoost(hProcess: HANDLE;
  1843. var pDisablePriorityBoost: BOOL): BOOL; stdcall;
  1844. {$EXTERNALSYM GetProcessPriorityBoost}
  1845. function RequestWakeupLatency(latency: LATENCY_TIME): BOOL; stdcall;
  1846. {$EXTERNALSYM RequestWakeupLatency}
  1847. function IsSystemResumeAutomatic: BOOL; stdcall;
  1848. {$EXTERNALSYM IsSystemResumeAutomatic}
  1849. function OpenThread(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
  1850. dwThreadId: DWORD): HANDLE; stdcall;
  1851. {$EXTERNALSYM OpenThread}
  1852. function SetThreadPriority(hThread: HANDLE; nPriority: Integer): BOOL; stdcall;
  1853. {$EXTERNALSYM SetThreadPriority}
  1854. function SetThreadPriorityBoost(hThread: HANDLE; bDisablePriorityBoost: BOOL): BOOL; stdcall;
  1855. {$EXTERNALSYM SetThreadPriorityBoost}
  1856. function GetThreadPriorityBoost(hThread: HANDLE;
  1857. var pDisablePriorityBoost: BOOL): BOOL; stdcall;
  1858. {$EXTERNALSYM GetThreadPriorityBoost}
  1859. function GetThreadPriority(hThread: HANDLE): Integer; stdcall;
  1860. {$EXTERNALSYM GetThreadPriority}
  1861. function GetThreadTimes(hThread: HANDLE; var lpCreationTime, lpExitTime,
  1862. lpKernelTime, lpUserTime: FILETIME): BOOL; stdcall;
  1863. {$EXTERNALSYM GetThreadTimes}
  1864. function GetThreadIOPendingFlag(hThread: HANDLE; out lpIOIsPending: BOOL): BOOL; stdcall;
  1865. {$EXTERNALSYM GetThreadIOPendingFlag}
  1866. procedure ExitThread(dwExitCode: DWORD); stdcall;
  1867. {$EXTERNALSYM ExitThread}
  1868. function TerminateThread(hThread: HANDLE; dwExitCode: DWORD): BOOL; stdcall;
  1869. {$EXTERNALSYM TerminateThread}
  1870. function GetExitCodeThread(hThread: HANDLE; var lpExitCode: DWORD): BOOL; stdcall;
  1871. {$EXTERNALSYM GetExitCodeThread}
  1872. function GetThreadSelectorEntry(hThread: HANDLE; dwSelector: DWORD;
  1873. var lpSelectorEntry: LDT_ENTRY): BOOL; stdcall;
  1874. {$EXTERNALSYM GetThreadSelectorEntry}
  1875. function SetThreadExecutionState(esFlags: EXECUTION_STATE): EXECUTION_STATE; stdcall;
  1876. {$EXTERNALSYM SetThreadExecutionState}
  1877. function GetLastError: DWORD; stdcall;
  1878. {$EXTERNALSYM GetLastError}
  1879. procedure SetLastError(dwErrCode: DWORD); stdcall;
  1880. {$EXTERNALSYM SetLastError}
  1881. procedure RestoreLastError(dwErrCode: DWORD); stdcall;
  1882. {$EXTERNALSYM RestoreLastError}
  1883. type
  1884. PRESTORE_LAST_ERROR = procedure(dwErrCode: DWORD); stdcall;
  1885. {$EXTERNALSYM PRESTORE_LAST_ERROR}
  1886. const
  1887. RESTORE_LAST_ERROR_NAME_A = 'RestoreLastError';
  1888. {$EXTERNALSYM RESTORE_LAST_ERROR_NAME_A}
  1889. RESTORE_LAST_ERROR_NAME_W = WideString('RestoreLastError');
  1890. {$EXTERNALSYM RESTORE_LAST_ERROR_NAME_W}
  1891. RESTORE_LAST_ERROR_NAME = __TEXT('RestoreLastError');
  1892. {$EXTERNALSYM RESTORE_LAST_ERROR_NAME}
  1893. function HasOverlappedIoCompleted(const lpOverlapped: OVERLAPPED): BOOL;
  1894. {$EXTERNALSYM HasOverlappedIoCompleted}
  1895. function GetOverlappedResult(hFile: HANDLE; const lpOverlapped: OVERLAPPED;
  1896. var lpNumberOfBytesTransferred: DWORD; bWait: BOOL): BOOL; stdcall;
  1897. {$EXTERNALSYM GetOverlappedResult}
  1898. function CreateIoCompletionPort(FileHandle: HANDLE; ExistingCompletionPort: HANDLE;
  1899. CompletionKey: ULONG_PTR; NumberOfConcurrentThreads: DWORD): HANDLE; stdcall;
  1900. {$EXTERNALSYM CreateIoCompletionPort}
  1901. function GetQueuedCompletionStatus(CompletionPort: HANDLE;
  1902. var lpNumberOfBytesTransferred: DWORD; var lpCompletionKey: ULONG_PTR;
  1903. var lpOverlapped: LPOVERLAPPED; dwMilliseconds: DWORD): BOOL; stdcall;
  1904. {$EXTERNALSYM GetQueuedCompletionStatus}
  1905. function PostQueuedCompletionStatus(CompletionPort: HANDLE;
  1906. dwNumberOfBytesTransferred: DWORD; dwCompletionKey: ULONG_PTR;
  1907. lpOverlapped: LPOVERLAPPED): BOOL; stdcall;
  1908. {$EXTERNALSYM PostQueuedCompletionStatus}
  1909. const
  1910. SEM_FAILCRITICALERRORS = $0001;
  1911. {$EXTERNALSYM SEM_FAILCRITICALERRORS}
  1912. SEM_NOGPFAULTERRORBOX = $0002;
  1913. {$EXTERNALSYM SEM_NOGPFAULTERRORBOX}
  1914. SEM_NOALIGNMENTFAULTEXCEPT = $0004;
  1915. {$EXTERNALSYM SEM_NOALIGNMENTFAULTEXCEPT}
  1916. SEM_NOOPENFILEERRORBOX = $8000;
  1917. {$EXTERNALSYM SEM_NOOPENFILEERRORBOX}
  1918. function SetErrorMode(uMode: UINT): UINT; stdcall;
  1919. {$EXTERNALSYM SetErrorMode}
  1920. function ReadProcessMemory(hProcess: HANDLE; lpBaseAddress: LPCVOID;
  1921. lpBuffer: LPVOID; nSize: DWORD; lpNumberOfBytesRead: LPDWORD): BOOL; stdcall;
  1922. {$EXTERNALSYM ReadProcessMemory}
  1923. function WriteProcessMemory(hProcess: HANDLE; lpBaseAddress: LPVOID;
  1924. lpBuffer: LPVOID; nSize: DWORD; lpNumberOfBytesWritten: LPDWORD): BOOL; stdcall;
  1925. {$EXTERNALSYM WriteProcessMemory}
  1926. function GetThreadContext(hThread: HANDLE; var lpContext: CONTEXT): BOOL; stdcall;
  1927. {$EXTERNALSYM GetThreadContext}
  1928. function SetThreadContext(hThread: HANDLE; const lpContext: CONTEXT): BOOL; stdcall;
  1929. {$EXTERNALSYM SetThreadContext}
  1930. function SuspendThread(hThread: HANDLE): DWORD; stdcall;
  1931. {$EXTERNALSYM SuspendThread}
  1932. function ResumeThread(hThread: HANDLE): DWORD; stdcall;
  1933. {$EXTERNALSYM ResumeThread}
  1934. type
  1935. PAPCFUNC = procedure(dwParam: ULONG_PTR); stdcall;
  1936. {$EXTERNALSYM PAPCFUNC}
  1937. TApcFunc = PAPCFUNC;
  1938. function QueueUserAPC(pfnAPC: PAPCFUNC; hThread: HANDLE; dwData: ULONG_PTR): DWORD; stdcall;
  1939. {$EXTERNALSYM QueueUserAPC}
  1940. function IsDebuggerPresent: BOOL; stdcall;
  1941. {$EXTERNALSYM IsDebuggerPresent}
  1942. function CheckRemoteDebuggerPresent(hProcess: HANDLE; out pbDebuggerPresent: BOOL): BOOL; stdcall;
  1943. {$EXTERNALSYM CheckRemoteDebuggerPresent}
  1944. procedure DebugBreak; stdcall;
  1945. {$EXTERNALSYM DebugBreak}
  1946. function WaitForDebugEvent(var lpDebugEvent: DEBUG_EVENT; dwMilliseconds: DWORD): BOOL; stdcall;
  1947. {$EXTERNALSYM WaitForDebugEvent}
  1948. function ContinueDebugEvent(dwProcessId: DWORD; dwThreadId: DWORD;
  1949. dwContinueStatus: DWORD): BOOL; stdcall;
  1950. {$EXTERNALSYM ContinueDebugEvent}
  1951. function DebugActiveProcess(dwProcessId: DWORD): BOOL; stdcall;
  1952. {$EXTERNALSYM DebugActiveProcess}
  1953. function DebugActiveProcessStop(dwProcessId: DWORD): BOOL; stdcall;
  1954. {$EXTERNALSYM DebugActiveProcessStop}
  1955. function DebugSetProcessKillOnExit(KillOnExit: BOOL): BOOL; stdcall;
  1956. {$EXTERNALSYM DebugSetProcessKillOnExit}
  1957. function DebugBreakProcess(Process: HANDLE): BOOL; stdcall;
  1958. {$EXTERNALSYM DebugBreakProcess}
  1959. procedure InitializeCriticalSection(var lpCriticalSection: CRITICAL_SECTION); stdcall;
  1960. {$EXTERNALSYM InitializeCriticalSection}
  1961. procedure EnterCriticalSection(var lpCriticalSection: CRITICAL_SECTION); stdcall;
  1962. {$EXTERNALSYM EnterCriticalSection}
  1963. procedure LeaveCriticalSection(var lpCriticalSection: CRITICAL_SECTION); stdcall;
  1964. {$EXTERNALSYM LeaveCriticalSection}
  1965. function InitializeCriticalSectionAndSpinCount(var lpCriticalSection: CRITICAL_SECTION;
  1966. dwSpinCount: DWORD): BOOL; stdcall;
  1967. {$EXTERNALSYM InitializeCriticalSectionAndSpinCount}
  1968. function SetCriticalSectionSpinCount(var lpCriticalSection: CRITICAL_SECTION;
  1969. dwSpinCount: DWORD): DWORD; stdcall;
  1970. {$EXTERNALSYM SetCriticalSectionSpinCount}
  1971. function TryEnterCriticalSection(var lpCriticalSection: CRITICAL_SECTION): BOOL; stdcall;
  1972. {$EXTERNALSYM TryEnterCriticalSection}
  1973. procedure DeleteCriticalSection(var lpCriticalSection: CRITICAL_SECTION); stdcall;
  1974. {$EXTERNALSYM DeleteCriticalSection}
  1975. function SetEvent(hEvent: HANDLE): BOOL; stdcall;
  1976. {$EXTERNALSYM SetEvent}
  1977. function ResetEvent(hEvent: HANDLE): BOOL; stdcall;
  1978. {$EXTERNALSYM ResetEvent}
  1979. function PulseEvent(hEvent: HANDLE): BOOL; stdcall;
  1980. {$EXTERNALSYM PulseEvent}
  1981. function ReleaseSemaphore(hSemaphore: HANDLE; lReleaseCount: LONG;
  1982. lpPreviousCount: LPLONG): BOOL; stdcall;
  1983. {$EXTERNALSYM ReleaseSemaphore}
  1984. function ReleaseMutex(hMutex: HANDLE): BOOL; stdcall;
  1985. {$EXTERNALSYM ReleaseMutex}
  1986. function WaitForSingleObject(hHandle: HANDLE; dwMilliseconds: DWORD): DWORD; stdcall;
  1987. {$EXTERNALSYM WaitForSingleObject}
  1988. function WaitForMultipleObjects(nCount: DWORD; lpHandles: PHANDLE; bWaitAll: BOOL;
  1989. dwMilliseconds: DWORD): DWORD; stdcall;
  1990. {$EXTERNALSYM WaitForMultipleObjects}
  1991. procedure Sleep(dwMilliseconds: DWORD); stdcall;
  1992. {$EXTERNALSYM Sleep}
  1993. function LoadResource(hModule: HMODULE; hResInfo: HRSRC): HGLOBAL; stdcall;
  1994. {$EXTERNALSYM LoadResource}
  1995. function SizeofResource(hModule: HMODULE; hResInfo: HRSRC): DWORD; stdcall;
  1996. {$EXTERNALSYM SizeofResource}
  1997. function GlobalDeleteAtom(nAtom: ATOM): ATOM; stdcall;
  1998. {$EXTERNALSYM GlobalDeleteAtom}
  1999. function InitAtomTable(nSize: DWORD): BOOL; stdcall;
  2000. {$EXTERNALSYM InitAtomTable}
  2001. function DeleteAtom(nAtom: ATOM): ATOM; stdcall;
  2002. {$EXTERNALSYM DeleteAtom}
  2003. function SetHandleCount(uNumber: UINT): UINT; stdcall;
  2004. {$EXTERNALSYM SetHandleCount}
  2005. function GetLogicalDrives: DWORD; stdcall;
  2006. {$EXTERNALSYM GetLogicalDrives}
  2007. function LockFile(hFile: HANDLE; dwFileOffsetLow: DWORD; dwFileOffsetHigh: DWORD;
  2008. nNumberOfBytesToLockLow: DWORD; nNumberOfBytesToLockHigh: DWORD): BOOL; stdcall;
  2009. {$EXTERNALSYM LockFile}
  2010. function UnlockFile(hFile: HANDLE; dwFileOffsetLow: DWORD; dwFileOffsetHigh: DWORD;
  2011. nNumberOfBytesToUnlockLow: DWORD; nNumberOfBytesToUnlockHigh: DWORD): BOOL; stdcall;
  2012. {$EXTERNALSYM UnlockFile}
  2013. function LockFileEx(hFile: HANDLE; dwFlags: DWORD; dwReserved: DWORD;
  2014. nNumberOfBytesToLockLow: DWORD; nNumberOfBytesToLockHigh: DWORD;
  2015. const lpOverlapped: OVERLAPPED): BOOL; stdcall;
  2016. {$EXTERNALSYM LockFileEx}
  2017. const
  2018. LOCKFILE_FAIL_IMMEDIATELY = $00000001;
  2019. {$EXTERNALSYM LOCKFILE_FAIL_IMMEDIATELY}
  2020. LOCKFILE_EXCLUSIVE_LOCK = $00000002;
  2021. {$EXTERNALSYM LOCKFILE_EXCLUSIVE_LOCK}
  2022. function UnlockFileEx(hFile: HANDLE; dwReserved: DWORD;
  2023. nNumberOfBytesToUnlockLow: DWORD; nNumberOfBytesToUnlockHigh: DWORD;
  2024. const lpOverlapped: OVERLAPPED): BOOL; stdcall;
  2025. {$EXTERNALSYM UnlockFileEx}
  2026. type
  2027. PBY_HANDLE_FILE_INFORMATION = ^BY_HANDLE_FILE_INFORMATION;
  2028. {$EXTERNALSYM PBY_HANDLE_FILE_INFORMATION}
  2029. _BY_HANDLE_FILE_INFORMATION = record
  2030. dwFileAttributes: DWORD;
  2031. ftCreationTime: FILETIME;
  2032. ftLastAccessTime: FILETIME;
  2033. ftLastWriteTime: FILETIME;
  2034. dwVolumeSerialNumber: DWORD;
  2035. nFileSizeHigh: DWORD;
  2036. nFileSizeLow: DWORD;
  2037. nNumberOfLinks: DWORD;
  2038. nFileIndexHigh: DWORD;
  2039. nFileIndexLow: DWORD;
  2040. end;
  2041. {$EXTERNALSYM _BY_HANDLE_FILE_INFORMATION}
  2042. BY_HANDLE_FILE_INFORMATION = _BY_HANDLE_FILE_INFORMATION;
  2043. {$EXTERNALSYM BY_HANDLE_FILE_INFORMATION}
  2044. LPBY_HANDLE_FILE_INFORMATION = ^BY_HANDLE_FILE_INFORMATION;
  2045. {$EXTERNALSYM LPBY_HANDLE_FILE_INFORMATION}
  2046. TByHandleFileInformation = BY_HANDLE_FILE_INFORMATION;
  2047. PByHandleFileInformation = PBY_HANDLE_FILE_INFORMATION;
  2048. function GetFileInformationByHandle(hFile: HANDLE;
  2049. var lpFileInformation: BY_HANDLE_FILE_INFORMATION): BOOL; stdcall;
  2050. {$EXTERNALSYM GetFileInformationByHandle}
  2051. function GetFileType(hFile: HANDLE): DWORD; stdcall;
  2052. {$EXTERNALSYM GetFileType}
  2053. function GetFileSize(hFile: HANDLE; lpFileSizeHigh: LPDWORD): DWORD; stdcall;
  2054. {$EXTERNALSYM GetFileSize}
  2055. function GetFileSizeEx(hFile: HANDLE; var lpFileSize: LARGE_INTEGER): BOOL; stdcall;
  2056. {$EXTERNALSYM GetFileSizeEx}
  2057. function GetStdHandle(nStdHandle: DWORD): HANDLE; stdcall;
  2058. {$EXTERNALSYM GetStdHandle}
  2059. function SetStdHandle(nStdHandle: DWORD; hHandle: HANDLE): BOOL; stdcall;
  2060. {$EXTERNALSYM SetStdHandle}
  2061. function WriteFile(hFile: HANDLE; lpBuffer: LPCVOID; nNumberOfBytesToWrite: DWORD;
  2062. lpNumberOfBytesWritten: LPDWORD; lpOverlapped: LPOVERLAPPED): BOOL; stdcall;
  2063. {$EXTERNALSYM WriteFile}
  2064. function ReadFile(hFile: HANDLE; lpBuffer: LPVOID; nNumberOfBytesToRead: DWORD;
  2065. lpNumberOfBytesRead: LPDWORD; lpOverlapped: LPOVERLAPPED): BOOL; stdcall;
  2066. {$EXTERNALSYM ReadFile}
  2067. function FlushFileBuffers(hFile: HANDLE): BOOL; stdcall;
  2068. {$EXTERNALSYM FlushFileBuffers}
  2069. function DeviceIoControl(hDevice: HANDLE; dwIoControlCode: DWORD;
  2070. lpInBuffer: LPVOID; nInBufferSize: DWORD; lpOutBuffer: LPVOID;
  2071. nOutBufferSize: DWORD; lpBytesReturned: LPDWORD;
  2072. lpOverlapped: LPOVERLAPPED): BOOL; stdcall;
  2073. {$EXTERNALSYM DeviceIoControl}
  2074. function RequestDeviceWakeup(hDevice: HANDLE): BOOL; stdcall;
  2075. {$EXTERNALSYM RequestDeviceWakeup}
  2076. function CancelDeviceWakeupRequest(hDevice: HANDLE): BOOL; stdcall;
  2077. {$EXTERNALSYM CancelDeviceWakeupRequest}
  2078. function GetDevicePowerState(hDevice: HANDLE; var pfOn: BOOL): BOOL; stdcall;
  2079. {$EXTERNALSYM GetDevicePowerState}
  2080. function SetMessageWaitingIndicator(hMsgIndicator: HANDLE; ulMsgCount: ULONG): BOOL; stdcall;
  2081. {$EXTERNALSYM SetMessageWaitingIndicator}
  2082. function SetEndOfFile(hFile: HANDLE): BOOL; stdcall;
  2083. {$EXTERNALSYM SetEndOfFile}
  2084. function SetFilePointer(hFile: HANDLE; lDistanceToMove: LONG;
  2085. lpDistanceToMoveHigh: PLONG; dwMoveMethod: DWORD): DWORD; stdcall;
  2086. {$EXTERNALSYM SetFilePointer}
  2087. function SetFilePointerEx(hFile: HANDLE; liDistanceToMove: LARGE_INTEGER;
  2088. lpNewFilePointer: PLARGE_INTEGER; dwMoveMethod: DWORD): BOOL; stdcall;
  2089. {$EXTERNALSYM SetFilePointerEx}
  2090. function FindClose(hFindFile: HANDLE): BOOL; stdcall;
  2091. {$EXTERNALSYM FindClose}
  2092. function GetFileTime(hFile: HANDLE; lpCreationTime, lpLastAccessTime,
  2093. lpLastWriteTime: PFILETIME): BOOL; stdcall;
  2094. {$EXTERNALSYM GetFileTime}
  2095. function SetFileTime(hFile: HANDLE; lpCreationTime, lpLastAccessTime,
  2096. lpLastWriteTime: PFILETIME): BOOL; stdcall;
  2097. {$EXTERNALSYM SetFileTime}
  2098. function SetFileValidData(hFile: HANDLE; ValidDataLength: LONGLONG): BOOL; stdcall;
  2099. {$EXTERNALSYM SetFileValidData}
  2100. function SetFileShortNameA(hFile: HANDLE; lpShortName: LPCSTR): BOOL; stdcall;
  2101. {$EXTERNALSYM SetFileShortNameA}
  2102. function SetFileShortNameW(hFile: HANDLE; lpShortName: LPCWSTR): BOOL; stdcall;
  2103. {$EXTERNALSYM SetFileShortNameW}
  2104. function SetFileShortName(hFile: HANDLE; lpShortName: LPCTSTR): BOOL; stdcall;
  2105. {$EXTERNALSYM SetFileShortName}
  2106. function CloseHandle(hObject: HANDLE): BOOL; stdcall;
  2107. {$EXTERNALSYM CloseHandle}
  2108. function DuplicateHandle(hSourceProcessHandle: HANDLE; hSourceHandle: HANDLE;
  2109. hTargetProcessHandle: HANDLE; lpTargetHandle: LPHANDLE;
  2110. dwDesiredAccess: DWORD; bInheritHandle: BOOL; dwOptions: DWORD): BOOL; stdcall;
  2111. {$EXTERNALSYM DuplicateHandle}
  2112. function GetHandleInformation(hObject: HANDLE; var lpdwFlags: DWORD): BOOL; stdcall;
  2113. {$EXTERNALSYM GetHandleInformation}
  2114. function SetHandleInformation(hObject: HANDLE; dwMask: DWORD; dwFlags: DWORD): BOOL; stdcall;
  2115. {$EXTERNALSYM SetHandleInformation}
  2116. const
  2117. HANDLE_FLAG_INHERIT = $00000001;
  2118. {$EXTERNALSYM HANDLE_FLAG_INHERIT}
  2119. HANDLE_FLAG_PROTECT_FROM_CLOSE = $00000002;
  2120. {$EXTERNALSYM HANDLE_FLAG_PROTECT_FROM_CLOSE}
  2121. HINSTANCE_ERROR = 32;
  2122. {$EXTERNALSYM HINSTANCE_ERROR}
  2123. function LoadModule(lpModuleName: LPCSTR; lpParameterBlock: LPVOID): DWORD; stdcall;
  2124. {$EXTERNALSYM LoadModule}
  2125. function WinExec(lpCmdLine: LPCSTR; uCmdShow: UINT): UINT; stdcall;
  2126. {$EXTERNALSYM WinExec}
  2127. function ClearCommBreak(hFile: HANDLE): BOOL; stdcall;
  2128. {$EXTERNALSYM ClearCommBreak}
  2129. function ClearCommError(hFile: HANDLE; var lpErrors: DWORD;
  2130. lpStat: LPCOMSTAT): BOOL; stdcall;
  2131. {$EXTERNALSYM ClearCommError}
  2132. function SetupComm(hFile: HANDLE; dwInQueue: DWORD; dwOutQueue: DWORD): BOOL; stdcall;
  2133. {$EXTERNALSYM SetupComm}
  2134. function EscapeCommFunction(hFile: HANDLE; dwFunc: DWORD): BOOL; stdcall;
  2135. {$EXTERNALSYM EscapeCommFunction}
  2136. function GetCommConfig(hCommDev: HANDLE; var lpCC: COMMCONFIG;
  2137. var lpdwSize: DWORD): BOOL; stdcall;
  2138. {$EXTERNALSYM GetCommConfig}
  2139. function GetCommMask(hFile: HANDLE; var lpEvtMask: DWORD): BOOL; stdcall;
  2140. {$EXTERNALSYM GetCommMask}
  2141. function GetCommProperties(hFile: HANDLE; var lpCommProp: COMMPROP): BOOL; stdcall;
  2142. {$EXTERNALSYM GetCommProperties}
  2143. function GetCommModemStatus(hFile: HANDLE; var lpModemStat: DWORD): BOOL; stdcall;
  2144. {$EXTERNALSYM GetCommModemStatus}
  2145. function GetCommState(hFile: HANDLE; var lpDCB: DCB): BOOL; stdcall;
  2146. {$EXTERNALSYM GetCommState}
  2147. function GetCommTimeouts(hFile: HANDLE; var lpCommTimeouts: COMMTIMEOUTS): BOOL; stdcall;
  2148. {$EXTERNALSYM GetCommTimeouts}
  2149. function PurgeComm(hFile: HANDLE; dwFlags: DWORD): BOOL; stdcall;
  2150. {$EXTERNALSYM PurgeComm}
  2151. function SetCommBreak(hFile: HANDLE): BOOL; stdcall;
  2152. {$EXTERNALSYM SetCommBreak}
  2153. function SetCommConfig(hCommDev: HANDLE; const lpCC: COMMCONFIG; dwSize: DWORD): BOOL; stdcall;
  2154. {$EXTERNALSYM SetCommConfig}
  2155. function SetCommMask(hFile: HANDLE; dwEvtMask: DWORD): BOOL; stdcall;
  2156. {$EXTERNALSYM SetCommMask}
  2157. function SetCommState(hFile: HANDLE; const lpDCB: DCB): BOOL; stdcall;
  2158. {$EXTERNALSYM SetCommState}
  2159. function SetCommTimeouts(hFile: HANDLE; const lpCommTimeouts: COMMTIMEOUTS): BOOL; stdcall;
  2160. {$EXTERNALSYM SetCommTimeouts}
  2161. function TransmitCommChar(hFile: HANDLE; cChar: Char): BOOL; stdcall;
  2162. {$EXTERNALSYM TransmitCommChar}
  2163. function WaitCommEvent(hFile: HANDLE; var lpEvtMask: DWORD;
  2164. lpOverlapped: LPOVERLAPPED): BOOL; stdcall;
  2165. {$EXTERNALSYM WaitCommEvent}
  2166. function SetTapePosition(hDevice: HANDLE; dwPositionMethod, dwPartition,
  2167. dwOffsetLow, dwOffsetHigh: DWORD; bImmediate: BOOL): DWORD; stdcall;
  2168. {$EXTERNALSYM SetTapePosition}
  2169. function GetTapePosition(hDevice: HANDLE; dwPositionType: DWORD;
  2170. var lpdwPartition, lpdwOffsetLow: LPDWORD; lpdwOffsetHigh: LPDWORD): DWORD; stdcall;
  2171. {$EXTERNALSYM GetTapePosition}
  2172. function PrepareTape(hDevice: HANDLE; dwOperation: DWORD; bImmediate: BOOL): DWORD; stdcall;
  2173. {$EXTERNALSYM PrepareTape}
  2174. function EraseTape(hDevice: HANDLE; dwEraseType: DWORD; bImmediate: BOOL): DWORD; stdcall;
  2175. {$EXTERNALSYM EraseTape}
  2176. function CreateTapePartition(hDevice: HANDLE; dwPartitionMethod: DWORD;
  2177. dwCount: DWORD; dwSize: DWORD): DWORD; stdcall;
  2178. {$EXTERNALSYM CreateTapePartition}
  2179. function WriteTapemark(hDevice: HANDLE; dwTapemarkType: DWORD;
  2180. dwTapemarkCount: DWORD; bImmediate: BOOL): DWORD; stdcall;
  2181. {$EXTERNALSYM WriteTapemark}
  2182. function GetTapeStatus(hDevice: HANDLE): DWORD; stdcall;
  2183. {$EXTERNALSYM GetTapeStatus}
  2184. function GetTapeParameters(hDevice: HANDLE; dwOperation: DWORD;
  2185. var lpdwSize: DWORD; lpTapeInformation: LPVOID): DWORD; stdcall;
  2186. {$EXTERNALSYM GetTapeParameters}
  2187. const
  2188. GET_TAPE_MEDIA_INFORMATION = 0;
  2189. {$EXTERNALSYM GET_TAPE_MEDIA_INFORMATION}
  2190. GET_TAPE_DRIVE_INFORMATION = 1;
  2191. {$EXTERNALSYM GET_TAPE_DRIVE_INFORMATION}
  2192. function SetTapeParameters(hDevice: HANDLE; dwOperation: DWORD; lpTapeInformation: LPVOID): DWORD; stdcall;
  2193. {$EXTERNALSYM SetTapeParameters}
  2194. const
  2195. SET_TAPE_MEDIA_INFORMATION = 0;
  2196. {$EXTERNALSYM SET_TAPE_MEDIA_INFORMATION}
  2197. SET_TAPE_DRIVE_INFORMATION = 1;
  2198. {$EXTERNALSYM SET_TAPE_DRIVE_INFORMATION}
  2199. function Beep(dwFreq: DWORD; dwDuration: DWORD): BOOL; stdcall;
  2200. {$EXTERNALSYM Beep}
  2201. function MulDiv(nNumber, nNumerator, nDenominator: Integer): Integer; stdcall;
  2202. {$EXTERNALSYM MulDiv}
  2203. procedure GetSystemTime(var lpSystemTime: SYSTEMTIME); stdcall;
  2204. {$EXTERNALSYM GetSystemTime}
  2205. procedure GetSystemTimeAsFileTime(var lpSystemTimeAsFileTime: FILETIME); stdcall;
  2206. {$EXTERNALSYM GetSystemTimeAsFileTime}
  2207. function SetSystemTime(var lpSystemTime: SYSTEMTIME): BOOL; stdcall;
  2208. {$EXTERNALSYM SetSystemTime}
  2209. procedure GetLocalTime(var lpSystemTime: SYSTEMTIME); stdcall;
  2210. {$EXTERNALSYM GetLocalTime}
  2211. function SetLocalTime(var lpSystemTime: SYSTEMTIME): BOOL; stdcall;
  2212. {$EXTERNALSYM SetLocalTime}
  2213. procedure GetSystemInfo(var lpSystemInfo: SYSTEM_INFO); stdcall;
  2214. {$EXTERNALSYM GetSystemInfo}
  2215. function GetSystemRegistryQuota(out pdwQuotaAllowed, pdwQuotaUsed: DWORD): BOOL; stdcall;
  2216. {$EXTERNALSYM GetSystemRegistryQuota}
  2217. function GetSystemTimes(lpIdleTime, lpKernelTime, lpUserTime: LPFILETIME): BOOL; stdcall;
  2218. {$EXTERNALSYM GetSystemTimes}
  2219. procedure GetNativeSystemInfo(lpSystemInfo: LPSYSTEM_INFO); stdcall;
  2220. {$EXTERNALSYM GetNativeSystemInfo}
  2221. function IsProcessorFeaturePresent(ProcessorFeature: DWORD): BOOL; stdcall;
  2222. {$EXTERNALSYM IsProcessorFeaturePresent}
  2223. type
  2224. PTIME_ZONE_INFORMATION = ^TIME_ZONE_INFORMATION;
  2225. {$EXTERNALSYM PTIME_ZONE_INFORMATION}
  2226. _TIME_ZONE_INFORMATION = record
  2227. Bias: LONG;
  2228. StandardName: array [0..31] of WCHAR;
  2229. StandardDate: SYSTEMTIME;
  2230. StandardBias: LONG;
  2231. DaylightName: array [0..31] of WCHAR;
  2232. DaylightDate: SYSTEMTIME;
  2233. DaylightBias: LONG;
  2234. end;
  2235. {$EXTERNALSYM _TIME_ZONE_INFORMATION}
  2236. TIME_ZONE_INFORMATION = _TIME_ZONE_INFORMATION;
  2237. {$EXTERNALSYM TIME_ZONE_INFORMATION}
  2238. LPTIME_ZONE_INFORMATION = ^TIME_ZONE_INFORMATION;
  2239. {$EXTERNALSYM LPTIME_ZONE_INFORMATION}
  2240. TTimeZoneInformation = TIME_ZONE_INFORMATION;
  2241. PTimeZoneInformation = PTIME_ZONE_INFORMATION;
  2242. function SystemTimeToTzSpecificLocalTime(lpTimeZoneInformation: LPTIME_ZONE_INFORMATION;
  2243. var lpUniversalTime, lpLocalTime: SYSTEMTIME): BOOL; stdcall;
  2244. {$EXTERNALSYM SystemTimeToTzSpecificLocalTime}
  2245. function TzSpecificLocalTimeToSystemTime(const lpTimeZoneInformation: TIME_ZONE_INFORMATION;
  2246. const lpLocalTime: SYSTEMTIME; var lpUniversalTime: SYSTEMTIME): BOOL; stdcall;
  2247. {$EXTERNALSYM TzSpecificLocalTimeToSystemTime}
  2248. function GetTimeZoneInformation(var lpTimeZoneInformation: TIME_ZONE_INFORMATION): DWORD; stdcall;
  2249. {$EXTERNALSYM GetTimeZoneInformation}
  2250. function SetTimeZoneInformation(const lpTimeZoneInformation: TIME_ZONE_INFORMATION): BOOL; stdcall;
  2251. {$EXTERNALSYM SetTimeZoneInformation}
  2252. //
  2253. // Routines to convert back and forth between system time and file time
  2254. //
  2255. function SystemTimeToFileTime(const lpSystemTime: SYSTEMTIME; var lpFileTime: FILETIME): BOOL; stdcall;
  2256. {$EXTERNALSYM SystemTimeToFileTime}
  2257. function FileTimeToLocalFileTime(const lpFileTime: FILETIME; var lpLocalFileTime: FILETIME): BOOL; stdcall;
  2258. {$EXTERNALSYM FileTimeToLocalFileTime}
  2259. function LocalFileTimeToFileTime(const lpLocalFileTime: FILETIME; var lpFileTime: FILETIME): BOOL; stdcall;
  2260. {$EXTERNALSYM LocalFileTimeToFileTime}
  2261. function FileTimeToSystemTime(const lpFileTime: FILETIME; var lpSystemTime: SYSTEMTIME): BOOL; stdcall;
  2262. {$EXTERNALSYM FileTimeToSystemTime}
  2263. function CompareFileTime(const lpFileTime1, lpFileTime2: FILETIME): LONG; stdcall;
  2264. {$EXTERNALSYM CompareFileTime}
  2265. function FileTimeToDosDateTime(const lpFileTime: FILETIME; var lpFatDate,
  2266. lpFatTime: WORD): BOOL; stdcall;
  2267. {$EXTERNALSYM FileTimeToDosDateTime}
  2268. function DosDateTimeToFileTime(wFatDate, wFatTime: WORD; var lpFileTime: FILETIME): BOOL; stdcall;
  2269. {$EXTERNALSYM DosDateTimeToFileTime}
  2270. function GetTickCount: DWORD; stdcall;
  2271. {$EXTERNALSYM GetTickCount}
  2272. function SetSystemTimeAdjustment(dwTimeAdjustment: DWORD;
  2273. bTimeAdjustmentDisabled: BOOL): BOOL; stdcall;
  2274. {$EXTERNALSYM SetSystemTimeAdjustment}
  2275. function GetSystemTimeAdjustment(var lpTimeAdjustment, lpTimeIncrement: DWORD;
  2276. var lpTimeAdjustmentDisabled: BOOL): BOOL; stdcall;
  2277. {$EXTERNALSYM GetSystemTimeAdjustment}
  2278. function FormatMessageA(dwFlags: DWORD; lpSource: LPCVOID; dwMessageId: DWORD;
  2279. dwLanguageId: DWORD; lpBuffer: LPSTR; nSize: DWORD; Arguments: Pointer): DWORD; stdcall;
  2280. {$EXTERNALSYM FormatMessageA}
  2281. function FormatMessageW(dwFlags: DWORD; lpSource: LPCVOID; dwMessageId: DWORD;
  2282. dwLanguageId: DWORD; lpBuffer: LPWSTR; nSize: DWORD; Arguments: Pointer): DWORD; stdcall;
  2283. {$EXTERNALSYM FormatMessageW}
  2284. function FormatMessage(dwFlags: DWORD; lpSource: LPCVOID; dwMessageId: DWORD;
  2285. dwLanguageId: DWORD; lpBuffer: LPTSTR; nSize: DWORD; Arguments: Pointer): DWORD; stdcall;
  2286. {$EXTERNALSYM FormatMessage}
  2287. const
  2288. FORMAT_MESSAGE_ALLOCATE_BUFFER = $00000100;
  2289. {$EXTERNALSYM FORMAT_MESSAGE_ALLOCATE_BUFFER}
  2290. FORMAT_MESSAGE_IGNORE_INSERTS = $00000200;
  2291. {$EXTERNALSYM FORMAT_MESSAGE_IGNORE_INSERTS}
  2292. FORMAT_MESSAGE_FROM_STRING = $00000400;
  2293. {$EXTERNALSYM FORMAT_MESSAGE_FROM_STRING}
  2294. FORMAT_MESSAGE_FROM_HMODULE = $00000800;
  2295. {$EXTERNALSYM FORMAT_MESSAGE_FROM_HMODULE}
  2296. FORMAT_MESSAGE_FROM_SYSTEM = $00001000;
  2297. {$EXTERNALSYM FORMAT_MESSAGE_FROM_SYSTEM}
  2298. FORMAT_MESSAGE_ARGUMENT_ARRAY = $00002000;
  2299. {$EXTERNALSYM FORMAT_MESSAGE_ARGUMENT_ARRAY}
  2300. FORMAT_MESSAGE_MAX_WIDTH_MASK = $000000FF;
  2301. {$EXTERNALSYM FORMAT_MESSAGE_MAX_WIDTH_MASK}
  2302. function CreatePipe(var hReadPipe, hWritePipe: HANDLE;
  2303. lpPipeAttributes: LPSECURITY_ATTRIBUTES; nSize: DWORD): BOOL; stdcall;
  2304. {$EXTERNALSYM CreatePipe}
  2305. function ConnectNamedPipe(hNamedPipe: HANDLE; lpOverlapped: LPOVERLAPPED): BOOL; stdcall;
  2306. {$EXTERNALSYM ConnectNamedPipe}
  2307. function DisconnectNamedPipe(hNamedPipe: HANDLE): BOOL; stdcall;
  2308. {$EXTERNALSYM DisconnectNamedPipe}
  2309. function SetNamedPipeHandleState(hNamedPipe: HANDLE; var lpMode: DWORD;
  2310. lpMaxCollectionCount: LPDWORD; lpCollectDataTimeout: LPDWORD): BOOL; stdcall;
  2311. {$EXTERNALSYM SetNamedPipeHandleState}
  2312. function GetNamedPipeInfo(hNamedPipe: HANDLE; lpFlags, lpOutBufferSize,
  2313. lpInBufferSize, lpMaxInstances: LPDWORD): BOOL; stdcall;
  2314. {$EXTERNALSYM GetNamedPipeInfo}
  2315. function PeekNamedPipe(hNamedPipe: HANDLE; lpBuffer: LPVOID; nBufferSize: DWORD;
  2316. lpBytesRead, lpTotalBytesAvail, lpBytesLeftThisMessage: LPDWORD): BOOL; stdcall;
  2317. {$EXTERNALSYM PeekNamedPipe}
  2318. function TransactNamedPipe(hNamedPipe: HANDLE; lpInBuffer: LPVOID;
  2319. nInBufferSize: DWORD; lpOutBuffer: LPVOID; nOutBufferSize: DWORD;
  2320. lpBytesRead: LPDWORD; lpOverlapped: LPOVERLAPPED): BOOL; stdcall;
  2321. {$EXTERNALSYM TransactNamedPipe}
  2322. function CreateMailslotA(lpName: LPCSTR; nMaxMessageSize, lReadTimeout: DWORD;
  2323. lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE; stdcall;
  2324. {$EXTERNALSYM CreateMailslotA}
  2325. function CreateMailslotW(lpName: LPCWSTR; nMaxMessageSize, lReadTimeout: DWORD;
  2326. lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE; stdcall;
  2327. {$EXTERNALSYM CreateMailslotW}
  2328. function CreateMailslot(lpName: LPCTSTR; nMaxMessageSize, lReadTimeout: DWORD;
  2329. lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE; stdcall;
  2330. {$EXTERNALSYM CreateMailslot}
  2331. function GetMailslotInfo(hMailslot: HANDLE; lpMaxMessageSize, lpNextSize,
  2332. lpMessageCount, lpReadTimeout: LPDWORD): BOOL; stdcall;
  2333. {$EXTERNALSYM GetMailslotInfo}
  2334. function SetMailslotInfo(hMailslot: HANDLE; lReadTimeout: DWORD): BOOL; stdcall;
  2335. {$EXTERNALSYM SetMailslotInfo}
  2336. function MapViewOfFile(hFileMappingObject: HANDLE; dwDesiredAccess: DWORD;
  2337. dwFileOffsetHigh, dwFileOffsetLow: DWORD; dwNumberOfBytesToMap: SIZE_T): LPVOID; stdcall;
  2338. {$EXTERNALSYM MapViewOfFile}
  2339. function FlushViewOfFile(lpBaseAddress: LPCVOID; dwNumberOfBytesToFlush: SIZE_T): BOOL; stdcall;
  2340. {$EXTERNALSYM FlushViewOfFile}
  2341. function UnmapViewOfFile(lpBaseAddress: LPCVOID): BOOL; stdcall;
  2342. {$EXTERNALSYM UnmapViewOfFile}
  2343. //
  2344. // File Encryption API
  2345. //
  2346. function EncryptFileA(lpFileName: LPCSTR): BOOL; stdcall;
  2347. {$EXTERNALSYM EncryptFileA}
  2348. function EncryptFileW(lpFileName: LPCWSTR): BOOL; stdcall;
  2349. {$EXTERNALSYM EncryptFileW}
  2350. function EncryptFile(lpFileName: LPCTSTR): BOOL; stdcall;
  2351. {$EXTERNALSYM EncryptFile}
  2352. function DecryptFileA(lpFileName: LPCSTR; dwReserved: DWORD): BOOL; stdcall;
  2353. {$EXTERNALSYM DecryptFileA}
  2354. function DecryptFileW(lpFileName: LPCWSTR; dwReserved: DWORD): BOOL; stdcall;
  2355. {$EXTERNALSYM DecryptFileW}
  2356. function DecryptFile(lpFileName: LPCTSTR; dwReserved: DWORD): BOOL; stdcall;
  2357. {$EXTERNALSYM DecryptFile}
  2358. //
  2359. // Encryption Status Value
  2360. //
  2361. const
  2362. FILE_ENCRYPTABLE = 0;
  2363. {$EXTERNALSYM FILE_ENCRYPTABLE}
  2364. FILE_IS_ENCRYPTED = 1;
  2365. {$EXTERNALSYM FILE_IS_ENCRYPTED}
  2366. FILE_SYSTEM_ATTR = 2;
  2367. {$EXTERNALSYM FILE_SYSTEM_ATTR}
  2368. FILE_ROOT_DIR = 3;
  2369. {$EXTERNALSYM FILE_ROOT_DIR}
  2370. FILE_SYSTEM_DIR = 4;
  2371. {$EXTERNALSYM FILE_SYSTEM_DIR}
  2372. FILE_UNKNOWN = 5;
  2373. {$EXTERNALSYM FILE_UNKNOWN}
  2374. FILE_SYSTEM_NOT_SUPPORT = 6;
  2375. {$EXTERNALSYM FILE_SYSTEM_NOT_SUPPORT}
  2376. FILE_USER_DISALLOWED = 7;
  2377. {$EXTERNALSYM FILE_USER_DISALLOWED}
  2378. FILE_READ_ONLY = 8;
  2379. {$EXTERNALSYM FILE_READ_ONLY}
  2380. FILE_DIR_DISALLOWED = 9;
  2381. {$EXTERNALSYM FILE_DIR_DISALLOWED}
  2382. function FileEncryptionStatusA(lpFileName: LPCSTR; var lpStatus: DWORD): BOOL; stdcall;
  2383. {$EXTERNALSYM FileEncryptionStatusA}
  2384. function FileEncryptionStatusW(lpFileName: LPCWSTR; var lpStatus: DWORD): BOOL; stdcall;
  2385. {$EXTERNALSYM FileEncryptionStatusW}
  2386. function FileEncryptionStatus(lpFileName: LPCTSTR; var lpStatus: DWORD): BOOL; stdcall;
  2387. {$EXTERNALSYM FileEncryptionStatus}
  2388. //
  2389. // Currently defined recovery flags
  2390. //
  2391. const
  2392. EFS_USE_RECOVERY_KEYS = $1;
  2393. {$EXTERNALSYM EFS_USE_RECOVERY_KEYS}
  2394. type
  2395. PFE_EXPORT_FUNC = function(pbData: PBYTE; pvCallbackContext: PVOID;
  2396. ulLength: ULONG): DWORD; stdcall;
  2397. {$EXTERNALSYM PFE_EXPORT_FUNC}
  2398. PFE_IMPORT_FUNC = function(pbData: PBYTE; pvCallbackContext: PVOID;
  2399. ulLength: PULONG): DWORD; stdcall;
  2400. {$EXTERNALSYM PFE_IMPORT_FUNC}
  2401. //
  2402. // OpenRaw flag values
  2403. //
  2404. const
  2405. CREATE_FOR_IMPORT = 1;
  2406. {$EXTERNALSYM CREATE_FOR_IMPORT}
  2407. CREATE_FOR_DIR = 2;
  2408. {$EXTERNALSYM CREATE_FOR_DIR}
  2409. OVERWRITE_HIDDEN = 4;
  2410. {$EXTERNALSYM OVERWRITE_HIDDEN}
  2411. function OpenEncryptedFileRawA(lpFileName: LPCSTR; ulFlags: ULONG;
  2412. pvContext: PVOID): DWORD; stdcall;
  2413. {$EXTERNALSYM OpenEncryptedFileRawA}
  2414. function OpenEncryptedFileRawW(lpFileName: LPCWSTR; ulFlags: ULONG;
  2415. pvContext: PVOID): DWORD; stdcall;
  2416. {$EXTERNALSYM OpenEncryptedFileRawW}
  2417. function OpenEncryptedFileRaw(lpFileName: LPCTSTR; ulFlags: ULONG;
  2418. pvContext: PVOID): DWORD; stdcall;
  2419. {$EXTERNALSYM OpenEncryptedFileRaw}
  2420. function ReadEncryptedFileRaw(pfExportCallback: PFE_EXPORT_FUNC;
  2421. pvCallbackContext: PVOID; pvContext: PVOID): DWORD; stdcall;
  2422. {$EXTERNALSYM ReadEncryptedFileRaw}
  2423. function WriteEncryptedFileRaw(pfImportCallback: PFE_IMPORT_FUNC;
  2424. pvCallbackContext: PVOID; pvContext: PVOID): DWORD; stdcall;
  2425. {$EXTERNALSYM WriteEncryptedFileRaw}
  2426. procedure CloseEncryptedFileRaw(pvContext: PVOID); stdcall;
  2427. {$EXTERNALSYM CloseEncryptedFileRaw}
  2428. //
  2429. // _l Compat Functions
  2430. //
  2431. function lstrcmpA(lpString1, lpString2: LPCSTR): Integer; stdcall;
  2432. {$EXTERNALSYM lstrcmpA}
  2433. function lstrcmpW(lpString1, lpString2: LPCWSTR): Integer; stdcall;
  2434. {$EXTERNALSYM lstrcmpW}
  2435. function lstrcmp(lpString1, lpString2: LPCTSTR): Integer; stdcall;
  2436. {$EXTERNALSYM lstrcmp}
  2437. function lstrcmpiA(lpString1, lpString2: LPCSTR): Integer; stdcall;
  2438. {$EXTERNALSYM lstrcmpiA}
  2439. function lstrcmpiW(lpString1, lpString2: LPCWSTR): Integer; stdcall;
  2440. {$EXTERNALSYM lstrcmpiW}
  2441. function lstrcmpi(lpString1, lpString2: LPCTSTR): Integer; stdcall;
  2442. {$EXTERNALSYM lstrcmpi}
  2443. function lstrcpynA(lpString1: LPSTR; lpString2: LPCSTR; iMaxLength: Integer): LPSTR; stdcall;
  2444. {$EXTERNALSYM lstrcpynA}
  2445. function lstrcpynW(lpString1: LPWSTR; lpString2: LPCWSTR; iMaxLength: Integer): LPWSTR; stdcall;
  2446. {$EXTERNALSYM lstrcpynW}
  2447. function lstrcpyn(lpString1: LPTSTR; lpString2: LPCTSTR; iMaxLength: Integer): LPTSTR; stdcall;
  2448. {$EXTERNALSYM lstrcpyn}
  2449. function lstrcpyA(lpString1: LPSTR; lpString2: LPCSTR): LPSTR; stdcall;
  2450. {$EXTERNALSYM lstrcpyA}
  2451. function lstrcpyW(lpString1: LPWSTR; lpString2: LPCWSTR): LPWSTR; stdcall;
  2452. {$EXTERNALSYM lstrcpyW}
  2453. function lstrcpy(lpString1: LPTSTR; lpString2: LPCTSTR): LPTSTR; stdcall;
  2454. {$EXTERNALSYM lstrcpy}
  2455. function lstrcatA(lpString1: LPSTR; lpString2: LPCSTR): LPSTR; stdcall;
  2456. {$EXTERNALSYM lstrcatA}
  2457. function lstrcatW(lpString1: LPWSTR; lpString2: LPCWSTR): LPWSTR; stdcall;
  2458. {$EXTERNALSYM lstrcatW}
  2459. function lstrcat(lpString1: LPTSTR; lpString2: LPCTSTR): LPTSTR; stdcall;
  2460. {$EXTERNALSYM lstrcat}
  2461. function lstrlenA(lpString: LPCSTR): Integer; stdcall;
  2462. {$EXTERNALSYM lstrlenA}
  2463. function lstrlenW(lpString: LPCWSTR): Integer; stdcall;
  2464. {$EXTERNALSYM lstrlenW}
  2465. function lstrlen(lpString: LPCTSTR): Integer; stdcall;
  2466. {$EXTERNALSYM lstrlen}
  2467. function OpenFile(lpFileName: LPCSTR; var lpReOpenBuff: OFSTRUCT; uStyle: UINT): HFILE; stdcall;
  2468. {$EXTERNALSYM OpenFile}
  2469. function _lopen(lpPathName: LPCSTR; iReadWrite: Integer): HFILE; stdcall;
  2470. {$EXTERNALSYM _lopen}
  2471. function _lcreat(lpPathName: LPCSTR; iAttribute: Integer): HFILE; stdcall;
  2472. {$EXTERNALSYM _lcreat}
  2473. function _lread(hFile: HFILE; lpBuffer: LPVOID; uBytes: UINT): UINT; stdcall;
  2474. {$EXTERNALSYM _lread}
  2475. function _lwrite(hFile: HFILE; lpBuffer: LPCSTR; uBytes: UINT): UINT; stdcall;
  2476. {$EXTERNALSYM _lwrite}
  2477. function _hread(hFile: HFILE; lpBuffer: LPVOID; lBytes: Longint): Longint; stdcall;
  2478. {$EXTERNALSYM _hread}
  2479. function _hwrite(hFile: HFILE; lpBuffer: LPCSTR; lBytes: Longint): Longint; stdcall;
  2480. {$EXTERNALSYM _hwrite}
  2481. function _lclose(hFile: HFILE): HFILE; stdcall;
  2482. {$EXTERNALSYM _lclose}
  2483. function _llseek(hFile: HFILE; lOffset: LONG; iOrigin: Integer): LONG; stdcall;
  2484. {$EXTERNALSYM _llseek}
  2485. function IsTextUnicode(lpBuffer: LPVOID; cb: Integer; lpi: LPINT): BOOL; stdcall;
  2486. {$EXTERNALSYM IsTextUnicode}
  2487. type
  2488. PFLS_CALLBACK_FUNCTION = procedure(lpFlsData: PVOID); stdcall;
  2489. {$EXTERNALSYM PFLS_CALLBACK_FUNCTION}
  2490. TFlsCallbackFunction = PFLS_CALLBACK_FUNCTION;
  2491. const
  2492. FLS_OUT_OF_INDEXES = DWORD($FFFFFFFF);
  2493. {$EXTERNALSYM FLS_OUT_OF_INDEXES}
  2494. function FlsAlloc(lpCallback: PFLS_CALLBACK_FUNCTION): DWORD; stdcall;
  2495. {$EXTERNALSYM FlsAlloc}
  2496. function FlsGetValue(dwFlsIndex: DWORD): DWORD; stdcall;
  2497. {$EXTERNALSYM FlsGetValue}
  2498. function FlsSetValue(dwFlsIndex: DWORD; lpFlsData: PVOID): DWORD; stdcall;
  2499. {$EXTERNALSYM FlsSetValue}
  2500. function FlsFree(dwFlsIndex: DWORD): DWORD; stdcall;
  2501. {$EXTERNALSYM FlsFree}
  2502. const
  2503. TLS_OUT_OF_INDEXES = DWORD($FFFFFFFF);
  2504. {$EXTERNALSYM TLS_OUT_OF_INDEXES}
  2505. function TlsAlloc: DWORD; stdcall;
  2506. {$EXTERNALSYM TlsAlloc}
  2507. function TlsGetValue(dwTlsIndex: DWORD): LPVOID; stdcall;
  2508. {$EXTERNALSYM TlsGetValue}
  2509. function TlsSetValue(dwTlsIndex: DWORD; lpTlsValue: LPVOID): BOOL; stdcall;
  2510. {$EXTERNALSYM TlsSetValue}
  2511. function TlsFree(dwTlsIndex: DWORD): BOOL; stdcall;
  2512. {$EXTERNALSYM TlsFree}
  2513. type
  2514. LPOVERLAPPED_COMPLETION_ROUTINE = procedure(dwErrorCode: DWORD;
  2515. dwNumberOfBytesTransfered: DWORD; lpOverlapped: LPOVERLAPPED); stdcall;
  2516. {$EXTERNALSYM LPOVERLAPPED_COMPLETION_ROUTINE}
  2517. TOverlappedCompletionRoutine = LPOVERLAPPED_COMPLETION_ROUTINE;
  2518. function SleepEx(dwMilliseconds: DWORD; bAlertable: BOOL): DWORD; stdcall;
  2519. {$EXTERNALSYM SleepEx}
  2520. function WaitForSingleObjectEx(hHandle: HANDLE; dwMilliseconds: DWORD;
  2521. bAlertable: BOOL): DWORD; stdcall;
  2522. {$EXTERNALSYM WaitForSingleObjectEx}
  2523. function WaitForMultipleObjectsEx(nCount: DWORD; lpHandles: PHANDLE;
  2524. bWaitAll: BOOL; dwMilliseconds: DWORD; bAlertable: BOOL): DWORD; stdcall;
  2525. {$EXTERNALSYM WaitForMultipleObjectsEx}
  2526. function SignalObjectAndWait(hObjectToSignal: HANDLE; hObjectToWaitOn: HANDLE;
  2527. dwMilliseconds: DWORD; bAlertable: BOOL): DWORD; stdcall;
  2528. {$EXTERNALSYM SignalObjectAndWait}
  2529. function ReadFileEx(hFile: HANDLE; lpBuffer: LPVOID; nNumberOfBytesToRead: DWORD;
  2530. lpOverlapped: LPOVERLAPPED; lpCompletionRoutine: LPOVERLAPPED_COMPLETION_ROUTINE): BOOL; stdcall;
  2531. {$EXTERNALSYM ReadFileEx}
  2532. function WriteFileEx(hFile: HANDLE; lpBuffer: LPCVOID; nNumberOfBytesToWrite: DWORD;
  2533. lpOverlapped: LPOVERLAPPED; lpCompletionRoutine: LPOVERLAPPED_COMPLETION_ROUTINE): BOOL; stdcall;
  2534. {$EXTERNALSYM WriteFileEx}
  2535. function BackupRead(hFile: HANDLE; lpBuffer: LPBYTE;
  2536. nNumberOfBytesToRead: DWORD; var lpNumberOfBytesRead: DWORD;
  2537. bAbort, bProcessSecurity: BOOL; var lpContext: LPVOID): BOOL; stdcall;
  2538. {$EXTERNALSYM BackupRead}
  2539. function BackupSeek(hFile: HANDLE; dwLowBytesToSeek, dwHighBytesToSeek: DWORD;
  2540. var lpdwLowByteSeeked, lpdwHighByteSeeked: DWORD; var lpContext: LPVOID): BOOL; stdcall;
  2541. {$EXTERNALSYM BackupSeek}
  2542. function BackupWrite(hFile: HANDLE; lpBuffer: LPBYTE; nNumberOfBytesToWrite: DWORD;
  2543. var lpNumberOfBytesWritten: DWORD; bAbort, bProcessSecurity: BOOL;
  2544. var lpContext: LPVOID): BOOL; stdcall;
  2545. {$EXTERNALSYM BackupWrite}
  2546. //
  2547. // Stream id structure
  2548. //
  2549. type
  2550. LPWIN32_STREAM_ID = ^WIN32_STREAM_ID;
  2551. {$EXTERNALSYM LPWIN32_STREAM_ID}
  2552. _WIN32_STREAM_ID = record
  2553. dwStreamId: DWORD;
  2554. dwStreamAttributes: DWORD;
  2555. Size: TLargeInteger;
  2556. dwStreamNameSize: DWORD;
  2557. cStreamName: array [0..ANYSIZE_ARRAY - 1] of WCHAR;
  2558. end;
  2559. {$EXTERNALSYM _WIN32_STREAM_ID}
  2560. WIN32_STREAM_ID = _WIN32_STREAM_ID;
  2561. {$EXTERNALSYM WIN32_STREAM_ID}
  2562. TWin32StreamId = WIN32_STREAM_ID;
  2563. PWin32StreamId = LPWIN32_STREAM_ID;
  2564. //
  2565. // Stream Ids
  2566. //
  2567. const
  2568. BACKUP_INVALID = $00000000;
  2569. {$EXTERNALSYM BACKUP_INVALID}
  2570. BACKUP_DATA = $00000001;
  2571. {$EXTERNALSYM BACKUP_DATA}
  2572. BACKUP_EA_DATA = $00000002;
  2573. {$EXTERNALSYM BACKUP_EA_DATA}
  2574. BACKUP_SECURITY_DATA = $00000003;
  2575. {$EXTERNALSYM BACKUP_SECURITY_DATA}
  2576. BACKUP_ALTERNATE_DATA = $00000004;
  2577. {$EXTERNALSYM BACKUP_ALTERNATE_DATA}
  2578. BACKUP_LINK = $00000005;
  2579. {$EXTERNALSYM BACKUP_LINK}
  2580. BACKUP_PROPERTY_DATA = $00000006;
  2581. {$EXTERNALSYM BACKUP_PROPERTY_DATA}
  2582. BACKUP_OBJECT_ID = $00000007;
  2583. {$EXTERNALSYM BACKUP_OBJECT_ID}
  2584. BACKUP_REPARSE_DATA = $00000008;
  2585. {$EXTERNALSYM BACKUP_REPARSE_DATA}
  2586. BACKUP_SPARSE_BLOCK = $00000009;
  2587. {$EXTERNALSYM BACKUP_SPARSE_BLOCK}
  2588. //
  2589. // Stream Attributes
  2590. //
  2591. const
  2592. STREAM_NORMAL_ATTRIBUTE = $00000000;
  2593. {$EXTERNALSYM STREAM_NORMAL_ATTRIBUTE}
  2594. STREAM_MODIFIED_WHEN_READ = $00000001;
  2595. {$EXTERNALSYM STREAM_MODIFIED_WHEN_READ}
  2596. STREAM_CONTAINS_SECURITY = $00000002;
  2597. {$EXTERNALSYM STREAM_CONTAINS_SECURITY}
  2598. STREAM_CONTAINS_PROPERTIES = $00000004;
  2599. {$EXTERNALSYM STREAM_CONTAINS_PROPERTIES}
  2600. STREAM_SPARSE_ATTRIBUTE = $00000008;
  2601. {$EXTERNALSYM STREAM_SPARSE_ATTRIBUTE}
  2602. function ReadFileScatter(hFile: HANDLE; aSegmentArray: PFILE_SEGMENT_ELEMENT;
  2603. nNumberOfBytesToRead: DWORD; lpReserved: LPDWORD; lpOverlapped: LPOVERLAPPED): BOOL; stdcall;
  2604. {$EXTERNALSYM ReadFileScatter}
  2605. function WriteFileGather(hFile: HANDLE; aSegmentArray: PFILE_SEGMENT_ELEMENT;
  2606. nNumberOfBytesToWrite: DWORD; lpReserved: LPDWORD; lpOverlapped: LPOVERLAPPED): BOOL; stdcall;
  2607. {$EXTERNALSYM WriteFileGather}
  2608. //
  2609. // Dual Mode API below this line. Dual Mode Structures also included.
  2610. //
  2611. const
  2612. STARTF_USESHOWWINDOW = $00000001;
  2613. {$EXTERNALSYM STARTF_USESHOWWINDOW}
  2614. STARTF_USESIZE = $00000002;
  2615. {$EXTERNALSYM STARTF_USESIZE}
  2616. STARTF_USEPOSITION = $00000004;
  2617. {$EXTERNALSYM STARTF_USEPOSITION}
  2618. STARTF_USECOUNTCHARS = $00000008;
  2619. {$EXTERNALSYM STARTF_USECOUNTCHARS}
  2620. STARTF_USEFILLATTRIBUTE = $00000010;
  2621. {$EXTERNALSYM STARTF_USEFILLATTRIBUTE}
  2622. STARTF_RUNFULLSCREEN = $00000020; // ignored for non-x86 platforms
  2623. {$EXTERNALSYM STARTF_RUNFULLSCREEN}
  2624. STARTF_FORCEONFEEDBACK = $00000040;
  2625. {$EXTERNALSYM STARTF_FORCEONFEEDBACK}
  2626. STARTF_FORCEOFFFEEDBACK = $00000080;
  2627. {$EXTERNALSYM STARTF_FORCEOFFFEEDBACK}
  2628. STARTF_USESTDHANDLES = $00000100;
  2629. {$EXTERNALSYM STARTF_USESTDHANDLES}
  2630. STARTF_USEHOTKEY = $00000200;
  2631. {$EXTERNALSYM STARTF_USEHOTKEY}
  2632. type
  2633. LPSTARTUPINFOA = ^STARTUPINFOA;
  2634. {$EXTERNALSYM LPSTARTUPINFOA}
  2635. _STARTUPINFOA = record
  2636. cb: DWORD;
  2637. lpReserved: LPSTR;
  2638. lpDesktop: LPSTR;
  2639. lpTitle: LPSTR;
  2640. dwX: DWORD;
  2641. dwY: DWORD;
  2642. dwXSize: DWORD;
  2643. dwYSize: DWORD;
  2644. dwXCountChars: DWORD;
  2645. dwYCountChars: DWORD;
  2646. dwFillAttribute: DWORD;
  2647. dwFlags: DWORD;
  2648. wShowWindow: WORD;
  2649. cbReserved2: WORD;
  2650. lpReserved2: LPBYTE;
  2651. hStdInput: HANDLE;
  2652. hStdOutput: HANDLE;
  2653. hStdError: HANDLE;
  2654. end;
  2655. {$EXTERNALSYM _STARTUPINFOA}
  2656. STARTUPINFOA = _STARTUPINFOA;
  2657. {$EXTERNALSYM STARTUPINFOA}
  2658. TStartupInfoA = STARTUPINFOA;
  2659. PStartupInfoA = LPSTARTUPINFOA;
  2660. LPSTARTUPINFOW = ^STARTUPINFOW;
  2661. {$EXTERNALSYM LPSTARTUPINFOW}
  2662. _STARTUPINFOW = record
  2663. cb: DWORD;
  2664. lpReserved: LPWSTR;
  2665. lpDesktop: LPWSTR;
  2666. lpTitle: LPWSTR;
  2667. dwX: DWORD;
  2668. dwY: DWORD;
  2669. dwXSize: DWORD;
  2670. dwYSize: DWORD;
  2671. dwXCountChars: DWORD;
  2672. dwYCountChars: DWORD;
  2673. dwFillAttribute: DWORD;
  2674. dwFlags: DWORD;
  2675. wShowWindow: WORD;
  2676. cbReserved2: WORD;
  2677. lpReserved2: LPBYTE;
  2678. hStdInput: HANDLE;
  2679. hStdOutput: HANDLE;
  2680. hStdError: HANDLE;
  2681. end;
  2682. {$EXTERNALSYM _STARTUPINFOW}
  2683. STARTUPINFOW = _STARTUPINFOW;
  2684. {$EXTERNALSYM STARTUPINFOW}
  2685. TStartupInfoW = STARTUPINFOW;
  2686. PStartupInfoW = LPSTARTUPINFOW;
  2687. {$IFDEF UNICODE}
  2688. STARTUPINFO = STARTUPINFOW;
  2689. {$EXTERNALSYM STARTUPINFO}
  2690. LPSTARTUPINFO = LPSTARTUPINFOW;
  2691. {$EXTERNALSYM LPSTARTUPINFO}
  2692. TStartupInfo = TStartupInfoW;
  2693. PStartupInfo = PStartupInfoW;
  2694. {$ELSE}
  2695. STARTUPINFO = STARTUPINFOA;
  2696. {$EXTERNALSYM STARTUPINFO}
  2697. LPSTARTUPINFO = LPSTARTUPINFOA;
  2698. {$EXTERNALSYM LPSTARTUPINFO}
  2699. TStartupInfo = TStartupInfoA;
  2700. PStartupInfo = PStartupInfoA;
  2701. {$ENDIF UNICODE}
  2702. const
  2703. SHUTDOWN_NORETRY = $00000001;
  2704. {$EXTERNALSYM SHUTDOWN_NORETRY}
  2705. type
  2706. PWIN32_FIND_DATAA = ^WIN32_FIND_DATAA;
  2707. {$EXTERNALSYM PWIN32_FIND_DATAA}
  2708. _WIN32_FIND_DATAA = record
  2709. dwFileAttributes: DWORD;
  2710. ftCreationTime: FILETIME;
  2711. ftLastAccessTime: FILETIME;
  2712. ftLastWriteTime: FILETIME;
  2713. nFileSizeHigh: DWORD;
  2714. nFileSizeLow: DWORD;
  2715. dwReserved0: DWORD;
  2716. dwReserved1: DWORD;
  2717. cFileName: array [0..MAX_PATH - 1] of CHAR;
  2718. cAlternateFileName: array [0..13] of CHAR;
  2719. end;
  2720. {$EXTERNALSYM _WIN32_FIND_DATAA}
  2721. WIN32_FIND_DATAA = _WIN32_FIND_DATAA;
  2722. {$EXTERNALSYM WIN32_FIND_DATAA}
  2723. LPWIN32_FIND_DATAA = ^WIN32_FIND_DATAA;
  2724. {$EXTERNALSYM LPWIN32_FIND_DATAA}
  2725. TWin32FindDataA = WIN32_FIND_DATAA;
  2726. PWin32FindDataA = PWIN32_FIND_DATAA;
  2727. PWIN32_FIND_DATAW = ^WIN32_FIND_DATAW;
  2728. {$EXTERNALSYM PWIN32_FIND_DATAW}
  2729. _WIN32_FIND_DATAW = record
  2730. dwFileAttributes: DWORD;
  2731. ftCreationTime: FILETIME;
  2732. ftLastAccessTime: FILETIME;
  2733. ftLastWriteTime: FILETIME;
  2734. nFileSizeHigh: DWORD;
  2735. nFileSizeLow: DWORD;
  2736. dwReserved0: DWORD;
  2737. dwReserved1: DWORD;
  2738. cFileName: array [0..MAX_PATH - 1] of WCHAR;
  2739. cAlternateFileName: array [0..13] of WCHAR;
  2740. end;
  2741. {$EXTERNALSYM _WIN32_FIND_DATAW}
  2742. WIN32_FIND_DATAW = _WIN32_FIND_DATAW;
  2743. {$EXTERNALSYM WIN32_FIND_DATAW}
  2744. LPWIN32_FIND_DATAW = ^WIN32_FIND_DATAW;
  2745. {$EXTERNALSYM LPWIN32_FIND_DATAW}
  2746. TWin32FindDataW = WIN32_FIND_DATAW;
  2747. PWin32FindDataW = PWIN32_FIND_DATAW;
  2748. {$IFDEF UNICODE}
  2749. WIN32_FIND_DATA = WIN32_FIND_DATAW;
  2750. {$EXTERNALSYM WIN32_FIND_DATA}
  2751. PWIN32_FIND_DATA = PWIN32_FIND_DATAW;
  2752. {$EXTERNALSYM PWIN32_FIND_DATA}
  2753. LPWIN32_FIND_DATA = LPWIN32_FIND_DATAW;
  2754. {$EXTERNALSYM LPWIN32_FIND_DATA}
  2755. TWin32FindData = TWin32FindDataW;
  2756. PWin32FindData = PWin32FindDataW;
  2757. {$ELSE}
  2758. WIN32_FIND_DATA = WIN32_FIND_DATAA;
  2759. {$EXTERNALSYM WIN32_FIND_DATA}
  2760. PWIN32_FIND_DATA = PWIN32_FIND_DATAA;
  2761. {$EXTERNALSYM PWIN32_FIND_DATA}
  2762. LPWIN32_FIND_DATA = LPWIN32_FIND_DATAA;
  2763. {$EXTERNALSYM LPWIN32_FIND_DATA}
  2764. TWin32FindData = TWin32FindDataA;
  2765. PWin32FindData = PWin32FindDataA;
  2766. {$ENDIF UNICODE}
  2767. LPWIN32_FILE_ATTRIBUTE_DATA = ^WIN32_FILE_ATTRIBUTE_DATA;
  2768. {$EXTERNALSYM LPWIN32_FILE_ATTRIBUTE_DATA}
  2769. _WIN32_FILE_ATTRIBUTE_DATA = record
  2770. dwFileAttributes: DWORD;
  2771. ftCreationTime: FILETIME;
  2772. ftLastAccessTime: FILETIME;
  2773. ftLastWriteTime: FILETIME;
  2774. nFileSizeHigh: DWORD;
  2775. nFileSizeLow: DWORD;
  2776. end;
  2777. {$EXTERNALSYM _WIN32_FILE_ATTRIBUTE_DATA}
  2778. WIN32_FILE_ATTRIBUTE_DATA = _WIN32_FILE_ATTRIBUTE_DATA;
  2779. {$EXTERNALSYM WIN32_FILE_ATTRIBUTE_DATA}
  2780. TWin32FileAttributeData = WIN32_FILE_ATTRIBUTE_DATA;
  2781. PWin32FileAttributeData = LPWIN32_FILE_ATTRIBUTE_DATA;
  2782. function CreateMutexA(lpMutexAttributes: LPSECURITY_ATTRIBUTES; bInitialOwner: BOOL; lpName: LPCSTR): HANDLE;
  2783. {$EXTERNALSYM CreateMutexA}
  2784. function CreateMutexW(lpMutexAttributes: LPSECURITY_ATTRIBUTES; bInitialOwner: BOOL; lpName: LPCWSTR): HANDLE;
  2785. {$EXTERNALSYM CreateMutexW}
  2786. function CreateMutex(lpMutexAttributes: LPSECURITY_ATTRIBUTES;
  2787. bInitialOwner: BOOL; lpName: LPCTSTR): HANDLE;
  2788. {$EXTERNALSYM CreateMutex}
  2789. function OpenMutexA(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: LPCSTR): HANDLE; stdcall;
  2790. {$EXTERNALSYM OpenMutexA}
  2791. function OpenMutexW(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: LPCWSTR): HANDLE; stdcall;
  2792. {$EXTERNALSYM OpenMutexW}
  2793. function OpenMutex(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: LPCTSTR): HANDLE; stdcall;
  2794. {$EXTERNALSYM OpenMutex}
  2795. function CreateEventA(lpEventAttributes: LPSECURITY_ATTRIBUTES;
  2796. bManualReset, bInitialState: BOOL; lpName: LPCSTR): HANDLE; stdcall;
  2797. {$EXTERNALSYM CreateEventA}
  2798. function CreateEventW(lpEventAttributes: LPSECURITY_ATTRIBUTES;
  2799. bManualReset, bInitialState: BOOL; lpName: LPCWSTR): HANDLE; stdcall;
  2800. {$EXTERNALSYM CreateEventW}
  2801. function CreateEvent(lpEventAttributes: LPSECURITY_ATTRIBUTES;
  2802. bManualReset, bInitialState: BOOL; lpName: LPCTSTR): HANDLE; stdcall;
  2803. {$EXTERNALSYM CreateEvent}
  2804. function OpenEventA(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: LPCSTR): HANDLE; stdcall;
  2805. {$EXTERNALSYM OpenEventA}
  2806. function OpenEventW(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: LPCWSTR): HANDLE; stdcall;
  2807. {$EXTERNALSYM OpenEventW}
  2808. function OpenEvent(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: LPCTSTR): HANDLE; stdcall;
  2809. {$EXTERNALSYM OpenEvent}
  2810. function CreateSemaphoreA(lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES;
  2811. lInitialCount, lMaximumCount: LONG; lpName: LPCSTR): HANDLE; stdcall;
  2812. {$EXTERNALSYM CreateSemaphoreA}
  2813. function CreateSemaphoreW(lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES;
  2814. lInitialCount, lMaximumCount: LONG; lpName: LPCWSTR): HANDLE; stdcall;
  2815. {$EXTERNALSYM CreateSemaphoreW}
  2816. function CreateSemaphore(lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES;
  2817. lInitialCount, lMaximumCount: LONG; lpName: LPCTSTR): HANDLE; stdcall;
  2818. {$EXTERNALSYM CreateSemaphore}
  2819. function OpenSemaphoreA(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
  2820. lpName: LPCSTR): HANDLE; stdcall;
  2821. {$EXTERNALSYM OpenSemaphoreA}
  2822. function OpenSemaphoreW(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
  2823. lpName: LPCWSTR): HANDLE; stdcall;
  2824. {$EXTERNALSYM OpenSemaphoreW}
  2825. function OpenSemaphore(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
  2826. lpName: LPCTSTR): HANDLE; stdcall;
  2827. {$EXTERNALSYM OpenSemaphore}
  2828. type
  2829. PTIMERAPCROUTINE = procedure(lpArgToCompletionRoutine: LPVOID;
  2830. dwTimerLowValue, dwTimerHighValue: DWORD); stdcall;
  2831. {$EXTERNALSYM PTIMERAPCROUTINE}
  2832. TTimerApcRoutine = PTIMERAPCROUTINE;
  2833. function CreateWaitableTimerA(lpTimerAttributes: LPSECURITY_ATTRIBUTES;
  2834. bManualReset: BOOL; lpTimerName: LPCSTR): HANDLE; stdcall;
  2835. {$EXTERNALSYM CreateWaitableTimerA}
  2836. function CreateWaitableTimerW(lpTimerAttributes: LPSECURITY_ATTRIBUTES;
  2837. bManualReset: BOOL; lpTimerName: LPCWSTR): HANDLE; stdcall;
  2838. {$EXTERNALSYM CreateWaitableTimerW}
  2839. function CreateWaitableTimer(lpTimerAttributes: LPSECURITY_ATTRIBUTES;
  2840. bManualReset: BOOL; lpTimerName: LPCTSTR): HANDLE; stdcall;
  2841. {$EXTERNALSYM CreateWaitableTimer}
  2842. function OpenWaitableTimerA(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
  2843. lpTimerName: LPCSTR): HANDLE; stdcall;
  2844. {$EXTERNALSYM OpenWaitableTimerA}
  2845. function OpenWaitableTimerW(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
  2846. lpTimerName: LPCWSTR): HANDLE; stdcall;
  2847. {$EXTERNALSYM OpenWaitableTimerW}
  2848. function OpenWaitableTimer(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
  2849. lpTimerName: LPCTSTR): HANDLE; stdcall;
  2850. {$EXTERNALSYM OpenWaitableTimer}
  2851. function SetWaitableTimer(hTimer: HANDLE; var lpDueTime: LARGE_INTEGER;
  2852. lPeriod: LONG; pfnCompletionRoutine: PTIMERAPCROUTINE;
  2853. lpArgToCompletionRoutine: LPVOID; fResume: BOOL): BOOL; stdcall;
  2854. {$EXTERNALSYM SetWaitableTimer}
  2855. function CancelWaitableTimer(hTimer: HANDLE): BOOL; stdcall;
  2856. {$EXTERNALSYM CancelWaitableTimer}
  2857. function CreateFileMappingA(hFile: HANDLE; lpFileMappingAttributes: LPSECURITY_ATTRIBUTES;
  2858. flProtect, dwMaximumSizeHigh, dwMaximumSizeLow: DWORD; lpName: LPCSTR): HANDLE; stdcall;
  2859. {$EXTERNALSYM CreateFileMappingA}
  2860. function CreateFileMappingW(hFile: HANDLE; lpFileMappingAttributes: LPSECURITY_ATTRIBUTES;
  2861. flProtect, dwMaximumSizeHigh, dwMaximumSizeLow: DWORD; lpName: LPCWSTR): HANDLE; stdcall;
  2862. {$EXTERNALSYM CreateFileMappingW}
  2863. function CreateFileMapping(hFile: HANDLE; lpFileMappingAttributes: LPSECURITY_ATTRIBUTES;
  2864. flProtect, dwMaximumSizeHigh, dwMaximumSizeLow: DWORD; lpName: LPCTSTR): HANDLE; stdcall;
  2865. {$EXTERNALSYM CreateFileMapping}
  2866. function OpenFileMappingA(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
  2867. lpName: LPCSTR): HANDLE; stdcall;
  2868. {$EXTERNALSYM OpenFileMappingA}
  2869. function OpenFileMappingW(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
  2870. lpName: LPCWSTR): HANDLE; stdcall;
  2871. {$EXTERNALSYM OpenFileMappingW}
  2872. function OpenFileMapping(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
  2873. lpName: LPCTSTR): HANDLE; stdcall;
  2874. {$EXTERNALSYM OpenFileMapping}
  2875. function GetLogicalDriveStringsA(nBufferLength: DWORD; lpBuffer: LPSTR): DWORD; stdcall;
  2876. {$EXTERNALSYM GetLogicalDriveStringsA}
  2877. function GetLogicalDriveStringsW(nBufferLength: DWORD; lpBuffer: LPWSTR): DWORD; stdcall;
  2878. {$EXTERNALSYM GetLogicalDriveStringsW}
  2879. function GetLogicalDriveStrings(nBufferLength: DWORD; lpBuffer: LPTSTR): DWORD; stdcall;
  2880. {$EXTERNALSYM GetLogicalDriveStrings}
  2881. type
  2882. _MEMORY_RESOURCE_NOTIFICATION_TYPE = (
  2883. LowMemoryResourceNotification,
  2884. HighMemoryResourceNotification);
  2885. {$EXTERNALSYM _MEMORY_RESOURCE_NOTIFICATION_TYPE}
  2886. MEMORY_RESOURCE_NOTIFICATION_TYPE = _MEMORY_RESOURCE_NOTIFICATION_TYPE;
  2887. {$EXTERNALSYM MEMORY_RESOURCE_NOTIFICATION_TYPE}
  2888. TMemoryResourceNotification = MEMORY_RESOURCE_NOTIFICATION_TYPE;
  2889. function CreateMemoryResourceNotification(NotificationType: MEMORY_RESOURCE_NOTIFICATION_TYPE): HANDLE; stdcall;
  2890. {$EXTERNALSYM CreateMemoryResourceNotification}
  2891. function QueryMemoryResourceNotification(ResourceNotificationHandle: HANDLE;
  2892. ResourceState: BOOL): BOOL; stdcall;
  2893. {$EXTERNALSYM QueryMemoryResourceNotification}
  2894. function LoadLibraryA(lpLibFileName: LPCSTR): HMODULE; stdcall;
  2895. {$EXTERNALSYM LoadLibraryA}
  2896. function LoadLibraryW(lpLibFileName: LPCWSTR): HMODULE; stdcall;
  2897. {$EXTERNALSYM LoadLibraryW}
  2898. function LoadLibrary(lpLibFileName: LPCTSTR): HMODULE; stdcall;
  2899. {$EXTERNALSYM LoadLibrary}
  2900. function LoadLibraryExA(lpLibFileName: LPCSTR; hFile: HANDLE; dwFlags: DWORD): HMODULE; stdcall;
  2901. {$EXTERNALSYM LoadLibraryExA}
  2902. function LoadLibraryExW(lpLibFileName: LPCWSTR; hFile: HANDLE; dwFlags: DWORD): HMODULE; stdcall;
  2903. {$EXTERNALSYM LoadLibraryExW}
  2904. function LoadLibraryEx(lpLibFileName: LPCTSTR; hFile: HANDLE; dwFlags: DWORD): HMODULE; stdcall;
  2905. {$EXTERNALSYM LoadLibraryEx}
  2906. const
  2907. DONT_RESOLVE_DLL_REFERENCES = $00000001;
  2908. {$EXTERNALSYM DONT_RESOLVE_DLL_REFERENCES}
  2909. LOAD_LIBRARY_AS_DATAFILE = $00000002;
  2910. {$EXTERNALSYM LOAD_LIBRARY_AS_DATAFILE}
  2911. LOAD_WITH_ALTERED_SEARCH_PATH = $00000008;
  2912. {$EXTERNALSYM LOAD_WITH_ALTERED_SEARCH_PATH}
  2913. LOAD_IGNORE_CODE_AUTHZ_LEVEL = $00000010;
  2914. {$EXTERNALSYM LOAD_IGNORE_CODE_AUTHZ_LEVEL}
  2915. function GetModuleFileNameA(hModule: HMODULE; lpFilename: LPSTR; nSize: DWORD): DWORD; stdcall;
  2916. {$EXTERNALSYM GetModuleFileNameA}
  2917. function GetModuleFileNameW(hModule: HMODULE; lpFilename: LPWSTR; nSize: DWORD): DWORD; stdcall;
  2918. {$EXTERNALSYM GetModuleFileNameW}
  2919. function GetModuleFileName(hModule: HMODULE; lpFilename: LPTSTR; nSize: DWORD): DWORD; stdcall;
  2920. {$EXTERNALSYM GetModuleFileName}
  2921. function GetModuleHandleA(lpModuleName: LPCSTR): HMODULE; stdcall;
  2922. {$EXTERNALSYM GetModuleHandleA}
  2923. function GetModuleHandleW(lpModuleName: LPCWSTR): HMODULE; stdcall;
  2924. {$EXTERNALSYM GetModuleHandleW}
  2925. function GetModuleHandle(lpModuleName: LPCTSTR): HMODULE; stdcall;
  2926. {$EXTERNALSYM GetModuleHandle}
  2927. const
  2928. GET_MODULE_HANDLE_EX_FLAG_PIN = $00000001;
  2929. {$EXTERNALSYM GET_MODULE_HANDLE_EX_FLAG_PIN}
  2930. GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = $00000002;
  2931. {$EXTERNALSYM GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT}
  2932. GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = $00000004;
  2933. {$EXTERNALSYM GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS}
  2934. type
  2935. PGET_MODULE_HANDLE_EXA = function(dwFlags: DWORD; lpModuleName: LPCSTR; var phModule: HMODULE): BOOL; stdcall;
  2936. {$EXTERNALSYM PGET_MODULE_HANDLE_EXA}
  2937. PGET_MODULE_HANDLE_EXW = function(dwFlags: DWORD; lpModuleName: LPCWSTR; var phModule: HMODULE): BOOL; stdcall;
  2938. {$EXTERNALSYM PGET_MODULE_HANDLE_EXW}
  2939. {$IFDEF UNICODE}
  2940. PGET_MODULE_HANDLE_EX = PGET_MODULE_HANDLE_EXW;
  2941. {$EXTERNALSYM PGET_MODULE_HANDLE_EX}
  2942. {$ELSE}
  2943. PGET_MODULE_HANDLE_EX = PGET_MODULE_HANDLE_EXA;
  2944. {$EXTERNALSYM PGET_MODULE_HANDLE_EX}
  2945. {$ENDIF UNICODE}
  2946. function GetModuleHandleExA(dwFlags: DWORD; lpModuleName: LPCSTR; var phModule: HMODULE): BOOL; stdcall;
  2947. {$EXTERNALSYM GetModuleHandleExA}
  2948. function GetModuleHandleExW(dwFlags: DWORD; lpModuleName: LPCWSTR; var phModule: HMODULE): BOOL; stdcall;
  2949. {$EXTERNALSYM GetModuleHandleExW}
  2950. function GetModuleHandleEx(dwFlags: DWORD; lpModuleName: LPCTSTR; var phModule: HMODULE): BOOL; stdcall;
  2951. {$EXTERNALSYM GetModuleHandleEx}
  2952. function NeedCurrentDirectoryForExePathA(ExeName: LPCSTR): BOOL; stdcall;
  2953. {$EXTERNALSYM NeedCurrentDirectoryForExePathA}
  2954. function NeedCurrentDirectoryForExePathW(ExeName: LPCWSTR): BOOL; stdcall;
  2955. {$EXTERNALSYM NeedCurrentDirectoryForExePathW}
  2956. function NeedCurrentDirectoryForExePath(ExeName: LPCTSTR): BOOL; stdcall;
  2957. {$EXTERNALSYM NeedCurrentDirectoryForExePath}
  2958. function CreateProcessA(lpApplicationName: LPCSTR; lpCommandLine: LPSTR;
  2959. lpProcessAttributes, lpThreadAttributes: LPSECURITY_ATTRIBUTES;
  2960. bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: LPVOID;
  2961. lpCurrentDirectory: LPCSTR; const lpStartupInfo: STARTUPINFOA;
  2962. var lpProcessInformation: PROCESS_INFORMATION): BOOL; stdcall;
  2963. {$EXTERNALSYM CreateProcessA}
  2964. function CreateProcessW(lpApplicationName: LPCWSTR; lpCommandLine: LPWSTR;
  2965. lpProcessAttributes, lpThreadAttributes: LPSECURITY_ATTRIBUTES;
  2966. bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: LPVOID;
  2967. lpCurrentDirectory: LPCWSTR; const lpStartupInfo: STARTUPINFOW;
  2968. var lpProcessInformation: PROCESS_INFORMATION): BOOL; stdcall;
  2969. {$EXTERNALSYM CreateProcessW}
  2970. function CreateProcess(lpApplicationName: LPCTSTR; lpCommandLine: LPTSTR;
  2971. lpProcessAttributes, lpThreadAttributes: LPSECURITY_ATTRIBUTES;
  2972. bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: LPVOID;
  2973. lpCurrentDirectory: LPCTSTR; const lpStartupInfo: STARTUPINFO;
  2974. var lpProcessInformation: PROCESS_INFORMATION): BOOL; stdcall;
  2975. {$EXTERNALSYM CreateProcess}
  2976. function SetProcessShutdownParameters(dwLevel, dwFlags: DWORD): BOOL; stdcall;
  2977. {$EXTERNALSYM SetProcessShutdownParameters}
  2978. function GetProcessShutdownParameters(var lpdwLevel, lpdwFlags: DWORD): BOOL; stdcall;
  2979. {$EXTERNALSYM GetProcessShutdownParameters}
  2980. function GetProcessVersion(ProcessId: DWORD): DWORD; stdcall;
  2981. {$EXTERNALSYM GetProcessVersion}
  2982. procedure FatalAppExitA(uAction: UINT; lpMessageText: LPCSTR); stdcall;
  2983. {$EXTERNALSYM FatalAppExitA}
  2984. procedure FatalAppExitW(uAction: UINT; lpMessageText: LPCWSTR); stdcall;
  2985. {$EXTERNALSYM FatalAppExitW}
  2986. procedure FatalAppExit(uAction: UINT; lpMessageText: LPCTSTR); stdcall;
  2987. {$EXTERNALSYM FatalAppExit}
  2988. procedure GetStartupInfoA(var lpStartupInfo: STARTUPINFOA); stdcall;
  2989. {$EXTERNALSYM GetStartupInfoA}
  2990. procedure GetStartupInfoW(var lpStartupInfo: STARTUPINFOW); stdcall;
  2991. {$EXTERNALSYM GetStartupInfoW}
  2992. procedure GetStartupInfo(var lpStartupInfo: STARTUPINFO); stdcall;
  2993. {$EXTERNALSYM GetStartupInfo}
  2994. function GetCommandLineA: LPSTR; stdcall;
  2995. {$EXTERNALSYM GetCommandLineA}
  2996. function GetCommandLineW: LPWSTR; stdcall;
  2997. {$EXTERNALSYM GetCommandLineW}
  2998. function GetCommandLine: LPTSTR; stdcall;
  2999. {$EXTERNALSYM GetCommandLine}
  3000. function GetEnvironmentVariableA(lpName: LPCSTR; lpBuffer: LPSTR; nSize: DWORD): DWORD; stdcall;
  3001. {$EXTERNALSYM GetEnvironmentVariableA}
  3002. function GetEnvironmentVariableW(lpName: LPCWSTR; lpBuffer: LPWSTR; nSize: DWORD): DWORD; stdcall;
  3003. {$EXTERNALSYM GetEnvironmentVariableW}
  3004. function GetEnvironmentVariable(lpName: LPCTSTR; lpBuffer: LPTSTR; nSize: DWORD): DWORD; stdcall;
  3005. {$EXTERNALSYM GetEnvironmentVariable}
  3006. function SetEnvironmentVariableA(lpName, lpValue: LPCSTR): BOOL; stdcall;
  3007. {$EXTERNALSYM SetEnvironmentVariableA}
  3008. function SetEnvironmentVariableW(lpName, lpValue: LPCWSTR): BOOL; stdcall;
  3009. {$EXTERNALSYM SetEnvironmentVariableW}
  3010. function SetEnvironmentVariable(lpName, lpValue: LPCTSTR): BOOL; stdcall;
  3011. {$EXTERNALSYM SetEnvironmentVariable}
  3012. function ExpandEnvironmentStringsA(lpSrc: LPCSTR; lpDst: LPSTR; nSize: DWORD): DWORD; stdcall;
  3013. {$EXTERNALSYM ExpandEnvironmentStringsA}
  3014. function ExpandEnvironmentStringsW(lpSrc: LPCWSTR; lpDst: LPWSTR; nSize: DWORD): DWORD; stdcall;
  3015. {$EXTERNALSYM ExpandEnvironmentStringsW}
  3016. function ExpandEnvironmentStrings(lpSrc: LPCTSTR; lpDst: LPTSTR; nSize: DWORD): DWORD; stdcall;
  3017. {$EXTERNALSYM ExpandEnvironmentStrings}
  3018. function GetFirmwareEnvironmentVariableA(lpName, lpGuid: LPCSTR; pBuffer: PVOID;
  3019. nSize: DWORD): DWORD; stdcall;
  3020. {$EXTERNALSYM GetFirmwareEnvironmentVariableA}
  3021. function GetFirmwareEnvironmentVariableW(lpName, lpGuid: LPCWSTR; pBuffer: PVOID;
  3022. nSize: DWORD): DWORD; stdcall;
  3023. {$EXTERNALSYM GetFirmwareEnvironmentVariableW}
  3024. function GetFirmwareEnvironmentVariable(lpName, lpGuid: LPCTSTR; pBuffer: PVOID;
  3025. nSize: DWORD): DWORD; stdcall;
  3026. {$EXTERNALSYM GetFirmwareEnvironmentVariable}
  3027. function SetFirmwareEnvironmentVariableA(lpName, lpGuid: LPCSTR; pValue: PVOID;
  3028. nSize: DWORD): BOOL; stdcall;
  3029. {$EXTERNALSYM SetFirmwareEnvironmentVariableA}
  3030. function SetFirmwareEnvironmentVariableW(lpName, lpGuid: LPCWSTR; pValue: PVOID;
  3031. nSize: DWORD): BOOL; stdcall;
  3032. {$EXTERNALSYM SetFirmwareEnvironmentVariableW}
  3033. function SetFirmwareEnvironmentVariable(lpName, lpGuid: LPCTSTR; pValue: PVOID;
  3034. nSize: DWORD): BOOL; stdcall;
  3035. {$EXTERNALSYM SetFirmwareEnvironmentVariable}
  3036. procedure OutputDebugStringA(lpOutputString: LPCSTR); stdcall;
  3037. {$EXTERNALSYM OutputDebugStringA}
  3038. procedure OutputDebugStringW(lpOutputString: LPCWSTR); stdcall;
  3039. {$EXTERNALSYM OutputDebugStringW}
  3040. procedure OutputDebugString(lpOutputString: LPCTSTR); stdcall;
  3041. {$EXTERNALSYM OutputDebugString}
  3042. function FindResourceA(hModule: HMODULE; lpName, lpType: LPCSTR): HRSRC; stdcall;
  3043. {$EXTERNALSYM FindResourceA}
  3044. function FindResourceW(hModule: HMODULE; lpName, lpType: LPCWSTR): HRSRC; stdcall;
  3045. {$EXTERNALSYM FindResourceW}
  3046. function FindResource(hModule: HMODULE; lpName, lpType: LPCTSTR): HRSRC; stdcall;
  3047. {$EXTERNALSYM FindResource}
  3048. function FindResourceExA(hModule: HMODULE; lpType, lpName: LPCSTR; wLanguage: WORD): HRSRC; stdcall;
  3049. {$EXTERNALSYM FindResourceExA}
  3050. function FindResourceExW(hModule: HMODULE; lpType, lpName: LPCWSTR; wLanguage: WORD): HRSRC; stdcall;
  3051. {$EXTERNALSYM FindResourceExW}
  3052. function FindResourceEx(hModule: HMODULE; lpType, lpName: LPCTSTR; wLanguage: WORD): HRSRC; stdcall;
  3053. {$EXTERNALSYM FindResourceEx}
  3054. type
  3055. ENUMRESTYPEPROCA = function(hModule: HMODULE; lpType: LPSTR; lParam: LONG_PTR): BOOL; stdcall;
  3056. {$EXTERNALSYM ENUMRESTYPEPROCA}
  3057. ENUMRESTYPEPROCW = function(hModule: HMODULE; lpType: LPWSTR; lParam: LONG_PTR): BOOL; stdcall;
  3058. {$EXTERNALSYM ENUMRESTYPEPROCW}
  3059. ENUMRESTYPEPROC = function(hModule: HMODULE; lpType: LPTSTR; lParam: LONG_PTR): BOOL; stdcall;
  3060. {$EXTERNALSYM ENUMRESTYPEPROC}
  3061. TEnumResTypeProcA = ENUMRESTYPEPROCA;
  3062. TEnumResTypeProcW = ENUMRESTYPEPROCW;
  3063. TEnumResTypeProc = ENUMRESTYPEPROC;
  3064. ENUMRESNAMEPROCA = function(hModule: HMODULE; lpType: LPCSTR; lpName: LPSTR;
  3065. lParam: LONG_PTR): BOOL; stdcall;
  3066. {$EXTERNALSYM ENUMRESNAMEPROCA}
  3067. ENUMRESNAMEPROCW = function(hModule: HMODULE; lpType: LPCWSTR; lpName: LPWSTR;
  3068. lParam: LONG_PTR): BOOL; stdcall;
  3069. {$EXTERNALSYM ENUMRESNAMEPROCW}
  3070. ENUMRESNAMEPROC = function(hModule: HMODULE; lpType: LPCTSTR; lpName: LPTSTR;
  3071. lParam: LONG_PTR): BOOL; stdcall;
  3072. {$EXTERNALSYM ENUMRESNAMEPROC}
  3073. TEnumResNameProcA = ENUMRESNAMEPROCA;
  3074. TEnumResNameProcW = ENUMRESNAMEPROCW;
  3075. TEnumResNameProc = ENUMRESNAMEPROC;
  3076. ENUMRESLANGPROCA = function(hModule: HMODULE; lpType, lpName: LPCSTR;
  3077. wLanguage: WORD; lParam: LONG_PTR): BOOL; stdcall;
  3078. {$EXTERNALSYM ENUMRESLANGPROCA}
  3079. ENUMRESLANGPROCW = function(hModule: HMODULE; lpType, lpName: LPCWSTR;
  3080. wLanguage: WORD; lParam: LONG_PTR): BOOL; stdcall;
  3081. {$EXTERNALSYM ENUMRESLANGPROCW}
  3082. ENUMRESLANGPROC = function(hModule: HMODULE; lpType, lpName: LPCTSTR;
  3083. wLanguage: WORD; lParam: LONG_PTR): BOOL; stdcall;
  3084. {$EXTERNALSYM ENUMRESLANGPROC}
  3085. TEnumResLangProcA = ENUMRESLANGPROCA;
  3086. TEnumResLangProcW = ENUMRESLANGPROCW;
  3087. TEnumResLangProc = ENUMRESLANGPROC;
  3088. function EnumResourceTypesA(hModule: HMODULE; lpEnumFunc: ENUMRESTYPEPROCA;
  3089. lParam: LONG_PTR): BOOL; stdcall;
  3090. {$EXTERNALSYM EnumResourceTypesA}
  3091. function EnumResourceTypesW(hModule: HMODULE; lpEnumFunc: ENUMRESTYPEPROCW;
  3092. lParam: LONG_PTR): BOOL; stdcall;
  3093. {$EXTERNALSYM EnumResourceTypesW}
  3094. function EnumResourceTypes(hModule: HMODULE; lpEnumFunc: ENUMRESTYPEPROC;
  3095. lParam: LONG_PTR): BOOL; stdcall;
  3096. {$EXTERNALSYM EnumResourceTypes}
  3097. function EnumResourceNamesA(hModule: HMODULE; lpType: LPCSTR;
  3098. lpEnumFunc: ENUMRESNAMEPROCA; lParam: LONG_PTR): BOOL; stdcall;
  3099. {$EXTERNALSYM EnumResourceNamesA}
  3100. function EnumResourceNamesW(hModule: HMODULE; lpType: LPCWSTR;
  3101. lpEnumFunc: ENUMRESNAMEPROCW; lParam: LONG_PTR): BOOL; stdcall;
  3102. {$EXTERNALSYM EnumResourceNamesW}
  3103. function EnumResourceNames(hModule: HMODULE; lpType: LPCTSTR;
  3104. lpEnumFunc: ENUMRESNAMEPROC; lParam: LONG_PTR): BOOL; stdcall;
  3105. {$EXTERNALSYM EnumResourceNames}
  3106. function EnumResourceLanguagesA(hModule: HMODULE; lpType, lpName: LPCSTR;
  3107. lpEnumFunc: ENUMRESLANGPROCA; lParam: LONG_PTR): BOOL; stdcall;
  3108. {$EXTERNALSYM EnumResourceLanguagesA}
  3109. function EnumResourceLanguagesW(hModule: HMODULE; lpType, lpName: LPCWSTR;
  3110. lpEnumFunc: ENUMRESLANGPROCW; lParam: LONG_PTR): BOOL; stdcall;
  3111. {$EXTERNALSYM EnumResourceLanguagesW}
  3112. function EnumResourceLanguages(hModule: HMODULE; lpType, lpName: LPCTSTR;
  3113. lpEnumFunc: ENUMRESLANGPROC; lParam: LONG_PTR): BOOL; stdcall;
  3114. {$EXTERNALSYM EnumResourceLanguages}
  3115. function BeginUpdateResourceA(pFileName: LPCSTR; bDeleteExistingResources: BOOL): HANDLE; stdcall;
  3116. {$EXTERNALSYM BeginUpdateResourceA}
  3117. function BeginUpdateResourceW(pFileName: LPCWSTR; bDeleteExistingResources: BOOL): HANDLE; stdcall;
  3118. {$EXTERNALSYM BeginUpdateResourceW}
  3119. function BeginUpdateResource(pFileName: LPCTSTR; bDeleteExistingResources: BOOL): HANDLE; stdcall;
  3120. {$EXTERNALSYM BeginUpdateResource}
  3121. function UpdateResourceA(hUpdate: HANDLE; lpType, lpName: LPCSTR;
  3122. wLanguage: WORD; lpData: LPVOID; cbData: DWORD): BOOL; stdcall;
  3123. {$EXTERNALSYM UpdateResourceA}
  3124. function UpdateResourceW(hUpdate: HANDLE; lpType, lpName: LPCWSTR;
  3125. wLanguage: WORD; lpData: LPVOID; cbData: DWORD): BOOL; stdcall;
  3126. {$EXTERNALSYM UpdateResourceW}
  3127. function UpdateResource(hUpdate: HANDLE; lpType, lpName: LPCTSTR;
  3128. wLanguage: WORD; lpData: LPVOID; cbData: DWORD): BOOL; stdcall;
  3129. {$EXTERNALSYM UpdateResource}
  3130. function EndUpdateResourceA(hUpdate: HANDLE; fDiscard: BOOL): BOOL; stdcall;
  3131. {$EXTERNALSYM EndUpdateResourceA}
  3132. function EndUpdateResourceW(hUpdate: HANDLE; fDiscard: BOOL): BOOL; stdcall;
  3133. {$EXTERNALSYM EndUpdateResourceW}
  3134. function EndUpdateResource(hUpdate: HANDLE; fDiscard: BOOL): BOOL; stdcall;
  3135. {$EXTERNALSYM EndUpdateResource}
  3136. function GlobalAddAtomA(lpString: LPCSTR): ATOM; stdcall;
  3137. {$EXTERNALSYM GlobalAddAtomA}
  3138. function GlobalAddAtomW(lpString: LPCWSTR): ATOM; stdcall;
  3139. {$EXTERNALSYM GlobalAddAtomW}
  3140. function GlobalAddAtom(lpString: LPCTSTR): ATOM; stdcall;
  3141. {$EXTERNALSYM GlobalAddAtom}
  3142. function GlobalFindAtomA(lpString: LPCSTR): ATOM; stdcall;
  3143. {$EXTERNALSYM GlobalFindAtomA}
  3144. function GlobalFindAtomW(lpString: LPCWSTR): ATOM; stdcall;
  3145. {$EXTERNALSYM GlobalFindAtomW}
  3146. function GlobalFindAtom(lpString: LPCTSTR): ATOM; stdcall;
  3147. {$EXTERNALSYM GlobalFindAtom}
  3148. function GlobalGetAtomNameA(nAtom: ATOM; lpBuffer: LPSTR; nSize: Integer): UINT; stdcall;
  3149. {$EXTERNALSYM GlobalGetAtomNameA}
  3150. function GlobalGetAtomNameW(nAtom: ATOM; lpBuffer: LPWSTR; nSize: Integer): UINT; stdcall;
  3151. {$EXTERNALSYM GlobalGetAtomNameW}
  3152. function GlobalGetAtomName(nAtom: ATOM; lpBuffer: LPTSTR; nSize: Integer): UINT; stdcall;
  3153. {$EXTERNALSYM GlobalGetAtomName}
  3154. function AddAtomA(lpString: LPCSTR): ATOM; stdcall;
  3155. {$EXTERNALSYM AddAtomA}
  3156. function AddAtomW(lpString: LPCWSTR): ATOM; stdcall;
  3157. {$EXTERNALSYM AddAtomW}
  3158. function AddAtom(lpString: LPCTSTR): ATOM; stdcall;
  3159. {$EXTERNALSYM AddAtom}
  3160. function FindAtomA(lpString: LPCSTR): ATOM; stdcall;
  3161. {$EXTERNALSYM FindAtomA}
  3162. function FindAtomW(lpString: LPCWSTR): ATOM; stdcall;
  3163. {$EXTERNALSYM FindAtomW}
  3164. function FindAtom(lpString: LPCTSTR): ATOM; stdcall;
  3165. {$EXTERNALSYM FindAtom}
  3166. function GetAtomNameA(nAtom: ATOM; lpBuffer: LPSTR; nSize: Integer): UINT; stdcall;
  3167. {$EXTERNALSYM GetAtomNameA}
  3168. function GetAtomNameW(nAtom: ATOM; lpBuffer: LPWSTR; nSize: Integer): UINT; stdcall;
  3169. {$EXTERNALSYM GetAtomNameW}
  3170. function GetAtomName(nAtom: ATOM; lpBuffer: LPTSTR; nSize: Integer): UINT; stdcall;
  3171. {$EXTERNALSYM GetAtomName}
  3172. function GetProfileIntA(lpAppName, lpKeyName: LPCSTR; nDefault: Integer): UINT; stdcall;
  3173. {$EXTERNALSYM GetProfileIntA}
  3174. function GetProfileIntW(lpAppName, lpKeyName: LPCWSTR; nDefault: Integer): UINT; stdcall;
  3175. {$EXTERNALSYM GetProfileIntW}
  3176. function GetProfileInt(lpAppName, lpKeyName: LPCTSTR; nDefault: Integer): UINT; stdcall;
  3177. {$EXTERNALSYM GetProfileInt}
  3178. function GetProfileStringA(lpAppName, lpKeyName, lpDefault: LPCSTR;
  3179. lpReturnedString: LPSTR; nSize: DWORD): DWORD; stdcall;
  3180. {$EXTERNALSYM GetProfileStringA}
  3181. function GetProfileStringW(lpAppName, lpKeyName, lpDefault: LPCWSTR;
  3182. lpReturnedString: LPWSTR; nSize: DWORD): DWORD; stdcall;
  3183. {$EXTERNALSYM GetProfileStringW}
  3184. function GetProfileString(lpAppName, lpKeyName, lpDefault: LPCTSTR;
  3185. lpReturnedString: LPTSTR; nSize: DWORD): DWORD; stdcall;
  3186. {$EXTERNALSYM GetProfileString}
  3187. function WriteProfileStringA(lpAppName, lpKeyName, lpString: LPCSTR): BOOL; stdcall;
  3188. {$EXTERNALSYM WriteProfileStringA}
  3189. function WriteProfileStringW(lpAppName, lpKeyName, lpString: LPCWSTR): BOOL; stdcall;
  3190. {$EXTERNALSYM WriteProfileStringW}
  3191. function WriteProfileString(lpAppName, lpKeyName, lpString: LPCTSTR): BOOL; stdcall;
  3192. {$EXTERNALSYM WriteProfileString}
  3193. function GetProfileSectionA(lpAppName: LPCSTR; lpReturnedString: LPSTR;
  3194. nSize: DWORD): DWORD; stdcall;
  3195. {$EXTERNALSYM GetProfileSectionA}
  3196. function GetProfileSectionW(lpAppName: LPCWSTR; lpReturnedString: LPWSTR;
  3197. nSize: DWORD): DWORD; stdcall;
  3198. {$EXTERNALSYM GetProfileSectionW}
  3199. function GetProfileSection(lpAppName: LPCTSTR; lpReturnedString: LPTSTR;
  3200. nSize: DWORD): DWORD; stdcall;
  3201. {$EXTERNALSYM GetProfileSection}
  3202. function WriteProfileSectionA(lpAppName, lpString: LPCSTR): BOOL; stdcall;
  3203. {$EXTERNALSYM WriteProfileSectionA}
  3204. function WriteProfileSectionW(lpAppName, lpString: LPCWSTR): BOOL; stdcall;
  3205. {$EXTERNALSYM WriteProfileSectionW}
  3206. function WriteProfileSection(lpAppName, lpString: LPCTSTR): BOOL; stdcall;
  3207. {$EXTERNALSYM WriteProfileSection}
  3208. function GetPrivateProfileIntA(lpAppName, lpKeyName: LPCSTR; nDefault: Integer;
  3209. lpFileName: LPCSTR): UINT; stdcall;
  3210. {$EXTERNALSYM GetPrivateProfileIntA}
  3211. function GetPrivateProfileIntW(lpAppName, lpKeyName: LPCWSTR; nDefault: Integer;
  3212. lpFileName: LPCWSTR): UINT; stdcall;
  3213. {$EXTERNALSYM GetPrivateProfileIntW}
  3214. function GetPrivateProfileInt(lpAppName, lpKeyName: LPCTSTR; nDefault: Integer;
  3215. lpFileName: LPCTSTR): UINT; stdcall;
  3216. {$EXTERNALSYM GetPrivateProfileInt}
  3217. function GetPrivateProfileStringA(lpAppName, lpKeyName, lpDefault: LPCSTR;
  3218. lpReturnedString: LPSTR; nSize: DWORD; lpFileName: LPCSTR): DWORD; stdcall;
  3219. {$EXTERNALSYM GetPrivateProfileStringA}
  3220. function GetPrivateProfileStringW(lpAppName, lpKeyName, lpDefault: LPCWSTR;
  3221. lpReturnedString: LPWSTR; nSize: DWORD; lpFileName: LPCWSTR): DWORD; stdcall;
  3222. {$EXTERNALSYM GetPrivateProfileStringW}
  3223. function GetPrivateProfileString(lpAppName, lpKeyName, lpDefault: LPCTSTR;
  3224. lpReturnedString: LPTSTR; nSize: DWORD; lpFileName: LPCTSTR): DWORD; stdcall;
  3225. {$EXTERNALSYM GetPrivateProfileString}
  3226. function WritePrivateProfileStringA(lpAppName, lpKeyName, lpString,
  3227. lpFileName: LPCSTR): BOOL; stdcall;
  3228. {$EXTERNALSYM WritePrivateProfileStringA}
  3229. function WritePrivateProfileStringW(lpAppName, lpKeyName, lpString,
  3230. lpFileName: LPCWSTR): BOOL; stdcall;
  3231. {$EXTERNALSYM WritePrivateProfileStringW}
  3232. function WritePrivateProfileString(lpAppName, lpKeyName, lpString,
  3233. lpFileName: LPCTSTR): BOOL; stdcall;
  3234. {$EXTERNALSYM WritePrivateProfileString}
  3235. function GetPrivateProfileSectionA(lpAppName: LPCSTR; lpReturnedString: LPSTR;
  3236. nSize: DWORD; lpFileName: LPCSTR): DWORD; stdcall;
  3237. {$EXTERNALSYM GetPrivateProfileSectionA}
  3238. function GetPrivateProfileSectionW(lpAppName: LPCWSTR; lpReturnedString: LPWSTR;
  3239. nSize: DWORD; lpFileName: LPCWSTR): DWORD; stdcall;
  3240. {$EXTERNALSYM GetPrivateProfileSectionW}
  3241. function GetPrivateProfileSection(lpAppName: LPCTSTR; lpReturnedString: LPTSTR;
  3242. nSize: DWORD; lpFileName: LPCTSTR): DWORD; stdcall;
  3243. {$EXTERNALSYM GetPrivateProfileSection}
  3244. function WritePrivateProfileSectionA(lpAppName, lpString, lpFileName: LPCSTR): BOOL; stdcall;
  3245. {$EXTERNALSYM WritePrivateProfileSectionA}
  3246. function WritePrivateProfileSectionW(lpAppName, lpString, lpFileName: LPCWSTR): BOOL; stdcall;
  3247. {$EXTERNALSYM WritePrivateProfileSectionW}
  3248. function WritePrivateProfileSection(lpAppName, lpString, lpFileName: LPCTSTR): BOOL; stdcall;
  3249. {$EXTERNALSYM WritePrivateProfileSection}
  3250. function GetPrivateProfileSectionNamesA(lpszReturnBuffer: LPSTR; nSize: DWORD;
  3251. lpFileName: LPCSTR): DWORD; stdcall;
  3252. {$EXTERNALSYM GetPrivateProfileSectionNamesA}
  3253. function GetPrivateProfileSectionNamesW(lpszReturnBuffer: LPWSTR; nSize: DWORD;
  3254. lpFileName: LPCWSTR): DWORD; stdcall;
  3255. {$EXTERNALSYM GetPrivateProfileSectionNamesW}
  3256. function GetPrivateProfileSectionNames(lpszReturnBuffer: LPTSTR; nSize: DWORD;
  3257. lpFileName: LPCTSTR): DWORD; stdcall;
  3258. {$EXTERNALSYM GetPrivateProfileSectionNames}
  3259. function GetPrivateProfileStructA(lpszSection, lpszKey: LPCSTR; lpStruct: LPVOID;
  3260. uSizeStruct: UINT; szFile: LPCSTR): BOOL; stdcall;
  3261. {$EXTERNALSYM GetPrivateProfileStructA}
  3262. function GetPrivateProfileStructW(lpszSection, lpszKey: LPCWSTR; lpStruct: LPVOID;
  3263. uSizeStruct: UINT; szFile: LPCWSTR): BOOL; stdcall;
  3264. {$EXTERNALSYM GetPrivateProfileStructW}
  3265. function GetPrivateProfileStruct(lpszSection, lpszKey: LPCTSTR; lpStruct: LPVOID;
  3266. uSizeStruct: UINT; szFile: LPCTSTR): BOOL; stdcall;
  3267. {$EXTERNALSYM GetPrivateProfileStruct}
  3268. function WritePrivateProfileStructA(lpszSection, lpszKey: LPCSTR; lpStruct: LPVOID;
  3269. uSizeStruct: UINT; szFile: LPCSTR): BOOL; stdcall;
  3270. {$EXTERNALSYM WritePrivateProfileStructA}
  3271. function WritePrivateProfileStructW(lpszSection, lpszKey: LPCWSTR; lpStruct: LPVOID;
  3272. uSizeStruct: UINT; szFile: LPCWSTR): BOOL; stdcall;
  3273. {$EXTERNALSYM WritePrivateProfileStructW}
  3274. function WritePrivateProfileStruct(lpszSection, lpszKey: LPCTSTR; lpStruct: LPVOID;
  3275. uSizeStruct: UINT; szFile: LPCTSTR): BOOL; stdcall;
  3276. {$EXTERNALSYM WritePrivateProfileStruct}
  3277. function GetDriveTypeA(lpRootPathName: LPCSTR): UINT; stdcall;
  3278. {$EXTERNALSYM GetDriveTypeA}
  3279. function GetDriveTypeW(lpRootPathName: LPCWSTR): UINT; stdcall;
  3280. {$EXTERNALSYM GetDriveTypeW}
  3281. function GetDriveType(lpRootPathName: LPCTSTR): UINT; stdcall;
  3282. {$EXTERNALSYM GetDriveType}
  3283. function GetSystemDirectoryA(lpBuffer: LPSTR; uSize: UINT): UINT; stdcall;
  3284. {$EXTERNALSYM GetSystemDirectoryA}
  3285. function GetSystemDirectoryW(lpBuffer: LPWSTR; uSize: UINT): UINT; stdcall;
  3286. {$EXTERNALSYM GetSystemDirectoryW}
  3287. function GetSystemDirectory(lpBuffer: LPTSTR; uSize: UINT): UINT; stdcall;
  3288. {$EXTERNALSYM GetSystemDirectory}
  3289. function GetTempPathA(nBufferLength: DWORD; lpBuffer: LPSTR): DWORD; stdcall;
  3290. {$EXTERNALSYM GetTempPathA}
  3291. function GetTempPathW(nBufferLength: DWORD; lpBuffer: LPWSTR): DWORD; stdcall;
  3292. {$EXTERNALSYM GetTempPathW}
  3293. function GetTempPath(nBufferLength: DWORD; lpBuffer: LPTSTR): DWORD; stdcall;
  3294. {$EXTERNALSYM GetTempPath}
  3295. function GetTempFileNameA(lpPathName, lpPrefixString: LPCSTR; uUnique: UINT;
  3296. lpTempFileName: LPSTR): UINT; stdcall;
  3297. {$EXTERNALSYM GetTempFileNameA}
  3298. function GetTempFileNameW(lpPathName, lpPrefixString: LPCWSTR; uUnique: UINT;
  3299. lpTempFileName: LPWSTR): UINT; stdcall;
  3300. {$EXTERNALSYM GetTempFileNameW}
  3301. function GetTempFileName(lpPathName, lpPrefixString: LPCTSTR; uUnique: UINT;
  3302. lpTempFileName: LPTSTR): UINT; stdcall;
  3303. {$EXTERNALSYM GetTempFileName}
  3304. function GetWindowsDirectoryA(lpBuffer: LPSTR; uSize: UINT): UINT; stdcall;
  3305. {$EXTERNALSYM GetWindowsDirectoryA}
  3306. function GetWindowsDirectoryW(lpBuffer: LPWSTR; uSize: UINT): UINT; stdcall;
  3307. {$EXTERNALSYM GetWindowsDirectoryW}
  3308. function GetWindowsDirectory(lpBuffer: LPTSTR; uSize: UINT): UINT; stdcall;
  3309. {$EXTERNALSYM GetWindowsDirectory}
  3310. function GetSystemWindowsDirectoryA(lpBuffer: LPSTR; uSize: UINT): UINT; stdcall;
  3311. {$EXTERNALSYM GetSystemWindowsDirectoryA}
  3312. function GetSystemWindowsDirectoryW(lpBuffer: LPWSTR; uSize: UINT): UINT; stdcall;
  3313. {$EXTERNALSYM GetSystemWindowsDirectoryW}
  3314. function GetSystemWindowsDirectory(lpBuffer: LPTSTR; uSize: UINT): UINT; stdcall;
  3315. {$EXTERNALSYM GetSystemWindowsDirectory}
  3316. function GetSystemWow64DirectoryA(lpBuffer: LPSTR; uSize: UINT): UINT; stdcall;
  3317. {$EXTERNALSYM GetSystemWow64DirectoryA}
  3318. function GetSystemWow64DirectoryW(lpBuffer: LPWSTR; uSize: UINT): UINT; stdcall;
  3319. {$EXTERNALSYM GetSystemWow64DirectoryW}
  3320. function GetSystemWow64Directory(lpBuffer: LPTSTR; uSize: UINT): UINT; stdcall;
  3321. {$EXTERNALSYM GetSystemWow64Directory}
  3322. function Wow64EnableWow64FsRedirection(Wow64FsEnableRedirection: BOOL): BOOL; stdcall;
  3323. {$EXTERNALSYM Wow64EnableWow64FsRedirection}
  3324. //
  3325. // for GetProcAddress
  3326. //
  3327. type
  3328. PGET_SYSTEM_WOW64_DIRECTORY_A = function(lpBuffer: LPSTR; uSize: UINT): UINT; stdcall;
  3329. {$EXTERNALSYM PGET_SYSTEM_WOW64_DIRECTORY_A}
  3330. PGET_SYSTEM_WOW64_DIRECTORY_W = function(lpBuffer: LPWSTR; uSize: UINT): UINT; stdcall;
  3331. {$EXTERNALSYM PGET_SYSTEM_WOW64_DIRECTORY_W}
  3332. //
  3333. // GetProcAddress only accepts GET_SYSTEM_WOW64_DIRECTORY_NAME_A_A,
  3334. // GET_SYSTEM_WOW64_DIRECTORY_NAME_W_A, GET_SYSTEM_WOW64_DIRECTORY_NAME_T_A.
  3335. // The others are if you want to use the strings in some other way.
  3336. //
  3337. const
  3338. GET_SYSTEM_WOW64_DIRECTORY_NAME_A_A = 'GetSystemWow64DirectoryA';
  3339. {$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_A_A}
  3340. GET_SYSTEM_WOW64_DIRECTORY_NAME_A_W = WideString('GetSystemWow64DirectoryA');
  3341. {$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_A_W}
  3342. GET_SYSTEM_WOW64_DIRECTORY_NAME_A_T = __TEXT('GetSystemWow64DirectoryA');
  3343. {$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_A_T}
  3344. GET_SYSTEM_WOW64_DIRECTORY_NAME_W_A = 'GetSystemWow64DirectoryW';
  3345. {$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_W_A}
  3346. GET_SYSTEM_WOW64_DIRECTORY_NAME_W_W = WideString('GetSystemWow64DirectoryW');
  3347. {$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_W_W}
  3348. GET_SYSTEM_WOW64_DIRECTORY_NAME_W_T = __TEXT('GetSystemWow64DirectoryW');
  3349. {$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_W_T}
  3350. {$IFDEF UNICODE}
  3351. GET_SYSTEM_WOW64_DIRECTORY_NAME_T_A = GET_SYSTEM_WOW64_DIRECTORY_NAME_W_A;
  3352. {$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_T_A}
  3353. GET_SYSTEM_WOW64_DIRECTORY_NAME_T_W = GET_SYSTEM_WOW64_DIRECTORY_NAME_W_W;
  3354. {$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_T_W}
  3355. GET_SYSTEM_WOW64_DIRECTORY_NAME_T_T = GET_SYSTEM_WOW64_DIRECTORY_NAME_W_T;
  3356. {$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_T_T}
  3357. {$ELSE}
  3358. GET_SYSTEM_WOW64_DIRECTORY_NAME_T_A = GET_SYSTEM_WOW64_DIRECTORY_NAME_A_A;
  3359. {$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_T_A}
  3360. GET_SYSTEM_WOW64_DIRECTORY_NAME_T_W = GET_SYSTEM_WOW64_DIRECTORY_NAME_A_W;
  3361. {$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_T_W}
  3362. GET_SYSTEM_WOW64_DIRECTORY_NAME_T_T = GET_SYSTEM_WOW64_DIRECTORY_NAME_A_T;
  3363. {$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_T_T}
  3364. {$ENDIF UNICODE}
  3365. function SetCurrentDirectoryA(lpPathName: LPCSTR): BOOL; stdcall;
  3366. {$EXTERNALSYM SetCurrentDirectoryA}
  3367. function SetCurrentDirectoryW(lpPathName: LPCWSTR): BOOL; stdcall;
  3368. {$EXTERNALSYM SetCurrentDirectoryW}
  3369. function SetCurrentDirectory(lpPathName: LPCTSTR): BOOL; stdcall;
  3370. {$EXTERNALSYM SetCurrentDirectory}
  3371. function GetCurrentDirectoryA(nBufferLength: DWORD; lpBuffer: LPSTR): DWORD; stdcall;
  3372. {$EXTERNALSYM GetCurrentDirectoryA}
  3373. function GetCurrentDirectoryW(nBufferLength: DWORD; lpBuffer: LPWSTR): DWORD; stdcall;
  3374. {$EXTERNALSYM GetCurrentDirectoryW}
  3375. function GetCurrentDirectory(nBufferLength: DWORD; lpBuffer: LPTSTR): DWORD; stdcall;
  3376. {$EXTERNALSYM GetCurrentDirectory}
  3377. //#if _WIN32_WINNT >= 0x0502
  3378. function SetDllDirectoryA(lpPathName: LPCSTR): BOOL; stdcall;
  3379. {$EXTERNALSYM SetDllDirectoryA}
  3380. function SetDllDirectoryW(lpPathName: LPCWSTR): BOOL; stdcall;
  3381. {$EXTERNALSYM SetDllDirectoryW}
  3382. function SetDllDirectory(lpPathName: LPCTSTR): BOOL; stdcall;
  3383. {$EXTERNALSYM SetDllDirectory}
  3384. function GetDllDirectoryA(nBufferLength: DWORD; lpBuffer: LPSTR): DWORD; stdcall;
  3385. {$EXTERNALSYM GetDllDirectoryA}
  3386. function GetDllDirectoryW(nBufferLength: DWORD; lpBuffer: LPWSTR): DWORD; stdcall;
  3387. {$EXTERNALSYM GetDllDirectoryW}
  3388. function GetDllDirectory(nBufferLength: DWORD; lpBuffer: LPTSTR): DWORD; stdcall;
  3389. {$EXTERNALSYM GetDllDirectory}
  3390. //#endif // _WIN32_WINNT >= 0x0502
  3391. function GetDiskFreeSpaceA(lpRootPathName: LPCSTR; var lpSectorsPerCluster,
  3392. lpBytesPerSector, lpNumberOfFreeClusters, lpTotalNumberOfClusters: DWORD): BOOL; stdcall;
  3393. {$EXTERNALSYM GetDiskFreeSpaceA}
  3394. function GetDiskFreeSpaceW(lpRootPathName: LPCWSTR; var lpSectorsPerCluster,
  3395. lpBytesPerSector, lpNumberOfFreeClusters, lpTotalNumberOfClusters: DWORD): BOOL; stdcall;
  3396. {$EXTERNALSYM GetDiskFreeSpaceW}
  3397. function GetDiskFreeSpace(lpRootPathName: LPCTSTR; var lpSectorsPerCluster,
  3398. lpBytesPerSector, lpNumberOfFreeClusters, lpTotalNumberOfClusters: DWORD): BOOL; stdcall;
  3399. {$EXTERNALSYM GetDiskFreeSpace}
  3400. function GetDiskFreeSpaceExA(lpDirectoryName: LPCSTR; var lpFreeBytesAvailableToCaller,
  3401. lpTotalNumberOfBytes: ULARGE_INTEGER; lpTotalNumberOfFreeBytes: PULARGE_INTEGER): BOOL; stdcall;
  3402. {$EXTERNALSYM GetDiskFreeSpaceExA}
  3403. function GetDiskFreeSpaceExW(lpDirectoryName: LPCWSTR; var lpFreeBytesAvailableToCaller,
  3404. lpTotalNumberOfBytes: ULARGE_INTEGER; lpTotalNumberOfFreeBytes: PULARGE_INTEGER): BOOL; stdcall;
  3405. {$EXTERNALSYM GetDiskFreeSpaceExW}
  3406. function GetDiskFreeSpaceEx(lpDirectoryName: LPCTSTR; var lpFreeBytesAvailableToCaller,
  3407. lpTotalNumberOfBytes: ULARGE_INTEGER; lpTotalNumberOfFreeBytes: PULARGE_INTEGER): BOOL; stdcall;
  3408. {$EXTERNALSYM GetDiskFreeSpaceEx}
  3409. function CreateDirectoryA(lpPathName: LPCSTR; lpSecurityAttributes: LPSECURITY_ATTRIBUTES): BOOL; stdcall;
  3410. {$EXTERNALSYM CreateDirectoryA}
  3411. function CreateDirectoryW(lpPathName: LPCWSTR; lpSecurityAttributes: LPSECURITY_ATTRIBUTES): BOOL; stdcall;
  3412. {$EXTERNALSYM CreateDirectoryW}
  3413. function CreateDirectory(lpPathName: LPCTSTR; lpSecurityAttributes: LPSECURITY_ATTRIBUTES): BOOL; stdcall;
  3414. {$EXTERNALSYM CreateDirectory}
  3415. function CreateDirectoryExA(lpTemplateDirectory: LPCSTR; lpNewDirectory: LPCSTR;
  3416. lpSecurityAttributes: LPSECURITY_ATTRIBUTES): BOOL; stdcall;
  3417. {$EXTERNALSYM CreateDirectoryExA}
  3418. function CreateDirectoryExW(lpTemplateDirectory: LPCWSTR; lpNewDirectory: LPCWSTR;
  3419. lpSecurityAttributes: LPSECURITY_ATTRIBUTES): BOOL; stdcall;
  3420. {$EXTERNALSYM CreateDirectoryExW}
  3421. function CreateDirectoryEx(lpTemplateDirectory: LPCTSTR; lpNewDirectory: LPCTSTR;
  3422. lpSecurityAttributes: LPSECURITY_ATTRIBUTES): BOOL; stdcall;
  3423. {$EXTERNALSYM CreateDirectoryEx}
  3424. function RemoveDirectoryA(lpPathName: LPCSTR): BOOL; stdcall;
  3425. {$EXTERNALSYM RemoveDirectoryA}
  3426. function RemoveDirectoryW(lpPathName: LPCWSTR): BOOL; stdcall;
  3427. {$EXTERNALSYM RemoveDirectoryW}
  3428. function RemoveDirectory(lpPathName: LPCTSTR): BOOL; stdcall;
  3429. {$EXTERNALSYM RemoveDirectory}
  3430. function GetFullPathNameA(lpFileName: LPCSTR; nBufferLength: DWORD;
  3431. lpBuffer: LPSTR; var lpFilePart: LPSTR): DWORD; stdcall;
  3432. {$EXTERNALSYM GetFullPathNameA}
  3433. function GetFullPathNameW(lpFileName: LPCWSTR; nBufferLength: DWORD;
  3434. lpBuffer: LPWSTR; var lpFilePart: LPWSTR): DWORD; stdcall;
  3435. {$EXTERNALSYM GetFullPathNameA}
  3436. function GetFullPathName(lpFileName: LPCTSTR; nBufferLength: DWORD;
  3437. lpBuffer: LPTSTR; var lpFilePart: LPTSTR): DWORD; stdcall;
  3438. {$EXTERNALSYM GetFullPathName}
  3439. const
  3440. DDD_RAW_TARGET_PATH = $00000001;
  3441. {$EXTERNALSYM DDD_RAW_TARGET_PATH}
  3442. DDD_REMOVE_DEFINITION = $00000002;
  3443. {$EXTERNALSYM DDD_REMOVE_DEFINITION}
  3444. DDD_EXACT_MATCH_ON_REMOVE = $00000004;
  3445. {$EXTERNALSYM DDD_EXACT_MATCH_ON_REMOVE}
  3446. DDD_NO_BROADCAST_SYSTEM = $00000008;
  3447. {$EXTERNALSYM DDD_NO_BROADCAST_SYSTEM}
  3448. DDD_LUID_BROADCAST_DRIVE = $00000010;
  3449. {$EXTERNALSYM DDD_LUID_BROADCAST_DRIVE}
  3450. function DefineDosDeviceA(dwFlags: DWORD; lpDeviceName, lpTargetPath: LPCSTR): BOOL; stdcall;
  3451. {$EXTERNALSYM DefineDosDeviceA}
  3452. function DefineDosDeviceW(dwFlags: DWORD; lpDeviceName, lpTargetPath: LPCWSTR): BOOL; stdcall;
  3453. {$EXTERNALSYM DefineDosDeviceW}
  3454. function DefineDosDevice(dwFlags: DWORD; lpDeviceName, lpTargetPath: LPCTSTR): BOOL; stdcall;
  3455. {$EXTERNALSYM DefineDosDevice}
  3456. function QueryDosDeviceA(lpDeviceName, lpTargetPath: LPSTR; ucchMax: DWORD): DWORD; stdcall;
  3457. {$EXTERNALSYM QueryDosDeviceA}
  3458. function QueryDosDeviceW(lpDeviceName, lpTargetPath: LPWSTR; ucchMax: DWORD): DWORD; stdcall;
  3459. {$EXTERNALSYM QueryDosDeviceW}
  3460. function QueryDosDevice(lpDeviceName, lpTargetPath: LPTSTR; ucchMax: DWORD): DWORD; stdcall;
  3461. {$EXTERNALSYM QueryDosDevice}
  3462. function CreateFileA(lpFileName: LPCSTR; dwDesiredAccess, dwShareMode: DWORD;
  3463. lpSecurityAttributes: LPSECURITY_ATTRIBUTES; dwCreationDisposition: DWORD;
  3464. dwFlagsAndAttributes: DWORD; hTemplateFile: HANDLE): HANDLE; stdcall;
  3465. {$EXTERNALSYM CreateFileA}
  3466. function CreateFileW(lpFileName: LPCWSTR; dwDesiredAccess, dwShareMode: DWORD;
  3467. lpSecurityAttributes: LPSECURITY_ATTRIBUTES; dwCreationDisposition: DWORD;
  3468. dwFlagsAndAttributes: DWORD; hTemplateFile: HANDLE): HANDLE; stdcall;
  3469. {$EXTERNALSYM CreateFileW}
  3470. function CreateFile(lpFileName: LPCTSTR; dwDesiredAccess, dwShareMode: DWORD;
  3471. lpSecurityAttributes: LPSECURITY_ATTRIBUTES; dwCreationDisposition: DWORD;
  3472. dwFlagsAndAttributes: DWORD; hTemplateFile: HANDLE): HANDLE; stdcall;
  3473. {$EXTERNALSYM CreateFile}
  3474. function ReOpenFile(hOriginalFile: HANDLE; dwDesiredAccess, dwShareMode, dwFlagsAndAttributes: DWORD): HANDLE; stdcall;
  3475. {$EXTERNALSYM ReOpenFile}
  3476. function SetFileAttributesA(lpFileName: LPCSTR; dwFileAttributes: DWORD): BOOL; stdcall;
  3477. {$EXTERNALSYM SetFileAttributesA}
  3478. function SetFileAttributesW(lpFileName: LPCWSTR; dwFileAttributes: DWORD): BOOL; stdcall;
  3479. {$EXTERNALSYM SetFileAttributesW}
  3480. function SetFileAttributes(lpFileName: LPCTSTR; dwFileAttributes: DWORD): BOOL; stdcall;
  3481. {$EXTERNALSYM SetFileAttributes}
  3482. function GetFileAttributesA(lpFileName: LPCSTR): DWORD; stdcall;
  3483. {$EXTERNALSYM GetFileAttributesA}
  3484. function GetFileAttributesW(lpFileName: LPCWSTR): DWORD; stdcall;
  3485. {$EXTERNALSYM GetFileAttributesW}
  3486. function GetFileAttributes(lpFileName: LPCTSTR): DWORD; stdcall;
  3487. {$EXTERNALSYM GetFileAttributes}
  3488. type
  3489. _GET_FILEEX_INFO_LEVELS = (GetFileExInfoStandard, GetFileExMaxInfoLevel);
  3490. {$EXTERNALSYM _GET_FILEEX_INFO_LEVELS}
  3491. GET_FILEEX_INFO_LEVELS = _GET_FILEEX_INFO_LEVELS;
  3492. {$EXTERNALSYM GET_FILEEX_INFO_LEVELS}
  3493. TGetFileExInfoLevels = GET_FILEEX_INFO_LEVELS;
  3494. function GetFileAttributesExA(lpFileName: LPCSTR;
  3495. fInfoLevelId: GET_FILEEX_INFO_LEVELS; lpFileInformation: LPVOID): BOOL; stdcall;
  3496. {$EXTERNALSYM GetFileAttributesExA}
  3497. function GetFileAttributesExW(lpFileName: LPCWSTR;
  3498. fInfoLevelId: GET_FILEEX_INFO_LEVELS; lpFileInformation: LPVOID): BOOL; stdcall;
  3499. {$EXTERNALSYM GetFileAttributesExW}
  3500. function GetFileAttributesEx(lpFileName: LPCTSTR;
  3501. fInfoLevelId: GET_FILEEX_INFO_LEVELS; lpFileInformation: LPVOID): BOOL; stdcall;
  3502. {$EXTERNALSYM GetFileAttributesEx}
  3503. function GetCompressedFileSizeA(lpFileName: LPCSTR; lpFileSizeHigh: LPDWORD): DWORD; stdcall;
  3504. {$EXTERNALSYM GetCompressedFileSizeA}
  3505. function GetCompressedFileSizeW(lpFileName: LPCWSTR; lpFileSizeHigh: LPDWORD): DWORD; stdcall;
  3506. {$EXTERNALSYM GetCompressedFileSizeW}
  3507. function GetCompressedFileSize(lpFileName: LPCTSTR; lpFileSizeHigh: LPDWORD): DWORD; stdcall;
  3508. {$EXTERNALSYM GetCompressedFileSize}
  3509. function DeleteFileA(lpFileName: LPCSTR): BOOL; stdcall;
  3510. {$EXTERNALSYM DeleteFileA}
  3511. function DeleteFileW(lpFileName: LPCWSTR): BOOL; stdcall;
  3512. {$EXTERNALSYM DeleteFileW}
  3513. function DeleteFile(lpFileName: LPCTSTR): BOOL; stdcall;
  3514. {$EXTERNALSYM DeleteFile}
  3515. (* todo
  3516. WINBASEAPI
  3517. BOOL
  3518. WINAPI
  3519. CheckNameLegalDOS8Dot3A(
  3520. IN LPCSTR lpName,
  3521. OUT LPSTR lpOemName OPTIONAL,
  3522. IN DWORD OemNameSize OPTIONAL,
  3523. OUT PBOOL pbNameContainsSpaces OPTIONAL,
  3524. OUT PBOOL pbNameLegal
  3525. );
  3526. WINBASEAPI
  3527. BOOL
  3528. WINAPI
  3529. CheckNameLegalDOS8Dot3W(
  3530. IN LPCWSTR lpName,
  3531. OUT LPSTR lpOemName OPTIONAL,
  3532. IN DWORD OemNameSize OPTIONAL,
  3533. OUT PBOOL pbNameContainsSpaces OPTIONAL,
  3534. OUT PBOOL pbNameLegal
  3535. );
  3536. #ifdef UNICODE
  3537. #define CheckNameLegalDOS8Dot3 CheckNameLegalDOS8Dot3W
  3538. #else
  3539. #define CheckNameLegalDOS8Dot3 CheckNameLegalDOS8Dot3A
  3540. #endif // !UNICODE
  3541. *)
  3542. type
  3543. _FINDEX_INFO_LEVELS = (FindExInfoStandard, FindExInfoMaxInfoLevel);
  3544. {$EXTERNALSYM _FINDEX_INFO_LEVELS}
  3545. FINDEX_INFO_LEVELS = _FINDEX_INFO_LEVELS;
  3546. {$EXTERNALSYM FINDEX_INFO_LEVELS}
  3547. TFindExInfoLevels = FINDEX_INFO_LEVELS;
  3548. _FINDEX_SEARCH_OPS = (
  3549. FindExSearchNameMatch,
  3550. FindExSearchLimitToDirectories,
  3551. FindExSearchLimitToDevices,
  3552. FindExSearchMaxSearchOp);
  3553. {$EXTERNALSYM _FINDEX_SEARCH_OPS}
  3554. FINDEX_SEARCH_OPS = _FINDEX_SEARCH_OPS;
  3555. {$EXTERNALSYM FINDEX_SEARCH_OPS}
  3556. TFindExSearchOps = FINDEX_SEARCH_OPS;
  3557. const
  3558. FIND_FIRST_EX_CASE_SENSITIVE = $00000001;
  3559. {$EXTERNALSYM FIND_FIRST_EX_CASE_SENSITIVE}
  3560. function FindFirstFileExA(lpFileName: LPCSTR; fInfoLevelId: FINDEX_INFO_LEVELS;
  3561. lpFindFileData: LPVOID; fSearchOp: FINDEX_SEARCH_OPS; lpSearchFilter: LPVOID;
  3562. dwAdditionalFlags: DWORD): HANDLE; stdcall;
  3563. {$EXTERNALSYM FindFirstFileExA}
  3564. function FindFirstFileExW(lpFileName: LPCWSTR; fInfoLevelId: FINDEX_INFO_LEVELS;
  3565. lpFindFileData: LPVOID; fSearchOp: FINDEX_SEARCH_OPS; lpSearchFilter: LPVOID;
  3566. dwAdditionalFlags: DWORD): HANDLE; stdcall;
  3567. {$EXTERNALSYM FindFirstFileExW}
  3568. function FindFirstFileEx(lpFileName: LPCTSTR; fInfoLevelId: FINDEX_INFO_LEVELS;
  3569. lpFindFileData: LPVOID; fSearchOp: FINDEX_SEARCH_OPS; lpSearchFilter: LPVOID;
  3570. dwAdditionalFlags: DWORD): HANDLE; stdcall;
  3571. {$EXTERNALSYM FindFirstFileEx}
  3572. function FindFirstFileA(lpFileName: LPCSTR; var lpFindFileData: WIN32_FIND_DATAA): HANDLE; stdcall;
  3573. {$EXTERNALSYM FindFirstFileA}
  3574. function FindFirstFileW(lpFileName: LPCWSTR; var lpFindFileData: WIN32_FIND_DATAW): HANDLE; stdcall;
  3575. {$EXTERNALSYM FindFirstFileW}
  3576. function FindFirstFile(lpFileName: LPCTSTR; var lpFindFileData: WIN32_FIND_DATA): HANDLE; stdcall;
  3577. {$EXTERNALSYM FindFirstFile}
  3578. function FindNextFileA(hFindFile: HANDLE; var FindFileData: WIN32_FIND_DATAA): BOOL; stdcall;
  3579. {$EXTERNALSYM FindNextFileA}
  3580. function FindNextFileW(hFindFile: HANDLE; var lpFindFileData: WIN32_FIND_DATAW): BOOL; stdcall;
  3581. {$EXTERNALSYM FindNextFileW}
  3582. function FindNextFile(hFindFile: HANDLE; var lpFindFileData: WIN32_FIND_DATA): BOOL; stdcall;
  3583. {$EXTERNALSYM FindNextFile}
  3584. function SearchPathA(lpPath, lpFileName, lpExtension: LPCSTR; nBufferLength: DWORD;
  3585. lpBuffer: LPSTR; var lpFilePart: LPSTR): DWORD; stdcall;
  3586. {$EXTERNALSYM SearchPathA}
  3587. function SearchPathW(lpPath, lpFileName, lpExtension: LPCWSTR; nBufferLength: DWORD;
  3588. lpBuffer: LPWSTR; var lpFilePart: LPWSTR): DWORD; stdcall;
  3589. {$EXTERNALSYM SearchPathW}
  3590. function SearchPath(lpPath, lpFileName, lpExtension: LPCTSTR; nBufferLength: DWORD;
  3591. lpBuffer: LPTSTR; var lpFilePart: LPTSTR): DWORD; stdcall;
  3592. {$EXTERNALSYM SearchPath}
  3593. function CopyFileA(lpExistingFileName, lpNewFileName: LPCSTR; bFailIfExists: BOOL): BOOL; stdcall;
  3594. {$EXTERNALSYM CopyFileA}
  3595. function CopyFileW(lpExistingFileName, lpNewFileName: LPCWSTR; bFailIfExists: BOOL): BOOL; stdcall;
  3596. {$EXTERNALSYM CopyFileW}
  3597. function CopyFile(lpExistingFileName, lpNewFileName: LPCTSTR; bFailIfExists: BOOL): BOOL; stdcall;
  3598. {$EXTERNALSYM CopyFile}
  3599. type
  3600. LPPROGRESS_ROUTINE = function(
  3601. TotalFileSize: LARGE_INTEGER;
  3602. TotalBytesTransferred: LARGE_INTEGER;
  3603. StreamSize: LARGE_INTEGER;
  3604. StreamBytesTransferred: LARGE_INTEGER;
  3605. dwStreamNumber: DWORD;
  3606. dwCallbackReason: DWORD;
  3607. hSourceFile: HANDLE;
  3608. hDestinationFile: HANDLE;
  3609. lpData: LPVOID): DWORD; stdcall;
  3610. {$EXTERNALSYM LPPROGRESS_ROUTINE}
  3611. TProgressRoutine = LPPROGRESS_ROUTINE;
  3612. function CopyFileExA(lpExistingFileName, lpNewFileName: LPCSTR;
  3613. lpProgressRoutine: LPPROGRESS_ROUTINE; lpData: LPVOID; var pbCancel: BOOL;
  3614. dwCopyFlags: DWORD): BOOL; stdcall;
  3615. {$EXTERNALSYM CopyFileExA}
  3616. function CopyFileExW(lpExistingFileName, lpNewFileName: LPCWSTR;
  3617. lpProgressRoutine: LPPROGRESS_ROUTINE; lpData: LPVOID; var pbCancel: BOOL;
  3618. dwCopyFlags: DWORD): BOOL; stdcall;
  3619. {$EXTERNALSYM CopyFileExW}
  3620. function CopyFileEx(lpExistingFileName, lpNewFileName: LPCTSTR;
  3621. lpProgressRoutine: LPPROGRESS_ROUTINE; lpData: LPVOID; var pbCancel: BOOL;
  3622. dwCopyFlags: DWORD): BOOL; stdcall;
  3623. {$EXTERNALSYM CopyFileEx}
  3624. function MoveFileA(lpExistingFileName, lpNewFileName: LPCSTR): BOOL; stdcall;
  3625. {$EXTERNALSYM MoveFileA}
  3626. function MoveFileW(lpExistingFileName, lpNewFileName: LPCWSTR): BOOL; stdcall;
  3627. {$EXTERNALSYM MoveFileW}
  3628. function MoveFile(lpExistingFileName, lpNewFileName: LPCTSTR): BOOL; stdcall;
  3629. {$EXTERNALSYM MoveFile}
  3630. function MoveFileExA(lpExistingFileName, lpNewFileName: LPCSTR; dwFlags: DWORD): BOOL; stdcall;
  3631. {$EXTERNALSYM MoveFileExA}
  3632. function MoveFileExW(lpExistingFileName, lpNewFileName: LPCWSTR; dwFlags: DWORD): BOOL; stdcall;
  3633. {$EXTERNALSYM MoveFileExW}
  3634. function MoveFileEx(lpExistingFileName, lpNewFileName: LPCTSTR; dwFlags: DWORD): BOOL; stdcall;
  3635. {$EXTERNALSYM MoveFileEx}
  3636. function MoveFileWithProgressA(lpExistingFileName, lpNewFileName: LPCSTR;
  3637. lpProgressRoutine: LPPROGRESS_ROUTINE; lpData: LPVOID; dwFlags: DWORD): BOOL; stdcall;
  3638. {$EXTERNALSYM MoveFileWithProgressA}
  3639. function MoveFileWithProgressW(lpExistingFileName, lpNewFileName: LPCWSTR;
  3640. lpProgressRoutine: LPPROGRESS_ROUTINE; lpData: LPVOID; dwFlags: DWORD): BOOL; stdcall;
  3641. {$EXTERNALSYM MoveFileWithProgressW}
  3642. function MoveFileWithProgress(lpExistingFileName, lpNewFileName: LPCTSTR;
  3643. lpProgressRoutine: LPPROGRESS_ROUTINE; lpData: LPVOID; dwFlags: DWORD): BOOL; stdcall;
  3644. {$EXTERNALSYM MoveFileWithProgress}
  3645. const
  3646. MOVEFILE_REPLACE_EXISTING = $00000001;
  3647. {$EXTERNALSYM MOVEFILE_REPLACE_EXISTING}
  3648. MOVEFILE_COPY_ALLOWED = $00000002;
  3649. {$EXTERNALSYM MOVEFILE_COPY_ALLOWED}
  3650. MOVEFILE_DELAY_UNTIL_REBOOT = $00000004;
  3651. {$EXTERNALSYM MOVEFILE_DELAY_UNTIL_REBOOT}
  3652. MOVEFILE_WRITE_THROUGH = $00000008;
  3653. {$EXTERNALSYM MOVEFILE_WRITE_THROUGH}
  3654. MOVEFILE_CREATE_HARDLINK = $00000010;
  3655. {$EXTERNALSYM MOVEFILE_CREATE_HARDLINK}
  3656. MOVEFILE_FAIL_IF_NOT_TRACKABLE = $00000020;
  3657. {$EXTERNALSYM MOVEFILE_FAIL_IF_NOT_TRACKABLE}
  3658. function ReplaceFileA(lpReplacedFileName, lpReplacementFileName,
  3659. lpBackupFileName: LPCSTR; dwReplaceFlags: DWORD; lpExclude: LPVOID;
  3660. lpReserved: LPVOID): BOOL; stdcall;
  3661. {$EXTERNALSYM ReplaceFileA}
  3662. function ReplaceFileW(lpReplacedFileName, lpReplacementFileName,
  3663. lpBackupFileName: LPCWSTR; dwReplaceFlags: DWORD; lpExclude: LPVOID;
  3664. lpReserved: LPVOID): BOOL; stdcall;
  3665. {$EXTERNALSYM ReplaceFileW}
  3666. function ReplaceFile(lpReplacedFileName, lpReplacementFileName,
  3667. lpBackupFileName: LPCTSTR; dwReplaceFlags: DWORD; lpExclude: LPVOID;
  3668. lpReserved: LPVOID): BOOL; stdcall;
  3669. {$EXTERNALSYM ReplaceFile}
  3670. //
  3671. // API call to create hard links.
  3672. //
  3673. function CreateHardLinkA(lpFileName, lpExistingFileName: LPCSTR;
  3674. lpSecurityAttributes: LPSECURITY_ATTRIBUTES): BOOL; stdcall;
  3675. {$EXTERNALSYM CreateHardLinkA}
  3676. function CreateHardLinkW(lpFileName, lpExistingFileName: LPCWSTR;
  3677. lpSecurityAttributes: LPSECURITY_ATTRIBUTES): BOOL; stdcall;
  3678. {$EXTERNALSYM CreateHardLinkW}
  3679. function CreateHardLink(lpFileName, lpExistingFileName: LPCTSTR;
  3680. lpSecurityAttributes: LPSECURITY_ATTRIBUTES): BOOL; stdcall;
  3681. {$EXTERNALSYM CreateHardLink}
  3682. //#if (_WIN32_WINNT >= 0x0501)
  3683. //
  3684. // API call to enumerate for streams within a file
  3685. //
  3686. type
  3687. _STREAM_INFO_LEVELS = (FindStreamInfoStandard, FindStreamInfoMaxInfoLevel);
  3688. {$EXTERNALSYM _STREAM_INFO_LEVELS}
  3689. STREAM_INFO_LEVELS = _STREAM_INFO_LEVELS;
  3690. {$EXTERNALSYM STREAM_INFO_LEVELS}
  3691. TStreamInfoLevels = STREAM_INFO_LEVELS;
  3692. _WIN32_FIND_STREAM_DATA = record
  3693. StreamSize: LARGE_INTEGER;
  3694. cStreamName: array [0..MAX_PATH + 35] of WCHAR;
  3695. end;
  3696. {$EXTERNALSYM _WIN32_FIND_STREAM_DATA}
  3697. WIN32_FIND_STREAM_DATA = _WIN32_FIND_STREAM_DATA;
  3698. {$EXTERNALSYM WIN32_FIND_STREAM_DATA}
  3699. PWIN32_FIND_STREAM_DATA = ^WIN32_FIND_STREAM_DATA;
  3700. {$EXTERNALSYM PWIN32_FIND_STREAM_DATA}
  3701. TWin32FindStreamData = WIN32_FIND_STREAM_DATA;
  3702. PWin32FindStreamData = PWIN32_FIND_STREAM_DATA;
  3703. function FindFirstStreamW(lpFileName: LPCWSTR; InfoLevel: STREAM_INFO_LEVELS; lpFindStreamData: LPVOID; dwFlags: DWORD): HANDLE; stdcall;
  3704. {$EXTERNALSYM FindFirstStreamW}
  3705. function FindNextStreamW(hFindStream: HANDLE; lpFindStreamData: LPVOID): BOOL; stdcall;
  3706. {$EXTERNALSYM FindNextStreamW}
  3707. //#endif // (_WIN32_WINNT >= 0x0500)
  3708. function CreateNamedPipeA(lpName: LPCSTR; dwOpenMode, dwPipeMode, nMaxInstances,
  3709. nOutBufferSize, nInBufferSize, nDefaultTimeOut: DWORD;
  3710. lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE; stdcall;
  3711. {$EXTERNALSYM CreateNamedPipeA}
  3712. function CreateNamedPipeW(lpName: LPCWSTR; dwOpenMode, dwPipeMode, nMaxInstances,
  3713. nOutBufferSize, nInBufferSize, nDefaultTimeOut: DWORD;
  3714. lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE; stdcall;
  3715. {$EXTERNALSYM CreateNamedPipeW}
  3716. function CreateNamedPipe(lpName: LPCTSTR; dwOpenMode, dwPipeMode, nMaxInstances,
  3717. nOutBufferSize, nInBufferSize, nDefaultTimeOut: DWORD;
  3718. lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE; stdcall;
  3719. {$EXTERNALSYM CreateNamedPipe}
  3720. function GetNamedPipeHandleStateA(hNamedPipe: HANDLE; lpState, lpCurInstances,
  3721. lpMaxCollectionCount, lpCollectDataTimeout: LPDWORD; lpUserName: LPSTR;
  3722. nMaxUserNameSize: DWORD): BOOL; stdcall;
  3723. {$EXTERNALSYM GetNamedPipeHandleStateA}
  3724. function GetNamedPipeHandleStateW(hNamedPipe: HANDLE; lpState, lpCurInstances,
  3725. lpMaxCollectionCount, lpCollectDataTimeout: LPDWORD; lpUserName: LPWSTR;
  3726. nMaxUserNameSize: DWORD): BOOL; stdcall;
  3727. {$EXTERNALSYM GetNamedPipeHandleStateW}
  3728. function GetNamedPipeHandleState(hNamedPipe: HANDLE; lpState, lpCurInstances,
  3729. lpMaxCollectionCount, lpCollectDataTimeout: LPDWORD; lpUserName: LPTSTR;
  3730. nMaxUserNameSize: DWORD): BOOL; stdcall;
  3731. {$EXTERNALSYM GetNamedPipeHandleState}
  3732. function CallNamedPipeA(lpNamedPipeName: LPCSTR; lpInBuffer: LPVOID;
  3733. nInBufferSize: DWORD; lpOutBuffer: LPVOID; nOutBufferSize: DWORD;
  3734. var lpBytesRead: DWORD; nTimeOut: DWORD): BOOL; stdcall;
  3735. {$EXTERNALSYM CallNamedPipeA}
  3736. function CallNamedPipeW(lpNamedPipeName: LPCWSTR; lpInBuffer: LPVOID;
  3737. nInBufferSize: DWORD; lpOutBuffer: LPVOID; nOutBufferSize: DWORD;
  3738. var lpBytesRead: DWORD; nTimeOut: DWORD): BOOL; stdcall;
  3739. {$EXTERNALSYM CallNamedPipeW}
  3740. function CallNamedPipe(lpNamedPipeName: LPCTSTR; lpInBuffer: LPVOID;
  3741. nInBufferSize: DWORD; lpOutBuffer: LPVOID; nOutBufferSize: DWORD;
  3742. var lpBytesRead: DWORD; nTimeOut: DWORD): BOOL; stdcall;
  3743. {$EXTERNALSYM CallNamedPipe}
  3744. function WaitNamedPipeA(lpNamedPipeName: LPCSTR; nTimeOut: DWORD): BOOL; stdcall;
  3745. {$EXTERNALSYM WaitNamedPipeA}
  3746. function WaitNamedPipeW(lpNamedPipeName: LPCWSTR; nTimeOut: DWORD): BOOL; stdcall;
  3747. {$EXTERNALSYM WaitNamedPipeW}
  3748. function WaitNamedPipe(lpNamedPipeName: LPCTSTR; nTimeOut: DWORD): BOOL; stdcall;
  3749. {$EXTERNALSYM WaitNamedPipe}
  3750. function SetVolumeLabelA(lpRootPathName, lpVolumeName: LPCSTR): BOOL; stdcall;
  3751. {$EXTERNALSYM SetVolumeLabelA}
  3752. function SetVolumeLabelW(lpRootPathName, lpVolumeName: LPCWSTR): BOOL; stdcall;
  3753. {$EXTERNALSYM SetVolumeLabelW}
  3754. function SetVolumeLabel(lpRootPathName, lpVolumeName: LPCTSTR): BOOL; stdcall;
  3755. {$EXTERNALSYM SetVolumeLabel}
  3756. procedure SetFileApisToOEM; stdcall;
  3757. {$EXTERNALSYM SetFileApisToOEM}
  3758. procedure SetFileApisToANSI; stdcall;
  3759. {$EXTERNALSYM SetFileApisToANSI}
  3760. function AreFileApisANSI: BOOL; stdcall;
  3761. {$EXTERNALSYM AreFileApisANSI}
  3762. function GetVolumeInformationA(lpRootPathName: LPCSTR; lpVolumeNameBuffer: LPSTR;
  3763. nVolumeNameSize: DWORD; lpVolumeSerialNumber: LPDWORD;
  3764. var lpMaximumComponentLength, lpFileSystemFlags: DWORD;
  3765. lpFileSystemNameBuffer: LPSTR; nFileSystemNameSize: DWORD): BOOL; stdcall;
  3766. {$EXTERNALSYM GetVolumeInformationA}
  3767. function GetVolumeInformationW(lpRootPathName: LPCWSTR; lpVolumeNameBuffer: LPWSTR;
  3768. nVolumeNameSize: DWORD; lpVolumeSerialNumber: LPDWORD;
  3769. var lpMaximumComponentLength, lpFileSystemFlags: DWORD;
  3770. lpFileSystemNameBuffer: LPWSTR; nFileSystemNameSize: DWORD): BOOL; stdcall;
  3771. {$EXTERNALSYM GetVolumeInformationW}
  3772. function GetVolumeInformation(lpRootPathName: LPCTSTR; lpVolumeNameBuffer: LPTSTR;
  3773. nVolumeNameSize: DWORD; lpVolumeSerialNumber: LPDWORD;
  3774. var lpMaximumComponentLength, lpFileSystemFlags: DWORD;
  3775. lpFileSystemNameBuffer: LPTSTR; nFileSystemNameSize: DWORD): BOOL; stdcall;
  3776. {$EXTERNALSYM GetVolumeInformation}
  3777. function CancelIo(hFile: HANDLE): BOOL; stdcall;
  3778. {$EXTERNALSYM CancelIo}
  3779. //
  3780. // Event logging APIs
  3781. //
  3782. function ClearEventLogA(hEventLog: HANDLE; lpBackupFileName: LPCSTR): BOOL; stdcall;
  3783. {$EXTERNALSYM ClearEventLogA}
  3784. function ClearEventLogW(hEventLog: HANDLE; lpBackupFileName: LPCWSTR): BOOL; stdcall;
  3785. {$EXTERNALSYM ClearEventLogW}
  3786. function ClearEventLog(hEventLog: HANDLE; lpBackupFileName: LPCTSTR): BOOL; stdcall;
  3787. {$EXTERNALSYM ClearEventLogA}
  3788. function BackupEventLogA(hEventLog: HANDLE; lpBackupFileName: LPCSTR): BOOL; stdcall;
  3789. {$EXTERNALSYM BackupEventLogA}
  3790. function BackupEventLogW(hEventLog: HANDLE; lpBackupFileName: LPCWSTR): BOOL; stdcall;
  3791. {$EXTERNALSYM BackupEventLogW}
  3792. function BackupEventLog(hEventLog: HANDLE; lpBackupFileName: LPCTSTR): BOOL; stdcall;
  3793. {$EXTERNALSYM BackupEventLogA}
  3794. function CloseEventLog(hEventLog: HANDLE): BOOL; stdcall;
  3795. {$EXTERNALSYM CloseEventLog}
  3796. function DeregisterEventSource(hEventLog: HANDLE): BOOL; stdcall;
  3797. {$EXTERNALSYM DeregisterEventSource}
  3798. function NotifyChangeEventLog(hEventLog, hEvent: HANDLE): BOOL; stdcall;
  3799. {$EXTERNALSYM NotifyChangeEventLog}
  3800. function GetNumberOfEventLogRecords(hEventLog: HANDLE; var NumberOfRecords: DWORD): BOOL; stdcall;
  3801. {$EXTERNALSYM GetNumberOfEventLogRecords}
  3802. function GetOldestEventLogRecord(hEventLog: HANDLE; var OldestRecord: DWORD): BOOL; stdcall;
  3803. {$EXTERNALSYM GetOldestEventLogRecord}
  3804. function OpenEventLogA(lpUNCServerName, lpSourceName: LPCSTR): HANDLE; stdcall;
  3805. {$EXTERNALSYM OpenEventLogA}
  3806. function OpenEventLogW(lpUNCServerName, lpSourceName: LPCWSTR): HANDLE; stdcall;
  3807. {$EXTERNALSYM OpenEventLogW}
  3808. function OpenEventLog(lpUNCServerName, lpSourceName: LPCTSTR): HANDLE; stdcall;
  3809. {$EXTERNALSYM OpenEventLogA}
  3810. function RegisterEventSourceA(lpUNCServerName, lpSourceName: LPCSTR): HANDLE; stdcall;
  3811. {$EXTERNALSYM RegisterEventSourceA}
  3812. function RegisterEventSourceW(lpUNCServerName, lpSourceName: LPCWSTR): HANDLE; stdcall;
  3813. {$EXTERNALSYM RegisterEventSourceW}
  3814. function RegisterEventSource(lpUNCServerName, lpSourceName: LPCTSTR): HANDLE; stdcall;
  3815. {$EXTERNALSYM RegisterEventSourceA}
  3816. function OpenBackupEventLogA(lpUNCServerName, lpFileName: LPCSTR): HANDLE; stdcall;
  3817. {$EXTERNALSYM OpenBackupEventLogA}
  3818. function OpenBackupEventLogW(lpUNCServerName, lpFileName: LPCWSTR): HANDLE; stdcall;
  3819. {$EXTERNALSYM OpenBackupEventLogW}
  3820. function OpenBackupEventLog(lpUNCServerName, lpFileName: LPCTSTR): HANDLE; stdcall;
  3821. {$EXTERNALSYM OpenBackupEventLogA}
  3822. function ReadEventLogA(hEventLog: HANDLE; dwReadFlags, dwRecordOffset: DWORD;
  3823. lpBuffer: LPVOID; nNumberOfBytesToRead: DWORD;
  3824. var pnBytesRead, pnMinNumberOfBytesNeeded: DWORD): BOOL; stdcall;
  3825. {$EXTERNALSYM ReadEventLogA}
  3826. function ReadEventLogW(hEventLog: HANDLE; dwReadFlags, dwRecordOffset: DWORD;
  3827. lpBuffer: LPVOID; nNumberOfBytesToRead: DWORD;
  3828. var pnBytesRead, pnMinNumberOfBytesNeeded: DWORD): BOOL; stdcall;
  3829. {$EXTERNALSYM ReadEventLogW}
  3830. function ReadEventLog(hEventLog: HANDLE; dwReadFlags, dwRecordOffset: DWORD;
  3831. lpBuffer: LPVOID; nNumberOfBytesToRead: DWORD;
  3832. var pnBytesRead, pnMinNumberOfBytesNeeded: DWORD): BOOL; stdcall;
  3833. {$EXTERNALSYM ReadEventLog}
  3834. function ReportEventA(hEventLog: HANDLE; wType, wCategory: WORD; dwEventID: DWORD;
  3835. lpUserSid: PSID; wNumStrings: WORD; dwDataSize: DWORD; lpStrings: LPCSTR;
  3836. lpRawData: LPVOID): BOOL; stdcall;
  3837. {$EXTERNALSYM ReportEventA}
  3838. function ReportEventW(hEventLog: HANDLE; wType, wCategory: WORD; dwEventID: DWORD;
  3839. lpUserSid: PSID; wNumStrings: WORD; dwDataSize: DWORD; lpStrings: LPCWSTR;
  3840. lpRawData: LPVOID): BOOL; stdcall;
  3841. {$EXTERNALSYM ReportEventW}
  3842. function ReportEvent(hEventLog: HANDLE; wType, wCategory: WORD; dwEventID: DWORD;
  3843. lpUserSid: PSID; wNumStrings: WORD; dwDataSize: DWORD; lpStrings: LPCTSTR;
  3844. lpRawData: LPVOID): BOOL; stdcall;
  3845. {$EXTERNALSYM ReportEvent}
  3846. const
  3847. EVENTLOG_FULL_INFO = 0;
  3848. {$EXTERNALSYM EVENTLOG_FULL_INFO}
  3849. type
  3850. LPEVENTLOG_FULL_INFORMATION = ^EVENTLOG_FULL_INFORMATION;
  3851. {$EXTERNALSYM LPEVENTLOG_FULL_INFORMATION}
  3852. _EVENTLOG_FULL_INFORMATION = record
  3853. dwFull: DWORD;
  3854. end;
  3855. {$EXTERNALSYM _EVENTLOG_FULL_INFORMATION}
  3856. EVENTLOG_FULL_INFORMATION = _EVENTLOG_FULL_INFORMATION;
  3857. {$EXTERNALSYM EVENTLOG_FULL_INFORMATION}
  3858. TEventlogFullInformation = EVENTLOG_FULL_INFORMATION;
  3859. PEventlogFullInformation = LPEVENTLOG_FULL_INFORMATION;
  3860. function GetEventLogInformation(hEventLog: HANDLE; dwInfoLevel: DWORD;
  3861. lpBuffer: LPVOID; cbBufSize: DWORD; var pcbBytesNeeded: DWORD): BOOL; stdcall;
  3862. {$EXTERNALSYM GetEventLogInformation}
  3863. //
  3864. // Security APIs
  3865. //
  3866. function DuplicateToken(ExistingTokenHandle: HANDLE;
  3867. ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL; DuplicateTokenHandle: PHANDLE): BOOL; stdcall;
  3868. {$EXTERNALSYM DuplicateToken}
  3869. function GetKernelObjectSecurity(Handle: HANDLE;
  3870. RequestedInformation: SECURITY_INFORMATION;
  3871. pSecurityDescriptor: PSECURITY_DESCRIPTOR; nLength: DWORD;
  3872. var lpnLengthNeeded: DWORD): BOOL; stdcall;
  3873. {$EXTERNALSYM GetKernelObjectSecurity}
  3874. function ImpersonateNamedPipeClient(hNamedPipe: HANDLE): BOOL; stdcall;
  3875. {$EXTERNALSYM ImpersonateNamedPipeClient}
  3876. function ImpersonateSelf(ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL): BOOL; stdcall;
  3877. {$EXTERNALSYM ImpersonateSelf}
  3878. function RevertToSelf : BOOL; stdcall;
  3879. {$EXTERNALSYM RevertToSelf}
  3880. function SetThreadToken(Thread: PHANDLE; Token: HANDLE): BOOL; stdcall;
  3881. {$EXTERNALSYM SetThreadToken}
  3882. function AccessCheck(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  3883. ClientToken: HANDLE; DesiredAccess: DWORD; const GenericMapping: GENERIC_MAPPING;
  3884. var PrivilegeSet: PRIVILEGE_SET; var PrivilegeSetLength,
  3885. GrantedAccess: DWORD; var AccessStatus: BOOL): BOOL; stdcall;
  3886. {$EXTERNALSYM AccessCheck}
  3887. function AccessCheckByType(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  3888. PrincipalSelfSid: PSID; ClientToken: HANDLE; DesiredAccess: DWORD;
  3889. ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
  3890. const GenericMapping: GENERIC_MAPPING; var PrivilegeSet: PRIVILEGE_SET;
  3891. var PrivilegeSetLength, GrantedAccess: DWORD; var AccessStatus: BOOL): BOOL; stdcall;
  3892. {$EXTERNALSYM AccessCheckByType}
  3893. function AccessCheckByTypeResultList(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  3894. PrincipalSelfSid: PSID; ClientToken: HANDLE; DesiredAccess: DWORD;
  3895. ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
  3896. const GenericMapping: GENERIC_MAPPING; var PrivilegeSet: PRIVILEGE_SET;
  3897. var PrivilegeSetLength, GrantedAccessList: DWORD;
  3898. var AccessStatusList: DWORD): BOOL; stdcall;
  3899. {$EXTERNALSYM AccessCheckByTypeResultList}
  3900. function OpenProcessToken(ProcessHandle: HANDLE; DesiredAccess: DWORD;
  3901. var TokenHandle: HANDLE): BOOL; stdcall;
  3902. {$EXTERNALSYM OpenProcessToken}
  3903. function OpenThreadToken(ThreadHandle: HANDLE; DesiredAccess: DWORD;
  3904. OpenAsSelf: BOOL; var TokenHandle: HANDLE): BOOL; stdcall;
  3905. {$EXTERNALSYM OpenThreadToken}
  3906. function GetTokenInformation(TokenHandle: HANDLE;
  3907. TokenInformationClass: TOKEN_INFORMATION_CLASS; TokenInformation: LPVOID;
  3908. TokenInformationLength: DWORD; var ReturnLength: DWORD): BOOL; stdcall;
  3909. {$EXTERNALSYM GetTokenInformation}
  3910. function SetTokenInformation(TokenHandle: HANDLE;
  3911. TokenInformationClass: TOKEN_INFORMATION_CLASS; TokenInformation: LPVOID;
  3912. TokenInformationLength: DWORD): BOOL; stdcall;
  3913. {$EXTERNALSYM SetTokenInformation}
  3914. function AdjustTokenPrivileges(TokenHandle: HANDLE; DisableAllPrivileges: BOOL;
  3915. NewState: PTOKEN_PRIVILEGES; BufferLength: DWORD;
  3916. PreviousState: PTOKEN_PRIVILEGES; ReturnLength: LPDWORD): BOOL; stdcall;
  3917. {$EXTERNALSYM AdjustTokenPrivileges}
  3918. function AdjustTokenGroups(TokenHandle: HANDLE; ResetToDefault: BOOL;
  3919. NewState: PTOKEN_GROUPS; BufferLength: DWORD; PreviousState: PTOKEN_GROUPS;
  3920. ReturnLength: PDWORD): BOOL; stdcall;
  3921. {$EXTERNALSYM AdjustTokenGroups}
  3922. function PrivilegeCheck(ClientToken: HANDLE;
  3923. RequiredPrivileges: PPRIVILEGE_SET; var pfResult: BOOL): BOOL; stdcall;
  3924. {$EXTERNALSYM PrivilegeCheck}
  3925. function AccessCheckAndAuditAlarmA(SubsystemName: LPCSTR; HandleId: LPVOID;
  3926. ObjectTypeName, ObjectName: LPSTR; SecurityDescriptor: PSECURITY_DESCRIPTOR;
  3927. DesiredAccess: DWORD; const GenericMapping: GENERIC_MAPPING;
  3928. ObjectCreation: BOOL; var GrantedAccess: DWORD;
  3929. var AccessStatus, pfGenerateOnClose: BOOL): BOOL; stdcall;
  3930. {$EXTERNALSYM AccessCheckAndAuditAlarmA}
  3931. function AccessCheckAndAuditAlarmW(SubsystemName: LPCWSTR; HandleId: LPVOID;
  3932. ObjectTypeName, ObjectName: LPWSTR; SecurityDescriptor: PSECURITY_DESCRIPTOR;
  3933. DesiredAccess: DWORD; const GenericMapping: GENERIC_MAPPING;
  3934. ObjectCreation: BOOL; var GrantedAccess: DWORD;
  3935. var AccessStatus, pfGenerateOnClose: BOOL): BOOL; stdcall;
  3936. {$EXTERNALSYM AccessCheckAndAuditAlarmW}
  3937. function AccessCheckAndAuditAlarm(SubsystemName: LPCTSTR; HandleId: LPVOID;
  3938. ObjectTypeName, ObjectName: LPTSTR; SecurityDescriptor: PSECURITY_DESCRIPTOR;
  3939. DesiredAccess: DWORD; const GenericMapping: GENERIC_MAPPING;
  3940. ObjectCreation: BOOL; var GrantedAccess: DWORD;
  3941. var AccessStatus, pfGenerateOnClose: BOOL): BOOL; stdcall;
  3942. {$EXTERNALSYM AccessCheckAndAuditAlarmA}
  3943. function AccessCheckByTypeAndAuditAlarmA(SubsystemName: LPCSTR; HandleId: LPVOID;
  3944. ObjectTypeName: LPCSTR; ObjectName: LPCSTR; SecurityDescriptor: PSECURITY_DESCRIPTOR;
  3945. PrincipalSelfSid: PSID; DesiredAccess: DWORD; AuditType: AUDIT_EVENT_TYPE;
  3946. Flags: DWORD; ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
  3947. GenericMapping: PGENERIC_MAPPING; ObjectCreation: BOOL; GrantedAccess: LPDWORD;
  3948. AccessStatus: LPBOOL; pfGenerateOnClose: LPBOOL): BOOL; stdcall;
  3949. {$EXTERNALSYM AccessCheckByTypeAndAuditAlarmA}
  3950. function AccessCheckByTypeAndAuditAlarmW(SubsystemName: LPCWSTR; HandleId: LPVOID;
  3951. ObjectTypeName: LPCWSTR; ObjectName: LPCWSTR; SecurityDescriptor: PSECURITY_DESCRIPTOR;
  3952. PrincipalSelfSid: PSID; DesiredAccess: DWORD; AuditType: AUDIT_EVENT_TYPE;
  3953. Flags: DWORD; ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
  3954. GenericMapping: PGENERIC_MAPPING; ObjectCreation: BOOL; GrantedAccess: LPDWORD;
  3955. AccessStatus: LPBOOL; pfGenerateOnClose: LPBOOL): BOOL; stdcall;
  3956. {$EXTERNALSYM AccessCheckByTypeAndAuditAlarmW}
  3957. function AccessCheckByTypeAndAuditAlarm(SubsystemName: LPCTSTR; HandleId: LPVOID;
  3958. ObjectTypeName, ObjectName: LPCTSTR; SecurityDescriptor: PSECURITY_DESCRIPTOR;
  3959. PrincipalSelfSid: PSID; DesiredAccess: DWORD; AuditType: AUDIT_EVENT_TYPE;
  3960. Flags: DWORD; ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
  3961. const GenericMapping: GENERIC_MAPPING; ObjectCreation: BOOL;
  3962. var GrantedAccess: DWORD; var AccessStatus, pfGenerateOnClose: BOOL): BOOL; stdcall;
  3963. {$EXTERNALSYM AccessCheckByTypeAndAuditAlarmA}
  3964. function AccessCheckByTypeResultListAndAuditAlarmA(SubsystemName: LPCSTR;
  3965. HandleId: LPVOID; ObjectTypeName, ObjectName: LPCSTR;
  3966. SecurityDescriptor: PSECURITY_DESCRIPTOR; PrincipalSelfSid: PSID;
  3967. DesiredAccess: DWORD; AuditType: AUDIT_EVENT_TYPE; Flags: DWORD;
  3968. ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
  3969. const GenericMapping: GENERIC_MAPPING; ObjectCreation: BOOL;
  3970. var GrantedAccess, AccessStatusList: DWORD; var pfGenerateOnClose: BOOL): BOOL; stdcall;
  3971. {$EXTERNALSYM AccessCheckByTypeResultListAndAuditAlarmA}
  3972. function AccessCheckByTypeResultListAndAuditAlarmW(SubsystemName: LPCWSTR;
  3973. HandleId: LPVOID; ObjectTypeName, ObjectName: LPCWSTR;
  3974. SecurityDescriptor: PSECURITY_DESCRIPTOR; PrincipalSelfSid: PSID;
  3975. DesiredAccess: DWORD; AuditType: AUDIT_EVENT_TYPE; Flags: DWORD;
  3976. ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
  3977. const GenericMapping: GENERIC_MAPPING; ObjectCreation: BOOL;
  3978. var GrantedAccess, AccessStatusList: DWORD; var pfGenerateOnClose: BOOL): BOOL; stdcall;
  3979. {$EXTERNALSYM AccessCheckByTypeResultListAndAuditAlarmW}
  3980. function AccessCheckByTypeResultListAndAuditAlarm(SubsystemName: LPCTSTR;
  3981. HandleId: LPVOID; ObjectTypeName, ObjectName: LPCTSTR;
  3982. SecurityDescriptor: PSECURITY_DESCRIPTOR; PrincipalSelfSid: PSID;
  3983. DesiredAccess: DWORD; AuditType: AUDIT_EVENT_TYPE; Flags: DWORD;
  3984. ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
  3985. const GenericMapping: GENERIC_MAPPING; ObjectCreation: BOOL;
  3986. var GrantedAccess, AccessStatusList: DWORD; var pfGenerateOnClose: BOOL): BOOL; stdcall;
  3987. {$EXTERNALSYM AccessCheckByTypeResultListAndAuditAlarmA}
  3988. function AccessCheckByTypeResultListAndAuditAlarmByHandleA(SubsystemName: LPCSTR;
  3989. HandleId: LPVOID; ClientToken: HANDLE; ObjectTypeName, ObjectName: LPCSTR;
  3990. SecurityDescriptor: PSECURITY_DESCRIPTOR; PrincipalSelfSid: PSID;
  3991. DesiredAccess: DWORD; AuditType: AUDIT_EVENT_TYPE; Flags: DWORD;
  3992. ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
  3993. const GenericMapping: GENERIC_MAPPING; ObjectCreation: BOOL;
  3994. var GrantedAccess, AccessStatusList: DWORD; var pfGenerateOnClose: BOOL): BOOL; stdcall;
  3995. {$EXTERNALSYM AccessCheckByTypeResultListAndAuditAlarmByHandleA}
  3996. function AccessCheckByTypeResultListAndAuditAlarmByHandleW(SubsystemName: LPCWSTR;
  3997. HandleId: LPVOID; ClientToken: HANDLE; ObjectTypeName, ObjectName: LPCWSTR;
  3998. SecurityDescriptor: PSECURITY_DESCRIPTOR; PrincipalSelfSid: PSID;
  3999. DesiredAccess: DWORD; AuditType: AUDIT_EVENT_TYPE; Flags: DWORD;
  4000. ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
  4001. const GenericMapping: PGENERIC_MAPPING; ObjectCreation: BOOL;
  4002. var GrantedAccess, AccessStatusList: DWORD; var pfGenerateOnClose: BOOL): BOOL; stdcall;
  4003. {$EXTERNALSYM AccessCheckByTypeResultListAndAuditAlarmByHandleW}
  4004. function AccessCheckByTypeResultListAndAuditAlarmByHandle(SubsystemName: LPCTSTR;
  4005. HandleId: LPVOID; ClientToken: HANDLE; ObjectTypeName, ObjectName: LPCTSTR;
  4006. SecurityDescriptor: PSECURITY_DESCRIPTOR; PrincipalSelfSid: PSID;
  4007. DesiredAccess: DWORD; AuditType: AUDIT_EVENT_TYPE; Flags: DWORD;
  4008. ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
  4009. const GenericMapping: PGENERIC_MAPPING; ObjectCreation: BOOL;
  4010. var GrantedAccess, AccessStatusList: DWORD; var pfGenerateOnClose: BOOL): BOOL; stdcall;
  4011. {$EXTERNALSYM AccessCheckByTypeResultListAndAuditAlarmByHandle}
  4012. function ObjectOpenAuditAlarmA(SubsystemName: LPCSTR; HandleId: LPVOID;
  4013. ObjectTypeName: LPSTR; ObjectName: LPSTR; pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4014. ClientToken: HANDLE; DesiredAccess, GrantedAccess: DWORD;
  4015. Privileges: PPRIVILEGE_SET; ObjectCreation: BOOL; AccessGranted: BOOL;
  4016. var GenerateOnClose: BOOL): BOOL; stdcall;
  4017. {$EXTERNALSYM ObjectOpenAuditAlarmA}
  4018. function ObjectOpenAuditAlarmW(SubsystemName: LPCWSTR; HandleId: LPVOID;
  4019. ObjectTypeName, ObjectName: LPWSTR; pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4020. ClientToken: HANDLE; DesiredAccess: DWORD; GrantedAccess: DWORD;
  4021. Privileges: PPRIVILEGE_SET; ObjectCreation: BOOL; AccessGranted: BOOL;
  4022. var GenerateOnClose: BOOL): BOOL; stdcall;
  4023. {$EXTERNALSYM ObjectOpenAuditAlarmW}
  4024. function ObjectOpenAuditAlarm(SubsystemName: LPCTSTR; HandleId: LPVOID;
  4025. ObjectTypeName: LPTSTR; ObjectName: LPTSTR; pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4026. ClientToken: HANDLE; DesiredAccess: DWORD; GrantedAccess: DWORD;
  4027. Privileges: PPRIVILEGE_SET; ObjectCreation: BOOL; AccessGranted: BOOL;
  4028. var GenerateOnClose: BOOL): BOOL; stdcall;
  4029. {$EXTERNALSYM ObjectOpenAuditAlarmA}
  4030. function ObjectPrivilegeAuditAlarmA(SubsystemName: LPCSTR; HandleId: LPVOID;
  4031. ClientToken: HANDLE; DesiredAccess: DWORD; const Privileges: PRIVILEGE_SET;
  4032. AccessGranted: BOOL): BOOL; stdcall;
  4033. {$EXTERNALSYM ObjectPrivilegeAuditAlarmA}
  4034. function ObjectPrivilegeAuditAlarmW(SubsystemName: LPCWSTR; HandleId: LPVOID;
  4035. ClientToken: HANDLE; DesiredAccess: DWORD; const Privileges: PRIVILEGE_SET;
  4036. AccessGranted: BOOL): BOOL; stdcall;
  4037. {$EXTERNALSYM ObjectPrivilegeAuditAlarmW}
  4038. function ObjectPrivilegeAuditAlarm(SubsystemName: LPCTSTR; HandleId: LPVOID;
  4039. ClientToken: HANDLE; DesiredAccess: DWORD; const Privileges: PRIVILEGE_SET;
  4040. AccessGranted: BOOL): BOOL; stdcall;
  4041. {$EXTERNALSYM ObjectPrivilegeAuditAlarmA}
  4042. function ObjectCloseAuditAlarmA(SubsystemName: LPCSTR; HandleId: LPVOID;
  4043. GenerateOnClose: BOOL): BOOL; stdcall;
  4044. {$EXTERNALSYM ObjectCloseAuditAlarmA}
  4045. function ObjectCloseAuditAlarmW(SubsystemName: LPCWSTR; HandleId: LPVOID;
  4046. GenerateOnClose: BOOL): BOOL; stdcall;
  4047. {$EXTERNALSYM ObjectCloseAuditAlarmW}
  4048. function ObjectCloseAuditAlarm(SubsystemName: LPCTSTR; HandleId: LPVOID;
  4049. GenerateOnClose: BOOL): BOOL; stdcall;
  4050. {$EXTERNALSYM ObjectCloseAuditAlarmA}
  4051. function ObjectDeleteAuditAlarmA(SubsystemName: LPCSTR; HandleId: LPVOID;
  4052. GenerateOnClose: BOOL): BOOL; stdcall;
  4053. {$EXTERNALSYM ObjectDeleteAuditAlarmA}
  4054. function ObjectDeleteAuditAlarmW(SubsystemName: LPCWSTR; HandleId: LPVOID;
  4055. GenerateOnClose: BOOL): BOOL; stdcall;
  4056. {$EXTERNALSYM ObjectDeleteAuditAlarmW}
  4057. function ObjectDeleteAuditAlarm(SubsystemName: LPCTSTR; HandleId: LPVOID;
  4058. GenerateOnClose: BOOL): BOOL; stdcall;
  4059. {$EXTERNALSYM ObjectDeleteAuditAlarmA}
  4060. function PrivilegedServiceAuditAlarmA(SubsystemName, ServiceName: LPCSTR;
  4061. ClientToken: HANDLE; const Privileges: PRIVILEGE_SET; AccessGranted: BOOL): BOOL; stdcall;
  4062. {$EXTERNALSYM PrivilegedServiceAuditAlarmA}
  4063. function PrivilegedServiceAuditAlarmW(SubsystemName, ServiceName: LPCWSTR;
  4064. ClientToken: HANDLE; const Privileges: PRIVILEGE_SET; AccessGranted: BOOL): BOOL; stdcall;
  4065. {$EXTERNALSYM PrivilegedServiceAuditAlarmW}
  4066. function PrivilegedServiceAuditAlarm(SubsystemName, ServiceName: LPCTSTR;
  4067. ClientToken: HANDLE; const Privileges: PRIVILEGE_SET; AccessGranted: BOOL): BOOL; stdcall;
  4068. {$EXTERNALSYM PrivilegedServiceAuditAlarmA}
  4069. function IsWellKnownSid(pSid: PSID; WellKnownSidType: WELL_KNOWN_SID_TYPE): BOOL; stdcall;
  4070. {$EXTERNALSYM IsWellKnownSid}
  4071. function CreateWellKnownSid(WellKnownSidType: WELL_KNOWN_SID_TYPE; DomainSid: PSID;
  4072. pSid: PSID; var cbSid: DWORD): BOOL; stdcall;
  4073. {$EXTERNALSYM CreateWellKnownSid}
  4074. function EqualDomainSid(pSid1, pSid2: PSID; pfEqual: PBOOL): BOOL; stdcall;
  4075. {$EXTERNALSYM EqualDomainSid}
  4076. function GetWindowsAccountDomainSid(pSid, ppDomainSid: PSID; var cbSid: DWORD): BOOL; stdcall;
  4077. {$EXTERNALSYM GetWindowsAccountDomainSid}
  4078. function IsValidSid(pSid: PSID): BOOL; stdcall;
  4079. {$EXTERNALSYM IsValidSid}
  4080. function EqualSid(pSid1, pSid2: PSID): BOOL; stdcall;
  4081. {$EXTERNALSYM EqualSid}
  4082. function EqualPrefixSid(pSid1, pSid2: PSID): BOOL; stdcall;
  4083. {$EXTERNALSYM EqualPrefixSid}
  4084. function GetSidLengthRequired(nSubAuthorityCount: UCHAR): DWORD; stdcall;
  4085. {$EXTERNALSYM GetSidLengthRequired}
  4086. function AllocateAndInitializeSid(pIdentifierAuthority: PSID_IDENTIFIER_AUTHORITY;
  4087. SubAuthorityCount: BYTE; nSubAuthority0, nSubAuthority1, nSubAuthority2,
  4088. nSubAuthority3, nSubAuthority4, nSubAuthority5, nSubAuthority6,
  4089. nSubAuthority7: DWORD; var pSid: PSID): BOOL; stdcall;
  4090. {$EXTERNALSYM AllocateAndInitializeSid}
  4091. function FreeSid(pSid: PSID): PVOID; stdcall;
  4092. {$EXTERNALSYM FreeSid}
  4093. function InitializeSid(Sid: PSID; pIdentifierAuthority: PSID_IDENTIFIER_AUTHORITY;
  4094. nSubAuthorityCount: BYTE): BOOL; stdcall;
  4095. {$EXTERNALSYM InitializeSid}
  4096. function GetSidIdentifierAuthority(pSid: PSID): PSID_IDENTIFIER_AUTHORITY; stdcall;
  4097. {$EXTERNALSYM GetSidIdentifierAuthority}
  4098. function GetSidSubAuthority(pSid: PSID; nSubAuthority: DWORD): PDWORD; stdcall;
  4099. {$EXTERNALSYM GetSidSubAuthority}
  4100. function GetSidSubAuthorityCount(pSid: PSID): PUCHAR; stdcall;
  4101. {$EXTERNALSYM GetSidSubAuthorityCount}
  4102. function GetLengthSid(pSid: PSID): DWORD; stdcall;
  4103. {$EXTERNALSYM GetLengthSid}
  4104. function CopySid(nDestinationSidLength: DWORD; pDestinationSid: PSID;
  4105. pSourceSid: PSID): BOOL; stdcall;
  4106. {$EXTERNALSYM CopySid}
  4107. function AreAllAccessesGranted(GrantedAccess, DesiredAccess: DWORD): BOOL; stdcall;
  4108. {$EXTERNALSYM AreAllAccessesGranted}
  4109. function AreAnyAccessesGranted(GrantedAccess, DesiredAccess: DWORD): BOOL; stdcall;
  4110. {$EXTERNALSYM AreAnyAccessesGranted}
  4111. procedure MapGenericMask(var AccessMask: DWORD; var GenericMapping: GENERIC_MAPPING); stdcall;
  4112. {$EXTERNALSYM MapGenericMask}
  4113. function IsValidAcl(pAcl: PACL): BOOL; stdcall;
  4114. {$EXTERNALSYM IsValidAcl}
  4115. function InitializeAcl(pAcl: PACL; nAclLength: DWORD; dwAclRevision: DWORD): BOOL; stdcall;
  4116. {$EXTERNALSYM InitializeAcl}
  4117. function GetAclInformation(pAcl: PACL; pAclInformation: LPVOID;
  4118. nAclInformationLength: DWORD; dwAclInformationClass: ACL_INFORMATION_CLASS): BOOL; stdcall;
  4119. {$EXTERNALSYM GetAclInformation}
  4120. function SetAclInformation(pAcl: PACL; pAclInformation: LPVOID;
  4121. nAclInformationLength: DWORD; dwAclInformationClass: ACL_INFORMATION_CLASS): BOOL; stdcall;
  4122. {$EXTERNALSYM SetAclInformation}
  4123. function AddAce(pAcl: PACL; dwAceRevision: DWORD; dwStartingAceIndex: DWORD;
  4124. pAceList: LPVOID; nAceListLength: DWORD): BOOL; stdcall;
  4125. {$EXTERNALSYM AddAce}
  4126. function DeleteAce(pAcl: PACL; dwAceIndex: DWORD): BOOL; stdcall;
  4127. {$EXTERNALSYM DeleteAce}
  4128. function GetAce(pAcl: PACL; dwAceIndex: DWORD; var pAce: LPVOID): BOOL; stdcall;
  4129. {$EXTERNALSYM GetAce}
  4130. function AddAccessAllowedAce(pAcl: PACL; dwAceRevision, AccessMask: DWORD; pSid: PSID): BOOL; stdcall;
  4131. {$EXTERNALSYM AddAccessAllowedAce}
  4132. function AddAccessAllowedAceEx(pAcl: PACL; dwAceRevision, AceFlags,
  4133. AccessMask: DWORD; pSid: PSID): BOOL; stdcall;
  4134. {$EXTERNALSYM AddAccessAllowedAceEx}
  4135. function AddAccessDeniedAce(pAcl: PACL; dwAceRevision, AccessMask: DWORD; pSid: PSID): BOOL; stdcall;
  4136. {$EXTERNALSYM AddAccessDeniedAce}
  4137. function AddAccessDeniedAceEx(pAcl: PACL; dwAceRevision, AceFlags: DWORD;
  4138. AccessMask: DWORD; pSid: PSID): BOOL; stdcall;
  4139. {$EXTERNALSYM AddAccessDeniedAceEx}
  4140. function AddAuditAccessAce(pAcl: PACL; dwAceRevision, dwAccessMask: DWORD;
  4141. pSid: PSID; bAuditSuccess, bAuditFailure: BOOL): BOOL; stdcall;
  4142. {$EXTERNALSYM AddAuditAccessAce}
  4143. function AddAuditAccessAceEx(pAcl: PACL; dwAceRevision, AceFlags,
  4144. dwAccessMask: DWORD; pSid: PSID; bAuditSuccess, bAuditFailure: BOOL): BOOL; stdcall;
  4145. {$EXTERNALSYM AddAuditAccessAceEx}
  4146. function AddAccessAllowedObjectAce(pAcl: PACL; dwAceRevision, AceFlags,
  4147. AccessMask: DWORD; ObjectTypeGuid, InheritedObjectTypeGuid: LPGUID; pSid: PSID): BOOL; stdcall;
  4148. {$EXTERNALSYM AddAccessAllowedObjectAce}
  4149. function AddAccessDeniedObjectAce(pAcl: PACL; dwAceRevision, AceFlags,
  4150. AccessMask: DWORD; ObjectTypeGuid, InheritedObjectTypeGuid: LPGUID; pSid: PSID): BOOL; stdcall;
  4151. {$EXTERNALSYM AddAccessDeniedObjectAce}
  4152. function AddAuditAccessObjectAce(pAcl: PACL; dwAceRevision, AceFlags,
  4153. AccessMask: DWORD; ObjectTypeGuid, InheritedObjectTypeGuid: LPGUID; pSid: PSID;
  4154. bAuditSuccess, bAuditFailure: BOOL): BOOL; stdcall;
  4155. {$EXTERNALSYM AddAuditAccessObjectAce}
  4156. function FindFirstFreeAce(pAcl: PACL; var pAce: LPVOID): BOOL; stdcall;
  4157. {$EXTERNALSYM FindFirstFreeAce}
  4158. function InitializeSecurityDescriptor(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4159. dwRevision: DWORD): BOOL; stdcall;
  4160. {$EXTERNALSYM InitializeSecurityDescriptor}
  4161. function IsValidSecurityDescriptor(pSecurityDescriptor: PSECURITY_DESCRIPTOR): BOOL; stdcall;
  4162. {$EXTERNALSYM IsValidSecurityDescriptor}
  4163. function GetSecurityDescriptorLength(pSecurityDescriptor: PSECURITY_DESCRIPTOR): DWORD; stdcall;
  4164. {$EXTERNALSYM GetSecurityDescriptorLength}
  4165. function GetSecurityDescriptorControl(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4166. var pControl: SECURITY_DESCRIPTOR_CONTROL; var lpdwRevision: DWORD): BOOL; stdcall;
  4167. {$EXTERNALSYM GetSecurityDescriptorControl}
  4168. function SetSecurityDescriptorControl(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4169. ControlBitsOfInterest, ControlBitsToSet: SECURITY_DESCRIPTOR_CONTROL): BOOL; stdcall;
  4170. {$EXTERNALSYM SetSecurityDescriptorControl}
  4171. function SetSecurityDescriptorDacl(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4172. bDaclPresent: BOOL; pDacl: PACL; bDaclDefaulted: BOOL): BOOL; stdcall;
  4173. {$EXTERNALSYM SetSecurityDescriptorDacl}
  4174. function GetSecurityDescriptorDacl(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4175. var lpbDaclPresent: BOOL; var pDacl: PACL; var lpbDaclDefaulted: BOOL): BOOL; stdcall;
  4176. {$EXTERNALSYM GetSecurityDescriptorDacl}
  4177. function SetSecurityDescriptorSacl(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4178. bSaclPresent: BOOL; pSacl: PACL; bSaclDefaulted: BOOL): BOOL; stdcall;
  4179. {$EXTERNALSYM SetSecurityDescriptorSacl}
  4180. function GetSecurityDescriptorSacl(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4181. var lpbSaclPresent: BOOL; var pSacl: PACL; var lpbSaclDefaulted: BOOL): BOOL; stdcall;
  4182. {$EXTERNALSYM GetSecurityDescriptorSacl}
  4183. function SetSecurityDescriptorOwner(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4184. pOwner: PSID; bOwnerDefaulted: BOOL): BOOL; stdcall;
  4185. {$EXTERNALSYM SetSecurityDescriptorOwner}
  4186. function GetSecurityDescriptorOwner(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4187. var pOwner: PSID; lpbOwnerDefaulted: PBOOL): BOOL; stdcall;
  4188. {$EXTERNALSYM GetSecurityDescriptorOwner}
  4189. function SetSecurityDescriptorGroup(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4190. pGroup: PSID; bGroupDefaulted: BOOL): BOOL; stdcall;
  4191. {$EXTERNALSYM SetSecurityDescriptorGroup}
  4192. function GetSecurityDescriptorGroup(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4193. var pGroup: PSID; lpbGroupDefaulted: PBOOL): BOOL; stdcall;
  4194. {$EXTERNALSYM GetSecurityDescriptorGroup}
  4195. function SetSecurityDescriptorRMControl(SecurityDescriptor: PSECURITY_DESCRIPTOR;
  4196. RMControl: PUCHAR): DWORD; stdcall;
  4197. {$EXTERNALSYM SetSecurityDescriptorRMControl}
  4198. function GetSecurityDescriptorRMControl(SecurityDescriptor: PSECURITY_DESCRIPTOR;
  4199. var RMControl: UCHAR): DWORD; stdcall;
  4200. {$EXTERNALSYM GetSecurityDescriptorRMControl}
  4201. function CreatePrivateObjectSecurity(ParentDescriptor, CreatorDescriptor: PSECURITY_DESCRIPTOR;
  4202. var NewDescriptor: PSECURITY_DESCRIPTOR; IsDirectoryObject: BOOL; Token: HANDLE;
  4203. const GenericMapping: GENERIC_MAPPING): BOOL; stdcall;
  4204. {$EXTERNALSYM CreatePrivateObjectSecurity}
  4205. function ConvertToAutoInheritPrivateObjectSecurity(ParentDescriptor,
  4206. CurrentSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4207. var NewSecurityDescriptor: PSECURITY_DESCRIPTOR; ObjectType: LPGUID;
  4208. IsDirectoryObject: ByteBool; const GenericMapping: GENERIC_MAPPING): BOOL; stdcall;
  4209. {$EXTERNALSYM ConvertToAutoInheritPrivateObjectSecurity}
  4210. function CreatePrivateObjectSecurityEx(ParentDescriptor,
  4211. CreatorDescriptor: PSECURITY_DESCRIPTOR;
  4212. var NewDescriptor: PSECURITY_DESCRIPTOR; ObjectType: LPGUID;
  4213. IsContainerObject: BOOL; AutoInheritFlags: ULONG; Token: HANDLE;
  4214. const GenericMapping: GENERIC_MAPPING): BOOL; stdcall;
  4215. {$EXTERNALSYM CreatePrivateObjectSecurityEx}
  4216. function SetPrivateObjectSecurity(SecurityInformation: SECURITY_INFORMATION;
  4217. ModificationDescriptor: PSECURITY_DESCRIPTOR;
  4218. var ObjectsSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4219. const GenericMapping: GENERIC_MAPPING; Token: HANDLE): BOOL; stdcall;
  4220. {$EXTERNALSYM SetPrivateObjectSecurity}
  4221. function SetPrivateObjectSecurityEx(SecurityInformation: SECURITY_INFORMATION;
  4222. ModificationDescriptor: PSECURITY_DESCRIPTOR;
  4223. var ObjectsSecurityDescriptor: PSECURITY_DESCRIPTOR; AutoInheritFlags: ULONG;
  4224. const GenericMapping: GENERIC_MAPPING; Token: HANDLE): BOOL; stdcall;
  4225. {$EXTERNALSYM SetPrivateObjectSecurityEx}
  4226. function GetPrivateObjectSecurity(ObjectDescriptor: PSECURITY_DESCRIPTOR;
  4227. SecurityInformation: SECURITY_INFORMATION;
  4228. ResultantDescriptor: PSECURITY_DESCRIPTOR; DescriptorLength: DWORD;
  4229. var ReturnLength: DWORD): BOOL; stdcall;
  4230. {$EXTERNALSYM GetPrivateObjectSecurity}
  4231. function DestroyPrivateObjectSecurity(var ObjectDescriptor: PSECURITY_DESCRIPTOR): BOOL; stdcall;
  4232. {$EXTERNALSYM DestroyPrivateObjectSecurity}
  4233. function MakeSelfRelativeSD(pAbsoluteSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4234. pSelfRelativeSecurityDescriptor: PSECURITY_DESCRIPTOR; var lpdwBufferLength: DWORD): BOOL; stdcall;
  4235. {$EXTERNALSYM MakeSelfRelativeSD}
  4236. function MakeAbsoluteSD(pSelfRelativeSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4237. pAbsoluteSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4238. var lpdwAbsoluteSecurityDescriptorSize: DWORD; pDacl: PACL;
  4239. var lpdwDaclSize: DWORD; pSacl: PACL; var lpdwSaclSize: DWORD; pOwner: PSID;
  4240. var lpdwOwnerSize: DWORD; pPrimaryGroup: PSID; var lpdwPrimaryGroupSize: DWORD): BOOL; stdcall;
  4241. {$EXTERNALSYM MakeAbsoluteSD}
  4242. function MakeAbsoluteSD2(pSelfRelativeSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4243. var lpdwBufferSize: DWORD): BOOL; stdcall;
  4244. {$EXTERNALSYM MakeAbsoluteSD2}
  4245. function SetFileSecurityA(lpFileName: LPCSTR; SecurityInformation: SECURITY_INFORMATION;
  4246. pSecurityDescriptor: PSECURITY_DESCRIPTOR): BOOL; stdcall;
  4247. {$EXTERNALSYM SetFileSecurityA}
  4248. function SetFileSecurityW(lpFileName: LPCWSTR; SecurityInformation: SECURITY_INFORMATION;
  4249. pSecurityDescriptor: PSECURITY_DESCRIPTOR): BOOL; stdcall;
  4250. {$EXTERNALSYM SetFileSecurityW}
  4251. function SetFileSecurity(lpFileName: LPCTSTR; SecurityInformation: SECURITY_INFORMATION;
  4252. pSecurityDescriptor: PSECURITY_DESCRIPTOR): BOOL; stdcall;
  4253. {$EXTERNALSYM SetFileSecurityA}
  4254. function GetFileSecurityA(lpFileName: LPCSTR; RequestedInformation: SECURITY_INFORMATION;
  4255. pSecurityDescriptor: PSECURITY_DESCRIPTOR; nLength: DWORD;
  4256. var lpnLengthNeeded: DWORD): BOOL; stdcall;
  4257. {$EXTERNALSYM GetFileSecurityA}
  4258. function GetFileSecurityW(lpFileName: LPCWSTR; RequestedInformation: SECURITY_INFORMATION;
  4259. pSecurityDescriptor: PSECURITY_DESCRIPTOR; nLength: DWORD;
  4260. var lpnLengthNeeded: DWORD): BOOL; stdcall;
  4261. {$EXTERNALSYM GetFileSecurityW}
  4262. function GetFileSecurity(lpFileName: LPCTSTR; RequestedInformation: SECURITY_INFORMATION;
  4263. pSecurityDescriptor: PSECURITY_DESCRIPTOR; nLength: DWORD;
  4264. var lpnLengthNeeded: DWORD): BOOL; stdcall;
  4265. {$EXTERNALSYM GetFileSecurityA}
  4266. function SetKernelObjectSecurity(Handle: HANDLE; SecurityInformation: SECURITY_INFORMATION;
  4267. SecurityDescriptor: PSECURITY_DESCRIPTOR): BOOL; stdcall;
  4268. {$EXTERNALSYM SetKernelObjectSecurity}
  4269. function FindFirstChangeNotificationA(lpPathName: LPCSTR; bWatchSubtree: Cardinal;
  4270. dwNotifyFilter: DWORD): HANDLE; stdcall;
  4271. {$EXTERNALSYM FindFirstChangeNotificationA}
  4272. function FindFirstChangeNotificationW(lpPathName: LPCWSTR; bWatchSubtree: Cardinal;
  4273. dwNotifyFilter: DWORD): HANDLE; stdcall;
  4274. {$EXTERNALSYM FindFirstChangeNotificationW}
  4275. function FindFirstChangeNotification(lpPathName: LPCTSTR; bWatchSubtree: Cardinal;
  4276. dwNotifyFilter: DWORD): HANDLE; stdcall;
  4277. {$EXTERNALSYM FindFirstChangeNotification}
  4278. function FindNextChangeNotification(hChangeHandle: HANDLE): BOOL; stdcall;
  4279. {$EXTERNALSYM FindNextChangeNotification}
  4280. function FindCloseChangeNotification(hChangeHandle: HANDLE): BOOL; stdcall;
  4281. {$EXTERNALSYM FindCloseChangeNotification}
  4282. function ReadDirectoryChangesW(hDirectory: HANDLE; lpBuffer: LPVOID;
  4283. nBufferLength: DWORD; bWatchSubtree: BOOL; dwNotifyFilter: DWORD;
  4284. lpBytesReturned: LPDWORD; lpOverlapped: LPOVERLAPPED;
  4285. lpCompletionRoutine: LPOVERLAPPED_COMPLETION_ROUTINE): BOOL; stdcall;
  4286. {$EXTERNALSYM ReadDirectoryChangesW}
  4287. function VirtualLock(lpAddress: LPVOID; dwSize: SIZE_T): BOOL; stdcall;
  4288. {$EXTERNALSYM VirtualLock}
  4289. function VirtualUnlock(lpAddress: LPVOID; dwSize: SIZE_T): BOOL; stdcall;
  4290. {$EXTERNALSYM VirtualUnlock}
  4291. function MapViewOfFileEx(hFileMappingObject: HANDLE; dwDesiredAccess: DWORD;
  4292. dwFileOffsetHigh: DWORD; dwFileOffsetLow: DWORD; dwNumberOfBytesToMap: SIZE_T;
  4293. lpBaseAddress: LPVOID): LPVOID; stdcall;
  4294. {$EXTERNALSYM MapViewOfFileEx}
  4295. function SetPriorityClass(hProcess: HANDLE; dwPriorityClass: DWORD): BOOL; stdcall;
  4296. {$EXTERNALSYM SetPriorityClass}
  4297. function GetPriorityClass(hProcess: HANDLE): DWORD; stdcall;
  4298. {$EXTERNALSYM GetPriorityClass}
  4299. function IsBadReadPtr(lp: LPVOID; ucb: UINT_PTR): BOOL; stdcall;
  4300. {$EXTERNALSYM IsBadReadPtr}
  4301. function IsBadWritePtr(lp: LPVOID; ucb: UINT_PTR): BOOL; stdcall;
  4302. {$EXTERNALSYM IsBadWritePtr}
  4303. function IsBadHugeReadPtr(lp: LPVOID; ucb: UINT_PTR): BOOL; stdcall;
  4304. {$EXTERNALSYM IsBadHugeReadPtr}
  4305. function IsBadHugeWritePtr(lp: LPVOID; ucb: UINT_PTR): BOOL; stdcall;
  4306. {$EXTERNALSYM IsBadHugeWritePtr}
  4307. function IsBadCodePtr(lpfn: FARPROC): BOOL; stdcall;
  4308. {$EXTERNALSYM IsBadCodePtr}
  4309. function IsBadStringPtrA(lpsz: LPCSTR; ucchMax: UINT_PTR): BOOL; stdcall;
  4310. {$EXTERNALSYM IsBadStringPtrA}
  4311. function IsBadStringPtrW(lpsz: LPCWSTR; ucchMax: UINT_PTR): BOOL; stdcall;
  4312. {$EXTERNALSYM IsBadStringPtrW}
  4313. function IsBadStringPtr(lpsz: LPCTSTR; ucchMax: UINT_PTR): BOOL; stdcall;
  4314. {$EXTERNALSYM IsBadStringPtr}
  4315. function LookupAccountSidA(lpSystemName: LPCSTR; Sid: PSID; Name: LPSTR;
  4316. var cchName: DWORD; ReferencedDomainName: LPSTR; var cchReferencedDomainName: DWORD;
  4317. var peUse: SID_NAME_USE): BOOL; stdcall;
  4318. {$EXTERNALSYM LookupAccountSidA}
  4319. function LookupAccountSidW(lpSystemName: LPCWSTR; Sid: PSID; Name: LPWSTR;
  4320. var cchName: DWORD; ReferencedDomainName: LPWSTR; var cchReferencedDomainName: DWORD;
  4321. var peUse: SID_NAME_USE): BOOL; stdcall;
  4322. {$EXTERNALSYM LookupAccountSidW}
  4323. function LookupAccountSid(lpSystemName: LPCTSTR; Sid: PSID; Name: LPTSTR;
  4324. var cchName: DWORD; ReferencedDomainName: LPTSTR; var cchReferencedDomainName: DWORD;
  4325. var peUse: SID_NAME_USE): BOOL; stdcall;
  4326. {$EXTERNALSYM LookupAccountSid}
  4327. function LookupAccountNameA(lpSystemName, lpAccountName: LPCSTR; Sid: PSID;
  4328. var cbSid: DWORD; ReferencedDomainName: LPSTR; var cchReferencedDomainName: DWORD;
  4329. var peUse: SID_NAME_USE): BOOL; stdcall;
  4330. {$EXTERNALSYM LookupAccountNameA}
  4331. function LookupAccountNameW(lpSystemName, lpAccountName: LPCWSTR; Sid: PSID;
  4332. var cbSid: DWORD; ReferencedDomainName: LPWSTR; var cchReferencedDomainName: DWORD;
  4333. var peUse: SID_NAME_USE): BOOL; stdcall;
  4334. {$EXTERNALSYM LookupAccountNameW}
  4335. function LookupAccountName(lpSystemName: LPCTSTR; lpAccountName: LPCTSTR; Sid: PSID;
  4336. var cbSid: DWORD; ReferencedDomainName: LPTSTR; var cchReferencedDomainName: DWORD;
  4337. var peUse: SID_NAME_USE): BOOL; stdcall;
  4338. {$EXTERNALSYM LookupAccountName}
  4339. function LookupPrivilegeValueA(lpSystemName, lpName: LPCSTR; var lpLuid: LUID): BOOL; stdcall;
  4340. {$EXTERNALSYM LookupPrivilegeValueA}
  4341. function LookupPrivilegeValueW(lpSystemName, lpName: LPCWSTR; var lpLuid: LUID): BOOL; stdcall;
  4342. {$EXTERNALSYM LookupPrivilegeValueW}
  4343. function LookupPrivilegeValue(lpSystemName, lpName: LPCTSTR; var lpLuid: LUID): BOOL; stdcall;
  4344. {$EXTERNALSYM LookupPrivilegeValue}
  4345. function LookupPrivilegeNameA(lpSystemName: LPCSTR; const lpLuid: LUID;
  4346. lpName: LPSTR; var cbName: DWORD): BOOL; stdcall;
  4347. {$EXTERNALSYM LookupPrivilegeNameA}
  4348. function LookupPrivilegeNameW(lpSystemName: LPCWSTR; const lpLuid: LUID;
  4349. lpName: LPWSTR; var cbName: DWORD): BOOL; stdcall;
  4350. {$EXTERNALSYM LookupPrivilegeNameW}
  4351. function LookupPrivilegeName(lpSystemName: LPCTSTR; const lpLuid: LUID;
  4352. lpName: LPTSTR; var cbName: DWORD): BOOL; stdcall;
  4353. {$EXTERNALSYM LookupPrivilegeName}
  4354. function LookupPrivilegeDisplayNameA(lpSystemName, lpName: LPCSTR;
  4355. lpDisplayName: LPSTR; var cbDisplayName, lpLanguageId: DWORD): BOOL; stdcall;
  4356. {$EXTERNALSYM LookupPrivilegeDisplayNameA}
  4357. function LookupPrivilegeDisplayNameW(lpSystemName, lpName: LPCWSTR;
  4358. lpDisplayName: LPWSTR; var cbDisplayName, lpLanguageId: DWORD): BOOL; stdcall;
  4359. {$EXTERNALSYM LookupPrivilegeDisplayNameW}
  4360. function LookupPrivilegeDisplayName(lpSystemName, lpName: LPCTSTR;
  4361. lpDisplayName: LPTSTR; var cbDisplayName, lpLanguageId: DWORD): BOOL; stdcall;
  4362. {$EXTERNALSYM LookupPrivilegeDisplayName}
  4363. function AllocateLocallyUniqueId(var Luid: LUID): BOOL; stdcall;
  4364. {$EXTERNALSYM AllocateLocallyUniqueId}
  4365. function BuildCommDCBA(lpDef: LPCSTR; var lpDCB: DCB): BOOL; stdcall;
  4366. {$EXTERNALSYM BuildCommDCBA}
  4367. function BuildCommDCBW(lpDef: LPCWSTR; var lpDCB: DCB): BOOL; stdcall;
  4368. {$EXTERNALSYM BuildCommDCBW}
  4369. function BuildCommDCB(lpDef: LPCTSTR; var lpDCB: DCB): BOOL; stdcall;
  4370. {$EXTERNALSYM BuildCommDCB}
  4371. function BuildCommDCBAndTimeoutsA(lpDef: LPCSTR; var lpDCB: DCB;
  4372. var lpCommTimeouts: COMMTIMEOUTS): BOOL; stdcall;
  4373. {$EXTERNALSYM BuildCommDCBAndTimeoutsA}
  4374. function BuildCommDCBAndTimeoutsW(lpDef: LPCWSTR; var lpDCB: DCB;
  4375. var lpCommTimeouts: COMMTIMEOUTS): BOOL; stdcall;
  4376. {$EXTERNALSYM BuildCommDCBAndTimeoutsW}
  4377. function BuildCommDCBAndTimeouts(lpDef: LPCTSTR; var lpDCB: DCB;
  4378. var lpCommTimeouts: COMMTIMEOUTS): BOOL; stdcall;
  4379. {$EXTERNALSYM BuildCommDCBAndTimeouts}
  4380. function CommConfigDialogA(lpszName: LPCSTR; hWnd: HWND; var lpCC: COMMCONFIG): BOOL; stdcall;
  4381. {$EXTERNALSYM CommConfigDialogA}
  4382. function CommConfigDialogW(lpszName: LPCWSTR; hWnd: HWND; var lpCC: COMMCONFIG): BOOL; stdcall;
  4383. {$EXTERNALSYM CommConfigDialogW}
  4384. function CommConfigDialog(lpszName: LPCTSTR; hWnd: HWND; var lpCC: COMMCONFIG): BOOL; stdcall;
  4385. {$EXTERNALSYM CommConfigDialog}
  4386. function GetDefaultCommConfigA(lpszName: LPCSTR; var lpCC: COMMCONFIG;
  4387. var lpdwSize: DWORD): BOOL; stdcall;
  4388. {$EXTERNALSYM GetDefaultCommConfigA}
  4389. function GetDefaultCommConfigW(lpszName: LPCWSTR; var lpCC: COMMCONFIG;
  4390. var lpdwSize: DWORD): BOOL; stdcall;
  4391. {$EXTERNALSYM GetDefaultCommConfigW}
  4392. function GetDefaultCommConfig(lpszName: LPCTSTR; var lpCC: COMMCONFIG;
  4393. var lpdwSize: DWORD): BOOL; stdcall;
  4394. {$EXTERNALSYM GetDefaultCommConfig}
  4395. function SetDefaultCommConfigA(lpszName: LPCSTR; const lpCC: COMMCONFIG;
  4396. dwSize: DWORD): BOOL; stdcall;
  4397. {$EXTERNALSYM SetDefaultCommConfigA}
  4398. function SetDefaultCommConfigW(lpszName: LPCWSTR; const lpCC: COMMCONFIG;
  4399. dwSize: DWORD): BOOL; stdcall;
  4400. {$EXTERNALSYM SetDefaultCommConfigW}
  4401. function SetDefaultCommConfig(lpszName: LPCTSTR; const lpCC: COMMCONFIG;
  4402. dwSize: DWORD): BOOL; stdcall;
  4403. {$EXTERNALSYM SetDefaultCommConfig}
  4404. const
  4405. MAX_COMPUTERNAME_LENGTH = 15;
  4406. {$EXTERNALSYM MAX_COMPUTERNAME_LENGTH}
  4407. function GetComputerNameA(lpBuffer: LPSTR; var nSize: DWORD): BOOL; stdcall;
  4408. {$EXTERNALSYM GetComputerNameA}
  4409. function GetComputerNameW(lpBuffer: LPWSTR; var nSize: DWORD): BOOL; stdcall;
  4410. {$EXTERNALSYM GetComputerNameW}
  4411. function GetComputerName(lpBuffer: LPTSTR; var nSize: DWORD): BOOL; stdcall;
  4412. {$EXTERNALSYM GetComputerName}
  4413. function SetComputerNameA(lpComputerName: LPCSTR): BOOL; stdcall;
  4414. {$EXTERNALSYM SetComputerNameA}
  4415. function SetComputerNameW(lpComputerName: LPCWSTR): BOOL; stdcall;
  4416. {$EXTERNALSYM SetComputerNameW}
  4417. function SetComputerName(lpComputerName: LPCTSTR): BOOL; stdcall;
  4418. {$EXTERNALSYM SetComputerName}
  4419. type
  4420. _COMPUTER_NAME_FORMAT = (
  4421. ComputerNameNetBIOS,
  4422. ComputerNameDnsHostname,
  4423. ComputerNameDnsDomain,
  4424. ComputerNameDnsFullyQualified,
  4425. ComputerNamePhysicalNetBIOS,
  4426. ComputerNamePhysicalDnsHostname,
  4427. ComputerNamePhysicalDnsDomain,
  4428. ComputerNamePhysicalDnsFullyQualified,
  4429. ComputerNameMax);
  4430. {$EXTERNALSYM _COMPUTER_NAME_FORMAT}
  4431. COMPUTER_NAME_FORMAT = _COMPUTER_NAME_FORMAT;
  4432. {$EXTERNALSYM COMPUTER_NAME_FORMAT}
  4433. TComputerNameFormat = COMPUTER_NAME_FORMAT;
  4434. function GetComputerNameExA(NameType: COMPUTER_NAME_FORMAT; lpBuffer: LPSTR;
  4435. var nSize: DWORD): BOOL; stdcall;
  4436. {$EXTERNALSYM GetComputerNameExA}
  4437. function GetComputerNameExW(NameType: COMPUTER_NAME_FORMAT; lpBuffer: LPWSTR;
  4438. var nSize: DWORD): BOOL; stdcall;
  4439. {$EXTERNALSYM GetComputerNameExW}
  4440. function GetComputerNameEx(NameType: COMPUTER_NAME_FORMAT; lpBuffer: LPTSTR;
  4441. varnSize: DWORD): BOOL; stdcall;
  4442. {$EXTERNALSYM GetComputerNameEx}
  4443. function SetComputerNameExA(NameType: COMPUTER_NAME_FORMAT; lpBuffer: LPCSTR): BOOL; stdcall;
  4444. {$EXTERNALSYM SetComputerNameExA}
  4445. function SetComputerNameExW(NameType: COMPUTER_NAME_FORMAT; lpBuffer: LPCWSTR): BOOL; stdcall;
  4446. {$EXTERNALSYM SetComputerNameExW}
  4447. function SetComputerNameEx(NameType: COMPUTER_NAME_FORMAT; lpBuffer: LPCTSTR): BOOL; stdcall;
  4448. {$EXTERNALSYM SetComputerNameEx}
  4449. function DnsHostnameToComputerNameA(Hostname, ComputerName: LPSTR; var nSize: DWORD): BOOL; stdcall;
  4450. {$EXTERNALSYM DnsHostnameToComputerNameA}
  4451. function DnsHostnameToComputerNameW(Hostname, ComputerName: LPWSTR; var nSize: DWORD): BOOL; stdcall;
  4452. {$EXTERNALSYM DnsHostnameToComputerNameW}
  4453. function DnsHostnameToComputerName(Hostname, ComputerName: LPTSTR; var nSize: DWORD): BOOL; stdcall;
  4454. {$EXTERNALSYM DnsHostnameToComputerName}
  4455. function GetUserNameA(lpBuffer: LPSTR; var nSize: DWORD): BOOL; stdcall;
  4456. {$EXTERNALSYM GetUserNameA}
  4457. function GetUserNameW(lpBuffer: LPWSTR; var nSize: DWORD): BOOL; stdcall;
  4458. {$EXTERNALSYM GetUserNameW}
  4459. function GetUserName(lpBuffer: LPTSTR; var nSize: DWORD): BOOL; stdcall;
  4460. {$EXTERNALSYM GetUserName}
  4461. //
  4462. // Logon Support APIs
  4463. //
  4464. const
  4465. LOGON32_LOGON_INTERACTIVE = 2;
  4466. {$EXTERNALSYM LOGON32_LOGON_INTERACTIVE}
  4467. LOGON32_LOGON_NETWORK = 3;
  4468. {$EXTERNALSYM LOGON32_LOGON_NETWORK}
  4469. LOGON32_LOGON_BATCH = 4;
  4470. {$EXTERNALSYM LOGON32_LOGON_BATCH}
  4471. LOGON32_LOGON_SERVICE = 5;
  4472. {$EXTERNALSYM LOGON32_LOGON_SERVICE}
  4473. LOGON32_LOGON_UNLOCK = 7;
  4474. {$EXTERNALSYM LOGON32_LOGON_UNLOCK}
  4475. LOGON32_LOGON_NETWORK_CLEARTEXT = 8;
  4476. {$EXTERNALSYM LOGON32_LOGON_NETWORK_CLEARTEXT}
  4477. LOGON32_LOGON_NEW_CREDENTIALS = 9;
  4478. {$EXTERNALSYM LOGON32_LOGON_NEW_CREDENTIALS}
  4479. LOGON32_PROVIDER_DEFAULT = 0;
  4480. {$EXTERNALSYM LOGON32_PROVIDER_DEFAULT}
  4481. LOGON32_PROVIDER_WINNT35 = 1;
  4482. {$EXTERNALSYM LOGON32_PROVIDER_WINNT35}
  4483. LOGON32_PROVIDER_WINNT40 = 2;
  4484. {$EXTERNALSYM LOGON32_PROVIDER_WINNT40}
  4485. LOGON32_PROVIDER_WINNT50 = 3;
  4486. {$EXTERNALSYM LOGON32_PROVIDER_WINNT50}
  4487. function LogonUserA(lpszUsername, lpszDomain, lpszPassword: LPCSTR;
  4488. dwLogonType, dwLogonProvider: DWORD; var phToken: HANDLE): BOOL; stdcall;
  4489. {$EXTERNALSYM LogonUserA}
  4490. function LogonUserW(lpszUsername, lpszDomain, lpszPassword: LPCWSTR;
  4491. dwLogonType, dwLogonProvider: DWORD; var phToken: HANDLE): BOOL; stdcall;
  4492. {$EXTERNALSYM LogonUserW}
  4493. function LogonUser(lpszUsername, lpszDomain, lpszPassword: LPCTSTR;
  4494. dwLogonType, dwLogonProvider: DWORD; var phToken: HANDLE): BOOL; stdcall;
  4495. {$EXTERNALSYM LogonUser}
  4496. function LogonUserExA(lpszUsername, lpszDomain, lpszPassword: LPCSTR;
  4497. dwLogonType, dwLogonProvider: DWORD; var phToken: HANDLE; ppLogonSid: PPSID;
  4498. ppProfileBuffer: PPVOID; pdwProfileLength: LPDWORD; pQuotaLimits: PQUOTA_LIMITS): BOOL; stdcall;
  4499. {$EXTERNALSYM LogonUserExA}
  4500. function LogonUserExW(lpszUsername, lpszDomain, lpszPassword: LPCWSTR;
  4501. dwLogonType, dwLogonProvider: DWORD; var phToken: HANDLE; ppLogonSid: PPSID;
  4502. ppProfileBuffer: PPVOID; pdwProfileLength: LPDWORD; pQuotaLimits: PQUOTA_LIMITS): BOOL; stdcall;
  4503. {$EXTERNALSYM LogonUserExW}
  4504. function LogonUserEx(lpszUsername, lpszDomain, lpszPassword: LPCTSTR;
  4505. dwLogonType, dwLogonProvider: DWORD; var phToken: HANDLE; ppLogonSid: PPSID;
  4506. ppProfileBuffer: PPVOID; pdwProfileLength: LPDWORD; pQuotaLimits: PQUOTA_LIMITS): BOOL; stdcall;
  4507. {$EXTERNALSYM LogonUserEx}
  4508. function ImpersonateLoggedOnUser(hToken: HANDLE): BOOL; stdcall;
  4509. {$EXTERNALSYM ImpersonateLoggedOnUser}
  4510. function CreateProcessAsUserA(hToken: HANDLE; lpApplicationName: LPCSTR;
  4511. lpCommandLine: LPSTR; lpProcessAttributes: LPSECURITY_ATTRIBUTES;
  4512. lpThreadAttributes: LPSECURITY_ATTRIBUTES; bInheritHandles: BOOL;
  4513. dwCreationFlags: DWORD; lpEnvironment: LPVOID; lpCurrentDirectory: LPCSTR;
  4514. const lpStartupInfo: STARTUPINFOA; var lpProcessInformation: PROCESS_INFORMATION): BOOL; stdcall;
  4515. {$EXTERNALSYM CreateProcessAsUserA}
  4516. function CreateProcessAsUserW(hToken: HANDLE; lpApplicationName: LPCWSTR;
  4517. lpCommandLine: LPWSTR; lpProcessAttributes: LPSECURITY_ATTRIBUTES;
  4518. lpThreadAttributes: LPSECURITY_ATTRIBUTES; bInheritHandles: BOOL;
  4519. dwCreationFlags: DWORD; lpEnvironment: LPVOID; lpCurrentDirectory: LPCWSTR;
  4520. const lpStartupInfo: STARTUPINFOW; var lpProcessInformation: PROCESS_INFORMATION): BOOL; stdcall;
  4521. {$EXTERNALSYM CreateProcessAsUserW}
  4522. function CreateProcessAsUser(hToken: HANDLE; lpApplicationName: LPCTSTR;
  4523. lpCommandLine: LPTSTR; lpProcessAttributes: LPSECURITY_ATTRIBUTES;
  4524. lpThreadAttributes: LPSECURITY_ATTRIBUTES; bInheritHandles: BOOL;
  4525. dwCreationFlags: DWORD; lpEnvironment: LPVOID; lpCurrentDirectory: LPCTSTR;
  4526. const lpStartupInfo: STARTUPINFO; var lpProcessInformation: PROCESS_INFORMATION): BOOL; stdcall;
  4527. {$EXTERNALSYM CreateProcessAsUser}
  4528. //
  4529. // LogonFlags
  4530. //
  4531. const
  4532. LOGON_WITH_PROFILE = $00000001;
  4533. {$EXTERNALSYM LOGON_WITH_PROFILE}
  4534. LOGON_NETCREDENTIALS_ONLY = $00000002;
  4535. {$EXTERNALSYM LOGON_NETCREDENTIALS_ONLY}
  4536. LOGON_ZERO_PASSWORD_BUFFER = DWORD($80000000);
  4537. {$EXTERNALSYM LOGON_ZERO_PASSWORD_BUFFER}
  4538. function CreateProcessWithLogonW(lpUsername, lpDomain, lpPassword: LPCWSTR;
  4539. dwLogonFlags: DWORD; lpApplicationName: LPCWSTR; lpCommandLine: LPWSTR;
  4540. dwCreationFlags: DWORD; lpEnvironment: LPVOID; lpCurrentDirectory: LPCWSTR;
  4541. const lpStartupInfo: STARTUPINFOW; var lpProcessInformation: PROCESS_INFORMATION): BOOL; stdcall;
  4542. {$EXTERNALSYM CreateProcessWithLogonW}
  4543. function CreateProcessWithTokenW(hToken: HANDLE; dwLogonFlags: DWORD; lpApplicationName: LPCWSTR; lpCommandLine: LPWSTR;
  4544. dwCreationFlags: DWORD; lpEnvironment: LPVOID; lpCurrentDirectory: LPCWSTR; lpStartupInfo: LPSTARTUPINFOW;
  4545. lpProcessInformation: LPPROCESS_INFORMATION): BOOL; stdcall;
  4546. {$EXTERNALSYM CreateProcessWithTokenW}
  4547. function ImpersonateAnonymousToken(ThreadHandle: HANDLE): BOOL; stdcall;
  4548. {$EXTERNALSYM ImpersonateAnonymousToken}
  4549. function DuplicateTokenEx(hExistingToken: HANDLE; dwDesiredAccess: DWORD;
  4550. lpTokenAttributes: LPSECURITY_ATTRIBUTES; ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL;
  4551. TokenType: TOKEN_TYPE; var phNewToken: HANDLE): BOOL; stdcall;
  4552. {$EXTERNALSYM DuplicateTokenEx}
  4553. function CreateRestrictedToken(ExistingTokenHandle: HANDLE; Flags: DWORD;
  4554. DisableSidCount: DWORD; SidsToDisable: PSID_AND_ATTRIBUTES;
  4555. DeletePrivilegeCount: DWORD; PrivilegesToDelete: PLUID_AND_ATTRIBUTES;
  4556. RestrictedSidCount: DWORD; SidsToRestrict: PSID_AND_ATTRIBUTES;
  4557. var NewTokenHandle: HANDLE): BOOL; stdcall;
  4558. {$EXTERNALSYM CreateRestrictedToken}
  4559. function IsTokenRestricted(TokenHandle: HANDLE): BOOL; stdcall;
  4560. {$EXTERNALSYM IsTokenRestricted}
  4561. function CheckTokenMembership(TokenHandle: HANDLE; SidToCheck: PSID; var IsMember: BOOL): BOOL; stdcall;
  4562. {$EXTERNALSYM CheckTokenMembership}
  4563. function IsTokenUntrusted(TokenHandle: HANDLE): BOOL; stdcall;
  4564. {$EXTERNALSYM IsTokenUntrusted}
  4565. //
  4566. // Thread pool API's
  4567. //
  4568. type
  4569. WAITORTIMERCALLBACK = WAITORTIMERCALLBACKFUNC;
  4570. {$EXTERNALSYM WAITORTIMERCALLBACK}
  4571. TWaitOrTimerCallback = WAITORTIMERCALLBACKFUNC;
  4572. function RegisterWaitForSingleObject(var phNewWaitObject: HANDLE; hObject: HANDLE;
  4573. Callback: WAITORTIMERCALLBACK; Context: PVOID; dwMilliseconds, dwFlags: ULONG): BOOL; stdcall;
  4574. {$EXTERNALSYM RegisterWaitForSingleObject}
  4575. function RegisterWaitForSingleObjectEx(hObject: HANDLE;
  4576. Callback: WAITORTIMERCALLBACK; Context: PVOID; dwMilliseconds, dwFlags: ULONG): HANDLE; stdcall;
  4577. {$EXTERNALSYM RegisterWaitForSingleObjectEx}
  4578. function UnregisterWait(WaitHandle: HANDLE): BOOL; stdcall;
  4579. {$EXTERNALSYM UnregisterWait}
  4580. function UnregisterWaitEx(WaitHandle, CompletionEvent: HANDLE): BOOL; stdcall;
  4581. {$EXTERNALSYM UnregisterWaitEx}
  4582. function QueueUserWorkItem(Function_: LPTHREAD_START_ROUTINE; Context: PVOID;
  4583. Flags: ULONG): BOOL; stdcall;
  4584. {$EXTERNALSYM QueueUserWorkItem}
  4585. function BindIoCompletionCallback(FileHandle: HANDLE;
  4586. Function_: LPOVERLAPPED_COMPLETION_ROUTINE; Flags: ULONG): BOOL; stdcall;
  4587. {$EXTERNALSYM BindIoCompletionCallback}
  4588. function CreateTimerQueue: HANDLE; stdcall;
  4589. {$EXTERNALSYM CreateTimerQueue}
  4590. function CreateTimerQueueTimer(var phNewTimer: HANDLE; TimerQueue: HANDLE;
  4591. Callback: WAITORTIMERCALLBACK; Parameter: PVOID; DueTime, Period: DWORD;
  4592. Flags: ULONG): BOOL; stdcall;
  4593. {$EXTERNALSYM CreateTimerQueueTimer}
  4594. function ChangeTimerQueueTimer(TimerQueue, Timer: HANDLE; DueTime, Period: ULONG): BOOL; stdcall;
  4595. {$EXTERNALSYM ChangeTimerQueueTimer}
  4596. function DeleteTimerQueueTimer(TimerQueue, Timer, CompletionEvent: HANDLE): BOOL; stdcall;
  4597. {$EXTERNALSYM DeleteTimerQueueTimer}
  4598. function DeleteTimerQueueEx(TimerQueue, CompletionEvent: HANDLE): BOOL; stdcall;
  4599. {$EXTERNALSYM DeleteTimerQueueEx}
  4600. function SetTimerQueueTimer(TimerQueue, Callback: WAITORTIMERCALLBACK;
  4601. Parameter: PVOID; DueTime, Period: DWORD; PreferIo: BOOL): HANDLE; stdcall;
  4602. {$EXTERNALSYM SetTimerQueueTimer}
  4603. function CancelTimerQueueTimer(TimerQueue, Timer: HANDLE): BOOL; stdcall;
  4604. {$EXTERNALSYM CancelTimerQueueTimer}
  4605. function DeleteTimerQueue(TimerQueue: HANDLE): BOOL; stdcall;
  4606. {$EXTERNALSYM DeleteTimerQueue}
  4607. //
  4608. // Plug-and-Play API's
  4609. //
  4610. const
  4611. HW_PROFILE_GUIDLEN = 39; // 36-characters plus NULL terminator
  4612. {$EXTERNALSYM HW_PROFILE_GUIDLEN}
  4613. MAX_PROFILE_LEN = 80;
  4614. {$EXTERNALSYM MAX_PROFILE_LEN}
  4615. DOCKINFO_UNDOCKED = $1;
  4616. {$EXTERNALSYM DOCKINFO_UNDOCKED}
  4617. DOCKINFO_DOCKED = $2;
  4618. {$EXTERNALSYM DOCKINFO_DOCKED}
  4619. DOCKINFO_USER_SUPPLIED = $4;
  4620. {$EXTERNALSYM DOCKINFO_USER_SUPPLIED}
  4621. DOCKINFO_USER_UNDOCKED = DOCKINFO_USER_SUPPLIED or DOCKINFO_UNDOCKED;
  4622. {$EXTERNALSYM DOCKINFO_USER_UNDOCKED}
  4623. DOCKINFO_USER_DOCKED = DOCKINFO_USER_SUPPLIED or DOCKINFO_DOCKED;
  4624. {$EXTERNALSYM DOCKINFO_USER_DOCKED}
  4625. type
  4626. LPHW_PROFILE_INFOA = ^HW_PROFILE_INFOA;
  4627. {$EXTERNALSYM LPHW_PROFILE_INFOA}
  4628. tagHW_PROFILE_INFOA = record
  4629. dwDockInfo: DWORD;
  4630. szHwProfileGuid: array [0..HW_PROFILE_GUIDLEN - 1] of CHAR;
  4631. szHwProfileName: array [0..MAX_PROFILE_LEN - 1] of CHAR;
  4632. end;
  4633. {$EXTERNALSYM tagHW_PROFILE_INFOA}
  4634. HW_PROFILE_INFOA = tagHW_PROFILE_INFOA;
  4635. {$EXTERNALSYM HW_PROFILE_INFOA}
  4636. THWProfileInfoA = HW_PROFILE_INFOA;
  4637. PHWProfileInfoA = LPHW_PROFILE_INFOA;
  4638. LPHW_PROFILE_INFOW = ^HW_PROFILE_INFOW;
  4639. {$EXTERNALSYM LPHW_PROFILE_INFOW}
  4640. tagHW_PROFILE_INFOW = record
  4641. dwDockInfo: DWORD;
  4642. szHwProfileGuid: array [0..HW_PROFILE_GUIDLEN - 1] of WCHAR;
  4643. szHwProfileName: array [0..MAX_PROFILE_LEN - 1] of WCHAR;
  4644. end;
  4645. {$EXTERNALSYM tagHW_PROFILE_INFOW}
  4646. HW_PROFILE_INFOW = tagHW_PROFILE_INFOW;
  4647. {$EXTERNALSYM HW_PROFILE_INFOW}
  4648. THWProfileInfoW = HW_PROFILE_INFOW;
  4649. PHWProfileInfoW = LPHW_PROFILE_INFOW;
  4650. {$IFDEF UNICODE}
  4651. HW_PROFILE_INFO = HW_PROFILE_INFOW;
  4652. {$EXTERNALSYM HW_PROFILE_INFO}
  4653. LPHW_PROFILE_INFO = LPHW_PROFILE_INFOW;
  4654. {$EXTERNALSYM LPHW_PROFILE_INFO}
  4655. THWProfileInfo = THWProfileInfoW;
  4656. PHWProfileInfo = PHWProfileInfoW;
  4657. {$ELSE}
  4658. HW_PROFILE_INFO = HW_PROFILE_INFOA;
  4659. {$EXTERNALSYM HW_PROFILE_INFO}
  4660. LPHW_PROFILE_INFO = LPHW_PROFILE_INFOA;
  4661. {$EXTERNALSYM LPHW_PROFILE_INFO}
  4662. THWProfileInfo = THWProfileInfoA;
  4663. PHWProfileInfo = PHWProfileInfoA;
  4664. {$ENDIF UNICODE}
  4665. function GetCurrentHwProfileA(var lpHwProfileInfo: HW_PROFILE_INFOA): BOOL; stdcall;
  4666. {$EXTERNALSYM GetCurrentHwProfileA}
  4667. function GetCurrentHwProfileW(var lpHwProfileInfo: HW_PROFILE_INFOW): BOOL; stdcall;
  4668. {$EXTERNALSYM GetCurrentHwProfileW}
  4669. function GetCurrentHwProfile(var lpHwProfileInfo: HW_PROFILE_INFO): BOOL; stdcall;
  4670. {$EXTERNALSYM GetCurrentHwProfile}
  4671. //
  4672. // Performance counter API's
  4673. //
  4674. function QueryPerformanceCounter(var lpPerformanceCount: LARGE_INTEGER): BOOL; stdcall;
  4675. {$EXTERNALSYM QueryPerformanceCounter}
  4676. function QueryPerformanceFrequency(var lpFrequency: LARGE_INTEGER): BOOL; stdcall;
  4677. {$EXTERNALSYM QueryPerformanceFrequency}
  4678. function GetVersionExA(lpVersionInformation: LPOSVERSIONINFOA): BOOL; stdcall;
  4679. {$EXTERNALSYM GetVersionExA}
  4680. function GetVersionExW(lpVersionInformation: LPOSVERSIONINFOW): BOOL; stdcall;
  4681. {$EXTERNALSYM GetVersionExW}
  4682. function GetVersionEx(lpVersionInformation: LPOSVERSIONINFO): BOOL; stdcall;
  4683. {$EXTERNALSYM GetVersionEx}
  4684. function VerifyVersionInfoA(var lpVersionInformation: OSVERSIONINFOEXA;
  4685. dwTypeMask: DWORD; dwlConditionMask: DWORDLONG): BOOL; stdcall;
  4686. {$EXTERNALSYM VerifyVersionInfoA}
  4687. function VerifyVersionInfoW(var lpVersionInformation: OSVERSIONINFOEXW;
  4688. dwTypeMask: DWORD; dwlConditionMask: DWORDLONG): BOOL; stdcall;
  4689. {$EXTERNALSYM VerifyVersionInfoW}
  4690. function VerifyVersionInfo(var lpVersionInformation: OSVERSIONINFOEX;
  4691. dwTypeMask: DWORD; dwlConditionMask: DWORDLONG): BOOL; stdcall;
  4692. {$EXTERNALSYM VerifyVersionInfo}
  4693. // DOS and OS/2 Compatible Error Code definitions returned by the Win32 Base
  4694. // API functions.
  4695. //
  4696. // #include <winerror.h>
  4697. // Abnormal termination codes
  4698. const
  4699. TC_NORMAL = 0;
  4700. {$EXTERNALSYM TC_NORMAL}
  4701. TC_HARDERR = 1;
  4702. {$EXTERNALSYM TC_HARDERR}
  4703. TC_GP_TRAP = 2;
  4704. {$EXTERNALSYM TC_GP_TRAP}
  4705. TC_SIGNAL = 3;
  4706. {$EXTERNALSYM TC_SIGNAL}
  4707. //
  4708. // Power Management APIs
  4709. //
  4710. AC_LINE_OFFLINE = $00;
  4711. {$EXTERNALSYM AC_LINE_OFFLINE}
  4712. AC_LINE_ONLINE = $01;
  4713. {$EXTERNALSYM AC_LINE_ONLINE}
  4714. AC_LINE_BACKUP_POWER = $02;
  4715. {$EXTERNALSYM AC_LINE_BACKUP_POWER}
  4716. AC_LINE_UNKNOWN = $FF;
  4717. {$EXTERNALSYM AC_LINE_UNKNOWN}
  4718. BATTERY_FLAG_HIGH = $01;
  4719. {$EXTERNALSYM BATTERY_FLAG_HIGH}
  4720. BATTERY_FLAG_LOW = $02;
  4721. {$EXTERNALSYM BATTERY_FLAG_LOW}
  4722. BATTERY_FLAG_CRITICAL = $04;
  4723. {$EXTERNALSYM BATTERY_FLAG_CRITICAL}
  4724. BATTERY_FLAG_CHARGING = $08;
  4725. {$EXTERNALSYM BATTERY_FLAG_CHARGING}
  4726. BATTERY_FLAG_NO_BATTERY = $80;
  4727. {$EXTERNALSYM BATTERY_FLAG_NO_BATTERY}
  4728. BATTERY_FLAG_UNKNOWN = $FF;
  4729. {$EXTERNALSYM BATTERY_FLAG_UNKNOWN}
  4730. BATTERY_PERCENTAGE_UNKNOWN = $FF;
  4731. {$EXTERNALSYM BATTERY_PERCENTAGE_UNKNOWN}
  4732. BATTERY_LIFE_UNKNOWN = DWORD($FFFFFFFF);
  4733. {$EXTERNALSYM BATTERY_LIFE_UNKNOWN}
  4734. type
  4735. LPSYSTEM_POWER_STATUS = ^SYSTEM_POWER_STATUS;
  4736. {$EXTERNALSYM LPSYSTEM_POWER_STATUS}
  4737. _SYSTEM_POWER_STATUS = record
  4738. ACLineStatus: BYTE;
  4739. BatteryFlag: BYTE;
  4740. BatteryLifePercent: BYTE;
  4741. Reserved1: BYTE;
  4742. BatteryLifeTime: DWORD;
  4743. BatteryFullLifeTime: DWORD;
  4744. end;
  4745. {$EXTERNALSYM _SYSTEM_POWER_STATUS}
  4746. SYSTEM_POWER_STATUS = _SYSTEM_POWER_STATUS;
  4747. {$EXTERNALSYM SYSTEM_POWER_STATUS}
  4748. TSystemPowerStatus = SYSTEM_POWER_STATUS;
  4749. PSystemPowerStatus = LPSYSTEM_POWER_STATUS;
  4750. function GetSystemPowerStatus(var lpSystemPowerStatus: SYSTEM_POWER_STATUS): BOOL; stdcall;
  4751. {$EXTERNALSYM GetSystemPowerStatus}
  4752. function SetSystemPowerState(fSuspend, fForce: BOOL): BOOL; stdcall;
  4753. {$EXTERNALSYM SetSystemPowerState}
  4754. //
  4755. // Very Large Memory API Subset
  4756. //
  4757. function AllocateUserPhysicalPages(hProcess: HANDLE; var NumberOfPages: ULONG_PTR;
  4758. PageArray: PULONG_PTR): BOOL; stdcall;
  4759. {$EXTERNALSYM AllocateUserPhysicalPages}
  4760. function FreeUserPhysicalPages(hProcess: HANDLE; var NumberOfPages: ULONG_PTR;
  4761. PageArray: PULONG_PTR): BOOL; stdcall;
  4762. {$EXTERNALSYM FreeUserPhysicalPages}
  4763. function MapUserPhysicalPages(VirtualAddress: PVOID; NumberOfPages: ULONG_PTR;
  4764. PageArray: PULONG_PTR): BOOL; stdcall;
  4765. {$EXTERNALSYM MapUserPhysicalPages}
  4766. function MapUserPhysicalPagesScatter(VirtualAddresses: PVOID; NumberOfPages: ULONG_PTR;
  4767. PageArray: PULONG_PTR): BOOL; stdcall;
  4768. {$EXTERNALSYM MapUserPhysicalPagesScatter}
  4769. function CreateJobObjectA(lpJobAttributes: LPSECURITY_ATTRIBUTES; lpName: LPCSTR): HANDLE; stdcall;
  4770. {$EXTERNALSYM CreateJobObjectA}
  4771. function CreateJobObjectW(lpJobAttributes: LPSECURITY_ATTRIBUTES; lpName: LPCWSTR): HANDLE; stdcall;
  4772. {$EXTERNALSYM CreateJobObjectW}
  4773. function CreateJobObject(lpJobAttributes: LPSECURITY_ATTRIBUTES; lpName: LPCTSTR): HANDLE; stdcall;
  4774. {$EXTERNALSYM CreateJobObject}
  4775. function OpenJobObjectA(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: LPCSTR): HANDLE; stdcall;
  4776. {$EXTERNALSYM OpenJobObjectA}
  4777. function OpenJobObjectW(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: LPCWSTR): HANDLE; stdcall;
  4778. {$EXTERNALSYM OpenJobObjectW}
  4779. function OpenJobObject(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: LPCTSTR): HANDLE; stdcall;
  4780. {$EXTERNALSYM OpenJobObject}
  4781. function AssignProcessToJobObject(hJob, hProcess: HANDLE): BOOL; stdcall;
  4782. {$EXTERNALSYM AssignProcessToJobObject}
  4783. function TerminateJobObject(hJob: HANDLE; uExitCode: UINT): BOOL; stdcall;
  4784. {$EXTERNALSYM TerminateJobObject}
  4785. function QueryInformationJobObject(hJob: HANDLE; JobObjectInformationClass: JOBOBJECTINFOCLASS;
  4786. lpJobObjectInformation: LPVOID; cbJobObjectInformationLength: DWORD;
  4787. lpReturnLength: LPDWORD): BOOL; stdcall;
  4788. {$EXTERNALSYM QueryInformationJobObject}
  4789. function SetInformationJobObject(hJob: HANDLE; JobObjectInformationClass: JOBOBJECTINFOCLASS;
  4790. lpJobObjectInformation: LPVOID; cbJobObjectInformationLength: DWORD): BOOL; stdcall;
  4791. {$EXTERNALSYM SetInformationJobObject}
  4792. function IsProcessInJob(ProcessHandle, JobHandle: HANDLE; var Result_: BOOL): BOOL; stdcall;
  4793. {$EXTERNALSYM IsProcessInJob}
  4794. function CreateJobSet(NumJob: ULONG; UserJobSet: PJOB_SET_ARRAY; Flags: ULONG): BOOL; stdcall;
  4795. {$EXTERNALSYM CreateJobSet}
  4796. function AddVectoredExceptionHandler(FirstHandler: ULONG;
  4797. VectoredHandler: PVECTORED_EXCEPTION_HANDLER): PVOID; stdcall;
  4798. {$EXTERNALSYM AddVectoredExceptionHandler}
  4799. function RemoveVectoredExceptionHandler(VectoredHandlerHandle: PVOID): ULONG; stdcall;
  4800. {$EXTERNALSYM RemoveVectoredExceptionHandler}
  4801. //
  4802. // New Volume Mount Point API.
  4803. //
  4804. function FindFirstVolumeA(lpszVolumeName: LPSTR; cchBufferLength: DWORD): HANDLE; stdcall;
  4805. {$EXTERNALSYM FindFirstVolumeA}
  4806. function FindFirstVolumeW(lpszVolumeName: LPWSTR; cchBufferLength: DWORD): HANDLE; stdcall;
  4807. {$EXTERNALSYM FindFirstVolumeW}
  4808. function FindFirstVolume(lpszVolumeName: LPTSTR; cchBufferLength: DWORD): HANDLE; stdcall;
  4809. {$EXTERNALSYM FindFirstVolume}
  4810. function FindNextVolumeA(hFindVolume: HANDLE; lpszVolumeName: LPSTR;
  4811. cchBufferLength: DWORD): BOOL; stdcall;
  4812. {$EXTERNALSYM FindNextVolumeA}
  4813. function FindNextVolumeW(hFindVolume: HANDLE; lpszVolumeName: LPWSTR;
  4814. cchBufferLength: DWORD): BOOL; stdcall;
  4815. {$EXTERNALSYM FindNextVolumeW}
  4816. function FindNextVolume(hFindVolume: HANDLE; lpszVolumeName: LPTSTR;
  4817. cchBufferLength: DWORD): BOOL; stdcall;
  4818. {$EXTERNALSYM FindNextVolume}
  4819. function FindVolumeClose(hFindVolume: HANDLE): BOOL; stdcall;
  4820. {$EXTERNALSYM FindVolumeClose}
  4821. function FindFirstVolumeMountPointA(lpszRootPathName: LPCSTR;
  4822. lpszVolumeMountPoint: LPSTR; cchBufferLength: DWORD): HANDLE; stdcall;
  4823. {$EXTERNALSYM FindFirstVolumeMountPointA}
  4824. function FindFirstVolumeMountPointW(lpszRootPathName: LPCWSTR;
  4825. lpszVolumeMountPoint: LPWSTR; cchBufferLength: DWORD): HANDLE; stdcall;
  4826. {$EXTERNALSYM FindFirstVolumeMountPointW}
  4827. function FindFirstVolumeMountPoint(lpszRootPathName: LPCTSTR;
  4828. lpszVolumeMountPoint: LPTSTR; cchBufferLength: DWORD): HANDLE; stdcall;
  4829. {$EXTERNALSYM FindFirstVolumeMountPoint}
  4830. function FindNextVolumeMountPointA(hFindVolumeMountPoint: HANDLE;
  4831. lpszVolumeMountPoint: LPSTR; cchBufferLength: DWORD): BOOL; stdcall;
  4832. {$EXTERNALSYM FindNextVolumeMountPointA}
  4833. function FindNextVolumeMountPointW(hFindVolumeMountPoint: HANDLE;
  4834. lpszVolumeMountPoint: LPWSTR; cchBufferLength: DWORD): BOOL; stdcall;
  4835. {$EXTERNALSYM FindNextVolumeMountPointW}
  4836. function FindNextVolumeMountPoint(hFindVolumeMountPoint: HANDLE;
  4837. lpszVolumeMountPoint: LPTSTR; cchBufferLength: DWORD): BOOL; stdcall;
  4838. {$EXTERNALSYM FindNextVolumeMountPoint}
  4839. function FindVolumeMountPointClose(hFindVolumeMountPoint: HANDLE): BOOL; stdcall;
  4840. {$EXTERNALSYM FindVolumeMountPointClose}
  4841. function SetVolumeMountPointA(lpszVolumeMountPoint, lpszVolumeName: LPCSTR): BOOL; stdcall;
  4842. {$EXTERNALSYM SetVolumeMountPointA}
  4843. function SetVolumeMountPointW(lpszVolumeMountPoint, lpszVolumeName: LPCWSTR): BOOL; stdcall;
  4844. {$EXTERNALSYM SetVolumeMountPointW}
  4845. function SetVolumeMountPoint(lpszVolumeMountPoint, lpszVolumeName: LPCTSTR): BOOL; stdcall;
  4846. {$EXTERNALSYM SetVolumeMountPoint}
  4847. function DeleteVolumeMountPointA(lpszVolumeMountPoint: LPCSTR): BOOL; stdcall;
  4848. {$EXTERNALSYM DeleteVolumeMountPointA}
  4849. function DeleteVolumeMountPointW(lpszVolumeMountPoint: LPCWSTR): BOOL; stdcall;
  4850. {$EXTERNALSYM DeleteVolumeMountPointW}
  4851. function DeleteVolumeMountPoint(lpszVolumeMountPoint: LPCTSTR): BOOL; stdcall;
  4852. {$EXTERNALSYM DeleteVolumeMountPoint}
  4853. function GetVolumeNameForVolumeMountPointA(lpszVolumeMountPoint: LPCSTR;
  4854. lpszVolumeName: LPSTR; cchBufferLength: DWORD): BOOL; stdcall;
  4855. {$EXTERNALSYM GetVolumeNameForVolumeMountPointA}
  4856. function GetVolumeNameForVolumeMountPointW(lpszVolumeMountPoint: LPCWSTR;
  4857. lpszVolumeName: LPWSTR; cchBufferLength: DWORD): BOOL; stdcall;
  4858. {$EXTERNALSYM GetVolumeNameForVolumeMountPointW}
  4859. function GetVolumeNameForVolumeMountPoint(lpszVolumeMountPoint: LPCTSTR;
  4860. lpszVolumeName: LPTSTR; cchBufferLength: DWORD): BOOL; stdcall;
  4861. {$EXTERNALSYM GetVolumeNameForVolumeMountPoint}
  4862. function GetVolumePathNameA(lpszFileName: LPCSTR; lpszVolumePathName: LPSTR;
  4863. cchBufferLength: DWORD): BOOL; stdcall;
  4864. {$EXTERNALSYM GetVolumePathNameA}
  4865. function GetVolumePathNameW(lpszFileName: LPCWSTR; lpszVolumePathName: LPWSTR;
  4866. cchBufferLength: DWORD): BOOL; stdcall;
  4867. {$EXTERNALSYM GetVolumePathNameW}
  4868. function GetVolumePathName(lpszFileName: LPCTSTR; lpszVolumePathName: LPTSTR;
  4869. cchBufferLength: DWORD): BOOL; stdcall;
  4870. {$EXTERNALSYM GetVolumePathName}
  4871. function GetVolumePathNamesForVolumeNameA(lpszVolumeName, lpszVolumePathNames: LPCSTR;
  4872. cchBufferLength: DWORD; var lpcchReturnLength: DWORD): BOOL; stdcall;
  4873. {$EXTERNALSYM GetVolumePathNamesForVolumeNameA}
  4874. function GetVolumePathNamesForVolumeNameW(lpszVolumeName, lpszVolumePathNames: LPCWSTR;
  4875. cchBufferLength: DWORD; var lpcchReturnLength: DWORD): BOOL; stdcall;
  4876. {$EXTERNALSYM GetVolumePathNamesForVolumeNameW}
  4877. function GetVolumePathNamesForVolumeName(lpszVolumeName, lpszVolumePathNames: LPCTSTR;
  4878. cchBufferLength: DWORD; var lpcchReturnLength: DWORD): BOOL; stdcall;
  4879. {$EXTERNALSYM GetVolumePathNamesForVolumeName}
  4880. const
  4881. ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID = $00000001;
  4882. {$EXTERNALSYM ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID}
  4883. ACTCTX_FLAG_LANGID_VALID = $00000002;
  4884. {$EXTERNALSYM ACTCTX_FLAG_LANGID_VALID}
  4885. ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID = $00000004;
  4886. {$EXTERNALSYM ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID}
  4887. ACTCTX_FLAG_RESOURCE_NAME_VALID = $00000008;
  4888. {$EXTERNALSYM ACTCTX_FLAG_RESOURCE_NAME_VALID}
  4889. ACTCTX_FLAG_SET_PROCESS_DEFAULT = $00000010;
  4890. {$EXTERNALSYM ACTCTX_FLAG_SET_PROCESS_DEFAULT}
  4891. ACTCTX_FLAG_APPLICATION_NAME_VALID = $00000020;
  4892. {$EXTERNALSYM ACTCTX_FLAG_APPLICATION_NAME_VALID}
  4893. ACTCTX_FLAG_SOURCE_IS_ASSEMBLYREF = $00000040;
  4894. {$EXTERNALSYM ACTCTX_FLAG_SOURCE_IS_ASSEMBLYREF}
  4895. ACTCTX_FLAG_HMODULE_VALID = $00000080;
  4896. {$EXTERNALSYM ACTCTX_FLAG_HMODULE_VALID}
  4897. type
  4898. tagACTCTXA = record
  4899. cbSize: ULONG;
  4900. dwFlags: DWORD;
  4901. lpSource: LPCSTR;
  4902. wProcessorArchitecture: USHORT;
  4903. wLangId: LANGID;
  4904. lpAssemblyDirectory: LPCSTR;
  4905. lpResourceName: LPCSTR;
  4906. lpApplicationName: LPCSTR;
  4907. hModule: HMODULE;
  4908. end;
  4909. {$EXTERNALSYM tagACTCTXA}
  4910. ACTCTXA = tagACTCTXA;
  4911. {$EXTERNALSYM ACTCTXA}
  4912. PACTCTXA = ^ACTCTXA;
  4913. {$EXTERNALSYM PACTCTXA}
  4914. TActCtxA = ACTCTXA;
  4915. tagACTCTXW = record
  4916. cbSize: ULONG;
  4917. dwFlags: DWORD;
  4918. lpSource: LPCWSTR;
  4919. wProcessorArchitecture: USHORT;
  4920. wLangId: LANGID;
  4921. lpAssemblyDirectory: LPCWSTR;
  4922. lpResourceName: LPCWSTR;
  4923. lpApplicationName: LPCWSTR;
  4924. hModule: HMODULE;
  4925. end;
  4926. {$EXTERNALSYM tagACTCTXW}
  4927. ACTCTXW = tagACTCTXW;
  4928. {$EXTERNALSYM ACTCTXW}
  4929. PACTCTXW = ^ACTCTXW;
  4930. {$EXTERNALSYM PACTCTXW}
  4931. TActCtxW = ACTCTXW;
  4932. {$IFDEF UNICODE}
  4933. ACTCTX = ACTCTXW;
  4934. {$EXTERNALSYM ACTCTX}
  4935. PACTCTX = PACTCTXW;
  4936. {$EXTERNALSYM PACTCTX}
  4937. TActCtx = TActCtxW;
  4938. {$ELSE}
  4939. ACTCTX = ACTCTXA;
  4940. {$EXTERNALSYM ACTCTX}
  4941. PACTCTX = PACTCTXA;
  4942. {$EXTERNALSYM PACTCTX}
  4943. TActCtx = TActCtxA;
  4944. {$ENDIF UNICODE}
  4945. function CreateActCtxA(var pActCtx: ACTCTXA): HANDLE; stdcall;
  4946. {$EXTERNALSYM CreateActCtxA}
  4947. function CreateActCtxW(var pActCtx: ACTCTXW): HANDLE; stdcall;
  4948. {$EXTERNALSYM CreateActCtxW}
  4949. function CreateActCtx(var pActCtx: ACTCTX): HANDLE; stdcall;
  4950. {$EXTERNALSYM CreateActCtx}
  4951. procedure AddRefActCtx(hActCtx: HANDLE); stdcall;
  4952. {$EXTERNALSYM AddRefActCtx}
  4953. procedure ReleaseActCtx(hActCtx: HANDLE); stdcall;
  4954. {$EXTERNALSYM ReleaseActCtx}
  4955. function ZombifyActCtx(hActCtx: HANDLE): BOOL; stdcall;
  4956. {$EXTERNALSYM ZombifyActCtx}
  4957. function ActivateActCtx(hActCtx: HANDLE; var lpCookie: ULONG_PTR): BOOL; stdcall;
  4958. {$EXTERNALSYM ActivateActCtx}
  4959. const
  4960. DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION = $00000001;
  4961. {$EXTERNALSYM DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION}
  4962. function DeactivateActCtx(dwFlags: DWORD; ulCookie: ULONG_PTR): BOOL; stdcall;
  4963. {$EXTERNALSYM DeactivateActCtx}
  4964. function GetCurrentActCtx(var lphActCtx: HANDLE): BOOL; stdcall;
  4965. {$EXTERNALSYM GetCurrentActCtx}
  4966. type
  4967. tagACTCTX_SECTION_KEYED_DATA_2600 = record
  4968. cbSize: ULONG;
  4969. ulDataFormatVersion: ULONG;
  4970. lpData: PVOID;
  4971. ulLength: ULONG;
  4972. lpSectionGlobalData: PVOID;
  4973. ulSectionGlobalDataLength: ULONG;
  4974. lpSectionBase: PVOID;
  4975. ulSectionTotalLength: ULONG;
  4976. hActCtx: HANDLE;
  4977. ulAssemblyRosterIndex: ULONG;
  4978. end;
  4979. {$EXTERNALSYM tagACTCTX_SECTION_KEYED_DATA_2600}
  4980. ACTCTX_SECTION_KEYED_DATA_2600 = tagACTCTX_SECTION_KEYED_DATA_2600;
  4981. {$EXTERNALSYM ACTCTX_SECTION_KEYED_DATA_2600}
  4982. PACTCTX_SECTION_KEYED_DATA_2600 = ^ACTCTX_SECTION_KEYED_DATA_2600;
  4983. {$EXTERNALSYM PACTCTX_SECTION_KEYED_DATA_2600}
  4984. PCACTCTX_SECTION_KEYED_DATA_2600 = ^ACTCTX_SECTION_KEYED_DATA_2600;
  4985. {$EXTERNALSYM PCACTCTX_SECTION_KEYED_DATA_2600}
  4986. TActCtxSectionKeyedData2600 = ACTCTX_SECTION_KEYED_DATA_2600;
  4987. PActCtxSectionKeyedData2600 = PACTCTX_SECTION_KEYED_DATA_2600;
  4988. tagACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA = record
  4989. lpInformation: PVOID;
  4990. lpSectionBase: PVOID;
  4991. ulSectionLength: ULONG;
  4992. lpSectionGlobalDataBase: PVOID;
  4993. ulSectionGlobalDataLength: ULONG;
  4994. end;
  4995. {$EXTERNALSYM tagACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA}
  4996. ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA = tagACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
  4997. {$EXTERNALSYM ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA}
  4998. PACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA = ^ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
  4999. {$EXTERNALSYM PACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA}
  5000. PCACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA = ^ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
  5001. {$EXTERNALSYM PCACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA}
  5002. TActCtxSectionKeyedDataAssemblyMetadata = ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
  5003. PActCtxSectionKeyedDataAssemblyMetadata = PACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
  5004. tagACTCTX_SECTION_KEYED_DATA = record
  5005. cbSize: ULONG;
  5006. ulDataFormatVersion: ULONG;
  5007. lpData: PVOID;
  5008. ulLength: ULONG;
  5009. lpSectionGlobalData: PVOID;
  5010. ulSectionGlobalDataLength: ULONG;
  5011. lpSectionBase: PVOID;
  5012. ulSectionTotalLength: ULONG;
  5013. hActCtx: HANDLE;
  5014. ulAssemblyRosterIndex: ULONG;
  5015. // 2600 stops here
  5016. ulFlags: ULONG;
  5017. AssemblyMetadata: ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
  5018. end;
  5019. {$EXTERNALSYM tagACTCTX_SECTION_KEYED_DATA}
  5020. ACTCTX_SECTION_KEYED_DATA = tagACTCTX_SECTION_KEYED_DATA;
  5021. {$EXTERNALSYM ACTCTX_SECTION_KEYED_DATA}
  5022. PACTCTX_SECTION_KEYED_DATA = ^ACTCTX_SECTION_KEYED_DATA;
  5023. {$EXTERNALSYM PACTCTX_SECTION_KEYED_DATA}
  5024. PCACTCTX_SECTION_KEYED_DATA = ^ACTCTX_SECTION_KEYED_DATA;
  5025. {$EXTERNALSYM PCACTCTX_SECTION_KEYED_DATA}
  5026. TActCtxSectionKeyedData = ACTCTX_SECTION_KEYED_DATA;
  5027. PActCtxSectionKeyedData = PACTCTX_SECTION_KEYED_DATA;
  5028. const
  5029. FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX = $00000001;
  5030. {$EXTERNALSYM FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX}
  5031. FIND_ACTCTX_SECTION_KEY_RETURN_FLAGS = $00000002;
  5032. {$EXTERNALSYM FIND_ACTCTX_SECTION_KEY_RETURN_FLAGS}
  5033. FIND_ACTCTX_SECTION_KEY_RETURN_ASSEMBLY_METADATA = $00000004;
  5034. {$EXTERNALSYM FIND_ACTCTX_SECTION_KEY_RETURN_ASSEMBLY_METADATA}
  5035. function FindActCtxSectionStringA(dwFlags: DWORD; const lpExtensionGuid: TGUID;
  5036. ulSectionId: ULONG; lpStringToFind: LPCSTR; ReturnedData: PACTCTX_SECTION_KEYED_DATA): BOOL; stdcall;
  5037. {$EXTERNALSYM FindActCtxSectionStringA}
  5038. function FindActCtxSectionStringW(dwFlags: DWORD; const lpExtensionGuid: TGUID;
  5039. ulSectionId: ULONG; lpStringToFind: LPCWSTR; ReturnedData: PACTCTX_SECTION_KEYED_DATA): BOOL; stdcall;
  5040. {$EXTERNALSYM FindActCtxSectionStringW}
  5041. function FindActCtxSectionString(dwFlags: DWORD; const lpExtensionGuid: TGUID;
  5042. ulSectionId: ULONG; lpStringToFind: LPCTSTR; ReturnedData: PACTCTX_SECTION_KEYED_DATA): BOOL; stdcall;
  5043. {$EXTERNALSYM FindActCtxSectionString}
  5044. function FindActCtxSectionGuid(dwFlags: DWORD; const lpExtensionGuid: TGUID;
  5045. ulSectionId: ULONG; const lpGuidToFind: TGUID; ReturnedData: PACTCTX_SECTION_KEYED_DATA): BOOL; stdcall;
  5046. {$EXTERNALSYM FindActCtxSectionGuid}
  5047. type
  5048. _ACTIVATION_CONTEXT_BASIC_INFORMATION = record
  5049. hActCtx: HANDLE;
  5050. dwFlags: DWORD;
  5051. end;
  5052. {$EXTERNALSYM _ACTIVATION_CONTEXT_BASIC_INFORMATION}
  5053. ACTIVATION_CONTEXT_BASIC_INFORMATION = _ACTIVATION_CONTEXT_BASIC_INFORMATION;
  5054. {$EXTERNALSYM ACTIVATION_CONTEXT_BASIC_INFORMATION}
  5055. PACTIVATION_CONTEXT_BASIC_INFORMATION = ^ACTIVATION_CONTEXT_BASIC_INFORMATION;
  5056. {$EXTERNALSYM PACTIVATION_CONTEXT_BASIC_INFORMATION}
  5057. TActivationContextBasicInformation = ACTIVATION_CONTEXT_BASIC_INFORMATION;
  5058. PActivationContextBasicInformation = PACTIVATION_CONTEXT_BASIC_INFORMATION;
  5059. PCACTIVATION_CONTEXT_BASIC_INFORMATION = ^_ACTIVATION_CONTEXT_BASIC_INFORMATION;
  5060. {$EXTERNALSYM PCACTIVATION_CONTEXT_BASIC_INFORMATION}
  5061. const
  5062. ACTIVATION_CONTEXT_BASIC_INFORMATION_DEFINED = 1;
  5063. {$EXTERNALSYM ACTIVATION_CONTEXT_BASIC_INFORMATION_DEFINED}
  5064. QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX = $00000004;
  5065. {$EXTERNALSYM QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX}
  5066. QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE = $00000008;
  5067. {$EXTERNALSYM QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE}
  5068. QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS = $00000010;
  5069. {$EXTERNALSYM QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS}
  5070. QUERY_ACTCTX_FLAG_NO_ADDREF = $80000000;
  5071. {$EXTERNALSYM QUERY_ACTCTX_FLAG_NO_ADDREF}
  5072. //
  5073. // switch (ulInfoClass)
  5074. //
  5075. // case ActivationContextBasicInformation:
  5076. // pvSubInstance == NULL
  5077. // pvBuffer is of type PACTIVATION_CONTEXT_BASIC_INFORMATION
  5078. //
  5079. // case ActivationContextDetailedInformation:
  5080. // pvSubInstance == NULL
  5081. // pvBuffer is of type PACTIVATION_CONTEXT_DETAILED_INFORMATION
  5082. //
  5083. // case AssemblyDetailedInformationInActivationContext:
  5084. // pvSubInstance is of type PULONG
  5085. // *pvSubInstance < ACTIVATION_CONTEXT_DETAILED_INFORMATION::ulAssemblyCount
  5086. // pvBuffer is of type PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION
  5087. //
  5088. // case FileInformationInAssemblyOfAssemblyInActivationContext:
  5089. // pvSubInstance is of type PACTIVATION_CONTEXT_QUERY_INDEX
  5090. // pvSubInstance->ulAssemblyIndex < ACTIVATION_CONTEXT_DETAILED_INFORMATION::ulAssemblyCount
  5091. // pvSubInstance->ulFileIndexInAssembly < ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION::ulFileCount
  5092. // pvBuffer is of type PASSEMBLY_FILE_DETAILED_INFORMATION
  5093. //
  5094. // String are placed after the structs.
  5095. //
  5096. function QueryActCtxW(dwFlags: DWORD; hActCtx: HANDLE; pvSubInstance: PVOID;
  5097. ulInfoClass: ULONG; pvBuffer: PVOID; cbBuffer: SIZE_T;
  5098. pcbWrittenOrRequired: PSIZE_T): BOOL; stdcall;
  5099. {$EXTERNALSYM QueryActCtxW}
  5100. type
  5101. PQUERYACTCTXW_FUNC = function(dwFlags: DWORD; hActCtx: HANDLE;
  5102. pvSubInstance: PVOID; ulInfoClass: ULONG; pvBuffer: PVOID; cbBuffer: SIZE_T;
  5103. pcbWrittenOrRequired: PSIZE_T): BOOL; stdcall;
  5104. {$EXTERNALSYM PQUERYACTCTXW_FUNC}
  5105. function ProcessIdToSessionId(dwProcessId: DWORD; var pSessionId: DWORD): BOOL; stdcall;
  5106. {$EXTERNALSYM ProcessIdToSessionId}
  5107. function WTSGetActiveConsoleSessionId: DWORD; stdcall;
  5108. {$EXTERNALSYM WTSGetActiveConsoleSessionId}
  5109. function IsWow64Process(hProcess: HANDLE; var Wow64Process: BOOL): BOOL; stdcall;
  5110. {$EXTERNALSYM IsWow64Process}
  5111. function GetLogicalProcessorInformation(Buffer: PSYSTEM_LOGICAL_PROCESSOR_INFORMATION; ReturnedLength: PDWORD): BOOL; stdcall;
  5112. {$EXTERNALSYM GetLogicalProcessorInformation}
  5113. //
  5114. // NUMA Information routines.
  5115. //
  5116. function GetNumaHighestNodeNumber(var HighestNodeNumber: ULONG): BOOL; stdcall;
  5117. {$EXTERNALSYM GetNumaHighestNodeNumber}
  5118. function GetNumaProcessorNode(Processor: UCHAR; var NodeNumber: UCHAR): BOOL; stdcall;
  5119. {$EXTERNALSYM GetNumaProcessorNode}
  5120. function GetNumaNodeProcessorMask(Node: UCHAR; ProcessorMask: ULONGLONG): BOOL; stdcall;
  5121. {$EXTERNALSYM GetNumaNodeProcessorMask}
  5122. function GetNumaAvailableMemoryNode(Node: UCHAR; var AvailableBytes: ULONGLONG): BOOL; stdcall;
  5123. {$EXTERNALSYM GetNumaAvailableMemoryNode}
  5124. implementation
  5125. const
  5126. kernel32 = 'kernel32.dll';
  5127. advapi32 = 'advapi32.dll';
  5128. {$IFDEF UNICODE}
  5129. AWSuffix = 'W';
  5130. {$ELSE}
  5131. AWSuffix = 'A';
  5132. {$ENDIF UNICODE}
  5133. procedure MoveMemory(Destination, Source: PVOID; Length: SIZE_T);
  5134. begin
  5135. Move(Source^, Destination^, Length);
  5136. end;
  5137. procedure CopyMemory(Destination, Source: PVOID; Length: SIZE_T);
  5138. begin
  5139. Move(Source^, Destination^, Length);
  5140. end;
  5141. procedure FillMemory(Destination: PVOID; Length: SIZE_T; Fill: BYTE);
  5142. begin
  5143. FillChar(Destination^, Length, Fill);
  5144. end;
  5145. procedure ZeroMemory(Destination: PVOID; Length: SIZE_T);
  5146. begin
  5147. FillChar(Destination^, Length, 0);
  5148. end;
  5149. function FreeModule(hLibModule: HMODULE): BOOL;
  5150. begin
  5151. Result := FreeLibrary(hLibModule);
  5152. end;
  5153. function MakeProcInstance(lpProc: FARPROC; hInstance: HINSTANCE): FARPROC;
  5154. begin
  5155. Result := lpProc;
  5156. end;
  5157. procedure FreeProcInstance(lpProc: FARPROC);
  5158. begin
  5159. { nothing }
  5160. end;
  5161. function GlobalLRUNewest(h: HANDLE): HANDLE;
  5162. begin
  5163. Result := H;
  5164. end;
  5165. function GlobalLRUOldest(h: HANDLE): HANDLE;
  5166. begin
  5167. Result := H;
  5168. end;
  5169. function GlobalDiscard(h: HANDLE): HANDLE;
  5170. begin
  5171. Result := GlobalReAlloc(h, 0, GMEM_MOVEABLE);
  5172. end;
  5173. function LocalDiscard(h: HLOCAL): HLOCAL;
  5174. begin
  5175. Result := LocalReAlloc(h, 0, LMEM_MOVEABLE);
  5176. end;
  5177. function GetFreeSpace(w: WORD): DWORD;
  5178. begin
  5179. Result := $100000;
  5180. end;
  5181. function InterlockedExchangePointer(var Target: PVOID; Value: PVOID): PVOID;
  5182. begin
  5183. {$ifdef cpu64}
  5184. Result := PVOID(InterlockedExchange64(LONGLONG(Target), LONGLONG(Value)));
  5185. {$else}
  5186. Result := PVOID(InterlockedExchange(LONG(Target), LONG(Value)));
  5187. {$endif cpu64}
  5188. end;
  5189. function InterlockedCompareExchangePointer(var Destination: PVOID; Exchange, Comperand: PVOID): PVOID;
  5190. begin
  5191. {$ifdef cpu64}
  5192. Result := PVOID(InterlockedCompareExchange64(LONGLONG(Destination), LONGLONG(Exchange), LONGLONG(Comperand)));
  5193. {$else cpu64}
  5194. Result := PVOID(InterlockedCompareExchange(LONG(Destination), LONG(Exchange), LONG(Comperand)));
  5195. {$endif cpu64}
  5196. end;
  5197. function UnlockResource(hResData: HANDLE): BOOL;
  5198. begin
  5199. Result := False;
  5200. end;
  5201. function HasOverlappedIoCompleted(const lpOverlapped: OVERLAPPED): BOOL;
  5202. begin
  5203. Result := NTSTATUS(lpOverlapped.Internal) <> STATUS_PENDING;
  5204. end;
  5205. // 64 bit interlocked functions from Will
  5206. function InterlockedAnd64(var Destination: LONGLONG; Value: LONGLONG): LONGLONG;
  5207. begin
  5208. repeat
  5209. Result := Destination;
  5210. until (InterlockedCompareExchange64(Destination, Result and Value, Result) = Result);
  5211. end;
  5212. function InterlockedOr64(var Destination: LONGLONG; Value: LONGLONG): LONGLONG;
  5213. begin
  5214. repeat
  5215. Result := Destination;
  5216. until (InterlockedCompareExchange64(Destination, Result or Value, Result) = Result);
  5217. end;
  5218. function InterlockedXor64(var Destination: LONGLONG; Value: LONGLONG): LONGLONG;
  5219. begin
  5220. repeat
  5221. Result := Destination;
  5222. until (InterlockedCompareExchange64(Destination, Result xor Value, Result) = Result);
  5223. end;
  5224. function InterlockedIncrement64(var Addend: LONGLONG): LONGLONG;
  5225. begin
  5226. repeat
  5227. Result := Addend;
  5228. until (InterlockedCompareExchange64(Addend, Result + 1, Result) = Result);
  5229. Inc(Result);
  5230. end;
  5231. function InterlockedDecrement64(var Addend: LONGLONG): LONGLONG;
  5232. begin
  5233. repeat
  5234. Result := Addend;
  5235. until (InterlockedCompareExchange64(Addend, Result - 1, Result) = Result);
  5236. Dec(Result);
  5237. end;
  5238. function InterlockedExchange64(var Target: LONGLONG; Value: LONGLONG): LONGLONG;
  5239. begin
  5240. repeat
  5241. Result := Target;
  5242. until (InterlockedCompareExchange64(Target, Value, Result) = Result);
  5243. end;
  5244. function InterlockedExchangeAdd64(var Addend: LONGLONG; Value: LONGLONG): LONGLONG;
  5245. begin
  5246. repeat
  5247. Result := Addend;
  5248. until (InterlockedCompareExchange64(Addend, Result + Value, Result) = Result);
  5249. end;
  5250. { MVB:
  5251. The implementation of CreateMutex only interpretes bInitialOwner as True if
  5252. it's ordinal value is 1, all other values are interpreted as False. Delphi
  5253. compiles Longbool(True) as $FFFFFFFF which is consequently interpreted as
  5254. False. Changing the bInitalOwner parameter type to Boolean fixes the problem
  5255. (Boolean(True) = 1) but that would be implementation specific and might break
  5256. in the future, though unlikely. Hence the CreateMutex function here which
  5257. explicitly passes LongBool(1) instead of LongBool(True). }
  5258. type
  5259. TCreateMutexA = function(lpMutexAttributes: LPSECURITY_ATTRIBUTES; bInitialOwner: LongBool; lpName: LPCSTR): HANDLE; stdcall;
  5260. TCreateMutexW = function(lpMutexAttributes: LPSECURITY_ATTRIBUTES; bInitialOwner: LongBool; lpName: LPCWSTR): HANDLE; stdcall;
  5261. var
  5262. _CreateMutexA: Pointer;
  5263. _CreateMutexW: Pointer;
  5264. function CreateMutexA(lpMutexAttributes: LPSECURITY_ATTRIBUTES; bInitialOwner: BOOL; lpName: LPCSTR): HANDLE;
  5265. begin
  5266. GetProcedureAddress(_CreateMutexA, kernel32, 'CreateMutexA');
  5267. if bInitialOwner then
  5268. Result := TCreateMutexA(_CreateMutexA)(lpMutexAttributes, LongBool(1), lpName)
  5269. else
  5270. Result := TCreateMutexA(_CreateMutexA)(lpMutexAttributes, LongBool(0), lpName)
  5271. end;
  5272. function CreateMutexW(lpMutexAttributes: LPSECURITY_ATTRIBUTES; bInitialOwner: BOOL; lpName: LPCWSTR): HANDLE;
  5273. begin
  5274. GetProcedureAddress(_CreateMutexW, kernel32, 'CreateMutexW');
  5275. if bInitialOwner then
  5276. Result := TCreateMutexW(_CreateMutexW)(lpMutexAttributes, LongBool(1), lpName)
  5277. else
  5278. Result := TCreateMutexW(_CreateMutexW)(lpMutexAttributes, LongBool(0), lpName)
  5279. end;
  5280. {$IFDEF UNICODE}
  5281. function CreateMutex(lpMutexAttributes: LPSECURITY_ATTRIBUTES; bInitialOwner: BOOL; lpName: LPCWSTR): HANDLE;
  5282. begin
  5283. GetProcedureAddress(_CreateMutexW, kernel32, 'CreateMutexW');
  5284. if bInitialOwner then
  5285. Result := TCreateMutexW(_CreateMutexW)(lpMutexAttributes, LongBool(1), lpName)
  5286. else
  5287. Result := TCreateMutexW(_CreateMutexW)(lpMutexAttributes, LongBool(0), lpName)
  5288. end;
  5289. {$ELSE}
  5290. function CreateMutex(lpMutexAttributes: LPSECURITY_ATTRIBUTES; bInitialOwner: BOOL; lpName: LPCSTR): HANDLE;
  5291. begin
  5292. GetProcedureAddress(_CreateMutexA, kernel32, 'CreateMutexA');
  5293. if bInitialOwner then
  5294. Result := TCreateMutexA(_CreateMutexA)(lpMutexAttributes, LongBool(1), lpName)
  5295. else
  5296. Result := TCreateMutexA(_CreateMutexA)(lpMutexAttributes, LongBool(0), lpName)
  5297. end;
  5298. {$ENDIF UNICODE}
  5299. {$IFDEF DYNAMIC_LINK}
  5300. var
  5301. _InterlockedCompareExchange64: Pointer;
  5302. function InterlockedCompareExchange64;
  5303. begin
  5304. GetProcedureAddress(_InterlockedCompareExchange64, kernel32, 'InterlockedCompareExchange64');
  5305. asm
  5306. MOV ESP, EBP
  5307. POP EBP
  5308. JMP [_InterlockedCompareExchange64]
  5309. end;
  5310. end;
  5311. var
  5312. _InterlockedIncrement: Pointer;
  5313. function InterlockedIncrement;
  5314. begin
  5315. GetProcedureAddress(_InterlockedIncrement, kernel32, 'InterlockedIncrement');
  5316. asm
  5317. MOV ESP, EBP
  5318. POP EBP
  5319. JMP [_InterlockedIncrement]
  5320. end;
  5321. end;
  5322. var
  5323. _InterlockedDecrement: Pointer;
  5324. function InterlockedDecrement;
  5325. begin
  5326. GetProcedureAddress(_InterlockedDecrement, kernel32, 'InterlockedDecrement');
  5327. asm
  5328. MOV ESP, EBP
  5329. POP EBP
  5330. JMP [_InterlockedDecrement]
  5331. end;
  5332. end;
  5333. var
  5334. _InterlockedExchange: Pointer;
  5335. function InterlockedExchange;
  5336. begin
  5337. GetProcedureAddress(_InterlockedExchange, kernel32, 'InterlockedExchange');
  5338. asm
  5339. MOV ESP, EBP
  5340. POP EBP
  5341. JMP [_InterlockedExchange]
  5342. end;
  5343. end;
  5344. var
  5345. _InterlockedExchangeAdd: Pointer;
  5346. function InterlockedExchangeAdd;
  5347. begin
  5348. GetProcedureAddress(_InterlockedExchangeAdd, kernel32, 'InterlockedExchangeAdd');
  5349. asm
  5350. MOV ESP, EBP
  5351. POP EBP
  5352. JMP [_InterlockedExchangeAdd]
  5353. end;
  5354. end;
  5355. var
  5356. _InterlockedCompareExchange: Pointer;
  5357. function InterlockedCompareExchange;
  5358. begin
  5359. GetProcedureAddress(_InterlockedCompareExchange, kernel32, 'InterlockedCompareExchange');
  5360. asm
  5361. MOV ESP, EBP
  5362. POP EBP
  5363. JMP [_InterlockedCompareExchange]
  5364. end;
  5365. end;
  5366. var
  5367. _InitializeSListHead: Pointer;
  5368. procedure InitializeSListHead;
  5369. begin
  5370. GetProcedureAddress(_InitializeSListHead, kernel32, 'InitializeSListHead');
  5371. asm
  5372. MOV ESP, EBP
  5373. POP EBP
  5374. JMP [_InitializeSListHead]
  5375. end;
  5376. end;
  5377. var
  5378. _InterlockedPopEntrySList: Pointer;
  5379. function InterlockedPopEntrySList;
  5380. begin
  5381. GetProcedureAddress(_InterlockedPopEntrySList, kernel32, 'InterlockedPopEntrySList');
  5382. asm
  5383. MOV ESP, EBP
  5384. POP EBP
  5385. JMP [_InterlockedPopEntrySList]
  5386. end;
  5387. end;
  5388. var
  5389. _InterlockedPushEntrySList: Pointer;
  5390. function InterlockedPushEntrySList;
  5391. begin
  5392. GetProcedureAddress(_InterlockedPushEntrySList, kernel32, 'InterlockedPushEntrySList');
  5393. asm
  5394. MOV ESP, EBP
  5395. POP EBP
  5396. JMP [_InterlockedPushEntrySList]
  5397. end;
  5398. end;
  5399. var
  5400. _InterlockedFlushSList: Pointer;
  5401. function InterlockedFlushSList;
  5402. begin
  5403. GetProcedureAddress(_InterlockedFlushSList, kernel32, 'InterlockedFlushSList');
  5404. asm
  5405. MOV ESP, EBP
  5406. POP EBP
  5407. JMP [_InterlockedFlushSList]
  5408. end;
  5409. end;
  5410. var
  5411. _QueryDepthSList: Pointer;
  5412. function QueryDepthSList;
  5413. begin
  5414. GetProcedureAddress(_QueryDepthSList, kernel32, 'QueryDepthSList');
  5415. asm
  5416. MOV ESP, EBP
  5417. POP EBP
  5418. JMP [_QueryDepthSList]
  5419. end;
  5420. end;
  5421. var
  5422. _FreeResource: Pointer;
  5423. function FreeResource;
  5424. begin
  5425. GetProcedureAddress(_FreeResource, kernel32, 'FreeResource');
  5426. asm
  5427. MOV ESP, EBP
  5428. POP EBP
  5429. JMP [_FreeResource]
  5430. end;
  5431. end;
  5432. var
  5433. _LockResource: Pointer;
  5434. function LockResource;
  5435. begin
  5436. GetProcedureAddress(_LockResource, kernel32, 'LockResource');
  5437. asm
  5438. MOV ESP, EBP
  5439. POP EBP
  5440. JMP [_LockResource]
  5441. end;
  5442. end;
  5443. var
  5444. _FreeLibrary: Pointer;
  5445. function FreeLibrary;
  5446. begin
  5447. GetProcedureAddress(_FreeLibrary, kernel32, 'FreeLibrary');
  5448. asm
  5449. MOV ESP, EBP
  5450. POP EBP
  5451. JMP [_FreeLibrary]
  5452. end;
  5453. end;
  5454. var
  5455. _FreeLibraryAndExitThread: Pointer;
  5456. procedure FreeLibraryAndExitThread;
  5457. begin
  5458. GetProcedureAddress(_FreeLibraryAndExitThread, kernel32, 'FreeLibraryAndExitThread');
  5459. asm
  5460. MOV ESP, EBP
  5461. POP EBP
  5462. JMP [_FreeLibraryAndExitThread]
  5463. end;
  5464. end;
  5465. var
  5466. _DisableThreadLibraryCalls: Pointer;
  5467. function DisableThreadLibraryCalls;
  5468. begin
  5469. GetProcedureAddress(_DisableThreadLibraryCalls, kernel32, 'DisableThreadLibraryCalls');
  5470. asm
  5471. MOV ESP, EBP
  5472. POP EBP
  5473. JMP [_DisableThreadLibraryCalls]
  5474. end;
  5475. end;
  5476. // MVB TODO Dynamic linking for GetProcAddress doesn't make much sense, does it? Same for LoadLibrary.
  5477. var
  5478. _GetProcAddress: Pointer;
  5479. function GetProcAddress;
  5480. begin
  5481. GetProcedureAddress(_GetProcAddress, kernel32, 'GetProcAddress');
  5482. asm
  5483. MOV ESP, EBP
  5484. POP EBP
  5485. JMP [_GetProcAddress]
  5486. end;
  5487. end;
  5488. var
  5489. _GetVersion: Pointer;
  5490. function GetVersion;
  5491. begin
  5492. GetProcedureAddress(_GetVersion, kernel32, 'GetVersion');
  5493. asm
  5494. MOV ESP, EBP
  5495. POP EBP
  5496. JMP [_GetVersion]
  5497. end;
  5498. end;
  5499. var
  5500. _GlobalAlloc: Pointer;
  5501. function GlobalAlloc;
  5502. begin
  5503. GetProcedureAddress(_GlobalAlloc, kernel32, 'GlobalAlloc');
  5504. asm
  5505. MOV ESP, EBP
  5506. POP EBP
  5507. JMP [_GlobalAlloc]
  5508. end;
  5509. end;
  5510. var
  5511. _GlobalReAlloc: Pointer;
  5512. function GlobalReAlloc;
  5513. begin
  5514. GetProcedureAddress(_GlobalReAlloc, kernel32, 'GlobalReAlloc');
  5515. asm
  5516. MOV ESP, EBP
  5517. POP EBP
  5518. JMP [_GlobalReAlloc]
  5519. end;
  5520. end;
  5521. var
  5522. _GlobalSize: Pointer;
  5523. function GlobalSize;
  5524. begin
  5525. GetProcedureAddress(_GlobalSize, kernel32, 'GlobalSize');
  5526. asm
  5527. MOV ESP, EBP
  5528. POP EBP
  5529. JMP [_GlobalSize]
  5530. end;
  5531. end;
  5532. var
  5533. _GlobalFlags: Pointer;
  5534. function GlobalFlags;
  5535. begin
  5536. GetProcedureAddress(_GlobalFlags, kernel32, 'GlobalFlags');
  5537. asm
  5538. MOV ESP, EBP
  5539. POP EBP
  5540. JMP [_GlobalFlags]
  5541. end;
  5542. end;
  5543. var
  5544. _GlobalLock: Pointer;
  5545. function GlobalLock;
  5546. begin
  5547. GetProcedureAddress(_GlobalLock, kernel32, 'GlobalLock');
  5548. asm
  5549. MOV ESP, EBP
  5550. POP EBP
  5551. JMP [_GlobalLock]
  5552. end;
  5553. end;
  5554. var
  5555. _GlobalHandle: Pointer;
  5556. function GlobalHandle;
  5557. begin
  5558. GetProcedureAddress(_GlobalHandle, kernel32, 'GlobalHandle');
  5559. asm
  5560. MOV ESP, EBP
  5561. POP EBP
  5562. JMP [_GlobalHandle]
  5563. end;
  5564. end;
  5565. var
  5566. _GlobalUnlock: Pointer;
  5567. function GlobalUnlock;
  5568. begin
  5569. GetProcedureAddress(_GlobalUnlock, kernel32, 'GlobalUnlock');
  5570. asm
  5571. MOV ESP, EBP
  5572. POP EBP
  5573. JMP [_GlobalUnlock]
  5574. end;
  5575. end;
  5576. var
  5577. _GlobalFree: Pointer;
  5578. function GlobalFree;
  5579. begin
  5580. GetProcedureAddress(_GlobalFree, kernel32, 'GlobalFree');
  5581. asm
  5582. MOV ESP, EBP
  5583. POP EBP
  5584. JMP [_GlobalFree]
  5585. end;
  5586. end;
  5587. var
  5588. _GlobalCompact: Pointer;
  5589. function GlobalCompact;
  5590. begin
  5591. GetProcedureAddress(_GlobalCompact, kernel32, 'GlobalCompact');
  5592. asm
  5593. MOV ESP, EBP
  5594. POP EBP
  5595. JMP [_GlobalCompact]
  5596. end;
  5597. end;
  5598. var
  5599. _GlobalFix: Pointer;
  5600. procedure GlobalFix;
  5601. begin
  5602. GetProcedureAddress(_GlobalFix, kernel32, 'GlobalFix');
  5603. asm
  5604. MOV ESP, EBP
  5605. POP EBP
  5606. JMP [_GlobalFix]
  5607. end;
  5608. end;
  5609. var
  5610. _GlobalUnfix: Pointer;
  5611. procedure GlobalUnfix;
  5612. begin
  5613. GetProcedureAddress(_GlobalUnfix, kernel32, 'GlobalUnfix');
  5614. asm
  5615. MOV ESP, EBP
  5616. POP EBP
  5617. JMP [_GlobalUnfix]
  5618. end;
  5619. end;
  5620. var
  5621. _GlobalWire: Pointer;
  5622. function GlobalWire;
  5623. begin
  5624. GetProcedureAddress(_GlobalWire, kernel32, 'GlobalWire');
  5625. asm
  5626. MOV ESP, EBP
  5627. POP EBP
  5628. JMP [_GlobalWire]
  5629. end;
  5630. end;
  5631. var
  5632. _GlobalUnWire: Pointer;
  5633. function GlobalUnWire;
  5634. begin
  5635. GetProcedureAddress(_GlobalUnWire, kernel32, 'GlobalUnWire');
  5636. asm
  5637. MOV ESP, EBP
  5638. POP EBP
  5639. JMP [_GlobalUnWire]
  5640. end;
  5641. end;
  5642. var
  5643. _GlobalMemoryStatus: Pointer;
  5644. procedure GlobalMemoryStatus;
  5645. begin
  5646. GetProcedureAddress(_GlobalMemoryStatus, kernel32, 'GlobalMemoryStatus');
  5647. asm
  5648. MOV ESP, EBP
  5649. POP EBP
  5650. JMP [_GlobalMemoryStatus]
  5651. end;
  5652. end;
  5653. var
  5654. _GlobalMemoryStatusEx: Pointer;
  5655. function GlobalMemoryStatusEx;
  5656. begin
  5657. GetProcedureAddress(_GlobalMemoryStatusEx, kernel32, 'GlobalMemoryStatusEx');
  5658. asm
  5659. MOV ESP, EBP
  5660. POP EBP
  5661. JMP [_GlobalMemoryStatusEx]
  5662. end;
  5663. end;
  5664. var
  5665. _LocalAlloc: Pointer;
  5666. function LocalAlloc;
  5667. begin
  5668. GetProcedureAddress(_LocalAlloc, kernel32, 'LocalAlloc');
  5669. asm
  5670. MOV ESP, EBP
  5671. POP EBP
  5672. JMP [_LocalAlloc]
  5673. end;
  5674. end;
  5675. var
  5676. _LocalReAlloc: Pointer;
  5677. function LocalReAlloc;
  5678. begin
  5679. GetProcedureAddress(_LocalReAlloc, kernel32, 'LocalReAlloc');
  5680. asm
  5681. MOV ESP, EBP
  5682. POP EBP
  5683. JMP [_LocalReAlloc]
  5684. end;
  5685. end;
  5686. var
  5687. _LocalLock: Pointer;
  5688. function LocalLock;
  5689. begin
  5690. GetProcedureAddress(_LocalLock, kernel32, 'LocalLock');
  5691. asm
  5692. MOV ESP, EBP
  5693. POP EBP
  5694. JMP [_LocalLock]
  5695. end;
  5696. end;
  5697. var
  5698. _LocalHandle: Pointer;
  5699. function LocalHandle;
  5700. begin
  5701. GetProcedureAddress(_LocalHandle, kernel32, 'LocalHandle');
  5702. asm
  5703. MOV ESP, EBP
  5704. POP EBP
  5705. JMP [_LocalHandle]
  5706. end;
  5707. end;
  5708. var
  5709. _LocalUnlock: Pointer;
  5710. function LocalUnlock;
  5711. begin
  5712. GetProcedureAddress(_LocalUnlock, kernel32, 'LocalUnlock');
  5713. asm
  5714. MOV ESP, EBP
  5715. POP EBP
  5716. JMP [_LocalUnlock]
  5717. end;
  5718. end;
  5719. var
  5720. _LocalSize: Pointer;
  5721. function LocalSize;
  5722. begin
  5723. GetProcedureAddress(_LocalSize, kernel32, 'LocalSize');
  5724. asm
  5725. MOV ESP, EBP
  5726. POP EBP
  5727. JMP [_LocalSize]
  5728. end;
  5729. end;
  5730. var
  5731. _LocalFlags: Pointer;
  5732. function LocalFlags;
  5733. begin
  5734. GetProcedureAddress(_LocalFlags, kernel32, 'LocalFlags');
  5735. asm
  5736. MOV ESP, EBP
  5737. POP EBP
  5738. JMP [_LocalFlags]
  5739. end;
  5740. end;
  5741. var
  5742. _LocalFree: Pointer;
  5743. function LocalFree;
  5744. begin
  5745. GetProcedureAddress(_LocalFree, kernel32, 'LocalFree');
  5746. asm
  5747. MOV ESP, EBP
  5748. POP EBP
  5749. JMP [_LocalFree]
  5750. end;
  5751. end;
  5752. var
  5753. _LocalShrink: Pointer;
  5754. function LocalShrink;
  5755. begin
  5756. GetProcedureAddress(_LocalShrink, kernel32, 'LocalShrink');
  5757. asm
  5758. MOV ESP, EBP
  5759. POP EBP
  5760. JMP [_LocalShrink]
  5761. end;
  5762. end;
  5763. var
  5764. _LocalCompact: Pointer;
  5765. function LocalCompact;
  5766. begin
  5767. GetProcedureAddress(_LocalCompact, kernel32, 'LocalCompact');
  5768. asm
  5769. MOV ESP, EBP
  5770. POP EBP
  5771. JMP [_LocalCompact]
  5772. end;
  5773. end;
  5774. var
  5775. _FlushInstructionCache: Pointer;
  5776. function FlushInstructionCache;
  5777. begin
  5778. GetProcedureAddress(_FlushInstructionCache, kernel32, 'FlushInstructionCache');
  5779. asm
  5780. MOV ESP, EBP
  5781. POP EBP
  5782. JMP [_FlushInstructionCache]
  5783. end;
  5784. end;
  5785. var
  5786. _VirtualAlloc: Pointer;
  5787. function VirtualAlloc;
  5788. begin
  5789. GetProcedureAddress(_VirtualAlloc, kernel32, 'VirtualAlloc');
  5790. asm
  5791. MOV ESP, EBP
  5792. POP EBP
  5793. JMP [_VirtualAlloc]
  5794. end;
  5795. end;
  5796. var
  5797. _VirtualFree: Pointer;
  5798. function VirtualFree;
  5799. begin
  5800. GetProcedureAddress(_VirtualFree, kernel32, 'VirtualFree');
  5801. asm
  5802. MOV ESP, EBP
  5803. POP EBP
  5804. JMP [_VirtualFree]
  5805. end;
  5806. end;
  5807. var
  5808. _VirtualProtect: Pointer;
  5809. function VirtualProtect;
  5810. begin
  5811. GetProcedureAddress(_VirtualProtect, kernel32, 'VirtualProtect');
  5812. asm
  5813. MOV ESP, EBP
  5814. POP EBP
  5815. JMP [_VirtualProtect]
  5816. end;
  5817. end;
  5818. var
  5819. _VirtualQuery: Pointer;
  5820. function VirtualQuery;
  5821. begin
  5822. GetProcedureAddress(_VirtualQuery, kernel32, 'VirtualQuery');
  5823. asm
  5824. MOV ESP, EBP
  5825. POP EBP
  5826. JMP [_VirtualQuery]
  5827. end;
  5828. end;
  5829. var
  5830. _VirtualAllocEx: Pointer;
  5831. function VirtualAllocEx;
  5832. begin
  5833. GetProcedureAddress(_VirtualAllocEx, kernel32, 'VirtualAllocEx');
  5834. asm
  5835. MOV ESP, EBP
  5836. POP EBP
  5837. JMP [_VirtualAllocEx]
  5838. end;
  5839. end;
  5840. var
  5841. _GetWriteWatch: Pointer;
  5842. function GetWriteWatch;
  5843. begin
  5844. GetProcedureAddress(_GetWriteWatch, kernel32, 'GetWriteWatch');
  5845. asm
  5846. MOV ESP, EBP
  5847. POP EBP
  5848. JMP [_GetWriteWatch]
  5849. end;
  5850. end;
  5851. var
  5852. _ResetWriteWatch: Pointer;
  5853. function ResetWriteWatch;
  5854. begin
  5855. GetProcedureAddress(_ResetWriteWatch, kernel32, 'ResetWriteWatch');
  5856. asm
  5857. MOV ESP, EBP
  5858. POP EBP
  5859. JMP [_ResetWriteWatch]
  5860. end;
  5861. end;
  5862. var
  5863. _GetLargePageMinimum: Pointer;
  5864. function GetLargePageMinimum;
  5865. begin
  5866. GetProcedureAddress(_GetLargePageMinimum, kernel32, 'GetLargePageMinimum');
  5867. asm
  5868. MOV ESP, EBP
  5869. POP EBP
  5870. JMP [_GetLargePageMinimum]
  5871. end;
  5872. end;
  5873. var
  5874. _VirtualFreeEx: Pointer;
  5875. function VirtualFreeEx;
  5876. begin
  5877. GetProcedureAddress(_VirtualFreeEx, kernel32, 'VirtualFreeEx');
  5878. asm
  5879. MOV ESP, EBP
  5880. POP EBP
  5881. JMP [_VirtualFreeEx]
  5882. end;
  5883. end;
  5884. var
  5885. _VirtualProtectEx: Pointer;
  5886. function VirtualProtectEx;
  5887. begin
  5888. GetProcedureAddress(_VirtualProtectEx, kernel32, 'VirtualProtectEx');
  5889. asm
  5890. MOV ESP, EBP
  5891. POP EBP
  5892. JMP [_VirtualProtectEx]
  5893. end;
  5894. end;
  5895. var
  5896. _VirtualQueryEx: Pointer;
  5897. function VirtualQueryEx;
  5898. begin
  5899. GetProcedureAddress(_VirtualQueryEx, kernel32, 'VirtualQueryEx');
  5900. asm
  5901. MOV ESP, EBP
  5902. POP EBP
  5903. JMP [_VirtualQueryEx]
  5904. end;
  5905. end;
  5906. var
  5907. _HeapCreate: Pointer;
  5908. function HeapCreate;
  5909. begin
  5910. GetProcedureAddress(_HeapCreate, kernel32, 'HeapCreate');
  5911. asm
  5912. MOV ESP, EBP
  5913. POP EBP
  5914. JMP [_HeapCreate]
  5915. end;
  5916. end;
  5917. var
  5918. _HeapDestroy: Pointer;
  5919. function HeapDestroy;
  5920. begin
  5921. GetProcedureAddress(_HeapDestroy, kernel32, 'HeapDestroy');
  5922. asm
  5923. MOV ESP, EBP
  5924. POP EBP
  5925. JMP [_HeapDestroy]
  5926. end;
  5927. end;
  5928. var
  5929. _HeapAlloc: Pointer;
  5930. function HeapAlloc;
  5931. begin
  5932. GetProcedureAddress(_HeapAlloc, kernel32, 'HeapAlloc');
  5933. asm
  5934. MOV ESP, EBP
  5935. POP EBP
  5936. JMP [_HeapAlloc]
  5937. end;
  5938. end;
  5939. var
  5940. _HeapReAlloc: Pointer;
  5941. function HeapReAlloc;
  5942. begin
  5943. GetProcedureAddress(_HeapReAlloc, kernel32, 'HeapReAlloc');
  5944. asm
  5945. MOV ESP, EBP
  5946. POP EBP
  5947. JMP [_HeapReAlloc]
  5948. end;
  5949. end;
  5950. var
  5951. _HeapFree: Pointer;
  5952. function HeapFree;
  5953. begin
  5954. GetProcedureAddress(_HeapFree, kernel32, 'HeapFree');
  5955. asm
  5956. MOV ESP, EBP
  5957. POP EBP
  5958. JMP [_HeapFree]
  5959. end;
  5960. end;
  5961. var
  5962. _HeapSize: Pointer;
  5963. function HeapSize;
  5964. begin
  5965. GetProcedureAddress(_HeapSize, kernel32, 'HeapSize');
  5966. asm
  5967. MOV ESP, EBP
  5968. POP EBP
  5969. JMP [_HeapSize]
  5970. end;
  5971. end;
  5972. var
  5973. _HeapValidate: Pointer;
  5974. function HeapValidate;
  5975. begin
  5976. GetProcedureAddress(_HeapValidate, kernel32, 'HeapValidate');
  5977. asm
  5978. MOV ESP, EBP
  5979. POP EBP
  5980. JMP [_HeapValidate]
  5981. end;
  5982. end;
  5983. var
  5984. _HeapCompact: Pointer;
  5985. function HeapCompact;
  5986. begin
  5987. GetProcedureAddress(_HeapCompact, kernel32, 'HeapCompact');
  5988. asm
  5989. MOV ESP, EBP
  5990. POP EBP
  5991. JMP [_HeapCompact]
  5992. end;
  5993. end;
  5994. var
  5995. _GetProcessHeap: Pointer;
  5996. function GetProcessHeap;
  5997. begin
  5998. GetProcedureAddress(_GetProcessHeap, kernel32, 'GetProcessHeap');
  5999. asm
  6000. MOV ESP, EBP
  6001. POP EBP
  6002. JMP [_GetProcessHeap]
  6003. end;
  6004. end;
  6005. var
  6006. _GetProcessHeaps: Pointer;
  6007. function GetProcessHeaps;
  6008. begin
  6009. GetProcedureAddress(_GetProcessHeaps, kernel32, 'GetProcessHeaps');
  6010. asm
  6011. MOV ESP, EBP
  6012. POP EBP
  6013. JMP [_GetProcessHeaps]
  6014. end;
  6015. end;
  6016. var
  6017. _HeapLock: Pointer;
  6018. function HeapLock;
  6019. begin
  6020. GetProcedureAddress(_HeapLock, kernel32, 'HeapLock');
  6021. asm
  6022. MOV ESP, EBP
  6023. POP EBP
  6024. JMP [_HeapLock]
  6025. end;
  6026. end;
  6027. var
  6028. _HeapUnlock: Pointer;
  6029. function HeapUnlock;
  6030. begin
  6031. GetProcedureAddress(_HeapUnlock, kernel32, 'HeapUnlock');
  6032. asm
  6033. MOV ESP, EBP
  6034. POP EBP
  6035. JMP [_HeapUnlock]
  6036. end;
  6037. end;
  6038. var
  6039. _HeapWalk: Pointer;
  6040. function HeapWalk;
  6041. begin
  6042. GetProcedureAddress(_HeapWalk, kernel32, 'HeapWalk');
  6043. asm
  6044. MOV ESP, EBP
  6045. POP EBP
  6046. JMP [_HeapWalk]
  6047. end;
  6048. end;
  6049. var
  6050. _HeapSetInformation: Pointer;
  6051. function HeapSetInformation;
  6052. begin
  6053. GetProcedureAddress(_HeapSetInformation, kernel32, 'HeapSetInformation');
  6054. asm
  6055. MOV ESP, EBP
  6056. POP EBP
  6057. JMP [_HeapSetInformation]
  6058. end;
  6059. end;
  6060. var
  6061. _HeapQueryInformation: Pointer;
  6062. function HeapQueryInformation;
  6063. begin
  6064. GetProcedureAddress(_HeapQueryInformation, kernel32, 'HeapQueryInformation');
  6065. asm
  6066. MOV ESP, EBP
  6067. POP EBP
  6068. JMP [_HeapQueryInformation]
  6069. end;
  6070. end;
  6071. var
  6072. _GetBinaryTypeA: Pointer;
  6073. function GetBinaryTypeA;
  6074. begin
  6075. GetProcedureAddress(_GetBinaryTypeA, kernel32, 'GetBinaryTypeA');
  6076. asm
  6077. MOV ESP, EBP
  6078. POP EBP
  6079. JMP [_GetBinaryTypeA]
  6080. end;
  6081. end;
  6082. var
  6083. _GetBinaryTypeW: Pointer;
  6084. function GetBinaryTypeW;
  6085. begin
  6086. GetProcedureAddress(_GetBinaryTypeW, kernel32, 'GetBinaryTypeW');
  6087. asm
  6088. MOV ESP, EBP
  6089. POP EBP
  6090. JMP [_GetBinaryTypeW]
  6091. end;
  6092. end;
  6093. var
  6094. _GetBinaryType: Pointer;
  6095. function GetBinaryType;
  6096. begin
  6097. GetProcedureAddress(_GetBinaryType, kernel32, 'GetBinaryType' + AWSuffix);
  6098. asm
  6099. MOV ESP, EBP
  6100. POP EBP
  6101. JMP [_GetBinaryType]
  6102. end;
  6103. end;
  6104. var
  6105. _GetShortPathNameA: Pointer;
  6106. function GetShortPathNameA;
  6107. begin
  6108. GetProcedureAddress(_GetShortPathNameA, kernel32, 'GetShortPathNameA');
  6109. asm
  6110. MOV ESP, EBP
  6111. POP EBP
  6112. JMP [_GetShortPathNameA]
  6113. end;
  6114. end;
  6115. var
  6116. _GetShortPathNameW: Pointer;
  6117. function GetShortPathNameW;
  6118. begin
  6119. GetProcedureAddress(_GetShortPathNameW, kernel32, 'GetShortPathNameW');
  6120. asm
  6121. MOV ESP, EBP
  6122. POP EBP
  6123. JMP [_GetShortPathNameW]
  6124. end;
  6125. end;
  6126. var
  6127. _GetShortPathName: Pointer;
  6128. function GetShortPathName;
  6129. begin
  6130. GetProcedureAddress(_GetShortPathName, kernel32, 'GetShortPathName' + AWSuffix);
  6131. asm
  6132. MOV ESP, EBP
  6133. POP EBP
  6134. JMP [_GetShortPathName]
  6135. end;
  6136. end;
  6137. var
  6138. _GetLongPathNameA: Pointer;
  6139. function GetLongPathNameA;
  6140. begin
  6141. GetProcedureAddress(_GetLongPathNameA, kernel32, 'GetLongPathNameA');
  6142. asm
  6143. MOV ESP, EBP
  6144. POP EBP
  6145. JMP [_GetLongPathNameA]
  6146. end;
  6147. end;
  6148. var
  6149. _GetLongPathNameW: Pointer;
  6150. function GetLongPathNameW;
  6151. begin
  6152. GetProcedureAddress(_GetLongPathNameW, kernel32, 'GetLongPathNameW');
  6153. asm
  6154. MOV ESP, EBP
  6155. POP EBP
  6156. JMP [_GetLongPathNameW]
  6157. end;
  6158. end;
  6159. var
  6160. _GetLongPathName: Pointer;
  6161. function GetLongPathName;
  6162. begin
  6163. GetProcedureAddress(_GetLongPathName, kernel32, 'GetLongPathName' + AWSuffix);
  6164. asm
  6165. MOV ESP, EBP
  6166. POP EBP
  6167. JMP [_GetLongPathName]
  6168. end;
  6169. end;
  6170. var
  6171. _GetProcessAffinityMask: Pointer;
  6172. function GetProcessAffinityMask;
  6173. begin
  6174. GetProcedureAddress(_GetProcessAffinityMask, kernel32, 'GetProcessAffinityMask');
  6175. asm
  6176. MOV ESP, EBP
  6177. POP EBP
  6178. JMP [_GetProcessAffinityMask]
  6179. end;
  6180. end;
  6181. var
  6182. _SetProcessAffinityMask: Pointer;
  6183. function SetProcessAffinityMask;
  6184. begin
  6185. GetProcedureAddress(_SetProcessAffinityMask, kernel32, 'SetProcessAffinityMask');
  6186. asm
  6187. MOV ESP, EBP
  6188. POP EBP
  6189. JMP [_SetProcessAffinityMask]
  6190. end;
  6191. end;
  6192. var
  6193. _GetProcessHandleCount: Pointer;
  6194. function GetProcessHandleCount;
  6195. begin
  6196. GetProcedureAddress(_GetProcessHandleCount, kernel32, 'GetProcessHandleCount');
  6197. asm
  6198. MOV ESP, EBP
  6199. POP EBP
  6200. JMP [_GetProcessHandleCount]
  6201. end;
  6202. end;
  6203. var
  6204. _GetProcessTimes: Pointer;
  6205. function GetProcessTimes;
  6206. begin
  6207. GetProcedureAddress(_GetProcessTimes, kernel32, 'GetProcessTimes');
  6208. asm
  6209. MOV ESP, EBP
  6210. POP EBP
  6211. JMP [_GetProcessTimes]
  6212. end;
  6213. end;
  6214. var
  6215. _GetProcessIoCounters: Pointer;
  6216. function GetProcessIoCounters;
  6217. begin
  6218. GetProcedureAddress(_GetProcessIoCounters, kernel32, 'GetProcessIoCounters');
  6219. asm
  6220. MOV ESP, EBP
  6221. POP EBP
  6222. JMP [_GetProcessIoCounters]
  6223. end;
  6224. end;
  6225. var
  6226. _GetProcessWorkingSetSize: Pointer;
  6227. function GetProcessWorkingSetSize;
  6228. begin
  6229. GetProcedureAddress(_GetProcessWorkingSetSize, kernel32, 'GetProcessWorkingSetSize');
  6230. asm
  6231. MOV ESP, EBP
  6232. POP EBP
  6233. JMP [_GetProcessWorkingSetSize]
  6234. end;
  6235. end;
  6236. var
  6237. _GetProcessWorkingSetSizeEx: Pointer;
  6238. function GetProcessWorkingSetSizeEx;
  6239. begin
  6240. GetProcedureAddress(_GetProcessWorkingSetSizeEx, kernel32, 'GetProcessWorkingSetSizeEx');
  6241. asm
  6242. MOV ESP, EBP
  6243. POP EBP
  6244. JMP [_GetProcessWorkingSetSizeEx]
  6245. end;
  6246. end;
  6247. var
  6248. _SetProcessWorkingSetSize: Pointer;
  6249. function SetProcessWorkingSetSize;
  6250. begin
  6251. GetProcedureAddress(_SetProcessWorkingSetSize, kernel32, 'SetProcessWorkingSetSize');
  6252. asm
  6253. MOV ESP, EBP
  6254. POP EBP
  6255. JMP [_SetProcessWorkingSetSize]
  6256. end;
  6257. end;
  6258. var
  6259. _SetProcessWorkingSetSizeEx: Pointer;
  6260. function SetProcessWorkingSetSizeEx;
  6261. begin
  6262. GetProcedureAddress(_SetProcessWorkingSetSizeEx, kernel32, 'SetProcessWorkingSetSizeEx');
  6263. asm
  6264. MOV ESP, EBP
  6265. POP EBP
  6266. JMP [_SetProcessWorkingSetSizeEx]
  6267. end;
  6268. end;
  6269. var
  6270. _OpenProcess: Pointer;
  6271. function OpenProcess;
  6272. begin
  6273. GetProcedureAddress(_OpenProcess, kernel32, 'OpenProcess');
  6274. asm
  6275. MOV ESP, EBP
  6276. POP EBP
  6277. JMP [_OpenProcess]
  6278. end;
  6279. end;
  6280. var
  6281. _GetCurrentProcess: Pointer;
  6282. function GetCurrentProcess;
  6283. begin
  6284. GetProcedureAddress(_GetCurrentProcess, kernel32, 'GetCurrentProcess');
  6285. asm
  6286. MOV ESP, EBP
  6287. POP EBP
  6288. JMP [_GetCurrentProcess]
  6289. end;
  6290. end;
  6291. var
  6292. _GetCurrentProcessId: Pointer;
  6293. function GetCurrentProcessId;
  6294. begin
  6295. GetProcedureAddress(_GetCurrentProcessId, kernel32, 'GetCurrentProcessId');
  6296. asm
  6297. MOV ESP, EBP
  6298. POP EBP
  6299. JMP [_GetCurrentProcessId]
  6300. end;
  6301. end;
  6302. var
  6303. _ExitProcess: Pointer;
  6304. procedure ExitProcess;
  6305. begin
  6306. GetProcedureAddress(_ExitProcess, kernel32, 'ExitProcess');
  6307. asm
  6308. MOV ESP, EBP
  6309. POP EBP
  6310. JMP [_ExitProcess]
  6311. end;
  6312. end;
  6313. var
  6314. _TerminateProcess: Pointer;
  6315. function TerminateProcess;
  6316. begin
  6317. GetProcedureAddress(_TerminateProcess, kernel32, 'TerminateProcess');
  6318. asm
  6319. MOV ESP, EBP
  6320. POP EBP
  6321. JMP [_TerminateProcess]
  6322. end;
  6323. end;
  6324. var
  6325. _GetExitCodeProcess: Pointer;
  6326. function GetExitCodeProcess;
  6327. begin
  6328. GetProcedureAddress(_GetExitCodeProcess, kernel32, 'GetExitCodeProcess');
  6329. asm
  6330. MOV ESP, EBP
  6331. POP EBP
  6332. JMP [_GetExitCodeProcess]
  6333. end;
  6334. end;
  6335. var
  6336. _FatalExit: Pointer;
  6337. procedure FatalExit;
  6338. begin
  6339. GetProcedureAddress(_FatalExit, kernel32, 'FatalExit');
  6340. asm
  6341. MOV ESP, EBP
  6342. POP EBP
  6343. JMP [_FatalExit]
  6344. end;
  6345. end;
  6346. var
  6347. _GetEnvironmentStringsW: Pointer;
  6348. function GetEnvironmentStringsW;
  6349. begin
  6350. GetProcedureAddress(_GetEnvironmentStringsW, kernel32, 'GetEnvironmentStringsW');
  6351. asm
  6352. MOV ESP, EBP
  6353. POP EBP
  6354. JMP [_GetEnvironmentStringsW]
  6355. end;
  6356. end;
  6357. var
  6358. _GetEnvironmentStrings: Pointer;
  6359. function GetEnvironmentStrings;
  6360. begin
  6361. GetProcedureAddress(_GetEnvironmentStrings, kernel32, 'GetEnvironmentStrings' + AWSuffix);
  6362. asm
  6363. MOV ESP, EBP
  6364. POP EBP
  6365. JMP [_GetEnvironmentStrings]
  6366. end;
  6367. end;
  6368. {$IFNDEF UNICODE}
  6369. var
  6370. _GetEnvironmentStringsA: Pointer;
  6371. function GetEnvironmentStringsA;
  6372. begin
  6373. GetProcedureAddress(_GetEnvironmentStringsA, kernel32, 'GetEnvironmentStringsA');
  6374. asm
  6375. MOV ESP, EBP
  6376. POP EBP
  6377. JMP [_GetEnvironmentStringsA]
  6378. end;
  6379. end;
  6380. {$ENDIF !UNICODE}
  6381. var
  6382. _SetEnvironmentStringsA: Pointer;
  6383. function SetEnvironmentStringsA;
  6384. begin
  6385. GetProcedureAddress(_SetEnvironmentStringsA, kernel32, 'SetEnvironmentStringsA');
  6386. asm
  6387. MOV ESP, EBP
  6388. POP EBP
  6389. JMP [_SetEnvironmentStringsA]
  6390. end;
  6391. end;
  6392. var
  6393. _SetEnvironmentStringsW: Pointer;
  6394. function SetEnvironmentStringsW;
  6395. begin
  6396. GetProcedureAddress(_SetEnvironmentStringsW, kernel32, 'SetEnvironmentStringsW');
  6397. asm
  6398. MOV ESP, EBP
  6399. POP EBP
  6400. JMP [_SetEnvironmentStringsW]
  6401. end;
  6402. end;
  6403. var
  6404. _SetEnvironmentStrings: Pointer;
  6405. function SetEnvironmentStrings;
  6406. begin
  6407. GetProcedureAddress(_SetEnvironmentStrings, kernel32, 'SetEnvironmentStrings' + AWSuffix);
  6408. asm
  6409. MOV ESP, EBP
  6410. POP EBP
  6411. JMP [_SetEnvironmentStrings]
  6412. end;
  6413. end;
  6414. var
  6415. _FreeEnvironmentStringsA: Pointer;
  6416. function FreeEnvironmentStringsA;
  6417. begin
  6418. GetProcedureAddress(_FreeEnvironmentStringsA, kernel32, 'FreeEnvironmentStringsA');
  6419. asm
  6420. MOV ESP, EBP
  6421. POP EBP
  6422. JMP [_FreeEnvironmentStringsA]
  6423. end;
  6424. end;
  6425. var
  6426. _FreeEnvironmentStringsW: Pointer;
  6427. function FreeEnvironmentStringsW;
  6428. begin
  6429. GetProcedureAddress(_FreeEnvironmentStringsW, kernel32, 'FreeEnvironmentStringsW');
  6430. asm
  6431. MOV ESP, EBP
  6432. POP EBP
  6433. JMP [_FreeEnvironmentStringsW]
  6434. end;
  6435. end;
  6436. var
  6437. _FreeEnvironmentStrings: Pointer;
  6438. function FreeEnvironmentStrings;
  6439. begin
  6440. GetProcedureAddress(_FreeEnvironmentStrings, kernel32, 'FreeEnvironmentStrings' + AWSuffix);
  6441. asm
  6442. MOV ESP, EBP
  6443. POP EBP
  6444. JMP [_FreeEnvironmentStrings]
  6445. end;
  6446. end;
  6447. var
  6448. _RaiseException: Pointer;
  6449. procedure RaiseException;
  6450. begin
  6451. GetProcedureAddress(_RaiseException, kernel32, 'RaiseException');
  6452. asm
  6453. MOV ESP, EBP
  6454. POP EBP
  6455. JMP [_RaiseException]
  6456. end;
  6457. end;
  6458. var
  6459. _UnhandledExceptionFilter: Pointer;
  6460. function UnhandledExceptionFilter;
  6461. begin
  6462. GetProcedureAddress(_UnhandledExceptionFilter, kernel32, 'UnhandledExceptionFilter');
  6463. asm
  6464. MOV ESP, EBP
  6465. POP EBP
  6466. JMP [_UnhandledExceptionFilter]
  6467. end;
  6468. end;
  6469. var
  6470. _SetUnhandledExceptionFilter: Pointer;
  6471. function SetUnhandledExceptionFilter;
  6472. begin
  6473. GetProcedureAddress(_SetUnhandledExceptionFilter, kernel32, 'SetUnhandledExceptionFilter');
  6474. asm
  6475. MOV ESP, EBP
  6476. POP EBP
  6477. JMP [_SetUnhandledExceptionFilter]
  6478. end;
  6479. end;
  6480. var
  6481. _CreateFiber: Pointer;
  6482. function CreateFiber;
  6483. begin
  6484. GetProcedureAddress(_CreateFiber, kernel32, 'CreateFiber');
  6485. asm
  6486. MOV ESP, EBP
  6487. POP EBP
  6488. JMP [_CreateFiber]
  6489. end;
  6490. end;
  6491. var
  6492. _CreateFiberEx: Pointer;
  6493. function CreateFiberEx;
  6494. begin
  6495. GetProcedureAddress(_CreateFiberEx, kernel32, 'CreateFiberEx');
  6496. asm
  6497. MOV ESP, EBP
  6498. POP EBP
  6499. JMP [_CreateFiberEx]
  6500. end;
  6501. end;
  6502. var
  6503. _DeleteFiber: Pointer;
  6504. procedure DeleteFiber;
  6505. begin
  6506. GetProcedureAddress(_DeleteFiber, kernel32, 'DeleteFiber');
  6507. asm
  6508. MOV ESP, EBP
  6509. POP EBP
  6510. JMP [_DeleteFiber]
  6511. end;
  6512. end;
  6513. var
  6514. _ConvertThreadToFiber: Pointer;
  6515. function ConvertThreadToFiber;
  6516. begin
  6517. GetProcedureAddress(_ConvertThreadToFiber, kernel32, 'ConvertThreadToFiber');
  6518. asm
  6519. MOV ESP, EBP
  6520. POP EBP
  6521. JMP [_ConvertThreadToFiber]
  6522. end;
  6523. end;
  6524. var
  6525. _ConvertThreadToFiberEx: Pointer;
  6526. function ConvertThreadToFiberEx;
  6527. begin
  6528. GetProcedureAddress(_ConvertThreadToFiberEx, kernel32, 'ConvertThreadToFiberEx');
  6529. asm
  6530. MOV ESP, EBP
  6531. POP EBP
  6532. JMP [_ConvertThreadToFiberEx]
  6533. end;
  6534. end;
  6535. var
  6536. _ConvertFiberToThread: Pointer;
  6537. function ConvertFiberToThread;
  6538. begin
  6539. GetProcedureAddress(_ConvertFiberToThread, kernel32, 'ConvertFiberToThread');
  6540. asm
  6541. MOV ESP, EBP
  6542. POP EBP
  6543. JMP [_ConvertFiberToThread]
  6544. end;
  6545. end;
  6546. var
  6547. _SwitchToFiber: Pointer;
  6548. procedure SwitchToFiber;
  6549. begin
  6550. GetProcedureAddress(_SwitchToFiber, kernel32, 'SwitchToFiber');
  6551. asm
  6552. MOV ESP, EBP
  6553. POP EBP
  6554. JMP [_SwitchToFiber]
  6555. end;
  6556. end;
  6557. var
  6558. _SwitchToThread: Pointer;
  6559. function SwitchToThread;
  6560. begin
  6561. GetProcedureAddress(_SwitchToThread, kernel32, 'SwitchToThread');
  6562. asm
  6563. MOV ESP, EBP
  6564. POP EBP
  6565. JMP [_SwitchToThread]
  6566. end;
  6567. end;
  6568. var
  6569. _CreateThread: Pointer;
  6570. function CreateThread;
  6571. begin
  6572. GetProcedureAddress(_CreateThread, kernel32, 'CreateThread');
  6573. asm
  6574. MOV ESP, EBP
  6575. POP EBP
  6576. JMP [_CreateThread]
  6577. end;
  6578. end;
  6579. var
  6580. _CreateRemoteThread: Pointer;
  6581. function CreateRemoteThread;
  6582. begin
  6583. GetProcedureAddress(_CreateRemoteThread, kernel32, 'CreateRemoteThread');
  6584. asm
  6585. MOV ESP, EBP
  6586. POP EBP
  6587. JMP [_CreateRemoteThread]
  6588. end;
  6589. end;
  6590. var
  6591. _GetCurrentThread: Pointer;
  6592. function GetCurrentThread;
  6593. begin
  6594. GetProcedureAddress(_GetCurrentThread, kernel32, 'GetCurrentThread');
  6595. asm
  6596. MOV ESP, EBP
  6597. POP EBP
  6598. JMP [_GetCurrentThread]
  6599. end;
  6600. end;
  6601. var
  6602. _GetCurrentThreadId: Pointer;
  6603. function GetCurrentThreadId;
  6604. begin
  6605. GetProcedureAddress(_GetCurrentThreadId, kernel32, 'GetCurrentThreadId');
  6606. asm
  6607. MOV ESP, EBP
  6608. POP EBP
  6609. JMP [_GetCurrentThreadId]
  6610. end;
  6611. end;
  6612. var
  6613. _GetProcessIdOfThread: Pointer;
  6614. function GetProcessIdOfThread;
  6615. begin
  6616. GetProcedureAddress(_GetProcessIdOfThread, kernel32, 'GetProcessIdOfThread');
  6617. asm
  6618. MOV ESP, EBP
  6619. POP EBP
  6620. JMP [_GetProcessIdOfThread]
  6621. end;
  6622. end;
  6623. var
  6624. _GetThreadId: Pointer;
  6625. function GetThreadId;
  6626. begin
  6627. GetProcedureAddress(_GetThreadId, kernel32, 'GetThreadId');
  6628. asm
  6629. MOV ESP, EBP
  6630. POP EBP
  6631. JMP [_GetThreadId]
  6632. end;
  6633. end;
  6634. var
  6635. _GetProcessId: Pointer;
  6636. function GetProcessId;
  6637. begin
  6638. GetProcedureAddress(_GetProcessId, kernel32, 'GetProcessId');
  6639. asm
  6640. MOV ESP, EBP
  6641. POP EBP
  6642. JMP [_GetProcessId]
  6643. end;
  6644. end;
  6645. var
  6646. _GetCurrentProcessorNumber: Pointer;
  6647. function GetCurrentProcessorNumber;
  6648. begin
  6649. GetProcedureAddress(_GetCurrentProcessorNumber, kernel32, 'GetCurrentProcessorNumber');
  6650. asm
  6651. MOV ESP, EBP
  6652. POP EBP
  6653. JMP [_GetCurrentProcessorNumber]
  6654. end;
  6655. end;
  6656. var
  6657. _SetThreadAffinityMask: Pointer;
  6658. function SetThreadAffinityMask;
  6659. begin
  6660. GetProcedureAddress(_SetThreadAffinityMask, kernel32, 'SetThreadAffinityMask');
  6661. asm
  6662. MOV ESP, EBP
  6663. POP EBP
  6664. JMP [_SetThreadAffinityMask]
  6665. end;
  6666. end;
  6667. var
  6668. _SetThreadIdealProcessor: Pointer;
  6669. function SetThreadIdealProcessor;
  6670. begin
  6671. GetProcedureAddress(_SetThreadIdealProcessor, kernel32, 'SetThreadIdealProcessor');
  6672. asm
  6673. MOV ESP, EBP
  6674. POP EBP
  6675. JMP [_SetThreadIdealProcessor]
  6676. end;
  6677. end;
  6678. var
  6679. _SetProcessPriorityBoost: Pointer;
  6680. function SetProcessPriorityBoost;
  6681. begin
  6682. GetProcedureAddress(_SetProcessPriorityBoost, kernel32, 'SetProcessPriorityBoost');
  6683. asm
  6684. MOV ESP, EBP
  6685. POP EBP
  6686. JMP [_SetProcessPriorityBoost]
  6687. end;
  6688. end;
  6689. var
  6690. _GetProcessPriorityBoost: Pointer;
  6691. function GetProcessPriorityBoost;
  6692. begin
  6693. GetProcedureAddress(_GetProcessPriorityBoost, kernel32, 'GetProcessPriorityBoost');
  6694. asm
  6695. MOV ESP, EBP
  6696. POP EBP
  6697. JMP [_GetProcessPriorityBoost]
  6698. end;
  6699. end;
  6700. var
  6701. _RequestWakeupLatency: Pointer;
  6702. function RequestWakeupLatency;
  6703. begin
  6704. GetProcedureAddress(_RequestWakeupLatency, kernel32, 'RequestWakeupLatency');
  6705. asm
  6706. MOV ESP, EBP
  6707. POP EBP
  6708. JMP [_RequestWakeupLatency]
  6709. end;
  6710. end;
  6711. var
  6712. _IsSystemResumeAutomatic: Pointer;
  6713. function IsSystemResumeAutomatic;
  6714. begin
  6715. GetProcedureAddress(_IsSystemResumeAutomatic, kernel32, 'IsSystemResumeAutomatic');
  6716. asm
  6717. MOV ESP, EBP
  6718. POP EBP
  6719. JMP [_IsSystemResumeAutomatic]
  6720. end;
  6721. end;
  6722. var
  6723. _OpenThread: Pointer;
  6724. function OpenThread;
  6725. begin
  6726. GetProcedureAddress(_OpenThread, kernel32, 'OpenThread');
  6727. asm
  6728. MOV ESP, EBP
  6729. POP EBP
  6730. JMP [_OpenThread]
  6731. end;
  6732. end;
  6733. var
  6734. _SetThreadPriority: Pointer;
  6735. function SetThreadPriority;
  6736. begin
  6737. GetProcedureAddress(_SetThreadPriority, kernel32, 'SetThreadPriority');
  6738. asm
  6739. MOV ESP, EBP
  6740. POP EBP
  6741. JMP [_SetThreadPriority]
  6742. end;
  6743. end;
  6744. var
  6745. _SetThreadPriorityBoost: Pointer;
  6746. function SetThreadPriorityBoost;
  6747. begin
  6748. GetProcedureAddress(_SetThreadPriorityBoost, kernel32, 'SetThreadPriorityBoost');
  6749. asm
  6750. MOV ESP, EBP
  6751. POP EBP
  6752. JMP [_SetThreadPriorityBoost]
  6753. end;
  6754. end;
  6755. var
  6756. _GetThreadPriorityBoost: Pointer;
  6757. function GetThreadPriorityBoost;
  6758. begin
  6759. GetProcedureAddress(_GetThreadPriorityBoost, kernel32, 'GetThreadPriorityBoost');
  6760. asm
  6761. MOV ESP, EBP
  6762. POP EBP
  6763. JMP [_GetThreadPriorityBoost]
  6764. end;
  6765. end;
  6766. var
  6767. _GetThreadPriority: Pointer;
  6768. function GetThreadPriority;
  6769. begin
  6770. GetProcedureAddress(_GetThreadPriority, kernel32, 'GetThreadPriority');
  6771. asm
  6772. MOV ESP, EBP
  6773. POP EBP
  6774. JMP [_GetThreadPriority]
  6775. end;
  6776. end;
  6777. var
  6778. _GetThreadTimes: Pointer;
  6779. function GetThreadTimes;
  6780. begin
  6781. GetProcedureAddress(_GetThreadTimes, kernel32, 'GetThreadTimes');
  6782. asm
  6783. MOV ESP, EBP
  6784. POP EBP
  6785. JMP [_GetThreadTimes]
  6786. end;
  6787. end;
  6788. var
  6789. _GetThreadIOPendingFlag: Pointer;
  6790. function GetThreadIOPendingFlag;
  6791. begin
  6792. GetProcedureAddress(_GetThreadIOPendingFlag, kernel32, 'GetThreadIOPendingFlag');
  6793. asm
  6794. MOV ESP, EBP
  6795. POP EBP
  6796. JMP [_GetThreadIOPendingFlag]
  6797. end;
  6798. end;
  6799. var
  6800. _ExitThread: Pointer;
  6801. procedure ExitThread;
  6802. begin
  6803. GetProcedureAddress(_ExitThread, kernel32, 'ExitThread');
  6804. asm
  6805. MOV ESP, EBP
  6806. POP EBP
  6807. JMP [_ExitThread]
  6808. end;
  6809. end;
  6810. var
  6811. _TerminateThread: Pointer;
  6812. function TerminateThread;
  6813. begin
  6814. GetProcedureAddress(_TerminateThread, kernel32, 'TerminateThread');
  6815. asm
  6816. MOV ESP, EBP
  6817. POP EBP
  6818. JMP [_TerminateThread]
  6819. end;
  6820. end;
  6821. var
  6822. _GetExitCodeThread: Pointer;
  6823. function GetExitCodeThread;
  6824. begin
  6825. GetProcedureAddress(_GetExitCodeThread, kernel32, 'GetExitCodeThread');
  6826. asm
  6827. MOV ESP, EBP
  6828. POP EBP
  6829. JMP [_GetExitCodeThread]
  6830. end;
  6831. end;
  6832. var
  6833. _GetThreadSelectorEntry: Pointer;
  6834. function GetThreadSelectorEntry;
  6835. begin
  6836. GetProcedureAddress(_GetThreadSelectorEntry, kernel32, 'GetThreadSelectorEntry');
  6837. asm
  6838. MOV ESP, EBP
  6839. POP EBP
  6840. JMP [_GetThreadSelectorEntry]
  6841. end;
  6842. end;
  6843. var
  6844. _SetThreadExecutionState: Pointer;
  6845. function SetThreadExecutionState;
  6846. begin
  6847. GetProcedureAddress(_SetThreadExecutionState, kernel32, 'SetThreadExecutionState');
  6848. asm
  6849. MOV ESP, EBP
  6850. POP EBP
  6851. JMP [_SetThreadExecutionState]
  6852. end;
  6853. end;
  6854. var
  6855. _GetLastError: Pointer;
  6856. function GetLastError;
  6857. begin
  6858. GetProcedureAddress(_GetLastError, kernel32, 'GetLastError');
  6859. asm
  6860. MOV ESP, EBP
  6861. POP EBP
  6862. JMP [_GetLastError]
  6863. end;
  6864. end;
  6865. var
  6866. _SetLastError: Pointer;
  6867. procedure SetLastError;
  6868. begin
  6869. GetProcedureAddress(_SetLastError, kernel32, 'SetLastError');
  6870. asm
  6871. MOV ESP, EBP
  6872. POP EBP
  6873. JMP [_SetLastError]
  6874. end;
  6875. end;
  6876. var
  6877. _RestoreLastError: Pointer;
  6878. procedure RestoreLastError;
  6879. begin
  6880. GetProcedureAddress(_RestoreLastError, kernel32, 'RestoreLastError');
  6881. asm
  6882. MOV ESP, EBP
  6883. POP EBP
  6884. JMP [_RestoreLastError]
  6885. end;
  6886. end;
  6887. var
  6888. _GetOverlappedResult: Pointer;
  6889. function GetOverlappedResult;
  6890. begin
  6891. GetProcedureAddress(_GetOverlappedResult, kernel32, 'GetOverlappedResult');
  6892. asm
  6893. MOV ESP, EBP
  6894. POP EBP
  6895. JMP [_GetOverlappedResult]
  6896. end;
  6897. end;
  6898. var
  6899. _CreateIoCompletionPort: Pointer;
  6900. function CreateIoCompletionPort;
  6901. begin
  6902. GetProcedureAddress(_CreateIoCompletionPort, kernel32, 'CreateIoCompletionPort');
  6903. asm
  6904. MOV ESP, EBP
  6905. POP EBP
  6906. JMP [_CreateIoCompletionPort]
  6907. end;
  6908. end;
  6909. var
  6910. _GetQueuedCompletionStatus: Pointer;
  6911. function GetQueuedCompletionStatus;
  6912. begin
  6913. GetProcedureAddress(_GetQueuedCompletionStatus, kernel32, 'GetQueuedCompletionStatus');
  6914. asm
  6915. MOV ESP, EBP
  6916. POP EBP
  6917. JMP [_GetQueuedCompletionStatus]
  6918. end;
  6919. end;
  6920. var
  6921. _PostQueuedCompletionStatus: Pointer;
  6922. function PostQueuedCompletionStatus;
  6923. begin
  6924. GetProcedureAddress(_PostQueuedCompletionStatus, kernel32, 'PostQueuedCompletionStatus');
  6925. asm
  6926. MOV ESP, EBP
  6927. POP EBP
  6928. JMP [_PostQueuedCompletionStatus]
  6929. end;
  6930. end;
  6931. var
  6932. _SetErrorMode: Pointer;
  6933. function SetErrorMode;
  6934. begin
  6935. GetProcedureAddress(_SetErrorMode, kernel32, 'SetErrorMode');
  6936. asm
  6937. MOV ESP, EBP
  6938. POP EBP
  6939. JMP [_SetErrorMode]
  6940. end;
  6941. end;
  6942. var
  6943. _ReadProcessMemory: Pointer;
  6944. function ReadProcessMemory;
  6945. begin
  6946. GetProcedureAddress(_ReadProcessMemory, kernel32, 'ReadProcessMemory');
  6947. asm
  6948. MOV ESP, EBP
  6949. POP EBP
  6950. JMP [_ReadProcessMemory]
  6951. end;
  6952. end;
  6953. var
  6954. _WriteProcessMemory: Pointer;
  6955. function WriteProcessMemory;
  6956. begin
  6957. GetProcedureAddress(_WriteProcessMemory, kernel32, 'WriteProcessMemory');
  6958. asm
  6959. MOV ESP, EBP
  6960. POP EBP
  6961. JMP [_WriteProcessMemory]
  6962. end;
  6963. end;
  6964. var
  6965. _GetThreadContext: Pointer;
  6966. function GetThreadContext;
  6967. begin
  6968. GetProcedureAddress(_GetThreadContext, kernel32, 'GetThreadContext');
  6969. asm
  6970. MOV ESP, EBP
  6971. POP EBP
  6972. JMP [_GetThreadContext]
  6973. end;
  6974. end;
  6975. var
  6976. _SetThreadContext: Pointer;
  6977. function SetThreadContext;
  6978. begin
  6979. GetProcedureAddress(_SetThreadContext, kernel32, 'SetThreadContext');
  6980. asm
  6981. MOV ESP, EBP
  6982. POP EBP
  6983. JMP [_SetThreadContext]
  6984. end;
  6985. end;
  6986. var
  6987. _SuspendThread: Pointer;
  6988. function SuspendThread;
  6989. begin
  6990. GetProcedureAddress(_SuspendThread, kernel32, 'SuspendThread');
  6991. asm
  6992. MOV ESP, EBP
  6993. POP EBP
  6994. JMP [_SuspendThread]
  6995. end;
  6996. end;
  6997. var
  6998. _ResumeThread: Pointer;
  6999. function ResumeThread;
  7000. begin
  7001. GetProcedureAddress(_ResumeThread, kernel32, 'ResumeThread');
  7002. asm
  7003. MOV ESP, EBP
  7004. POP EBP
  7005. JMP [_ResumeThread]
  7006. end;
  7007. end;
  7008. var
  7009. _QueueUserAPC: Pointer;
  7010. function QueueUserAPC;
  7011. begin
  7012. GetProcedureAddress(_QueueUserAPC, kernel32, 'QueueUserAPC');
  7013. asm
  7014. MOV ESP, EBP
  7015. POP EBP
  7016. JMP [_QueueUserAPC]
  7017. end;
  7018. end;
  7019. var
  7020. _IsDebuggerPresent: Pointer;
  7021. function IsDebuggerPresent;
  7022. begin
  7023. GetProcedureAddress(_IsDebuggerPresent, kernel32, 'IsDebuggerPresent');
  7024. asm
  7025. MOV ESP, EBP
  7026. POP EBP
  7027. JMP [_IsDebuggerPresent]
  7028. end;
  7029. end;
  7030. var
  7031. _CheckRemoteDebuggerPresent: Pointer;
  7032. function CheckRemoteDebuggerPresent;
  7033. begin
  7034. GetProcedureAddress(_CheckRemoteDebuggerPresent, kernel32, 'CheckRemoteDebuggerPresent');
  7035. asm
  7036. MOV ESP, EBP
  7037. POP EBP
  7038. JMP [_CheckRemoteDebuggerPresent]
  7039. end;
  7040. end;
  7041. var
  7042. _DebugBreak: Pointer;
  7043. procedure DebugBreak;
  7044. begin
  7045. GetProcedureAddress(_DebugBreak, kernel32, 'DebugBreak');
  7046. asm
  7047. MOV ESP, EBP
  7048. POP EBP
  7049. JMP [_DebugBreak]
  7050. end;
  7051. end;
  7052. var
  7053. _WaitForDebugEvent: Pointer;
  7054. function WaitForDebugEvent;
  7055. begin
  7056. GetProcedureAddress(_WaitForDebugEvent, kernel32, 'WaitForDebugEvent');
  7057. asm
  7058. MOV ESP, EBP
  7059. POP EBP
  7060. JMP [_WaitForDebugEvent]
  7061. end;
  7062. end;
  7063. var
  7064. _ContinueDebugEvent: Pointer;
  7065. function ContinueDebugEvent;
  7066. begin
  7067. GetProcedureAddress(_ContinueDebugEvent, kernel32, 'ContinueDebugEvent');
  7068. asm
  7069. MOV ESP, EBP
  7070. POP EBP
  7071. JMP [_ContinueDebugEvent]
  7072. end;
  7073. end;
  7074. var
  7075. _DebugActiveProcess: Pointer;
  7076. function DebugActiveProcess;
  7077. begin
  7078. GetProcedureAddress(_DebugActiveProcess, kernel32, 'DebugActiveProcess');
  7079. asm
  7080. MOV ESP, EBP
  7081. POP EBP
  7082. JMP [_DebugActiveProcess]
  7083. end;
  7084. end;
  7085. var
  7086. _DebugActiveProcessStop: Pointer;
  7087. function DebugActiveProcessStop;
  7088. begin
  7089. GetProcedureAddress(_DebugActiveProcessStop, kernel32, 'DebugActiveProcessStop');
  7090. asm
  7091. MOV ESP, EBP
  7092. POP EBP
  7093. JMP [_DebugActiveProcessStop]
  7094. end;
  7095. end;
  7096. var
  7097. _DebugSetProcessKillOnExit: Pointer;
  7098. function DebugSetProcessKillOnExit;
  7099. begin
  7100. GetProcedureAddress(_DebugSetProcessKillOnExit, kernel32, 'DebugSetProcessKillOnExit');
  7101. asm
  7102. MOV ESP, EBP
  7103. POP EBP
  7104. JMP [_DebugSetProcessKillOnExit]
  7105. end;
  7106. end;
  7107. var
  7108. _DebugBreakProcess: Pointer;
  7109. function DebugBreakProcess;
  7110. begin
  7111. GetProcedureAddress(_DebugBreakProcess, kernel32, 'DebugBreakProcess');
  7112. asm
  7113. MOV ESP, EBP
  7114. POP EBP
  7115. JMP [_DebugBreakProcess]
  7116. end;
  7117. end;
  7118. var
  7119. _InitializeCriticalSection: Pointer;
  7120. procedure InitializeCriticalSection;
  7121. begin
  7122. GetProcedureAddress(_InitializeCriticalSection, kernel32, 'InitializeCriticalSection');
  7123. asm
  7124. MOV ESP, EBP
  7125. POP EBP
  7126. JMP [_InitializeCriticalSection]
  7127. end;
  7128. end;
  7129. var
  7130. _EnterCriticalSection: Pointer;
  7131. procedure EnterCriticalSection;
  7132. begin
  7133. GetProcedureAddress(_EnterCriticalSection, kernel32, 'EnterCriticalSection');
  7134. asm
  7135. MOV ESP, EBP
  7136. POP EBP
  7137. JMP [_EnterCriticalSection]
  7138. end;
  7139. end;
  7140. var
  7141. _LeaveCriticalSection: Pointer;
  7142. procedure LeaveCriticalSection;
  7143. begin
  7144. GetProcedureAddress(_LeaveCriticalSection, kernel32, 'LeaveCriticalSection');
  7145. asm
  7146. MOV ESP, EBP
  7147. POP EBP
  7148. JMP [_LeaveCriticalSection]
  7149. end;
  7150. end;
  7151. var
  7152. _InitCritSectAndSpinCount: Pointer;
  7153. function InitializeCriticalSectionAndSpinCount;
  7154. begin
  7155. GetProcedureAddress(_InitCritSectAndSpinCount, kernel32, 'InitializeCriticalSectionAndSpinCount');
  7156. asm
  7157. MOV ESP, EBP
  7158. POP EBP
  7159. JMP [_InitCritSectAndSpinCount]
  7160. end;
  7161. end;
  7162. var
  7163. _SetCriticalSectionSpinCount: Pointer;
  7164. function SetCriticalSectionSpinCount;
  7165. begin
  7166. GetProcedureAddress(_SetCriticalSectionSpinCount, kernel32, 'SetCriticalSectionSpinCount');
  7167. asm
  7168. MOV ESP, EBP
  7169. POP EBP
  7170. JMP [_SetCriticalSectionSpinCount]
  7171. end;
  7172. end;
  7173. var
  7174. _TryEnterCriticalSection: Pointer;
  7175. function TryEnterCriticalSection;
  7176. begin
  7177. GetProcedureAddress(_TryEnterCriticalSection, kernel32, 'TryEnterCriticalSection');
  7178. asm
  7179. MOV ESP, EBP
  7180. POP EBP
  7181. JMP [_TryEnterCriticalSection]
  7182. end;
  7183. end;
  7184. var
  7185. _DeleteCriticalSection: Pointer;
  7186. procedure DeleteCriticalSection;
  7187. begin
  7188. GetProcedureAddress(_DeleteCriticalSection, kernel32, 'DeleteCriticalSection');
  7189. asm
  7190. MOV ESP, EBP
  7191. POP EBP
  7192. JMP [_DeleteCriticalSection]
  7193. end;
  7194. end;
  7195. var
  7196. _SetEvent: Pointer;
  7197. function SetEvent;
  7198. begin
  7199. GetProcedureAddress(_SetEvent, kernel32, 'SetEvent');
  7200. asm
  7201. MOV ESP, EBP
  7202. POP EBP
  7203. JMP [_SetEvent]
  7204. end;
  7205. end;
  7206. var
  7207. _ResetEvent: Pointer;
  7208. function ResetEvent;
  7209. begin
  7210. GetProcedureAddress(_ResetEvent, kernel32, 'ResetEvent');
  7211. asm
  7212. MOV ESP, EBP
  7213. POP EBP
  7214. JMP [_ResetEvent]
  7215. end;
  7216. end;
  7217. var
  7218. _PulseEvent: Pointer;
  7219. function PulseEvent;
  7220. begin
  7221. GetProcedureAddress(_PulseEvent, kernel32, 'PulseEvent');
  7222. asm
  7223. MOV ESP, EBP
  7224. POP EBP
  7225. JMP [_PulseEvent]
  7226. end;
  7227. end;
  7228. var
  7229. _ReleaseSemaphore: Pointer;
  7230. function ReleaseSemaphore;
  7231. begin
  7232. GetProcedureAddress(_ReleaseSemaphore, kernel32, 'ReleaseSemaphore');
  7233. asm
  7234. MOV ESP, EBP
  7235. POP EBP
  7236. JMP [_ReleaseSemaphore]
  7237. end;
  7238. end;
  7239. var
  7240. _ReleaseMutex: Pointer;
  7241. function ReleaseMutex;
  7242. begin
  7243. GetProcedureAddress(_ReleaseMutex, kernel32, 'ReleaseMutex');
  7244. asm
  7245. MOV ESP, EBP
  7246. POP EBP
  7247. JMP [_ReleaseMutex]
  7248. end;
  7249. end;
  7250. var
  7251. _WaitForSingleObject: Pointer;
  7252. function WaitForSingleObject;
  7253. begin
  7254. GetProcedureAddress(_WaitForSingleObject, kernel32, 'WaitForSingleObject');
  7255. asm
  7256. MOV ESP, EBP
  7257. POP EBP
  7258. JMP [_WaitForSingleObject]
  7259. end;
  7260. end;
  7261. var
  7262. _WaitForMultipleObjects: Pointer;
  7263. function WaitForMultipleObjects;
  7264. begin
  7265. GetProcedureAddress(_WaitForMultipleObjects, kernel32, 'WaitForMultipleObjects');
  7266. asm
  7267. MOV ESP, EBP
  7268. POP EBP
  7269. JMP [_WaitForMultipleObjects]
  7270. end;
  7271. end;
  7272. var
  7273. _Sleep: Pointer;
  7274. procedure Sleep;
  7275. begin
  7276. GetProcedureAddress(_Sleep, kernel32, 'Sleep');
  7277. asm
  7278. MOV ESP, EBP
  7279. POP EBP
  7280. JMP [_Sleep]
  7281. end;
  7282. end;
  7283. var
  7284. _LoadResource: Pointer;
  7285. function LoadResource;
  7286. begin
  7287. GetProcedureAddress(_LoadResource, kernel32, 'LoadResource');
  7288. asm
  7289. MOV ESP, EBP
  7290. POP EBP
  7291. JMP [_LoadResource]
  7292. end;
  7293. end;
  7294. var
  7295. _SizeofResource: Pointer;
  7296. function SizeofResource;
  7297. begin
  7298. GetProcedureAddress(_SizeofResource, kernel32, 'SizeofResource');
  7299. asm
  7300. MOV ESP, EBP
  7301. POP EBP
  7302. JMP [_SizeofResource]
  7303. end;
  7304. end;
  7305. var
  7306. _GlobalDeleteAtom: Pointer;
  7307. function GlobalDeleteAtom;
  7308. begin
  7309. GetProcedureAddress(_GlobalDeleteAtom, kernel32, 'GlobalDeleteAtom');
  7310. asm
  7311. MOV ESP, EBP
  7312. POP EBP
  7313. JMP [_GlobalDeleteAtom]
  7314. end;
  7315. end;
  7316. var
  7317. _InitAtomTable: Pointer;
  7318. function InitAtomTable;
  7319. begin
  7320. GetProcedureAddress(_InitAtomTable, kernel32, 'InitAtomTable');
  7321. asm
  7322. MOV ESP, EBP
  7323. POP EBP
  7324. JMP [_InitAtomTable]
  7325. end;
  7326. end;
  7327. var
  7328. _DeleteAtom: Pointer;
  7329. function DeleteAtom;
  7330. begin
  7331. GetProcedureAddress(_DeleteAtom, kernel32, 'DeleteAtom');
  7332. asm
  7333. MOV ESP, EBP
  7334. POP EBP
  7335. JMP [_DeleteAtom]
  7336. end;
  7337. end;
  7338. var
  7339. _SetHandleCount: Pointer;
  7340. function SetHandleCount;
  7341. begin
  7342. GetProcedureAddress(_SetHandleCount, kernel32, 'SetHandleCount');
  7343. asm
  7344. MOV ESP, EBP
  7345. POP EBP
  7346. JMP [_SetHandleCount]
  7347. end;
  7348. end;
  7349. var
  7350. _GetLogicalDrives: Pointer;
  7351. function GetLogicalDrives;
  7352. begin
  7353. GetProcedureAddress(_GetLogicalDrives, kernel32, 'GetLogicalDrives');
  7354. asm
  7355. MOV ESP, EBP
  7356. POP EBP
  7357. JMP [_GetLogicalDrives]
  7358. end;
  7359. end;
  7360. var
  7361. _LockFile: Pointer;
  7362. function LockFile;
  7363. begin
  7364. GetProcedureAddress(_LockFile, kernel32, 'LockFile');
  7365. asm
  7366. MOV ESP, EBP
  7367. POP EBP
  7368. JMP [_LockFile]
  7369. end;
  7370. end;
  7371. var
  7372. _UnlockFile: Pointer;
  7373. function UnlockFile;
  7374. begin
  7375. GetProcedureAddress(_UnlockFile, kernel32, 'UnlockFile');
  7376. asm
  7377. MOV ESP, EBP
  7378. POP EBP
  7379. JMP [_UnlockFile]
  7380. end;
  7381. end;
  7382. var
  7383. _LockFileEx: Pointer;
  7384. function LockFileEx;
  7385. begin
  7386. GetProcedureAddress(_LockFileEx, kernel32, 'LockFileEx');
  7387. asm
  7388. MOV ESP, EBP
  7389. POP EBP
  7390. JMP [_LockFileEx]
  7391. end;
  7392. end;
  7393. var
  7394. _UnlockFileEx: Pointer;
  7395. function UnlockFileEx;
  7396. begin
  7397. GetProcedureAddress(_UnlockFileEx, kernel32, 'UnlockFileEx');
  7398. asm
  7399. MOV ESP, EBP
  7400. POP EBP
  7401. JMP [_UnlockFileEx]
  7402. end;
  7403. end;
  7404. var
  7405. _GetFileInformationByHandle: Pointer;
  7406. function GetFileInformationByHandle;
  7407. begin
  7408. GetProcedureAddress(_GetFileInformationByHandle, kernel32, 'GetFileInformationByHandle');
  7409. asm
  7410. MOV ESP, EBP
  7411. POP EBP
  7412. JMP [_GetFileInformationByHandle]
  7413. end;
  7414. end;
  7415. var
  7416. _GetFileType: Pointer;
  7417. function GetFileType;
  7418. begin
  7419. GetProcedureAddress(_GetFileType, kernel32, 'GetFileType');
  7420. asm
  7421. MOV ESP, EBP
  7422. POP EBP
  7423. JMP [_GetFileType]
  7424. end;
  7425. end;
  7426. var
  7427. _GetFileSize: Pointer;
  7428. function GetFileSize;
  7429. begin
  7430. GetProcedureAddress(_GetFileSize, kernel32, 'GetFileSize');
  7431. asm
  7432. MOV ESP, EBP
  7433. POP EBP
  7434. JMP [_GetFileSize]
  7435. end;
  7436. end;
  7437. var
  7438. _GetFileSizeEx: Pointer;
  7439. function GetFileSizeEx;
  7440. begin
  7441. GetProcedureAddress(_GetFileSizeEx, kernel32, 'GetFileSizeEx');
  7442. asm
  7443. MOV ESP, EBP
  7444. POP EBP
  7445. JMP [_GetFileSizeEx]
  7446. end;
  7447. end;
  7448. var
  7449. _GetStdHandle: Pointer;
  7450. function GetStdHandle;
  7451. begin
  7452. GetProcedureAddress(_GetStdHandle, kernel32, 'GetStdHandle');
  7453. asm
  7454. MOV ESP, EBP
  7455. POP EBP
  7456. JMP [_GetStdHandle]
  7457. end;
  7458. end;
  7459. var
  7460. _SetStdHandle: Pointer;
  7461. function SetStdHandle;
  7462. begin
  7463. GetProcedureAddress(_SetStdHandle, kernel32, 'SetStdHandle');
  7464. asm
  7465. MOV ESP, EBP
  7466. POP EBP
  7467. JMP [_SetStdHandle]
  7468. end;
  7469. end;
  7470. var
  7471. _WriteFile: Pointer;
  7472. function WriteFile;
  7473. begin
  7474. GetProcedureAddress(_WriteFile, kernel32, 'WriteFile');
  7475. asm
  7476. MOV ESP, EBP
  7477. POP EBP
  7478. JMP [_WriteFile]
  7479. end;
  7480. end;
  7481. var
  7482. _ReadFile: Pointer;
  7483. function ReadFile;
  7484. begin
  7485. GetProcedureAddress(_ReadFile, kernel32, 'ReadFile');
  7486. asm
  7487. MOV ESP, EBP
  7488. POP EBP
  7489. JMP [_ReadFile]
  7490. end;
  7491. end;
  7492. var
  7493. _FlushFileBuffers: Pointer;
  7494. function FlushFileBuffers;
  7495. begin
  7496. GetProcedureAddress(_FlushFileBuffers, kernel32, 'FlushFileBuffers');
  7497. asm
  7498. MOV ESP, EBP
  7499. POP EBP
  7500. JMP [_FlushFileBuffers]
  7501. end;
  7502. end;
  7503. var
  7504. _DeviceIoControl: Pointer;
  7505. function DeviceIoControl;
  7506. begin
  7507. GetProcedureAddress(_DeviceIoControl, kernel32, 'DeviceIoControl');
  7508. asm
  7509. MOV ESP, EBP
  7510. POP EBP
  7511. JMP [_DeviceIoControl]
  7512. end;
  7513. end;
  7514. var
  7515. _RequestDeviceWakeup: Pointer;
  7516. function RequestDeviceWakeup;
  7517. begin
  7518. GetProcedureAddress(_RequestDeviceWakeup, kernel32, 'RequestDeviceWakeup');
  7519. asm
  7520. MOV ESP, EBP
  7521. POP EBP
  7522. JMP [_RequestDeviceWakeup]
  7523. end;
  7524. end;
  7525. var
  7526. _CancelDeviceWakeupRequest: Pointer;
  7527. function CancelDeviceWakeupRequest;
  7528. begin
  7529. GetProcedureAddress(_CancelDeviceWakeupRequest, kernel32, 'CancelDeviceWakeupRequest');
  7530. asm
  7531. MOV ESP, EBP
  7532. POP EBP
  7533. JMP [_CancelDeviceWakeupRequest]
  7534. end;
  7535. end;
  7536. var
  7537. _GetDevicePowerState: Pointer;
  7538. function GetDevicePowerState;
  7539. begin
  7540. GetProcedureAddress(_GetDevicePowerState, kernel32, 'GetDevicePowerState');
  7541. asm
  7542. MOV ESP, EBP
  7543. POP EBP
  7544. JMP [_GetDevicePowerState]
  7545. end;
  7546. end;
  7547. var
  7548. _SetMessageWaitingIndicator: Pointer;
  7549. function SetMessageWaitingIndicator;
  7550. begin
  7551. GetProcedureAddress(_SetMessageWaitingIndicator, kernel32, 'SetMessageWaitingIndicator');
  7552. asm
  7553. MOV ESP, EBP
  7554. POP EBP
  7555. JMP [_SetMessageWaitingIndicator]
  7556. end;
  7557. end;
  7558. var
  7559. _SetEndOfFile: Pointer;
  7560. function SetEndOfFile;
  7561. begin
  7562. GetProcedureAddress(_SetEndOfFile, kernel32, 'SetEndOfFile');
  7563. asm
  7564. MOV ESP, EBP
  7565. POP EBP
  7566. JMP [_SetEndOfFile]
  7567. end;
  7568. end;
  7569. var
  7570. _SetFilePointer: Pointer;
  7571. function SetFilePointer;
  7572. begin
  7573. GetProcedureAddress(_SetFilePointer, kernel32, 'SetFilePointer');
  7574. asm
  7575. MOV ESP, EBP
  7576. POP EBP
  7577. JMP [_SetFilePointer]
  7578. end;
  7579. end;
  7580. var
  7581. _SetFilePointerEx: Pointer;
  7582. function SetFilePointerEx;
  7583. begin
  7584. GetProcedureAddress(_SetFilePointerEx, kernel32, 'SetFilePointerEx');
  7585. asm
  7586. MOV ESP, EBP
  7587. POP EBP
  7588. JMP [_SetFilePointerEx]
  7589. end;
  7590. end;
  7591. var
  7592. _FindClose: Pointer;
  7593. function FindClose;
  7594. begin
  7595. GetProcedureAddress(_FindClose, kernel32, 'FindClose');
  7596. asm
  7597. MOV ESP, EBP
  7598. POP EBP
  7599. JMP [_FindClose]
  7600. end;
  7601. end;
  7602. var
  7603. _GetFileTime: Pointer;
  7604. function GetFileTime;
  7605. begin
  7606. GetProcedureAddress(_GetFileTime, kernel32, 'GetFileTime');
  7607. asm
  7608. MOV ESP, EBP
  7609. POP EBP
  7610. JMP [_GetFileTime]
  7611. end;
  7612. end;
  7613. var
  7614. _SetFileTime: Pointer;
  7615. function SetFileTime;
  7616. begin
  7617. GetProcedureAddress(_SetFileTime, kernel32, 'SetFileTime');
  7618. asm
  7619. MOV ESP, EBP
  7620. POP EBP
  7621. JMP [_SetFileTime]
  7622. end;
  7623. end;
  7624. var
  7625. _SetFileValidData: Pointer;
  7626. function SetFileValidData;
  7627. begin
  7628. GetProcedureAddress(_SetFileValidData, kernel32, 'SetFileValidData');
  7629. asm
  7630. MOV ESP, EBP
  7631. POP EBP
  7632. JMP [_SetFileValidData]
  7633. end;
  7634. end;
  7635. var
  7636. _SetFileShortNameA: Pointer;
  7637. function SetFileShortNameA;
  7638. begin
  7639. GetProcedureAddress(_SetFileShortNameA, kernel32, 'SetFileShortNameA');
  7640. asm
  7641. MOV ESP, EBP
  7642. POP EBP
  7643. JMP [_SetFileShortNameA]
  7644. end;
  7645. end;
  7646. var
  7647. _SetFileShortNameW: Pointer;
  7648. function SetFileShortNameW;
  7649. begin
  7650. GetProcedureAddress(_SetFileShortNameW, kernel32, 'SetFileShortNameW');
  7651. asm
  7652. MOV ESP, EBP
  7653. POP EBP
  7654. JMP [_SetFileShortNameW]
  7655. end;
  7656. end;
  7657. var
  7658. _SetFileShortName: Pointer;
  7659. function SetFileShortName;
  7660. begin
  7661. GetProcedureAddress(_SetFileShortName, kernel32, 'SetFileShortName' + AWSuffix);
  7662. asm
  7663. MOV ESP, EBP
  7664. POP EBP
  7665. JMP [_SetFileShortName]
  7666. end;
  7667. end;
  7668. var
  7669. _CloseHandle: Pointer;
  7670. function CloseHandle;
  7671. begin
  7672. GetProcedureAddress(_CloseHandle, kernel32, 'CloseHandle');
  7673. asm
  7674. MOV ESP, EBP
  7675. POP EBP
  7676. JMP [_CloseHandle]
  7677. end;
  7678. end;
  7679. var
  7680. _DuplicateHandle: Pointer;
  7681. function DuplicateHandle;
  7682. begin
  7683. GetProcedureAddress(_DuplicateHandle, kernel32, 'DuplicateHandle');
  7684. asm
  7685. MOV ESP, EBP
  7686. POP EBP
  7687. JMP [_DuplicateHandle]
  7688. end;
  7689. end;
  7690. var
  7691. _GetHandleInformation: Pointer;
  7692. function GetHandleInformation;
  7693. begin
  7694. GetProcedureAddress(_GetHandleInformation, kernel32, 'GetHandleInformation');
  7695. asm
  7696. MOV ESP, EBP
  7697. POP EBP
  7698. JMP [_GetHandleInformation]
  7699. end;
  7700. end;
  7701. var
  7702. _SetHandleInformation: Pointer;
  7703. function SetHandleInformation;
  7704. begin
  7705. GetProcedureAddress(_SetHandleInformation, kernel32, 'SetHandleInformation');
  7706. asm
  7707. MOV ESP, EBP
  7708. POP EBP
  7709. JMP [_SetHandleInformation]
  7710. end;
  7711. end;
  7712. var
  7713. _LoadModule: Pointer;
  7714. function LoadModule;
  7715. begin
  7716. GetProcedureAddress(_LoadModule, kernel32, 'LoadModule');
  7717. asm
  7718. MOV ESP, EBP
  7719. POP EBP
  7720. JMP [_LoadModule]
  7721. end;
  7722. end;
  7723. var
  7724. _WinExec: Pointer;
  7725. function WinExec;
  7726. begin
  7727. GetProcedureAddress(_WinExec, kernel32, 'WinExec');
  7728. asm
  7729. MOV ESP, EBP
  7730. POP EBP
  7731. JMP [_WinExec]
  7732. end;
  7733. end;
  7734. var
  7735. _ClearCommBreak: Pointer;
  7736. function ClearCommBreak;
  7737. begin
  7738. GetProcedureAddress(_ClearCommBreak, kernel32, 'ClearCommBreak');
  7739. asm
  7740. MOV ESP, EBP
  7741. POP EBP
  7742. JMP [_ClearCommBreak]
  7743. end;
  7744. end;
  7745. var
  7746. _ClearCommError: Pointer;
  7747. function ClearCommError;
  7748. begin
  7749. GetProcedureAddress(_ClearCommError, kernel32, 'ClearCommError');
  7750. asm
  7751. MOV ESP, EBP
  7752. POP EBP
  7753. JMP [_ClearCommError]
  7754. end;
  7755. end;
  7756. var
  7757. _SetupComm: Pointer;
  7758. function SetupComm;
  7759. begin
  7760. GetProcedureAddress(_SetupComm, kernel32, 'SetupComm');
  7761. asm
  7762. MOV ESP, EBP
  7763. POP EBP
  7764. JMP [_SetupComm]
  7765. end;
  7766. end;
  7767. var
  7768. _EscapeCommFunction: Pointer;
  7769. function EscapeCommFunction;
  7770. begin
  7771. GetProcedureAddress(_EscapeCommFunction, kernel32, 'EscapeCommFunction');
  7772. asm
  7773. MOV ESP, EBP
  7774. POP EBP
  7775. JMP [_EscapeCommFunction]
  7776. end;
  7777. end;
  7778. var
  7779. _GetCommConfig: Pointer;
  7780. function GetCommConfig;
  7781. begin
  7782. GetProcedureAddress(_GetCommConfig, kernel32, 'GetCommConfig');
  7783. asm
  7784. MOV ESP, EBP
  7785. POP EBP
  7786. JMP [_GetCommConfig]
  7787. end;
  7788. end;
  7789. var
  7790. _GetCommMask: Pointer;
  7791. function GetCommMask;
  7792. begin
  7793. GetProcedureAddress(_GetCommMask, kernel32, 'GetCommMask');
  7794. asm
  7795. MOV ESP, EBP
  7796. POP EBP
  7797. JMP [_GetCommMask]
  7798. end;
  7799. end;
  7800. var
  7801. _GetCommProperties: Pointer;
  7802. function GetCommProperties;
  7803. begin
  7804. GetProcedureAddress(_GetCommProperties, kernel32, 'GetCommProperties');
  7805. asm
  7806. MOV ESP, EBP
  7807. POP EBP
  7808. JMP [_GetCommProperties]
  7809. end;
  7810. end;
  7811. var
  7812. _GetCommModemStatus: Pointer;
  7813. function GetCommModemStatus;
  7814. begin
  7815. GetProcedureAddress(_GetCommModemStatus, kernel32, 'GetCommModemStatus');
  7816. asm
  7817. MOV ESP, EBP
  7818. POP EBP
  7819. JMP [_GetCommModemStatus]
  7820. end;
  7821. end;
  7822. var
  7823. _GetCommState: Pointer;
  7824. function GetCommState;
  7825. begin
  7826. GetProcedureAddress(_GetCommState, kernel32, 'GetCommState');
  7827. asm
  7828. MOV ESP, EBP
  7829. POP EBP
  7830. JMP [_GetCommState]
  7831. end;
  7832. end;
  7833. var
  7834. _GetCommTimeouts: Pointer;
  7835. function GetCommTimeouts;
  7836. begin
  7837. GetProcedureAddress(_GetCommTimeouts, kernel32, 'GetCommTimeouts');
  7838. asm
  7839. MOV ESP, EBP
  7840. POP EBP
  7841. JMP [_GetCommTimeouts]
  7842. end;
  7843. end;
  7844. var
  7845. _PurgeComm: Pointer;
  7846. function PurgeComm;
  7847. begin
  7848. GetProcedureAddress(_PurgeComm, kernel32, 'PurgeComm');
  7849. asm
  7850. MOV ESP, EBP
  7851. POP EBP
  7852. JMP [_PurgeComm]
  7853. end;
  7854. end;
  7855. var
  7856. _SetCommBreak: Pointer;
  7857. function SetCommBreak;
  7858. begin
  7859. GetProcedureAddress(_SetCommBreak, kernel32, 'SetCommBreak');
  7860. asm
  7861. MOV ESP, EBP
  7862. POP EBP
  7863. JMP [_SetCommBreak]
  7864. end;
  7865. end;
  7866. var
  7867. _SetCommConfig: Pointer;
  7868. function SetCommConfig;
  7869. begin
  7870. GetProcedureAddress(_SetCommConfig, kernel32, 'SetCommConfig');
  7871. asm
  7872. MOV ESP, EBP
  7873. POP EBP
  7874. JMP [_SetCommConfig]
  7875. end;
  7876. end;
  7877. var
  7878. _SetCommMask: Pointer;
  7879. function SetCommMask;
  7880. begin
  7881. GetProcedureAddress(_SetCommMask, kernel32, 'SetCommMask');
  7882. asm
  7883. MOV ESP, EBP
  7884. POP EBP
  7885. JMP [_SetCommMask]
  7886. end;
  7887. end;
  7888. var
  7889. _SetCommState: Pointer;
  7890. function SetCommState;
  7891. begin
  7892. GetProcedureAddress(_SetCommState, kernel32, 'SetCommState');
  7893. asm
  7894. MOV ESP, EBP
  7895. POP EBP
  7896. JMP [_SetCommState]
  7897. end;
  7898. end;
  7899. var
  7900. _SetCommTimeouts: Pointer;
  7901. function SetCommTimeouts;
  7902. begin
  7903. GetProcedureAddress(_SetCommTimeouts, kernel32, 'SetCommTimeouts');
  7904. asm
  7905. MOV ESP, EBP
  7906. POP EBP
  7907. JMP [_SetCommTimeouts]
  7908. end;
  7909. end;
  7910. var
  7911. _TransmitCommChar: Pointer;
  7912. function TransmitCommChar;
  7913. begin
  7914. GetProcedureAddress(_TransmitCommChar, kernel32, 'TransmitCommChar');
  7915. asm
  7916. MOV ESP, EBP
  7917. POP EBP
  7918. JMP [_TransmitCommChar]
  7919. end;
  7920. end;
  7921. var
  7922. _WaitCommEvent: Pointer;
  7923. function WaitCommEvent;
  7924. begin
  7925. GetProcedureAddress(_WaitCommEvent, kernel32, 'WaitCommEvent');
  7926. asm
  7927. MOV ESP, EBP
  7928. POP EBP
  7929. JMP [_WaitCommEvent]
  7930. end;
  7931. end;
  7932. var
  7933. _SetTapePosition: Pointer;
  7934. function SetTapePosition;
  7935. begin
  7936. GetProcedureAddress(_SetTapePosition, kernel32, 'SetTapePosition');
  7937. asm
  7938. MOV ESP, EBP
  7939. POP EBP
  7940. JMP [_SetTapePosition]
  7941. end;
  7942. end;
  7943. var
  7944. _GetTapePosition: Pointer;
  7945. function GetTapePosition;
  7946. begin
  7947. GetProcedureAddress(_GetTapePosition, kernel32, 'GetTapePosition');
  7948. asm
  7949. MOV ESP, EBP
  7950. POP EBP
  7951. JMP [_GetTapePosition]
  7952. end;
  7953. end;
  7954. var
  7955. _PrepareTape: Pointer;
  7956. function PrepareTape;
  7957. begin
  7958. GetProcedureAddress(_PrepareTape, kernel32, 'PrepareTape');
  7959. asm
  7960. MOV ESP, EBP
  7961. POP EBP
  7962. JMP [_PrepareTape]
  7963. end;
  7964. end;
  7965. var
  7966. _EraseTape: Pointer;
  7967. function EraseTape;
  7968. begin
  7969. GetProcedureAddress(_EraseTape, kernel32, 'EraseTape');
  7970. asm
  7971. MOV ESP, EBP
  7972. POP EBP
  7973. JMP [_EraseTape]
  7974. end;
  7975. end;
  7976. var
  7977. _CreateTapePartition: Pointer;
  7978. function CreateTapePartition;
  7979. begin
  7980. GetProcedureAddress(_CreateTapePartition, kernel32, 'CreateTapePartition');
  7981. asm
  7982. MOV ESP, EBP
  7983. POP EBP
  7984. JMP [_CreateTapePartition]
  7985. end;
  7986. end;
  7987. var
  7988. _WriteTapemark: Pointer;
  7989. function WriteTapemark;
  7990. begin
  7991. GetProcedureAddress(_WriteTapemark, kernel32, 'WriteTapemark');
  7992. asm
  7993. MOV ESP, EBP
  7994. POP EBP
  7995. JMP [_WriteTapemark]
  7996. end;
  7997. end;
  7998. var
  7999. _GetTapeStatus: Pointer;
  8000. function GetTapeStatus;
  8001. begin
  8002. GetProcedureAddress(_GetTapeStatus, kernel32, 'GetTapeStatus');
  8003. asm
  8004. MOV ESP, EBP
  8005. POP EBP
  8006. JMP [_GetTapeStatus]
  8007. end;
  8008. end;
  8009. var
  8010. _GetTapeParameters: Pointer;
  8011. function GetTapeParameters;
  8012. begin
  8013. GetProcedureAddress(_GetTapeParameters, kernel32, 'GetTapeParameters');
  8014. asm
  8015. MOV ESP, EBP
  8016. POP EBP
  8017. JMP [_GetTapeParameters]
  8018. end;
  8019. end;
  8020. var
  8021. _SetTapeParameters: Pointer;
  8022. function SetTapeParameters;
  8023. begin
  8024. GetProcedureAddress(_SetTapeParameters, kernel32, 'SetTapeParameters');
  8025. asm
  8026. MOV ESP, EBP
  8027. POP EBP
  8028. JMP [_SetTapeParameters]
  8029. end;
  8030. end;
  8031. var
  8032. _Beep: Pointer;
  8033. function Beep;
  8034. begin
  8035. GetProcedureAddress(_Beep, kernel32, 'Beep');
  8036. asm
  8037. MOV ESP, EBP
  8038. POP EBP
  8039. JMP [_Beep]
  8040. end;
  8041. end;
  8042. var
  8043. _MulDiv: Pointer;
  8044. function MulDiv;
  8045. begin
  8046. GetProcedureAddress(_MulDiv, kernel32, 'MulDiv');
  8047. asm
  8048. MOV ESP, EBP
  8049. POP EBP
  8050. JMP [_MulDiv]
  8051. end;
  8052. end;
  8053. var
  8054. _GetSystemTime: Pointer;
  8055. procedure GetSystemTime;
  8056. begin
  8057. GetProcedureAddress(_GetSystemTime, kernel32, 'GetSystemTime');
  8058. asm
  8059. MOV ESP, EBP
  8060. POP EBP
  8061. JMP [_GetSystemTime]
  8062. end;
  8063. end;
  8064. var
  8065. _GetSystemTimeAsFileTime: Pointer;
  8066. procedure GetSystemTimeAsFileTime;
  8067. begin
  8068. GetProcedureAddress(_GetSystemTimeAsFileTime, kernel32, 'GetSystemTimeAsFileTime');
  8069. asm
  8070. MOV ESP, EBP
  8071. POP EBP
  8072. JMP [_GetSystemTimeAsFileTime]
  8073. end;
  8074. end;
  8075. var
  8076. _SetSystemTime: Pointer;
  8077. function SetSystemTime;
  8078. begin
  8079. GetProcedureAddress(_SetSystemTime, kernel32, 'SetSystemTime');
  8080. asm
  8081. MOV ESP, EBP
  8082. POP EBP
  8083. JMP [_SetSystemTime]
  8084. end;
  8085. end;
  8086. var
  8087. _GetLocalTime: Pointer;
  8088. procedure GetLocalTime;
  8089. begin
  8090. GetProcedureAddress(_GetLocalTime, kernel32, 'GetLocalTime');
  8091. asm
  8092. MOV ESP, EBP
  8093. POP EBP
  8094. JMP [_GetLocalTime]
  8095. end;
  8096. end;
  8097. var
  8098. _SetLocalTime: Pointer;
  8099. function SetLocalTime;
  8100. begin
  8101. GetProcedureAddress(_SetLocalTime, kernel32, 'SetLocalTime');
  8102. asm
  8103. MOV ESP, EBP
  8104. POP EBP
  8105. JMP [_SetLocalTime]
  8106. end;
  8107. end;
  8108. var
  8109. _GetSystemInfo: Pointer;
  8110. procedure GetSystemInfo;
  8111. begin
  8112. GetProcedureAddress(_GetSystemInfo, kernel32, 'GetSystemInfo');
  8113. asm
  8114. MOV ESP, EBP
  8115. POP EBP
  8116. JMP [_GetSystemInfo]
  8117. end;
  8118. end;
  8119. var
  8120. _GetSystemRegistryQuota: Pointer;
  8121. function GetSystemRegistryQuota;
  8122. begin
  8123. GetProcedureAddress(_GetSystemRegistryQuota, kernel32, 'GetSystemRegistryQuota');
  8124. asm
  8125. MOV ESP, EBP
  8126. POP EBP
  8127. JMP [_GetSystemRegistryQuota]
  8128. end;
  8129. end;
  8130. var
  8131. _GetSystemTimes: Pointer;
  8132. function GetSystemTimes;
  8133. begin
  8134. GetProcedureAddress(_GetSystemTimes, kernel32, 'GetSystemTimes');
  8135. asm
  8136. MOV ESP, EBP
  8137. POP EBP
  8138. JMP [_GetSystemTimes]
  8139. end;
  8140. end;
  8141. var
  8142. _GetNativeSystemInfo: Pointer;
  8143. procedure GetNativeSystemInfo;
  8144. begin
  8145. GetProcedureAddress(_GetNativeSystemInfo, kernel32, 'GetNativeSystemInfo');
  8146. asm
  8147. MOV ESP, EBP
  8148. POP EBP
  8149. JMP [_GetNativeSystemInfo]
  8150. end;
  8151. end;
  8152. var
  8153. _IsProcessorFeaturePresent: Pointer;
  8154. function IsProcessorFeaturePresent;
  8155. begin
  8156. GetProcedureAddress(_IsProcessorFeaturePresent, kernel32, 'IsProcessorFeaturePresent');
  8157. asm
  8158. MOV ESP, EBP
  8159. POP EBP
  8160. JMP [_IsProcessorFeaturePresent]
  8161. end;
  8162. end;
  8163. var
  8164. _SystemTimeToTzSpecificLocalTime: Pointer;
  8165. function SystemTimeToTzSpecificLocalTime;
  8166. begin
  8167. GetProcedureAddress(_SystemTimeToTzSpecificLocalTime, kernel32, 'SystemTimeToTzSpecificLocalTime');
  8168. asm
  8169. MOV ESP, EBP
  8170. POP EBP
  8171. JMP [_SystemTimeToTzSpecificLocalTime]
  8172. end;
  8173. end;
  8174. var
  8175. _TzSpecificLocalTimeToSystemTime: Pointer;
  8176. function TzSpecificLocalTimeToSystemTime;
  8177. begin
  8178. GetProcedureAddress(_TzSpecificLocalTimeToSystemTime, kernel32, 'TzSpecificLocalTimeToSystemTime');
  8179. asm
  8180. MOV ESP, EBP
  8181. POP EBP
  8182. JMP [_TzSpecificLocalTimeToSystemTime]
  8183. end;
  8184. end;
  8185. var
  8186. _GetTimeZoneInformation: Pointer;
  8187. function GetTimeZoneInformation;
  8188. begin
  8189. GetProcedureAddress(_GetTimeZoneInformation, kernel32, 'GetTimeZoneInformation');
  8190. asm
  8191. MOV ESP, EBP
  8192. POP EBP
  8193. JMP [_GetTimeZoneInformation]
  8194. end;
  8195. end;
  8196. var
  8197. _SetTimeZoneInformation: Pointer;
  8198. function SetTimeZoneInformation;
  8199. begin
  8200. GetProcedureAddress(_SetTimeZoneInformation, kernel32, 'SetTimeZoneInformation');
  8201. asm
  8202. MOV ESP, EBP
  8203. POP EBP
  8204. JMP [_SetTimeZoneInformation]
  8205. end;
  8206. end;
  8207. var
  8208. _SystemTimeToFileTime: Pointer;
  8209. function SystemTimeToFileTime;
  8210. begin
  8211. GetProcedureAddress(_SystemTimeToFileTime, kernel32, 'SystemTimeToFileTime');
  8212. asm
  8213. MOV ESP, EBP
  8214. POP EBP
  8215. JMP [_SystemTimeToFileTime]
  8216. end;
  8217. end;
  8218. var
  8219. _FileTimeToLocalFileTime: Pointer;
  8220. function FileTimeToLocalFileTime;
  8221. begin
  8222. GetProcedureAddress(_FileTimeToLocalFileTime, kernel32, 'FileTimeToLocalFileTime');
  8223. asm
  8224. MOV ESP, EBP
  8225. POP EBP
  8226. JMP [_FileTimeToLocalFileTime]
  8227. end;
  8228. end;
  8229. var
  8230. _LocalFileTimeToFileTime: Pointer;
  8231. function LocalFileTimeToFileTime;
  8232. begin
  8233. GetProcedureAddress(_LocalFileTimeToFileTime, kernel32, 'LocalFileTimeToFileTime');
  8234. asm
  8235. MOV ESP, EBP
  8236. POP EBP
  8237. JMP [_LocalFileTimeToFileTime]
  8238. end;
  8239. end;
  8240. var
  8241. _FileTimeToSystemTime: Pointer;
  8242. function FileTimeToSystemTime;
  8243. begin
  8244. GetProcedureAddress(_FileTimeToSystemTime, kernel32, 'FileTimeToSystemTime');
  8245. asm
  8246. MOV ESP, EBP
  8247. POP EBP
  8248. JMP [_FileTimeToSystemTime]
  8249. end;
  8250. end;
  8251. var
  8252. _CompareFileTime: Pointer;
  8253. function CompareFileTime;
  8254. begin
  8255. GetProcedureAddress(_CompareFileTime, kernel32, 'CompareFileTime');
  8256. asm
  8257. MOV ESP, EBP
  8258. POP EBP
  8259. JMP [_CompareFileTime]
  8260. end;
  8261. end;
  8262. var
  8263. _FileTimeToDosDateTime: Pointer;
  8264. function FileTimeToDosDateTime;
  8265. begin
  8266. GetProcedureAddress(_FileTimeToDosDateTime, kernel32, 'FileTimeToDosDateTime');
  8267. asm
  8268. MOV ESP, EBP
  8269. POP EBP
  8270. JMP [_FileTimeToDosDateTime]
  8271. end;
  8272. end;
  8273. var
  8274. _DosDateTimeToFileTime: Pointer;
  8275. function DosDateTimeToFileTime;
  8276. begin
  8277. GetProcedureAddress(_DosDateTimeToFileTime, kernel32, 'DosDateTimeToFileTime');
  8278. asm
  8279. MOV ESP, EBP
  8280. POP EBP
  8281. JMP [_DosDateTimeToFileTime]
  8282. end;
  8283. end;
  8284. var
  8285. _GetTickCount: Pointer;
  8286. function GetTickCount;
  8287. begin
  8288. GetProcedureAddress(_GetTickCount, kernel32, 'GetTickCount');
  8289. asm
  8290. MOV ESP, EBP
  8291. POP EBP
  8292. JMP [_GetTickCount]
  8293. end;
  8294. end;
  8295. var
  8296. _SetSystemTimeAdjustment: Pointer;
  8297. function SetSystemTimeAdjustment;
  8298. begin
  8299. GetProcedureAddress(_SetSystemTimeAdjustment, kernel32, 'SetSystemTimeAdjustment');
  8300. asm
  8301. MOV ESP, EBP
  8302. POP EBP
  8303. JMP [_SetSystemTimeAdjustment]
  8304. end;
  8305. end;
  8306. var
  8307. _GetSystemTimeAdjustment: Pointer;
  8308. function GetSystemTimeAdjustment;
  8309. begin
  8310. GetProcedureAddress(_GetSystemTimeAdjustment, kernel32, 'GetSystemTimeAdjustment');
  8311. asm
  8312. MOV ESP, EBP
  8313. POP EBP
  8314. JMP [_GetSystemTimeAdjustment]
  8315. end;
  8316. end;
  8317. var
  8318. _FormatMessageA: Pointer;
  8319. function FormatMessageA;
  8320. begin
  8321. GetProcedureAddress(_FormatMessageA, kernel32, 'FormatMessageA');
  8322. asm
  8323. MOV ESP, EBP
  8324. POP EBP
  8325. JMP [_FormatMessageA]
  8326. end;
  8327. end;
  8328. var
  8329. _FormatMessageW: Pointer;
  8330. function FormatMessageW;
  8331. begin
  8332. GetProcedureAddress(_FormatMessageW, kernel32, 'FormatMessageW');
  8333. asm
  8334. MOV ESP, EBP
  8335. POP EBP
  8336. JMP [_FormatMessageW]
  8337. end;
  8338. end;
  8339. var
  8340. _FormatMessage: Pointer;
  8341. function FormatMessage;
  8342. begin
  8343. GetProcedureAddress(_FormatMessage, kernel32, 'FormatMessage' + AWSuffix);
  8344. asm
  8345. MOV ESP, EBP
  8346. POP EBP
  8347. JMP [_FormatMessage]
  8348. end;
  8349. end;
  8350. var
  8351. _CreatePipe: Pointer;
  8352. function CreatePipe;
  8353. begin
  8354. GetProcedureAddress(_CreatePipe, kernel32, 'CreatePipe');
  8355. asm
  8356. MOV ESP, EBP
  8357. POP EBP
  8358. JMP [_CreatePipe]
  8359. end;
  8360. end;
  8361. var
  8362. _ConnectNamedPipe: Pointer;
  8363. function ConnectNamedPipe;
  8364. begin
  8365. GetProcedureAddress(_ConnectNamedPipe, kernel32, 'ConnectNamedPipe');
  8366. asm
  8367. MOV ESP, EBP
  8368. POP EBP
  8369. JMP [_ConnectNamedPipe]
  8370. end;
  8371. end;
  8372. var
  8373. _DisconnectNamedPipe: Pointer;
  8374. function DisconnectNamedPipe;
  8375. begin
  8376. GetProcedureAddress(_DisconnectNamedPipe, kernel32, 'DisconnectNamedPipe');
  8377. asm
  8378. MOV ESP, EBP
  8379. POP EBP
  8380. JMP [_DisconnectNamedPipe]
  8381. end;
  8382. end;
  8383. var
  8384. _SetNamedPipeHandleState: Pointer;
  8385. function SetNamedPipeHandleState;
  8386. begin
  8387. GetProcedureAddress(_SetNamedPipeHandleState, kernel32, 'SetNamedPipeHandleState');
  8388. asm
  8389. MOV ESP, EBP
  8390. POP EBP
  8391. JMP [_SetNamedPipeHandleState]
  8392. end;
  8393. end;
  8394. var
  8395. _GetNamedPipeInfo: Pointer;
  8396. function GetNamedPipeInfo;
  8397. begin
  8398. GetProcedureAddress(_GetNamedPipeInfo, kernel32, 'GetNamedPipeInfo');
  8399. asm
  8400. MOV ESP, EBP
  8401. POP EBP
  8402. JMP [_GetNamedPipeInfo]
  8403. end;
  8404. end;
  8405. var
  8406. _PeekNamedPipe: Pointer;
  8407. function PeekNamedPipe;
  8408. begin
  8409. GetProcedureAddress(_PeekNamedPipe, kernel32, 'PeekNamedPipe');
  8410. asm
  8411. MOV ESP, EBP
  8412. POP EBP
  8413. JMP [_PeekNamedPipe]
  8414. end;
  8415. end;
  8416. var
  8417. _TransactNamedPipe: Pointer;
  8418. function TransactNamedPipe;
  8419. begin
  8420. GetProcedureAddress(_TransactNamedPipe, kernel32, 'TransactNamedPipe');
  8421. asm
  8422. MOV ESP, EBP
  8423. POP EBP
  8424. JMP [_TransactNamedPipe]
  8425. end;
  8426. end;
  8427. var
  8428. _CreateMailslotA: Pointer;
  8429. function CreateMailslotA;
  8430. begin
  8431. GetProcedureAddress(_CreateMailslotA, kernel32, 'CreateMailslotA');
  8432. asm
  8433. MOV ESP, EBP
  8434. POP EBP
  8435. JMP [_CreateMailslotA]
  8436. end;
  8437. end;
  8438. var
  8439. _CreateMailslotW: Pointer;
  8440. function CreateMailslotW;
  8441. begin
  8442. GetProcedureAddress(_CreateMailslotW, kernel32, 'CreateMailslotW');
  8443. asm
  8444. MOV ESP, EBP
  8445. POP EBP
  8446. JMP [_CreateMailslotW]
  8447. end;
  8448. end;
  8449. var
  8450. _CreateMailslot: Pointer;
  8451. function CreateMailslot;
  8452. begin
  8453. GetProcedureAddress(_CreateMailslot, kernel32, 'CreateMailslot' + AWSuffix);
  8454. asm
  8455. MOV ESP, EBP
  8456. POP EBP
  8457. JMP [_CreateMailslot]
  8458. end;
  8459. end;
  8460. var
  8461. _GetMailslotInfo: Pointer;
  8462. function GetMailslotInfo;
  8463. begin
  8464. GetProcedureAddress(_GetMailslotInfo, kernel32, 'GetMailslotInfo');
  8465. asm
  8466. MOV ESP, EBP
  8467. POP EBP
  8468. JMP [_GetMailslotInfo]
  8469. end;
  8470. end;
  8471. var
  8472. _SetMailslotInfo: Pointer;
  8473. function SetMailslotInfo;
  8474. begin
  8475. GetProcedureAddress(_SetMailslotInfo, kernel32, 'SetMailslotInfo');
  8476. asm
  8477. MOV ESP, EBP
  8478. POP EBP
  8479. JMP [_SetMailslotInfo]
  8480. end;
  8481. end;
  8482. var
  8483. _MapViewOfFile: Pointer;
  8484. function MapViewOfFile;
  8485. begin
  8486. GetProcedureAddress(_MapViewOfFile, kernel32, 'MapViewOfFile');
  8487. asm
  8488. MOV ESP, EBP
  8489. POP EBP
  8490. JMP [_MapViewOfFile]
  8491. end;
  8492. end;
  8493. var
  8494. _FlushViewOfFile: Pointer;
  8495. function FlushViewOfFile;
  8496. begin
  8497. GetProcedureAddress(_FlushViewOfFile, kernel32, 'FlushViewOfFile');
  8498. asm
  8499. MOV ESP, EBP
  8500. POP EBP
  8501. JMP [_FlushViewOfFile]
  8502. end;
  8503. end;
  8504. var
  8505. _UnmapViewOfFile: Pointer;
  8506. function UnmapViewOfFile;
  8507. begin
  8508. GetProcedureAddress(_UnmapViewOfFile, kernel32, 'UnmapViewOfFile');
  8509. asm
  8510. MOV ESP, EBP
  8511. POP EBP
  8512. JMP [_UnmapViewOfFile]
  8513. end;
  8514. end;
  8515. var
  8516. _EncryptFileA: Pointer;
  8517. function EncryptFileA;
  8518. begin
  8519. GetProcedureAddress(_EncryptFileA, advapi32, 'EncryptFileA');
  8520. asm
  8521. MOV ESP, EBP
  8522. POP EBP
  8523. JMP [_EncryptFileA]
  8524. end;
  8525. end;
  8526. var
  8527. _EncryptFileW: Pointer;
  8528. function EncryptFileW;
  8529. begin
  8530. GetProcedureAddress(_EncryptFileW, advapi32, 'EncryptFileW');
  8531. asm
  8532. MOV ESP, EBP
  8533. POP EBP
  8534. JMP [_EncryptFileW]
  8535. end;
  8536. end;
  8537. var
  8538. _EncryptFile: Pointer;
  8539. function EncryptFile;
  8540. begin
  8541. GetProcedureAddress(_EncryptFile, advapi32, 'EncryptFile' + AWSuffix);
  8542. asm
  8543. MOV ESP, EBP
  8544. POP EBP
  8545. JMP [_EncryptFile]
  8546. end;
  8547. end;
  8548. var
  8549. _DecryptFileA: Pointer;
  8550. function DecryptFileA;
  8551. begin
  8552. GetProcedureAddress(_DecryptFileA, advapi32, 'DecryptFileA');
  8553. asm
  8554. MOV ESP, EBP
  8555. POP EBP
  8556. JMP [_DecryptFileA]
  8557. end;
  8558. end;
  8559. var
  8560. _DecryptFileW: Pointer;
  8561. function DecryptFileW;
  8562. begin
  8563. GetProcedureAddress(_DecryptFileW, advapi32, 'DecryptFileW');
  8564. asm
  8565. MOV ESP, EBP
  8566. POP EBP
  8567. JMP [_DecryptFileW]
  8568. end;
  8569. end;
  8570. var
  8571. _DecryptFile: Pointer;
  8572. function DecryptFile;
  8573. begin
  8574. GetProcedureAddress(_DecryptFile, advapi32, 'DecryptFile' + AWSuffix);
  8575. asm
  8576. MOV ESP, EBP
  8577. POP EBP
  8578. JMP [_DecryptFile]
  8579. end;
  8580. end;
  8581. var
  8582. _FileEncryptionStatusA: Pointer;
  8583. function FileEncryptionStatusA;
  8584. begin
  8585. GetProcedureAddress(_FileEncryptionStatusA, advapi32, 'FileEncryptionStatusA');
  8586. asm
  8587. MOV ESP, EBP
  8588. POP EBP
  8589. JMP [_FileEncryptionStatusA]
  8590. end;
  8591. end;
  8592. var
  8593. _FileEncryptionStatusW: Pointer;
  8594. function FileEncryptionStatusW;
  8595. begin
  8596. GetProcedureAddress(_FileEncryptionStatusW, advapi32, 'FileEncryptionStatusW');
  8597. asm
  8598. MOV ESP, EBP
  8599. POP EBP
  8600. JMP [_FileEncryptionStatusW]
  8601. end;
  8602. end;
  8603. var
  8604. _FileEncryptionStatus: Pointer;
  8605. function FileEncryptionStatus;
  8606. begin
  8607. GetProcedureAddress(_FileEncryptionStatus, advapi32, 'FileEncryptionStatus' + AWSuffix);
  8608. asm
  8609. MOV ESP, EBP
  8610. POP EBP
  8611. JMP [_FileEncryptionStatus]
  8612. end;
  8613. end;
  8614. var
  8615. _OpenEncryptedFileRawA: Pointer;
  8616. function OpenEncryptedFileRawA;
  8617. begin
  8618. GetProcedureAddress(_OpenEncryptedFileRawA, advapi32, 'OpenEncryptedFileRawA');
  8619. asm
  8620. MOV ESP, EBP
  8621. POP EBP
  8622. JMP [_OpenEncryptedFileRawA]
  8623. end;
  8624. end;
  8625. var
  8626. _OpenEncryptedFileRawW: Pointer;
  8627. function OpenEncryptedFileRawW;
  8628. begin
  8629. GetProcedureAddress(_OpenEncryptedFileRawW, advapi32, 'OpenEncryptedFileRawW');
  8630. asm
  8631. MOV ESP, EBP
  8632. POP EBP
  8633. JMP [_OpenEncryptedFileRawW]
  8634. end;
  8635. end;
  8636. var
  8637. _OpenEncryptedFileRaw: Pointer;
  8638. function OpenEncryptedFileRaw;
  8639. begin
  8640. GetProcedureAddress(_OpenEncryptedFileRaw, advapi32, 'OpenEncryptedFileRaw' + AWSuffix);
  8641. asm
  8642. MOV ESP, EBP
  8643. POP EBP
  8644. JMP [_OpenEncryptedFileRaw]
  8645. end;
  8646. end;
  8647. var
  8648. _ReadEncryptedFileRaw: Pointer;
  8649. function ReadEncryptedFileRaw;
  8650. begin
  8651. GetProcedureAddress(_ReadEncryptedFileRaw, advapi32, 'ReadEncryptedFileRaw');
  8652. asm
  8653. MOV ESP, EBP
  8654. POP EBP
  8655. JMP [_ReadEncryptedFileRaw]
  8656. end;
  8657. end;
  8658. var
  8659. _WriteEncryptedFileRaw: Pointer;
  8660. function WriteEncryptedFileRaw;
  8661. begin
  8662. GetProcedureAddress(_WriteEncryptedFileRaw, advapi32, 'WriteEncryptedFileRaw');
  8663. asm
  8664. MOV ESP, EBP
  8665. POP EBP
  8666. JMP [_WriteEncryptedFileRaw]
  8667. end;
  8668. end;
  8669. var
  8670. _CloseEncryptedFileRaw: Pointer;
  8671. procedure CloseEncryptedFileRaw;
  8672. begin
  8673. GetProcedureAddress(_CloseEncryptedFileRaw, advapi32, 'CloseEncryptedFileRaw');
  8674. asm
  8675. MOV ESP, EBP
  8676. POP EBP
  8677. JMP [_CloseEncryptedFileRaw]
  8678. end;
  8679. end;
  8680. var
  8681. _lstrcmpA: Pointer;
  8682. function lstrcmpA;
  8683. begin
  8684. GetProcedureAddress(_lstrcmpA, kernel32, 'lstrcmpA');
  8685. asm
  8686. MOV ESP, EBP
  8687. POP EBP
  8688. JMP [_lstrcmpA]
  8689. end;
  8690. end;
  8691. var
  8692. _lstrcmpW: Pointer;
  8693. function lstrcmpW;
  8694. begin
  8695. GetProcedureAddress(_lstrcmpW, kernel32, 'lstrcmpW');
  8696. asm
  8697. MOV ESP, EBP
  8698. POP EBP
  8699. JMP [_lstrcmpW]
  8700. end;
  8701. end;
  8702. var
  8703. _lstrcmp: Pointer;
  8704. function lstrcmp;
  8705. begin
  8706. GetProcedureAddress(_lstrcmp, kernel32, 'lstrcmp' + AWSuffix);
  8707. asm
  8708. MOV ESP, EBP
  8709. POP EBP
  8710. JMP [_lstrcmp]
  8711. end;
  8712. end;
  8713. var
  8714. _lstrcmpiA: Pointer;
  8715. function lstrcmpiA;
  8716. begin
  8717. GetProcedureAddress(_lstrcmpiA, kernel32, 'lstrcmpiA');
  8718. asm
  8719. MOV ESP, EBP
  8720. POP EBP
  8721. JMP [_lstrcmpiA]
  8722. end;
  8723. end;
  8724. var
  8725. _lstrcmpiW: Pointer;
  8726. function lstrcmpiW;
  8727. begin
  8728. GetProcedureAddress(_lstrcmpiW, kernel32, 'lstrcmpiW');
  8729. asm
  8730. MOV ESP, EBP
  8731. POP EBP
  8732. JMP [_lstrcmpiW]
  8733. end;
  8734. end;
  8735. var
  8736. _lstrcmpi: Pointer;
  8737. function lstrcmpi;
  8738. begin
  8739. GetProcedureAddress(_lstrcmpi, kernel32, 'lstrcmpi' + AWSuffix);
  8740. asm
  8741. MOV ESP, EBP
  8742. POP EBP
  8743. JMP [_lstrcmpi]
  8744. end;
  8745. end;
  8746. var
  8747. _lstrcpynA: Pointer;
  8748. function lstrcpynA;
  8749. begin
  8750. GetProcedureAddress(_lstrcpynA, kernel32, 'lstrcpynA');
  8751. asm
  8752. MOV ESP, EBP
  8753. POP EBP
  8754. JMP [_lstrcpynA]
  8755. end;
  8756. end;
  8757. var
  8758. _lstrcpynW: Pointer;
  8759. function lstrcpynW;
  8760. begin
  8761. GetProcedureAddress(_lstrcpynW, kernel32, 'lstrcpynW');
  8762. asm
  8763. MOV ESP, EBP
  8764. POP EBP
  8765. JMP [_lstrcpynW]
  8766. end;
  8767. end;
  8768. var
  8769. _lstrcpyn: Pointer;
  8770. function lstrcpyn;
  8771. begin
  8772. GetProcedureAddress(_lstrcpyn, kernel32, 'lstrcpyn' + AWSuffix);
  8773. asm
  8774. MOV ESP, EBP
  8775. POP EBP
  8776. JMP [_lstrcpyn]
  8777. end;
  8778. end;
  8779. var
  8780. _lstrcpyA: Pointer;
  8781. function lstrcpyA;
  8782. begin
  8783. GetProcedureAddress(_lstrcpyA, kernel32, 'lstrcpyA');
  8784. asm
  8785. MOV ESP, EBP
  8786. POP EBP
  8787. JMP [_lstrcpyA]
  8788. end;
  8789. end;
  8790. var
  8791. _lstrcpyW: Pointer;
  8792. function lstrcpyW;
  8793. begin
  8794. GetProcedureAddress(_lstrcpyW, kernel32, 'lstrcpyW');
  8795. asm
  8796. MOV ESP, EBP
  8797. POP EBP
  8798. JMP [_lstrcpyW]
  8799. end;
  8800. end;
  8801. var
  8802. _lstrcpy: Pointer;
  8803. function lstrcpy;
  8804. begin
  8805. GetProcedureAddress(_lstrcpy, kernel32, 'lstrcpy' + AWSuffix);
  8806. asm
  8807. MOV ESP, EBP
  8808. POP EBP
  8809. JMP [_lstrcpy]
  8810. end;
  8811. end;
  8812. var
  8813. _lstrcatA: Pointer;
  8814. function lstrcatA;
  8815. begin
  8816. GetProcedureAddress(_lstrcatA, kernel32, 'lstrcatA');
  8817. asm
  8818. MOV ESP, EBP
  8819. POP EBP
  8820. JMP [_lstrcatA]
  8821. end;
  8822. end;
  8823. var
  8824. _lstrcatW: Pointer;
  8825. function lstrcatW;
  8826. begin
  8827. GetProcedureAddress(_lstrcatW, kernel32, 'lstrcatW');
  8828. asm
  8829. MOV ESP, EBP
  8830. POP EBP
  8831. JMP [_lstrcatW]
  8832. end;
  8833. end;
  8834. var
  8835. _lstrcat: Pointer;
  8836. function lstrcat;
  8837. begin
  8838. GetProcedureAddress(_lstrcat, kernel32, 'lstrcat' + AWSuffix);
  8839. asm
  8840. MOV ESP, EBP
  8841. POP EBP
  8842. JMP [_lstrcat]
  8843. end;
  8844. end;
  8845. var
  8846. _lstrlenA: Pointer;
  8847. function lstrlenA;
  8848. begin
  8849. GetProcedureAddress(_lstrlenA, kernel32, 'lstrlenA');
  8850. asm
  8851. MOV ESP, EBP
  8852. POP EBP
  8853. JMP [_lstrlenA]
  8854. end;
  8855. end;
  8856. var
  8857. _lstrlenW: Pointer;
  8858. function lstrlenW;
  8859. begin
  8860. GetProcedureAddress(_lstrlenW, kernel32, 'lstrlenW');
  8861. asm
  8862. MOV ESP, EBP
  8863. POP EBP
  8864. JMP [_lstrlenW]
  8865. end;
  8866. end;
  8867. var
  8868. _lstrlen: Pointer;
  8869. function lstrlen;
  8870. begin
  8871. GetProcedureAddress(_lstrlen, kernel32, 'lstrlen' + AWSuffix);
  8872. asm
  8873. MOV ESP, EBP
  8874. POP EBP
  8875. JMP [_lstrlen]
  8876. end;
  8877. end;
  8878. var
  8879. _OpenFile: Pointer;
  8880. function OpenFile;
  8881. begin
  8882. GetProcedureAddress(_OpenFile, kernel32, 'OpenFile');
  8883. asm
  8884. MOV ESP, EBP
  8885. POP EBP
  8886. JMP [_OpenFile]
  8887. end;
  8888. end;
  8889. var
  8890. __lopen: Pointer;
  8891. function _lopen;
  8892. begin
  8893. GetProcedureAddress(__lopen, kernel32, '_lopen');
  8894. asm
  8895. MOV ESP, EBP
  8896. POP EBP
  8897. JMP [__lopen]
  8898. end;
  8899. end;
  8900. var
  8901. __lcreat: Pointer;
  8902. function _lcreat;
  8903. begin
  8904. GetProcedureAddress(__lcreat, kernel32, '_lcreat');
  8905. asm
  8906. MOV ESP, EBP
  8907. POP EBP
  8908. JMP [__lcreat]
  8909. end;
  8910. end;
  8911. var
  8912. __lread: Pointer;
  8913. function _lread;
  8914. begin
  8915. GetProcedureAddress(__lread, kernel32, '_lread');
  8916. asm
  8917. MOV ESP, EBP
  8918. POP EBP
  8919. JMP [__lread]
  8920. end;
  8921. end;
  8922. var
  8923. __lwrite: Pointer;
  8924. function _lwrite;
  8925. begin
  8926. GetProcedureAddress(__lwrite, kernel32, '_lwrite');
  8927. asm
  8928. MOV ESP, EBP
  8929. POP EBP
  8930. JMP [__lwrite]
  8931. end;
  8932. end;
  8933. var
  8934. __hread: Pointer;
  8935. function _hread;
  8936. begin
  8937. GetProcedureAddress(__hread, kernel32, '_hread');
  8938. asm
  8939. MOV ESP, EBP
  8940. POP EBP
  8941. JMP [__hread]
  8942. end;
  8943. end;
  8944. var
  8945. __hwrite: Pointer;
  8946. function _hwrite;
  8947. begin
  8948. GetProcedureAddress(__hwrite, kernel32, '_hwrite');
  8949. asm
  8950. MOV ESP, EBP
  8951. POP EBP
  8952. JMP [__hwrite]
  8953. end;
  8954. end;
  8955. var
  8956. __lclose: Pointer;
  8957. function _lclose;
  8958. begin
  8959. GetProcedureAddress(__lclose, kernel32, '_lclose');
  8960. asm
  8961. MOV ESP, EBP
  8962. POP EBP
  8963. JMP [__lclose]
  8964. end;
  8965. end;
  8966. var
  8967. __llseek: Pointer;
  8968. function _llseek;
  8969. begin
  8970. GetProcedureAddress(__llseek, kernel32, '_llseek');
  8971. asm
  8972. MOV ESP, EBP
  8973. POP EBP
  8974. JMP [__llseek]
  8975. end;
  8976. end;
  8977. var
  8978. _IsTextUnicode: Pointer;
  8979. function IsTextUnicode;
  8980. begin
  8981. GetProcedureAddress(_IsTextUnicode, advapi32, 'IsTextUnicode');
  8982. asm
  8983. MOV ESP, EBP
  8984. POP EBP
  8985. JMP [_IsTextUnicode]
  8986. end;
  8987. end;
  8988. var
  8989. _FlsAlloc: Pointer;
  8990. function FlsAlloc;
  8991. begin
  8992. GetProcedureAddress(_FlsAlloc, kernel32, 'FlsAlloc');
  8993. asm
  8994. MOV ESP, EBP
  8995. POP EBP
  8996. JMP [_FlsAlloc]
  8997. end;
  8998. end;
  8999. var
  9000. _FlsGetValue: Pointer;
  9001. function FlsGetValue;
  9002. begin
  9003. GetProcedureAddress(_FlsGetValue, kernel32, 'FlsGetValue');
  9004. asm
  9005. MOV ESP, EBP
  9006. POP EBP
  9007. JMP [_FlsGetValue]
  9008. end;
  9009. end;
  9010. var
  9011. _FlsSetValue: Pointer;
  9012. function FlsSetValue;
  9013. begin
  9014. GetProcedureAddress(_FlsSetValue, kernel32, 'FlsSetValue');
  9015. asm
  9016. MOV ESP, EBP
  9017. POP EBP
  9018. JMP [_FlsSetValue]
  9019. end;
  9020. end;
  9021. var
  9022. _FlsFree: Pointer;
  9023. function FlsFree;
  9024. begin
  9025. GetProcedureAddress(_FlsFree, kernel32, 'FlsFree');
  9026. asm
  9027. MOV ESP, EBP
  9028. POP EBP
  9029. JMP [_FlsFree]
  9030. end;
  9031. end;
  9032. var
  9033. _TlsAlloc: Pointer;
  9034. function TlsAlloc;
  9035. begin
  9036. GetProcedureAddress(_TlsAlloc, kernel32, 'TlsAlloc');
  9037. asm
  9038. MOV ESP, EBP
  9039. POP EBP
  9040. JMP [_TlsAlloc]
  9041. end;
  9042. end;
  9043. var
  9044. _TlsGetValue: Pointer;
  9045. function TlsGetValue;
  9046. begin
  9047. GetProcedureAddress(_TlsGetValue, kernel32, 'TlsGetValue');
  9048. asm
  9049. MOV ESP, EBP
  9050. POP EBP
  9051. JMP [_TlsGetValue]
  9052. end;
  9053. end;
  9054. var
  9055. _TlsSetValue: Pointer;
  9056. function TlsSetValue;
  9057. begin
  9058. GetProcedureAddress(_TlsSetValue, kernel32, 'TlsSetValue');
  9059. asm
  9060. MOV ESP, EBP
  9061. POP EBP
  9062. JMP [_TlsSetValue]
  9063. end;
  9064. end;
  9065. var
  9066. _TlsFree: Pointer;
  9067. function TlsFree;
  9068. begin
  9069. GetProcedureAddress(_TlsFree, kernel32, 'TlsFree');
  9070. asm
  9071. MOV ESP, EBP
  9072. POP EBP
  9073. JMP [_TlsFree]
  9074. end;
  9075. end;
  9076. var
  9077. _SleepEx: Pointer;
  9078. function SleepEx;
  9079. begin
  9080. GetProcedureAddress(_SleepEx, kernel32, 'SleepEx');
  9081. asm
  9082. MOV ESP, EBP
  9083. POP EBP
  9084. JMP [_SleepEx]
  9085. end;
  9086. end;
  9087. var
  9088. _WaitForSingleObjectEx: Pointer;
  9089. function WaitForSingleObjectEx;
  9090. begin
  9091. GetProcedureAddress(_WaitForSingleObjectEx, kernel32, 'WaitForSingleObjectEx');
  9092. asm
  9093. MOV ESP, EBP
  9094. POP EBP
  9095. JMP [_WaitForSingleObjectEx]
  9096. end;
  9097. end;
  9098. var
  9099. _WaitForMultipleObjectsEx: Pointer;
  9100. function WaitForMultipleObjectsEx;
  9101. begin
  9102. GetProcedureAddress(_WaitForMultipleObjectsEx, kernel32, 'WaitForMultipleObjectsEx');
  9103. asm
  9104. MOV ESP, EBP
  9105. POP EBP
  9106. JMP [_WaitForMultipleObjectsEx]
  9107. end;
  9108. end;
  9109. var
  9110. _SignalObjectAndWait: Pointer;
  9111. function SignalObjectAndWait;
  9112. begin
  9113. GetProcedureAddress(_SignalObjectAndWait, kernel32, 'SignalObjectAndWait');
  9114. asm
  9115. MOV ESP, EBP
  9116. POP EBP
  9117. JMP [_SignalObjectAndWait]
  9118. end;
  9119. end;
  9120. var
  9121. _ReadFileEx: Pointer;
  9122. function ReadFileEx;
  9123. begin
  9124. GetProcedureAddress(_ReadFileEx, kernel32, 'ReadFileEx');
  9125. asm
  9126. MOV ESP, EBP
  9127. POP EBP
  9128. JMP [_ReadFileEx]
  9129. end;
  9130. end;
  9131. var
  9132. _WriteFileEx: Pointer;
  9133. function WriteFileEx;
  9134. begin
  9135. GetProcedureAddress(_WriteFileEx, kernel32, 'WriteFileEx');
  9136. asm
  9137. MOV ESP, EBP
  9138. POP EBP
  9139. JMP [_WriteFileEx]
  9140. end;
  9141. end;
  9142. var
  9143. _BackupRead: Pointer;
  9144. function BackupRead;
  9145. begin
  9146. GetProcedureAddress(_BackupRead, kernel32, 'BackupRead');
  9147. asm
  9148. MOV ESP, EBP
  9149. POP EBP
  9150. JMP [_BackupRead]
  9151. end;
  9152. end;
  9153. var
  9154. _BackupSeek: Pointer;
  9155. function BackupSeek;
  9156. begin
  9157. GetProcedureAddress(_BackupSeek, kernel32, 'BackupSeek');
  9158. asm
  9159. MOV ESP, EBP
  9160. POP EBP
  9161. JMP [_BackupSeek]
  9162. end;
  9163. end;
  9164. var
  9165. _BackupWrite: Pointer;
  9166. function BackupWrite;
  9167. begin
  9168. GetProcedureAddress(_BackupWrite, kernel32, 'BackupWrite');
  9169. asm
  9170. MOV ESP, EBP
  9171. POP EBP
  9172. JMP [_BackupWrite]
  9173. end;
  9174. end;
  9175. var
  9176. _ReadFileScatter: Pointer;
  9177. function ReadFileScatter;
  9178. begin
  9179. GetProcedureAddress(_ReadFileScatter, kernel32, 'ReadFileScatter');
  9180. asm
  9181. MOV ESP, EBP
  9182. POP EBP
  9183. JMP [_ReadFileScatter]
  9184. end;
  9185. end;
  9186. var
  9187. _WriteFileGather: Pointer;
  9188. function WriteFileGather;
  9189. begin
  9190. GetProcedureAddress(_WriteFileGather, kernel32, 'WriteFileGather');
  9191. asm
  9192. MOV ESP, EBP
  9193. POP EBP
  9194. JMP [_WriteFileGather]
  9195. end;
  9196. end;
  9197. var
  9198. _OpenMutexA: Pointer;
  9199. function OpenMutexA;
  9200. begin
  9201. GetProcedureAddress(_OpenMutexA, kernel32, 'OpenMutexA');
  9202. asm
  9203. MOV ESP, EBP
  9204. POP EBP
  9205. JMP [_OpenMutexA]
  9206. end;
  9207. end;
  9208. var
  9209. _OpenMutexW: Pointer;
  9210. function OpenMutexW;
  9211. begin
  9212. GetProcedureAddress(_OpenMutexW, kernel32, 'OpenMutexW');
  9213. asm
  9214. MOV ESP, EBP
  9215. POP EBP
  9216. JMP [_OpenMutexW]
  9217. end;
  9218. end;
  9219. var
  9220. _OpenMutex: Pointer;
  9221. function OpenMutex;
  9222. begin
  9223. GetProcedureAddress(_OpenMutex, kernel32, 'OpenMutex' + AWSuffix);
  9224. asm
  9225. MOV ESP, EBP
  9226. POP EBP
  9227. JMP [_OpenMutex]
  9228. end;
  9229. end;
  9230. var
  9231. _CreateEventA: Pointer;
  9232. function CreateEventA;
  9233. begin
  9234. GetProcedureAddress(_CreateEventA, kernel32, 'CreateEventA');
  9235. asm
  9236. MOV ESP, EBP
  9237. POP EBP
  9238. JMP [_CreateEventA]
  9239. end;
  9240. end;
  9241. var
  9242. _CreateEventW: Pointer;
  9243. function CreateEventW;
  9244. begin
  9245. GetProcedureAddress(_CreateEventW, kernel32, 'CreateEventW');
  9246. asm
  9247. MOV ESP, EBP
  9248. POP EBP
  9249. JMP [_CreateEventW]
  9250. end;
  9251. end;
  9252. var
  9253. _CreateEvent: Pointer;
  9254. function CreateEvent;
  9255. begin
  9256. GetProcedureAddress(_CreateEvent, kernel32, 'CreateEvent' + AWSuffix);
  9257. asm
  9258. MOV ESP, EBP
  9259. POP EBP
  9260. JMP [_CreateEvent]
  9261. end;
  9262. end;
  9263. var
  9264. _OpenEventA: Pointer;
  9265. function OpenEventA;
  9266. begin
  9267. GetProcedureAddress(_OpenEventA, kernel32, 'OpenEventA');
  9268. asm
  9269. MOV ESP, EBP
  9270. POP EBP
  9271. JMP [_OpenEventA]
  9272. end;
  9273. end;
  9274. var
  9275. _OpenEventW: Pointer;
  9276. function OpenEventW;
  9277. begin
  9278. GetProcedureAddress(_OpenEventW, kernel32, 'OpenEventW');
  9279. asm
  9280. MOV ESP, EBP
  9281. POP EBP
  9282. JMP [_OpenEventW]
  9283. end;
  9284. end;
  9285. var
  9286. _OpenEvent: Pointer;
  9287. function OpenEvent;
  9288. begin
  9289. GetProcedureAddress(_OpenEvent, kernel32, 'OpenEvent' + AWSuffix);
  9290. asm
  9291. MOV ESP, EBP
  9292. POP EBP
  9293. JMP [_OpenEvent]
  9294. end;
  9295. end;
  9296. var
  9297. _CreateSemaphoreA: Pointer;
  9298. function CreateSemaphoreA;
  9299. begin
  9300. GetProcedureAddress(_CreateSemaphoreA, kernel32, 'CreateSemaphoreA');
  9301. asm
  9302. MOV ESP, EBP
  9303. POP EBP
  9304. JMP [_CreateSemaphoreA]
  9305. end;
  9306. end;
  9307. var
  9308. _CreateSemaphoreW: Pointer;
  9309. function CreateSemaphoreW;
  9310. begin
  9311. GetProcedureAddress(_CreateSemaphoreW, kernel32, 'CreateSemaphoreW');
  9312. asm
  9313. MOV ESP, EBP
  9314. POP EBP
  9315. JMP [_CreateSemaphoreW]
  9316. end;
  9317. end;
  9318. var
  9319. _CreateSemaphore: Pointer;
  9320. function CreateSemaphore;
  9321. begin
  9322. GetProcedureAddress(_CreateSemaphore, kernel32, 'CreateSemaphore' + AWSuffix);
  9323. asm
  9324. MOV ESP, EBP
  9325. POP EBP
  9326. JMP [_CreateSemaphore]
  9327. end;
  9328. end;
  9329. var
  9330. _OpenSemaphoreA: Pointer;
  9331. function OpenSemaphoreA;
  9332. begin
  9333. GetProcedureAddress(_OpenSemaphoreA, kernel32, 'OpenSemaphoreA');
  9334. asm
  9335. MOV ESP, EBP
  9336. POP EBP
  9337. JMP [_OpenSemaphoreA]
  9338. end;
  9339. end;
  9340. var
  9341. _OpenSemaphoreW: Pointer;
  9342. function OpenSemaphoreW;
  9343. begin
  9344. GetProcedureAddress(_OpenSemaphoreW, kernel32, 'OpenSemaphoreW');
  9345. asm
  9346. MOV ESP, EBP
  9347. POP EBP
  9348. JMP [_OpenSemaphoreW]
  9349. end;
  9350. end;
  9351. var
  9352. _OpenSemaphore: Pointer;
  9353. function OpenSemaphore;
  9354. begin
  9355. GetProcedureAddress(_OpenSemaphore, kernel32, 'OpenSemaphore' + AWSuffix);
  9356. asm
  9357. MOV ESP, EBP
  9358. POP EBP
  9359. JMP [_OpenSemaphore]
  9360. end;
  9361. end;
  9362. var
  9363. _CreateWaitableTimerA: Pointer;
  9364. function CreateWaitableTimerA;
  9365. begin
  9366. GetProcedureAddress(_CreateWaitableTimerA, kernel32, 'CreateWaitableTimerA');
  9367. asm
  9368. MOV ESP, EBP
  9369. POP EBP
  9370. JMP [_CreateWaitableTimerA]
  9371. end;
  9372. end;
  9373. var
  9374. _CreateWaitableTimerW: Pointer;
  9375. function CreateWaitableTimerW;
  9376. begin
  9377. GetProcedureAddress(_CreateWaitableTimerW, kernel32, 'CreateWaitableTimerW');
  9378. asm
  9379. MOV ESP, EBP
  9380. POP EBP
  9381. JMP [_CreateWaitableTimerW]
  9382. end;
  9383. end;
  9384. var
  9385. _CreateWaitableTimer: Pointer;
  9386. function CreateWaitableTimer;
  9387. begin
  9388. GetProcedureAddress(_CreateWaitableTimer, kernel32, 'CreateWaitableTimer' + AWSuffix);
  9389. asm
  9390. MOV ESP, EBP
  9391. POP EBP
  9392. JMP [_CreateWaitableTimer]
  9393. end;
  9394. end;
  9395. var
  9396. _OpenWaitableTimerA: Pointer;
  9397. function OpenWaitableTimerA;
  9398. begin
  9399. GetProcedureAddress(_OpenWaitableTimerA, kernel32, 'OpenWaitableTimerA');
  9400. asm
  9401. MOV ESP, EBP
  9402. POP EBP
  9403. JMP [_OpenWaitableTimerA]
  9404. end;
  9405. end;
  9406. var
  9407. _OpenWaitableTimerW: Pointer;
  9408. function OpenWaitableTimerW;
  9409. begin
  9410. GetProcedureAddress(_OpenWaitableTimerW, kernel32, 'OpenWaitableTimerW');
  9411. asm
  9412. MOV ESP, EBP
  9413. POP EBP
  9414. JMP [_OpenWaitableTimerW]
  9415. end;
  9416. end;
  9417. var
  9418. _OpenWaitableTimer: Pointer;
  9419. function OpenWaitableTimer;
  9420. begin
  9421. GetProcedureAddress(_OpenWaitableTimer, kernel32, 'OpenWaitableTimer' + AWSuffix);
  9422. asm
  9423. MOV ESP, EBP
  9424. POP EBP
  9425. JMP [_OpenWaitableTimer]
  9426. end;
  9427. end;
  9428. var
  9429. _SetWaitableTimer: Pointer;
  9430. function SetWaitableTimer;
  9431. begin
  9432. GetProcedureAddress(_SetWaitableTimer, kernel32, 'SetWaitableTimer');
  9433. asm
  9434. MOV ESP, EBP
  9435. POP EBP
  9436. JMP [_SetWaitableTimer]
  9437. end;
  9438. end;
  9439. var
  9440. _CancelWaitableTimer: Pointer;
  9441. function CancelWaitableTimer;
  9442. begin
  9443. GetProcedureAddress(_CancelWaitableTimer, kernel32, 'CancelWaitableTimer');
  9444. asm
  9445. MOV ESP, EBP
  9446. POP EBP
  9447. JMP [_CancelWaitableTimer]
  9448. end;
  9449. end;
  9450. var
  9451. _CreateFileMappingA: Pointer;
  9452. function CreateFileMappingA;
  9453. begin
  9454. GetProcedureAddress(_CreateFileMappingA, kernel32, 'CreateFileMappingA');
  9455. asm
  9456. MOV ESP, EBP
  9457. POP EBP
  9458. JMP [_CreateFileMappingA]
  9459. end;
  9460. end;
  9461. var
  9462. _CreateFileMappingW: Pointer;
  9463. function CreateFileMappingW;
  9464. begin
  9465. GetProcedureAddress(_CreateFileMappingW, kernel32, 'CreateFileMappingW');
  9466. asm
  9467. MOV ESP, EBP
  9468. POP EBP
  9469. JMP [_CreateFileMappingW]
  9470. end;
  9471. end;
  9472. var
  9473. _CreateFileMapping: Pointer;
  9474. function CreateFileMapping;
  9475. begin
  9476. GetProcedureAddress(_CreateFileMapping, kernel32, 'CreateFileMapping' + AWSuffix);
  9477. asm
  9478. MOV ESP, EBP
  9479. POP EBP
  9480. JMP [_CreateFileMapping]
  9481. end;
  9482. end;
  9483. var
  9484. _OpenFileMappingA: Pointer;
  9485. function OpenFileMappingA;
  9486. begin
  9487. GetProcedureAddress(_OpenFileMappingA, kernel32, 'OpenFileMappingA');
  9488. asm
  9489. MOV ESP, EBP
  9490. POP EBP
  9491. JMP [_OpenFileMappingA]
  9492. end;
  9493. end;
  9494. var
  9495. _OpenFileMappingW: Pointer;
  9496. function OpenFileMappingW;
  9497. begin
  9498. GetProcedureAddress(_OpenFileMappingW, kernel32, 'OpenFileMappingW');
  9499. asm
  9500. MOV ESP, EBP
  9501. POP EBP
  9502. JMP [_OpenFileMappingW]
  9503. end;
  9504. end;
  9505. var
  9506. _OpenFileMapping: Pointer;
  9507. function OpenFileMapping;
  9508. begin
  9509. GetProcedureAddress(_OpenFileMapping, kernel32, 'OpenFileMapping' + AWSuffix);
  9510. asm
  9511. MOV ESP, EBP
  9512. POP EBP
  9513. JMP [_OpenFileMapping]
  9514. end;
  9515. end;
  9516. var
  9517. _GetLogicalDriveStringsA: Pointer;
  9518. function GetLogicalDriveStringsA;
  9519. begin
  9520. GetProcedureAddress(_GetLogicalDriveStringsA, kernel32, 'GetLogicalDriveStringsA');
  9521. asm
  9522. MOV ESP, EBP
  9523. POP EBP
  9524. JMP [_GetLogicalDriveStringsA]
  9525. end;
  9526. end;
  9527. var
  9528. _GetLogicalDriveStringsW: Pointer;
  9529. function GetLogicalDriveStringsW;
  9530. begin
  9531. GetProcedureAddress(_GetLogicalDriveStringsW, kernel32, 'GetLogicalDriveStringsW');
  9532. asm
  9533. MOV ESP, EBP
  9534. POP EBP
  9535. JMP [_GetLogicalDriveStringsW]
  9536. end;
  9537. end;
  9538. var
  9539. _GetLogicalDriveStrings: Pointer;
  9540. function GetLogicalDriveStrings;
  9541. begin
  9542. GetProcedureAddress(_GetLogicalDriveStrings, kernel32, 'GetLogicalDriveStrings' + AWSuffix);
  9543. asm
  9544. MOV ESP, EBP
  9545. POP EBP
  9546. JMP [_GetLogicalDriveStrings]
  9547. end;
  9548. end;
  9549. var
  9550. _CreateMemResNotification: Pointer;
  9551. function CreateMemoryResourceNotification;
  9552. begin
  9553. GetProcedureAddress(_CreateMemResNotification, kernel32, 'CreateMemoryResourceNotification');
  9554. asm
  9555. MOV ESP, EBP
  9556. POP EBP
  9557. JMP [_CreateMemResNotification]
  9558. end;
  9559. end;
  9560. var
  9561. _QueryMemoryResourceNotification: Pointer;
  9562. function QueryMemoryResourceNotification;
  9563. begin
  9564. GetProcedureAddress(_QueryMemoryResourceNotification, kernel32, 'QueryMemoryResourceNotification');
  9565. asm
  9566. MOV ESP, EBP
  9567. POP EBP
  9568. JMP [_QueryMemoryResourceNotification]
  9569. end;
  9570. end;
  9571. var
  9572. _LoadLibraryA: Pointer;
  9573. function LoadLibraryA;
  9574. begin
  9575. GetProcedureAddress(_LoadLibraryA, kernel32, 'LoadLibraryA');
  9576. asm
  9577. MOV ESP, EBP
  9578. POP EBP
  9579. JMP [_LoadLibraryA]
  9580. end;
  9581. end;
  9582. var
  9583. _LoadLibraryW: Pointer;
  9584. function LoadLibraryW;
  9585. begin
  9586. GetProcedureAddress(_LoadLibraryW, kernel32, 'LoadLibraryW');
  9587. asm
  9588. MOV ESP, EBP
  9589. POP EBP
  9590. JMP [_LoadLibraryW]
  9591. end;
  9592. end;
  9593. var
  9594. _LoadLibrary: Pointer;
  9595. function LoadLibrary;
  9596. begin
  9597. GetProcedureAddress(_LoadLibrary, kernel32, 'LoadLibrary' + AWSuffix);
  9598. asm
  9599. MOV ESP, EBP
  9600. POP EBP
  9601. JMP [_LoadLibrary]
  9602. end;
  9603. end;
  9604. var
  9605. _LoadLibraryExA: Pointer;
  9606. function LoadLibraryExA;
  9607. begin
  9608. GetProcedureAddress(_LoadLibraryExA, kernel32, 'LoadLibraryExA');
  9609. asm
  9610. MOV ESP, EBP
  9611. POP EBP
  9612. JMP [_LoadLibraryExA]
  9613. end;
  9614. end;
  9615. var
  9616. _LoadLibraryExW: Pointer;
  9617. function LoadLibraryExW;
  9618. begin
  9619. GetProcedureAddress(_LoadLibraryExW, kernel32, 'LoadLibraryExW');
  9620. asm
  9621. MOV ESP, EBP
  9622. POP EBP
  9623. JMP [_LoadLibraryExW]
  9624. end;
  9625. end;
  9626. var
  9627. _LoadLibraryEx: Pointer;
  9628. function LoadLibraryEx;
  9629. begin
  9630. GetProcedureAddress(_LoadLibraryEx, kernel32, 'LoadLibraryEx' + AWSuffix);
  9631. asm
  9632. MOV ESP, EBP
  9633. POP EBP
  9634. JMP [_LoadLibraryEx]
  9635. end;
  9636. end;
  9637. var
  9638. _GetModuleFileNameA: Pointer;
  9639. function GetModuleFileNameA;
  9640. begin
  9641. GetProcedureAddress(_GetModuleFileNameA, kernel32, 'GetModuleFileNameA');
  9642. asm
  9643. MOV ESP, EBP
  9644. POP EBP
  9645. JMP [_GetModuleFileNameA]
  9646. end;
  9647. end;
  9648. var
  9649. _GetModuleFileNameW: Pointer;
  9650. function GetModuleFileNameW;
  9651. begin
  9652. GetProcedureAddress(_GetModuleFileNameW, kernel32, 'GetModuleFileNameW');
  9653. asm
  9654. MOV ESP, EBP
  9655. POP EBP
  9656. JMP [_GetModuleFileNameW]
  9657. end;
  9658. end;
  9659. var
  9660. _GetModuleFileName: Pointer;
  9661. function GetModuleFileName;
  9662. begin
  9663. GetProcedureAddress(_GetModuleFileName, kernel32, 'GetModuleFileName' + AWSuffix);
  9664. asm
  9665. MOV ESP, EBP
  9666. POP EBP
  9667. JMP [_GetModuleFileName]
  9668. end;
  9669. end;
  9670. var
  9671. _GetModuleHandleA: Pointer;
  9672. function GetModuleHandleA;
  9673. begin
  9674. GetProcedureAddress(_GetModuleHandleA, kernel32, 'GetModuleHandleA');
  9675. asm
  9676. MOV ESP, EBP
  9677. POP EBP
  9678. JMP [_GetModuleHandleA]
  9679. end;
  9680. end;
  9681. var
  9682. _GetModuleHandleW: Pointer;
  9683. function GetModuleHandleW;
  9684. begin
  9685. GetProcedureAddress(_GetModuleHandleW, kernel32, 'GetModuleHandleW');
  9686. asm
  9687. MOV ESP, EBP
  9688. POP EBP
  9689. JMP [_GetModuleHandleW]
  9690. end;
  9691. end;
  9692. var
  9693. _GetModuleHandle: Pointer;
  9694. function GetModuleHandle;
  9695. begin
  9696. GetProcedureAddress(_GetModuleHandle, kernel32, 'GetModuleHandle' + AWSuffix);
  9697. asm
  9698. MOV ESP, EBP
  9699. POP EBP
  9700. JMP [_GetModuleHandle]
  9701. end;
  9702. end;
  9703. var
  9704. _CreateProcessA: Pointer;
  9705. function CreateProcessA;
  9706. begin
  9707. GetProcedureAddress(_CreateProcessA, kernel32, 'CreateProcessA');
  9708. asm
  9709. MOV ESP, EBP
  9710. POP EBP
  9711. JMP [_CreateProcessA]
  9712. end;
  9713. end;
  9714. var
  9715. _CreateProcessW: Pointer;
  9716. function CreateProcessW;
  9717. begin
  9718. GetProcedureAddress(_CreateProcessW, kernel32, 'CreateProcessW');
  9719. asm
  9720. MOV ESP, EBP
  9721. POP EBP
  9722. JMP [_CreateProcessW]
  9723. end;
  9724. end;
  9725. var
  9726. _CreateProcess: Pointer;
  9727. function CreateProcess;
  9728. begin
  9729. GetProcedureAddress(_CreateProcess, kernel32, 'CreateProcess' + AWSuffix);
  9730. asm
  9731. MOV ESP, EBP
  9732. POP EBP
  9733. JMP [_CreateProcess]
  9734. end;
  9735. end;
  9736. var
  9737. _GetModuleHandleExA: Pointer;
  9738. function GetModuleHandleExA;
  9739. begin
  9740. GetProcedureAddress(_GetModuleHandleExA, kernel32, 'GetModuleHandleExA');
  9741. asm
  9742. MOV ESP, EBP
  9743. POP EBP
  9744. JMP [_GetModuleHandleExA]
  9745. end;
  9746. end;
  9747. var
  9748. _GetModuleHandleExW: Pointer;
  9749. function GetModuleHandleExW;
  9750. begin
  9751. GetProcedureAddress(_GetModuleHandleExW, kernel32, 'GetModuleHandleExW');
  9752. asm
  9753. MOV ESP, EBP
  9754. POP EBP
  9755. JMP [_GetModuleHandleExW]
  9756. end;
  9757. end;
  9758. var
  9759. _GetModuleHandleEx: Pointer;
  9760. function GetModuleHandleEx;
  9761. begin
  9762. GetProcedureAddress(_GetModuleHandleEx, kernel32, 'GetModuleHandleEx' + AWSuffix);
  9763. asm
  9764. MOV ESP, EBP
  9765. POP EBP
  9766. JMP [_GetModuleHandleEx]
  9767. end;
  9768. end;
  9769. var
  9770. _NeedCurrentDirectoryForExePathA: Pointer;
  9771. function NeedCurrentDirectoryForExePathA;
  9772. begin
  9773. GetProcedureAddress(_NeedCurrentDirectoryForExePathA, kernel32, 'NeedCurrentDirectoryForExePathA');
  9774. asm
  9775. MOV ESP, EBP
  9776. POP EBP
  9777. JMP [_NeedCurrentDirectoryForExePathA]
  9778. end;
  9779. end;
  9780. var
  9781. _NeedCurrentDirectoryForExePathW: Pointer;
  9782. function NeedCurrentDirectoryForExePathW;
  9783. begin
  9784. GetProcedureAddress(_NeedCurrentDirectoryForExePathW, kernel32, 'NeedCurrentDirectoryForExePathW');
  9785. asm
  9786. MOV ESP, EBP
  9787. POP EBP
  9788. JMP [_NeedCurrentDirectoryForExePathW]
  9789. end;
  9790. end;
  9791. var
  9792. _NeedCurrentDirectoryForExePath: Pointer;
  9793. function NeedCurrentDirectoryForExePath;
  9794. begin
  9795. GetProcedureAddress(_NeedCurrentDirectoryForExePath, kernel32, 'NeedCurrentDirectoryForExePath' + AWSuffix);
  9796. asm
  9797. MOV ESP, EBP
  9798. POP EBP
  9799. JMP [_NeedCurrentDirectoryForExePath]
  9800. end;
  9801. end;
  9802. var
  9803. _SetProcessShutdownParameters: Pointer;
  9804. function SetProcessShutdownParameters;
  9805. begin
  9806. GetProcedureAddress(_SetProcessShutdownParameters, kernel32, 'SetProcessShutdownParameters');
  9807. asm
  9808. MOV ESP, EBP
  9809. POP EBP
  9810. JMP [_SetProcessShutdownParameters]
  9811. end;
  9812. end;
  9813. var
  9814. _GetProcessShutdownParameters: Pointer;
  9815. function GetProcessShutdownParameters;
  9816. begin
  9817. GetProcedureAddress(_GetProcessShutdownParameters, kernel32, 'GetProcessShutdownParameters');
  9818. asm
  9819. MOV ESP, EBP
  9820. POP EBP
  9821. JMP [_GetProcessShutdownParameters]
  9822. end;
  9823. end;
  9824. var
  9825. _GetProcessVersion: Pointer;
  9826. function GetProcessVersion;
  9827. begin
  9828. GetProcedureAddress(_GetProcessVersion, kernel32, 'GetProcessVersion');
  9829. asm
  9830. MOV ESP, EBP
  9831. POP EBP
  9832. JMP [_GetProcessVersion]
  9833. end;
  9834. end;
  9835. var
  9836. _FatalAppExitA: Pointer;
  9837. procedure FatalAppExitA;
  9838. begin
  9839. GetProcedureAddress(_FatalAppExitA, kernel32, 'FatalAppExitA');
  9840. asm
  9841. MOV ESP, EBP
  9842. POP EBP
  9843. JMP [_FatalAppExitA]
  9844. end;
  9845. end;
  9846. var
  9847. _FatalAppExitW: Pointer;
  9848. procedure FatalAppExitW;
  9849. begin
  9850. GetProcedureAddress(_FatalAppExitW, kernel32, 'FatalAppExitW');
  9851. asm
  9852. MOV ESP, EBP
  9853. POP EBP
  9854. JMP [_FatalAppExitW]
  9855. end;
  9856. end;
  9857. var
  9858. _FatalAppExit: Pointer;
  9859. procedure FatalAppExit;
  9860. begin
  9861. GetProcedureAddress(_FatalAppExit, kernel32, 'FatalAppExit' + AWSuffix);
  9862. asm
  9863. MOV ESP, EBP
  9864. POP EBP
  9865. JMP [_FatalAppExit]
  9866. end;
  9867. end;
  9868. var
  9869. _GetStartupInfoA: Pointer;
  9870. procedure GetStartupInfoA;
  9871. begin
  9872. GetProcedureAddress(_GetStartupInfoA, kernel32, 'GetStartupInfoA');
  9873. asm
  9874. MOV ESP, EBP
  9875. POP EBP
  9876. JMP [_GetStartupInfoA]
  9877. end;
  9878. end;
  9879. var
  9880. _GetStartupInfoW: Pointer;
  9881. procedure GetStartupInfoW;
  9882. begin
  9883. GetProcedureAddress(_GetStartupInfoW, kernel32, 'GetStartupInfoW');
  9884. asm
  9885. MOV ESP, EBP
  9886. POP EBP
  9887. JMP [_GetStartupInfoW]
  9888. end;
  9889. end;
  9890. var
  9891. _GetStartupInfo: Pointer;
  9892. procedure GetStartupInfo;
  9893. begin
  9894. GetProcedureAddress(_GetStartupInfo, kernel32, 'GetStartupInfo' + AWSuffix);
  9895. asm
  9896. MOV ESP, EBP
  9897. POP EBP
  9898. JMP [_GetStartupInfo]
  9899. end;
  9900. end;
  9901. var
  9902. _GetCommandLineA: Pointer;
  9903. function GetCommandLineA;
  9904. begin
  9905. GetProcedureAddress(_GetCommandLineA, kernel32, 'GetCommandLineA');
  9906. asm
  9907. MOV ESP, EBP
  9908. POP EBP
  9909. JMP [_GetCommandLineA]
  9910. end;
  9911. end;
  9912. var
  9913. _GetCommandLineW: Pointer;
  9914. function GetCommandLineW;
  9915. begin
  9916. GetProcedureAddress(_GetCommandLineW, kernel32, 'GetCommandLineW');
  9917. asm
  9918. MOV ESP, EBP
  9919. POP EBP
  9920. JMP [_GetCommandLineW]
  9921. end;
  9922. end;
  9923. var
  9924. _GetCommandLine: Pointer;
  9925. function GetCommandLine;
  9926. begin
  9927. GetProcedureAddress(_GetCommandLine, kernel32, 'GetCommandLine' + AWSuffix);
  9928. asm
  9929. MOV ESP, EBP
  9930. POP EBP
  9931. JMP [_GetCommandLine]
  9932. end;
  9933. end;
  9934. var
  9935. _GetEnvironmentVariableA: Pointer;
  9936. function GetEnvironmentVariableA;
  9937. begin
  9938. GetProcedureAddress(_GetEnvironmentVariableA, kernel32, 'GetEnvironmentVariableA');
  9939. asm
  9940. MOV ESP, EBP
  9941. POP EBP
  9942. JMP [_GetEnvironmentVariableA]
  9943. end;
  9944. end;
  9945. var
  9946. _GetEnvironmentVariableW: Pointer;
  9947. function GetEnvironmentVariableW;
  9948. begin
  9949. GetProcedureAddress(_GetEnvironmentVariableW, kernel32, 'GetEnvironmentVariableW');
  9950. asm
  9951. MOV ESP, EBP
  9952. POP EBP
  9953. JMP [_GetEnvironmentVariableW]
  9954. end;
  9955. end;
  9956. var
  9957. _GetEnvironmentVariable: Pointer;
  9958. function GetEnvironmentVariable;
  9959. begin
  9960. GetProcedureAddress(_GetEnvironmentVariable, kernel32, 'GetEnvironmentVariable' + AWSuffix);
  9961. asm
  9962. MOV ESP, EBP
  9963. POP EBP
  9964. JMP [_GetEnvironmentVariable]
  9965. end;
  9966. end;
  9967. var
  9968. _SetEnvironmentVariableA: Pointer;
  9969. function SetEnvironmentVariableA;
  9970. begin
  9971. GetProcedureAddress(_SetEnvironmentVariableA, kernel32, 'SetEnvironmentVariableA');
  9972. asm
  9973. MOV ESP, EBP
  9974. POP EBP
  9975. JMP [_SetEnvironmentVariableA]
  9976. end;
  9977. end;
  9978. var
  9979. _SetEnvironmentVariableW: Pointer;
  9980. function SetEnvironmentVariableW;
  9981. begin
  9982. GetProcedureAddress(_SetEnvironmentVariableW, kernel32, 'SetEnvironmentVariableW');
  9983. asm
  9984. MOV ESP, EBP
  9985. POP EBP
  9986. JMP [_SetEnvironmentVariableW]
  9987. end;
  9988. end;
  9989. var
  9990. _SetEnvironmentVariable: Pointer;
  9991. function SetEnvironmentVariable;
  9992. begin
  9993. GetProcedureAddress(_SetEnvironmentVariable, kernel32, 'SetEnvironmentVariable' + AWSuffix);
  9994. asm
  9995. MOV ESP, EBP
  9996. POP EBP
  9997. JMP [_SetEnvironmentVariable]
  9998. end;
  9999. end;
  10000. var
  10001. _ExpandEnvironmentStringsA: Pointer;
  10002. function ExpandEnvironmentStringsA;
  10003. begin
  10004. GetProcedureAddress(_ExpandEnvironmentStringsA, kernel32, 'ExpandEnvironmentStringsA');
  10005. asm
  10006. MOV ESP, EBP
  10007. POP EBP
  10008. JMP [_ExpandEnvironmentStringsA]
  10009. end;
  10010. end;
  10011. var
  10012. _ExpandEnvironmentStringsW: Pointer;
  10013. function ExpandEnvironmentStringsW;
  10014. begin
  10015. GetProcedureAddress(_ExpandEnvironmentStringsW, kernel32, 'ExpandEnvironmentStringsW');
  10016. asm
  10017. MOV ESP, EBP
  10018. POP EBP
  10019. JMP [_ExpandEnvironmentStringsW]
  10020. end;
  10021. end;
  10022. var
  10023. _ExpandEnvironmentStrings: Pointer;
  10024. function ExpandEnvironmentStrings;
  10025. begin
  10026. GetProcedureAddress(_ExpandEnvironmentStrings, kernel32, 'ExpandEnvironmentStrings' + AWSuffix);
  10027. asm
  10028. MOV ESP, EBP
  10029. POP EBP
  10030. JMP [_ExpandEnvironmentStrings]
  10031. end;
  10032. end;
  10033. var
  10034. _GetFirmwareEnvironmentVariableA: Pointer;
  10035. function GetFirmwareEnvironmentVariableA;
  10036. begin
  10037. GetProcedureAddress(_GetFirmwareEnvironmentVariableA, kernel32, 'GetFirmwareEnvironmentVariableA');
  10038. asm
  10039. MOV ESP, EBP
  10040. POP EBP
  10041. JMP [_GetFirmwareEnvironmentVariableA]
  10042. end;
  10043. end;
  10044. var
  10045. _GetFirmwareEnvironmentVariableW: Pointer;
  10046. function GetFirmwareEnvironmentVariableW;
  10047. begin
  10048. GetProcedureAddress(_GetFirmwareEnvironmentVariableW, kernel32, 'GetFirmwareEnvironmentVariableW');
  10049. asm
  10050. MOV ESP, EBP
  10051. POP EBP
  10052. JMP [_GetFirmwareEnvironmentVariableW]
  10053. end;
  10054. end;
  10055. var
  10056. _GetFirmwareEnvironmentVariable: Pointer;
  10057. function GetFirmwareEnvironmentVariable;
  10058. begin
  10059. GetProcedureAddress(_GetFirmwareEnvironmentVariable, kernel32, 'GetFirmwareEnvironmentVariable' + AWSuffix);
  10060. asm
  10061. MOV ESP, EBP
  10062. POP EBP
  10063. JMP [_GetFirmwareEnvironmentVariable]
  10064. end;
  10065. end;
  10066. var
  10067. _SetFirmwareEnvironmentVariableA: Pointer;
  10068. function SetFirmwareEnvironmentVariableA;
  10069. begin
  10070. GetProcedureAddress(_SetFirmwareEnvironmentVariableA, kernel32, 'SetFirmwareEnvironmentVariableA');
  10071. asm
  10072. MOV ESP, EBP
  10073. POP EBP
  10074. JMP [_SetFirmwareEnvironmentVariableA]
  10075. end;
  10076. end;
  10077. var
  10078. _SetFirmwareEnvironmentVariableW: Pointer;
  10079. function SetFirmwareEnvironmentVariableW;
  10080. begin
  10081. GetProcedureAddress(_SetFirmwareEnvironmentVariableW, kernel32, 'SetFirmwareEnvironmentVariableW');
  10082. asm
  10083. MOV ESP, EBP
  10084. POP EBP
  10085. JMP [_SetFirmwareEnvironmentVariableW]
  10086. end;
  10087. end;
  10088. var
  10089. _SetFirmwareEnvironmentVariable: Pointer;
  10090. function SetFirmwareEnvironmentVariable;
  10091. begin
  10092. GetProcedureAddress(_SetFirmwareEnvironmentVariable, kernel32, 'SetFirmwareEnvironmentVariable' + AWSuffix);
  10093. asm
  10094. MOV ESP, EBP
  10095. POP EBP
  10096. JMP [_SetFirmwareEnvironmentVariable]
  10097. end;
  10098. end;
  10099. var
  10100. _OutputDebugStringA: Pointer;
  10101. procedure OutputDebugStringA;
  10102. begin
  10103. GetProcedureAddress(_OutputDebugStringA, kernel32, 'OutputDebugStringA');
  10104. asm
  10105. MOV ESP, EBP
  10106. POP EBP
  10107. JMP [_OutputDebugStringA]
  10108. end;
  10109. end;
  10110. var
  10111. _OutputDebugStringW: Pointer;
  10112. procedure OutputDebugStringW;
  10113. begin
  10114. GetProcedureAddress(_OutputDebugStringW, kernel32, 'OutputDebugStringW');
  10115. asm
  10116. MOV ESP, EBP
  10117. POP EBP
  10118. JMP [_OutputDebugStringW]
  10119. end;
  10120. end;
  10121. var
  10122. _OutputDebugString: Pointer;
  10123. procedure OutputDebugString;
  10124. begin
  10125. GetProcedureAddress(_OutputDebugString, kernel32, 'OutputDebugString' + AWSuffix);
  10126. asm
  10127. MOV ESP, EBP
  10128. POP EBP
  10129. JMP [_OutputDebugString]
  10130. end;
  10131. end;
  10132. var
  10133. _FindResourceA: Pointer;
  10134. function FindResourceA;
  10135. begin
  10136. GetProcedureAddress(_FindResourceA, kernel32, 'FindResourceA');
  10137. asm
  10138. MOV ESP, EBP
  10139. POP EBP
  10140. JMP [_FindResourceA]
  10141. end;
  10142. end;
  10143. var
  10144. _FindResourceW: Pointer;
  10145. function FindResourceW;
  10146. begin
  10147. GetProcedureAddress(_FindResourceW, kernel32, 'FindResourceW');
  10148. asm
  10149. MOV ESP, EBP
  10150. POP EBP
  10151. JMP [_FindResourceW]
  10152. end;
  10153. end;
  10154. var
  10155. _FindResource: Pointer;
  10156. function FindResource;
  10157. begin
  10158. GetProcedureAddress(_FindResource, kernel32, 'FindResource' + AWSuffix);
  10159. asm
  10160. MOV ESP, EBP
  10161. POP EBP
  10162. JMP [_FindResource]
  10163. end;
  10164. end;
  10165. var
  10166. _FindResourceExA: Pointer;
  10167. function FindResourceExA;
  10168. begin
  10169. GetProcedureAddress(_FindResourceExA, kernel32, 'FindResourceExA');
  10170. asm
  10171. MOV ESP, EBP
  10172. POP EBP
  10173. JMP [_FindResourceExA]
  10174. end;
  10175. end;
  10176. var
  10177. _FindResourceExW: Pointer;
  10178. function FindResourceExW;
  10179. begin
  10180. GetProcedureAddress(_FindResourceExW, kernel32, 'FindResourceExW');
  10181. asm
  10182. MOV ESP, EBP
  10183. POP EBP
  10184. JMP [_FindResourceExW]
  10185. end;
  10186. end;
  10187. var
  10188. _FindResourceEx: Pointer;
  10189. function FindResourceEx;
  10190. begin
  10191. GetProcedureAddress(_FindResourceEx, kernel32, 'FindResourceEx' + AWSuffix);
  10192. asm
  10193. MOV ESP, EBP
  10194. POP EBP
  10195. JMP [_FindResourceEx]
  10196. end;
  10197. end;
  10198. var
  10199. _EnumResourceTypesA: Pointer;
  10200. function EnumResourceTypesA;
  10201. begin
  10202. GetProcedureAddress(_EnumResourceTypesA, kernel32, 'EnumResourceTypesA');
  10203. asm
  10204. MOV ESP, EBP
  10205. POP EBP
  10206. JMP [_EnumResourceTypesA]
  10207. end;
  10208. end;
  10209. var
  10210. _EnumResourceTypesW: Pointer;
  10211. function EnumResourceTypesW;
  10212. begin
  10213. GetProcedureAddress(_EnumResourceTypesW, kernel32, 'EnumResourceTypesW');
  10214. asm
  10215. MOV ESP, EBP
  10216. POP EBP
  10217. JMP [_EnumResourceTypesW]
  10218. end;
  10219. end;
  10220. var
  10221. _EnumResourceTypes: Pointer;
  10222. function EnumResourceTypes;
  10223. begin
  10224. GetProcedureAddress(_EnumResourceTypes, kernel32, 'EnumResourceTypes' + AWSuffix);
  10225. asm
  10226. MOV ESP, EBP
  10227. POP EBP
  10228. JMP [_EnumResourceTypes]
  10229. end;
  10230. end;
  10231. var
  10232. _EnumResourceNamesA: Pointer;
  10233. function EnumResourceNamesA;
  10234. begin
  10235. GetProcedureAddress(_EnumResourceNamesA, kernel32, 'EnumResourceNamesA');
  10236. asm
  10237. MOV ESP, EBP
  10238. POP EBP
  10239. JMP [_EnumResourceNamesA]
  10240. end;
  10241. end;
  10242. var
  10243. _EnumResourceNamesW: Pointer;
  10244. function EnumResourceNamesW;
  10245. begin
  10246. GetProcedureAddress(_EnumResourceNamesW, kernel32, 'EnumResourceNamesW');
  10247. asm
  10248. MOV ESP, EBP
  10249. POP EBP
  10250. JMP [_EnumResourceNamesW]
  10251. end;
  10252. end;
  10253. var
  10254. _EnumResourceNames: Pointer;
  10255. function EnumResourceNames;
  10256. begin
  10257. GetProcedureAddress(_EnumResourceNames, kernel32, 'EnumResourceNames' + AWSuffix);
  10258. asm
  10259. MOV ESP, EBP
  10260. POP EBP
  10261. JMP [_EnumResourceNames]
  10262. end;
  10263. end;
  10264. var
  10265. _EnumResourceLanguagesA: Pointer;
  10266. function EnumResourceLanguagesA;
  10267. begin
  10268. GetProcedureAddress(_EnumResourceLanguagesA, kernel32, 'EnumResourceLanguagesA');
  10269. asm
  10270. MOV ESP, EBP
  10271. POP EBP
  10272. JMP [_EnumResourceLanguagesA]
  10273. end;
  10274. end;
  10275. var
  10276. _EnumResourceLanguagesW: Pointer;
  10277. function EnumResourceLanguagesW;
  10278. begin
  10279. GetProcedureAddress(_EnumResourceLanguagesW, kernel32, 'EnumResourceLanguagesW');
  10280. asm
  10281. MOV ESP, EBP
  10282. POP EBP
  10283. JMP [_EnumResourceLanguagesW]
  10284. end;
  10285. end;
  10286. var
  10287. _EnumResourceLanguages: Pointer;
  10288. function EnumResourceLanguages;
  10289. begin
  10290. GetProcedureAddress(_EnumResourceLanguages, kernel32, 'EnumResourceLanguages' + AWSuffix);
  10291. asm
  10292. MOV ESP, EBP
  10293. POP EBP
  10294. JMP [_EnumResourceLanguages]
  10295. end;
  10296. end;
  10297. var
  10298. _BeginUpdateResourceA: Pointer;
  10299. function BeginUpdateResourceA;
  10300. begin
  10301. GetProcedureAddress(_BeginUpdateResourceA, kernel32, 'BeginUpdateResourceA');
  10302. asm
  10303. MOV ESP, EBP
  10304. POP EBP
  10305. JMP [_BeginUpdateResourceA]
  10306. end;
  10307. end;
  10308. var
  10309. _BeginUpdateResourceW: Pointer;
  10310. function BeginUpdateResourceW;
  10311. begin
  10312. GetProcedureAddress(_BeginUpdateResourceW, kernel32, 'BeginUpdateResourceW');
  10313. asm
  10314. MOV ESP, EBP
  10315. POP EBP
  10316. JMP [_BeginUpdateResourceW]
  10317. end;
  10318. end;
  10319. var
  10320. _BeginUpdateResource: Pointer;
  10321. function BeginUpdateResource;
  10322. begin
  10323. GetProcedureAddress(_BeginUpdateResource, kernel32, 'BeginUpdateResource' + AWSuffix);
  10324. asm
  10325. MOV ESP, EBP
  10326. POP EBP
  10327. JMP [_BeginUpdateResource]
  10328. end;
  10329. end;
  10330. var
  10331. _UpdateResourceA: Pointer;
  10332. function UpdateResourceA;
  10333. begin
  10334. GetProcedureAddress(_UpdateResourceA, kernel32, 'UpdateResourceA');
  10335. asm
  10336. MOV ESP, EBP
  10337. POP EBP
  10338. JMP [_UpdateResourceA]
  10339. end;
  10340. end;
  10341. var
  10342. _UpdateResourceW: Pointer;
  10343. function UpdateResourceW;
  10344. begin
  10345. GetProcedureAddress(_UpdateResourceW, kernel32, 'UpdateResourceW');
  10346. asm
  10347. MOV ESP, EBP
  10348. POP EBP
  10349. JMP [_UpdateResourceW]
  10350. end;
  10351. end;
  10352. var
  10353. _UpdateResource: Pointer;
  10354. function UpdateResource;
  10355. begin
  10356. GetProcedureAddress(_UpdateResource, kernel32, 'UpdateResource' + AWSuffix);
  10357. asm
  10358. MOV ESP, EBP
  10359. POP EBP
  10360. JMP [_UpdateResource]
  10361. end;
  10362. end;
  10363. var
  10364. _EndUpdateResourceA: Pointer;
  10365. function EndUpdateResourceA;
  10366. begin
  10367. GetProcedureAddress(_EndUpdateResourceA, kernel32, 'EndUpdateResourceA');
  10368. asm
  10369. MOV ESP, EBP
  10370. POP EBP
  10371. JMP [_EndUpdateResourceA]
  10372. end;
  10373. end;
  10374. var
  10375. _EndUpdateResourceW: Pointer;
  10376. function EndUpdateResourceW;
  10377. begin
  10378. GetProcedureAddress(_EndUpdateResourceW, kernel32, 'EndUpdateResourceW');
  10379. asm
  10380. MOV ESP, EBP
  10381. POP EBP
  10382. JMP [_EndUpdateResourceW]
  10383. end;
  10384. end;
  10385. var
  10386. _EndUpdateResource: Pointer;
  10387. function EndUpdateResource;
  10388. begin
  10389. GetProcedureAddress(_EndUpdateResource, kernel32, 'EndUpdateResource' + AWSuffix);
  10390. asm
  10391. MOV ESP, EBP
  10392. POP EBP
  10393. JMP [_EndUpdateResource]
  10394. end;
  10395. end;
  10396. var
  10397. _GlobalAddAtomA: Pointer;
  10398. function GlobalAddAtomA;
  10399. begin
  10400. GetProcedureAddress(_GlobalAddAtomA, kernel32, 'GlobalAddAtomA');
  10401. asm
  10402. MOV ESP, EBP
  10403. POP EBP
  10404. JMP [_GlobalAddAtomA]
  10405. end;
  10406. end;
  10407. var
  10408. _GlobalAddAtomW: Pointer;
  10409. function GlobalAddAtomW;
  10410. begin
  10411. GetProcedureAddress(_GlobalAddAtomW, kernel32, 'GlobalAddAtomW');
  10412. asm
  10413. MOV ESP, EBP
  10414. POP EBP
  10415. JMP [_GlobalAddAtomW]
  10416. end;
  10417. end;
  10418. var
  10419. _GlobalAddAtom: Pointer;
  10420. function GlobalAddAtom;
  10421. begin
  10422. GetProcedureAddress(_GlobalAddAtom, kernel32, 'GlobalAddAtom' + AWSuffix);
  10423. asm
  10424. MOV ESP, EBP
  10425. POP EBP
  10426. JMP [_GlobalAddAtom]
  10427. end;
  10428. end;
  10429. var
  10430. _GlobalFindAtomA: Pointer;
  10431. function GlobalFindAtomA;
  10432. begin
  10433. GetProcedureAddress(_GlobalFindAtomA, kernel32, 'GlobalFindAtomA');
  10434. asm
  10435. MOV ESP, EBP
  10436. POP EBP
  10437. JMP [_GlobalFindAtomA]
  10438. end;
  10439. end;
  10440. var
  10441. _GlobalFindAtomW: Pointer;
  10442. function GlobalFindAtomW;
  10443. begin
  10444. GetProcedureAddress(_GlobalFindAtomW, kernel32, 'GlobalFindAtomW');
  10445. asm
  10446. MOV ESP, EBP
  10447. POP EBP
  10448. JMP [_GlobalFindAtomW]
  10449. end;
  10450. end;
  10451. var
  10452. _GlobalFindAtom: Pointer;
  10453. function GlobalFindAtom;
  10454. begin
  10455. GetProcedureAddress(_GlobalFindAtom, kernel32, 'GlobalFindAtom' + AWSuffix);
  10456. asm
  10457. MOV ESP, EBP
  10458. POP EBP
  10459. JMP [_GlobalFindAtom]
  10460. end;
  10461. end;
  10462. var
  10463. _GlobalGetAtomNameA: Pointer;
  10464. function GlobalGetAtomNameA;
  10465. begin
  10466. GetProcedureAddress(_GlobalGetAtomNameA, kernel32, 'GlobalGetAtomNameA');
  10467. asm
  10468. MOV ESP, EBP
  10469. POP EBP
  10470. JMP [_GlobalGetAtomNameA]
  10471. end;
  10472. end;
  10473. var
  10474. _GlobalGetAtomNameW: Pointer;
  10475. function GlobalGetAtomNameW;
  10476. begin
  10477. GetProcedureAddress(_GlobalGetAtomNameW, kernel32, 'GlobalGetAtomNameW');
  10478. asm
  10479. MOV ESP, EBP
  10480. POP EBP
  10481. JMP [_GlobalGetAtomNameW]
  10482. end;
  10483. end;
  10484. var
  10485. _GlobalGetAtomName: Pointer;
  10486. function GlobalGetAtomName;
  10487. begin
  10488. GetProcedureAddress(_GlobalGetAtomName, kernel32, 'GlobalGetAtomName' + AWSuffix);
  10489. asm
  10490. MOV ESP, EBP
  10491. POP EBP
  10492. JMP [_GlobalGetAtomName]
  10493. end;
  10494. end;
  10495. var
  10496. _AddAtomA: Pointer;
  10497. function AddAtomA;
  10498. begin
  10499. GetProcedureAddress(_AddAtomA, kernel32, 'AddAtomA');
  10500. asm
  10501. MOV ESP, EBP
  10502. POP EBP
  10503. JMP [_AddAtomA]
  10504. end;
  10505. end;
  10506. var
  10507. _AddAtomW: Pointer;
  10508. function AddAtomW;
  10509. begin
  10510. GetProcedureAddress(_AddAtomW, kernel32, 'AddAtomW');
  10511. asm
  10512. MOV ESP, EBP
  10513. POP EBP
  10514. JMP [_AddAtomW]
  10515. end;
  10516. end;
  10517. var
  10518. _AddAtom: Pointer;
  10519. function AddAtom;
  10520. begin
  10521. GetProcedureAddress(_AddAtom, kernel32, 'AddAtom' + AWSuffix);
  10522. asm
  10523. MOV ESP, EBP
  10524. POP EBP
  10525. JMP [_AddAtom]
  10526. end;
  10527. end;
  10528. var
  10529. _FindAtomA: Pointer;
  10530. function FindAtomA;
  10531. begin
  10532. GetProcedureAddress(_FindAtomA, kernel32, 'FindAtomA');
  10533. asm
  10534. MOV ESP, EBP
  10535. POP EBP
  10536. JMP [_FindAtomA]
  10537. end;
  10538. end;
  10539. var
  10540. _FindAtomW: Pointer;
  10541. function FindAtomW;
  10542. begin
  10543. GetProcedureAddress(_FindAtomW, kernel32, 'FindAtomW');
  10544. asm
  10545. MOV ESP, EBP
  10546. POP EBP
  10547. JMP [_FindAtomW]
  10548. end;
  10549. end;
  10550. var
  10551. _FindAtom: Pointer;
  10552. function FindAtom;
  10553. begin
  10554. GetProcedureAddress(_FindAtom, kernel32, 'FindAtom' + AWSuffix);
  10555. asm
  10556. MOV ESP, EBP
  10557. POP EBP
  10558. JMP [_FindAtom]
  10559. end;
  10560. end;
  10561. var
  10562. _GetAtomNameA: Pointer;
  10563. function GetAtomNameA;
  10564. begin
  10565. GetProcedureAddress(_GetAtomNameA, kernel32, 'GetAtomNameA');
  10566. asm
  10567. MOV ESP, EBP
  10568. POP EBP
  10569. JMP [_GetAtomNameA]
  10570. end;
  10571. end;
  10572. var
  10573. _GetAtomNameW: Pointer;
  10574. function GetAtomNameW;
  10575. begin
  10576. GetProcedureAddress(_GetAtomNameW, kernel32, 'GetAtomNameW');
  10577. asm
  10578. MOV ESP, EBP
  10579. POP EBP
  10580. JMP [_GetAtomNameW]
  10581. end;
  10582. end;
  10583. var
  10584. _GetAtomName: Pointer;
  10585. function GetAtomName;
  10586. begin
  10587. GetProcedureAddress(_GetAtomName, kernel32, 'GetAtomName' + AWSuffix);
  10588. asm
  10589. MOV ESP, EBP
  10590. POP EBP
  10591. JMP [_GetAtomName]
  10592. end;
  10593. end;
  10594. var
  10595. _GetProfileIntA: Pointer;
  10596. function GetProfileIntA;
  10597. begin
  10598. GetProcedureAddress(_GetProfileIntA, kernel32, 'GetProfileIntA');
  10599. asm
  10600. MOV ESP, EBP
  10601. POP EBP
  10602. JMP [_GetProfileIntA]
  10603. end;
  10604. end;
  10605. var
  10606. _GetProfileIntW: Pointer;
  10607. function GetProfileIntW;
  10608. begin
  10609. GetProcedureAddress(_GetProfileIntW, kernel32, 'GetProfileIntW');
  10610. asm
  10611. MOV ESP, EBP
  10612. POP EBP
  10613. JMP [_GetProfileIntW]
  10614. end;
  10615. end;
  10616. var
  10617. _GetProfileInt: Pointer;
  10618. function GetProfileInt;
  10619. begin
  10620. GetProcedureAddress(_GetProfileInt, kernel32, 'GetProfileInt' + AWSuffix);
  10621. asm
  10622. MOV ESP, EBP
  10623. POP EBP
  10624. JMP [_GetProfileInt]
  10625. end;
  10626. end;
  10627. var
  10628. _GetProfileStringA: Pointer;
  10629. function GetProfileStringA;
  10630. begin
  10631. GetProcedureAddress(_GetProfileStringA, kernel32, 'GetProfileStringA');
  10632. asm
  10633. MOV ESP, EBP
  10634. POP EBP
  10635. JMP [_GetProfileStringA]
  10636. end;
  10637. end;
  10638. var
  10639. _GetProfileStringW: Pointer;
  10640. function GetProfileStringW;
  10641. begin
  10642. GetProcedureAddress(_GetProfileStringW, kernel32, 'GetProfileStringW');
  10643. asm
  10644. MOV ESP, EBP
  10645. POP EBP
  10646. JMP [_GetProfileStringW]
  10647. end;
  10648. end;
  10649. var
  10650. _GetProfileString: Pointer;
  10651. function GetProfileString;
  10652. begin
  10653. GetProcedureAddress(_GetProfileString, kernel32, 'GetProfileString' + AWSuffix);
  10654. asm
  10655. MOV ESP, EBP
  10656. POP EBP
  10657. JMP [_GetProfileString]
  10658. end;
  10659. end;
  10660. var
  10661. _WriteProfileStringA: Pointer;
  10662. function WriteProfileStringA;
  10663. begin
  10664. GetProcedureAddress(_WriteProfileStringA, kernel32, 'WriteProfileStringA');
  10665. asm
  10666. MOV ESP, EBP
  10667. POP EBP
  10668. JMP [_WriteProfileStringA]
  10669. end;
  10670. end;
  10671. var
  10672. _WriteProfileStringW: Pointer;
  10673. function WriteProfileStringW;
  10674. begin
  10675. GetProcedureAddress(_WriteProfileStringW, kernel32, 'WriteProfileStringW');
  10676. asm
  10677. MOV ESP, EBP
  10678. POP EBP
  10679. JMP [_WriteProfileStringW]
  10680. end;
  10681. end;
  10682. var
  10683. _WriteProfileString: Pointer;
  10684. function WriteProfileString;
  10685. begin
  10686. GetProcedureAddress(_WriteProfileString, kernel32, 'WriteProfileString' + AWSuffix);
  10687. asm
  10688. MOV ESP, EBP
  10689. POP EBP
  10690. JMP [_WriteProfileString]
  10691. end;
  10692. end;
  10693. var
  10694. _GetProfileSectionA: Pointer;
  10695. function GetProfileSectionA;
  10696. begin
  10697. GetProcedureAddress(_GetProfileSectionA, kernel32, 'GetProfileSectionA');
  10698. asm
  10699. MOV ESP, EBP
  10700. POP EBP
  10701. JMP [_GetProfileSectionA]
  10702. end;
  10703. end;
  10704. var
  10705. _GetProfileSectionW: Pointer;
  10706. function GetProfileSectionW;
  10707. begin
  10708. GetProcedureAddress(_GetProfileSectionW, kernel32, 'GetProfileSectionW');
  10709. asm
  10710. MOV ESP, EBP
  10711. POP EBP
  10712. JMP [_GetProfileSectionW]
  10713. end;
  10714. end;
  10715. var
  10716. _GetProfileSection: Pointer;
  10717. function GetProfileSection;
  10718. begin
  10719. GetProcedureAddress(_GetProfileSection, kernel32, 'GetProfileSection' + AWSuffix);
  10720. asm
  10721. MOV ESP, EBP
  10722. POP EBP
  10723. JMP [_GetProfileSection]
  10724. end;
  10725. end;
  10726. var
  10727. _WriteProfileSectionA: Pointer;
  10728. function WriteProfileSectionA;
  10729. begin
  10730. GetProcedureAddress(_WriteProfileSectionA, kernel32, 'WriteProfileSectionA');
  10731. asm
  10732. MOV ESP, EBP
  10733. POP EBP
  10734. JMP [_WriteProfileSectionA]
  10735. end;
  10736. end;
  10737. var
  10738. _WriteProfileSectionW: Pointer;
  10739. function WriteProfileSectionW;
  10740. begin
  10741. GetProcedureAddress(_WriteProfileSectionW, kernel32, 'WriteProfileSectionW');
  10742. asm
  10743. MOV ESP, EBP
  10744. POP EBP
  10745. JMP [_WriteProfileSectionW]
  10746. end;
  10747. end;
  10748. var
  10749. _WriteProfileSection: Pointer;
  10750. function WriteProfileSection;
  10751. begin
  10752. GetProcedureAddress(_WriteProfileSection, kernel32, 'WriteProfileSection' + AWSuffix);
  10753. asm
  10754. MOV ESP, EBP
  10755. POP EBP
  10756. JMP [_WriteProfileSection]
  10757. end;
  10758. end;
  10759. var
  10760. _GetPrivateProfileIntA: Pointer;
  10761. function GetPrivateProfileIntA;
  10762. begin
  10763. GetProcedureAddress(_GetPrivateProfileIntA, kernel32, 'GetPrivateProfileIntA');
  10764. asm
  10765. MOV ESP, EBP
  10766. POP EBP
  10767. JMP [_GetPrivateProfileIntA]
  10768. end;
  10769. end;
  10770. var
  10771. _GetPrivateProfileIntW: Pointer;
  10772. function GetPrivateProfileIntW;
  10773. begin
  10774. GetProcedureAddress(_GetPrivateProfileIntW, kernel32, 'GetPrivateProfileIntW');
  10775. asm
  10776. MOV ESP, EBP
  10777. POP EBP
  10778. JMP [_GetPrivateProfileIntW]
  10779. end;
  10780. end;
  10781. var
  10782. _GetPrivateProfileInt: Pointer;
  10783. function GetPrivateProfileInt;
  10784. begin
  10785. GetProcedureAddress(_GetPrivateProfileInt, kernel32, 'GetPrivateProfileInt' + AWSuffix);
  10786. asm
  10787. MOV ESP, EBP
  10788. POP EBP
  10789. JMP [_GetPrivateProfileInt]
  10790. end;
  10791. end;
  10792. var
  10793. _GetPrivateProfileStringA: Pointer;
  10794. function GetPrivateProfileStringA;
  10795. begin
  10796. GetProcedureAddress(_GetPrivateProfileStringA, kernel32, 'GetPrivateProfileStringA');
  10797. asm
  10798. MOV ESP, EBP
  10799. POP EBP
  10800. JMP [_GetPrivateProfileStringA]
  10801. end;
  10802. end;
  10803. var
  10804. _GetPrivateProfileStringW: Pointer;
  10805. function GetPrivateProfileStringW;
  10806. begin
  10807. GetProcedureAddress(_GetPrivateProfileStringW, kernel32, 'GetPrivateProfileStringW');
  10808. asm
  10809. MOV ESP, EBP
  10810. POP EBP
  10811. JMP [_GetPrivateProfileStringW]
  10812. end;
  10813. end;
  10814. var
  10815. _GetPrivateProfileString: Pointer;
  10816. function GetPrivateProfileString;
  10817. begin
  10818. GetProcedureAddress(_GetPrivateProfileString, kernel32, 'GetPrivateProfileString' + AWSuffix);
  10819. asm
  10820. MOV ESP, EBP
  10821. POP EBP
  10822. JMP [_GetPrivateProfileString]
  10823. end;
  10824. end;
  10825. var
  10826. _WritePrivateProfileStringA: Pointer;
  10827. function WritePrivateProfileStringA;
  10828. begin
  10829. GetProcedureAddress(_WritePrivateProfileStringA, kernel32, 'WritePrivateProfileStringA');
  10830. asm
  10831. MOV ESP, EBP
  10832. POP EBP
  10833. JMP [_WritePrivateProfileStringA]
  10834. end;
  10835. end;
  10836. var
  10837. _WritePrivateProfileStringW: Pointer;
  10838. function WritePrivateProfileStringW;
  10839. begin
  10840. GetProcedureAddress(_WritePrivateProfileStringW, kernel32, 'WritePrivateProfileStringW');
  10841. asm
  10842. MOV ESP, EBP
  10843. POP EBP
  10844. JMP [_WritePrivateProfileStringW]
  10845. end;
  10846. end;
  10847. var
  10848. _WritePrivateProfileString: Pointer;
  10849. function WritePrivateProfileString;
  10850. begin
  10851. GetProcedureAddress(_WritePrivateProfileString, kernel32, 'WritePrivateProfileString' + AWSuffix);
  10852. asm
  10853. MOV ESP, EBP
  10854. POP EBP
  10855. JMP [_WritePrivateProfileString]
  10856. end;
  10857. end;
  10858. var
  10859. _GetPrivateProfileSectionA: Pointer;
  10860. function GetPrivateProfileSectionA;
  10861. begin
  10862. GetProcedureAddress(_GetPrivateProfileSectionA, kernel32, 'GetPrivateProfileSectionA');
  10863. asm
  10864. MOV ESP, EBP
  10865. POP EBP
  10866. JMP [_GetPrivateProfileSectionA]
  10867. end;
  10868. end;
  10869. var
  10870. _GetPrivateProfileSectionW: Pointer;
  10871. function GetPrivateProfileSectionW;
  10872. begin
  10873. GetProcedureAddress(_GetPrivateProfileSectionW, kernel32, 'GetPrivateProfileSectionW');
  10874. asm
  10875. MOV ESP, EBP
  10876. POP EBP
  10877. JMP [_GetPrivateProfileSectionW]
  10878. end;
  10879. end;
  10880. var
  10881. _GetPrivateProfileSection: Pointer;
  10882. function GetPrivateProfileSection;
  10883. begin
  10884. GetProcedureAddress(_GetPrivateProfileSection, kernel32, 'GetPrivateProfileSection' + AWSuffix);
  10885. asm
  10886. MOV ESP, EBP
  10887. POP EBP
  10888. JMP [_GetPrivateProfileSection]
  10889. end;
  10890. end;
  10891. var
  10892. _WritePrivateProfileSectionA: Pointer;
  10893. function WritePrivateProfileSectionA;
  10894. begin
  10895. GetProcedureAddress(_WritePrivateProfileSectionA, kernel32, 'WritePrivateProfileSectionA');
  10896. asm
  10897. MOV ESP, EBP
  10898. POP EBP
  10899. JMP [_WritePrivateProfileSectionA]
  10900. end;
  10901. end;
  10902. var
  10903. _WritePrivateProfileSectionW: Pointer;
  10904. function WritePrivateProfileSectionW;
  10905. begin
  10906. GetProcedureAddress(_WritePrivateProfileSectionW, kernel32, 'WritePrivateProfileSectionW');
  10907. asm
  10908. MOV ESP, EBP
  10909. POP EBP
  10910. JMP [_WritePrivateProfileSectionW]
  10911. end;
  10912. end;
  10913. var
  10914. _WritePrivateProfileSection: Pointer;
  10915. function WritePrivateProfileSection;
  10916. begin
  10917. GetProcedureAddress(_WritePrivateProfileSection, kernel32, 'WritePrivateProfileSection' + AWSuffix);
  10918. asm
  10919. MOV ESP, EBP
  10920. POP EBP
  10921. JMP [_WritePrivateProfileSection]
  10922. end;
  10923. end;
  10924. var
  10925. _GetPrivateProfileSectionNamesA: Pointer;
  10926. function GetPrivateProfileSectionNamesA;
  10927. begin
  10928. GetProcedureAddress(_GetPrivateProfileSectionNamesA, kernel32, 'GetPrivateProfileSectionNamesA');
  10929. asm
  10930. MOV ESP, EBP
  10931. POP EBP
  10932. JMP [_GetPrivateProfileSectionNamesA]
  10933. end;
  10934. end;
  10935. var
  10936. _GetPrivateProfileSectionNamesW: Pointer;
  10937. function GetPrivateProfileSectionNamesW;
  10938. begin
  10939. GetProcedureAddress(_GetPrivateProfileSectionNamesW, kernel32, 'GetPrivateProfileSectionNamesW');
  10940. asm
  10941. MOV ESP, EBP
  10942. POP EBP
  10943. JMP [_GetPrivateProfileSectionNamesW]
  10944. end;
  10945. end;
  10946. var
  10947. _GetPrivateProfileSectionNames: Pointer;
  10948. function GetPrivateProfileSectionNames;
  10949. begin
  10950. GetProcedureAddress(_GetPrivateProfileSectionNames, kernel32, 'GetPrivateProfileSectionNames' + AWSuffix);
  10951. asm
  10952. MOV ESP, EBP
  10953. POP EBP
  10954. JMP [_GetPrivateProfileSectionNames]
  10955. end;
  10956. end;
  10957. var
  10958. _GetPrivateProfileStructA: Pointer;
  10959. function GetPrivateProfileStructA;
  10960. begin
  10961. GetProcedureAddress(_GetPrivateProfileStructA, kernel32, 'GetPrivateProfileStructA');
  10962. asm
  10963. MOV ESP, EBP
  10964. POP EBP
  10965. JMP [_GetPrivateProfileStructA]
  10966. end;
  10967. end;
  10968. var
  10969. _GetPrivateProfileStructW: Pointer;
  10970. function GetPrivateProfileStructW;
  10971. begin
  10972. GetProcedureAddress(_GetPrivateProfileStructW, kernel32, 'GetPrivateProfileStructW');
  10973. asm
  10974. MOV ESP, EBP
  10975. POP EBP
  10976. JMP [_GetPrivateProfileStructW]
  10977. end;
  10978. end;
  10979. var
  10980. _GetPrivateProfileStruct: Pointer;
  10981. function GetPrivateProfileStruct;
  10982. begin
  10983. GetProcedureAddress(_GetPrivateProfileStruct, kernel32, 'GetPrivateProfileStruct' + AWSuffix);
  10984. asm
  10985. MOV ESP, EBP
  10986. POP EBP
  10987. JMP [_GetPrivateProfileStruct]
  10988. end;
  10989. end;
  10990. var
  10991. _WritePrivateProfileStructA: Pointer;
  10992. function WritePrivateProfileStructA;
  10993. begin
  10994. GetProcedureAddress(_WritePrivateProfileStructA, kernel32, 'WritePrivateProfileStructA');
  10995. asm
  10996. MOV ESP, EBP
  10997. POP EBP
  10998. JMP [_WritePrivateProfileStructA]
  10999. end;
  11000. end;
  11001. var
  11002. _WritePrivateProfileStructW: Pointer;
  11003. function WritePrivateProfileStructW;
  11004. begin
  11005. GetProcedureAddress(_WritePrivateProfileStructW, kernel32, 'WritePrivateProfileStructW');
  11006. asm
  11007. MOV ESP, EBP
  11008. POP EBP
  11009. JMP [_WritePrivateProfileStructW]
  11010. end;
  11011. end;
  11012. var
  11013. _WritePrivateProfileStruct: Pointer;
  11014. function WritePrivateProfileStruct;
  11015. begin
  11016. GetProcedureAddress(_WritePrivateProfileStruct, kernel32, 'WritePrivateProfileStruct' + AWSuffix);
  11017. asm
  11018. MOV ESP, EBP
  11019. POP EBP
  11020. JMP [_WritePrivateProfileStruct]
  11021. end;
  11022. end;
  11023. var
  11024. _GetDriveTypeA: Pointer;
  11025. function GetDriveTypeA;
  11026. begin
  11027. GetProcedureAddress(_GetDriveTypeA, kernel32, 'GetDriveTypeA');
  11028. asm
  11029. MOV ESP, EBP
  11030. POP EBP
  11031. JMP [_GetDriveTypeA]
  11032. end;
  11033. end;
  11034. var
  11035. _GetDriveTypeW: Pointer;
  11036. function GetDriveTypeW;
  11037. begin
  11038. GetProcedureAddress(_GetDriveTypeW, kernel32, 'GetDriveTypeW');
  11039. asm
  11040. MOV ESP, EBP
  11041. POP EBP
  11042. JMP [_GetDriveTypeW]
  11043. end;
  11044. end;
  11045. var
  11046. _GetDriveType: Pointer;
  11047. function GetDriveType;
  11048. begin
  11049. GetProcedureAddress(_GetDriveType, kernel32, 'GetDriveType' + AWSuffix);
  11050. asm
  11051. MOV ESP, EBP
  11052. POP EBP
  11053. JMP [_GetDriveType]
  11054. end;
  11055. end;
  11056. var
  11057. _GetSystemDirectoryA: Pointer;
  11058. function GetSystemDirectoryA;
  11059. begin
  11060. GetProcedureAddress(_GetSystemDirectoryA, kernel32, 'GetSystemDirectoryA');
  11061. asm
  11062. MOV ESP, EBP
  11063. POP EBP
  11064. JMP [_GetSystemDirectoryA]
  11065. end;
  11066. end;
  11067. var
  11068. _GetSystemDirectoryW: Pointer;
  11069. function GetSystemDirectoryW;
  11070. begin
  11071. GetProcedureAddress(_GetSystemDirectoryW, kernel32, 'GetSystemDirectoryW');
  11072. asm
  11073. MOV ESP, EBP
  11074. POP EBP
  11075. JMP [_GetSystemDirectoryW]
  11076. end;
  11077. end;
  11078. var
  11079. _GetSystemDirectory: Pointer;
  11080. function GetSystemDirectory;
  11081. begin
  11082. GetProcedureAddress(_GetSystemDirectory, kernel32, 'GetSystemDirectory' + AWSuffix);
  11083. asm
  11084. MOV ESP, EBP
  11085. POP EBP
  11086. JMP [_GetSystemDirectory]
  11087. end;
  11088. end;
  11089. var
  11090. _GetTempPathA: Pointer;
  11091. function GetTempPathA;
  11092. begin
  11093. GetProcedureAddress(_GetTempPathA, kernel32, 'GetTempPathA');
  11094. asm
  11095. MOV ESP, EBP
  11096. POP EBP
  11097. JMP [_GetTempPathA]
  11098. end;
  11099. end;
  11100. var
  11101. _GetTempPathW: Pointer;
  11102. function GetTempPathW;
  11103. begin
  11104. GetProcedureAddress(_GetTempPathW, kernel32, 'GetTempPathW');
  11105. asm
  11106. MOV ESP, EBP
  11107. POP EBP
  11108. JMP [_GetTempPathW]
  11109. end;
  11110. end;
  11111. var
  11112. _GetTempPath: Pointer;
  11113. function GetTempPath;
  11114. begin
  11115. GetProcedureAddress(_GetTempPath, kernel32, 'GetTempPath' + AWSuffix);
  11116. asm
  11117. MOV ESP, EBP
  11118. POP EBP
  11119. JMP [_GetTempPath]
  11120. end;
  11121. end;
  11122. var
  11123. _GetTempFileNameA: Pointer;
  11124. function GetTempFileNameA;
  11125. begin
  11126. GetProcedureAddress(_GetTempFileNameA, kernel32, 'GetTempFileNameA');
  11127. asm
  11128. MOV ESP, EBP
  11129. POP EBP
  11130. JMP [_GetTempFileNameA]
  11131. end;
  11132. end;
  11133. var
  11134. _GetTempFileNameW: Pointer;
  11135. function GetTempFileNameW;
  11136. begin
  11137. GetProcedureAddress(_GetTempFileNameW, kernel32, 'GetTempFileNameW');
  11138. asm
  11139. MOV ESP, EBP
  11140. POP EBP
  11141. JMP [_GetTempFileNameW]
  11142. end;
  11143. end;
  11144. var
  11145. _GetTempFileName: Pointer;
  11146. function GetTempFileName;
  11147. begin
  11148. GetProcedureAddress(_GetTempFileName, kernel32, 'GetTempFileName' + AWSuffix);
  11149. asm
  11150. MOV ESP, EBP
  11151. POP EBP
  11152. JMP [_GetTempFileName]
  11153. end;
  11154. end;
  11155. var
  11156. _GetWindowsDirectoryA: Pointer;
  11157. function GetWindowsDirectoryA;
  11158. begin
  11159. GetProcedureAddress(_GetWindowsDirectoryA, kernel32, 'GetWindowsDirectoryA');
  11160. asm
  11161. MOV ESP, EBP
  11162. POP EBP
  11163. JMP [_GetWindowsDirectoryA]
  11164. end;
  11165. end;
  11166. var
  11167. _GetWindowsDirectoryW: Pointer;
  11168. function GetWindowsDirectoryW;
  11169. begin
  11170. GetProcedureAddress(_GetWindowsDirectoryW, kernel32, 'GetWindowsDirectoryW');
  11171. asm
  11172. MOV ESP, EBP
  11173. POP EBP
  11174. JMP [_GetWindowsDirectoryW]
  11175. end;
  11176. end;
  11177. var
  11178. _GetWindowsDirectory: Pointer;
  11179. function GetWindowsDirectory;
  11180. begin
  11181. GetProcedureAddress(_GetWindowsDirectory, kernel32, 'GetWindowsDirectory' + AWSuffix);
  11182. asm
  11183. MOV ESP, EBP
  11184. POP EBP
  11185. JMP [_GetWindowsDirectory]
  11186. end;
  11187. end;
  11188. var
  11189. _GetSystemWindowsDirectoryA: Pointer;
  11190. function GetSystemWindowsDirectoryA;
  11191. begin
  11192. GetProcedureAddress(_GetSystemWindowsDirectoryA, kernel32, 'GetSystemWindowsDirectoryA');
  11193. asm
  11194. MOV ESP, EBP
  11195. POP EBP
  11196. JMP [_GetSystemWindowsDirectoryA]
  11197. end;
  11198. end;
  11199. var
  11200. _GetSystemWindowsDirectoryW: Pointer;
  11201. function GetSystemWindowsDirectoryW;
  11202. begin
  11203. GetProcedureAddress(_GetSystemWindowsDirectoryW, kernel32, 'GetSystemWindowsDirectoryW');
  11204. asm
  11205. MOV ESP, EBP
  11206. POP EBP
  11207. JMP [_GetSystemWindowsDirectoryW]
  11208. end;
  11209. end;
  11210. var
  11211. _GetSystemWindowsDirectory: Pointer;
  11212. function GetSystemWindowsDirectory;
  11213. begin
  11214. GetProcedureAddress(_GetSystemWindowsDirectory, kernel32, 'GetSystemWindowsDirectory' + AWSuffix);
  11215. asm
  11216. MOV ESP, EBP
  11217. POP EBP
  11218. JMP [_GetSystemWindowsDirectory]
  11219. end;
  11220. end;
  11221. var
  11222. _GetSystemWow64DirectoryA: Pointer;
  11223. function GetSystemWow64DirectoryA;
  11224. begin
  11225. GetProcedureAddress(_GetSystemWow64DirectoryA, kernel32, 'GetSystemWow64DirectoryA');
  11226. asm
  11227. MOV ESP, EBP
  11228. POP EBP
  11229. JMP [_GetSystemWow64DirectoryA]
  11230. end;
  11231. end;
  11232. var
  11233. _GetSystemWow64DirectoryW: Pointer;
  11234. function GetSystemWow64DirectoryW;
  11235. begin
  11236. GetProcedureAddress(_GetSystemWow64DirectoryW, kernel32, 'GetSystemWow64DirectoryW');
  11237. asm
  11238. MOV ESP, EBP
  11239. POP EBP
  11240. JMP [_GetSystemWow64DirectoryW]
  11241. end;
  11242. end;
  11243. var
  11244. _GetSystemWow64Directory: Pointer;
  11245. function GetSystemWow64Directory;
  11246. begin
  11247. GetProcedureAddress(_GetSystemWow64Directory, kernel32, 'GetSystemWow64Directory' + AWSuffix);
  11248. asm
  11249. MOV ESP, EBP
  11250. POP EBP
  11251. JMP [_GetSystemWow64Directory]
  11252. end;
  11253. end;
  11254. var
  11255. _Wow64EnableWow64FsRedirection: Pointer;
  11256. function Wow64EnableWow64FsRedirection;
  11257. begin
  11258. GetProcedureAddress(_Wow64EnableWow64FsRedirection, kernel32, 'Wow64EnableWow64FsRedirection');
  11259. asm
  11260. MOV ESP, EBP
  11261. POP EBP
  11262. JMP [_Wow64EnableWow64FsRedirection]
  11263. end;
  11264. end;
  11265. var
  11266. _SetCurrentDirectoryA: Pointer;
  11267. function SetCurrentDirectoryA;
  11268. begin
  11269. GetProcedureAddress(_SetCurrentDirectoryA, kernel32, 'SetCurrentDirectoryA');
  11270. asm
  11271. MOV ESP, EBP
  11272. POP EBP
  11273. JMP [_SetCurrentDirectoryA]
  11274. end;
  11275. end;
  11276. var
  11277. _SetCurrentDirectoryW: Pointer;
  11278. function SetCurrentDirectoryW;
  11279. begin
  11280. GetProcedureAddress(_SetCurrentDirectoryW, kernel32, 'SetCurrentDirectoryW');
  11281. asm
  11282. MOV ESP, EBP
  11283. POP EBP
  11284. JMP [_SetCurrentDirectoryW]
  11285. end;
  11286. end;
  11287. var
  11288. _SetCurrentDirectory: Pointer;
  11289. function SetCurrentDirectory;
  11290. begin
  11291. GetProcedureAddress(_SetCurrentDirectory, kernel32, 'SetCurrentDirectory' + AWSuffix);
  11292. asm
  11293. MOV ESP, EBP
  11294. POP EBP
  11295. JMP [_SetCurrentDirectory]
  11296. end;
  11297. end;
  11298. var
  11299. _GetCurrentDirectoryA: Pointer;
  11300. function GetCurrentDirectoryA;
  11301. begin
  11302. GetProcedureAddress(_GetCurrentDirectoryA, kernel32, 'GetCurrentDirectoryA');
  11303. asm
  11304. MOV ESP, EBP
  11305. POP EBP
  11306. JMP [_GetCurrentDirectoryA]
  11307. end;
  11308. end;
  11309. var
  11310. _GetCurrentDirectoryW: Pointer;
  11311. function GetCurrentDirectoryW;
  11312. begin
  11313. GetProcedureAddress(_GetCurrentDirectoryW, kernel32, 'GetCurrentDirectoryW');
  11314. asm
  11315. MOV ESP, EBP
  11316. POP EBP
  11317. JMP [_GetCurrentDirectoryW]
  11318. end;
  11319. end;
  11320. var
  11321. _GetCurrentDirectory: Pointer;
  11322. function GetCurrentDirectory;
  11323. begin
  11324. GetProcedureAddress(_GetCurrentDirectory, kernel32, 'GetCurrentDirectory' + AWSuffix);
  11325. asm
  11326. MOV ESP, EBP
  11327. POP EBP
  11328. JMP [_GetCurrentDirectory]
  11329. end;
  11330. end;
  11331. var
  11332. _SetDllDirectoryA: Pointer;
  11333. function SetDllDirectoryA;
  11334. begin
  11335. GetProcedureAddress(_SetDllDirectoryA, kernel32, 'SetDllDirectoryA');
  11336. asm
  11337. MOV ESP, EBP
  11338. POP EBP
  11339. JMP [_SetDllDirectoryA]
  11340. end;
  11341. end;
  11342. var
  11343. _SetDllDirectoryW: Pointer;
  11344. function SetDllDirectoryW;
  11345. begin
  11346. GetProcedureAddress(_SetDllDirectoryW, kernel32, 'SetDllDirectoryW');
  11347. asm
  11348. MOV ESP, EBP
  11349. POP EBP
  11350. JMP [_SetDllDirectoryW]
  11351. end;
  11352. end;
  11353. var
  11354. _SetDllDirectory: Pointer;
  11355. function SetDllDirectory;
  11356. begin
  11357. GetProcedureAddress(_SetDllDirectory, kernel32, 'SetDllDirectory' + AWSuffix);
  11358. asm
  11359. MOV ESP, EBP
  11360. POP EBP
  11361. JMP [_SetDllDirectory]
  11362. end;
  11363. end;
  11364. var
  11365. _GetDllDirectoryA: Pointer;
  11366. function GetDllDirectoryA;
  11367. begin
  11368. GetProcedureAddress(_GetDllDirectoryA, kernel32, 'GetDllDirectoryA');
  11369. asm
  11370. MOV ESP, EBP
  11371. POP EBP
  11372. JMP [_GetDllDirectoryA]
  11373. end;
  11374. end;
  11375. var
  11376. _GetDllDirectoryW: Pointer;
  11377. function GetDllDirectoryW;
  11378. begin
  11379. GetProcedureAddress(_GetDllDirectoryW, kernel32, 'GetDllDirectoryW');
  11380. asm
  11381. MOV ESP, EBP
  11382. POP EBP
  11383. JMP [_GetDllDirectoryW]
  11384. end;
  11385. end;
  11386. var
  11387. _GetDllDirectory: Pointer;
  11388. function GetDllDirectory;
  11389. begin
  11390. GetProcedureAddress(_GetDllDirectory, kernel32, 'GetDllDirectory' + AWSuffix);
  11391. asm
  11392. MOV ESP, EBP
  11393. POP EBP
  11394. JMP [_GetDllDirectory]
  11395. end;
  11396. end;
  11397. var
  11398. _GetDiskFreeSpaceA: Pointer;
  11399. function GetDiskFreeSpaceA;
  11400. begin
  11401. GetProcedureAddress(_GetDiskFreeSpaceA, kernel32, 'GetDiskFreeSpaceA');
  11402. asm
  11403. MOV ESP, EBP
  11404. POP EBP
  11405. JMP [_GetDiskFreeSpaceA]
  11406. end;
  11407. end;
  11408. var
  11409. _GetDiskFreeSpaceW: Pointer;
  11410. function GetDiskFreeSpaceW;
  11411. begin
  11412. GetProcedureAddress(_GetDiskFreeSpaceW, kernel32, 'GetDiskFreeSpaceW');
  11413. asm
  11414. MOV ESP, EBP
  11415. POP EBP
  11416. JMP [_GetDiskFreeSpaceW]
  11417. end;
  11418. end;
  11419. var
  11420. _GetDiskFreeSpace: Pointer;
  11421. function GetDiskFreeSpace;
  11422. begin
  11423. GetProcedureAddress(_GetDiskFreeSpace, kernel32, 'GetDiskFreeSpace' + AWSuffix);
  11424. asm
  11425. MOV ESP, EBP
  11426. POP EBP
  11427. JMP [_GetDiskFreeSpace]
  11428. end;
  11429. end;
  11430. var
  11431. _GetDiskFreeSpaceExA: Pointer;
  11432. function GetDiskFreeSpaceExA;
  11433. begin
  11434. GetProcedureAddress(_GetDiskFreeSpaceExA, kernel32, 'GetDiskFreeSpaceExA');
  11435. asm
  11436. MOV ESP, EBP
  11437. POP EBP
  11438. JMP [_GetDiskFreeSpaceExA]
  11439. end;
  11440. end;
  11441. var
  11442. _GetDiskFreeSpaceExW: Pointer;
  11443. function GetDiskFreeSpaceExW;
  11444. begin
  11445. GetProcedureAddress(_GetDiskFreeSpaceExW, kernel32, 'GetDiskFreeSpaceExW');
  11446. asm
  11447. MOV ESP, EBP
  11448. POP EBP
  11449. JMP [_GetDiskFreeSpaceExW]
  11450. end;
  11451. end;
  11452. var
  11453. _GetDiskFreeSpaceEx: Pointer;
  11454. function GetDiskFreeSpaceEx;
  11455. begin
  11456. GetProcedureAddress(_GetDiskFreeSpaceEx, kernel32, 'GetDiskFreeSpaceEx' + AWSuffix);
  11457. asm
  11458. MOV ESP, EBP
  11459. POP EBP
  11460. JMP [_GetDiskFreeSpaceEx]
  11461. end;
  11462. end;
  11463. var
  11464. _CreateDirectoryA: Pointer;
  11465. function CreateDirectoryA;
  11466. begin
  11467. GetProcedureAddress(_CreateDirectoryA, kernel32, 'CreateDirectoryA');
  11468. asm
  11469. MOV ESP, EBP
  11470. POP EBP
  11471. JMP [_CreateDirectoryA]
  11472. end;
  11473. end;
  11474. var
  11475. _CreateDirectoryW: Pointer;
  11476. function CreateDirectoryW;
  11477. begin
  11478. GetProcedureAddress(_CreateDirectoryW, kernel32, 'CreateDirectoryW');
  11479. asm
  11480. MOV ESP, EBP
  11481. POP EBP
  11482. JMP [_CreateDirectoryW]
  11483. end;
  11484. end;
  11485. var
  11486. _CreateDirectory: Pointer;
  11487. function CreateDirectory;
  11488. begin
  11489. GetProcedureAddress(_CreateDirectory, kernel32, 'CreateDirectory' + AWSuffix);
  11490. asm
  11491. MOV ESP, EBP
  11492. POP EBP
  11493. JMP [_CreateDirectory]
  11494. end;
  11495. end;
  11496. var
  11497. _CreateDirectoryExA: Pointer;
  11498. function CreateDirectoryExA;
  11499. begin
  11500. GetProcedureAddress(_CreateDirectoryExA, kernel32, 'CreateDirectoryExA');
  11501. asm
  11502. MOV ESP, EBP
  11503. POP EBP
  11504. JMP [_CreateDirectoryExA]
  11505. end;
  11506. end;
  11507. var
  11508. _CreateDirectoryExW: Pointer;
  11509. function CreateDirectoryExW;
  11510. begin
  11511. GetProcedureAddress(_CreateDirectoryExW, kernel32, 'CreateDirectoryExW');
  11512. asm
  11513. MOV ESP, EBP
  11514. POP EBP
  11515. JMP [_CreateDirectoryExW]
  11516. end;
  11517. end;
  11518. var
  11519. _CreateDirectoryEx: Pointer;
  11520. function CreateDirectoryEx;
  11521. begin
  11522. GetProcedureAddress(_CreateDirectoryEx, kernel32, 'CreateDirectoryEx' + AWSuffix);
  11523. asm
  11524. MOV ESP, EBP
  11525. POP EBP
  11526. JMP [_CreateDirectoryEx]
  11527. end;
  11528. end;
  11529. var
  11530. _RemoveDirectoryA: Pointer;
  11531. function RemoveDirectoryA;
  11532. begin
  11533. GetProcedureAddress(_RemoveDirectoryA, kernel32, 'RemoveDirectoryA');
  11534. asm
  11535. MOV ESP, EBP
  11536. POP EBP
  11537. JMP [_RemoveDirectoryA]
  11538. end;
  11539. end;
  11540. var
  11541. _RemoveDirectoryW: Pointer;
  11542. function RemoveDirectoryW;
  11543. begin
  11544. GetProcedureAddress(_RemoveDirectoryW, kernel32, 'RemoveDirectoryW');
  11545. asm
  11546. MOV ESP, EBP
  11547. POP EBP
  11548. JMP [_RemoveDirectoryW]
  11549. end;
  11550. end;
  11551. var
  11552. _RemoveDirectory: Pointer;
  11553. function RemoveDirectory;
  11554. begin
  11555. GetProcedureAddress(_RemoveDirectory, kernel32, 'RemoveDirectory' + AWSuffix);
  11556. asm
  11557. MOV ESP, EBP
  11558. POP EBP
  11559. JMP [_RemoveDirectory]
  11560. end;
  11561. end;
  11562. var
  11563. _GetFullPathNameA: Pointer;
  11564. function GetFullPathNameA;
  11565. begin
  11566. GetProcedureAddress(_GetFullPathNameA, kernel32, 'GetFullPathNameA');
  11567. asm
  11568. MOV ESP, EBP
  11569. POP EBP
  11570. JMP [_GetFullPathNameA]
  11571. end;
  11572. end;
  11573. var
  11574. _GetFullPathNameW: Pointer;
  11575. function GetFullPathNameW;
  11576. begin
  11577. GetProcedureAddress(_GetFullPathNameW, kernel32, 'GetFullPathNameW');
  11578. asm
  11579. MOV ESP, EBP
  11580. POP EBP
  11581. JMP [_GetFullPathNameW]
  11582. end;
  11583. end;
  11584. var
  11585. _GetFullPathName: Pointer;
  11586. function GetFullPathName;
  11587. begin
  11588. GetProcedureAddress(_GetFullPathName, kernel32, 'GetFullPathName' + AWSuffix);
  11589. asm
  11590. MOV ESP, EBP
  11591. POP EBP
  11592. JMP [_GetFullPathName]
  11593. end;
  11594. end;
  11595. var
  11596. _DefineDosDeviceA: Pointer;
  11597. function DefineDosDeviceA;
  11598. begin
  11599. GetProcedureAddress(_DefineDosDeviceA, kernel32, 'DefineDosDeviceA');
  11600. asm
  11601. MOV ESP, EBP
  11602. POP EBP
  11603. JMP [_DefineDosDeviceA]
  11604. end;
  11605. end;
  11606. var
  11607. _DefineDosDeviceW: Pointer;
  11608. function DefineDosDeviceW;
  11609. begin
  11610. GetProcedureAddress(_DefineDosDeviceW, kernel32, 'DefineDosDeviceW');
  11611. asm
  11612. MOV ESP, EBP
  11613. POP EBP
  11614. JMP [_DefineDosDeviceW]
  11615. end;
  11616. end;
  11617. var
  11618. _DefineDosDevice: Pointer;
  11619. function DefineDosDevice;
  11620. begin
  11621. GetProcedureAddress(_DefineDosDevice, kernel32, 'DefineDosDevice' + AWSuffix);
  11622. asm
  11623. MOV ESP, EBP
  11624. POP EBP
  11625. JMP [_DefineDosDevice]
  11626. end;
  11627. end;
  11628. var
  11629. _QueryDosDeviceA: Pointer;
  11630. function QueryDosDeviceA;
  11631. begin
  11632. GetProcedureAddress(_QueryDosDeviceA, kernel32, 'QueryDosDeviceA');
  11633. asm
  11634. MOV ESP, EBP
  11635. POP EBP
  11636. JMP [_QueryDosDeviceA]
  11637. end;
  11638. end;
  11639. var
  11640. _QueryDosDeviceW: Pointer;
  11641. function QueryDosDeviceW;
  11642. begin
  11643. GetProcedureAddress(_QueryDosDeviceW, kernel32, 'QueryDosDeviceW');
  11644. asm
  11645. MOV ESP, EBP
  11646. POP EBP
  11647. JMP [_QueryDosDeviceW]
  11648. end;
  11649. end;
  11650. var
  11651. _QueryDosDevice: Pointer;
  11652. function QueryDosDevice;
  11653. begin
  11654. GetProcedureAddress(_QueryDosDevice, kernel32, 'QueryDosDevice' + AWSuffix);
  11655. asm
  11656. MOV ESP, EBP
  11657. POP EBP
  11658. JMP [_QueryDosDevice]
  11659. end;
  11660. end;
  11661. var
  11662. _CreateFileA: Pointer;
  11663. function CreateFileA;
  11664. begin
  11665. GetProcedureAddress(_CreateFileA, kernel32, 'CreateFileA');
  11666. asm
  11667. MOV ESP, EBP
  11668. POP EBP
  11669. JMP [_CreateFileA]
  11670. end;
  11671. end;
  11672. var
  11673. _CreateFileW: Pointer;
  11674. function CreateFileW;
  11675. begin
  11676. GetProcedureAddress(_CreateFileW, kernel32, 'CreateFileW');
  11677. asm
  11678. MOV ESP, EBP
  11679. POP EBP
  11680. JMP [_CreateFileW]
  11681. end;
  11682. end;
  11683. var
  11684. _CreateFile: Pointer;
  11685. function CreateFile;
  11686. begin
  11687. GetProcedureAddress(_CreateFile, kernel32, 'CreateFile' + AWSuffix);
  11688. asm
  11689. MOV ESP, EBP
  11690. POP EBP
  11691. JMP [_CreateFile]
  11692. end;
  11693. end;
  11694. var
  11695. _ReOpenFile: Pointer;
  11696. function ReOpenFile;
  11697. begin
  11698. GetProcedureAddress(_ReOpenFile, kernel32, 'ReOpenFile');
  11699. asm
  11700. MOV ESP, EBP
  11701. POP EBP
  11702. JMP [_ReOpenFile]
  11703. end;
  11704. end;
  11705. var
  11706. _SetFileAttributesA: Pointer;
  11707. function SetFileAttributesA;
  11708. begin
  11709. GetProcedureAddress(_SetFileAttributesA, kernel32, 'SetFileAttributesA');
  11710. asm
  11711. MOV ESP, EBP
  11712. POP EBP
  11713. JMP [_SetFileAttributesA]
  11714. end;
  11715. end;
  11716. var
  11717. _SetFileAttributesW: Pointer;
  11718. function SetFileAttributesW;
  11719. begin
  11720. GetProcedureAddress(_SetFileAttributesW, kernel32, 'SetFileAttributesW');
  11721. asm
  11722. MOV ESP, EBP
  11723. POP EBP
  11724. JMP [_SetFileAttributesW]
  11725. end;
  11726. end;
  11727. var
  11728. _SetFileAttributes: Pointer;
  11729. function SetFileAttributes;
  11730. begin
  11731. GetProcedureAddress(_SetFileAttributes, kernel32, 'SetFileAttributes' + AWSuffix);
  11732. asm
  11733. MOV ESP, EBP
  11734. POP EBP
  11735. JMP [_SetFileAttributes]
  11736. end;
  11737. end;
  11738. var
  11739. _GetFileAttributesA: Pointer;
  11740. function GetFileAttributesA;
  11741. begin
  11742. GetProcedureAddress(_GetFileAttributesA, kernel32, 'GetFileAttributesA');
  11743. asm
  11744. MOV ESP, EBP
  11745. POP EBP
  11746. JMP [_GetFileAttributesA]
  11747. end;
  11748. end;
  11749. var
  11750. _GetFileAttributesW: Pointer;
  11751. function GetFileAttributesW;
  11752. begin
  11753. GetProcedureAddress(_GetFileAttributesW, kernel32, 'GetFileAttributesW');
  11754. asm
  11755. MOV ESP, EBP
  11756. POP EBP
  11757. JMP [_GetFileAttributesW]
  11758. end;
  11759. end;
  11760. var
  11761. _GetFileAttributes: Pointer;
  11762. function GetFileAttributes;
  11763. begin
  11764. GetProcedureAddress(_GetFileAttributes, kernel32, 'GetFileAttributes' + AWSuffix);
  11765. asm
  11766. MOV ESP, EBP
  11767. POP EBP
  11768. JMP [_GetFileAttributes]
  11769. end;
  11770. end;
  11771. var
  11772. _GetFileAttributesExA: Pointer;
  11773. function GetFileAttributesExA;
  11774. begin
  11775. GetProcedureAddress(_GetFileAttributesExA, kernel32, 'GetFileAttributesExA');
  11776. asm
  11777. MOV ESP, EBP
  11778. POP EBP
  11779. JMP [_GetFileAttributesExA]
  11780. end;
  11781. end;
  11782. var
  11783. _GetFileAttributesExW: Pointer;
  11784. function GetFileAttributesExW;
  11785. begin
  11786. GetProcedureAddress(_GetFileAttributesExW, kernel32, 'GetFileAttributesExW');
  11787. asm
  11788. MOV ESP, EBP
  11789. POP EBP
  11790. JMP [_GetFileAttributesExW]
  11791. end;
  11792. end;
  11793. var
  11794. _GetFileAttributesEx: Pointer;
  11795. function GetFileAttributesEx;
  11796. begin
  11797. GetProcedureAddress(_GetFileAttributesEx, kernel32, 'GetFileAttributesEx' + AWSuffix);
  11798. asm
  11799. MOV ESP, EBP
  11800. POP EBP
  11801. JMP [_GetFileAttributesEx]
  11802. end;
  11803. end;
  11804. var
  11805. _GetCompressedFileSizeA: Pointer;
  11806. function GetCompressedFileSizeA;
  11807. begin
  11808. GetProcedureAddress(_GetCompressedFileSizeA, kernel32, 'GetCompressedFileSizeA');
  11809. asm
  11810. MOV ESP, EBP
  11811. POP EBP
  11812. JMP [_GetCompressedFileSizeA]
  11813. end;
  11814. end;
  11815. var
  11816. _GetCompressedFileSizeW: Pointer;
  11817. function GetCompressedFileSizeW;
  11818. begin
  11819. GetProcedureAddress(_GetCompressedFileSizeW, kernel32, 'GetCompressedFileSizeW');
  11820. asm
  11821. MOV ESP, EBP
  11822. POP EBP
  11823. JMP [_GetCompressedFileSizeW]
  11824. end;
  11825. end;
  11826. var
  11827. _GetCompressedFileSize: Pointer;
  11828. function GetCompressedFileSize;
  11829. begin
  11830. GetProcedureAddress(_GetCompressedFileSize, kernel32, 'GetCompressedFileSize' + AWSuffix);
  11831. asm
  11832. MOV ESP, EBP
  11833. POP EBP
  11834. JMP [_GetCompressedFileSize]
  11835. end;
  11836. end;
  11837. var
  11838. _DeleteFileA: Pointer;
  11839. function DeleteFileA;
  11840. begin
  11841. GetProcedureAddress(_DeleteFileA, kernel32, 'DeleteFileA');
  11842. asm
  11843. MOV ESP, EBP
  11844. POP EBP
  11845. JMP [_DeleteFileA]
  11846. end;
  11847. end;
  11848. var
  11849. _DeleteFileW: Pointer;
  11850. function DeleteFileW;
  11851. begin
  11852. GetProcedureAddress(_DeleteFileW, kernel32, 'DeleteFileW');
  11853. asm
  11854. MOV ESP, EBP
  11855. POP EBP
  11856. JMP [_DeleteFileW]
  11857. end;
  11858. end;
  11859. var
  11860. _DeleteFile: Pointer;
  11861. function DeleteFile;
  11862. begin
  11863. GetProcedureAddress(_DeleteFile, kernel32, 'DeleteFile' + AWSuffix);
  11864. asm
  11865. MOV ESP, EBP
  11866. POP EBP
  11867. JMP [_DeleteFile]
  11868. end;
  11869. end;
  11870. var
  11871. _FindFirstFileExA: Pointer;
  11872. function FindFirstFileExA;
  11873. begin
  11874. GetProcedureAddress(_FindFirstFileExA, kernel32, 'FindFirstFileExA');
  11875. asm
  11876. MOV ESP, EBP
  11877. POP EBP
  11878. JMP [_FindFirstFileExA]
  11879. end;
  11880. end;
  11881. var
  11882. _FindFirstFileExW: Pointer;
  11883. function FindFirstFileExW;
  11884. begin
  11885. GetProcedureAddress(_FindFirstFileExW, kernel32, 'FindFirstFileExW');
  11886. asm
  11887. MOV ESP, EBP
  11888. POP EBP
  11889. JMP [_FindFirstFileExW]
  11890. end;
  11891. end;
  11892. var
  11893. _FindFirstFileEx: Pointer;
  11894. function FindFirstFileEx;
  11895. begin
  11896. GetProcedureAddress(_FindFirstFileEx, kernel32, 'FindFirstFileEx' + AWSuffix);
  11897. asm
  11898. MOV ESP, EBP
  11899. POP EBP
  11900. JMP [_FindFirstFileEx]
  11901. end;
  11902. end;
  11903. var
  11904. _FindFirstFileA: Pointer;
  11905. function FindFirstFileA;
  11906. begin
  11907. GetProcedureAddress(_FindFirstFileA, kernel32, 'FindFirstFileA');
  11908. asm
  11909. MOV ESP, EBP
  11910. POP EBP
  11911. JMP [_FindFirstFileA]
  11912. end;
  11913. end;
  11914. var
  11915. _FindFirstFileW: Pointer;
  11916. function FindFirstFileW;
  11917. begin
  11918. GetProcedureAddress(_FindFirstFileW, kernel32, 'FindFirstFileW');
  11919. asm
  11920. MOV ESP, EBP
  11921. POP EBP
  11922. JMP [_FindFirstFileW]
  11923. end;
  11924. end;
  11925. var
  11926. _FindFirstFile: Pointer;
  11927. function FindFirstFile;
  11928. begin
  11929. GetProcedureAddress(_FindFirstFile, kernel32, 'FindFirstFile' + AWSuffix);
  11930. asm
  11931. MOV ESP, EBP
  11932. POP EBP
  11933. JMP [_FindFirstFile]
  11934. end;
  11935. end;
  11936. var
  11937. _FindNextFileA: Pointer;
  11938. function FindNextFileA;
  11939. begin
  11940. GetProcedureAddress(_FindNextFileA, kernel32, 'FindNextFileA');
  11941. asm
  11942. MOV ESP, EBP
  11943. POP EBP
  11944. JMP [_FindNextFileA]
  11945. end;
  11946. end;
  11947. var
  11948. _FindNextFileW: Pointer;
  11949. function FindNextFileW;
  11950. begin
  11951. GetProcedureAddress(_FindNextFileW, kernel32, 'FindNextFileW');
  11952. asm
  11953. MOV ESP, EBP
  11954. POP EBP
  11955. JMP [_FindNextFileW]
  11956. end;
  11957. end;
  11958. var
  11959. _FindNextFile: Pointer;
  11960. function FindNextFile;
  11961. begin
  11962. GetProcedureAddress(_FindNextFile, kernel32, 'FindNextFile' + AWSuffix);
  11963. asm
  11964. MOV ESP, EBP
  11965. POP EBP
  11966. JMP [_FindNextFile]
  11967. end;
  11968. end;
  11969. var
  11970. _SearchPathA: Pointer;
  11971. function SearchPathA;
  11972. begin
  11973. GetProcedureAddress(_SearchPathA, kernel32, 'SearchPathA');
  11974. asm
  11975. MOV ESP, EBP
  11976. POP EBP
  11977. JMP [_SearchPathA]
  11978. end;
  11979. end;
  11980. var
  11981. _SearchPathW: Pointer;
  11982. function SearchPathW;
  11983. begin
  11984. GetProcedureAddress(_SearchPathW, kernel32, 'SearchPathW');
  11985. asm
  11986. MOV ESP, EBP
  11987. POP EBP
  11988. JMP [_SearchPathW]
  11989. end;
  11990. end;
  11991. var
  11992. _SearchPath: Pointer;
  11993. function SearchPath;
  11994. begin
  11995. GetProcedureAddress(_SearchPath, kernel32, 'SearchPath' + AWSuffix);
  11996. asm
  11997. MOV ESP, EBP
  11998. POP EBP
  11999. JMP [_SearchPath]
  12000. end;
  12001. end;
  12002. var
  12003. _CopyFileA: Pointer;
  12004. function CopyFileA;
  12005. begin
  12006. GetProcedureAddress(_CopyFileA, kernel32, 'CopyFileA');
  12007. asm
  12008. MOV ESP, EBP
  12009. POP EBP
  12010. JMP [_CopyFileA]
  12011. end;
  12012. end;
  12013. var
  12014. _CopyFileW: Pointer;
  12015. function CopyFileW;
  12016. begin
  12017. GetProcedureAddress(_CopyFileW, kernel32, 'CopyFileW');
  12018. asm
  12019. MOV ESP, EBP
  12020. POP EBP
  12021. JMP [_CopyFileW]
  12022. end;
  12023. end;
  12024. var
  12025. _CopyFile: Pointer;
  12026. function CopyFile;
  12027. begin
  12028. GetProcedureAddress(_CopyFile, kernel32, 'CopyFile' + AWSuffix);
  12029. asm
  12030. MOV ESP, EBP
  12031. POP EBP
  12032. JMP [_CopyFile]
  12033. end;
  12034. end;
  12035. var
  12036. _CopyFileExA: Pointer;
  12037. function CopyFileExA;
  12038. begin
  12039. GetProcedureAddress(_CopyFileExA, kernel32, 'CopyFileExA');
  12040. asm
  12041. MOV ESP, EBP
  12042. POP EBP
  12043. JMP [_CopyFileExA]
  12044. end;
  12045. end;
  12046. var
  12047. _CopyFileExW: Pointer;
  12048. function CopyFileExW;
  12049. begin
  12050. GetProcedureAddress(_CopyFileExW, kernel32, 'CopyFileExW');
  12051. asm
  12052. MOV ESP, EBP
  12053. POP EBP
  12054. JMP [_CopyFileExW]
  12055. end;
  12056. end;
  12057. var
  12058. _CopyFileEx: Pointer;
  12059. function CopyFileEx;
  12060. begin
  12061. GetProcedureAddress(_CopyFileEx, kernel32, 'CopyFileEx' + AWSuffix);
  12062. asm
  12063. MOV ESP, EBP
  12064. POP EBP
  12065. JMP [_CopyFileEx]
  12066. end;
  12067. end;
  12068. var
  12069. _MoveFileA: Pointer;
  12070. function MoveFileA;
  12071. begin
  12072. GetProcedureAddress(_MoveFileA, kernel32, 'MoveFileA');
  12073. asm
  12074. MOV ESP, EBP
  12075. POP EBP
  12076. JMP [_MoveFileA]
  12077. end;
  12078. end;
  12079. var
  12080. _MoveFileW: Pointer;
  12081. function MoveFileW;
  12082. begin
  12083. GetProcedureAddress(_MoveFileW, kernel32, 'MoveFileW');
  12084. asm
  12085. MOV ESP, EBP
  12086. POP EBP
  12087. JMP [_MoveFileW]
  12088. end;
  12089. end;
  12090. var
  12091. _MoveFile: Pointer;
  12092. function MoveFile;
  12093. begin
  12094. GetProcedureAddress(_MoveFile, kernel32, 'MoveFile' + AWSuffix);
  12095. asm
  12096. MOV ESP, EBP
  12097. POP EBP
  12098. JMP [_MoveFile]
  12099. end;
  12100. end;
  12101. var
  12102. _MoveFileExA: Pointer;
  12103. function MoveFileExA;
  12104. begin
  12105. GetProcedureAddress(_MoveFileExA, kernel32, 'MoveFileExA');
  12106. asm
  12107. MOV ESP, EBP
  12108. POP EBP
  12109. JMP [_MoveFileExA]
  12110. end;
  12111. end;
  12112. var
  12113. _MoveFileExW: Pointer;
  12114. function MoveFileExW;
  12115. begin
  12116. GetProcedureAddress(_MoveFileExW, kernel32, 'MoveFileExW');
  12117. asm
  12118. MOV ESP, EBP
  12119. POP EBP
  12120. JMP [_MoveFileExW]
  12121. end;
  12122. end;
  12123. var
  12124. _MoveFileEx: Pointer;
  12125. function MoveFileEx;
  12126. begin
  12127. GetProcedureAddress(_MoveFileEx, kernel32, 'MoveFileEx' + AWSuffix);
  12128. asm
  12129. MOV ESP, EBP
  12130. POP EBP
  12131. JMP [_MoveFileEx]
  12132. end;
  12133. end;
  12134. var
  12135. _MoveFileWithProgressA: Pointer;
  12136. function MoveFileWithProgressA;
  12137. begin
  12138. GetProcedureAddress(_MoveFileWithProgressA, kernel32, 'MoveFileWithProgressA');
  12139. asm
  12140. MOV ESP, EBP
  12141. POP EBP
  12142. JMP [_MoveFileWithProgressA]
  12143. end;
  12144. end;
  12145. var
  12146. _MoveFileWithProgressW: Pointer;
  12147. function MoveFileWithProgressW;
  12148. begin
  12149. GetProcedureAddress(_MoveFileWithProgressW, kernel32, 'MoveFileWithProgressW');
  12150. asm
  12151. MOV ESP, EBP
  12152. POP EBP
  12153. JMP [_MoveFileWithProgressW]
  12154. end;
  12155. end;
  12156. var
  12157. _MoveFileWithProgress: Pointer;
  12158. function MoveFileWithProgress;
  12159. begin
  12160. GetProcedureAddress(_MoveFileWithProgress, kernel32, 'MoveFileWithProgress' + AWSuffix);
  12161. asm
  12162. MOV ESP, EBP
  12163. POP EBP
  12164. JMP [_MoveFileWithProgress]
  12165. end;
  12166. end;
  12167. var
  12168. _ReplaceFileA: Pointer;
  12169. function ReplaceFileA;
  12170. begin
  12171. GetProcedureAddress(_ReplaceFileA, kernel32, 'ReplaceFileA');
  12172. asm
  12173. MOV ESP, EBP
  12174. POP EBP
  12175. JMP [_ReplaceFileA]
  12176. end;
  12177. end;
  12178. var
  12179. _ReplaceFileW: Pointer;
  12180. function ReplaceFileW;
  12181. begin
  12182. GetProcedureAddress(_ReplaceFileW, kernel32, 'ReplaceFileW');
  12183. asm
  12184. MOV ESP, EBP
  12185. POP EBP
  12186. JMP [_ReplaceFileW]
  12187. end;
  12188. end;
  12189. var
  12190. _ReplaceFile: Pointer;
  12191. function ReplaceFile;
  12192. begin
  12193. GetProcedureAddress(_ReplaceFile, kernel32, 'ReplaceFile' + AWSuffix);
  12194. asm
  12195. MOV ESP, EBP
  12196. POP EBP
  12197. JMP [_ReplaceFile]
  12198. end;
  12199. end;
  12200. var
  12201. _CreateHardLinkA: Pointer;
  12202. function CreateHardLinkA;
  12203. begin
  12204. GetProcedureAddress(_CreateHardLinkA, kernel32, 'CreateHardLinkA');
  12205. asm
  12206. MOV ESP, EBP
  12207. POP EBP
  12208. JMP [_CreateHardLinkA]
  12209. end;
  12210. end;
  12211. var
  12212. _CreateHardLinkW: Pointer;
  12213. function CreateHardLinkW;
  12214. begin
  12215. GetProcedureAddress(_CreateHardLinkW, kernel32, 'CreateHardLinkW');
  12216. asm
  12217. MOV ESP, EBP
  12218. POP EBP
  12219. JMP [_CreateHardLinkW]
  12220. end;
  12221. end;
  12222. var
  12223. _CreateHardLink: Pointer;
  12224. function CreateHardLink;
  12225. begin
  12226. GetProcedureAddress(_CreateHardLink, kernel32, 'CreateHardLink' + AWSuffix);
  12227. asm
  12228. MOV ESP, EBP
  12229. POP EBP
  12230. JMP [_CreateHardLink]
  12231. end;
  12232. end;
  12233. var
  12234. _FindFirstStreamW: Pointer;
  12235. function FindFirstStreamW;
  12236. begin
  12237. GetProcedureAddress(_FindFirstStreamW, kernel32, 'FindFirstStreamW');
  12238. asm
  12239. MOV ESP, EBP
  12240. POP EBP
  12241. JMP [_FindFirstStreamW]
  12242. end;
  12243. end;
  12244. var
  12245. _FindNextStreamW: Pointer;
  12246. function FindNextStreamW;
  12247. begin
  12248. GetProcedureAddress(_FindNextStreamW, kernel32, 'FindNextStreamW');
  12249. asm
  12250. MOV ESP, EBP
  12251. POP EBP
  12252. JMP [_FindNextStreamW]
  12253. end;
  12254. end;
  12255. var
  12256. _CreateNamedPipeA: Pointer;
  12257. function CreateNamedPipeA;
  12258. begin
  12259. GetProcedureAddress(_CreateNamedPipeA, kernel32, 'CreateNamedPipeA');
  12260. asm
  12261. MOV ESP, EBP
  12262. POP EBP
  12263. JMP [_CreateNamedPipeA]
  12264. end;
  12265. end;
  12266. var
  12267. _CreateNamedPipeW: Pointer;
  12268. function CreateNamedPipeW;
  12269. begin
  12270. GetProcedureAddress(_CreateNamedPipeW, kernel32, 'CreateNamedPipeW');
  12271. asm
  12272. MOV ESP, EBP
  12273. POP EBP
  12274. JMP [_CreateNamedPipeW]
  12275. end;
  12276. end;
  12277. var
  12278. _CreateNamedPipe: Pointer;
  12279. function CreateNamedPipe;
  12280. begin
  12281. GetProcedureAddress(_CreateNamedPipe, kernel32, 'CreateNamedPipe' + AWSuffix);
  12282. asm
  12283. MOV ESP, EBP
  12284. POP EBP
  12285. JMP [_CreateNamedPipe]
  12286. end;
  12287. end;
  12288. var
  12289. _GetNamedPipeHandleStateA: Pointer;
  12290. function GetNamedPipeHandleStateA;
  12291. begin
  12292. GetProcedureAddress(_GetNamedPipeHandleStateA, kernel32, 'GetNamedPipeHandleStateA');
  12293. asm
  12294. MOV ESP, EBP
  12295. POP EBP
  12296. JMP [_GetNamedPipeHandleStateA]
  12297. end;
  12298. end;
  12299. var
  12300. _GetNamedPipeHandleStateW: Pointer;
  12301. function GetNamedPipeHandleStateW;
  12302. begin
  12303. GetProcedureAddress(_GetNamedPipeHandleStateW, kernel32, 'GetNamedPipeHandleStateW');
  12304. asm
  12305. MOV ESP, EBP
  12306. POP EBP
  12307. JMP [_GetNamedPipeHandleStateW]
  12308. end;
  12309. end;
  12310. var
  12311. _GetNamedPipeHandleState: Pointer;
  12312. function GetNamedPipeHandleState;
  12313. begin
  12314. GetProcedureAddress(_GetNamedPipeHandleState, kernel32, 'GetNamedPipeHandleState' + AWSuffix);
  12315. asm
  12316. MOV ESP, EBP
  12317. POP EBP
  12318. JMP [_GetNamedPipeHandleState]
  12319. end;
  12320. end;
  12321. var
  12322. _CallNamedPipeA: Pointer;
  12323. function CallNamedPipeA;
  12324. begin
  12325. GetProcedureAddress(_CallNamedPipeA, kernel32, 'CallNamedPipeA');
  12326. asm
  12327. MOV ESP, EBP
  12328. POP EBP
  12329. JMP [_CallNamedPipeA]
  12330. end;
  12331. end;
  12332. var
  12333. _CallNamedPipeW: Pointer;
  12334. function CallNamedPipeW;
  12335. begin
  12336. GetProcedureAddress(_CallNamedPipeW, kernel32, 'CallNamedPipeW');
  12337. asm
  12338. MOV ESP, EBP
  12339. POP EBP
  12340. JMP [_CallNamedPipeW]
  12341. end;
  12342. end;
  12343. var
  12344. _CallNamedPipe: Pointer;
  12345. function CallNamedPipe;
  12346. begin
  12347. GetProcedureAddress(_CallNamedPipe, kernel32, 'CallNamedPipe' + AWSuffix);
  12348. asm
  12349. MOV ESP, EBP
  12350. POP EBP
  12351. JMP [_CallNamedPipe]
  12352. end;
  12353. end;
  12354. var
  12355. _WaitNamedPipeA: Pointer;
  12356. function WaitNamedPipeA;
  12357. begin
  12358. GetProcedureAddress(_WaitNamedPipeA, kernel32, 'WaitNamedPipeA');
  12359. asm
  12360. MOV ESP, EBP
  12361. POP EBP
  12362. JMP [_WaitNamedPipeA]
  12363. end;
  12364. end;
  12365. var
  12366. _WaitNamedPipeW: Pointer;
  12367. function WaitNamedPipeW;
  12368. begin
  12369. GetProcedureAddress(_WaitNamedPipeW, kernel32, 'WaitNamedPipeW');
  12370. asm
  12371. MOV ESP, EBP
  12372. POP EBP
  12373. JMP [_WaitNamedPipeW]
  12374. end;
  12375. end;
  12376. var
  12377. _WaitNamedPipe: Pointer;
  12378. function WaitNamedPipe;
  12379. begin
  12380. GetProcedureAddress(_WaitNamedPipe, kernel32, 'WaitNamedPipe' + AWSuffix);
  12381. asm
  12382. MOV ESP, EBP
  12383. POP EBP
  12384. JMP [_WaitNamedPipe]
  12385. end;
  12386. end;
  12387. var
  12388. _SetVolumeLabelA: Pointer;
  12389. function SetVolumeLabelA;
  12390. begin
  12391. GetProcedureAddress(_SetVolumeLabelA, kernel32, 'SetVolumeLabelA');
  12392. asm
  12393. MOV ESP, EBP
  12394. POP EBP
  12395. JMP [_SetVolumeLabelA]
  12396. end;
  12397. end;
  12398. var
  12399. _SetVolumeLabelW: Pointer;
  12400. function SetVolumeLabelW;
  12401. begin
  12402. GetProcedureAddress(_SetVolumeLabelW, kernel32, 'SetVolumeLabelW');
  12403. asm
  12404. MOV ESP, EBP
  12405. POP EBP
  12406. JMP [_SetVolumeLabelW]
  12407. end;
  12408. end;
  12409. var
  12410. _SetVolumeLabel: Pointer;
  12411. function SetVolumeLabel;
  12412. begin
  12413. GetProcedureAddress(_SetVolumeLabel, kernel32, 'SetVolumeLabel' + AWSuffix);
  12414. asm
  12415. MOV ESP, EBP
  12416. POP EBP
  12417. JMP [_SetVolumeLabel]
  12418. end;
  12419. end;
  12420. var
  12421. _SetFileApisToOEM: Pointer;
  12422. procedure SetFileApisToOEM;
  12423. begin
  12424. GetProcedureAddress(_SetFileApisToOEM, kernel32, 'SetFileApisToOEM');
  12425. asm
  12426. MOV ESP, EBP
  12427. POP EBP
  12428. JMP [_SetFileApisToOEM]
  12429. end;
  12430. end;
  12431. var
  12432. _SetFileApisToANSI: Pointer;
  12433. procedure SetFileApisToANSI;
  12434. begin
  12435. GetProcedureAddress(_SetFileApisToANSI, kernel32, 'SetFileApisToANSI');
  12436. asm
  12437. MOV ESP, EBP
  12438. POP EBP
  12439. JMP [_SetFileApisToANSI]
  12440. end;
  12441. end;
  12442. var
  12443. _AreFileApisANSI: Pointer;
  12444. function AreFileApisANSI;
  12445. begin
  12446. GetProcedureAddress(_AreFileApisANSI, kernel32, 'AreFileApisANSI');
  12447. asm
  12448. MOV ESP, EBP
  12449. POP EBP
  12450. JMP [_AreFileApisANSI]
  12451. end;
  12452. end;
  12453. var
  12454. _GetVolumeInformationA: Pointer;
  12455. function GetVolumeInformationA;
  12456. begin
  12457. GetProcedureAddress(_GetVolumeInformationA, kernel32, 'GetVolumeInformationA');
  12458. asm
  12459. MOV ESP, EBP
  12460. POP EBP
  12461. JMP [_GetVolumeInformationA]
  12462. end;
  12463. end;
  12464. var
  12465. _GetVolumeInformationW: Pointer;
  12466. function GetVolumeInformationW;
  12467. begin
  12468. GetProcedureAddress(_GetVolumeInformationW, kernel32, 'GetVolumeInformationW');
  12469. asm
  12470. MOV ESP, EBP
  12471. POP EBP
  12472. JMP [_GetVolumeInformationW]
  12473. end;
  12474. end;
  12475. var
  12476. _GetVolumeInformation: Pointer;
  12477. function GetVolumeInformation;
  12478. begin
  12479. GetProcedureAddress(_GetVolumeInformation, kernel32, 'GetVolumeInformation' + AWSuffix);
  12480. asm
  12481. MOV ESP, EBP
  12482. POP EBP
  12483. JMP [_GetVolumeInformation]
  12484. end;
  12485. end;
  12486. var
  12487. _CancelIo: Pointer;
  12488. function CancelIo;
  12489. begin
  12490. GetProcedureAddress(_CancelIo, kernel32, 'CancelIo');
  12491. asm
  12492. MOV ESP, EBP
  12493. POP EBP
  12494. JMP [_CancelIo]
  12495. end;
  12496. end;
  12497. var
  12498. _ClearEventLogA: Pointer;
  12499. function ClearEventLogA;
  12500. begin
  12501. GetProcedureAddress(_ClearEventLogA, advapi32, 'ClearEventLogA');
  12502. asm
  12503. MOV ESP, EBP
  12504. POP EBP
  12505. JMP [_ClearEventLogA]
  12506. end;
  12507. end;
  12508. var
  12509. _ClearEventLogW: Pointer;
  12510. function ClearEventLogW;
  12511. begin
  12512. GetProcedureAddress(_ClearEventLogW, advapi32, 'ClearEventLogW');
  12513. asm
  12514. MOV ESP, EBP
  12515. POP EBP
  12516. JMP [_ClearEventLogW]
  12517. end;
  12518. end;
  12519. var
  12520. _ClearEventLog: Pointer;
  12521. function ClearEventLog;
  12522. begin
  12523. GetProcedureAddress(_ClearEventLog, advapi32, 'ClearEventLog' + AWSuffix);
  12524. asm
  12525. MOV ESP, EBP
  12526. POP EBP
  12527. JMP [_ClearEventLog]
  12528. end;
  12529. end;
  12530. var
  12531. _BackupEventLogA: Pointer;
  12532. function BackupEventLogA;
  12533. begin
  12534. GetProcedureAddress(_BackupEventLogA, advapi32, 'BackupEventLogA');
  12535. asm
  12536. MOV ESP, EBP
  12537. POP EBP
  12538. JMP [_BackupEventLogA]
  12539. end;
  12540. end;
  12541. var
  12542. _BackupEventLogW: Pointer;
  12543. function BackupEventLogW;
  12544. begin
  12545. GetProcedureAddress(_BackupEventLogW, advapi32, 'BackupEventLogW');
  12546. asm
  12547. MOV ESP, EBP
  12548. POP EBP
  12549. JMP [_BackupEventLogW]
  12550. end;
  12551. end;
  12552. var
  12553. _BackupEventLog: Pointer;
  12554. function BackupEventLog;
  12555. begin
  12556. GetProcedureAddress(_BackupEventLog, advapi32, 'BackupEventLog' + AWSuffix);
  12557. asm
  12558. MOV ESP, EBP
  12559. POP EBP
  12560. JMP [_BackupEventLog]
  12561. end;
  12562. end;
  12563. var
  12564. _CloseEventLog: Pointer;
  12565. function CloseEventLog;
  12566. begin
  12567. GetProcedureAddress(_CloseEventLog, advapi32, 'CloseEventLog');
  12568. asm
  12569. MOV ESP, EBP
  12570. POP EBP
  12571. JMP [_CloseEventLog]
  12572. end;
  12573. end;
  12574. var
  12575. _DeregisterEventSource: Pointer;
  12576. function DeregisterEventSource;
  12577. begin
  12578. GetProcedureAddress(_DeregisterEventSource, advapi32, 'DeregisterEventSource');
  12579. asm
  12580. MOV ESP, EBP
  12581. POP EBP
  12582. JMP [_DeregisterEventSource]
  12583. end;
  12584. end;
  12585. var
  12586. _NotifyChangeEventLog: Pointer;
  12587. function NotifyChangeEventLog;
  12588. begin
  12589. GetProcedureAddress(_NotifyChangeEventLog, advapi32, 'NotifyChangeEventLog');
  12590. asm
  12591. MOV ESP, EBP
  12592. POP EBP
  12593. JMP [_NotifyChangeEventLog]
  12594. end;
  12595. end;
  12596. var
  12597. _GetNumberOfEventLogRecords: Pointer;
  12598. function GetNumberOfEventLogRecords;
  12599. begin
  12600. GetProcedureAddress(_GetNumberOfEventLogRecords, advapi32, 'GetNumberOfEventLogRecords');
  12601. asm
  12602. MOV ESP, EBP
  12603. POP EBP
  12604. JMP [_GetNumberOfEventLogRecords]
  12605. end;
  12606. end;
  12607. var
  12608. _GetOldestEventLogRecord: Pointer;
  12609. function GetOldestEventLogRecord;
  12610. begin
  12611. GetProcedureAddress(_GetOldestEventLogRecord, advapi32, 'GetOldestEventLogRecord');
  12612. asm
  12613. MOV ESP, EBP
  12614. POP EBP
  12615. JMP [_GetOldestEventLogRecord]
  12616. end;
  12617. end;
  12618. var
  12619. _OpenEventLogA: Pointer;
  12620. function OpenEventLogA;
  12621. begin
  12622. GetProcedureAddress(_OpenEventLogA, advapi32, 'OpenEventLogA');
  12623. asm
  12624. MOV ESP, EBP
  12625. POP EBP
  12626. JMP [_OpenEventLogA]
  12627. end;
  12628. end;
  12629. var
  12630. _OpenEventLogW: Pointer;
  12631. function OpenEventLogW;
  12632. begin
  12633. GetProcedureAddress(_OpenEventLogW, advapi32, 'OpenEventLogW');
  12634. asm
  12635. MOV ESP, EBP
  12636. POP EBP
  12637. JMP [_OpenEventLogW]
  12638. end;
  12639. end;
  12640. var
  12641. _OpenEventLog: Pointer;
  12642. function OpenEventLog;
  12643. begin
  12644. GetProcedureAddress(_OpenEventLog, advapi32, 'OpenEventLog' + AWSuffix);
  12645. asm
  12646. MOV ESP, EBP
  12647. POP EBP
  12648. JMP [_OpenEventLog]
  12649. end;
  12650. end;
  12651. var
  12652. _RegisterEventSourceA: Pointer;
  12653. function RegisterEventSourceA;
  12654. begin
  12655. GetProcedureAddress(_RegisterEventSourceA, advapi32, 'RegisterEventSourceA');
  12656. asm
  12657. MOV ESP, EBP
  12658. POP EBP
  12659. JMP [_RegisterEventSourceA]
  12660. end;
  12661. end;
  12662. var
  12663. _RegisterEventSourceW: Pointer;
  12664. function RegisterEventSourceW;
  12665. begin
  12666. GetProcedureAddress(_RegisterEventSourceW, advapi32, 'RegisterEventSourceW');
  12667. asm
  12668. MOV ESP, EBP
  12669. POP EBP
  12670. JMP [_RegisterEventSourceW]
  12671. end;
  12672. end;
  12673. var
  12674. _RegisterEventSource: Pointer;
  12675. function RegisterEventSource;
  12676. begin
  12677. GetProcedureAddress(_RegisterEventSource, advapi32, 'RegisterEventSource' + AWSuffix);
  12678. asm
  12679. MOV ESP, EBP
  12680. POP EBP
  12681. JMP [_RegisterEventSource]
  12682. end;
  12683. end;
  12684. var
  12685. _OpenBackupEventLogA: Pointer;
  12686. function OpenBackupEventLogA;
  12687. begin
  12688. GetProcedureAddress(_OpenBackupEventLogA, advapi32, 'OpenBackupEventLogA');
  12689. asm
  12690. MOV ESP, EBP
  12691. POP EBP
  12692. JMP [_OpenBackupEventLogA]
  12693. end;
  12694. end;
  12695. var
  12696. _OpenBackupEventLogW: Pointer;
  12697. function OpenBackupEventLogW;
  12698. begin
  12699. GetProcedureAddress(_OpenBackupEventLogW, advapi32, 'OpenBackupEventLogW');
  12700. asm
  12701. MOV ESP, EBP
  12702. POP EBP
  12703. JMP [_OpenBackupEventLogW]
  12704. end;
  12705. end;
  12706. var
  12707. _OpenBackupEventLog: Pointer;
  12708. function OpenBackupEventLog;
  12709. begin
  12710. GetProcedureAddress(_OpenBackupEventLog, advapi32, 'OpenBackupEventLog' + AWSuffix);
  12711. asm
  12712. MOV ESP, EBP
  12713. POP EBP
  12714. JMP [_OpenBackupEventLog]
  12715. end;
  12716. end;
  12717. var
  12718. _ReadEventLogA: Pointer;
  12719. function ReadEventLogA;
  12720. begin
  12721. GetProcedureAddress(_ReadEventLogA, advapi32, 'ReadEventLogA');
  12722. asm
  12723. MOV ESP, EBP
  12724. POP EBP
  12725. JMP [_ReadEventLogA]
  12726. end;
  12727. end;
  12728. var
  12729. _ReadEventLogW: Pointer;
  12730. function ReadEventLogW;
  12731. begin
  12732. GetProcedureAddress(_ReadEventLogW, advapi32, 'ReadEventLogW');
  12733. asm
  12734. MOV ESP, EBP
  12735. POP EBP
  12736. JMP [_ReadEventLogW]
  12737. end;
  12738. end;
  12739. var
  12740. _ReadEventLog: Pointer;
  12741. function ReadEventLog;
  12742. begin
  12743. GetProcedureAddress(_ReadEventLog, advapi32, 'ReadEventLog' + AWSuffix);
  12744. asm
  12745. MOV ESP, EBP
  12746. POP EBP
  12747. JMP [_ReadEventLog]
  12748. end;
  12749. end;
  12750. var
  12751. _ReportEventA: Pointer;
  12752. function ReportEventA;
  12753. begin
  12754. GetProcedureAddress(_ReportEventA, advapi32, 'ReportEventA');
  12755. asm
  12756. MOV ESP, EBP
  12757. POP EBP
  12758. JMP [_ReportEventA]
  12759. end;
  12760. end;
  12761. var
  12762. _ReportEventW: Pointer;
  12763. function ReportEventW;
  12764. begin
  12765. GetProcedureAddress(_ReportEventW, advapi32, 'ReportEventW');
  12766. asm
  12767. MOV ESP, EBP
  12768. POP EBP
  12769. JMP [_ReportEventW]
  12770. end;
  12771. end;
  12772. var
  12773. _ReportEvent: Pointer;
  12774. function ReportEvent;
  12775. begin
  12776. GetProcedureAddress(_ReportEvent, advapi32, 'ReportEvent' + AWSuffix);
  12777. asm
  12778. MOV ESP, EBP
  12779. POP EBP
  12780. JMP [_ReportEvent]
  12781. end;
  12782. end;
  12783. var
  12784. _GetEventLogInformation: Pointer;
  12785. function GetEventLogInformation;
  12786. begin
  12787. GetProcedureAddress(_GetEventLogInformation, advapi32, 'GetEventLogInformation');
  12788. asm
  12789. MOV ESP, EBP
  12790. POP EBP
  12791. JMP [_GetEventLogInformation]
  12792. end;
  12793. end;
  12794. var
  12795. _DuplicateToken: Pointer;
  12796. function DuplicateToken;
  12797. begin
  12798. GetProcedureAddress(_DuplicateToken, advapi32, 'DuplicateToken');
  12799. asm
  12800. MOV ESP, EBP
  12801. POP EBP
  12802. JMP [_DuplicateToken]
  12803. end;
  12804. end;
  12805. var
  12806. _GetKernelObjectSecurity: Pointer;
  12807. function GetKernelObjectSecurity;
  12808. begin
  12809. GetProcedureAddress(_GetKernelObjectSecurity, advapi32, 'GetKernelObjectSecurity');
  12810. asm
  12811. MOV ESP, EBP
  12812. POP EBP
  12813. JMP [_GetKernelObjectSecurity]
  12814. end;
  12815. end;
  12816. var
  12817. _ImpersonateNamedPipeClient: Pointer;
  12818. function ImpersonateNamedPipeClient;
  12819. begin
  12820. GetProcedureAddress(_ImpersonateNamedPipeClient, advapi32, 'ImpersonateNamedPipeClient');
  12821. asm
  12822. MOV ESP, EBP
  12823. POP EBP
  12824. JMP [_ImpersonateNamedPipeClient]
  12825. end;
  12826. end;
  12827. var
  12828. _ImpersonateSelf: Pointer;
  12829. function ImpersonateSelf;
  12830. begin
  12831. GetProcedureAddress(_ImpersonateSelf, advapi32, 'ImpersonateSelf');
  12832. asm
  12833. MOV ESP, EBP
  12834. POP EBP
  12835. JMP [_ImpersonateSelf]
  12836. end;
  12837. end;
  12838. var
  12839. _RevertToSelf: Pointer;
  12840. function RevertToSelf;
  12841. begin
  12842. GetProcedureAddress(_RevertToSelf, advapi32, 'RevertToSelf');
  12843. asm
  12844. MOV ESP, EBP
  12845. POP EBP
  12846. JMP [_RevertToSelf]
  12847. end;
  12848. end;
  12849. var
  12850. _SetThreadToken: Pointer;
  12851. function SetThreadToken;
  12852. begin
  12853. GetProcedureAddress(_SetThreadToken, advapi32, 'SetThreadToken');
  12854. asm
  12855. MOV ESP, EBP
  12856. POP EBP
  12857. JMP [_SetThreadToken]
  12858. end;
  12859. end;
  12860. var
  12861. _AccessCheck: Pointer;
  12862. function AccessCheck;
  12863. begin
  12864. GetProcedureAddress(_AccessCheck, advapi32, 'AccessCheck');
  12865. asm
  12866. MOV ESP, EBP
  12867. POP EBP
  12868. JMP [_AccessCheck]
  12869. end;
  12870. end;
  12871. var
  12872. _AccessCheckByType: Pointer;
  12873. function AccessCheckByType;
  12874. begin
  12875. GetProcedureAddress(_AccessCheckByType, advapi32, 'AccessCheckByType');
  12876. asm
  12877. MOV ESP, EBP
  12878. POP EBP
  12879. JMP [_AccessCheckByType]
  12880. end;
  12881. end;
  12882. var
  12883. _AccessCheckByTypeResultList: Pointer;
  12884. function AccessCheckByTypeResultList;
  12885. begin
  12886. GetProcedureAddress(_AccessCheckByTypeResultList, advapi32, 'AccessCheckByTypeResultList');
  12887. asm
  12888. MOV ESP, EBP
  12889. POP EBP
  12890. JMP [_AccessCheckByTypeResultList]
  12891. end;
  12892. end;
  12893. var
  12894. _OpenProcessToken: Pointer;
  12895. function OpenProcessToken;
  12896. begin
  12897. GetProcedureAddress(_OpenProcessToken, advapi32, 'OpenProcessToken');
  12898. asm
  12899. MOV ESP, EBP
  12900. POP EBP
  12901. JMP [_OpenProcessToken]
  12902. end;
  12903. end;
  12904. var
  12905. _OpenThreadToken: Pointer;
  12906. function OpenThreadToken;
  12907. begin
  12908. GetProcedureAddress(_OpenThreadToken, advapi32, 'OpenThreadToken');
  12909. asm
  12910. MOV ESP, EBP
  12911. POP EBP
  12912. JMP [_OpenThreadToken]
  12913. end;
  12914. end;
  12915. var
  12916. _GetTokenInformation: Pointer;
  12917. function GetTokenInformation;
  12918. begin
  12919. GetProcedureAddress(_GetTokenInformation, advapi32, 'GetTokenInformation');
  12920. asm
  12921. MOV ESP, EBP
  12922. POP EBP
  12923. JMP [_GetTokenInformation]
  12924. end;
  12925. end;
  12926. var
  12927. _SetTokenInformation: Pointer;
  12928. function SetTokenInformation;
  12929. begin
  12930. GetProcedureAddress(_SetTokenInformation, advapi32, 'SetTokenInformation');
  12931. asm
  12932. MOV ESP, EBP
  12933. POP EBP
  12934. JMP [_SetTokenInformation]
  12935. end;
  12936. end;
  12937. var
  12938. _AdjustTokenPrivileges: Pointer;
  12939. function AdjustTokenPrivileges;
  12940. begin
  12941. GetProcedureAddress(_AdjustTokenPrivileges, advapi32, 'AdjustTokenPrivileges');
  12942. asm
  12943. MOV ESP, EBP
  12944. POP EBP
  12945. JMP [_AdjustTokenPrivileges]
  12946. end;
  12947. end;
  12948. var
  12949. _AdjustTokenGroups: Pointer;
  12950. function AdjustTokenGroups;
  12951. begin
  12952. GetProcedureAddress(_AdjustTokenGroups, advapi32, 'AdjustTokenGroups');
  12953. asm
  12954. MOV ESP, EBP
  12955. POP EBP
  12956. JMP [_AdjustTokenGroups]
  12957. end;
  12958. end;
  12959. var
  12960. _PrivilegeCheck: Pointer;
  12961. function PrivilegeCheck;
  12962. begin
  12963. GetProcedureAddress(_PrivilegeCheck, advapi32, 'PrivilegeCheck');
  12964. asm
  12965. MOV ESP, EBP
  12966. POP EBP
  12967. JMP [_PrivilegeCheck]
  12968. end;
  12969. end;
  12970. var
  12971. _AccessCheckAndAuditAlarmA: Pointer;
  12972. function AccessCheckAndAuditAlarmA;
  12973. begin
  12974. GetProcedureAddress(_AccessCheckAndAuditAlarmA, advapi32, 'AccessCheckAndAuditAlarmA');
  12975. asm
  12976. MOV ESP, EBP
  12977. POP EBP
  12978. JMP [_AccessCheckAndAuditAlarmA]
  12979. end;
  12980. end;
  12981. var
  12982. _AccessCheckAndAuditAlarmW: Pointer;
  12983. function AccessCheckAndAuditAlarmW;
  12984. begin
  12985. GetProcedureAddress(_AccessCheckAndAuditAlarmW, advapi32, 'AccessCheckAndAuditAlarmW');
  12986. asm
  12987. MOV ESP, EBP
  12988. POP EBP
  12989. JMP [_AccessCheckAndAuditAlarmW]
  12990. end;
  12991. end;
  12992. var
  12993. _AccessCheckAndAuditAlarm: Pointer;
  12994. function AccessCheckAndAuditAlarm;
  12995. begin
  12996. GetProcedureAddress(_AccessCheckAndAuditAlarm, advapi32, 'AccessCheckAndAuditAlarm' + AWSuffix);
  12997. asm
  12998. MOV ESP, EBP
  12999. POP EBP
  13000. JMP [_AccessCheckAndAuditAlarm]
  13001. end;
  13002. end;
  13003. var
  13004. _AccessCheckByTypeAndAuditAlarmA: Pointer;
  13005. function AccessCheckByTypeAndAuditAlarmA;
  13006. begin
  13007. GetProcedureAddress(_AccessCheckByTypeAndAuditAlarmA, advapi32, 'AccessCheckByTypeAndAuditAlarmA');
  13008. asm
  13009. MOV ESP, EBP
  13010. POP EBP
  13011. JMP [_AccessCheckByTypeAndAuditAlarmA]
  13012. end;
  13013. end;
  13014. var
  13015. _AccessCheckByTypeAndAuditAlarmW: Pointer;
  13016. function AccessCheckByTypeAndAuditAlarmW;
  13017. begin
  13018. GetProcedureAddress(_AccessCheckByTypeAndAuditAlarmW, advapi32, 'AccessCheckByTypeAndAuditAlarmW');
  13019. asm
  13020. MOV ESP, EBP
  13021. POP EBP
  13022. JMP [_AccessCheckByTypeAndAuditAlarmW]
  13023. end;
  13024. end;
  13025. var
  13026. _AccessCheckByTypeAndAuditAlarm: Pointer;
  13027. function AccessCheckByTypeAndAuditAlarm;
  13028. begin
  13029. GetProcedureAddress(_AccessCheckByTypeAndAuditAlarm, advapi32, 'AccessCheckByTypeAndAuditAlarm' + AWSuffix);
  13030. asm
  13031. MOV ESP, EBP
  13032. POP EBP
  13033. JMP [_AccessCheckByTypeAndAuditAlarm]
  13034. end;
  13035. end;
  13036. var
  13037. _AccessCheckByTypeResultListAndA: Pointer;
  13038. function AccessCheckByTypeResultListAndAuditAlarmA;
  13039. begin
  13040. GetProcedureAddress(_AccessCheckByTypeResultListAndA, advapi32, 'AccessCheckByTypeResultListAndAuditAlarmA');
  13041. asm
  13042. MOV ESP, EBP
  13043. POP EBP
  13044. JMP [_AccessCheckByTypeResultListAndA]
  13045. end;
  13046. end;
  13047. var
  13048. _AccessCheckByTypeResultListAndW: Pointer;
  13049. function AccessCheckByTypeResultListAndAuditAlarmW;
  13050. begin
  13051. GetProcedureAddress(_AccessCheckByTypeResultListAndW, advapi32, 'AccessCheckByTypeResultListAndAuditAlarmW');
  13052. asm
  13053. MOV ESP, EBP
  13054. POP EBP
  13055. JMP [_AccessCheckByTypeResultListAndW]
  13056. end;
  13057. end;
  13058. var
  13059. _AccessCheckByTypeResultListAnd: Pointer;
  13060. function AccessCheckByTypeResultListAndAuditAlarm;
  13061. begin
  13062. GetProcedureAddress(_AccessCheckByTypeResultListAnd, advapi32, 'AccessCheckByTypeResultListAndAuditAlarm' + AWSuffix);
  13063. asm
  13064. MOV ESP, EBP
  13065. POP EBP
  13066. JMP [_AccessCheckByTypeResultListAnd]
  13067. end;
  13068. end;
  13069. var
  13070. _AccessCheckByTRLAndAAByHA: Pointer;
  13071. function AccessCheckByTypeResultListAndAuditAlarmByHandleA;
  13072. begin
  13073. GetProcedureAddress(_AccessCheckByTRLAndAAByHA, advapi32, 'AccessCheckByTypeResultListAndAuditAlarmByHandleA');
  13074. asm
  13075. MOV ESP, EBP
  13076. POP EBP
  13077. JMP [_AccessCheckByTRLAndAAByHA]
  13078. end;
  13079. end;
  13080. var
  13081. _AccessCheckByTRLAndAAByHW: Pointer;
  13082. function AccessCheckByTypeResultListAndAuditAlarmByHandleW;
  13083. begin
  13084. GetProcedureAddress(_AccessCheckByTRLAndAAByHW, advapi32, 'AccessCheckByTypeResultListAndAuditAlarmByHandleW');
  13085. asm
  13086. MOV ESP, EBP
  13087. POP EBP
  13088. JMP [_AccessCheckByTRLAndAAByHW]
  13089. end;
  13090. end;
  13091. var
  13092. _AccessCheckByTRLAndAAByH: Pointer;
  13093. function AccessCheckByTypeResultListAndAuditAlarmByHandle;
  13094. begin
  13095. GetProcedureAddress(_AccessCheckByTRLAndAAByH, advapi32, 'AccessCheckByTypeResultListAndAuditAlarmByHandle' + AWSuffix);
  13096. asm
  13097. MOV ESP, EBP
  13098. POP EBP
  13099. JMP [_AccessCheckByTRLAndAAByH]
  13100. end;
  13101. end;
  13102. var
  13103. _ObjectOpenAuditAlarmA: Pointer;
  13104. function ObjectOpenAuditAlarmA;
  13105. begin
  13106. GetProcedureAddress(_ObjectOpenAuditAlarmA, advapi32, 'ObjectOpenAuditAlarmA');
  13107. asm
  13108. MOV ESP, EBP
  13109. POP EBP
  13110. JMP [_ObjectOpenAuditAlarmA]
  13111. end;
  13112. end;
  13113. var
  13114. _ObjectOpenAuditAlarmW: Pointer;
  13115. function ObjectOpenAuditAlarmW;
  13116. begin
  13117. GetProcedureAddress(_ObjectOpenAuditAlarmW, advapi32, 'ObjectOpenAuditAlarmW');
  13118. asm
  13119. MOV ESP, EBP
  13120. POP EBP
  13121. JMP [_ObjectOpenAuditAlarmW]
  13122. end;
  13123. end;
  13124. var
  13125. _ObjectOpenAuditAlarm: Pointer;
  13126. function ObjectOpenAuditAlarm;
  13127. begin
  13128. GetProcedureAddress(_ObjectOpenAuditAlarm, advapi32, 'ObjectOpenAuditAlarm' + AWSuffix);
  13129. asm
  13130. MOV ESP, EBP
  13131. POP EBP
  13132. JMP [_ObjectOpenAuditAlarm]
  13133. end;
  13134. end;
  13135. var
  13136. _ObjectPrivilegeAuditAlarmA: Pointer;
  13137. function ObjectPrivilegeAuditAlarmA;
  13138. begin
  13139. GetProcedureAddress(_ObjectPrivilegeAuditAlarmA, advapi32, 'ObjectPrivilegeAuditAlarmA');
  13140. asm
  13141. MOV ESP, EBP
  13142. POP EBP
  13143. JMP [_ObjectPrivilegeAuditAlarmA]
  13144. end;
  13145. end;
  13146. var
  13147. _ObjectPrivilegeAuditAlarmW: Pointer;
  13148. function ObjectPrivilegeAuditAlarmW;
  13149. begin
  13150. GetProcedureAddress(_ObjectPrivilegeAuditAlarmW, advapi32, 'ObjectPrivilegeAuditAlarmW');
  13151. asm
  13152. MOV ESP, EBP
  13153. POP EBP
  13154. JMP [_ObjectPrivilegeAuditAlarmW]
  13155. end;
  13156. end;
  13157. var
  13158. _ObjectPrivilegeAuditAlarm: Pointer;
  13159. function ObjectPrivilegeAuditAlarm;
  13160. begin
  13161. GetProcedureAddress(_ObjectPrivilegeAuditAlarm, advapi32, 'ObjectPrivilegeAuditAlarm' + AWSuffix);
  13162. asm
  13163. MOV ESP, EBP
  13164. POP EBP
  13165. JMP [_ObjectPrivilegeAuditAlarm]
  13166. end;
  13167. end;
  13168. var
  13169. _ObjectCloseAuditAlarmA: Pointer;
  13170. function ObjectCloseAuditAlarmA;
  13171. begin
  13172. GetProcedureAddress(_ObjectCloseAuditAlarmA, advapi32, 'ObjectCloseAuditAlarmA');
  13173. asm
  13174. MOV ESP, EBP
  13175. POP EBP
  13176. JMP [_ObjectCloseAuditAlarmA]
  13177. end;
  13178. end;
  13179. var
  13180. _ObjectCloseAuditAlarmW: Pointer;
  13181. function ObjectCloseAuditAlarmW;
  13182. begin
  13183. GetProcedureAddress(_ObjectCloseAuditAlarmW, advapi32, 'ObjectCloseAuditAlarmW');
  13184. asm
  13185. MOV ESP, EBP
  13186. POP EBP
  13187. JMP [_ObjectCloseAuditAlarmW]
  13188. end;
  13189. end;
  13190. var
  13191. _ObjectCloseAuditAlarm: Pointer;
  13192. function ObjectCloseAuditAlarm;
  13193. begin
  13194. GetProcedureAddress(_ObjectCloseAuditAlarm, advapi32, 'ObjectCloseAuditAlarm' + AWSuffix);
  13195. asm
  13196. MOV ESP, EBP
  13197. POP EBP
  13198. JMP [_ObjectCloseAuditAlarm]
  13199. end;
  13200. end;
  13201. var
  13202. _ObjectDeleteAuditAlarmA: Pointer;
  13203. function ObjectDeleteAuditAlarmA;
  13204. begin
  13205. GetProcedureAddress(_ObjectDeleteAuditAlarmA, advapi32, 'ObjectDeleteAuditAlarmA');
  13206. asm
  13207. MOV ESP, EBP
  13208. POP EBP
  13209. JMP [_ObjectDeleteAuditAlarmA]
  13210. end;
  13211. end;
  13212. var
  13213. _ObjectDeleteAuditAlarmW: Pointer;
  13214. function ObjectDeleteAuditAlarmW;
  13215. begin
  13216. GetProcedureAddress(_ObjectDeleteAuditAlarmW, advapi32, 'ObjectDeleteAuditAlarmW');
  13217. asm
  13218. MOV ESP, EBP
  13219. POP EBP
  13220. JMP [_ObjectDeleteAuditAlarmW]
  13221. end;
  13222. end;
  13223. var
  13224. _ObjectDeleteAuditAlarm: Pointer;
  13225. function ObjectDeleteAuditAlarm;
  13226. begin
  13227. GetProcedureAddress(_ObjectDeleteAuditAlarm, advapi32, 'ObjectDeleteAuditAlarm' + AWSuffix);
  13228. asm
  13229. MOV ESP, EBP
  13230. POP EBP
  13231. JMP [_ObjectDeleteAuditAlarm]
  13232. end;
  13233. end;
  13234. var
  13235. _PrivilegedServiceAuditAlarmA: Pointer;
  13236. function PrivilegedServiceAuditAlarmA;
  13237. begin
  13238. GetProcedureAddress(_PrivilegedServiceAuditAlarmA, advapi32, 'PrivilegedServiceAuditAlarmA');
  13239. asm
  13240. MOV ESP, EBP
  13241. POP EBP
  13242. JMP [_PrivilegedServiceAuditAlarmA]
  13243. end;
  13244. end;
  13245. var
  13246. _PrivilegedServiceAuditAlarmW: Pointer;
  13247. function PrivilegedServiceAuditAlarmW;
  13248. begin
  13249. GetProcedureAddress(_PrivilegedServiceAuditAlarmW, advapi32, 'PrivilegedServiceAuditAlarmW');
  13250. asm
  13251. MOV ESP, EBP
  13252. POP EBP
  13253. JMP [_PrivilegedServiceAuditAlarmW]
  13254. end;
  13255. end;
  13256. var
  13257. _PrivilegedServiceAuditAlarm: Pointer;
  13258. function PrivilegedServiceAuditAlarm;
  13259. begin
  13260. GetProcedureAddress(_PrivilegedServiceAuditAlarm, advapi32, 'PrivilegedServiceAuditAlarm' + AWSuffix);
  13261. asm
  13262. MOV ESP, EBP
  13263. POP EBP
  13264. JMP [_PrivilegedServiceAuditAlarm]
  13265. end;
  13266. end;
  13267. var
  13268. _IsWellKnownSid: Pointer;
  13269. function IsWellKnownSid;
  13270. begin
  13271. GetProcedureAddress(_IsWellKnownSid, advapi32, 'IsWellKnownSid');
  13272. asm
  13273. MOV ESP, EBP
  13274. POP EBP
  13275. JMP [_IsWellKnownSid]
  13276. end;
  13277. end;
  13278. var
  13279. _CreateWellKnownSid: Pointer;
  13280. function CreateWellKnownSid;
  13281. begin
  13282. GetProcedureAddress(_CreateWellKnownSid, advapi32, 'CreateWellKnownSid');
  13283. asm
  13284. MOV ESP, EBP
  13285. POP EBP
  13286. JMP [_CreateWellKnownSid]
  13287. end;
  13288. end;
  13289. var
  13290. _EqualDomainSid: Pointer;
  13291. function EqualDomainSid;
  13292. begin
  13293. GetProcedureAddress(_EqualDomainSid, advapi32, 'EqualDomainSid');
  13294. asm
  13295. MOV ESP, EBP
  13296. POP EBP
  13297. JMP [_EqualDomainSid]
  13298. end;
  13299. end;
  13300. var
  13301. _GetWindowsAccountDomainSid: Pointer;
  13302. function GetWindowsAccountDomainSid;
  13303. begin
  13304. GetProcedureAddress(_GetWindowsAccountDomainSid, advapi32, 'GetWindowsAccountDomainSid');
  13305. asm
  13306. MOV ESP, EBP
  13307. POP EBP
  13308. JMP [_GetWindowsAccountDomainSid]
  13309. end;
  13310. end;
  13311. var
  13312. _IsValidSid: Pointer;
  13313. function IsValidSid;
  13314. begin
  13315. GetProcedureAddress(_IsValidSid, advapi32, 'IsValidSid');
  13316. asm
  13317. MOV ESP, EBP
  13318. POP EBP
  13319. JMP [_IsValidSid]
  13320. end;
  13321. end;
  13322. var
  13323. _EqualSid: Pointer;
  13324. function EqualSid;
  13325. begin
  13326. GetProcedureAddress(_EqualSid, advapi32, 'EqualSid');
  13327. asm
  13328. MOV ESP, EBP
  13329. POP EBP
  13330. JMP [_EqualSid]
  13331. end;
  13332. end;
  13333. var
  13334. _EqualPrefixSid: Pointer;
  13335. function EqualPrefixSid;
  13336. begin
  13337. GetProcedureAddress(_EqualPrefixSid, advapi32, 'EqualPrefixSid');
  13338. asm
  13339. MOV ESP, EBP
  13340. POP EBP
  13341. JMP [_EqualPrefixSid]
  13342. end;
  13343. end;
  13344. var
  13345. _GetSidLengthRequired: Pointer;
  13346. function GetSidLengthRequired;
  13347. begin
  13348. GetProcedureAddress(_GetSidLengthRequired, advapi32, 'GetSidLengthRequired');
  13349. asm
  13350. MOV ESP, EBP
  13351. POP EBP
  13352. JMP [_GetSidLengthRequired]
  13353. end;
  13354. end;
  13355. var
  13356. _AllocateAndInitializeSid: Pointer;
  13357. function AllocateAndInitializeSid;
  13358. begin
  13359. GetProcedureAddress(_AllocateAndInitializeSid, advapi32, 'AllocateAndInitializeSid');
  13360. asm
  13361. MOV ESP, EBP
  13362. POP EBP
  13363. JMP [_AllocateAndInitializeSid]
  13364. end;
  13365. end;
  13366. var
  13367. _FreeSid: Pointer;
  13368. function FreeSid;
  13369. begin
  13370. GetProcedureAddress(_FreeSid, advapi32, 'FreeSid');
  13371. asm
  13372. MOV ESP, EBP
  13373. POP EBP
  13374. JMP [_FreeSid]
  13375. end;
  13376. end;
  13377. var
  13378. _InitializeSid: Pointer;
  13379. function InitializeSid;
  13380. begin
  13381. GetProcedureAddress(_InitializeSid, advapi32, 'InitializeSid');
  13382. asm
  13383. MOV ESP, EBP
  13384. POP EBP
  13385. JMP [_InitializeSid]
  13386. end;
  13387. end;
  13388. var
  13389. _GetSidIdentifierAuthority: Pointer;
  13390. function GetSidIdentifierAuthority;
  13391. begin
  13392. GetProcedureAddress(_GetSidIdentifierAuthority, advapi32, 'GetSidIdentifierAuthority');
  13393. asm
  13394. MOV ESP, EBP
  13395. POP EBP
  13396. JMP [_GetSidIdentifierAuthority]
  13397. end;
  13398. end;
  13399. var
  13400. _GetSidSubAuthority: Pointer;
  13401. function GetSidSubAuthority;
  13402. begin
  13403. GetProcedureAddress(_GetSidSubAuthority, advapi32, 'GetSidSubAuthority');
  13404. asm
  13405. MOV ESP, EBP
  13406. POP EBP
  13407. JMP [_GetSidSubAuthority]
  13408. end;
  13409. end;
  13410. var
  13411. _GetSidSubAuthorityCount: Pointer;
  13412. function GetSidSubAuthorityCount;
  13413. begin
  13414. GetProcedureAddress(_GetSidSubAuthorityCount, advapi32, 'GetSidSubAuthorityCount');
  13415. asm
  13416. MOV ESP, EBP
  13417. POP EBP
  13418. JMP [_GetSidSubAuthorityCount]
  13419. end;
  13420. end;
  13421. var
  13422. _GetLengthSid: Pointer;
  13423. function GetLengthSid;
  13424. begin
  13425. GetProcedureAddress(_GetLengthSid, advapi32, 'GetLengthSid');
  13426. asm
  13427. MOV ESP, EBP
  13428. POP EBP
  13429. JMP [_GetLengthSid]
  13430. end;
  13431. end;
  13432. var
  13433. _CopySid: Pointer;
  13434. function CopySid;
  13435. begin
  13436. GetProcedureAddress(_CopySid, advapi32, 'CopySid');
  13437. asm
  13438. MOV ESP, EBP
  13439. POP EBP
  13440. JMP [_CopySid]
  13441. end;
  13442. end;
  13443. var
  13444. _AreAllAccessesGranted: Pointer;
  13445. function AreAllAccessesGranted;
  13446. begin
  13447. GetProcedureAddress(_AreAllAccessesGranted, advapi32, 'AreAllAccessesGranted');
  13448. asm
  13449. MOV ESP, EBP
  13450. POP EBP
  13451. JMP [_AreAllAccessesGranted]
  13452. end;
  13453. end;
  13454. var
  13455. _AreAnyAccessesGranted: Pointer;
  13456. function AreAnyAccessesGranted;
  13457. begin
  13458. GetProcedureAddress(_AreAnyAccessesGranted, advapi32, 'AreAnyAccessesGranted');
  13459. asm
  13460. MOV ESP, EBP
  13461. POP EBP
  13462. JMP [_AreAnyAccessesGranted]
  13463. end;
  13464. end;
  13465. var
  13466. _MapGenericMask: Pointer;
  13467. procedure MapGenericMask;
  13468. begin
  13469. GetProcedureAddress(_MapGenericMask, advapi32, 'MapGenericMask');
  13470. asm
  13471. MOV ESP, EBP
  13472. POP EBP
  13473. JMP [_MapGenericMask]
  13474. end;
  13475. end;
  13476. var
  13477. _IsValidAcl: Pointer;
  13478. function IsValidAcl;
  13479. begin
  13480. GetProcedureAddress(_IsValidAcl, advapi32, 'IsValidAcl');
  13481. asm
  13482. MOV ESP, EBP
  13483. POP EBP
  13484. JMP [_IsValidAcl]
  13485. end;
  13486. end;
  13487. var
  13488. _InitializeAcl: Pointer;
  13489. function InitializeAcl;
  13490. begin
  13491. GetProcedureAddress(_InitializeAcl, advapi32, 'InitializeAcl');
  13492. asm
  13493. MOV ESP, EBP
  13494. POP EBP
  13495. JMP [_InitializeAcl]
  13496. end;
  13497. end;
  13498. var
  13499. _GetAclInformation: Pointer;
  13500. function GetAclInformation;
  13501. begin
  13502. GetProcedureAddress(_GetAclInformation, advapi32, 'GetAclInformation');
  13503. asm
  13504. MOV ESP, EBP
  13505. POP EBP
  13506. JMP [_GetAclInformation]
  13507. end;
  13508. end;
  13509. var
  13510. _SetAclInformation: Pointer;
  13511. function SetAclInformation;
  13512. begin
  13513. GetProcedureAddress(_SetAclInformation, advapi32, 'SetAclInformation');
  13514. asm
  13515. MOV ESP, EBP
  13516. POP EBP
  13517. JMP [_SetAclInformation]
  13518. end;
  13519. end;
  13520. var
  13521. _AddAce: Pointer;
  13522. function AddAce;
  13523. begin
  13524. GetProcedureAddress(_AddAce, advapi32, 'AddAce');
  13525. asm
  13526. MOV ESP, EBP
  13527. POP EBP
  13528. JMP [_AddAce]
  13529. end;
  13530. end;
  13531. var
  13532. _DeleteAce: Pointer;
  13533. function DeleteAce;
  13534. begin
  13535. GetProcedureAddress(_DeleteAce, advapi32, 'DeleteAce');
  13536. asm
  13537. MOV ESP, EBP
  13538. POP EBP
  13539. JMP [_DeleteAce]
  13540. end;
  13541. end;
  13542. var
  13543. _GetAce: Pointer;
  13544. function GetAce;
  13545. begin
  13546. GetProcedureAddress(_GetAce, advapi32, 'GetAce');
  13547. asm
  13548. MOV ESP, EBP
  13549. POP EBP
  13550. JMP [_GetAce]
  13551. end;
  13552. end;
  13553. var
  13554. _AddAccessAllowedAce: Pointer;
  13555. function AddAccessAllowedAce;
  13556. begin
  13557. GetProcedureAddress(_AddAccessAllowedAce, advapi32, 'AddAccessAllowedAce');
  13558. asm
  13559. MOV ESP, EBP
  13560. POP EBP
  13561. JMP [_AddAccessAllowedAce]
  13562. end;
  13563. end;
  13564. var
  13565. _AddAccessAllowedAceEx: Pointer;
  13566. function AddAccessAllowedAceEx;
  13567. begin
  13568. GetProcedureAddress(_AddAccessAllowedAceEx, advapi32, 'AddAccessAllowedAceEx');
  13569. asm
  13570. MOV ESP, EBP
  13571. POP EBP
  13572. JMP [_AddAccessAllowedAceEx]
  13573. end;
  13574. end;
  13575. var
  13576. _AddAccessDeniedAce: Pointer;
  13577. function AddAccessDeniedAce;
  13578. begin
  13579. GetProcedureAddress(_AddAccessDeniedAce, advapi32, 'AddAccessDeniedAce');
  13580. asm
  13581. MOV ESP, EBP
  13582. POP EBP
  13583. JMP [_AddAccessDeniedAce]
  13584. end;
  13585. end;
  13586. var
  13587. _AddAccessDeniedAceEx: Pointer;
  13588. function AddAccessDeniedAceEx;
  13589. begin
  13590. GetProcedureAddress(_AddAccessDeniedAceEx, advapi32, 'AddAccessDeniedAceEx');
  13591. asm
  13592. MOV ESP, EBP
  13593. POP EBP
  13594. JMP [_AddAccessDeniedAceEx]
  13595. end;
  13596. end;
  13597. var
  13598. _AddAuditAccessAce: Pointer;
  13599. function AddAuditAccessAce;
  13600. begin
  13601. GetProcedureAddress(_AddAuditAccessAce, advapi32, 'AddAuditAccessAce');
  13602. asm
  13603. MOV ESP, EBP
  13604. POP EBP
  13605. JMP [_AddAuditAccessAce]
  13606. end;
  13607. end;
  13608. var
  13609. _AddAuditAccessAceEx: Pointer;
  13610. function AddAuditAccessAceEx;
  13611. begin
  13612. GetProcedureAddress(_AddAuditAccessAceEx, advapi32, 'AddAuditAccessAceEx');
  13613. asm
  13614. MOV ESP, EBP
  13615. POP EBP
  13616. JMP [_AddAuditAccessAceEx]
  13617. end;
  13618. end;
  13619. var
  13620. _AddAccessAllowedObjectAce: Pointer;
  13621. function AddAccessAllowedObjectAce;
  13622. begin
  13623. GetProcedureAddress(_AddAccessAllowedObjectAce, advapi32, 'AddAccessAllowedObjectAce');
  13624. asm
  13625. MOV ESP, EBP
  13626. POP EBP
  13627. JMP [_AddAccessAllowedObjectAce]
  13628. end;
  13629. end;
  13630. var
  13631. _AddAccessDeniedObjectAce: Pointer;
  13632. function AddAccessDeniedObjectAce;
  13633. begin
  13634. GetProcedureAddress(_AddAccessDeniedObjectAce, advapi32, 'AddAccessDeniedObjectAce');
  13635. asm
  13636. MOV ESP, EBP
  13637. POP EBP
  13638. JMP [_AddAccessDeniedObjectAce]
  13639. end;
  13640. end;
  13641. var
  13642. _AddAuditAccessObjectAce: Pointer;
  13643. function AddAuditAccessObjectAce;
  13644. begin
  13645. GetProcedureAddress(_AddAuditAccessObjectAce, advapi32, 'AddAuditAccessObjectAce');
  13646. asm
  13647. MOV ESP, EBP
  13648. POP EBP
  13649. JMP [_AddAuditAccessObjectAce]
  13650. end;
  13651. end;
  13652. var
  13653. _FindFirstFreeAce: Pointer;
  13654. function FindFirstFreeAce;
  13655. begin
  13656. GetProcedureAddress(_FindFirstFreeAce, advapi32, 'FindFirstFreeAce');
  13657. asm
  13658. MOV ESP, EBP
  13659. POP EBP
  13660. JMP [_FindFirstFreeAce]
  13661. end;
  13662. end;
  13663. var
  13664. _InitializeSecurityDescriptor: Pointer;
  13665. function InitializeSecurityDescriptor;
  13666. begin
  13667. GetProcedureAddress(_InitializeSecurityDescriptor, advapi32, 'InitializeSecurityDescriptor');
  13668. asm
  13669. MOV ESP, EBP
  13670. POP EBP
  13671. JMP [_InitializeSecurityDescriptor]
  13672. end;
  13673. end;
  13674. var
  13675. _IsValidSecurityDescriptor: Pointer;
  13676. function IsValidSecurityDescriptor;
  13677. begin
  13678. GetProcedureAddress(_IsValidSecurityDescriptor, advapi32, 'IsValidSecurityDescriptor');
  13679. asm
  13680. MOV ESP, EBP
  13681. POP EBP
  13682. JMP [_IsValidSecurityDescriptor]
  13683. end;
  13684. end;
  13685. var
  13686. _GetSecurityDescriptorLength: Pointer;
  13687. function GetSecurityDescriptorLength;
  13688. begin
  13689. GetProcedureAddress(_GetSecurityDescriptorLength, advapi32, 'GetSecurityDescriptorLength');
  13690. asm
  13691. MOV ESP, EBP
  13692. POP EBP
  13693. JMP [_GetSecurityDescriptorLength]
  13694. end;
  13695. end;
  13696. var
  13697. _GetSecurityDescriptorControl: Pointer;
  13698. function GetSecurityDescriptorControl;
  13699. begin
  13700. GetProcedureAddress(_GetSecurityDescriptorControl, advapi32, 'GetSecurityDescriptorControl');
  13701. asm
  13702. MOV ESP, EBP
  13703. POP EBP
  13704. JMP [_GetSecurityDescriptorControl]
  13705. end;
  13706. end;
  13707. var
  13708. _SetSecurityDescriptorControl: Pointer;
  13709. function SetSecurityDescriptorControl;
  13710. begin
  13711. GetProcedureAddress(_SetSecurityDescriptorControl, advapi32, 'SetSecurityDescriptorControl');
  13712. asm
  13713. MOV ESP, EBP
  13714. POP EBP
  13715. JMP [_SetSecurityDescriptorControl]
  13716. end;
  13717. end;
  13718. var
  13719. _SetSecurityDescriptorDacl: Pointer;
  13720. function SetSecurityDescriptorDacl;
  13721. begin
  13722. GetProcedureAddress(_SetSecurityDescriptorDacl, advapi32, 'SetSecurityDescriptorDacl');
  13723. asm
  13724. MOV ESP, EBP
  13725. POP EBP
  13726. JMP [_SetSecurityDescriptorDacl]
  13727. end;
  13728. end;
  13729. var
  13730. _GetSecurityDescriptorDacl: Pointer;
  13731. function GetSecurityDescriptorDacl;
  13732. begin
  13733. GetProcedureAddress(_GetSecurityDescriptorDacl, advapi32, 'GetSecurityDescriptorDacl');
  13734. asm
  13735. MOV ESP, EBP
  13736. POP EBP
  13737. JMP [_GetSecurityDescriptorDacl]
  13738. end;
  13739. end;
  13740. var
  13741. _SetSecurityDescriptorSacl: Pointer;
  13742. function SetSecurityDescriptorSacl;
  13743. begin
  13744. GetProcedureAddress(_SetSecurityDescriptorSacl, advapi32, 'SetSecurityDescriptorSacl');
  13745. asm
  13746. MOV ESP, EBP
  13747. POP EBP
  13748. JMP [_SetSecurityDescriptorSacl]
  13749. end;
  13750. end;
  13751. var
  13752. _GetSecurityDescriptorSacl: Pointer;
  13753. function GetSecurityDescriptorSacl;
  13754. begin
  13755. GetProcedureAddress(_GetSecurityDescriptorSacl, advapi32, 'GetSecurityDescriptorSacl');
  13756. asm
  13757. MOV ESP, EBP
  13758. POP EBP
  13759. JMP [_GetSecurityDescriptorSacl]
  13760. end;
  13761. end;
  13762. var
  13763. _SetSecurityDescriptorOwner: Pointer;
  13764. function SetSecurityDescriptorOwner;
  13765. begin
  13766. GetProcedureAddress(_SetSecurityDescriptorOwner, advapi32, 'SetSecurityDescriptorOwner');
  13767. asm
  13768. MOV ESP, EBP
  13769. POP EBP
  13770. JMP [_SetSecurityDescriptorOwner]
  13771. end;
  13772. end;
  13773. var
  13774. _GetSecurityDescriptorOwner: Pointer;
  13775. function GetSecurityDescriptorOwner;
  13776. begin
  13777. GetProcedureAddress(_GetSecurityDescriptorOwner, advapi32, 'GetSecurityDescriptorOwner');
  13778. asm
  13779. MOV ESP, EBP
  13780. POP EBP
  13781. JMP [_GetSecurityDescriptorOwner]
  13782. end;
  13783. end;
  13784. var
  13785. _SetSecurityDescriptorGroup: Pointer;
  13786. function SetSecurityDescriptorGroup;
  13787. begin
  13788. GetProcedureAddress(_SetSecurityDescriptorGroup, advapi32, 'SetSecurityDescriptorGroup');
  13789. asm
  13790. MOV ESP, EBP
  13791. POP EBP
  13792. JMP [_SetSecurityDescriptorGroup]
  13793. end;
  13794. end;
  13795. var
  13796. _GetSecurityDescriptorGroup: Pointer;
  13797. function GetSecurityDescriptorGroup;
  13798. begin
  13799. GetProcedureAddress(_GetSecurityDescriptorGroup, advapi32, 'GetSecurityDescriptorGroup');
  13800. asm
  13801. MOV ESP, EBP
  13802. POP EBP
  13803. JMP [_GetSecurityDescriptorGroup]
  13804. end;
  13805. end;
  13806. var
  13807. _SetSecurityDescriptorRMControl: Pointer;
  13808. function SetSecurityDescriptorRMControl;
  13809. begin
  13810. GetProcedureAddress(_SetSecurityDescriptorRMControl, advapi32, 'SetSecurityDescriptorRMControl');
  13811. asm
  13812. MOV ESP, EBP
  13813. POP EBP
  13814. JMP [_SetSecurityDescriptorRMControl]
  13815. end;
  13816. end;
  13817. var
  13818. _GetSecurityDescriptorRMControl: Pointer;
  13819. function GetSecurityDescriptorRMControl;
  13820. begin
  13821. GetProcedureAddress(_GetSecurityDescriptorRMControl, advapi32, 'GetSecurityDescriptorRMControl');
  13822. asm
  13823. MOV ESP, EBP
  13824. POP EBP
  13825. JMP [_GetSecurityDescriptorRMControl]
  13826. end;
  13827. end;
  13828. var
  13829. _CreatePrivateObjectSecurity: Pointer;
  13830. function CreatePrivateObjectSecurity;
  13831. begin
  13832. GetProcedureAddress(_CreatePrivateObjectSecurity, advapi32, 'CreatePrivateObjectSecurity');
  13833. asm
  13834. MOV ESP, EBP
  13835. POP EBP
  13836. JMP [_CreatePrivateObjectSecurity]
  13837. end;
  13838. end;
  13839. var
  13840. _ConvertToAutoInheritPrObjSec: Pointer;
  13841. function ConvertToAutoInheritPrivateObjectSecurity;
  13842. begin
  13843. GetProcedureAddress(_ConvertToAutoInheritPrObjSec, advapi32, 'ConvertToAutoInheritPrivateObjectSecurity');
  13844. asm
  13845. MOV ESP, EBP
  13846. POP EBP
  13847. JMP [_ConvertToAutoInheritPrObjSec]
  13848. end;
  13849. end;
  13850. var
  13851. _CreatePrivateObjectSecurityEx: Pointer;
  13852. function CreatePrivateObjectSecurityEx;
  13853. begin
  13854. GetProcedureAddress(_CreatePrivateObjectSecurityEx, advapi32, 'CreatePrivateObjectSecurityEx');
  13855. asm
  13856. MOV ESP, EBP
  13857. POP EBP
  13858. JMP [_CreatePrivateObjectSecurityEx]
  13859. end;
  13860. end;
  13861. var
  13862. _SetPrivateObjectSecurity: Pointer;
  13863. function SetPrivateObjectSecurity;
  13864. begin
  13865. GetProcedureAddress(_SetPrivateObjectSecurity, advapi32, 'SetPrivateObjectSecurity');
  13866. asm
  13867. MOV ESP, EBP
  13868. POP EBP
  13869. JMP [_SetPrivateObjectSecurity]
  13870. end;
  13871. end;
  13872. var
  13873. _SetPrivateObjectSecurityEx: Pointer;
  13874. function SetPrivateObjectSecurityEx;
  13875. begin
  13876. GetProcedureAddress(_SetPrivateObjectSecurityEx, advapi32, 'SetPrivateObjectSecurityEx');
  13877. asm
  13878. MOV ESP, EBP
  13879. POP EBP
  13880. JMP [_SetPrivateObjectSecurityEx]
  13881. end;
  13882. end;
  13883. var
  13884. _GetPrivateObjectSecurity: Pointer;
  13885. function GetPrivateObjectSecurity;
  13886. begin
  13887. GetProcedureAddress(_GetPrivateObjectSecurity, advapi32, 'GetPrivateObjectSecurity');
  13888. asm
  13889. MOV ESP, EBP
  13890. POP EBP
  13891. JMP [_GetPrivateObjectSecurity]
  13892. end;
  13893. end;
  13894. var
  13895. _DestroyPrivateObjectSecurity: Pointer;
  13896. function DestroyPrivateObjectSecurity;
  13897. begin
  13898. GetProcedureAddress(_DestroyPrivateObjectSecurity, advapi32, 'DestroyPrivateObjectSecurity');
  13899. asm
  13900. MOV ESP, EBP
  13901. POP EBP
  13902. JMP [_DestroyPrivateObjectSecurity]
  13903. end;
  13904. end;
  13905. var
  13906. _MakeSelfRelativeSD: Pointer;
  13907. function MakeSelfRelativeSD;
  13908. begin
  13909. GetProcedureAddress(_MakeSelfRelativeSD, advapi32, 'MakeSelfRelativeSD');
  13910. asm
  13911. MOV ESP, EBP
  13912. POP EBP
  13913. JMP [_MakeSelfRelativeSD]
  13914. end;
  13915. end;
  13916. var
  13917. _MakeAbsoluteSD: Pointer;
  13918. function MakeAbsoluteSD;
  13919. begin
  13920. GetProcedureAddress(_MakeAbsoluteSD, advapi32, 'MakeAbsoluteSD');
  13921. asm
  13922. MOV ESP, EBP
  13923. POP EBP
  13924. JMP [_MakeAbsoluteSD]
  13925. end;
  13926. end;
  13927. var
  13928. _MakeAbsoluteSD2: Pointer;
  13929. function MakeAbsoluteSD2;
  13930. begin
  13931. GetProcedureAddress(_MakeAbsoluteSD2, advapi32, 'MakeAbsoluteSD2');
  13932. asm
  13933. MOV ESP, EBP
  13934. POP EBP
  13935. JMP [_MakeAbsoluteSD2]
  13936. end;
  13937. end;
  13938. var
  13939. _SetFileSecurityA: Pointer;
  13940. function SetFileSecurityA;
  13941. begin
  13942. GetProcedureAddress(_SetFileSecurityA, advapi32, 'SetFileSecurityA');
  13943. asm
  13944. MOV ESP, EBP
  13945. POP EBP
  13946. JMP [_SetFileSecurityA]
  13947. end;
  13948. end;
  13949. var
  13950. _SetFileSecurityW: Pointer;
  13951. function SetFileSecurityW;
  13952. begin
  13953. GetProcedureAddress(_SetFileSecurityW, advapi32, 'SetFileSecurityW');
  13954. asm
  13955. MOV ESP, EBP
  13956. POP EBP
  13957. JMP [_SetFileSecurityW]
  13958. end;
  13959. end;
  13960. var
  13961. _SetFileSecurity: Pointer;
  13962. function SetFileSecurity;
  13963. begin
  13964. GetProcedureAddress(_SetFileSecurity, advapi32, 'SetFileSecurity' + AWSuffix);
  13965. asm
  13966. MOV ESP, EBP
  13967. POP EBP
  13968. JMP [_SetFileSecurity]
  13969. end;
  13970. end;
  13971. var
  13972. _GetFileSecurityA: Pointer;
  13973. function GetFileSecurityA;
  13974. begin
  13975. GetProcedureAddress(_GetFileSecurityA, advapi32, 'GetFileSecurityA');
  13976. asm
  13977. MOV ESP, EBP
  13978. POP EBP
  13979. JMP [_GetFileSecurityA]
  13980. end;
  13981. end;
  13982. var
  13983. _GetFileSecurityW: Pointer;
  13984. function GetFileSecurityW;
  13985. begin
  13986. GetProcedureAddress(_GetFileSecurityW, advapi32, 'GetFileSecurityW');
  13987. asm
  13988. MOV ESP, EBP
  13989. POP EBP
  13990. JMP [_GetFileSecurityW]
  13991. end;
  13992. end;
  13993. var
  13994. _GetFileSecurity: Pointer;
  13995. function GetFileSecurity;
  13996. begin
  13997. GetProcedureAddress(_GetFileSecurity, advapi32, 'GetFileSecurity' + AWSuffix);
  13998. asm
  13999. MOV ESP, EBP
  14000. POP EBP
  14001. JMP [_GetFileSecurity]
  14002. end;
  14003. end;
  14004. var
  14005. _SetKernelObjectSecurity: Pointer;
  14006. function SetKernelObjectSecurity;
  14007. begin
  14008. GetProcedureAddress(_SetKernelObjectSecurity, advapi32, 'SetKernelObjectSecurity');
  14009. asm
  14010. MOV ESP, EBP
  14011. POP EBP
  14012. JMP [_SetKernelObjectSecurity]
  14013. end;
  14014. end;
  14015. var
  14016. _FindFirstChangeNotificationA: Pointer;
  14017. function FindFirstChangeNotificationA;
  14018. begin
  14019. GetProcedureAddress(_FindFirstChangeNotificationA, kernel32, 'FindFirstChangeNotificationA');
  14020. asm
  14021. MOV ESP, EBP
  14022. POP EBP
  14023. JMP [_FindFirstChangeNotificationA]
  14024. end;
  14025. end;
  14026. var
  14027. _FindFirstChangeNotificationW: Pointer;
  14028. function FindFirstChangeNotificationW;
  14029. begin
  14030. GetProcedureAddress(_FindFirstChangeNotificationW, kernel32, 'FindFirstChangeNotificationW');
  14031. asm
  14032. MOV ESP, EBP
  14033. POP EBP
  14034. JMP [_FindFirstChangeNotificationW]
  14035. end;
  14036. end;
  14037. var
  14038. _FindFirstChangeNotification: Pointer;
  14039. function FindFirstChangeNotification;
  14040. begin
  14041. GetProcedureAddress(_FindFirstChangeNotification, kernel32, 'FindFirstChangeNotification' + AWSuffix);
  14042. asm
  14043. MOV ESP, EBP
  14044. POP EBP
  14045. JMP [_FindFirstChangeNotification]
  14046. end;
  14047. end;
  14048. var
  14049. _FindNextChangeNotification: Pointer;
  14050. function FindNextChangeNotification;
  14051. begin
  14052. GetProcedureAddress(_FindNextChangeNotification, kernel32, 'FindNextChangeNotification');
  14053. asm
  14054. MOV ESP, EBP
  14055. POP EBP
  14056. JMP [_FindNextChangeNotification]
  14057. end;
  14058. end;
  14059. var
  14060. _FindCloseChangeNotification: Pointer;
  14061. function FindCloseChangeNotification;
  14062. begin
  14063. GetProcedureAddress(_FindCloseChangeNotification, kernel32, 'FindCloseChangeNotification');
  14064. asm
  14065. MOV ESP, EBP
  14066. POP EBP
  14067. JMP [_FindCloseChangeNotification]
  14068. end;
  14069. end;
  14070. var
  14071. _ReadDirectoryChangesW: Pointer;
  14072. function ReadDirectoryChangesW;
  14073. begin
  14074. GetProcedureAddress(_ReadDirectoryChangesW, kernel32, 'ReadDirectoryChangesW');
  14075. asm
  14076. MOV ESP, EBP
  14077. POP EBP
  14078. JMP [_ReadDirectoryChangesW]
  14079. end;
  14080. end;
  14081. var
  14082. _VirtualLock: Pointer;
  14083. function VirtualLock;
  14084. begin
  14085. GetProcedureAddress(_VirtualLock, kernel32, 'VirtualLock');
  14086. asm
  14087. MOV ESP, EBP
  14088. POP EBP
  14089. JMP [_VirtualLock]
  14090. end;
  14091. end;
  14092. var
  14093. _VirtualUnlock: Pointer;
  14094. function VirtualUnlock;
  14095. begin
  14096. GetProcedureAddress(_VirtualUnlock, kernel32, 'VirtualUnlock');
  14097. asm
  14098. MOV ESP, EBP
  14099. POP EBP
  14100. JMP [_VirtualUnlock]
  14101. end;
  14102. end;
  14103. var
  14104. _MapViewOfFileEx: Pointer;
  14105. function MapViewOfFileEx;
  14106. begin
  14107. GetProcedureAddress(_MapViewOfFileEx, kernel32, 'MapViewOfFileEx');
  14108. asm
  14109. MOV ESP, EBP
  14110. POP EBP
  14111. JMP [_MapViewOfFileEx]
  14112. end;
  14113. end;
  14114. var
  14115. _SetPriorityClass: Pointer;
  14116. function SetPriorityClass;
  14117. begin
  14118. GetProcedureAddress(_SetPriorityClass, kernel32, 'SetPriorityClass');
  14119. asm
  14120. MOV ESP, EBP
  14121. POP EBP
  14122. JMP [_SetPriorityClass]
  14123. end;
  14124. end;
  14125. var
  14126. _GetPriorityClass: Pointer;
  14127. function GetPriorityClass;
  14128. begin
  14129. GetProcedureAddress(_GetPriorityClass, kernel32, 'GetPriorityClass');
  14130. asm
  14131. MOV ESP, EBP
  14132. POP EBP
  14133. JMP [_GetPriorityClass]
  14134. end;
  14135. end;
  14136. var
  14137. _IsBadReadPtr: Pointer;
  14138. function IsBadReadPtr;
  14139. begin
  14140. GetProcedureAddress(_IsBadReadPtr, kernel32, 'IsBadReadPtr');
  14141. asm
  14142. MOV ESP, EBP
  14143. POP EBP
  14144. JMP [_IsBadReadPtr]
  14145. end;
  14146. end;
  14147. var
  14148. _IsBadWritePtr: Pointer;
  14149. function IsBadWritePtr;
  14150. begin
  14151. GetProcedureAddress(_IsBadWritePtr, kernel32, 'IsBadWritePtr');
  14152. asm
  14153. MOV ESP, EBP
  14154. POP EBP
  14155. JMP [_IsBadWritePtr]
  14156. end;
  14157. end;
  14158. var
  14159. _IsBadHugeReadPtr: Pointer;
  14160. function IsBadHugeReadPtr;
  14161. begin
  14162. GetProcedureAddress(_IsBadHugeReadPtr, kernel32, 'IsBadHugeReadPtr');
  14163. asm
  14164. MOV ESP, EBP
  14165. POP EBP
  14166. JMP [_IsBadHugeReadPtr]
  14167. end;
  14168. end;
  14169. var
  14170. _IsBadHugeWritePtr: Pointer;
  14171. function IsBadHugeWritePtr;
  14172. begin
  14173. GetProcedureAddress(_IsBadHugeWritePtr, kernel32, 'IsBadHugeWritePtr');
  14174. asm
  14175. MOV ESP, EBP
  14176. POP EBP
  14177. JMP [_IsBadHugeWritePtr]
  14178. end;
  14179. end;
  14180. var
  14181. _IsBadCodePtr: Pointer;
  14182. function IsBadCodePtr;
  14183. begin
  14184. GetProcedureAddress(_IsBadCodePtr, kernel32, 'IsBadCodePtr');
  14185. asm
  14186. MOV ESP, EBP
  14187. POP EBP
  14188. JMP [_IsBadCodePtr]
  14189. end;
  14190. end;
  14191. var
  14192. _IsBadStringPtrA: Pointer;
  14193. function IsBadStringPtrA;
  14194. begin
  14195. GetProcedureAddress(_IsBadStringPtrA, kernel32, 'IsBadStringPtrA');
  14196. asm
  14197. MOV ESP, EBP
  14198. POP EBP
  14199. JMP [_IsBadStringPtrA]
  14200. end;
  14201. end;
  14202. var
  14203. _IsBadStringPtrW: Pointer;
  14204. function IsBadStringPtrW;
  14205. begin
  14206. GetProcedureAddress(_IsBadStringPtrW, kernel32, 'IsBadStringPtrW');
  14207. asm
  14208. MOV ESP, EBP
  14209. POP EBP
  14210. JMP [_IsBadStringPtrW]
  14211. end;
  14212. end;
  14213. var
  14214. _IsBadStringPtr: Pointer;
  14215. function IsBadStringPtr;
  14216. begin
  14217. GetProcedureAddress(_IsBadStringPtr, kernel32, 'IsBadStringPtr' + AWSuffix);
  14218. asm
  14219. MOV ESP, EBP
  14220. POP EBP
  14221. JMP [_IsBadStringPtr]
  14222. end;
  14223. end;
  14224. var
  14225. _LookupAccountSidA: Pointer;
  14226. function LookupAccountSidA;
  14227. begin
  14228. GetProcedureAddress(_LookupAccountSidA, advapi32, 'LookupAccountSidA');
  14229. asm
  14230. MOV ESP, EBP
  14231. POP EBP
  14232. JMP [_LookupAccountSidA]
  14233. end;
  14234. end;
  14235. var
  14236. _LookupAccountSidW: Pointer;
  14237. function LookupAccountSidW;
  14238. begin
  14239. GetProcedureAddress(_LookupAccountSidW, advapi32, 'LookupAccountSidW');
  14240. asm
  14241. MOV ESP, EBP
  14242. POP EBP
  14243. JMP [_LookupAccountSidW]
  14244. end;
  14245. end;
  14246. var
  14247. _LookupAccountSid: Pointer;
  14248. function LookupAccountSid;
  14249. begin
  14250. GetProcedureAddress(_LookupAccountSid, advapi32, 'LookupAccountSid' + AWSuffix);
  14251. asm
  14252. MOV ESP, EBP
  14253. POP EBP
  14254. JMP [_LookupAccountSid]
  14255. end;
  14256. end;
  14257. var
  14258. _LookupAccountNameA: Pointer;
  14259. function LookupAccountNameA;
  14260. begin
  14261. GetProcedureAddress(_LookupAccountNameA, advapi32, 'LookupAccountNameA');
  14262. asm
  14263. MOV ESP, EBP
  14264. POP EBP
  14265. JMP [_LookupAccountNameA]
  14266. end;
  14267. end;
  14268. var
  14269. _LookupAccountNameW: Pointer;
  14270. function LookupAccountNameW;
  14271. begin
  14272. GetProcedureAddress(_LookupAccountNameW, advapi32, 'LookupAccountNameW');
  14273. asm
  14274. MOV ESP, EBP
  14275. POP EBP
  14276. JMP [_LookupAccountNameW]
  14277. end;
  14278. end;
  14279. var
  14280. _LookupAccountName: Pointer;
  14281. function LookupAccountName;
  14282. begin
  14283. GetProcedureAddress(_LookupAccountName, advapi32, 'LookupAccountName' + AWSuffix);
  14284. asm
  14285. MOV ESP, EBP
  14286. POP EBP
  14287. JMP [_LookupAccountName]
  14288. end;
  14289. end;
  14290. var
  14291. _LookupPrivilegeValueA: Pointer;
  14292. function LookupPrivilegeValueA;
  14293. begin
  14294. GetProcedureAddress(_LookupPrivilegeValueA, advapi32, 'LookupPrivilegeValueA');
  14295. asm
  14296. MOV ESP, EBP
  14297. POP EBP
  14298. JMP [_LookupPrivilegeValueA]
  14299. end;
  14300. end;
  14301. var
  14302. _LookupPrivilegeValueW: Pointer;
  14303. function LookupPrivilegeValueW;
  14304. begin
  14305. GetProcedureAddress(_LookupPrivilegeValueW, advapi32, 'LookupPrivilegeValueW');
  14306. asm
  14307. MOV ESP, EBP
  14308. POP EBP
  14309. JMP [_LookupPrivilegeValueW]
  14310. end;
  14311. end;
  14312. var
  14313. _LookupPrivilegeValue: Pointer;
  14314. function LookupPrivilegeValue;
  14315. begin
  14316. GetProcedureAddress(_LookupPrivilegeValue, advapi32, 'LookupPrivilegeValue' + AWSuffix);
  14317. asm
  14318. MOV ESP, EBP
  14319. POP EBP
  14320. JMP [_LookupPrivilegeValue]
  14321. end;
  14322. end;
  14323. var
  14324. _LookupPrivilegeNameA: Pointer;
  14325. function LookupPrivilegeNameA;
  14326. begin
  14327. GetProcedureAddress(_LookupPrivilegeNameA, advapi32, 'LookupPrivilegeNameA');
  14328. asm
  14329. MOV ESP, EBP
  14330. POP EBP
  14331. JMP [_LookupPrivilegeNameA]
  14332. end;
  14333. end;
  14334. var
  14335. _LookupPrivilegeNameW: Pointer;
  14336. function LookupPrivilegeNameW;
  14337. begin
  14338. GetProcedureAddress(_LookupPrivilegeNameW, advapi32, 'LookupPrivilegeNameW');
  14339. asm
  14340. MOV ESP, EBP
  14341. POP EBP
  14342. JMP [_LookupPrivilegeNameW]
  14343. end;
  14344. end;
  14345. var
  14346. _LookupPrivilegeName: Pointer;
  14347. function LookupPrivilegeName;
  14348. begin
  14349. GetProcedureAddress(_LookupPrivilegeName, advapi32, 'LookupPrivilegeName' + AWSuffix);
  14350. asm
  14351. MOV ESP, EBP
  14352. POP EBP
  14353. JMP [_LookupPrivilegeName]
  14354. end;
  14355. end;
  14356. var
  14357. _LookupPrivilegeDisplayNameA: Pointer;
  14358. function LookupPrivilegeDisplayNameA;
  14359. begin
  14360. GetProcedureAddress(_LookupPrivilegeDisplayNameA, advapi32, 'LookupPrivilegeDisplayNameA');
  14361. asm
  14362. MOV ESP, EBP
  14363. POP EBP
  14364. JMP [_LookupPrivilegeDisplayNameA]
  14365. end;
  14366. end;
  14367. var
  14368. _LookupPrivilegeDisplayNameW: Pointer;
  14369. function LookupPrivilegeDisplayNameW;
  14370. begin
  14371. GetProcedureAddress(_LookupPrivilegeDisplayNameW, advapi32, 'LookupPrivilegeDisplayNameW');
  14372. asm
  14373. MOV ESP, EBP
  14374. POP EBP
  14375. JMP [_LookupPrivilegeDisplayNameW]
  14376. end;
  14377. end;
  14378. var
  14379. _LookupPrivilegeDisplayName: Pointer;
  14380. function LookupPrivilegeDisplayName;
  14381. begin
  14382. GetProcedureAddress(_LookupPrivilegeDisplayName, advapi32, 'LookupPrivilegeDisplayName' + AWSuffix);
  14383. asm
  14384. MOV ESP, EBP
  14385. POP EBP
  14386. JMP [_LookupPrivilegeDisplayName]
  14387. end;
  14388. end;
  14389. var
  14390. _AllocateLocallyUniqueId: Pointer;
  14391. function AllocateLocallyUniqueId;
  14392. begin
  14393. GetProcedureAddress(_AllocateLocallyUniqueId, advapi32, 'AllocateLocallyUniqueId');
  14394. asm
  14395. MOV ESP, EBP
  14396. POP EBP
  14397. JMP [_AllocateLocallyUniqueId]
  14398. end;
  14399. end;
  14400. var
  14401. _BuildCommDCBA: Pointer;
  14402. function BuildCommDCBA;
  14403. begin
  14404. GetProcedureAddress(_BuildCommDCBA, kernel32, 'BuildCommDCBA');
  14405. asm
  14406. MOV ESP, EBP
  14407. POP EBP
  14408. JMP [_BuildCommDCBA]
  14409. end;
  14410. end;
  14411. var
  14412. _BuildCommDCBW: Pointer;
  14413. function BuildCommDCBW;
  14414. begin
  14415. GetProcedureAddress(_BuildCommDCBW, kernel32, 'BuildCommDCBW');
  14416. asm
  14417. MOV ESP, EBP
  14418. POP EBP
  14419. JMP [_BuildCommDCBW]
  14420. end;
  14421. end;
  14422. var
  14423. _BuildCommDCB: Pointer;
  14424. function BuildCommDCB;
  14425. begin
  14426. GetProcedureAddress(_BuildCommDCB, kernel32, 'BuildCommDCB' + AWSuffix);
  14427. asm
  14428. MOV ESP, EBP
  14429. POP EBP
  14430. JMP [_BuildCommDCB]
  14431. end;
  14432. end;
  14433. var
  14434. _BuildCommDCBAndTimeoutsA: Pointer;
  14435. function BuildCommDCBAndTimeoutsA;
  14436. begin
  14437. GetProcedureAddress(_BuildCommDCBAndTimeoutsA, kernel32, 'BuildCommDCBAndTimeoutsA');
  14438. asm
  14439. MOV ESP, EBP
  14440. POP EBP
  14441. JMP [_BuildCommDCBAndTimeoutsA]
  14442. end;
  14443. end;
  14444. var
  14445. _BuildCommDCBAndTimeoutsW: Pointer;
  14446. function BuildCommDCBAndTimeoutsW;
  14447. begin
  14448. GetProcedureAddress(_BuildCommDCBAndTimeoutsW, kernel32, 'BuildCommDCBAndTimeoutsW');
  14449. asm
  14450. MOV ESP, EBP
  14451. POP EBP
  14452. JMP [_BuildCommDCBAndTimeoutsW]
  14453. end;
  14454. end;
  14455. var
  14456. _BuildCommDCBAndTimeouts: Pointer;
  14457. function BuildCommDCBAndTimeouts;
  14458. begin
  14459. GetProcedureAddress(_BuildCommDCBAndTimeouts, kernel32, 'BuildCommDCBAndTimeouts' + AWSuffix);
  14460. asm
  14461. MOV ESP, EBP
  14462. POP EBP
  14463. JMP [_BuildCommDCBAndTimeouts]
  14464. end;
  14465. end;
  14466. var
  14467. _CommConfigDialogA: Pointer;
  14468. function CommConfigDialogA;
  14469. begin
  14470. GetProcedureAddress(_CommConfigDialogA, kernel32, 'CommConfigDialogA');
  14471. asm
  14472. MOV ESP, EBP
  14473. POP EBP
  14474. JMP [_CommConfigDialogA]
  14475. end;
  14476. end;
  14477. var
  14478. _CommConfigDialogW: Pointer;
  14479. function CommConfigDialogW;
  14480. begin
  14481. GetProcedureAddress(_CommConfigDialogW, kernel32, 'CommConfigDialogW');
  14482. asm
  14483. MOV ESP, EBP
  14484. POP EBP
  14485. JMP [_CommConfigDialogW]
  14486. end;
  14487. end;
  14488. var
  14489. _CommConfigDialog: Pointer;
  14490. function CommConfigDialog;
  14491. begin
  14492. GetProcedureAddress(_CommConfigDialog, kernel32, 'CommConfigDialog' + AWSuffix);
  14493. asm
  14494. MOV ESP, EBP
  14495. POP EBP
  14496. JMP [_CommConfigDialog]
  14497. end;
  14498. end;
  14499. var
  14500. _GetDefaultCommConfigA: Pointer;
  14501. function GetDefaultCommConfigA;
  14502. begin
  14503. GetProcedureAddress(_GetDefaultCommConfigA, kernel32, 'GetDefaultCommConfigA');
  14504. asm
  14505. MOV ESP, EBP
  14506. POP EBP
  14507. JMP [_GetDefaultCommConfigA]
  14508. end;
  14509. end;
  14510. var
  14511. _GetDefaultCommConfigW: Pointer;
  14512. function GetDefaultCommConfigW;
  14513. begin
  14514. GetProcedureAddress(_GetDefaultCommConfigW, kernel32, 'GetDefaultCommConfigW');
  14515. asm
  14516. MOV ESP, EBP
  14517. POP EBP
  14518. JMP [_GetDefaultCommConfigW]
  14519. end;
  14520. end;
  14521. var
  14522. _GetDefaultCommConfig: Pointer;
  14523. function GetDefaultCommConfig;
  14524. begin
  14525. GetProcedureAddress(_GetDefaultCommConfig, kernel32, 'GetDefaultCommConfig' + AWSuffix);
  14526. asm
  14527. MOV ESP, EBP
  14528. POP EBP
  14529. JMP [_GetDefaultCommConfig]
  14530. end;
  14531. end;
  14532. var
  14533. _SetDefaultCommConfigA: Pointer;
  14534. function SetDefaultCommConfigA;
  14535. begin
  14536. GetProcedureAddress(_SetDefaultCommConfigA, kernel32, 'SetDefaultCommConfigA');
  14537. asm
  14538. MOV ESP, EBP
  14539. POP EBP
  14540. JMP [_SetDefaultCommConfigA]
  14541. end;
  14542. end;
  14543. var
  14544. _SetDefaultCommConfigW: Pointer;
  14545. function SetDefaultCommConfigW;
  14546. begin
  14547. GetProcedureAddress(_SetDefaultCommConfigW, kernel32, 'SetDefaultCommConfigW');
  14548. asm
  14549. MOV ESP, EBP
  14550. POP EBP
  14551. JMP [_SetDefaultCommConfigW]
  14552. end;
  14553. end;
  14554. var
  14555. _SetDefaultCommConfig: Pointer;
  14556. function SetDefaultCommConfig;
  14557. begin
  14558. GetProcedureAddress(_SetDefaultCommConfig, kernel32, 'SetDefaultCommConfig' + AWSuffix);
  14559. asm
  14560. MOV ESP, EBP
  14561. POP EBP
  14562. JMP [_SetDefaultCommConfig]
  14563. end;
  14564. end;
  14565. var
  14566. _GetComputerNameA: Pointer;
  14567. function GetComputerNameA;
  14568. begin
  14569. GetProcedureAddress(_GetComputerNameA, kernel32, 'GetComputerNameA');
  14570. asm
  14571. MOV ESP, EBP
  14572. POP EBP
  14573. JMP [_GetComputerNameA]
  14574. end;
  14575. end;
  14576. var
  14577. _GetComputerNameW: Pointer;
  14578. function GetComputerNameW;
  14579. begin
  14580. GetProcedureAddress(_GetComputerNameW, kernel32, 'GetComputerNameW');
  14581. asm
  14582. MOV ESP, EBP
  14583. POP EBP
  14584. JMP [_GetComputerNameW]
  14585. end;
  14586. end;
  14587. var
  14588. _GetComputerName: Pointer;
  14589. function GetComputerName;
  14590. begin
  14591. GetProcedureAddress(_GetComputerName, kernel32, 'GetComputerName' + AWSuffix);
  14592. asm
  14593. MOV ESP, EBP
  14594. POP EBP
  14595. JMP [_GetComputerName]
  14596. end;
  14597. end;
  14598. var
  14599. _SetComputerNameA: Pointer;
  14600. function SetComputerNameA;
  14601. begin
  14602. GetProcedureAddress(_SetComputerNameA, kernel32, 'SetComputerNameA');
  14603. asm
  14604. MOV ESP, EBP
  14605. POP EBP
  14606. JMP [_SetComputerNameA]
  14607. end;
  14608. end;
  14609. var
  14610. _SetComputerNameW: Pointer;
  14611. function SetComputerNameW;
  14612. begin
  14613. GetProcedureAddress(_SetComputerNameW, kernel32, 'SetComputerNameW');
  14614. asm
  14615. MOV ESP, EBP
  14616. POP EBP
  14617. JMP [_SetComputerNameW]
  14618. end;
  14619. end;
  14620. var
  14621. _SetComputerName: Pointer;
  14622. function SetComputerName;
  14623. begin
  14624. GetProcedureAddress(_SetComputerName, kernel32, 'SetComputerName' + AWSuffix);
  14625. asm
  14626. MOV ESP, EBP
  14627. POP EBP
  14628. JMP [_SetComputerName]
  14629. end;
  14630. end;
  14631. var
  14632. _GetComputerNameExA: Pointer;
  14633. function GetComputerNameExA;
  14634. begin
  14635. GetProcedureAddress(_GetComputerNameExA, kernel32, 'GetComputerNameExA');
  14636. asm
  14637. MOV ESP, EBP
  14638. POP EBP
  14639. JMP [_GetComputerNameExA]
  14640. end;
  14641. end;
  14642. var
  14643. _GetComputerNameExW: Pointer;
  14644. function GetComputerNameExW;
  14645. begin
  14646. GetProcedureAddress(_GetComputerNameExW, kernel32, 'GetComputerNameExW');
  14647. asm
  14648. MOV ESP, EBP
  14649. POP EBP
  14650. JMP [_GetComputerNameExW]
  14651. end;
  14652. end;
  14653. var
  14654. _GetComputerNameEx: Pointer;
  14655. function GetComputerNameEx;
  14656. begin
  14657. GetProcedureAddress(_GetComputerNameEx, kernel32, 'GetComputerNameEx' + AWSuffix);
  14658. asm
  14659. MOV ESP, EBP
  14660. POP EBP
  14661. JMP [_GetComputerNameEx]
  14662. end;
  14663. end;
  14664. var
  14665. _SetComputerNameExA: Pointer;
  14666. function SetComputerNameExA;
  14667. begin
  14668. GetProcedureAddress(_SetComputerNameExA, kernel32, 'SetComputerNameExA');
  14669. asm
  14670. MOV ESP, EBP
  14671. POP EBP
  14672. JMP [_SetComputerNameExA]
  14673. end;
  14674. end;
  14675. var
  14676. _SetComputerNameExW: Pointer;
  14677. function SetComputerNameExW;
  14678. begin
  14679. GetProcedureAddress(_SetComputerNameExW, kernel32, 'SetComputerNameExW');
  14680. asm
  14681. MOV ESP, EBP
  14682. POP EBP
  14683. JMP [_SetComputerNameExW]
  14684. end;
  14685. end;
  14686. var
  14687. _SetComputerNameEx: Pointer;
  14688. function SetComputerNameEx;
  14689. begin
  14690. GetProcedureAddress(_SetComputerNameEx, kernel32, 'SetComputerNameEx' + AWSuffix);
  14691. asm
  14692. MOV ESP, EBP
  14693. POP EBP
  14694. JMP [_SetComputerNameEx]
  14695. end;
  14696. end;
  14697. var
  14698. _DnsHostnameToComputerNameA: Pointer;
  14699. function DnsHostnameToComputerNameA;
  14700. begin
  14701. GetProcedureAddress(_DnsHostnameToComputerNameA, kernel32, 'DnsHostnameToComputerNameA');
  14702. asm
  14703. MOV ESP, EBP
  14704. POP EBP
  14705. JMP [_DnsHostnameToComputerNameA]
  14706. end;
  14707. end;
  14708. var
  14709. _DnsHostnameToComputerNameW: Pointer;
  14710. function DnsHostnameToComputerNameW;
  14711. begin
  14712. GetProcedureAddress(_DnsHostnameToComputerNameW, kernel32, 'DnsHostnameToComputerNameW');
  14713. asm
  14714. MOV ESP, EBP
  14715. POP EBP
  14716. JMP [_DnsHostnameToComputerNameW]
  14717. end;
  14718. end;
  14719. var
  14720. _DnsHostnameToComputerName: Pointer;
  14721. function DnsHostnameToComputerName;
  14722. begin
  14723. GetProcedureAddress(_DnsHostnameToComputerName, kernel32, 'DnsHostnameToComputerName' + AWSuffix);
  14724. asm
  14725. MOV ESP, EBP
  14726. POP EBP
  14727. JMP [_DnsHostnameToComputerName]
  14728. end;
  14729. end;
  14730. var
  14731. _GetUserNameA: Pointer;
  14732. function GetUserNameA;
  14733. begin
  14734. GetProcedureAddress(_GetUserNameA, advapi32, 'GetUserNameA');
  14735. asm
  14736. MOV ESP, EBP
  14737. POP EBP
  14738. JMP [_GetUserNameA]
  14739. end;
  14740. end;
  14741. var
  14742. _GetUserNameW: Pointer;
  14743. function GetUserNameW;
  14744. begin
  14745. GetProcedureAddress(_GetUserNameW, advapi32, 'GetUserNameW');
  14746. asm
  14747. MOV ESP, EBP
  14748. POP EBP
  14749. JMP [_GetUserNameW]
  14750. end;
  14751. end;
  14752. var
  14753. _GetUserName: Pointer;
  14754. function GetUserName;
  14755. begin
  14756. GetProcedureAddress(_GetUserName, advapi32, 'GetUserName' + AWSuffix);
  14757. asm
  14758. MOV ESP, EBP
  14759. POP EBP
  14760. JMP [_GetUserName]
  14761. end;
  14762. end;
  14763. var
  14764. _LogonUserA: Pointer;
  14765. function LogonUserA;
  14766. begin
  14767. GetProcedureAddress(_LogonUserA, advapi32, 'LogonUserA');
  14768. asm
  14769. MOV ESP, EBP
  14770. POP EBP
  14771. JMP [_LogonUserA]
  14772. end;
  14773. end;
  14774. var
  14775. _LogonUserW: Pointer;
  14776. function LogonUserW;
  14777. begin
  14778. GetProcedureAddress(_LogonUserW, advapi32, 'LogonUserW');
  14779. asm
  14780. MOV ESP, EBP
  14781. POP EBP
  14782. JMP [_LogonUserW]
  14783. end;
  14784. end;
  14785. var
  14786. _LogonUser: Pointer;
  14787. function LogonUser;
  14788. begin
  14789. GetProcedureAddress(_LogonUser, advapi32, 'LogonUser' + AWSuffix);
  14790. asm
  14791. MOV ESP, EBP
  14792. POP EBP
  14793. JMP [_LogonUser]
  14794. end;
  14795. end;
  14796. var
  14797. _LogonUserExA: Pointer;
  14798. function LogonUserExA;
  14799. begin
  14800. GetProcedureAddress(_LogonUserExA, advapi32, 'LogonUserExA');
  14801. asm
  14802. MOV ESP, EBP
  14803. POP EBP
  14804. JMP [_LogonUserExA]
  14805. end;
  14806. end;
  14807. var
  14808. _LogonUserExW: Pointer;
  14809. function LogonUserExW;
  14810. begin
  14811. GetProcedureAddress(_LogonUserExW, advapi32, 'LogonUserExW');
  14812. asm
  14813. MOV ESP, EBP
  14814. POP EBP
  14815. JMP [_LogonUserExW]
  14816. end;
  14817. end;
  14818. var
  14819. _LogonUserEx: Pointer;
  14820. function LogonUserEx;
  14821. begin
  14822. GetProcedureAddress(_LogonUserEx, advapi32, 'LogonUserEx' + AWSuffix);
  14823. asm
  14824. MOV ESP, EBP
  14825. POP EBP
  14826. JMP [_LogonUserEx]
  14827. end;
  14828. end;
  14829. var
  14830. _ImpersonateLoggedOnUser: Pointer;
  14831. function ImpersonateLoggedOnUser;
  14832. begin
  14833. GetProcedureAddress(_ImpersonateLoggedOnUser, advapi32, 'ImpersonateLoggedOnUser');
  14834. asm
  14835. MOV ESP, EBP
  14836. POP EBP
  14837. JMP [_ImpersonateLoggedOnUser]
  14838. end;
  14839. end;
  14840. var
  14841. _CreateProcessAsUserA: Pointer;
  14842. function CreateProcessAsUserA;
  14843. begin
  14844. GetProcedureAddress(_CreateProcessAsUserA, advapi32, 'CreateProcessAsUserA');
  14845. asm
  14846. MOV ESP, EBP
  14847. POP EBP
  14848. JMP [_CreateProcessAsUserA]
  14849. end;
  14850. end;
  14851. var
  14852. _CreateProcessAsUserW: Pointer;
  14853. function CreateProcessAsUserW;
  14854. begin
  14855. GetProcedureAddress(_CreateProcessAsUserW, advapi32, 'CreateProcessAsUserW');
  14856. asm
  14857. MOV ESP, EBP
  14858. POP EBP
  14859. JMP [_CreateProcessAsUserW]
  14860. end;
  14861. end;
  14862. var
  14863. _CreateProcessAsUser: Pointer;
  14864. function CreateProcessAsUser;
  14865. begin
  14866. GetProcedureAddress(_CreateProcessAsUser, advapi32, 'CreateProcessAsUser' + AWSuffix);
  14867. asm
  14868. MOV ESP, EBP
  14869. POP EBP
  14870. JMP [_CreateProcessAsUser]
  14871. end;
  14872. end;
  14873. var
  14874. _CreateProcessWithLogonW: Pointer;
  14875. function CreateProcessWithLogonW;
  14876. begin
  14877. GetProcedureAddress(_CreateProcessWithLogonW, advapi32, 'CreateProcessWithLogonW');
  14878. asm
  14879. MOV ESP, EBP
  14880. POP EBP
  14881. JMP [_CreateProcessWithLogonW]
  14882. end;
  14883. end;
  14884. var
  14885. _CreateProcessWithTokenW: Pointer;
  14886. function CreateProcessWithTokenW;
  14887. begin
  14888. GetProcedureAddress(_CreateProcessWithTokenW, advapi32, 'CreateProcessWithTokenW');
  14889. asm
  14890. MOV ESP, EBP
  14891. POP EBP
  14892. JMP [_CreateProcessWithTokenW]
  14893. end;
  14894. end;
  14895. var
  14896. _ImpersonateAnonymousToken: Pointer;
  14897. function ImpersonateAnonymousToken;
  14898. begin
  14899. GetProcedureAddress(_ImpersonateAnonymousToken, advapi32, 'ImpersonateAnonymousToken');
  14900. asm
  14901. MOV ESP, EBP
  14902. POP EBP
  14903. JMP [_ImpersonateAnonymousToken]
  14904. end;
  14905. end;
  14906. var
  14907. _DuplicateTokenEx: Pointer;
  14908. function DuplicateTokenEx;
  14909. begin
  14910. GetProcedureAddress(_DuplicateTokenEx, advapi32, 'DuplicateTokenEx');
  14911. asm
  14912. MOV ESP, EBP
  14913. POP EBP
  14914. JMP [_DuplicateTokenEx]
  14915. end;
  14916. end;
  14917. var
  14918. _CreateRestrictedToken: Pointer;
  14919. function CreateRestrictedToken;
  14920. begin
  14921. GetProcedureAddress(_CreateRestrictedToken, advapi32, 'CreateRestrictedToken');
  14922. asm
  14923. MOV ESP, EBP
  14924. POP EBP
  14925. JMP [_CreateRestrictedToken]
  14926. end;
  14927. end;
  14928. var
  14929. _IsTokenRestricted: Pointer;
  14930. function IsTokenRestricted;
  14931. begin
  14932. GetProcedureAddress(_IsTokenRestricted, advapi32, 'IsTokenRestricted');
  14933. asm
  14934. MOV ESP, EBP
  14935. POP EBP
  14936. JMP [_IsTokenRestricted]
  14937. end;
  14938. end;
  14939. var
  14940. _CheckTokenMembership: Pointer;
  14941. function CheckTokenMembership;
  14942. begin
  14943. GetProcedureAddress(_CheckTokenMembership, advapi32, 'CheckTokenMembership');
  14944. asm
  14945. MOV ESP, EBP
  14946. POP EBP
  14947. JMP [_CheckTokenMembership]
  14948. end;
  14949. end;
  14950. var
  14951. _IsTokenUntrusted: Pointer;
  14952. function IsTokenUntrusted;
  14953. begin
  14954. GetProcedureAddress(_IsTokenUntrusted, advapi32, 'IsTokenUntrusted');
  14955. asm
  14956. MOV ESP, EBP
  14957. POP EBP
  14958. JMP [_IsTokenUntrusted]
  14959. end;
  14960. end;
  14961. var
  14962. _RegisterWaitForSingleObject: Pointer;
  14963. function RegisterWaitForSingleObject;
  14964. begin
  14965. GetProcedureAddress(_RegisterWaitForSingleObject, kernel32, 'RegisterWaitForSingleObject');
  14966. asm
  14967. MOV ESP, EBP
  14968. POP EBP
  14969. JMP [_RegisterWaitForSingleObject]
  14970. end;
  14971. end;
  14972. var
  14973. _RegisterWaitForSingleObjectEx: Pointer;
  14974. function RegisterWaitForSingleObjectEx;
  14975. begin
  14976. GetProcedureAddress(_RegisterWaitForSingleObjectEx, kernel32, 'RegisterWaitForSingleObjectEx');
  14977. asm
  14978. MOV ESP, EBP
  14979. POP EBP
  14980. JMP [_RegisterWaitForSingleObjectEx]
  14981. end;
  14982. end;
  14983. var
  14984. _UnregisterWait: Pointer;
  14985. function UnregisterWait;
  14986. begin
  14987. GetProcedureAddress(_UnregisterWait, kernel32, 'UnregisterWait');
  14988. asm
  14989. MOV ESP, EBP
  14990. POP EBP
  14991. JMP [_UnregisterWait]
  14992. end;
  14993. end;
  14994. var
  14995. _UnregisterWaitEx: Pointer;
  14996. function UnregisterWaitEx;
  14997. begin
  14998. GetProcedureAddress(_UnregisterWaitEx, kernel32, 'UnregisterWaitEx');
  14999. asm
  15000. MOV ESP, EBP
  15001. POP EBP
  15002. JMP [_UnregisterWaitEx]
  15003. end;
  15004. end;
  15005. var
  15006. _QueueUserWorkItem: Pointer;
  15007. function QueueUserWorkItem;
  15008. begin
  15009. GetProcedureAddress(_QueueUserWorkItem, kernel32, 'QueueUserWorkItem');
  15010. asm
  15011. MOV ESP, EBP
  15012. POP EBP
  15013. JMP [_QueueUserWorkItem]
  15014. end;
  15015. end;
  15016. var
  15017. _BindIoCompletionCallback: Pointer;
  15018. function BindIoCompletionCallback;
  15019. begin
  15020. GetProcedureAddress(_BindIoCompletionCallback, kernel32, 'BindIoCompletionCallback');
  15021. asm
  15022. MOV ESP, EBP
  15023. POP EBP
  15024. JMP [_BindIoCompletionCallback]
  15025. end;
  15026. end;
  15027. var
  15028. _CreateTimerQueue: Pointer;
  15029. function CreateTimerQueue;
  15030. begin
  15031. GetProcedureAddress(_CreateTimerQueue, kernel32, 'CreateTimerQueue');
  15032. asm
  15033. MOV ESP, EBP
  15034. POP EBP
  15035. JMP [_CreateTimerQueue]
  15036. end;
  15037. end;
  15038. var
  15039. _CreateTimerQueueTimer: Pointer;
  15040. function CreateTimerQueueTimer;
  15041. begin
  15042. GetProcedureAddress(_CreateTimerQueueTimer, kernel32, 'CreateTimerQueueTimer');
  15043. asm
  15044. MOV ESP, EBP
  15045. POP EBP
  15046. JMP [_CreateTimerQueueTimer]
  15047. end;
  15048. end;
  15049. var
  15050. _ChangeTimerQueueTimer: Pointer;
  15051. function ChangeTimerQueueTimer;
  15052. begin
  15053. GetProcedureAddress(_ChangeTimerQueueTimer, kernel32, 'ChangeTimerQueueTimer');
  15054. asm
  15055. MOV ESP, EBP
  15056. POP EBP
  15057. JMP [_ChangeTimerQueueTimer]
  15058. end;
  15059. end;
  15060. var
  15061. _DeleteTimerQueueTimer: Pointer;
  15062. function DeleteTimerQueueTimer;
  15063. begin
  15064. GetProcedureAddress(_DeleteTimerQueueTimer, kernel32, 'DeleteTimerQueueTimer');
  15065. asm
  15066. MOV ESP, EBP
  15067. POP EBP
  15068. JMP [_DeleteTimerQueueTimer]
  15069. end;
  15070. end;
  15071. var
  15072. _DeleteTimerQueueEx: Pointer;
  15073. function DeleteTimerQueueEx;
  15074. begin
  15075. GetProcedureAddress(_DeleteTimerQueueEx, kernel32, 'DeleteTimerQueueEx');
  15076. asm
  15077. MOV ESP, EBP
  15078. POP EBP
  15079. JMP [_DeleteTimerQueueEx]
  15080. end;
  15081. end;
  15082. var
  15083. _SetTimerQueueTimer: Pointer;
  15084. function SetTimerQueueTimer;
  15085. begin
  15086. GetProcedureAddress(_SetTimerQueueTimer, kernel32, 'SetTimerQueueTimer');
  15087. asm
  15088. MOV ESP, EBP
  15089. POP EBP
  15090. JMP [_SetTimerQueueTimer]
  15091. end;
  15092. end;
  15093. var
  15094. _CancelTimerQueueTimer: Pointer;
  15095. function CancelTimerQueueTimer;
  15096. begin
  15097. GetProcedureAddress(_CancelTimerQueueTimer, kernel32, 'CancelTimerQueueTimer');
  15098. asm
  15099. MOV ESP, EBP
  15100. POP EBP
  15101. JMP [_CancelTimerQueueTimer]
  15102. end;
  15103. end;
  15104. var
  15105. _DeleteTimerQueue: Pointer;
  15106. function DeleteTimerQueue;
  15107. begin
  15108. GetProcedureAddress(_DeleteTimerQueue, kernel32, 'DeleteTimerQueue');
  15109. asm
  15110. MOV ESP, EBP
  15111. POP EBP
  15112. JMP [_DeleteTimerQueue]
  15113. end;
  15114. end;
  15115. var
  15116. _GetCurrentHwProfileA: Pointer;
  15117. function GetCurrentHwProfileA;
  15118. begin
  15119. GetProcedureAddress(_GetCurrentHwProfileA, advapi32, 'GetCurrentHwProfileA');
  15120. asm
  15121. MOV ESP, EBP
  15122. POP EBP
  15123. JMP [_GetCurrentHwProfileA]
  15124. end;
  15125. end;
  15126. var
  15127. _GetCurrentHwProfileW: Pointer;
  15128. function GetCurrentHwProfileW;
  15129. begin
  15130. GetProcedureAddress(_GetCurrentHwProfileW, advapi32, 'GetCurrentHwProfileW');
  15131. asm
  15132. MOV ESP, EBP
  15133. POP EBP
  15134. JMP [_GetCurrentHwProfileW]
  15135. end;
  15136. end;
  15137. var
  15138. _GetCurrentHwProfile: Pointer;
  15139. function GetCurrentHwProfile;
  15140. begin
  15141. GetProcedureAddress(_GetCurrentHwProfile, advapi32, 'GetCurrentHwProfile' + AWSuffix);
  15142. asm
  15143. MOV ESP, EBP
  15144. POP EBP
  15145. JMP [_GetCurrentHwProfile]
  15146. end;
  15147. end;
  15148. var
  15149. _QueryPerformanceCounter: Pointer;
  15150. function QueryPerformanceCounter;
  15151. begin
  15152. GetProcedureAddress(_QueryPerformanceCounter, kernel32, 'QueryPerformanceCounter');
  15153. asm
  15154. MOV ESP, EBP
  15155. POP EBP
  15156. JMP [_QueryPerformanceCounter]
  15157. end;
  15158. end;
  15159. var
  15160. _QueryPerformanceFrequency: Pointer;
  15161. function QueryPerformanceFrequency;
  15162. begin
  15163. GetProcedureAddress(_QueryPerformanceFrequency, kernel32, 'QueryPerformanceFrequency');
  15164. asm
  15165. MOV ESP, EBP
  15166. POP EBP
  15167. JMP [_QueryPerformanceFrequency]
  15168. end;
  15169. end;
  15170. var
  15171. _GetVersionExA: Pointer;
  15172. function GetVersionExA;
  15173. begin
  15174. GetProcedureAddress(_GetVersionExA, kernel32, 'GetVersionExA');
  15175. asm
  15176. MOV ESP, EBP
  15177. POP EBP
  15178. JMP [_GetVersionExA]
  15179. end;
  15180. end;
  15181. var
  15182. _GetVersionExW: Pointer;
  15183. function GetVersionExW;
  15184. begin
  15185. GetProcedureAddress(_GetVersionExW, kernel32, 'GetVersionExW');
  15186. asm
  15187. MOV ESP, EBP
  15188. POP EBP
  15189. JMP [_GetVersionExW]
  15190. end;
  15191. end;
  15192. var
  15193. _GetVersionEx: Pointer;
  15194. function GetVersionEx;
  15195. begin
  15196. GetProcedureAddress(_GetVersionEx, kernel32, 'GetVersionEx' + AWSuffix);
  15197. asm
  15198. MOV ESP, EBP
  15199. POP EBP
  15200. JMP [_GetVersionEx]
  15201. end;
  15202. end;
  15203. var
  15204. _VerifyVersionInfoA: Pointer;
  15205. function VerifyVersionInfoA;
  15206. begin
  15207. GetProcedureAddress(_VerifyVersionInfoA, kernel32, 'VerifyVersionInfoA');
  15208. asm
  15209. MOV ESP, EBP
  15210. POP EBP
  15211. JMP [_VerifyVersionInfoA]
  15212. end;
  15213. end;
  15214. var
  15215. _VerifyVersionInfoW: Pointer;
  15216. function VerifyVersionInfoW;
  15217. begin
  15218. GetProcedureAddress(_VerifyVersionInfoW, kernel32, 'VerifyVersionInfoW');
  15219. asm
  15220. MOV ESP, EBP
  15221. POP EBP
  15222. JMP [_VerifyVersionInfoW]
  15223. end;
  15224. end;
  15225. var
  15226. _VerifyVersionInfo: Pointer;
  15227. function VerifyVersionInfo;
  15228. begin
  15229. GetProcedureAddress(_VerifyVersionInfo, kernel32, 'VerifyVersionInfo' + AWSuffix);
  15230. asm
  15231. MOV ESP, EBP
  15232. POP EBP
  15233. JMP [_VerifyVersionInfo]
  15234. end;
  15235. end;
  15236. var
  15237. _GetSystemPowerStatus: Pointer;
  15238. function GetSystemPowerStatus;
  15239. begin
  15240. GetProcedureAddress(_GetSystemPowerStatus, kernel32, 'GetSystemPowerStatus');
  15241. asm
  15242. MOV ESP, EBP
  15243. POP EBP
  15244. JMP [_GetSystemPowerStatus]
  15245. end;
  15246. end;
  15247. var
  15248. _SetSystemPowerState: Pointer;
  15249. function SetSystemPowerState;
  15250. begin
  15251. GetProcedureAddress(_SetSystemPowerState, kernel32, 'SetSystemPowerState');
  15252. asm
  15253. MOV ESP, EBP
  15254. POP EBP
  15255. JMP [_SetSystemPowerState]
  15256. end;
  15257. end;
  15258. var
  15259. _AllocateUserPhysicalPages: Pointer;
  15260. function AllocateUserPhysicalPages;
  15261. begin
  15262. GetProcedureAddress(_AllocateUserPhysicalPages, kernel32, 'AllocateUserPhysicalPages');
  15263. asm
  15264. MOV ESP, EBP
  15265. POP EBP
  15266. JMP [_AllocateUserPhysicalPages]
  15267. end;
  15268. end;
  15269. var
  15270. _FreeUserPhysicalPages: Pointer;
  15271. function FreeUserPhysicalPages;
  15272. begin
  15273. GetProcedureAddress(_FreeUserPhysicalPages, kernel32, 'FreeUserPhysicalPages');
  15274. asm
  15275. MOV ESP, EBP
  15276. POP EBP
  15277. JMP [_FreeUserPhysicalPages]
  15278. end;
  15279. end;
  15280. var
  15281. _MapUserPhysicalPages: Pointer;
  15282. function MapUserPhysicalPages;
  15283. begin
  15284. GetProcedureAddress(_MapUserPhysicalPages, kernel32, 'MapUserPhysicalPages');
  15285. asm
  15286. MOV ESP, EBP
  15287. POP EBP
  15288. JMP [_MapUserPhysicalPages]
  15289. end;
  15290. end;
  15291. var
  15292. _MapUserPhysicalPagesScatter: Pointer;
  15293. function MapUserPhysicalPagesScatter;
  15294. begin
  15295. GetProcedureAddress(_MapUserPhysicalPagesScatter, kernel32, 'MapUserPhysicalPagesScatter');
  15296. asm
  15297. MOV ESP, EBP
  15298. POP EBP
  15299. JMP [_MapUserPhysicalPagesScatter]
  15300. end;
  15301. end;
  15302. var
  15303. _CreateJobObjectA: Pointer;
  15304. function CreateJobObjectA;
  15305. begin
  15306. GetProcedureAddress(_CreateJobObjectA, kernel32, 'CreateJobObjectA');
  15307. asm
  15308. MOV ESP, EBP
  15309. POP EBP
  15310. JMP [_CreateJobObjectA]
  15311. end;
  15312. end;
  15313. var
  15314. _CreateJobObjectW: Pointer;
  15315. function CreateJobObjectW;
  15316. begin
  15317. GetProcedureAddress(_CreateJobObjectW, kernel32, 'CreateJobObjectW');
  15318. asm
  15319. MOV ESP, EBP
  15320. POP EBP
  15321. JMP [_CreateJobObjectW]
  15322. end;
  15323. end;
  15324. var
  15325. _CreateJobObject: Pointer;
  15326. function CreateJobObject;
  15327. begin
  15328. GetProcedureAddress(_CreateJobObject, kernel32, 'CreateJobObject' + AWSuffix);
  15329. asm
  15330. MOV ESP, EBP
  15331. POP EBP
  15332. JMP [_CreateJobObject]
  15333. end;
  15334. end;
  15335. var
  15336. _OpenJobObjectA: Pointer;
  15337. function OpenJobObjectA;
  15338. begin
  15339. GetProcedureAddress(_OpenJobObjectA, kernel32, 'OpenJobObjectA');
  15340. asm
  15341. MOV ESP, EBP
  15342. POP EBP
  15343. JMP [_OpenJobObjectA]
  15344. end;
  15345. end;
  15346. var
  15347. _OpenJobObjectW: Pointer;
  15348. function OpenJobObjectW;
  15349. begin
  15350. GetProcedureAddress(_OpenJobObjectW, kernel32, 'OpenJobObjectW');
  15351. asm
  15352. MOV ESP, EBP
  15353. POP EBP
  15354. JMP [_OpenJobObjectW]
  15355. end;
  15356. end;
  15357. var
  15358. _OpenJobObject: Pointer;
  15359. function OpenJobObject;
  15360. begin
  15361. GetProcedureAddress(_OpenJobObject, kernel32, 'OpenJobObject' + AWSuffix);
  15362. asm
  15363. MOV ESP, EBP
  15364. POP EBP
  15365. JMP [_OpenJobObject]
  15366. end;
  15367. end;
  15368. var
  15369. _AssignProcessToJobObject: Pointer;
  15370. function AssignProcessToJobObject;
  15371. begin
  15372. GetProcedureAddress(_AssignProcessToJobObject, kernel32, 'AssignProcessToJobObject');
  15373. asm
  15374. MOV ESP, EBP
  15375. POP EBP
  15376. JMP [_AssignProcessToJobObject]
  15377. end;
  15378. end;
  15379. var
  15380. _TerminateJobObject: Pointer;
  15381. function TerminateJobObject;
  15382. begin
  15383. GetProcedureAddress(_TerminateJobObject, kernel32, 'TerminateJobObject');
  15384. asm
  15385. MOV ESP, EBP
  15386. POP EBP
  15387. JMP [_TerminateJobObject]
  15388. end;
  15389. end;
  15390. var
  15391. _QueryInformationJobObject: Pointer;
  15392. function QueryInformationJobObject;
  15393. begin
  15394. GetProcedureAddress(_QueryInformationJobObject, kernel32, 'QueryInformationJobObject');
  15395. asm
  15396. MOV ESP, EBP
  15397. POP EBP
  15398. JMP [_QueryInformationJobObject]
  15399. end;
  15400. end;
  15401. var
  15402. _SetInformationJobObject: Pointer;
  15403. function SetInformationJobObject;
  15404. begin
  15405. GetProcedureAddress(_SetInformationJobObject, kernel32, 'SetInformationJobObject');
  15406. asm
  15407. MOV ESP, EBP
  15408. POP EBP
  15409. JMP [_SetInformationJobObject]
  15410. end;
  15411. end;
  15412. var
  15413. _IsProcessInJob: Pointer;
  15414. function IsProcessInJob;
  15415. begin
  15416. GetProcedureAddress(_IsProcessInJob, kernel32, 'IsProcessInJob');
  15417. asm
  15418. MOV ESP, EBP
  15419. POP EBP
  15420. JMP [_IsProcessInJob]
  15421. end;
  15422. end;
  15423. var
  15424. _CreateJobSet: Pointer;
  15425. function CreateJobSet;
  15426. begin
  15427. GetProcedureAddress(_CreateJobSet, kernel32, 'CreateJobSet');
  15428. asm
  15429. MOV ESP, EBP
  15430. POP EBP
  15431. JMP [_CreateJobSet]
  15432. end;
  15433. end;
  15434. var
  15435. _AddVectoredExceptionHandler: Pointer;
  15436. function AddVectoredExceptionHandler;
  15437. begin
  15438. GetProcedureAddress(_AddVectoredExceptionHandler, kernel32, 'AddVectoredExceptionHandler');
  15439. asm
  15440. MOV ESP, EBP
  15441. POP EBP
  15442. JMP [_AddVectoredExceptionHandler]
  15443. end;
  15444. end;
  15445. var
  15446. _RemoveVectoredExceptionHandler: Pointer;
  15447. function RemoveVectoredExceptionHandler;
  15448. begin
  15449. GetProcedureAddress(_RemoveVectoredExceptionHandler, kernel32, 'RemoveVectoredExceptionHandler');
  15450. asm
  15451. MOV ESP, EBP
  15452. POP EBP
  15453. JMP [_RemoveVectoredExceptionHandler]
  15454. end;
  15455. end;
  15456. var
  15457. _FindFirstVolumeA: Pointer;
  15458. function FindFirstVolumeA;
  15459. begin
  15460. GetProcedureAddress(_FindFirstVolumeA, kernel32, 'FindFirstVolumeA');
  15461. asm
  15462. MOV ESP, EBP
  15463. POP EBP
  15464. JMP [_FindFirstVolumeA]
  15465. end;
  15466. end;
  15467. var
  15468. _FindFirstVolumeW: Pointer;
  15469. function FindFirstVolumeW;
  15470. begin
  15471. GetProcedureAddress(_FindFirstVolumeW, kernel32, 'FindFirstVolumeW');
  15472. asm
  15473. MOV ESP, EBP
  15474. POP EBP
  15475. JMP [_FindFirstVolumeW]
  15476. end;
  15477. end;
  15478. var
  15479. _FindFirstVolume: Pointer;
  15480. function FindFirstVolume;
  15481. begin
  15482. GetProcedureAddress(_FindFirstVolume, kernel32, 'FindFirstVolume' + AWSuffix);
  15483. asm
  15484. MOV ESP, EBP
  15485. POP EBP
  15486. JMP [_FindFirstVolume]
  15487. end;
  15488. end;
  15489. var
  15490. _FindNextVolumeA: Pointer;
  15491. function FindNextVolumeA;
  15492. begin
  15493. GetProcedureAddress(_FindNextVolumeA, kernel32, 'FindNextVolumeA');
  15494. asm
  15495. MOV ESP, EBP
  15496. POP EBP
  15497. JMP [_FindNextVolumeA]
  15498. end;
  15499. end;
  15500. var
  15501. _FindNextVolumeW: Pointer;
  15502. function FindNextVolumeW;
  15503. begin
  15504. GetProcedureAddress(_FindNextVolumeW, kernel32, 'FindNextVolumeW');
  15505. asm
  15506. MOV ESP, EBP
  15507. POP EBP
  15508. JMP [_FindNextVolumeW]
  15509. end;
  15510. end;
  15511. var
  15512. _FindNextVolume: Pointer;
  15513. function FindNextVolume;
  15514. begin
  15515. GetProcedureAddress(_FindNextVolume, kernel32, 'FindNextVolume' + AWSuffix);
  15516. asm
  15517. MOV ESP, EBP
  15518. POP EBP
  15519. JMP [_FindNextVolume]
  15520. end;
  15521. end;
  15522. var
  15523. _FindVolumeClose: Pointer;
  15524. function FindVolumeClose;
  15525. begin
  15526. GetProcedureAddress(_FindVolumeClose, kernel32, 'FindVolumeClose');
  15527. asm
  15528. MOV ESP, EBP
  15529. POP EBP
  15530. JMP [_FindVolumeClose]
  15531. end;
  15532. end;
  15533. var
  15534. _FindFirstVolumeMountPointA: Pointer;
  15535. function FindFirstVolumeMountPointA;
  15536. begin
  15537. GetProcedureAddress(_FindFirstVolumeMountPointA, kernel32, 'FindFirstVolumeMountPointA');
  15538. asm
  15539. MOV ESP, EBP
  15540. POP EBP
  15541. JMP [_FindFirstVolumeMountPointA]
  15542. end;
  15543. end;
  15544. var
  15545. _FindFirstVolumeMountPointW: Pointer;
  15546. function FindFirstVolumeMountPointW;
  15547. begin
  15548. GetProcedureAddress(_FindFirstVolumeMountPointW, kernel32, 'FindFirstVolumeMountPointW');
  15549. asm
  15550. MOV ESP, EBP
  15551. POP EBP
  15552. JMP [_FindFirstVolumeMountPointW]
  15553. end;
  15554. end;
  15555. var
  15556. _FindFirstVolumeMountPoint: Pointer;
  15557. function FindFirstVolumeMountPoint;
  15558. begin
  15559. GetProcedureAddress(_FindFirstVolumeMountPoint, kernel32, 'FindFirstVolumeMountPoint' + AWSuffix);
  15560. asm
  15561. MOV ESP, EBP
  15562. POP EBP
  15563. JMP [_FindFirstVolumeMountPoint]
  15564. end;
  15565. end;
  15566. var
  15567. _FindNextVolumeMountPointA: Pointer;
  15568. function FindNextVolumeMountPointA;
  15569. begin
  15570. GetProcedureAddress(_FindNextVolumeMountPointA, kernel32, 'FindNextVolumeMountPointA');
  15571. asm
  15572. MOV ESP, EBP
  15573. POP EBP
  15574. JMP [_FindNextVolumeMountPointA]
  15575. end;
  15576. end;
  15577. var
  15578. _FindNextVolumeMountPointW: Pointer;
  15579. function FindNextVolumeMountPointW;
  15580. begin
  15581. GetProcedureAddress(_FindNextVolumeMountPointW, kernel32, 'FindNextVolumeMountPointW');
  15582. asm
  15583. MOV ESP, EBP
  15584. POP EBP
  15585. JMP [_FindNextVolumeMountPointW]
  15586. end;
  15587. end;
  15588. var
  15589. _FindNextVolumeMountPoint: Pointer;
  15590. function FindNextVolumeMountPoint;
  15591. begin
  15592. GetProcedureAddress(_FindNextVolumeMountPoint, kernel32, 'FindNextVolumeMountPoint' + AWSuffix);
  15593. asm
  15594. MOV ESP, EBP
  15595. POP EBP
  15596. JMP [_FindNextVolumeMountPoint]
  15597. end;
  15598. end;
  15599. var
  15600. _FindVolumeMountPointClose: Pointer;
  15601. function FindVolumeMountPointClose;
  15602. begin
  15603. GetProcedureAddress(_FindVolumeMountPointClose, kernel32, 'FindVolumeMountPointClose');
  15604. asm
  15605. MOV ESP, EBP
  15606. POP EBP
  15607. JMP [_FindVolumeMountPointClose]
  15608. end;
  15609. end;
  15610. var
  15611. _SetVolumeMountPointA: Pointer;
  15612. function SetVolumeMountPointA;
  15613. begin
  15614. GetProcedureAddress(_SetVolumeMountPointA, kernel32, 'SetVolumeMountPointA');
  15615. asm
  15616. MOV ESP, EBP
  15617. POP EBP
  15618. JMP [_SetVolumeMountPointA]
  15619. end;
  15620. end;
  15621. var
  15622. _SetVolumeMountPointW: Pointer;
  15623. function SetVolumeMountPointW;
  15624. begin
  15625. GetProcedureAddress(_SetVolumeMountPointW, kernel32, 'SetVolumeMountPointW');
  15626. asm
  15627. MOV ESP, EBP
  15628. POP EBP
  15629. JMP [_SetVolumeMountPointW]
  15630. end;
  15631. end;
  15632. var
  15633. _SetVolumeMountPoint: Pointer;
  15634. function SetVolumeMountPoint;
  15635. begin
  15636. GetProcedureAddress(_SetVolumeMountPoint, kernel32, 'SetVolumeMountPoint' + AWSuffix);
  15637. asm
  15638. MOV ESP, EBP
  15639. POP EBP
  15640. JMP [_SetVolumeMountPoint]
  15641. end;
  15642. end;
  15643. var
  15644. _DeleteVolumeMountPointA: Pointer;
  15645. function DeleteVolumeMountPointA;
  15646. begin
  15647. GetProcedureAddress(_DeleteVolumeMountPointA, kernel32, 'DeleteVolumeMountPointA');
  15648. asm
  15649. MOV ESP, EBP
  15650. POP EBP
  15651. JMP [_DeleteVolumeMountPointA]
  15652. end;
  15653. end;
  15654. var
  15655. _DeleteVolumeMountPointW: Pointer;
  15656. function DeleteVolumeMountPointW;
  15657. begin
  15658. GetProcedureAddress(_DeleteVolumeMountPointW, kernel32, 'DeleteVolumeMountPointW');
  15659. asm
  15660. MOV ESP, EBP
  15661. POP EBP
  15662. JMP [_DeleteVolumeMountPointW]
  15663. end;
  15664. end;
  15665. var
  15666. _DeleteVolumeMountPoint: Pointer;
  15667. function DeleteVolumeMountPoint;
  15668. begin
  15669. GetProcedureAddress(_DeleteVolumeMountPoint, kernel32, 'DeleteVolumeMountPoint' + AWSuffix);
  15670. asm
  15671. MOV ESP, EBP
  15672. POP EBP
  15673. JMP [_DeleteVolumeMountPoint]
  15674. end;
  15675. end;
  15676. var
  15677. _GetVolumeNameForVolMountPointA: Pointer;
  15678. function GetVolumeNameForVolumeMountPointA;
  15679. begin
  15680. GetProcedureAddress(_GetVolumeNameForVolMountPointA, kernel32, 'GetVolumeNameForVolumeMountPointA');
  15681. asm
  15682. MOV ESP, EBP
  15683. POP EBP
  15684. JMP [_GetVolumeNameForVolMountPointA]
  15685. end;
  15686. end;
  15687. var
  15688. _GetVolumeNameForVolMountPointW: Pointer;
  15689. function GetVolumeNameForVolumeMountPointW;
  15690. begin
  15691. GetProcedureAddress(_GetVolumeNameForVolMountPointW, kernel32, 'GetVolumeNameForVolumeMountPointW');
  15692. asm
  15693. MOV ESP, EBP
  15694. POP EBP
  15695. JMP [_GetVolumeNameForVolMountPointW]
  15696. end;
  15697. end;
  15698. var
  15699. _GetVolumeNameForVolMountPoint: Pointer;
  15700. function GetVolumeNameForVolumeMountPoint;
  15701. begin
  15702. GetProcedureAddress(_GetVolumeNameForVolMountPoint, kernel32, 'GetVolumeNameForVolumeMountPoint' + AWSuffix);
  15703. asm
  15704. MOV ESP, EBP
  15705. POP EBP
  15706. JMP [_GetVolumeNameForVolMountPoint]
  15707. end;
  15708. end;
  15709. var
  15710. _GetVolumePathNameA: Pointer;
  15711. function GetVolumePathNameA;
  15712. begin
  15713. GetProcedureAddress(_GetVolumePathNameA, kernel32, 'GetVolumePathNameA');
  15714. asm
  15715. MOV ESP, EBP
  15716. POP EBP
  15717. JMP [_GetVolumePathNameA]
  15718. end;
  15719. end;
  15720. var
  15721. _GetVolumePathNameW: Pointer;
  15722. function GetVolumePathNameW;
  15723. begin
  15724. GetProcedureAddress(_GetVolumePathNameW, kernel32, 'GetVolumePathNameW');
  15725. asm
  15726. MOV ESP, EBP
  15727. POP EBP
  15728. JMP [_GetVolumePathNameW]
  15729. end;
  15730. end;
  15731. var
  15732. _GetVolumePathName: Pointer;
  15733. function GetVolumePathName;
  15734. begin
  15735. GetProcedureAddress(_GetVolumePathName, kernel32, 'GetVolumePathName' + AWSuffix);
  15736. asm
  15737. MOV ESP, EBP
  15738. POP EBP
  15739. JMP [_GetVolumePathName]
  15740. end;
  15741. end;
  15742. var
  15743. _GetVolumePathNamesForVolNameA: Pointer;
  15744. function GetVolumePathNamesForVolumeNameA;
  15745. begin
  15746. GetProcedureAddress(_GetVolumePathNamesForVolNameA, kernel32, 'GetVolumePathNamesForVolumeNameA');
  15747. asm
  15748. MOV ESP, EBP
  15749. POP EBP
  15750. JMP [_GetVolumePathNamesForVolNameA]
  15751. end;
  15752. end;
  15753. var
  15754. _GetVolumePathNamesForVolNameW: Pointer;
  15755. function GetVolumePathNamesForVolumeNameW;
  15756. begin
  15757. GetProcedureAddress(_GetVolumePathNamesForVolNameW, kernel32, 'GetVolumePathNamesForVolumeNameW');
  15758. asm
  15759. MOV ESP, EBP
  15760. POP EBP
  15761. JMP [_GetVolumePathNamesForVolNameW]
  15762. end;
  15763. end;
  15764. var
  15765. _GetVolumePathNamesForVolName: Pointer;
  15766. function GetVolumePathNamesForVolumeName;
  15767. begin
  15768. GetProcedureAddress(_GetVolumePathNamesForVolName, kernel32, 'GetVolumePathNamesForVolumeName' + AWSuffix);
  15769. asm
  15770. MOV ESP, EBP
  15771. POP EBP
  15772. JMP [_GetVolumePathNamesForVolName]
  15773. end;
  15774. end;
  15775. var
  15776. _CreateActCtxA: Pointer;
  15777. function CreateActCtxA;
  15778. begin
  15779. GetProcedureAddress(_CreateActCtxA, kernel32, 'CreateActCtxA');
  15780. asm
  15781. MOV ESP, EBP
  15782. POP EBP
  15783. JMP [_CreateActCtxA]
  15784. end;
  15785. end;
  15786. var
  15787. _CreateActCtxW: Pointer;
  15788. function CreateActCtxW;
  15789. begin
  15790. GetProcedureAddress(_CreateActCtxW, kernel32, 'CreateActCtxW');
  15791. asm
  15792. MOV ESP, EBP
  15793. POP EBP
  15794. JMP [_CreateActCtxW]
  15795. end;
  15796. end;
  15797. var
  15798. _CreateActCtx: Pointer;
  15799. function CreateActCtx;
  15800. begin
  15801. GetProcedureAddress(_CreateActCtx, kernel32, 'CreateActCtx' + AWSuffix);
  15802. asm
  15803. MOV ESP, EBP
  15804. POP EBP
  15805. JMP [_CreateActCtx]
  15806. end;
  15807. end;
  15808. var
  15809. _AddRefActCtx: Pointer;
  15810. procedure AddRefActCtx;
  15811. begin
  15812. GetProcedureAddress(_AddRefActCtx, kernel32, 'AddRefActCtx');
  15813. asm
  15814. MOV ESP, EBP
  15815. POP EBP
  15816. JMP [_AddRefActCtx]
  15817. end;
  15818. end;
  15819. var
  15820. _ReleaseActCtx: Pointer;
  15821. procedure ReleaseActCtx;
  15822. begin
  15823. GetProcedureAddress(_ReleaseActCtx, kernel32, 'ReleaseActCtx');
  15824. asm
  15825. MOV ESP, EBP
  15826. POP EBP
  15827. JMP [_ReleaseActCtx]
  15828. end;
  15829. end;
  15830. var
  15831. _ZombifyActCtx: Pointer;
  15832. function ZombifyActCtx;
  15833. begin
  15834. GetProcedureAddress(_ZombifyActCtx, kernel32, 'ZombifyActCtx');
  15835. asm
  15836. MOV ESP, EBP
  15837. POP EBP
  15838. JMP [_ZombifyActCtx]
  15839. end;
  15840. end;
  15841. var
  15842. _ActivateActCtx: Pointer;
  15843. function ActivateActCtx;
  15844. begin
  15845. GetProcedureAddress(_ActivateActCtx, kernel32, 'ActivateActCtx');
  15846. asm
  15847. MOV ESP, EBP
  15848. POP EBP
  15849. JMP [_ActivateActCtx]
  15850. end;
  15851. end;
  15852. var
  15853. _DeactivateActCtx: Pointer;
  15854. function DeactivateActCtx;
  15855. begin
  15856. GetProcedureAddress(_DeactivateActCtx, kernel32, 'DeactivateActCtx');
  15857. asm
  15858. MOV ESP, EBP
  15859. POP EBP
  15860. JMP [_DeactivateActCtx]
  15861. end;
  15862. end;
  15863. var
  15864. _GetCurrentActCtx: Pointer;
  15865. function GetCurrentActCtx;
  15866. begin
  15867. GetProcedureAddress(_GetCurrentActCtx, kernel32, 'GetCurrentActCtx');
  15868. asm
  15869. MOV ESP, EBP
  15870. POP EBP
  15871. JMP [_GetCurrentActCtx]
  15872. end;
  15873. end;
  15874. var
  15875. _FindActCtxSectionStringA: Pointer;
  15876. function FindActCtxSectionStringA;
  15877. begin
  15878. GetProcedureAddress(_FindActCtxSectionStringA, kernel32, 'FindActCtxSectionStringA');
  15879. asm
  15880. MOV ESP, EBP
  15881. POP EBP
  15882. JMP [_FindActCtxSectionStringA]
  15883. end;
  15884. end;
  15885. var
  15886. _FindActCtxSectionStringW: Pointer;
  15887. function FindActCtxSectionStringW;
  15888. begin
  15889. GetProcedureAddress(_FindActCtxSectionStringW, kernel32, 'FindActCtxSectionStringW');
  15890. asm
  15891. MOV ESP, EBP
  15892. POP EBP
  15893. JMP [_FindActCtxSectionStringW]
  15894. end;
  15895. end;
  15896. var
  15897. _FindActCtxSectionString: Pointer;
  15898. function FindActCtxSectionString;
  15899. begin
  15900. GetProcedureAddress(_FindActCtxSectionString, kernel32, 'FindActCtxSectionString' + AWSuffix);
  15901. asm
  15902. MOV ESP, EBP
  15903. POP EBP
  15904. JMP [_FindActCtxSectionString]
  15905. end;
  15906. end;
  15907. var
  15908. _FindActCtxSectionGuid: Pointer;
  15909. function FindActCtxSectionGuid;
  15910. begin
  15911. GetProcedureAddress(_FindActCtxSectionGuid, kernel32, 'FindActCtxSectionGuid');
  15912. asm
  15913. MOV ESP, EBP
  15914. POP EBP
  15915. JMP [_FindActCtxSectionGuid]
  15916. end;
  15917. end;
  15918. var
  15919. _QueryActCtxW: Pointer;
  15920. function QueryActCtxW;
  15921. begin
  15922. GetProcedureAddress(_QueryActCtxW, kernel32, 'QueryActCtxW');
  15923. asm
  15924. MOV ESP, EBP
  15925. POP EBP
  15926. JMP [_QueryActCtxW]
  15927. end;
  15928. end;
  15929. var
  15930. _ProcessIdToSessionId: Pointer;
  15931. function ProcessIdToSessionId;
  15932. begin
  15933. GetProcedureAddress(_ProcessIdToSessionId, kernel32, 'ProcessIdToSessionId');
  15934. asm
  15935. MOV ESP, EBP
  15936. POP EBP
  15937. JMP [_ProcessIdToSessionId]
  15938. end;
  15939. end;
  15940. var
  15941. _WTSGetActiveConsoleSessionId: Pointer;
  15942. function WTSGetActiveConsoleSessionId;
  15943. begin
  15944. GetProcedureAddress(_WTSGetActiveConsoleSessionId, kernel32, 'WTSGetActiveConsoleSessionId');
  15945. asm
  15946. MOV ESP, EBP
  15947. POP EBP
  15948. JMP [_WTSGetActiveConsoleSessionId]
  15949. end;
  15950. end;
  15951. var
  15952. _IsWow64Process: Pointer;
  15953. function IsWow64Process;
  15954. begin
  15955. GetProcedureAddress(_IsWow64Process, kernel32, 'IsWow64Process');
  15956. asm
  15957. MOV ESP, EBP
  15958. POP EBP
  15959. JMP [_IsWow64Process]
  15960. end;
  15961. end;
  15962. var
  15963. _GetLogicalProcessorInformation: Pointer;
  15964. function GetLogicalProcessorInformation;
  15965. begin
  15966. GetProcedureAddress(_GetLogicalProcessorInformation, kernel32, 'GetLogicalProcessorInformation');
  15967. asm
  15968. MOV ESP, EBP
  15969. POP EBP
  15970. JMP [_GetLogicalProcessorInformation]
  15971. end;
  15972. end;
  15973. var
  15974. _GetNumaHighestNodeNumber: Pointer;
  15975. function GetNumaHighestNodeNumber;
  15976. begin
  15977. GetProcedureAddress(_GetNumaHighestNodeNumber, kernel32, 'GetNumaHighestNodeNumber');
  15978. asm
  15979. MOV ESP, EBP
  15980. POP EBP
  15981. JMP [_GetNumaHighestNodeNumber]
  15982. end;
  15983. end;
  15984. var
  15985. _GetNumaProcessorNode: Pointer;
  15986. function GetNumaProcessorNode;
  15987. begin
  15988. GetProcedureAddress(_GetNumaProcessorNode, kernel32, 'GetNumaProcessorNode');
  15989. asm
  15990. MOV ESP, EBP
  15991. POP EBP
  15992. JMP [_GetNumaProcessorNode]
  15993. end;
  15994. end;
  15995. var
  15996. _GetNumaNodeProcessorMask: Pointer;
  15997. function GetNumaNodeProcessorMask;
  15998. begin
  15999. GetProcedureAddress(_GetNumaNodeProcessorMask, kernel32, 'GetNumaNodeProcessorMask');
  16000. asm
  16001. MOV ESP, EBP
  16002. POP EBP
  16003. JMP [_GetNumaNodeProcessorMask]
  16004. end;
  16005. end;
  16006. var
  16007. _GetNumaAvailableMemoryNode: Pointer;
  16008. function GetNumaAvailableMemoryNode;
  16009. begin
  16010. GetProcedureAddress(_GetNumaAvailableMemoryNode, kernel32, 'GetNumaAvailableMemoryNode');
  16011. asm
  16012. MOV ESP, EBP
  16013. POP EBP
  16014. JMP [_GetNumaAvailableMemoryNode]
  16015. end;
  16016. end;
  16017. {$ELSE}
  16018. function InterlockedCompareExchange64; external kernel32 name 'InterlockedCompareExchange64';
  16019. function InterlockedIncrement; external kernel32 name 'InterlockedIncrement';
  16020. function InterlockedDecrement; external kernel32 name 'InterlockedDecrement';
  16021. function InterlockedExchange; external kernel32 name 'InterlockedExchange';
  16022. function InterlockedExchangeAdd; external kernel32 name 'InterlockedExchangeAdd';
  16023. function InterlockedCompareExchange; external kernel32 name 'InterlockedCompareExchange';
  16024. procedure InitializeSListHead; external kernel32 name 'InitializeSListHead';
  16025. function InterlockedPopEntrySList; external kernel32 name 'InterlockedPopEntrySList';
  16026. function InterlockedPushEntrySList; external kernel32 name 'InterlockedPushEntrySList';
  16027. function InterlockedFlushSList; external kernel32 name 'InterlockedFlushSList';
  16028. function QueryDepthSList; external kernel32 name 'QueryDepthSList';
  16029. function FreeResource; external kernel32 name 'FreeResource';
  16030. function LockResource; external kernel32 name 'LockResource';
  16031. function FreeLibrary; external kernel32 name 'FreeLibrary';
  16032. procedure FreeLibraryAndExitThread; external kernel32 name 'FreeLibraryAndExitThread';
  16033. function DisableThreadLibraryCalls; external kernel32 name 'DisableThreadLibraryCalls';
  16034. function GetProcAddress; external kernel32 name 'GetProcAddress';
  16035. function GetVersion; external kernel32 name 'GetVersion';
  16036. function GlobalAlloc; external kernel32 name 'GlobalAlloc';
  16037. function GlobalReAlloc; external kernel32 name 'GlobalReAlloc';
  16038. function GlobalSize; external kernel32 name 'GlobalSize';
  16039. function GlobalFlags; external kernel32 name 'GlobalFlags';
  16040. function GlobalLock; external kernel32 name 'GlobalLock';
  16041. function GlobalHandle; external kernel32 name 'GlobalHandle';
  16042. function GlobalUnlock; external kernel32 name 'GlobalUnlock';
  16043. function GlobalFree; external kernel32 name 'GlobalFree';
  16044. function GlobalCompact; external kernel32 name 'GlobalCompact';
  16045. procedure GlobalFix; external kernel32 name 'GlobalFix';
  16046. procedure GlobalUnfix; external kernel32 name 'GlobalUnfix';
  16047. function GlobalWire; external kernel32 name 'GlobalWire';
  16048. function GlobalUnWire; external kernel32 name 'GlobalUnWire';
  16049. procedure GlobalMemoryStatus; external kernel32 name 'GlobalMemoryStatus';
  16050. function GlobalMemoryStatusEx; external kernel32 name 'GlobalMemoryStatusEx';
  16051. function LocalAlloc; external kernel32 name 'LocalAlloc';
  16052. function LocalReAlloc; external kernel32 name 'LocalReAlloc';
  16053. function LocalLock; external kernel32 name 'LocalLock';
  16054. function LocalHandle; external kernel32 name 'LocalHandle';
  16055. function LocalUnlock; external kernel32 name 'LocalUnlock';
  16056. function LocalSize; external kernel32 name 'LocalSize';
  16057. function LocalFlags; external kernel32 name 'LocalFlags';
  16058. function LocalFree; external kernel32 name 'LocalFree';
  16059. function LocalShrink; external kernel32 name 'LocalShrink';
  16060. function LocalCompact; external kernel32 name 'LocalCompact';
  16061. function FlushInstructionCache; external kernel32 name 'FlushInstructionCache';
  16062. function VirtualAlloc; external kernel32 name 'VirtualAlloc';
  16063. function VirtualFree; external kernel32 name 'VirtualFree';
  16064. function VirtualProtect; external kernel32 name 'VirtualProtect';
  16065. function VirtualQuery; external kernel32 name 'VirtualQuery';
  16066. function VirtualAllocEx; external kernel32 name 'VirtualAllocEx';
  16067. function GetWriteWatch; external kernel32 name 'GetWriteWatch';
  16068. function ResetWriteWatch; external kernel32 name 'ResetWriteWatch';
  16069. function GetLargePageMinimum; external kernel32 name 'GetLargePageMinimum';
  16070. function VirtualFreeEx; external kernel32 name 'VirtualFreeEx';
  16071. function VirtualProtectEx; external kernel32 name 'VirtualProtectEx';
  16072. function VirtualQueryEx; external kernel32 name 'VirtualQueryEx';
  16073. function HeapCreate; external kernel32 name 'HeapCreate';
  16074. function HeapDestroy; external kernel32 name 'HeapDestroy';
  16075. function HeapAlloc; external kernel32 name 'HeapAlloc';
  16076. function HeapReAlloc; external kernel32 name 'HeapReAlloc';
  16077. function HeapFree; external kernel32 name 'HeapFree';
  16078. function HeapSize; external kernel32 name 'HeapSize';
  16079. function HeapValidate; external kernel32 name 'HeapValidate';
  16080. function HeapCompact; external kernel32 name 'HeapCompact';
  16081. function GetProcessHeap; external kernel32 name 'GetProcessHeap';
  16082. function GetProcessHeaps; external kernel32 name 'GetProcessHeaps';
  16083. function HeapLock; external kernel32 name 'HeapLock';
  16084. function HeapUnlock; external kernel32 name 'HeapUnlock';
  16085. function HeapWalk; external kernel32 name 'HeapWalk';
  16086. function HeapSetInformation; external kernel32 name 'HeapSetInformation';
  16087. function HeapQueryInformation; external kernel32 name 'HeapQueryInformation';
  16088. function GetBinaryTypeA; external kernel32 name 'GetBinaryTypeA';
  16089. function GetBinaryTypeW; external kernel32 name 'GetBinaryTypeW';
  16090. function GetBinaryType; external kernel32 name 'GetBinaryType' + AWSuffix;
  16091. function GetShortPathNameA; external kernel32 name 'GetShortPathNameA';
  16092. function GetShortPathNameW; external kernel32 name 'GetShortPathNameW';
  16093. function GetShortPathName; external kernel32 name 'GetShortPathName' + AWSuffix;
  16094. function GetLongPathNameA; external kernel32 name 'GetLongPathNameA';
  16095. function GetLongPathNameW; external kernel32 name 'GetLongPathNameW';
  16096. function GetLongPathName; external kernel32 name 'GetLongPathName' + AWSuffix;
  16097. function GetProcessAffinityMask; external kernel32 name 'GetProcessAffinityMask';
  16098. function SetProcessAffinityMask; external kernel32 name 'SetProcessAffinityMask';
  16099. function GetProcessHandleCount; external kernel32 name 'GetProcessHandleCount';
  16100. function GetProcessTimes; external kernel32 name 'GetProcessTimes';
  16101. function GetProcessIoCounters; external kernel32 name 'GetProcessIoCounters';
  16102. function GetProcessWorkingSetSize; external kernel32 name 'GetProcessWorkingSetSize';
  16103. function GetProcessWorkingSetSizeEx; external kernel32 name 'GetProcessWorkingSetSizeEx';
  16104. function SetProcessWorkingSetSize; external kernel32 name 'SetProcessWorkingSetSize';
  16105. function SetProcessWorkingSetSizeEx; external kernel32 name 'SetProcessWorkingSetSizeEx';
  16106. function OpenProcess; external kernel32 name 'OpenProcess';
  16107. function GetCurrentProcess; external kernel32 name 'GetCurrentProcess';
  16108. function GetCurrentProcessId; external kernel32 name 'GetCurrentProcessId';
  16109. procedure ExitProcess; external kernel32 name 'ExitProcess';
  16110. function TerminateProcess; external kernel32 name 'TerminateProcess';
  16111. function GetExitCodeProcess; external kernel32 name 'GetExitCodeProcess';
  16112. procedure FatalExit; external kernel32 name 'FatalExit';
  16113. function GetEnvironmentStringsW; external kernel32 name 'GetEnvironmentStringsW';
  16114. function GetEnvironmentStrings; external kernel32 name 'GetEnvironmentStrings' + AWSuffix;
  16115. {$IFNDEF UNICODE}
  16116. function GetEnvironmentStringsA; external kernel32 name 'GetEnvironmentStringsA';
  16117. {$ENDIF !UNICODE}
  16118. function SetEnvironmentStringsA; external kernel32 name 'SetEnvironmentStringsA';
  16119. function SetEnvironmentStringsW; external kernel32 name 'SetEnvironmentStringsW';
  16120. function SetEnvironmentStrings; external kernel32 name 'SetEnvironmentStrings' + AWSuffix;
  16121. function FreeEnvironmentStringsA; external kernel32 name 'FreeEnvironmentStringsA';
  16122. function FreeEnvironmentStringsW; external kernel32 name 'FreeEnvironmentStringsW';
  16123. function FreeEnvironmentStrings; external kernel32 name 'FreeEnvironmentStrings' + AWSuffix;
  16124. procedure RaiseException; external kernel32 name 'RaiseException';
  16125. function UnhandledExceptionFilter; external kernel32 name 'UnhandledExceptionFilter';
  16126. function SetUnhandledExceptionFilter; external kernel32 name 'SetUnhandledExceptionFilter';
  16127. function CreateFiber; external kernel32 name 'CreateFiber';
  16128. function CreateFiberEx; external kernel32 name 'CreateFiberEx';
  16129. procedure DeleteFiber; external kernel32 name 'DeleteFiber';
  16130. function ConvertThreadToFiber; external kernel32 name 'ConvertThreadToFiber';
  16131. function ConvertThreadToFiberEx; external kernel32 name 'ConvertThreadToFiberEx';
  16132. function ConvertFiberToThread; external kernel32 name 'ConvertFiberToThread';
  16133. procedure SwitchToFiber; external kernel32 name 'SwitchToFiber';
  16134. function SwitchToThread; external kernel32 name 'SwitchToThread';
  16135. function CreateThread; external kernel32 name 'CreateThread';
  16136. function CreateRemoteThread; external kernel32 name 'CreateRemoteThread';
  16137. function GetCurrentThread; external kernel32 name 'GetCurrentThread';
  16138. function GetCurrentThreadId; external kernel32 name 'GetCurrentThreadId';
  16139. function GetProcessIdOfThread; external kernel32 name 'GetProcessIdOfThread';
  16140. function GetThreadId; external kernel32 name 'GetThreadId';
  16141. function GetProcessId; external kernel32 name 'GetProcessId';
  16142. function GetCurrentProcessorNumber; external kernel32 name 'GetCurrentProcessorNumber';
  16143. function SetThreadAffinityMask; external kernel32 name 'SetThreadAffinityMask';
  16144. function SetThreadIdealProcessor; external kernel32 name 'SetThreadIdealProcessor';
  16145. function SetProcessPriorityBoost; external kernel32 name 'SetProcessPriorityBoost';
  16146. function GetProcessPriorityBoost; external kernel32 name 'GetProcessPriorityBoost';
  16147. function RequestWakeupLatency; external kernel32 name 'RequestWakeupLatency';
  16148. function IsSystemResumeAutomatic; external kernel32 name 'IsSystemResumeAutomatic';
  16149. function OpenThread; external kernel32 name 'OpenThread';
  16150. function SetThreadPriority; external kernel32 name 'SetThreadPriority';
  16151. function SetThreadPriorityBoost; external kernel32 name 'SetThreadPriorityBoost';
  16152. function GetThreadPriorityBoost; external kernel32 name 'GetThreadPriorityBoost';
  16153. function GetThreadPriority; external kernel32 name 'GetThreadPriority';
  16154. function GetThreadTimes; external kernel32 name 'GetThreadTimes';
  16155. function GetThreadIOPendingFlag; external kernel32 name 'GetThreadIOPendingFlag';
  16156. procedure ExitThread; external kernel32 name 'ExitThread';
  16157. function TerminateThread; external kernel32 name 'TerminateThread';
  16158. function GetExitCodeThread; external kernel32 name 'GetExitCodeThread';
  16159. function GetThreadSelectorEntry; external kernel32 name 'GetThreadSelectorEntry';
  16160. function SetThreadExecutionState; external kernel32 name 'SetThreadExecutionState';
  16161. function GetLastError; external kernel32 name 'GetLastError';
  16162. procedure SetLastError; external kernel32 name 'SetLastError';
  16163. procedure RestoreLastError; external kernel32 name 'RestoreLastError';
  16164. function GetOverlappedResult; external kernel32 name 'GetOverlappedResult';
  16165. function CreateIoCompletionPort; external kernel32 name 'CreateIoCompletionPort';
  16166. function GetQueuedCompletionStatus; external kernel32 name 'GetQueuedCompletionStatus';
  16167. function PostQueuedCompletionStatus; external kernel32 name 'PostQueuedCompletionStatus';
  16168. function SetErrorMode; external kernel32 name 'SetErrorMode';
  16169. function ReadProcessMemory; external kernel32 name 'ReadProcessMemory';
  16170. function WriteProcessMemory; external kernel32 name 'WriteProcessMemory';
  16171. function GetThreadContext; external kernel32 name 'GetThreadContext';
  16172. function SetThreadContext; external kernel32 name 'SetThreadContext';
  16173. function SuspendThread; external kernel32 name 'SuspendThread';
  16174. function ResumeThread; external kernel32 name 'ResumeThread';
  16175. function QueueUserAPC; external kernel32 name 'QueueUserAPC';
  16176. function IsDebuggerPresent; external kernel32 name 'IsDebuggerPresent';
  16177. function CheckRemoteDebuggerPresent; external kernel32 name 'CheckRemoteDebuggerPresent';
  16178. procedure DebugBreak; external kernel32 name 'DebugBreak';
  16179. function WaitForDebugEvent; external kernel32 name 'WaitForDebugEvent';
  16180. function ContinueDebugEvent; external kernel32 name 'ContinueDebugEvent';
  16181. function DebugActiveProcess; external kernel32 name 'DebugActiveProcess';
  16182. function DebugActiveProcessStop; external kernel32 name 'DebugActiveProcessStop';
  16183. function DebugSetProcessKillOnExit; external kernel32 name 'DebugSetProcessKillOnExit';
  16184. function DebugBreakProcess; external kernel32 name 'DebugBreakProcess';
  16185. procedure InitializeCriticalSection; external kernel32 name 'InitializeCriticalSection';
  16186. procedure EnterCriticalSection; external kernel32 name 'EnterCriticalSection';
  16187. procedure LeaveCriticalSection; external kernel32 name 'LeaveCriticalSection';
  16188. function InitializeCriticalSectionAndSpinCount; external kernel32 name 'InitializeCriticalSectionAndSpinCount';
  16189. function SetCriticalSectionSpinCount; external kernel32 name 'SetCriticalSectionSpinCount';
  16190. function TryEnterCriticalSection; external kernel32 name 'TryEnterCriticalSection';
  16191. procedure DeleteCriticalSection; external kernel32 name 'DeleteCriticalSection';
  16192. function SetEvent; external kernel32 name 'SetEvent';
  16193. function ResetEvent; external kernel32 name 'ResetEvent';
  16194. function PulseEvent; external kernel32 name 'PulseEvent';
  16195. function ReleaseSemaphore; external kernel32 name 'ReleaseSemaphore';
  16196. function ReleaseMutex; external kernel32 name 'ReleaseMutex';
  16197. function WaitForSingleObject; external kernel32 name 'WaitForSingleObject';
  16198. function WaitForMultipleObjects; external kernel32 name 'WaitForMultipleObjects';
  16199. procedure Sleep; external kernel32 name 'Sleep';
  16200. function LoadResource; external kernel32 name 'LoadResource';
  16201. function SizeofResource; external kernel32 name 'SizeofResource';
  16202. function GlobalDeleteAtom; external kernel32 name 'GlobalDeleteAtom';
  16203. function InitAtomTable; external kernel32 name 'InitAtomTable';
  16204. function DeleteAtom; external kernel32 name 'DeleteAtom';
  16205. function SetHandleCount; external kernel32 name 'SetHandleCount';
  16206. function GetLogicalDrives; external kernel32 name 'GetLogicalDrives';
  16207. function LockFile; external kernel32 name 'LockFile';
  16208. function UnlockFile; external kernel32 name 'UnlockFile';
  16209. function LockFileEx; external kernel32 name 'LockFileEx';
  16210. function UnlockFileEx; external kernel32 name 'UnlockFileEx';
  16211. function GetFileInformationByHandle; external kernel32 name 'GetFileInformationByHandle';
  16212. function GetFileType; external kernel32 name 'GetFileType';
  16213. function GetFileSize; external kernel32 name 'GetFileSize';
  16214. function GetFileSizeEx; external kernel32 name 'GetFileSizeEx';
  16215. function GetStdHandle; external kernel32 name 'GetStdHandle';
  16216. function SetStdHandle; external kernel32 name 'SetStdHandle';
  16217. function WriteFile; external kernel32 name 'WriteFile';
  16218. function ReadFile; external kernel32 name 'ReadFile';
  16219. function FlushFileBuffers; external kernel32 name 'FlushFileBuffers';
  16220. function DeviceIoControl; external kernel32 name 'DeviceIoControl';
  16221. function RequestDeviceWakeup; external kernel32 name 'RequestDeviceWakeup';
  16222. function CancelDeviceWakeupRequest; external kernel32 name 'CancelDeviceWakeupRequest';
  16223. function GetDevicePowerState; external kernel32 name 'GetDevicePowerState';
  16224. function SetMessageWaitingIndicator; external kernel32 name 'SetMessageWaitingIndicator';
  16225. function SetEndOfFile; external kernel32 name 'SetEndOfFile';
  16226. function SetFilePointer; external kernel32 name 'SetFilePointer';
  16227. function SetFilePointerEx; external kernel32 name 'SetFilePointerEx';
  16228. function FindClose; external kernel32 name 'FindClose';
  16229. function GetFileTime; external kernel32 name 'GetFileTime';
  16230. function SetFileTime; external kernel32 name 'SetFileTime';
  16231. function SetFileValidData; external kernel32 name 'SetFileValidData';
  16232. function SetFileShortNameA; external kernel32 name 'SetFileShortNameA';
  16233. function SetFileShortNameW; external kernel32 name 'SetFileShortNameW';
  16234. function SetFileShortName; external kernel32 name 'SetFileShortName' + AWSuffix;
  16235. function CloseHandle; external kernel32 name 'CloseHandle';
  16236. function DuplicateHandle; external kernel32 name 'DuplicateHandle';
  16237. function GetHandleInformation; external kernel32 name 'GetHandleInformation';
  16238. function SetHandleInformation; external kernel32 name 'SetHandleInformation';
  16239. function LoadModule; external kernel32 name 'LoadModule';
  16240. function WinExec; external kernel32 name 'WinExec';
  16241. function ClearCommBreak; external kernel32 name 'ClearCommBreak';
  16242. function ClearCommError; external kernel32 name 'ClearCommError';
  16243. function SetupComm; external kernel32 name 'SetupComm';
  16244. function EscapeCommFunction; external kernel32 name 'EscapeCommFunction';
  16245. function GetCommConfig; external kernel32 name 'GetCommConfig';
  16246. function GetCommMask; external kernel32 name 'GetCommMask';
  16247. function GetCommProperties; external kernel32 name 'GetCommProperties';
  16248. function GetCommModemStatus; external kernel32 name 'GetCommModemStatus';
  16249. function GetCommState; external kernel32 name 'GetCommState';
  16250. function GetCommTimeouts; external kernel32 name 'GetCommTimeouts';
  16251. function PurgeComm; external kernel32 name 'PurgeComm';
  16252. function SetCommBreak; external kernel32 name 'SetCommBreak';
  16253. function SetCommConfig; external kernel32 name 'SetCommConfig';
  16254. function SetCommMask; external kernel32 name 'SetCommMask';
  16255. function SetCommState; external kernel32 name 'SetCommState';
  16256. function SetCommTimeouts; external kernel32 name 'SetCommTimeouts';
  16257. function TransmitCommChar; external kernel32 name 'TransmitCommChar';
  16258. function WaitCommEvent; external kernel32 name 'WaitCommEvent';
  16259. function SetTapePosition; external kernel32 name 'SetTapePosition';
  16260. function GetTapePosition; external kernel32 name 'GetTapePosition';
  16261. function PrepareTape; external kernel32 name 'PrepareTape';
  16262. function EraseTape; external kernel32 name 'EraseTape';
  16263. function CreateTapePartition; external kernel32 name 'CreateTapePartition';
  16264. function WriteTapemark; external kernel32 name 'WriteTapemark';
  16265. function GetTapeStatus; external kernel32 name 'GetTapeStatus';
  16266. function GetTapeParameters; external kernel32 name 'GetTapeParameters';
  16267. function SetTapeParameters; external kernel32 name 'SetTapeParameters';
  16268. function Beep; external kernel32 name 'Beep';
  16269. function MulDiv; external kernel32 name 'MulDiv';
  16270. procedure GetSystemTime; external kernel32 name 'GetSystemTime';
  16271. procedure GetSystemTimeAsFileTime; external kernel32 name 'GetSystemTimeAsFileTime';
  16272. function SetSystemTime; external kernel32 name 'SetSystemTime';
  16273. procedure GetLocalTime; external kernel32 name 'GetLocalTime';
  16274. function SetLocalTime; external kernel32 name 'SetLocalTime';
  16275. procedure GetSystemInfo; external kernel32 name 'GetSystemInfo';
  16276. function GetSystemRegistryQuota; external kernel32 name 'GetSystemRegistryQuota';
  16277. function GetSystemTimes; external kernel32 name 'GetSystemTimes';
  16278. procedure GetNativeSystemInfo; external kernel32 name 'GetNativeSystemInfo';
  16279. function IsProcessorFeaturePresent; external kernel32 name 'IsProcessorFeaturePresent';
  16280. function SystemTimeToTzSpecificLocalTime; external kernel32 name 'SystemTimeToTzSpecificLocalTime';
  16281. function TzSpecificLocalTimeToSystemTime; external kernel32 name 'TzSpecificLocalTimeToSystemTime';
  16282. function GetTimeZoneInformation; external kernel32 name 'GetTimeZoneInformation';
  16283. function SetTimeZoneInformation; external kernel32 name 'SetTimeZoneInformation';
  16284. function SystemTimeToFileTime; external kernel32 name 'SystemTimeToFileTime';
  16285. function FileTimeToLocalFileTime; external kernel32 name 'FileTimeToLocalFileTime';
  16286. function LocalFileTimeToFileTime; external kernel32 name 'LocalFileTimeToFileTime';
  16287. function FileTimeToSystemTime; external kernel32 name 'FileTimeToSystemTime';
  16288. function CompareFileTime; external kernel32 name 'CompareFileTime';
  16289. function FileTimeToDosDateTime; external kernel32 name 'FileTimeToDosDateTime';
  16290. function DosDateTimeToFileTime; external kernel32 name 'DosDateTimeToFileTime';
  16291. function GetTickCount; external kernel32 name 'GetTickCount';
  16292. function SetSystemTimeAdjustment; external kernel32 name 'SetSystemTimeAdjustment';
  16293. function GetSystemTimeAdjustment; external kernel32 name 'GetSystemTimeAdjustment';
  16294. function FormatMessageA; external kernel32 name 'FormatMessageA';
  16295. function FormatMessageW; external kernel32 name 'FormatMessageW';
  16296. function FormatMessage; external kernel32 name 'FormatMessage' + AWSuffix;
  16297. function CreatePipe; external kernel32 name 'CreatePipe';
  16298. function ConnectNamedPipe; external kernel32 name 'ConnectNamedPipe';
  16299. function DisconnectNamedPipe; external kernel32 name 'DisconnectNamedPipe';
  16300. function SetNamedPipeHandleState; external kernel32 name 'SetNamedPipeHandleState';
  16301. function GetNamedPipeInfo; external kernel32 name 'GetNamedPipeInfo';
  16302. function PeekNamedPipe; external kernel32 name 'PeekNamedPipe';
  16303. function TransactNamedPipe; external kernel32 name 'TransactNamedPipe';
  16304. function CreateMailslotA; external kernel32 name 'CreateMailslotA';
  16305. function CreateMailslotW; external kernel32 name 'CreateMailslotW';
  16306. function CreateMailslot; external kernel32 name 'CreateMailslot' + AWSuffix;
  16307. function GetMailslotInfo; external kernel32 name 'GetMailslotInfo';
  16308. function SetMailslotInfo; external kernel32 name 'SetMailslotInfo';
  16309. function MapViewOfFile; external kernel32 name 'MapViewOfFile';
  16310. function FlushViewOfFile; external kernel32 name 'FlushViewOfFile';
  16311. function UnmapViewOfFile; external kernel32 name 'UnmapViewOfFile';
  16312. function EncryptFileA; external advapi32 name 'EncryptFileA';
  16313. function EncryptFileW; external advapi32 name 'EncryptFileW';
  16314. function EncryptFile; external advapi32 name 'EncryptFile' + AWSuffix;
  16315. function DecryptFileA; external advapi32 name 'DecryptFileA';
  16316. function DecryptFileW; external advapi32 name 'DecryptFileW';
  16317. function DecryptFile; external advapi32 name 'DecryptFile' + AWSuffix;
  16318. function FileEncryptionStatusA; external advapi32 name 'FileEncryptionStatusA';
  16319. function FileEncryptionStatusW; external advapi32 name 'FileEncryptionStatusW';
  16320. function FileEncryptionStatus; external advapi32 name 'FileEncryptionStatus' + AWSuffix;
  16321. function OpenEncryptedFileRawA; external advapi32 name 'OpenEncryptedFileRawA';
  16322. function OpenEncryptedFileRawW; external advapi32 name 'OpenEncryptedFileRawW';
  16323. function OpenEncryptedFileRaw; external advapi32 name 'OpenEncryptedFileRaw' + AWSuffix;
  16324. function ReadEncryptedFileRaw; external advapi32 name 'ReadEncryptedFileRaw';
  16325. function WriteEncryptedFileRaw; external advapi32 name 'WriteEncryptedFileRaw';
  16326. procedure CloseEncryptedFileRaw; external advapi32 name 'CloseEncryptedFileRaw';
  16327. function lstrcmpA; external kernel32 name 'lstrcmpA';
  16328. function lstrcmpW; external kernel32 name 'lstrcmpW';
  16329. function lstrcmp; external kernel32 name 'lstrcmp' + AWSuffix;
  16330. function lstrcmpiA; external kernel32 name 'lstrcmpiA';
  16331. function lstrcmpiW; external kernel32 name 'lstrcmpiW';
  16332. function lstrcmpi; external kernel32 name 'lstrcmpi' + AWSuffix;
  16333. function lstrcpynA; external kernel32 name 'lstrcpynA';
  16334. function lstrcpynW; external kernel32 name 'lstrcpynW';
  16335. function lstrcpyn; external kernel32 name 'lstrcpyn' + AWSuffix;
  16336. function lstrcpyA; external kernel32 name 'lstrcpyA';
  16337. function lstrcpyW; external kernel32 name 'lstrcpyW';
  16338. function lstrcpy; external kernel32 name 'lstrcpy' + AWSuffix;
  16339. function lstrcatA; external kernel32 name 'lstrcatA';
  16340. function lstrcatW; external kernel32 name 'lstrcatW';
  16341. function lstrcat; external kernel32 name 'lstrcat' + AWSuffix;
  16342. function lstrlenA; external kernel32 name 'lstrlenA';
  16343. function lstrlenW; external kernel32 name 'lstrlenW';
  16344. function lstrlen; external kernel32 name 'lstrlen' + AWSuffix;
  16345. function OpenFile; external kernel32 name 'OpenFile';
  16346. function _lopen; external kernel32 name '_lopen';
  16347. function _lcreat; external kernel32 name '_lcreat';
  16348. function _lread; external kernel32 name '_lread';
  16349. function _lwrite; external kernel32 name '_lwrite';
  16350. function _hread; external kernel32 name '_hread';
  16351. function _hwrite; external kernel32 name '_hwrite';
  16352. function _lclose; external kernel32 name '_lclose';
  16353. function _llseek; external kernel32 name '_llseek';
  16354. function IsTextUnicode; external advapi32 name 'IsTextUnicode';
  16355. function FlsAlloc; external kernel32 name 'FlsAlloc';
  16356. function FlsGetValue; external kernel32 name 'FlsGetValue';
  16357. function FlsSetValue; external kernel32 name 'FlsSetValue';
  16358. function FlsFree; external kernel32 name 'FlsFree';
  16359. function TlsAlloc; external kernel32 name 'TlsAlloc';
  16360. function TlsGetValue; external kernel32 name 'TlsGetValue';
  16361. function TlsSetValue; external kernel32 name 'TlsSetValue';
  16362. function TlsFree; external kernel32 name 'TlsFree';
  16363. function SleepEx; external kernel32 name 'SleepEx';
  16364. function WaitForSingleObjectEx; external kernel32 name 'WaitForSingleObjectEx';
  16365. function WaitForMultipleObjectsEx; external kernel32 name 'WaitForMultipleObjectsEx';
  16366. function SignalObjectAndWait; external kernel32 name 'SignalObjectAndWait';
  16367. function ReadFileEx; external kernel32 name 'ReadFileEx';
  16368. function WriteFileEx; external kernel32 name 'WriteFileEx';
  16369. function BackupRead; external kernel32 name 'BackupRead';
  16370. function BackupSeek; external kernel32 name 'BackupSeek';
  16371. function BackupWrite; external kernel32 name 'BackupWrite';
  16372. function ReadFileScatter; external kernel32 name 'ReadFileScatter';
  16373. function WriteFileGather; external kernel32 name 'WriteFileGather';
  16374. function OpenMutexA; external kernel32 name 'OpenMutexA';
  16375. function OpenMutexW; external kernel32 name 'OpenMutexW';
  16376. function OpenMutex; external kernel32 name 'OpenMutex' + AWSuffix;
  16377. function CreateEventA; external kernel32 name 'CreateEventA';
  16378. function CreateEventW; external kernel32 name 'CreateEventW';
  16379. function CreateEvent; external kernel32 name 'CreateEvent' + AWSuffix;
  16380. function OpenEventA; external kernel32 name 'OpenEventA';
  16381. function OpenEventW; external kernel32 name 'OpenEventW';
  16382. function OpenEvent; external kernel32 name 'OpenEvent' + AWSuffix;
  16383. function CreateSemaphoreA; external kernel32 name 'CreateSemaphoreA';
  16384. function CreateSemaphoreW; external kernel32 name 'CreateSemaphoreW';
  16385. function CreateSemaphore; external kernel32 name 'CreateSemaphore' + AWSuffix;
  16386. function OpenSemaphoreA; external kernel32 name 'OpenSemaphoreA';
  16387. function OpenSemaphoreW; external kernel32 name 'OpenSemaphoreW';
  16388. function OpenSemaphore; external kernel32 name 'OpenSemaphore' + AWSuffix;
  16389. function CreateWaitableTimerA; external kernel32 name 'CreateWaitableTimerA';
  16390. function CreateWaitableTimerW; external kernel32 name 'CreateWaitableTimerW';
  16391. function CreateWaitableTimer; external kernel32 name 'CreateWaitableTimer' + AWSuffix;
  16392. function OpenWaitableTimerA; external kernel32 name 'OpenWaitableTimerA';
  16393. function OpenWaitableTimerW; external kernel32 name 'OpenWaitableTimerW';
  16394. function OpenWaitableTimer; external kernel32 name 'OpenWaitableTimer' + AWSuffix;
  16395. function SetWaitableTimer; external kernel32 name 'SetWaitableTimer';
  16396. function CancelWaitableTimer; external kernel32 name 'CancelWaitableTimer';
  16397. function CreateFileMappingA; external kernel32 name 'CreateFileMappingA';
  16398. function CreateFileMappingW; external kernel32 name 'CreateFileMappingW';
  16399. function CreateFileMapping; external kernel32 name 'CreateFileMapping' + AWSuffix;
  16400. function OpenFileMappingA; external kernel32 name 'OpenFileMappingA';
  16401. function OpenFileMappingW; external kernel32 name 'OpenFileMappingW';
  16402. function OpenFileMapping; external kernel32 name 'OpenFileMapping' + AWSuffix;
  16403. function GetLogicalDriveStringsA; external kernel32 name 'GetLogicalDriveStringsA';
  16404. function GetLogicalDriveStringsW; external kernel32 name 'GetLogicalDriveStringsW';
  16405. function GetLogicalDriveStrings; external kernel32 name 'GetLogicalDriveStrings' + AWSuffix;
  16406. function CreateMemoryResourceNotification; external kernel32 name 'CreateMemoryResourceNotification';
  16407. function QueryMemoryResourceNotification; external kernel32 name 'QueryMemoryResourceNotification';
  16408. function LoadLibraryA; external kernel32 name 'LoadLibraryA';
  16409. function LoadLibraryW; external kernel32 name 'LoadLibraryW';
  16410. function LoadLibrary; external kernel32 name 'LoadLibrary' + AWSuffix;
  16411. function LoadLibraryExA; external kernel32 name 'LoadLibraryExA';
  16412. function LoadLibraryExW; external kernel32 name 'LoadLibraryExW';
  16413. function LoadLibraryEx; external kernel32 name 'LoadLibraryEx' + AWSuffix;
  16414. function GetModuleFileNameA; external kernel32 name 'GetModuleFileNameA';
  16415. function GetModuleFileNameW; external kernel32 name 'GetModuleFileNameW';
  16416. function GetModuleFileName; external kernel32 name 'GetModuleFileName' + AWSuffix;
  16417. function GetModuleHandleA; external kernel32 name 'GetModuleHandleA';
  16418. function GetModuleHandleW; external kernel32 name 'GetModuleHandleW';
  16419. function GetModuleHandle; external kernel32 name 'GetModuleHandle' + AWSuffix;
  16420. function CreateProcessA; external kernel32 name 'CreateProcessA';
  16421. function CreateProcessW; external kernel32 name 'CreateProcessW';
  16422. function CreateProcess; external kernel32 name 'CreateProcess' + AWSuffix;
  16423. function GetModuleHandleExA; external kernel32 name 'GetModuleHandleExA';
  16424. function GetModuleHandleExW; external kernel32 name 'GetModuleHandleExW';
  16425. function GetModuleHandleEx; external kernel32 name 'GetModuleHandleEx' + AWSuffix;
  16426. function NeedCurrentDirectoryForExePathA; external kernel32 name 'NeedCurrentDirectoryForExePathA';
  16427. function NeedCurrentDirectoryForExePathW; external kernel32 name 'NeedCurrentDirectoryForExePathW';
  16428. function NeedCurrentDirectoryForExePath; external kernel32 name 'NeedCurrentDirectoryForExePath' + AWSuffix;
  16429. function SetProcessShutdownParameters; external kernel32 name 'SetProcessShutdownParameters';
  16430. function GetProcessShutdownParameters; external kernel32 name 'GetProcessShutdownParameters';
  16431. function GetProcessVersion; external kernel32 name 'GetProcessVersion';
  16432. procedure FatalAppExitA; external kernel32 name 'FatalAppExitA';
  16433. procedure FatalAppExitW; external kernel32 name 'FatalAppExitW';
  16434. procedure FatalAppExit; external kernel32 name 'FatalAppExit' + AWSuffix;
  16435. procedure GetStartupInfoA; external kernel32 name 'GetStartupInfoA';
  16436. procedure GetStartupInfoW; external kernel32 name 'GetStartupInfoW';
  16437. procedure GetStartupInfo; external kernel32 name 'GetStartupInfo' + AWSuffix;
  16438. function GetCommandLineA; external kernel32 name 'GetCommandLineA';
  16439. function GetCommandLineW; external kernel32 name 'GetCommandLineW';
  16440. function GetCommandLine; external kernel32 name 'GetCommandLine' + AWSuffix;
  16441. function GetEnvironmentVariableA; external kernel32 name 'GetEnvironmentVariableA';
  16442. function GetEnvironmentVariableW; external kernel32 name 'GetEnvironmentVariableW';
  16443. function GetEnvironmentVariable; external kernel32 name 'GetEnvironmentVariable' + AWSuffix;
  16444. function SetEnvironmentVariableA; external kernel32 name 'SetEnvironmentVariableA';
  16445. function SetEnvironmentVariableW; external kernel32 name 'SetEnvironmentVariableW';
  16446. function SetEnvironmentVariable; external kernel32 name 'SetEnvironmentVariable' + AWSuffix;
  16447. function ExpandEnvironmentStringsA; external kernel32 name 'ExpandEnvironmentStringsA';
  16448. function ExpandEnvironmentStringsW; external kernel32 name 'ExpandEnvironmentStringsW';
  16449. function ExpandEnvironmentStrings; external kernel32 name 'ExpandEnvironmentStrings' + AWSuffix;
  16450. function GetFirmwareEnvironmentVariableA; external kernel32 name 'GetFirmwareEnvironmentVariableA';
  16451. function GetFirmwareEnvironmentVariableW; external kernel32 name 'GetFirmwareEnvironmentVariableW';
  16452. function GetFirmwareEnvironmentVariable; external kernel32 name 'GetFirmwareEnvironmentVariable' + AWSuffix;
  16453. function SetFirmwareEnvironmentVariableA; external kernel32 name 'SetFirmwareEnvironmentVariableA';
  16454. function SetFirmwareEnvironmentVariableW; external kernel32 name 'SetFirmwareEnvironmentVariableW';
  16455. function SetFirmwareEnvironmentVariable; external kernel32 name 'SetFirmwareEnvironmentVariable' + AWSuffix;
  16456. procedure OutputDebugStringA; external kernel32 name 'OutputDebugStringA';
  16457. procedure OutputDebugStringW; external kernel32 name 'OutputDebugStringW';
  16458. procedure OutputDebugString; external kernel32 name 'OutputDebugString' + AWSuffix;
  16459. function FindResourceA; external kernel32 name 'FindResourceA';
  16460. function FindResourceW; external kernel32 name 'FindResourceW';
  16461. function FindResource; external kernel32 name 'FindResource' + AWSuffix;
  16462. function FindResourceExA; external kernel32 name 'FindResourceExA';
  16463. function FindResourceExW; external kernel32 name 'FindResourceExW';
  16464. function FindResourceEx; external kernel32 name 'FindResourceEx' + AWSuffix;
  16465. function EnumResourceTypesA; external kernel32 name 'EnumResourceTypesA';
  16466. function EnumResourceTypesW; external kernel32 name 'EnumResourceTypesW';
  16467. function EnumResourceTypes; external kernel32 name 'EnumResourceTypes' + AWSuffix;
  16468. function EnumResourceNamesA; external kernel32 name 'EnumResourceNamesA';
  16469. function EnumResourceNamesW; external kernel32 name 'EnumResourceNamesW';
  16470. function EnumResourceNames; external kernel32 name 'EnumResourceNames' + AWSuffix;
  16471. function EnumResourceLanguagesA; external kernel32 name 'EnumResourceLanguagesA';
  16472. function EnumResourceLanguagesW; external kernel32 name 'EnumResourceLanguagesW';
  16473. function EnumResourceLanguages; external kernel32 name 'EnumResourceLanguages' + AWSuffix;
  16474. function BeginUpdateResourceA; external kernel32 name 'BeginUpdateResourceA';
  16475. function BeginUpdateResourceW; external kernel32 name 'BeginUpdateResourceW';
  16476. function BeginUpdateResource; external kernel32 name 'BeginUpdateResource' + AWSuffix;
  16477. function UpdateResourceA; external kernel32 name 'UpdateResourceA';
  16478. function UpdateResourceW; external kernel32 name 'UpdateResourceW';
  16479. function UpdateResource; external kernel32 name 'UpdateResource' + AWSuffix;
  16480. function EndUpdateResourceA; external kernel32 name 'EndUpdateResourceA';
  16481. function EndUpdateResourceW; external kernel32 name 'EndUpdateResourceW';
  16482. function EndUpdateResource; external kernel32 name 'EndUpdateResource' + AWSuffix;
  16483. function GlobalAddAtomA; external kernel32 name 'GlobalAddAtomA';
  16484. function GlobalAddAtomW; external kernel32 name 'GlobalAddAtomW';
  16485. function GlobalAddAtom; external kernel32 name 'GlobalAddAtom' + AWSuffix;
  16486. function GlobalFindAtomA; external kernel32 name 'GlobalFindAtomA';
  16487. function GlobalFindAtomW; external kernel32 name 'GlobalFindAtomW';
  16488. function GlobalFindAtom; external kernel32 name 'GlobalFindAtom' + AWSuffix;
  16489. function GlobalGetAtomNameA; external kernel32 name 'GlobalGetAtomNameA';
  16490. function GlobalGetAtomNameW; external kernel32 name 'GlobalGetAtomNameW';
  16491. function GlobalGetAtomName; external kernel32 name 'GlobalGetAtomName' + AWSuffix;
  16492. function AddAtomA; external kernel32 name 'AddAtomA';
  16493. function AddAtomW; external kernel32 name 'AddAtomW';
  16494. function AddAtom; external kernel32 name 'AddAtom' + AWSuffix;
  16495. function FindAtomA; external kernel32 name 'FindAtomA';
  16496. function FindAtomW; external kernel32 name 'FindAtomW';
  16497. function FindAtom; external kernel32 name 'FindAtom' + AWSuffix;
  16498. function GetAtomNameA; external kernel32 name 'GetAtomNameA';
  16499. function GetAtomNameW; external kernel32 name 'GetAtomNameW';
  16500. function GetAtomName; external kernel32 name 'GetAtomName' + AWSuffix;
  16501. function GetProfileIntA; external kernel32 name 'GetProfileIntA';
  16502. function GetProfileIntW; external kernel32 name 'GetProfileIntW';
  16503. function GetProfileInt; external kernel32 name 'GetProfileInt' + AWSuffix;
  16504. function GetProfileStringA; external kernel32 name 'GetProfileStringA';
  16505. function GetProfileStringW; external kernel32 name 'GetProfileStringW';
  16506. function GetProfileString; external kernel32 name 'GetProfileString' + AWSuffix;
  16507. function WriteProfileStringA; external kernel32 name 'WriteProfileStringA';
  16508. function WriteProfileStringW; external kernel32 name 'WriteProfileStringW';
  16509. function WriteProfileString; external kernel32 name 'WriteProfileString' + AWSuffix;
  16510. function GetProfileSectionA; external kernel32 name 'GetProfileSectionA';
  16511. function GetProfileSectionW; external kernel32 name 'GetProfileSectionW';
  16512. function GetProfileSection; external kernel32 name 'GetProfileSection' + AWSuffix;
  16513. function WriteProfileSectionA; external kernel32 name 'WriteProfileSectionA';
  16514. function WriteProfileSectionW; external kernel32 name 'WriteProfileSectionW';
  16515. function WriteProfileSection; external kernel32 name 'WriteProfileSection' + AWSuffix;
  16516. function GetPrivateProfileIntA; external kernel32 name 'GetPrivateProfileIntA';
  16517. function GetPrivateProfileIntW; external kernel32 name 'GetPrivateProfileIntW';
  16518. function GetPrivateProfileInt; external kernel32 name 'GetPrivateProfileInt' + AWSuffix;
  16519. function GetPrivateProfileStringA; external kernel32 name 'GetPrivateProfileStringA';
  16520. function GetPrivateProfileStringW; external kernel32 name 'GetPrivateProfileStringW';
  16521. function GetPrivateProfileString; external kernel32 name 'GetPrivateProfileString' + AWSuffix;
  16522. function WritePrivateProfileStringA; external kernel32 name 'WritePrivateProfileStringA';
  16523. function WritePrivateProfileStringW; external kernel32 name 'WritePrivateProfileStringW';
  16524. function WritePrivateProfileString; external kernel32 name 'WritePrivateProfileString' + AWSuffix;
  16525. function GetPrivateProfileSectionA; external kernel32 name 'GetPrivateProfileSectionA';
  16526. function GetPrivateProfileSectionW; external kernel32 name 'GetPrivateProfileSectionW';
  16527. function GetPrivateProfileSection; external kernel32 name 'GetPrivateProfileSection' + AWSuffix;
  16528. function WritePrivateProfileSectionA; external kernel32 name 'WritePrivateProfileSectionA';
  16529. function WritePrivateProfileSectionW; external kernel32 name 'WritePrivateProfileSectionW';
  16530. function WritePrivateProfileSection; external kernel32 name 'WritePrivateProfileSection' + AWSuffix;
  16531. function GetPrivateProfileSectionNamesA; external kernel32 name 'GetPrivateProfileSectionNamesA';
  16532. function GetPrivateProfileSectionNamesW; external kernel32 name 'GetPrivateProfileSectionNamesW';
  16533. function GetPrivateProfileSectionNames; external kernel32 name 'GetPrivateProfileSectionNames' + AWSuffix;
  16534. function GetPrivateProfileStructA; external kernel32 name 'GetPrivateProfileStructA';
  16535. function GetPrivateProfileStructW; external kernel32 name 'GetPrivateProfileStructW';
  16536. function GetPrivateProfileStruct; external kernel32 name 'GetPrivateProfileStruct' + AWSuffix;
  16537. function WritePrivateProfileStructA; external kernel32 name 'WritePrivateProfileStructA';
  16538. function WritePrivateProfileStructW; external kernel32 name 'WritePrivateProfileStructW';
  16539. function WritePrivateProfileStruct; external kernel32 name 'WritePrivateProfileStruct' + AWSuffix;
  16540. function GetDriveTypeA; external kernel32 name 'GetDriveTypeA';
  16541. function GetDriveTypeW; external kernel32 name 'GetDriveTypeW';
  16542. function GetDriveType; external kernel32 name 'GetDriveType' + AWSuffix;
  16543. function GetSystemDirectoryA; external kernel32 name 'GetSystemDirectoryA';
  16544. function GetSystemDirectoryW; external kernel32 name 'GetSystemDirectoryW';
  16545. function GetSystemDirectory; external kernel32 name 'GetSystemDirectory' + AWSuffix;
  16546. function GetTempPathA; external kernel32 name 'GetTempPathA';
  16547. function GetTempPathW; external kernel32 name 'GetTempPathW';
  16548. function GetTempPath; external kernel32 name 'GetTempPath' + AWSuffix;
  16549. function GetTempFileNameA; external kernel32 name 'GetTempFileNameA';
  16550. function GetTempFileNameW; external kernel32 name 'GetTempFileNameW';
  16551. function GetTempFileName; external kernel32 name 'GetTempFileName' + AWSuffix;
  16552. function GetWindowsDirectoryA; external kernel32 name 'GetWindowsDirectoryA';
  16553. function GetWindowsDirectoryW; external kernel32 name 'GetWindowsDirectoryW';
  16554. function GetWindowsDirectory; external kernel32 name 'GetWindowsDirectory' + AWSuffix;
  16555. function GetSystemWindowsDirectoryA; external kernel32 name 'GetSystemWindowsDirectoryA';
  16556. function GetSystemWindowsDirectoryW; external kernel32 name 'GetSystemWindowsDirectoryW';
  16557. function GetSystemWindowsDirectory; external kernel32 name 'GetSystemWindowsDirectory' + AWSuffix;
  16558. function GetSystemWow64DirectoryA; external kernel32 name 'GetSystemWow64DirectoryA';
  16559. function GetSystemWow64DirectoryW; external kernel32 name 'GetSystemWow64DirectoryW';
  16560. function GetSystemWow64Directory; external kernel32 name 'GetSystemWow64Directory' + AWSuffix;
  16561. function Wow64EnableWow64FsRedirection; external kernel32 name 'Wow64EnableWow64FsRedirection';
  16562. function SetCurrentDirectoryA; external kernel32 name 'SetCurrentDirectoryA';
  16563. function SetCurrentDirectoryW; external kernel32 name 'SetCurrentDirectoryW';
  16564. function SetCurrentDirectory; external kernel32 name 'SetCurrentDirectory' + AWSuffix;
  16565. function GetCurrentDirectoryA; external kernel32 name 'GetCurrentDirectoryA';
  16566. function GetCurrentDirectoryW; external kernel32 name 'GetCurrentDirectoryW';
  16567. function GetCurrentDirectory; external kernel32 name 'GetCurrentDirectory' + AWSuffix;
  16568. function SetDllDirectoryA; external kernel32 name 'SetDllDirectoryA';
  16569. function SetDllDirectoryW; external kernel32 name 'SetDllDirectoryW';
  16570. function SetDllDirectory; external kernel32 name 'SetDllDirectory' + AWSuffix;
  16571. function GetDllDirectoryA; external kernel32 name 'GetDllDirectoryA';
  16572. function GetDllDirectoryW; external kernel32 name 'GetDllDirectoryW';
  16573. function GetDllDirectory; external kernel32 name 'GetDllDirectory' + AWSuffix;
  16574. function GetDiskFreeSpaceA; external kernel32 name 'GetDiskFreeSpaceA';
  16575. function GetDiskFreeSpaceW; external kernel32 name 'GetDiskFreeSpaceW';
  16576. function GetDiskFreeSpace; external kernel32 name 'GetDiskFreeSpace' + AWSuffix;
  16577. function GetDiskFreeSpaceExA; external kernel32 name 'GetDiskFreeSpaceExA';
  16578. function GetDiskFreeSpaceExW; external kernel32 name 'GetDiskFreeSpaceExW';
  16579. function GetDiskFreeSpaceEx; external kernel32 name 'GetDiskFreeSpaceEx' + AWSuffix;
  16580. function CreateDirectoryA; external kernel32 name 'CreateDirectoryA';
  16581. function CreateDirectoryW; external kernel32 name 'CreateDirectoryW';
  16582. function CreateDirectory; external kernel32 name 'CreateDirectory' + AWSuffix;
  16583. function CreateDirectoryExA; external kernel32 name 'CreateDirectoryExA';
  16584. function CreateDirectoryExW; external kernel32 name 'CreateDirectoryExW';
  16585. function CreateDirectoryEx; external kernel32 name 'CreateDirectoryEx' + AWSuffix;
  16586. function RemoveDirectoryA; external kernel32 name 'RemoveDirectoryA';
  16587. function RemoveDirectoryW; external kernel32 name 'RemoveDirectoryW';
  16588. function RemoveDirectory; external kernel32 name 'RemoveDirectory' + AWSuffix;
  16589. function GetFullPathNameA; external kernel32 name 'GetFullPathNameA';
  16590. function GetFullPathNameW; external kernel32 name 'GetFullPathNameW';
  16591. function GetFullPathName; external kernel32 name 'GetFullPathName' + AWSuffix;
  16592. function DefineDosDeviceA; external kernel32 name 'DefineDosDeviceA';
  16593. function DefineDosDeviceW; external kernel32 name 'DefineDosDeviceW';
  16594. function DefineDosDevice; external kernel32 name 'DefineDosDevice' + AWSuffix;
  16595. function QueryDosDeviceA; external kernel32 name 'QueryDosDeviceA';
  16596. function QueryDosDeviceW; external kernel32 name 'QueryDosDeviceW';
  16597. function QueryDosDevice; external kernel32 name 'QueryDosDevice' + AWSuffix;
  16598. function CreateFileA; external kernel32 name 'CreateFileA';
  16599. function CreateFileW; external kernel32 name 'CreateFileW';
  16600. function CreateFile; external kernel32 name 'CreateFile' + AWSuffix;
  16601. function ReOpenFile; external kernel32 name 'ReOpenFile';
  16602. function SetFileAttributesA; external kernel32 name 'SetFileAttributesA';
  16603. function SetFileAttributesW; external kernel32 name 'SetFileAttributesW';
  16604. function SetFileAttributes; external kernel32 name 'SetFileAttributes' + AWSuffix;
  16605. function GetFileAttributesA; external kernel32 name 'GetFileAttributesA';
  16606. function GetFileAttributesW; external kernel32 name 'GetFileAttributesW';
  16607. function GetFileAttributes; external kernel32 name 'GetFileAttributes' + AWSuffix;
  16608. function GetFileAttributesExA; external kernel32 name 'GetFileAttributesExA';
  16609. function GetFileAttributesExW; external kernel32 name 'GetFileAttributesExW';
  16610. function GetFileAttributesEx; external kernel32 name 'GetFileAttributesEx' + AWSuffix;
  16611. function GetCompressedFileSizeA; external kernel32 name 'GetCompressedFileSizeA';
  16612. function GetCompressedFileSizeW; external kernel32 name 'GetCompressedFileSizeW';
  16613. function GetCompressedFileSize; external kernel32 name 'GetCompressedFileSize' + AWSuffix;
  16614. function DeleteFileA; external kernel32 name 'DeleteFileA';
  16615. function DeleteFileW; external kernel32 name 'DeleteFileW';
  16616. function DeleteFile; external kernel32 name 'DeleteFile' + AWSuffix;
  16617. function FindFirstFileExA; external kernel32 name 'FindFirstFileExA';
  16618. function FindFirstFileExW; external kernel32 name 'FindFirstFileExW';
  16619. function FindFirstFileEx; external kernel32 name 'FindFirstFileEx' + AWSuffix;
  16620. function FindFirstFileA; external kernel32 name 'FindFirstFileA';
  16621. function FindFirstFileW; external kernel32 name 'FindFirstFileW';
  16622. function FindFirstFile; external kernel32 name 'FindFirstFile' + AWSuffix;
  16623. function FindNextFileA; external kernel32 name 'FindNextFileA';
  16624. function FindNextFileW; external kernel32 name 'FindNextFileW';
  16625. function FindNextFile; external kernel32 name 'FindNextFile' + AWSuffix;
  16626. function SearchPathA; external kernel32 name 'SearchPathA';
  16627. function SearchPathW; external kernel32 name 'SearchPathW';
  16628. function SearchPath; external kernel32 name 'SearchPath' + AWSuffix;
  16629. function CopyFileA; external kernel32 name 'CopyFileA';
  16630. function CopyFileW; external kernel32 name 'CopyFileW';
  16631. function CopyFile; external kernel32 name 'CopyFile' + AWSuffix;
  16632. function CopyFileExA; external kernel32 name 'CopyFileExA';
  16633. function CopyFileExW; external kernel32 name 'CopyFileExW';
  16634. function CopyFileEx; external kernel32 name 'CopyFileEx' + AWSuffix;
  16635. function MoveFileA; external kernel32 name 'MoveFileA';
  16636. function MoveFileW; external kernel32 name 'MoveFileW';
  16637. function MoveFile; external kernel32 name 'MoveFile' + AWSuffix;
  16638. function MoveFileExA; external kernel32 name 'MoveFileExA';
  16639. function MoveFileExW; external kernel32 name 'MoveFileExW';
  16640. function MoveFileEx; external kernel32 name 'MoveFileEx' + AWSuffix;
  16641. function MoveFileWithProgressA; external kernel32 name 'MoveFileWithProgressA';
  16642. function MoveFileWithProgressW; external kernel32 name 'MoveFileWithProgressW';
  16643. function MoveFileWithProgress; external kernel32 name 'MoveFileWithProgress' + AWSuffix;
  16644. function ReplaceFileA; external kernel32 name 'ReplaceFileA';
  16645. function ReplaceFileW; external kernel32 name 'ReplaceFileW';
  16646. function ReplaceFile; external kernel32 name 'ReplaceFile' + AWSuffix;
  16647. function CreateHardLinkA; external kernel32 name 'CreateHardLinkA';
  16648. function CreateHardLinkW; external kernel32 name 'CreateHardLinkW';
  16649. function CreateHardLink; external kernel32 name 'CreateHardLink' + AWSuffix;
  16650. function FindFirstStreamW; external kernel32 name 'FindFirstStreamW';
  16651. function FindNextStreamW; external kernel32 name 'FindNextStreamW';
  16652. function CreateNamedPipeA; external kernel32 name 'CreateNamedPipeA';
  16653. function CreateNamedPipeW; external kernel32 name 'CreateNamedPipeW';
  16654. function CreateNamedPipe; external kernel32 name 'CreateNamedPipe' + AWSuffix;
  16655. function GetNamedPipeHandleStateA; external kernel32 name 'GetNamedPipeHandleStateA';
  16656. function GetNamedPipeHandleStateW; external kernel32 name 'GetNamedPipeHandleStateW';
  16657. function GetNamedPipeHandleState; external kernel32 name 'GetNamedPipeHandleState' + AWSuffix;
  16658. function CallNamedPipeA; external kernel32 name 'CallNamedPipeA';
  16659. function CallNamedPipeW; external kernel32 name 'CallNamedPipeW';
  16660. function CallNamedPipe; external kernel32 name 'CallNamedPipe' + AWSuffix;
  16661. function WaitNamedPipeA; external kernel32 name 'WaitNamedPipeA';
  16662. function WaitNamedPipeW; external kernel32 name 'WaitNamedPipeW';
  16663. function WaitNamedPipe; external kernel32 name 'WaitNamedPipe' + AWSuffix;
  16664. function SetVolumeLabelA; external kernel32 name 'SetVolumeLabelA';
  16665. function SetVolumeLabelW; external kernel32 name 'SetVolumeLabelW';
  16666. function SetVolumeLabel; external kernel32 name 'SetVolumeLabel' + AWSuffix;
  16667. procedure SetFileApisToOEM; external kernel32 name 'SetFileApisToOEM';
  16668. procedure SetFileApisToANSI; external kernel32 name 'SetFileApisToANSI';
  16669. function AreFileApisANSI; external kernel32 name 'AreFileApisANSI';
  16670. function GetVolumeInformationA; external kernel32 name 'GetVolumeInformationA';
  16671. function GetVolumeInformationW; external kernel32 name 'GetVolumeInformationW';
  16672. function GetVolumeInformation; external kernel32 name 'GetVolumeInformation' + AWSuffix;
  16673. function CancelIo; external kernel32 name 'CancelIo';
  16674. function ClearEventLogA; external advapi32 name 'ClearEventLogA';
  16675. function ClearEventLogW; external advapi32 name 'ClearEventLogW';
  16676. function ClearEventLog; external advapi32 name 'ClearEventLog' + AWSuffix;
  16677. function BackupEventLogA; external advapi32 name 'BackupEventLogA';
  16678. function BackupEventLogW; external advapi32 name 'BackupEventLogW';
  16679. function BackupEventLog; external advapi32 name 'BackupEventLog' + AWSuffix;
  16680. function CloseEventLog; external advapi32 name 'CloseEventLog';
  16681. function DeregisterEventSource; external advapi32 name 'DeregisterEventSource';
  16682. function NotifyChangeEventLog; external advapi32 name 'NotifyChangeEventLog';
  16683. function GetNumberOfEventLogRecords; external advapi32 name 'GetNumberOfEventLogRecords';
  16684. function GetOldestEventLogRecord; external advapi32 name 'GetOldestEventLogRecord';
  16685. function OpenEventLogA; external advapi32 name 'OpenEventLogA';
  16686. function OpenEventLogW; external advapi32 name 'OpenEventLogW';
  16687. function OpenEventLog; external advapi32 name 'OpenEventLog' + AWSuffix;
  16688. function RegisterEventSourceA; external advapi32 name 'RegisterEventSourceA';
  16689. function RegisterEventSourceW; external advapi32 name 'RegisterEventSourceW';
  16690. function RegisterEventSource; external advapi32 name 'RegisterEventSource' + AWSuffix;
  16691. function OpenBackupEventLogA; external advapi32 name 'OpenBackupEventLogA';
  16692. function OpenBackupEventLogW; external advapi32 name 'OpenBackupEventLogW';
  16693. function OpenBackupEventLog; external advapi32 name 'OpenBackupEventLog' + AWSuffix;
  16694. function ReadEventLogA; external advapi32 name 'ReadEventLogA';
  16695. function ReadEventLogW; external advapi32 name 'ReadEventLogW';
  16696. function ReadEventLog; external advapi32 name 'ReadEventLog' + AWSuffix;
  16697. function ReportEventA; external advapi32 name 'ReportEventA';
  16698. function ReportEventW; external advapi32 name 'ReportEventW';
  16699. function ReportEvent; external advapi32 name 'ReportEvent' + AWSuffix;
  16700. function GetEventLogInformation; external advapi32 name 'GetEventLogInformation';
  16701. function DuplicateToken; external advapi32 name 'DuplicateToken';
  16702. function GetKernelObjectSecurity; external advapi32 name 'GetKernelObjectSecurity';
  16703. function ImpersonateNamedPipeClient; external advapi32 name 'ImpersonateNamedPipeClient';
  16704. function ImpersonateSelf; external advapi32 name 'ImpersonateSelf';
  16705. function RevertToSelf; external advapi32 name 'RevertToSelf';
  16706. function SetThreadToken; external advapi32 name 'SetThreadToken';
  16707. function AccessCheck; external advapi32 name 'AccessCheck';
  16708. function AccessCheckByType; external advapi32 name 'AccessCheckByType';
  16709. function AccessCheckByTypeResultList; external advapi32 name 'AccessCheckByTypeResultList';
  16710. function OpenProcessToken; external advapi32 name 'OpenProcessToken';
  16711. function OpenThreadToken; external advapi32 name 'OpenThreadToken';
  16712. function GetTokenInformation; external advapi32 name 'GetTokenInformation';
  16713. function SetTokenInformation; external advapi32 name 'SetTokenInformation';
  16714. function AdjustTokenPrivileges; external advapi32 name 'AdjustTokenPrivileges';
  16715. function AdjustTokenGroups; external advapi32 name 'AdjustTokenGroups';
  16716. function PrivilegeCheck; external advapi32 name 'PrivilegeCheck';
  16717. function AccessCheckAndAuditAlarmA; external advapi32 name 'AccessCheckAndAuditAlarmA';
  16718. function AccessCheckAndAuditAlarmW; external advapi32 name 'AccessCheckAndAuditAlarmW';
  16719. function AccessCheckAndAuditAlarm; external advapi32 name 'AccessCheckAndAuditAlarm' + AWSuffix;
  16720. function AccessCheckByTypeAndAuditAlarmA; external advapi32 name 'AccessCheckByTypeAndAuditAlarmA';
  16721. function AccessCheckByTypeAndAuditAlarmW; external advapi32 name 'AccessCheckByTypeAndAuditAlarmW';
  16722. function AccessCheckByTypeAndAuditAlarm; external advapi32 name 'AccessCheckByTypeAndAuditAlarm' + AWSuffix;
  16723. function AccessCheckByTypeResultListAndAuditAlarmA; external advapi32 name 'AccessCheckByTypeResultListAndAuditAlarmA';
  16724. function AccessCheckByTypeResultListAndAuditAlarmW; external advapi32 name 'AccessCheckByTypeResultListAndAuditAlarmW';
  16725. function AccessCheckByTypeResultListAndAuditAlarm; external advapi32 name 'AccessCheckByTypeResultListAndAuditAlarm' + AWSuffix;
  16726. function AccessCheckByTypeResultListAndAuditAlarmByHandleA; external advapi32 name 'AccessCheckByTypeResultListAndAuditAlarmByHandleA';
  16727. function AccessCheckByTypeResultListAndAuditAlarmByHandleW; external advapi32 name 'AccessCheckByTypeResultListAndAuditAlarmByHandleW';
  16728. function AccessCheckByTypeResultListAndAuditAlarmByHandle; external advapi32 name 'AccessCheckByTypeResultListAndAuditAlarmByHandle' + AWSuffix;
  16729. function ObjectOpenAuditAlarmA; external advapi32 name 'ObjectOpenAuditAlarmA';
  16730. function ObjectOpenAuditAlarmW; external advapi32 name 'ObjectOpenAuditAlarmW';
  16731. function ObjectOpenAuditAlarm; external advapi32 name 'ObjectOpenAuditAlarm' + AWSuffix;
  16732. function ObjectPrivilegeAuditAlarmA; external advapi32 name 'ObjectPrivilegeAuditAlarmA';
  16733. function ObjectPrivilegeAuditAlarmW; external advapi32 name 'ObjectPrivilegeAuditAlarmW';
  16734. function ObjectPrivilegeAuditAlarm; external advapi32 name 'ObjectPrivilegeAuditAlarm' + AWSuffix;
  16735. function ObjectCloseAuditAlarmA; external advapi32 name 'ObjectCloseAuditAlarmA';
  16736. function ObjectCloseAuditAlarmW; external advapi32 name 'ObjectCloseAuditAlarmW';
  16737. function ObjectCloseAuditAlarm; external advapi32 name 'ObjectCloseAuditAlarm' + AWSuffix;
  16738. function ObjectDeleteAuditAlarmA; external advapi32 name 'ObjectDeleteAuditAlarmA';
  16739. function ObjectDeleteAuditAlarmW; external advapi32 name 'ObjectDeleteAuditAlarmW';
  16740. function ObjectDeleteAuditAlarm; external advapi32 name 'ObjectDeleteAuditAlarm' + AWSuffix;
  16741. function PrivilegedServiceAuditAlarmA; external advapi32 name 'PrivilegedServiceAuditAlarmA';
  16742. function PrivilegedServiceAuditAlarmW; external advapi32 name 'PrivilegedServiceAuditAlarmW';
  16743. function PrivilegedServiceAuditAlarm; external advapi32 name 'PrivilegedServiceAuditAlarm' + AWSuffix;
  16744. function IsWellKnownSid; external advapi32 name 'IsWellKnownSid';
  16745. function CreateWellKnownSid; external advapi32 name 'CreateWellKnownSid';
  16746. function EqualDomainSid; external advapi32 name 'EqualDomainSid';
  16747. function GetWindowsAccountDomainSid; external advapi32 name 'GetWindowsAccountDomainSid';
  16748. function IsValidSid; external advapi32 name 'IsValidSid';
  16749. function EqualSid; external advapi32 name 'EqualSid';
  16750. function EqualPrefixSid; external advapi32 name 'EqualPrefixSid';
  16751. function GetSidLengthRequired; external advapi32 name 'GetSidLengthRequired';
  16752. function AllocateAndInitializeSid; external advapi32 name 'AllocateAndInitializeSid';
  16753. function FreeSid; external advapi32 name 'FreeSid';
  16754. function InitializeSid; external advapi32 name 'InitializeSid';
  16755. function GetSidIdentifierAuthority; external advapi32 name 'GetSidIdentifierAuthority';
  16756. function GetSidSubAuthority; external advapi32 name 'GetSidSubAuthority';
  16757. function GetSidSubAuthorityCount; external advapi32 name 'GetSidSubAuthorityCount';
  16758. function GetLengthSid; external advapi32 name 'GetLengthSid';
  16759. function CopySid; external advapi32 name 'CopySid';
  16760. function AreAllAccessesGranted; external advapi32 name 'AreAllAccessesGranted';
  16761. function AreAnyAccessesGranted; external advapi32 name 'AreAnyAccessesGranted';
  16762. procedure MapGenericMask; external advapi32 name 'MapGenericMask';
  16763. function IsValidAcl; external advapi32 name 'IsValidAcl';
  16764. function InitializeAcl; external advapi32 name 'InitializeAcl';
  16765. function GetAclInformation; external advapi32 name 'GetAclInformation';
  16766. function SetAclInformation; external advapi32 name 'SetAclInformation';
  16767. function AddAce; external advapi32 name 'AddAce';
  16768. function DeleteAce; external advapi32 name 'DeleteAce';
  16769. function GetAce; external advapi32 name 'GetAce';
  16770. function AddAccessAllowedAce; external advapi32 name 'AddAccessAllowedAce';
  16771. function AddAccessAllowedAceEx; external advapi32 name 'AddAccessAllowedAceEx';
  16772. function AddAccessDeniedAce; external advapi32 name 'AddAccessDeniedAce';
  16773. function AddAccessDeniedAceEx; external advapi32 name 'AddAccessDeniedAceEx';
  16774. function AddAuditAccessAce; external advapi32 name 'AddAuditAccessAce';
  16775. function AddAuditAccessAceEx; external advapi32 name 'AddAuditAccessAceEx';
  16776. function AddAccessAllowedObjectAce; external advapi32 name 'AddAccessAllowedObjectAce';
  16777. function AddAccessDeniedObjectAce; external advapi32 name 'AddAccessDeniedObjectAce';
  16778. function AddAuditAccessObjectAce; external advapi32 name 'AddAuditAccessObjectAce';
  16779. function FindFirstFreeAce; external advapi32 name 'FindFirstFreeAce';
  16780. function InitializeSecurityDescriptor; external advapi32 name 'InitializeSecurityDescriptor';
  16781. function IsValidSecurityDescriptor; external advapi32 name 'IsValidSecurityDescriptor';
  16782. function GetSecurityDescriptorLength; external advapi32 name 'GetSecurityDescriptorLength';
  16783. function GetSecurityDescriptorControl; external advapi32 name 'GetSecurityDescriptorControl';
  16784. function SetSecurityDescriptorControl; external advapi32 name 'SetSecurityDescriptorControl';
  16785. function SetSecurityDescriptorDacl; external advapi32 name 'SetSecurityDescriptorDacl';
  16786. function GetSecurityDescriptorDacl; external advapi32 name 'GetSecurityDescriptorDacl';
  16787. function SetSecurityDescriptorSacl; external advapi32 name 'SetSecurityDescriptorSacl';
  16788. function GetSecurityDescriptorSacl; external advapi32 name 'GetSecurityDescriptorSacl';
  16789. function SetSecurityDescriptorOwner; external advapi32 name 'SetSecurityDescriptorOwner';
  16790. function GetSecurityDescriptorOwner; external advapi32 name 'GetSecurityDescriptorOwner';
  16791. function SetSecurityDescriptorGroup; external advapi32 name 'SetSecurityDescriptorGroup';
  16792. function GetSecurityDescriptorGroup; external advapi32 name 'GetSecurityDescriptorGroup';
  16793. function SetSecurityDescriptorRMControl; external advapi32 name 'SetSecurityDescriptorRMControl';
  16794. function GetSecurityDescriptorRMControl; external advapi32 name 'GetSecurityDescriptorRMControl';
  16795. function CreatePrivateObjectSecurity; external advapi32 name 'CreatePrivateObjectSecurity';
  16796. function ConvertToAutoInheritPrivateObjectSecurity; external advapi32 name 'ConvertToAutoInheritPrivateObjectSecurity';
  16797. function CreatePrivateObjectSecurityEx; external advapi32 name 'CreatePrivateObjectSecurityEx';
  16798. function SetPrivateObjectSecurity; external advapi32 name 'SetPrivateObjectSecurity';
  16799. function SetPrivateObjectSecurityEx; external advapi32 name 'SetPrivateObjectSecurityEx';
  16800. function GetPrivateObjectSecurity; external advapi32 name 'GetPrivateObjectSecurity';
  16801. function DestroyPrivateObjectSecurity; external advapi32 name 'DestroyPrivateObjectSecurity';
  16802. function MakeSelfRelativeSD; external advapi32 name 'MakeSelfRelativeSD';
  16803. function MakeAbsoluteSD; external advapi32 name 'MakeAbsoluteSD';
  16804. function MakeAbsoluteSD2; external advapi32 name 'MakeAbsoluteSD2';
  16805. function SetFileSecurityA; external advapi32 name 'SetFileSecurityA';
  16806. function SetFileSecurityW; external advapi32 name 'SetFileSecurityW';
  16807. function SetFileSecurity; external advapi32 name 'SetFileSecurity' + AWSuffix;
  16808. function GetFileSecurityA; external advapi32 name 'GetFileSecurityA';
  16809. function GetFileSecurityW; external advapi32 name 'GetFileSecurityW';
  16810. function GetFileSecurity; external advapi32 name 'GetFileSecurity' + AWSuffix;
  16811. function SetKernelObjectSecurity; external advapi32 name 'SetKernelObjectSecurity';
  16812. function FindFirstChangeNotificationA; external kernel32 name 'FindFirstChangeNotificationA';
  16813. function FindFirstChangeNotificationW; external kernel32 name 'FindFirstChangeNotificationW';
  16814. function FindFirstChangeNotification; external kernel32 name 'FindFirstChangeNotification' + AWSuffix;
  16815. function FindNextChangeNotification; external kernel32 name 'FindNextChangeNotification';
  16816. function FindCloseChangeNotification; external kernel32 name 'FindCloseChangeNotification';
  16817. function ReadDirectoryChangesW; external kernel32 name 'ReadDirectoryChangesW';
  16818. function VirtualLock; external kernel32 name 'VirtualLock';
  16819. function VirtualUnlock; external kernel32 name 'VirtualUnlock';
  16820. function MapViewOfFileEx; external kernel32 name 'MapViewOfFileEx';
  16821. function SetPriorityClass; external kernel32 name 'SetPriorityClass';
  16822. function GetPriorityClass; external kernel32 name 'GetPriorityClass';
  16823. function IsBadReadPtr; external kernel32 name 'IsBadReadPtr';
  16824. function IsBadWritePtr; external kernel32 name 'IsBadWritePtr';
  16825. function IsBadHugeReadPtr; external kernel32 name 'IsBadHugeReadPtr';
  16826. function IsBadHugeWritePtr; external kernel32 name 'IsBadHugeWritePtr';
  16827. function IsBadCodePtr; external kernel32 name 'IsBadCodePtr';
  16828. function IsBadStringPtrA; external kernel32 name 'IsBadStringPtrA';
  16829. function IsBadStringPtrW; external kernel32 name 'IsBadStringPtrW';
  16830. function IsBadStringPtr; external kernel32 name 'IsBadStringPtr' + AWSuffix;
  16831. function LookupAccountSidA; external advapi32 name 'LookupAccountSidA';
  16832. function LookupAccountSidW; external advapi32 name 'LookupAccountSidW';
  16833. function LookupAccountSid; external advapi32 name 'LookupAccountSid' + AWSuffix;
  16834. function LookupAccountNameA; external advapi32 name 'LookupAccountNameA';
  16835. function LookupAccountNameW; external advapi32 name 'LookupAccountNameW';
  16836. function LookupAccountName; external advapi32 name 'LookupAccountName' + AWSuffix;
  16837. function LookupPrivilegeValueA; external advapi32 name 'LookupPrivilegeValueA';
  16838. function LookupPrivilegeValueW; external advapi32 name 'LookupPrivilegeValueW';
  16839. function LookupPrivilegeValue; external advapi32 name 'LookupPrivilegeValue' + AWSuffix;
  16840. function LookupPrivilegeNameA; external advapi32 name 'LookupPrivilegeNameA';
  16841. function LookupPrivilegeNameW; external advapi32 name 'LookupPrivilegeNameW';
  16842. function LookupPrivilegeName; external advapi32 name 'LookupPrivilegeName' + AWSuffix;
  16843. function LookupPrivilegeDisplayNameA; external advapi32 name 'LookupPrivilegeDisplayNameA';
  16844. function LookupPrivilegeDisplayNameW; external advapi32 name 'LookupPrivilegeDisplayNameW';
  16845. function LookupPrivilegeDisplayName; external advapi32 name 'LookupPrivilegeDisplayName' + AWSuffix;
  16846. function AllocateLocallyUniqueId; external advapi32 name 'AllocateLocallyUniqueId';
  16847. function BuildCommDCBA; external kernel32 name 'BuildCommDCBA';
  16848. function BuildCommDCBW; external kernel32 name 'BuildCommDCBW';
  16849. function BuildCommDCB; external kernel32 name 'BuildCommDCB' + AWSuffix;
  16850. function BuildCommDCBAndTimeoutsA; external kernel32 name 'BuildCommDCBAndTimeoutsA';
  16851. function BuildCommDCBAndTimeoutsW; external kernel32 name 'BuildCommDCBAndTimeoutsW';
  16852. function BuildCommDCBAndTimeouts; external kernel32 name 'BuildCommDCBAndTimeouts' + AWSuffix;
  16853. function CommConfigDialogA; external kernel32 name 'CommConfigDialogA';
  16854. function CommConfigDialogW; external kernel32 name 'CommConfigDialogW';
  16855. function CommConfigDialog; external kernel32 name 'CommConfigDialog' + AWSuffix;
  16856. function GetDefaultCommConfigA; external kernel32 name 'GetDefaultCommConfigA';
  16857. function GetDefaultCommConfigW; external kernel32 name 'GetDefaultCommConfigW';
  16858. function GetDefaultCommConfig; external kernel32 name 'GetDefaultCommConfig' + AWSuffix;
  16859. function SetDefaultCommConfigA; external kernel32 name 'SetDefaultCommConfigA';
  16860. function SetDefaultCommConfigW; external kernel32 name 'SetDefaultCommConfigW';
  16861. function SetDefaultCommConfig; external kernel32 name 'SetDefaultCommConfig' + AWSuffix;
  16862. function GetComputerNameA; external kernel32 name 'GetComputerNameA';
  16863. function GetComputerNameW; external kernel32 name 'GetComputerNameW';
  16864. function GetComputerName; external kernel32 name 'GetComputerName' + AWSuffix;
  16865. function SetComputerNameA; external kernel32 name 'SetComputerNameA';
  16866. function SetComputerNameW; external kernel32 name 'SetComputerNameW';
  16867. function SetComputerName; external kernel32 name 'SetComputerName' + AWSuffix;
  16868. function GetComputerNameExA; external kernel32 name 'GetComputerNameExA';
  16869. function GetComputerNameExW; external kernel32 name 'GetComputerNameExW';
  16870. function GetComputerNameEx; external kernel32 name 'GetComputerNameEx' + AWSuffix;
  16871. function SetComputerNameExA; external kernel32 name 'SetComputerNameExA';
  16872. function SetComputerNameExW; external kernel32 name 'SetComputerNameExW';
  16873. function SetComputerNameEx; external kernel32 name 'SetComputerNameEx' + AWSuffix;
  16874. function DnsHostnameToComputerNameA; external kernel32 name 'DnsHostnameToComputerNameA';
  16875. function DnsHostnameToComputerNameW; external kernel32 name 'DnsHostnameToComputerNameW';
  16876. function DnsHostnameToComputerName; external kernel32 name 'DnsHostnameToComputerName' + AWSuffix;
  16877. function GetUserNameA; external advapi32 name 'GetUserNameA';
  16878. function GetUserNameW; external advapi32 name 'GetUserNameW';
  16879. function GetUserName; external advapi32 name 'GetUserName' + AWSuffix;
  16880. function LogonUserA; external advapi32 name 'LogonUserA';
  16881. function LogonUserW; external advapi32 name 'LogonUserW';
  16882. function LogonUser; external advapi32 name 'LogonUser' + AWSuffix;
  16883. function LogonUserExA; external advapi32 name 'LogonUserExA';
  16884. function LogonUserExW; external advapi32 name 'LogonUserExW';
  16885. function LogonUserEx; external advapi32 name 'LogonUserEx' + AWSuffix;
  16886. function ImpersonateLoggedOnUser; external advapi32 name 'ImpersonateLoggedOnUser';
  16887. function CreateProcessAsUserA; external advapi32 name 'CreateProcessAsUserA';
  16888. function CreateProcessAsUserW; external advapi32 name 'CreateProcessAsUserW';
  16889. function CreateProcessAsUser; external advapi32 name 'CreateProcessAsUser' + AWSuffix;
  16890. function CreateProcessWithLogonW; external advapi32 name 'CreateProcessWithLogonW';
  16891. function CreateProcessWithTokenW; external advapi32 name 'CreateProcessWithTokenW';
  16892. function ImpersonateAnonymousToken; external advapi32 name 'ImpersonateAnonymousToken';
  16893. function DuplicateTokenEx; external advapi32 name 'DuplicateTokenEx';
  16894. function CreateRestrictedToken; external advapi32 name 'CreateRestrictedToken';
  16895. function IsTokenRestricted; external advapi32 name 'IsTokenRestricted';
  16896. function CheckTokenMembership; external advapi32 name 'CheckTokenMembership';
  16897. function IsTokenUntrusted; external advapi32 name 'IsTokenUntrusted';
  16898. function RegisterWaitForSingleObject; external kernel32 name 'RegisterWaitForSingleObject';
  16899. function RegisterWaitForSingleObjectEx; external kernel32 name 'RegisterWaitForSingleObjectEx';
  16900. function UnregisterWait; external kernel32 name 'UnregisterWait';
  16901. function UnregisterWaitEx; external kernel32 name 'UnregisterWaitEx';
  16902. function QueueUserWorkItem; external kernel32 name 'QueueUserWorkItem';
  16903. function BindIoCompletionCallback; external kernel32 name 'BindIoCompletionCallback';
  16904. function CreateTimerQueue; external kernel32 name 'CreateTimerQueue';
  16905. function CreateTimerQueueTimer; external kernel32 name 'CreateTimerQueueTimer';
  16906. function ChangeTimerQueueTimer; external kernel32 name 'ChangeTimerQueueTimer';
  16907. function DeleteTimerQueueTimer; external kernel32 name 'DeleteTimerQueueTimer';
  16908. function DeleteTimerQueueEx; external kernel32 name 'DeleteTimerQueueEx';
  16909. function SetTimerQueueTimer; external kernel32 name 'SetTimerQueueTimer';
  16910. function CancelTimerQueueTimer; external kernel32 name 'CancelTimerQueueTimer';
  16911. function DeleteTimerQueue; external kernel32 name 'DeleteTimerQueue';
  16912. function GetCurrentHwProfileA; external advapi32 name 'GetCurrentHwProfileA';
  16913. function GetCurrentHwProfileW; external advapi32 name 'GetCurrentHwProfileW';
  16914. function GetCurrentHwProfile; external advapi32 name 'GetCurrentHwProfile' + AWSuffix;
  16915. function QueryPerformanceCounter; external kernel32 name 'QueryPerformanceCounter';
  16916. function QueryPerformanceFrequency; external kernel32 name 'QueryPerformanceFrequency';
  16917. function GetVersionExA; external kernel32 name 'GetVersionExA';
  16918. function GetVersionExW; external kernel32 name 'GetVersionExW';
  16919. function GetVersionEx; external kernel32 name 'GetVersionEx' + AWSuffix;
  16920. function VerifyVersionInfoA; external kernel32 name 'VerifyVersionInfoA';
  16921. function VerifyVersionInfoW; external kernel32 name 'VerifyVersionInfoW';
  16922. function VerifyVersionInfo; external kernel32 name 'VerifyVersionInfo' + AWSuffix;
  16923. function GetSystemPowerStatus; external kernel32 name 'GetSystemPowerStatus';
  16924. function SetSystemPowerState; external kernel32 name 'SetSystemPowerState';
  16925. function AllocateUserPhysicalPages; external kernel32 name 'AllocateUserPhysicalPages';
  16926. function FreeUserPhysicalPages; external kernel32 name 'FreeUserPhysicalPages';
  16927. function MapUserPhysicalPages; external kernel32 name 'MapUserPhysicalPages';
  16928. function MapUserPhysicalPagesScatter; external kernel32 name 'MapUserPhysicalPagesScatter';
  16929. function CreateJobObjectA; external kernel32 name 'CreateJobObjectA';
  16930. function CreateJobObjectW; external kernel32 name 'CreateJobObjectW';
  16931. function CreateJobObject; external kernel32 name 'CreateJobObject' + AWSuffix;
  16932. function OpenJobObjectA; external kernel32 name 'OpenJobObjectA';
  16933. function OpenJobObjectW; external kernel32 name 'OpenJobObjectW';
  16934. function OpenJobObject; external kernel32 name 'OpenJobObject' + AWSuffix;
  16935. function AssignProcessToJobObject; external kernel32 name 'AssignProcessToJobObject';
  16936. function TerminateJobObject; external kernel32 name 'TerminateJobObject';
  16937. function QueryInformationJobObject; external kernel32 name 'QueryInformationJobObject';
  16938. function SetInformationJobObject; external kernel32 name 'SetInformationJobObject';
  16939. function IsProcessInJob; external kernel32 name 'IsProcessInJob';
  16940. function CreateJobSet; external kernel32 name 'CreateJobSet';
  16941. function AddVectoredExceptionHandler; external kernel32 name 'AddVectoredExceptionHandler';
  16942. function RemoveVectoredExceptionHandler; external kernel32 name 'RemoveVectoredExceptionHandler';
  16943. function FindFirstVolumeA; external kernel32 name 'FindFirstVolumeA';
  16944. function FindFirstVolumeW; external kernel32 name 'FindFirstVolumeW';
  16945. function FindFirstVolume; external kernel32 name 'FindFirstVolume' + AWSuffix;
  16946. function FindNextVolumeA; external kernel32 name 'FindNextVolumeA';
  16947. function FindNextVolumeW; external kernel32 name 'FindNextVolumeW';
  16948. function FindNextVolume; external kernel32 name 'FindNextVolume' + AWSuffix;
  16949. function FindVolumeClose; external kernel32 name 'FindVolumeClose';
  16950. function FindFirstVolumeMountPointA; external kernel32 name 'FindFirstVolumeMountPointA';
  16951. function FindFirstVolumeMountPointW; external kernel32 name 'FindFirstVolumeMountPointW';
  16952. function FindFirstVolumeMountPoint; external kernel32 name 'FindFirstVolumeMountPoint' + AWSuffix;
  16953. function FindNextVolumeMountPointA; external kernel32 name 'FindNextVolumeMountPointA';
  16954. function FindNextVolumeMountPointW; external kernel32 name 'FindNextVolumeMountPointW';
  16955. function FindNextVolumeMountPoint; external kernel32 name 'FindNextVolumeMountPoint' + AWSuffix;
  16956. function FindVolumeMountPointClose; external kernel32 name 'FindVolumeMountPointClose';
  16957. function SetVolumeMountPointA; external kernel32 name 'SetVolumeMountPointA';
  16958. function SetVolumeMountPointW; external kernel32 name 'SetVolumeMountPointW';
  16959. function SetVolumeMountPoint; external kernel32 name 'SetVolumeMountPoint' + AWSuffix;
  16960. function DeleteVolumeMountPointA; external kernel32 name 'DeleteVolumeMountPointA';
  16961. function DeleteVolumeMountPointW; external kernel32 name 'DeleteVolumeMountPointW';
  16962. function DeleteVolumeMountPoint; external kernel32 name 'DeleteVolumeMountPoint' + AWSuffix;
  16963. function GetVolumeNameForVolumeMountPointA; external kernel32 name 'GetVolumeNameForVolumeMountPointA';
  16964. function GetVolumeNameForVolumeMountPointW; external kernel32 name 'GetVolumeNameForVolumeMountPointW';
  16965. function GetVolumeNameForVolumeMountPoint; external kernel32 name 'GetVolumeNameForVolumeMountPoint' + AWSuffix;
  16966. function GetVolumePathNameA; external kernel32 name 'GetVolumePathNameA';
  16967. function GetVolumePathNameW; external kernel32 name 'GetVolumePathNameW';
  16968. function GetVolumePathName; external kernel32 name 'GetVolumePathName' + AWSuffix;
  16969. function GetVolumePathNamesForVolumeNameA; external kernel32 name 'GetVolumePathNamesForVolumeNameA';
  16970. function GetVolumePathNamesForVolumeNameW; external kernel32 name 'GetVolumePathNamesForVolumeNameW';
  16971. function GetVolumePathNamesForVolumeName; external kernel32 name 'GetVolumePathNamesForVolumeName' + AWSuffix;
  16972. function CreateActCtxA; external kernel32 name 'CreateActCtxA';
  16973. function CreateActCtxW; external kernel32 name 'CreateActCtxW';
  16974. function CreateActCtx; external kernel32 name 'CreateActCtx' + AWSuffix;
  16975. procedure AddRefActCtx; external kernel32 name 'AddRefActCtx';
  16976. procedure ReleaseActCtx; external kernel32 name 'ReleaseActCtx';
  16977. function ZombifyActCtx; external kernel32 name 'ZombifyActCtx';
  16978. function ActivateActCtx; external kernel32 name 'ActivateActCtx';
  16979. function DeactivateActCtx; external kernel32 name 'DeactivateActCtx';
  16980. function GetCurrentActCtx; external kernel32 name 'GetCurrentActCtx';
  16981. function FindActCtxSectionStringA; external kernel32 name 'FindActCtxSectionStringA';
  16982. function FindActCtxSectionStringW; external kernel32 name 'FindActCtxSectionStringW';
  16983. function FindActCtxSectionString; external kernel32 name 'FindActCtxSectionString' + AWSuffix;
  16984. function FindActCtxSectionGuid; external kernel32 name 'FindActCtxSectionGuid';
  16985. function QueryActCtxW; external kernel32 name 'QueryActCtxW';
  16986. function ProcessIdToSessionId; external kernel32 name 'ProcessIdToSessionId';
  16987. function WTSGetActiveConsoleSessionId; external kernel32 name 'WTSGetActiveConsoleSessionId';
  16988. function IsWow64Process; external kernel32 name 'IsWow64Process';
  16989. function GetLogicalProcessorInformation; external kernel32 name 'GetLogicalProcessorInformation';
  16990. function GetNumaHighestNodeNumber; external kernel32 name 'GetNumaHighestNodeNumber';
  16991. function GetNumaProcessorNode; external kernel32 name 'GetNumaProcessorNode';
  16992. function GetNumaNodeProcessorMask; external kernel32 name 'GetNumaNodeProcessorMask';
  16993. function GetNumaAvailableMemoryNode; external kernel32 name 'GetNumaAvailableMemoryNode';
  16994. {$ENDIF DYNAMIC_LINK}
  16995. end.