jwawinbase.pas 543 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434154351543615437154381543915440154411544215443154441544515446154471544815449154501545115452154531545415455154561545715458154591546015461154621546315464154651546615467154681546915470154711547215473154741547515476154771547815479154801548115482154831548415485154861548715488154891549015491154921549315494154951549615497154981549915500155011550215503155041550515506155071550815509155101551115512155131551415515155161551715518155191552015521155221552315524155251552615527155281552915530155311553215533155341553515536155371553815539155401554115542155431554415545155461554715548155491555015551155521555315554155551555615557155581555915560155611556215563155641556515566155671556815569155701557115572155731557415575155761557715578155791558015581155821558315584155851558615587155881558915590155911559215593155941559515596155971559815599156001560115602156031560415605156061560715608156091561015611156121561315614156151561615617156181561915620156211562215623156241562515626156271562815629156301563115632156331563415635156361563715638156391564015641156421564315644156451564615647156481564915650156511565215653156541565515656156571565815659156601566115662156631566415665156661566715668156691567015671156721567315674156751567615677156781567915680156811568215683156841568515686156871568815689156901569115692156931569415695156961569715698156991570015701157021570315704157051570615707157081570915710157111571215713157141571515716157171571815719157201572115722157231572415725157261572715728157291573015731157321573315734157351573615737157381573915740157411574215743157441574515746157471574815749157501575115752157531575415755157561575715758157591576015761157621576315764157651576615767157681576915770157711577215773157741577515776157771577815779157801578115782157831578415785157861578715788157891579015791157921579315794157951579615797157981579915800158011580215803158041580515806158071580815809158101581115812158131581415815158161581715818158191582015821158221582315824158251582615827158281582915830158311583215833158341583515836158371583815839158401584115842158431584415845158461584715848158491585015851158521585315854158551585615857158581585915860158611586215863158641586515866158671586815869158701587115872158731587415875158761587715878158791588015881158821588315884158851588615887158881588915890158911589215893158941589515896158971589815899159001590115902159031590415905159061590715908159091591015911159121591315914159151591615917159181591915920159211592215923159241592515926159271592815929159301593115932159331593415935159361593715938159391594015941159421594315944159451594615947159481594915950159511595215953159541595515956159571595815959159601596115962159631596415965159661596715968159691597015971159721597315974159751597615977159781597915980159811598215983159841598515986159871598815989159901599115992159931599415995159961599715998159991600016001160021600316004160051600616007160081600916010160111601216013160141601516016160171601816019160201602116022160231602416025160261602716028160291603016031160321603316034160351603616037160381603916040160411604216043160441604516046160471604816049160501605116052160531605416055160561605716058160591606016061160621606316064160651606616067160681606916070160711607216073160741607516076160771607816079160801608116082160831608416085160861608716088160891609016091160921609316094160951609616097160981609916100161011610216103161041610516106161071610816109161101611116112161131611416115161161611716118161191612016121161221612316124161251612616127161281612916130161311613216133161341613516136161371613816139161401614116142161431614416145161461614716148161491615016151161521615316154161551615616157161581615916160161611616216163161641616516166161671616816169161701617116172161731617416175161761617716178161791618016181161821618316184161851618616187161881618916190161911619216193161941619516196161971619816199162001620116202162031620416205162061620716208162091621016211162121621316214162151621616217162181621916220162211622216223162241622516226162271622816229162301623116232162331623416235162361623716238162391624016241162421624316244162451624616247162481624916250162511625216253162541625516256162571625816259162601626116262162631626416265162661626716268162691627016271162721627316274162751627616277162781627916280162811628216283162841628516286162871628816289162901629116292162931629416295162961629716298162991630016301163021630316304163051630616307163081630916310163111631216313163141631516316163171631816319163201632116322163231632416325163261632716328163291633016331163321633316334163351633616337163381633916340163411634216343163441634516346163471634816349163501635116352163531635416355163561635716358163591636016361163621636316364163651636616367163681636916370163711637216373163741637516376163771637816379163801638116382163831638416385163861638716388163891639016391163921639316394163951639616397163981639916400164011640216403164041640516406164071640816409164101641116412164131641416415164161641716418164191642016421164221642316424164251642616427164281642916430164311643216433164341643516436164371643816439164401644116442164431644416445164461644716448164491645016451164521645316454164551645616457164581645916460164611646216463164641646516466164671646816469164701647116472164731647416475164761647716478164791648016481164821648316484164851648616487164881648916490164911649216493164941649516496164971649816499165001650116502165031650416505165061650716508165091651016511165121651316514165151651616517165181651916520165211652216523165241652516526165271652816529165301653116532165331653416535165361653716538165391654016541165421654316544165451654616547165481654916550165511655216553165541655516556165571655816559165601656116562165631656416565165661656716568165691657016571165721657316574165751657616577165781657916580165811658216583165841658516586165871658816589165901659116592165931659416595165961659716598165991660016601166021660316604166051660616607166081660916610166111661216613166141661516616166171661816619166201662116622166231662416625166261662716628166291663016631166321663316634166351663616637166381663916640166411664216643166441664516646166471664816649166501665116652166531665416655166561665716658166591666016661166621666316664166651666616667166681666916670166711667216673166741667516676166771667816679166801668116682166831668416685166861668716688166891669016691166921669316694166951669616697166981669916700167011670216703167041670516706167071670816709167101671116712167131671416715167161671716718167191672016721167221672316724167251672616727167281672916730167311673216733167341673516736167371673816739167401674116742167431674416745167461674716748167491675016751167521675316754167551675616757167581675916760167611676216763167641676516766167671676816769167701677116772167731677416775167761677716778167791678016781167821678316784167851678616787167881678916790167911679216793167941679516796167971679816799168001680116802168031680416805168061680716808168091681016811168121681316814168151681616817168181681916820168211682216823168241682516826168271682816829168301683116832168331683416835168361683716838168391684016841168421684316844168451684616847168481684916850168511685216853168541685516856168571685816859168601686116862168631686416865168661686716868168691687016871168721687316874168751687616877168781687916880168811688216883168841688516886168871688816889168901689116892168931689416895168961689716898168991690016901169021690316904169051690616907169081690916910169111691216913169141691516916169171691816919169201692116922169231692416925169261692716928169291693016931169321693316934169351693616937169381693916940169411694216943169441694516946169471694816949169501695116952169531695416955169561695716958169591696016961169621696316964169651696616967169681696916970169711697216973169741697516976169771697816979169801698116982169831698416985169861698716988169891699016991169921699316994169951699616997169981699917000170011700217003170041700517006170071700817009170101701117012170131701417015170161701717018170191702017021170221702317024170251702617027170281702917030170311703217033170341703517036170371703817039170401704117042170431704417045170461704717048170491705017051170521705317054170551705617057170581705917060170611706217063170641706517066170671706817069170701707117072170731707417075170761707717078170791708017081170821708317084170851708617087170881708917090170911709217093170941709517096170971709817099171001710117102171031710417105171061710717108171091711017111171121711317114171151711617117171181711917120171211712217123171241712517126171271712817129171301713117132171331713417135171361713717138171391714017141171421714317144171451714617147171481714917150171511715217153171541715517156171571715817159171601716117162171631716417165171661716717168171691717017171171721717317174171751717617177171781717917180171811718217183171841718517186171871718817189171901719117192171931719417195171961719717198171991720017201172021720317204172051720617207172081720917210172111721217213172141721517216172171721817219172201722117222172231722417225172261722717228172291723017231172321723317234172351723617237172381723917240172411724217243172441724517246172471724817249172501725117252172531725417255172561725717258172591726017261172621726317264172651726617267172681726917270172711727217273172741727517276172771727817279172801728117282172831728417285172861728717288172891729017291172921729317294172951729617297172981729917300173011730217303173041730517306173071730817309173101731117312173131731417315173161731717318173191732017321173221732317324173251732617327173281732917330173311733217333173341733517336173371733817339173401734117342173431734417345173461734717348173491735017351173521735317354173551735617357173581735917360173611736217363173641736517366173671736817369173701737117372173731737417375173761737717378173791738017381173821738317384173851738617387173881738917390173911739217393173941739517396173971739817399174001740117402174031740417405174061740717408174091741017411174121741317414174151741617417174181741917420174211742217423174241742517426174271742817429174301743117432174331743417435174361743717438174391744017441174421744317444174451744617447174481744917450174511745217453174541745517456174571745817459174601746117462174631746417465174661746717468174691747017471174721747317474174751747617477174781747917480174811748217483174841748517486174871748817489174901749117492174931749417495174961749717498174991750017501175021750317504175051750617507175081750917510175111751217513175141751517516175171751817519175201752117522175231752417525175261752717528175291753017531175321753317534175351753617537175381753917540175411754217543175441754517546175471754817549175501755117552175531755417555175561755717558175591756017561175621756317564175651756617567175681756917570175711757217573175741757517576175771757817579175801758117582175831758417585175861758717588175891759017591175921759317594175951759617597175981759917600176011760217603176041760517606176071760817609176101761117612176131761417615176161761717618176191762017621176221762317624176251762617627176281762917630176311763217633176341763517636176371763817639176401764117642176431764417645176461764717648176491765017651176521765317654176551765617657176581765917660176611766217663176641766517666176671766817669176701767117672176731767417675176761767717678176791768017681176821768317684176851768617687176881768917690176911769217693176941769517696176971769817699177001770117702177031770417705177061770717708177091771017711177121771317714177151771617717177181771917720177211772217723177241772517726177271772817729177301773117732177331773417735177361773717738177391774017741177421774317744177451774617747177481774917750177511775217753177541775517756177571775817759177601776117762177631776417765177661776717768177691777017771177721777317774177751777617777177781777917780177811778217783177841778517786177871778817789177901779117792177931779417795177961779717798177991780017801178021780317804178051780617807178081780917810178111781217813178141781517816178171781817819178201782117822178231782417825178261782717828178291783017831178321783317834178351783617837178381783917840178411784217843178441784517846178471784817849178501785117852178531785417855178561785717858178591786017861178621786317864178651786617867178681786917870178711787217873178741787517876178771787817879178801788117882178831788417885178861788717888178891789017891178921789317894178951789617897178981789917900179011790217903179041790517906179071790817909179101791117912179131791417915179161791717918179191792017921179221792317924179251792617927179281792917930179311793217933179341793517936179371793817939179401794117942179431794417945179461794717948179491795017951179521795317954179551795617957179581795917960179611796217963179641796517966179671796817969179701797117972179731797417975179761797717978179791798017981179821798317984179851798617987179881798917990179911799217993179941799517996179971799817999180001800118002180031800418005180061800718008180091801018011180121801318014180151801618017180181801918020180211802218023180241802518026180271802818029180301803118032180331803418035180361803718038180391804018041180421804318044180451804618047180481804918050180511805218053180541805518056180571805818059180601806118062180631806418065180661806718068180691807018071180721807318074180751807618077180781807918080180811808218083180841808518086180871808818089180901809118092180931809418095180961809718098180991810018101181021810318104181051810618107181081810918110181111811218113181141811518116181171811818119181201812118122181231812418125181261812718128181291813018131181321813318134181351813618137181381813918140181411814218143181441814518146181471814818149181501815118152181531815418155181561815718158181591816018161181621816318164181651816618167181681816918170181711817218173181741817518176181771817818179181801818118182181831818418185181861818718188181891819018191181921819318194181951819618197181981819918200182011820218203182041820518206182071820818209182101821118212182131821418215182161821718218182191822018221182221822318224182251822618227182281822918230182311823218233182341823518236182371823818239182401824118242182431824418245182461824718248182491825018251182521825318254182551825618257182581825918260182611826218263182641826518266182671826818269182701827118272182731827418275182761827718278182791828018281182821828318284182851828618287182881828918290182911829218293182941829518296182971829818299183001830118302183031830418305183061830718308183091831018311183121831318314183151831618317183181831918320183211832218323183241832518326183271832818329183301833118332183331833418335183361833718338183391834018341183421834318344183451834618347183481834918350183511835218353183541835518356183571835818359183601836118362183631836418365183661836718368183691837018371183721837318374183751837618377183781837918380183811838218383183841838518386183871838818389183901839118392183931839418395183961839718398183991840018401184021840318404184051840618407184081840918410184111841218413184141841518416184171841818419184201842118422184231842418425184261842718428184291843018431184321843318434184351843618437184381843918440184411844218443184441844518446184471844818449184501845118452184531845418455184561845718458184591846018461184621846318464184651846618467184681846918470184711847218473184741847518476184771847818479184801848118482184831848418485184861848718488184891849018491184921849318494184951849618497184981849918500185011850218503185041850518506185071850818509185101851118512185131851418515185161851718518185191852018521185221852318524185251852618527185281852918530185311853218533185341853518536185371853818539185401854118542185431854418545185461854718548185491855018551185521855318554185551855618557185581855918560185611856218563185641856518566185671856818569185701857118572185731857418575185761857718578185791858018581185821858318584185851858618587185881858918590185911859218593185941859518596185971859818599186001860118602186031860418605186061860718608186091861018611186121861318614186151861618617186181861918620186211862218623186241862518626186271862818629186301863118632186331863418635186361863718638186391864018641186421864318644186451864618647186481864918650186511865218653186541865518656186571865818659186601866118662186631866418665186661866718668186691867018671186721867318674186751867618677186781867918680186811868218683186841868518686186871868818689186901869118692186931869418695186961869718698186991870018701187021870318704187051870618707187081870918710187111871218713187141871518716187171871818719187201872118722187231872418725187261872718728187291873018731187321873318734187351873618737187381873918740187411874218743187441874518746187471874818749187501875118752187531875418755187561875718758187591876018761187621876318764187651876618767187681876918770187711877218773187741877518776187771877818779187801878118782187831878418785187861878718788187891879018791187921879318794187951879618797187981879918800188011880218803188041880518806188071880818809188101881118812188131881418815188161881718818188191882018821188221882318824188251882618827188281882918830188311883218833188341883518836188371883818839188401884118842188431884418845188461884718848188491885018851188521885318854188551885618857188581885918860188611886218863188641886518866188671886818869188701887118872188731887418875188761887718878188791888018881188821888318884188851888618887188881888918890188911889218893188941889518896188971889818899189001890118902189031890418905189061890718908189091891018911189121891318914189151891618917189181891918920189211892218923189241892518926189271892818929189301893118932189331893418935189361893718938189391894018941189421894318944189451894618947189481894918950189511895218953189541895518956189571895818959189601896118962189631896418965189661896718968189691897018971189721897318974189751897618977189781897918980189811898218983189841898518986189871898818989189901899118992189931899418995189961899718998189991900019001190021900319004190051900619007190081900919010190111901219013190141901519016190171901819019190201902119022190231902419025190261902719028190291903019031190321903319034190351903619037190381903919040190411904219043190441904519046190471904819049190501905119052190531905419055190561905719058190591906019061190621906319064190651906619067190681906919070190711907219073190741907519076190771907819079190801908119082190831908419085190861908719088190891909019091190921909319094190951909619097190981909919100191011910219103191041910519106191071910819109191101911119112191131911419115191161911719118191191912019121191221912319124191251912619127191281912919130191311913219133191341913519136191371913819139191401914119142191431914419145191461914719148191491915019151191521915319154191551915619157191581915919160191611916219163191641916519166191671916819169191701917119172191731917419175191761917719178191791918019181191821918319184191851918619187191881918919190191911919219193191941919519196191971919819199192001920119202192031920419205192061920719208192091921019211192121921319214192151921619217192181921919220192211922219223192241922519226192271922819229192301923119232192331923419235192361923719238192391924019241192421924319244192451924619247192481924919250192511925219253192541925519256192571925819259192601926119262192631926419265192661926719268192691927019271192721927319274192751927619277192781927919280192811928219283192841928519286192871928819289192901929119292192931929419295192961929719298192991930019301193021930319304193051930619307193081930919310193111931219313193141931519316193171931819319193201932119322193231932419325193261932719328193291933019331193321933319334193351933619337193381933919340193411934219343193441934519346193471934819349193501935119352193531935419355193561935719358193591936019361193621936319364193651936619367193681936919370193711937219373193741937519376193771937819379193801938119382193831938419385193861938719388193891939019391193921939319394193951939619397193981939919400194011940219403194041940519406194071940819409194101941119412194131941419415194161941719418194191942019421194221942319424194251942619427194281942919430194311943219433194341943519436194371943819439194401944119442194431944419445194461944719448194491945019451194521945319454194551945619457194581945919460194611946219463194641946519466194671946819469194701947119472194731947419475194761947719478194791948019481194821948319484194851948619487194881948919490194911949219493194941949519496194971949819499195001950119502195031950419505195061950719508195091951019511195121951319514195151951619517195181951919520195211952219523195241952519526195271952819529195301953119532195331953419535195361953719538195391954019541195421954319544195451954619547195481954919550195511955219553195541955519556195571955819559195601956119562195631956419565195661956719568195691957019571195721957319574195751957619577195781957919580195811958219583195841958519586195871958819589195901959119592195931959419595195961959719598195991960019601196021960319604196051960619607196081960919610196111961219613196141961519616196171961819619196201962119622196231962419625196261962719628196291963019631196321963319634196351963619637196381963919640196411964219643196441964519646196471964819649196501965119652196531965419655196561965719658196591966019661196621966319664196651966619667196681966919670196711967219673196741967519676196771967819679196801968119682196831968419685196861968719688196891969019691196921969319694196951969619697196981969919700197011970219703197041970519706197071970819709197101971119712197131971419715197161971719718197191972019721197221972319724197251972619727197281972919730197311973219733197341973519736197371973819739197401974119742197431974419745197461974719748197491975019751197521975319754197551975619757197581975919760197611976219763197641976519766197671976819769197701977119772197731977419775197761977719778197791978019781197821978319784197851978619787197881978919790197911979219793197941979519796197971979819799198001980119802198031980419805198061980719808198091981019811198121981319814198151981619817198181981919820198211982219823198241982519826198271982819829198301983119832198331983419835198361983719838198391984019841198421984319844198451984619847198481984919850198511985219853198541985519856198571985819859198601986119862198631986419865198661986719868198691987019871198721987319874198751987619877198781987919880198811988219883198841988519886198871988819889198901989119892198931989419895198961989719898198991990019901199021990319904199051990619907199081990919910199111991219913199141991519916199171991819919199201992119922199231992419925199261992719928199291993019931199321993319934199351993619937199381993919940199411994219943199441994519946199471994819949199501995119952199531995419955199561995719958199591996019961199621996319964
  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. // $Id: JwaWinBase.pas,v 1.14 2005/09/06 16:36:50 marquardt Exp $
  43. {$IFNDEF JWA_INCLUDEMODE}
  44. unit JwaWinBase;
  45. {$WEAKPACKAGEUNIT}
  46. {$I jediapilib.inc}
  47. {$STACKFRAMES ON}
  48. interface
  49. uses
  50. {$IFDEF USE_DELPHI_TYPES}
  51. Windows,
  52. {$ENDIF USE_DELPHI_TYPES}
  53. JwaNtStatus, JwaWinNT, JwaWinType;
  54. {$ENDIF !JWA_INCLUDEMODE}
  55. {$IFDEF JWA_INTERFACESECTION}
  56. {$HPPEMIT ''}
  57. {$HPPEMIT '#include "WinBase.h"'}
  58. {$HPPEMIT ''}
  59. const
  60. INVALID_HANDLE_VALUE = HANDLE(-1);
  61. {$EXTERNALSYM INVALID_HANDLE_VALUE}
  62. INVALID_FILE_SIZE = DWORD($FFFFFFFF);
  63. {$EXTERNALSYM INVALID_FILE_SIZE}
  64. INVALID_SET_FILE_POINTER = DWORD(-1);
  65. {$EXTERNALSYM INVALID_SET_FILE_POINTER}
  66. INVALID_FILE_ATTRIBUTES = DWORD(-1);
  67. {$EXTERNALSYM INVALID_FILE_ATTRIBUTES}
  68. FILE_BEGIN = 0;
  69. {$EXTERNALSYM FILE_BEGIN}
  70. FILE_CURRENT = 1;
  71. {$EXTERNALSYM FILE_CURRENT}
  72. FILE_END = 2;
  73. {$EXTERNALSYM FILE_END}
  74. TIME_ZONE_ID_INVALID = DWORD($FFFFFFFF);
  75. {$EXTERNALSYM TIME_ZONE_ID_INVALID}
  76. WAIT_FAILED = DWORD($FFFFFFFF);
  77. {$EXTERNALSYM WAIT_FAILED}
  78. WAIT_OBJECT_0 = STATUS_WAIT_0 + 0;
  79. {$EXTERNALSYM WAIT_OBJECT_0}
  80. WAIT_ABANDONED = STATUS_ABANDONED_WAIT_0 + 0;
  81. {$EXTERNALSYM WAIT_ABANDONED}
  82. WAIT_ABANDONED_0 = STATUS_ABANDONED_WAIT_0 + 0;
  83. {$EXTERNALSYM WAIT_ABANDONED_0}
  84. WAIT_IO_COMPLETION = STATUS_USER_APC;
  85. {$EXTERNALSYM WAIT_IO_COMPLETION}
  86. STILL_ACTIVE = STATUS_PENDING;
  87. {$EXTERNALSYM STILL_ACTIVE}
  88. EXCEPTION_ACCESS_VIOLATION = STATUS_ACCESS_VIOLATION;
  89. {$EXTERNALSYM EXCEPTION_ACCESS_VIOLATION}
  90. EXCEPTION_DATATYPE_MISALIGNMENT = STATUS_DATATYPE_MISALIGNMENT;
  91. {$EXTERNALSYM EXCEPTION_DATATYPE_MISALIGNMENT}
  92. EXCEPTION_BREAKPOINT = STATUS_BREAKPOINT;
  93. {$EXTERNALSYM EXCEPTION_BREAKPOINT}
  94. EXCEPTION_SINGLE_STEP = STATUS_SINGLE_STEP;
  95. {$EXTERNALSYM EXCEPTION_SINGLE_STEP}
  96. EXCEPTION_ARRAY_BOUNDS_EXCEEDED = STATUS_ARRAY_BOUNDS_EXCEEDED;
  97. {$EXTERNALSYM EXCEPTION_ARRAY_BOUNDS_EXCEEDED}
  98. EXCEPTION_FLT_DENORMAL_OPERAND = STATUS_FLOAT_DENORMAL_OPERAND;
  99. {$EXTERNALSYM EXCEPTION_FLT_DENORMAL_OPERAND}
  100. EXCEPTION_FLT_DIVIDE_BY_ZERO = STATUS_FLOAT_DIVIDE_BY_ZERO;
  101. {$EXTERNALSYM EXCEPTION_FLT_DIVIDE_BY_ZERO}
  102. EXCEPTION_FLT_INEXACT_RESULT = STATUS_FLOAT_INEXACT_RESULT;
  103. {$EXTERNALSYM EXCEPTION_FLT_INEXACT_RESULT}
  104. EXCEPTION_FLT_INVALID_OPERATION = STATUS_FLOAT_INVALID_OPERATION;
  105. {$EXTERNALSYM EXCEPTION_FLT_INVALID_OPERATION}
  106. EXCEPTION_FLT_OVERFLOW = STATUS_FLOAT_OVERFLOW;
  107. {$EXTERNALSYM EXCEPTION_FLT_OVERFLOW}
  108. EXCEPTION_FLT_STACK_CHECK = STATUS_FLOAT_STACK_CHECK;
  109. {$EXTERNALSYM EXCEPTION_FLT_STACK_CHECK}
  110. EXCEPTION_FLT_UNDERFLOW = STATUS_FLOAT_UNDERFLOW;
  111. {$EXTERNALSYM EXCEPTION_FLT_UNDERFLOW}
  112. EXCEPTION_INT_DIVIDE_BY_ZERO = STATUS_INTEGER_DIVIDE_BY_ZERO;
  113. {$EXTERNALSYM EXCEPTION_INT_DIVIDE_BY_ZERO}
  114. EXCEPTION_INT_OVERFLOW = STATUS_INTEGER_OVERFLOW;
  115. {$EXTERNALSYM EXCEPTION_INT_OVERFLOW}
  116. EXCEPTION_PRIV_INSTRUCTION = STATUS_PRIVILEGED_INSTRUCTION;
  117. {$EXTERNALSYM EXCEPTION_PRIV_INSTRUCTION}
  118. EXCEPTION_IN_PAGE_ERROR = STATUS_IN_PAGE_ERROR;
  119. {$EXTERNALSYM EXCEPTION_IN_PAGE_ERROR}
  120. EXCEPTION_ILLEGAL_INSTRUCTION = STATUS_ILLEGAL_INSTRUCTION;
  121. {$EXTERNALSYM EXCEPTION_ILLEGAL_INSTRUCTION}
  122. EXCEPTION_NONCONTINUABLE_EXCEPTION = STATUS_NONCONTINUABLE_EXCEPTION;
  123. {$EXTERNALSYM EXCEPTION_NONCONTINUABLE_EXCEPTION}
  124. EXCEPTION_STACK_OVERFLOW = STATUS_STACK_OVERFLOW;
  125. {$EXTERNALSYM EXCEPTION_STACK_OVERFLOW}
  126. EXCEPTION_INVALID_DISPOSITION = STATUS_INVALID_DISPOSITION;
  127. {$EXTERNALSYM EXCEPTION_INVALID_DISPOSITION}
  128. EXCEPTION_GUARD_PAGE = STATUS_GUARD_PAGE_VIOLATION;
  129. {$EXTERNALSYM EXCEPTION_GUARD_PAGE}
  130. EXCEPTION_INVALID_HANDLE = STATUS_INVALID_HANDLE;
  131. {$EXTERNALSYM EXCEPTION_INVALID_HANDLE}
  132. EXCEPTION_POSSIBLE_DEADLOCK = STATUS_POSSIBLE_DEADLOCK;
  133. {$EXTERNALSYM EXCEPTION_POSSIBLE_DEADLOCK}
  134. CONTROL_C_EXIT = STATUS_CONTROL_C_EXIT;
  135. {$EXTERNALSYM CONTROL_C_EXIT}
  136. procedure MoveMemory(Destination, Source: PVOID; Length: SIZE_T);
  137. {$EXTERNALSYM MoveMemory}
  138. procedure CopyMemory(Destination, Source: PVOID; Length: SIZE_T);
  139. {$EXTERNALSYM CopyMemory}
  140. procedure FillMemory(Destination: PVOID; Length: SIZE_T; Fill: BYTE);
  141. {$EXTERNALSYM FillMemory}
  142. procedure ZeroMemory(Destination: PVOID; Length: SIZE_T);
  143. {$EXTERNALSYM ZeroMemory}
  144. //#define SecureZeroMemory RtlSecureZeroMemory TODO
  145. //
  146. // File creation flags must start at the high end since they
  147. // are combined with the attributes
  148. //
  149. const
  150. FILE_FLAG_WRITE_THROUGH = DWORD($80000000);
  151. {$EXTERNALSYM FILE_FLAG_WRITE_THROUGH}
  152. FILE_FLAG_OVERLAPPED = $40000000;
  153. {$EXTERNALSYM FILE_FLAG_OVERLAPPED}
  154. FILE_FLAG_NO_BUFFERING = $20000000;
  155. {$EXTERNALSYM FILE_FLAG_NO_BUFFERING}
  156. FILE_FLAG_RANDOM_ACCESS = $10000000;
  157. {$EXTERNALSYM FILE_FLAG_RANDOM_ACCESS}
  158. FILE_FLAG_SEQUENTIAL_SCAN = $08000000;
  159. {$EXTERNALSYM FILE_FLAG_SEQUENTIAL_SCAN}
  160. FILE_FLAG_DELETE_ON_CLOSE = $04000000;
  161. {$EXTERNALSYM FILE_FLAG_DELETE_ON_CLOSE}
  162. FILE_FLAG_BACKUP_SEMANTICS = $02000000;
  163. {$EXTERNALSYM FILE_FLAG_BACKUP_SEMANTICS}
  164. FILE_FLAG_POSIX_SEMANTICS = $01000000;
  165. {$EXTERNALSYM FILE_FLAG_POSIX_SEMANTICS}
  166. FILE_FLAG_OPEN_REPARSE_POINT = $00200000;
  167. {$EXTERNALSYM FILE_FLAG_OPEN_REPARSE_POINT}
  168. FILE_FLAG_OPEN_NO_RECALL = $00100000;
  169. {$EXTERNALSYM FILE_FLAG_OPEN_NO_RECALL}
  170. FILE_FLAG_FIRST_PIPE_INSTANCE = $00080000;
  171. {$EXTERNALSYM FILE_FLAG_FIRST_PIPE_INSTANCE}
  172. CREATE_NEW = 1;
  173. {$EXTERNALSYM CREATE_NEW}
  174. CREATE_ALWAYS = 2;
  175. {$EXTERNALSYM CREATE_ALWAYS}
  176. OPEN_EXISTING = 3;
  177. {$EXTERNALSYM OPEN_EXISTING}
  178. OPEN_ALWAYS = 4;
  179. {$EXTERNALSYM OPEN_ALWAYS}
  180. TRUNCATE_EXISTING = 5;
  181. {$EXTERNALSYM TRUNCATE_EXISTING}
  182. //
  183. // Define possible return codes from the CopyFileEx callback routine
  184. //
  185. PROGRESS_CONTINUE = 0;
  186. {$EXTERNALSYM PROGRESS_CONTINUE}
  187. PROGRESS_CANCEL = 1;
  188. {$EXTERNALSYM PROGRESS_CANCEL}
  189. PROGRESS_STOP = 2;
  190. {$EXTERNALSYM PROGRESS_STOP}
  191. PROGRESS_QUIET = 3;
  192. {$EXTERNALSYM PROGRESS_QUIET}
  193. //
  194. // Define CopyFileEx callback routine state change values
  195. //
  196. CALLBACK_CHUNK_FINISHED = $00000000;
  197. {$EXTERNALSYM CALLBACK_CHUNK_FINISHED}
  198. CALLBACK_STREAM_SWITCH = $00000001;
  199. {$EXTERNALSYM CALLBACK_STREAM_SWITCH}
  200. //
  201. // Define CopyFileEx option flags
  202. //
  203. COPY_FILE_FAIL_IF_EXISTS = $00000001;
  204. {$EXTERNALSYM COPY_FILE_FAIL_IF_EXISTS}
  205. COPY_FILE_RESTARTABLE = $00000002;
  206. {$EXTERNALSYM COPY_FILE_RESTARTABLE}
  207. COPY_FILE_OPEN_SOURCE_FOR_WRITE = $00000004;
  208. {$EXTERNALSYM COPY_FILE_OPEN_SOURCE_FOR_WRITE}
  209. COPY_FILE_ALLOW_DECRYPTED_DESTINATION = $00000008;
  210. {$EXTERNALSYM COPY_FILE_ALLOW_DECRYPTED_DESTINATION}
  211. //
  212. // Define ReplaceFile option flags
  213. //
  214. REPLACEFILE_WRITE_THROUGH = $00000001;
  215. {$EXTERNALSYM REPLACEFILE_WRITE_THROUGH}
  216. REPLACEFILE_IGNORE_MERGE_ERRORS = $00000002;
  217. {$EXTERNALSYM REPLACEFILE_IGNORE_MERGE_ERRORS}
  218. //
  219. // Define the NamedPipe definitions
  220. //
  221. //
  222. // Define the dwOpenMode values for CreateNamedPipe
  223. //
  224. PIPE_ACCESS_INBOUND = $00000001;
  225. {$EXTERNALSYM PIPE_ACCESS_INBOUND}
  226. PIPE_ACCESS_OUTBOUND = $00000002;
  227. {$EXTERNALSYM PIPE_ACCESS_OUTBOUND}
  228. PIPE_ACCESS_DUPLEX = $00000003;
  229. {$EXTERNALSYM PIPE_ACCESS_DUPLEX}
  230. //
  231. // Define the Named Pipe End flags for GetNamedPipeInfo
  232. //
  233. PIPE_CLIENT_END = $00000000;
  234. {$EXTERNALSYM PIPE_CLIENT_END}
  235. PIPE_SERVER_END = $00000001;
  236. {$EXTERNALSYM PIPE_SERVER_END}
  237. //
  238. // Define the dwPipeMode values for CreateNamedPipe
  239. //
  240. PIPE_WAIT = $00000000;
  241. {$EXTERNALSYM PIPE_WAIT}
  242. PIPE_NOWAIT = $00000001;
  243. {$EXTERNALSYM PIPE_NOWAIT}
  244. PIPE_READMODE_BYTE = $00000000;
  245. {$EXTERNALSYM PIPE_READMODE_BYTE}
  246. PIPE_READMODE_MESSAGE = $00000002;
  247. {$EXTERNALSYM PIPE_READMODE_MESSAGE}
  248. PIPE_TYPE_BYTE = $00000000;
  249. {$EXTERNALSYM PIPE_TYPE_BYTE}
  250. PIPE_TYPE_MESSAGE = $00000004;
  251. {$EXTERNALSYM PIPE_TYPE_MESSAGE}
  252. //
  253. // Define the well known values for CreateNamedPipe nMaxInstances
  254. //
  255. PIPE_UNLIMITED_INSTANCES = 255;
  256. {$EXTERNALSYM PIPE_UNLIMITED_INSTANCES}
  257. //
  258. // Define the Security Quality of Service bits to be passed
  259. // into CreateFile
  260. //
  261. SECURITY_ANONYMOUS = Ord(SecurityAnonymous) shl 16;
  262. {$EXTERNALSYM SECURITY_ANONYMOUS}
  263. SECURITY_IDENTIFICATION = Ord(SecurityIdentification) shl 16;
  264. {$EXTERNALSYM SECURITY_IDENTIFICATION}
  265. SECURITY_IMPERSONATION = Ord(SecurityImpersonation) shl 16;
  266. {$EXTERNALSYM SECURITY_IMPERSONATION}
  267. SECURITY_DELEGATION = Ord(SecurityDelegation) shl 16;
  268. {$EXTERNALSYM SECURITY_DELEGATION}
  269. SECURITY_CONTEXT_TRACKING = $00040000;
  270. {$EXTERNALSYM SECURITY_CONTEXT_TRACKING}
  271. SECURITY_EFFECTIVE_ONLY = $00080000;
  272. {$EXTERNALSYM SECURITY_EFFECTIVE_ONLY}
  273. SECURITY_SQOS_PRESENT = $00100000;
  274. {$EXTERNALSYM SECURITY_SQOS_PRESENT}
  275. SECURITY_VALID_SQOS_FLAGS = $001F0000;
  276. {$EXTERNALSYM SECURITY_VALID_SQOS_FLAGS}
  277. //
  278. // File structures
  279. //
  280. type
  281. LPOVERLAPPED = ^OVERLAPPED;
  282. {$EXTERNALSYM LPOVERLAPPED}
  283. _OVERLAPPED = record
  284. Internal: ULONG_PTR;
  285. InternalHigh: ULONG_PTR;
  286. Union: record
  287. case Integer of
  288. 0: (
  289. Offset: DWORD;
  290. OffsetHigh: DWORD);
  291. 1: (
  292. Pointer: PVOID);
  293. end;
  294. hEvent: HANDLE;
  295. end;
  296. {$EXTERNALSYM _OVERLAPPED}
  297. OVERLAPPED = _OVERLAPPED;
  298. {$EXTERNALSYM OVERLAPPED}
  299. TOverlapped = OVERLAPPED;
  300. POverlapped = LPOVERLAPPED;
  301. PSECURITY_ATTRIBUTES = ^SECURITY_ATTRIBUTES;
  302. {$EXTERNALSYM PSECURITY_ATTRIBUTES}
  303. _SECURITY_ATTRIBUTES = record
  304. nLength: DWORD;
  305. lpSecurityDescriptor: LPVOID;
  306. bInheritHandle: BOOL;
  307. end;
  308. {$EXTERNALSYM _SECURITY_ATTRIBUTES}
  309. SECURITY_ATTRIBUTES = _SECURITY_ATTRIBUTES;
  310. {$EXTERNALSYM SECURITY_ATTRIBUTES}
  311. LPSECURITY_ATTRIBUTES = ^SECURITY_ATTRIBUTES;
  312. {$EXTERNALSYM LPSECURITY_ATTRIBUTES}
  313. TSecurityAttributes = SECURITY_ATTRIBUTES;
  314. PSecurityAttributes = PSECURITY_ATTRIBUTES;
  315. PPROCESS_INFORMATION = ^PROCESS_INFORMATION;
  316. {$EXTERNALSYM PPROCESS_INFORMATION}
  317. _PROCESS_INFORMATION = record
  318. hProcess: HANDLE;
  319. hThread: HANDLE;
  320. dwProcessId: DWORD;
  321. dwThreadId: DWORD;
  322. end;
  323. {$EXTERNALSYM _PROCESS_INFORMATION}
  324. PROCESS_INFORMATION = _PROCESS_INFORMATION;
  325. {$EXTERNALSYM PROCESS_INFORMATION}
  326. LPPROCESS_INFORMATION = ^PROCESS_INFORMATION;
  327. {$EXTERNALSYM LPPROCESS_INFORMATION}
  328. TProcessInformation = PROCESS_INFORMATION;
  329. PProcessInformation = PPROCESS_INFORMATION;
  330. //
  331. // File System time stamps are represented with the following structure:
  332. //
  333. {$IFNDEF JWA_INCLUDEMODE}
  334. LPFILETIME = ^FILETIME;
  335. {$EXTERNALSYM LPFILETIME}
  336. _FILETIME = record
  337. dwLowDateTime: DWORD;
  338. dwHighDateTime: DWORD;
  339. end;
  340. {$EXTERNALSYM _FILETIME}
  341. FILETIME = _FILETIME;
  342. {$EXTERNALSYM FILETIME}
  343. TFileTime = FILETIME;
  344. PFileTime = LPFILETIME;
  345. {$ENDIF !JWA_INCLUDEMODE}
  346. //
  347. // System time is represented with the following structure:
  348. //
  349. LPSYSTEMTIME = ^SYSTEMTIME;
  350. {$EXTERNALSYM LPSYSTEMTIME}
  351. {$IFDEF USE_DELPHI_TYPES}
  352. _SYSTEMTIME = Windows._SYSTEMTIME;
  353. SYSTEMTIME = Windows.SYSTEMTIME;
  354. TSystemTime = Windows.TSystemTime;
  355. PSystemtime = Windows.PSystemTime;
  356. {$ELSE}
  357. _SYSTEMTIME = record
  358. wYear: Word;
  359. wMonth: Word;
  360. wDayOfWeek: Word;
  361. wDay: Word;
  362. wHour: Word;
  363. wMinute: Word;
  364. wSecond: Word;
  365. wMilliseconds: Word;
  366. end;
  367. {$EXTERNALSYM _SYSTEMTIME}
  368. SYSTEMTIME = _SYSTEMTIME;
  369. {$EXTERNALSYM SYSTEMTIME}
  370. TSystemTime = SYSTEMTIME;
  371. PSystemTime = LPSYSTEMTIME;
  372. {$ENDIF USE_DELPHI_TYPES}
  373. PTHREAD_START_ROUTINE = function(lpThreadParameter: LPVOID): DWORD; stdcall;
  374. {$EXTERNALSYM PTHREAD_START_ROUTINE}
  375. LPTHREAD_START_ROUTINE = PTHREAD_START_ROUTINE;
  376. {$EXTERNALSYM LPTHREAD_START_ROUTINE}
  377. TThreadStartRoutine = PTHREAD_START_ROUTINE;
  378. PFIBER_START_ROUTINE = procedure(lpFiberParameter: LPVOID); stdcall;
  379. {$EXTERNALSYM PFIBER_START_ROUTINE}
  380. LPFIBER_START_ROUTINE = PFIBER_START_ROUTINE;
  381. {$EXTERNALSYM LPFIBER_START_ROUTINE}
  382. TFiberStartRoutine = PFIBER_START_ROUTINE;
  383. CRITICAL_SECTION = RTL_CRITICAL_SECTION;
  384. {$EXTERNALSYM CRITICAL_SECTION}
  385. PCRITICAL_SECTION = PRTL_CRITICAL_SECTION;
  386. {$EXTERNALSYM PCRITICAL_SECTION}
  387. LPCRITICAL_SECTION = PRTL_CRITICAL_SECTION;
  388. {$EXTERNALSYM LPCRITICAL_SECTION}
  389. TCriticalSection = CRITICAL_SECTION;
  390. PCriticalSection = PCRITICAL_SECTION;
  391. CRITICAL_SECTION_DEBUG = RTL_CRITICAL_SECTION_DEBUG;
  392. {$EXTERNALSYM CRITICAL_SECTION_DEBUG}
  393. PCRITICAL_SECTION_DEBUG = PRTL_CRITICAL_SECTION_DEBUG;
  394. {$EXTERNALSYM PCRITICAL_SECTION_DEBUG}
  395. LPCRITICAL_SECTION_DEBUG = PRTL_CRITICAL_SECTION_DEBUG;
  396. {$EXTERNALSYM LPCRITICAL_SECTION_DEBUG}
  397. TCriticalSectionDebug = CRITICAL_SECTION_DEBUG;
  398. PCriticalSectionDebug = PCRITICAL_SECTION_DEBUG;
  399. LPLDT_ENTRY = PLDT_ENTRY;
  400. {$EXTERNALSYM LPLDT_ENTRY}
  401. {$IFNDEF JWA_INCLUDEMODE}
  402. PLdtEntry = LPLDT_ENTRY;
  403. {$ENDIF !JWA_INCLUDEMODE}
  404. const
  405. MUTEX_MODIFY_STATE = MUTANT_QUERY_STATE;
  406. {$EXTERNALSYM MUTEX_MODIFY_STATE}
  407. MUTEX_ALL_ACCESS = MUTANT_ALL_ACCESS;
  408. {$EXTERNALSYM MUTEX_ALL_ACCESS}
  409. //
  410. // Serial provider type.
  411. //
  412. SP_SERIALCOMM = DWORD($00000001);
  413. {$EXTERNALSYM SP_SERIALCOMM}
  414. //
  415. // Provider SubTypes
  416. //
  417. PST_UNSPECIFIED = DWORD($00000000);
  418. {$EXTERNALSYM PST_UNSPECIFIED}
  419. PST_RS232 = DWORD($00000001);
  420. {$EXTERNALSYM PST_RS232}
  421. PST_PARALLELPORT = DWORD($00000002);
  422. {$EXTERNALSYM PST_PARALLELPORT}
  423. PST_RS422 = DWORD($00000003);
  424. {$EXTERNALSYM PST_RS422}
  425. PST_RS423 = DWORD($00000004);
  426. {$EXTERNALSYM PST_RS423}
  427. PST_RS449 = DWORD($00000005);
  428. {$EXTERNALSYM PST_RS449}
  429. PST_MODEM = DWORD($00000006);
  430. {$EXTERNALSYM PST_MODEM}
  431. PST_FAX = DWORD($00000021);
  432. {$EXTERNALSYM PST_FAX}
  433. PST_SCANNER = DWORD($00000022);
  434. {$EXTERNALSYM PST_SCANNER}
  435. PST_NETWORK_BRIDGE = DWORD($00000100);
  436. {$EXTERNALSYM PST_NETWORK_BRIDGE}
  437. PST_LAT = DWORD($00000101);
  438. {$EXTERNALSYM PST_LAT}
  439. PST_TCPIP_TELNET = DWORD($00000102);
  440. {$EXTERNALSYM PST_TCPIP_TELNET}
  441. PST_X25 = DWORD($00000103);
  442. {$EXTERNALSYM PST_X25}
  443. //
  444. // Provider capabilities flags.
  445. //
  446. PCF_DTRDSR = DWORD($0001);
  447. {$EXTERNALSYM PCF_DTRDSR}
  448. PCF_RTSCTS = DWORD($0002);
  449. {$EXTERNALSYM PCF_RTSCTS}
  450. PCF_RLSD = DWORD($0004);
  451. {$EXTERNALSYM PCF_RLSD}
  452. PCF_PARITY_CHECK = DWORD($0008);
  453. {$EXTERNALSYM PCF_PARITY_CHECK}
  454. PCF_XONXOFF = DWORD($0010);
  455. {$EXTERNALSYM PCF_XONXOFF}
  456. PCF_SETXCHAR = DWORD($0020);
  457. {$EXTERNALSYM PCF_SETXCHAR}
  458. PCF_TOTALTIMEOUTS = DWORD($0040);
  459. {$EXTERNALSYM PCF_TOTALTIMEOUTS}
  460. PCF_INTTIMEOUTS = DWORD($0080);
  461. {$EXTERNALSYM PCF_INTTIMEOUTS}
  462. PCF_SPECIALCHARS = DWORD($0100);
  463. {$EXTERNALSYM PCF_SPECIALCHARS}
  464. PCF_16BITMODE = DWORD($0200);
  465. {$EXTERNALSYM PCF_16BITMODE}
  466. //
  467. // Comm provider settable parameters.
  468. //
  469. SP_PARITY = DWORD($0001);
  470. {$EXTERNALSYM SP_PARITY}
  471. SP_BAUD = DWORD($0002);
  472. {$EXTERNALSYM SP_BAUD}
  473. SP_DATABITS = DWORD($0004);
  474. {$EXTERNALSYM SP_DATABITS}
  475. SP_STOPBITS = DWORD($0008);
  476. {$EXTERNALSYM SP_STOPBITS}
  477. SP_HANDSHAKING = DWORD($0010);
  478. {$EXTERNALSYM SP_HANDSHAKING}
  479. SP_PARITY_CHECK = DWORD($0020);
  480. {$EXTERNALSYM SP_PARITY_CHECK}
  481. SP_RLSD = DWORD($0040);
  482. {$EXTERNALSYM SP_RLSD}
  483. //
  484. // Settable baud rates in the provider.
  485. //
  486. BAUD_075 = DWORD($00000001);
  487. {$EXTERNALSYM BAUD_075}
  488. BAUD_110 = DWORD($00000002);
  489. {$EXTERNALSYM BAUD_110}
  490. BAUD_134_5 = DWORD($00000004);
  491. {$EXTERNALSYM BAUD_134_5}
  492. BAUD_150 = DWORD($00000008);
  493. {$EXTERNALSYM BAUD_150}
  494. BAUD_300 = DWORD($00000010);
  495. {$EXTERNALSYM BAUD_300}
  496. BAUD_600 = DWORD($00000020);
  497. {$EXTERNALSYM BAUD_600}
  498. BAUD_1200 = DWORD($00000040);
  499. {$EXTERNALSYM BAUD_1200}
  500. BAUD_1800 = DWORD($00000080);
  501. {$EXTERNALSYM BAUD_1800}
  502. BAUD_2400 = DWORD($00000100);
  503. {$EXTERNALSYM BAUD_2400}
  504. BAUD_4800 = DWORD($00000200);
  505. {$EXTERNALSYM BAUD_4800}
  506. BAUD_7200 = DWORD($00000400);
  507. {$EXTERNALSYM BAUD_7200}
  508. BAUD_9600 = DWORD($00000800);
  509. {$EXTERNALSYM BAUD_9600}
  510. BAUD_14400 = DWORD($00001000);
  511. {$EXTERNALSYM BAUD_14400}
  512. BAUD_19200 = DWORD($00002000);
  513. {$EXTERNALSYM BAUD_19200}
  514. BAUD_38400 = DWORD($00004000);
  515. {$EXTERNALSYM BAUD_38400}
  516. BAUD_56K = DWORD($00008000);
  517. {$EXTERNALSYM BAUD_56K}
  518. BAUD_128K = DWORD($00010000);
  519. {$EXTERNALSYM BAUD_128K}
  520. BAUD_115200 = DWORD($00020000);
  521. {$EXTERNALSYM BAUD_115200}
  522. BAUD_57600 = DWORD($00040000);
  523. {$EXTERNALSYM BAUD_57600}
  524. BAUD_USER = DWORD($10000000);
  525. {$EXTERNALSYM BAUD_USER}
  526. //
  527. // Settable Data Bits
  528. //
  529. DATABITS_5 = WORD($0001);
  530. {$EXTERNALSYM DATABITS_5}
  531. DATABITS_6 = WORD($0002);
  532. {$EXTERNALSYM DATABITS_6}
  533. DATABITS_7 = WORD($0004);
  534. {$EXTERNALSYM DATABITS_7}
  535. DATABITS_8 = WORD($0008);
  536. {$EXTERNALSYM DATABITS_8}
  537. DATABITS_16 = WORD($0010);
  538. {$EXTERNALSYM DATABITS_16}
  539. DATABITS_16X = WORD($0020);
  540. {$EXTERNALSYM DATABITS_16X}
  541. //
  542. // Settable Stop and Parity bits.
  543. //
  544. STOPBITS_10 = WORD($0001);
  545. {$EXTERNALSYM STOPBITS_10}
  546. STOPBITS_15 = WORD($0002);
  547. {$EXTERNALSYM STOPBITS_15}
  548. STOPBITS_20 = WORD($0004);
  549. {$EXTERNALSYM STOPBITS_20}
  550. PARITY_NONE = WORD($0100);
  551. {$EXTERNALSYM PARITY_NONE}
  552. PARITY_ODD = WORD($0200);
  553. {$EXTERNALSYM PARITY_ODD}
  554. PARITY_EVEN = WORD($0400);
  555. {$EXTERNALSYM PARITY_EVEN}
  556. PARITY_MARK = WORD($0800);
  557. {$EXTERNALSYM PARITY_MARK}
  558. PARITY_SPACE = WORD($1000);
  559. {$EXTERNALSYM PARITY_SPACE}
  560. type
  561. LPCOMMPROP = ^COMMPROP;
  562. {$EXTERNALSYM LPCOMMPROP}
  563. _COMMPROP = record
  564. wPacketLength: Word;
  565. wPacketVersion: Word;
  566. dwServiceMask: DWORD;
  567. dwReserved1: DWORD;
  568. dwMaxTxQueue: DWORD;
  569. dwMaxRxQueue: DWORD;
  570. dwMaxBaud: DWORD;
  571. dwProvSubType: DWORD;
  572. dwProvCapabilities: DWORD;
  573. dwSettableParams: DWORD;
  574. dwSettableBaud: DWORD;
  575. wSettableData: Word;
  576. wSettableStopParity: Word;
  577. dwCurrentTxQueue: DWORD;
  578. dwCurrentRxQueue: DWORD;
  579. dwProvSpec1: DWORD;
  580. dwProvSpec2: DWORD;
  581. wcProvChar: array [0..0] of WCHAR;
  582. end;
  583. {$EXTERNALSYM _COMMPROP}
  584. COMMPROP = _COMMPROP;
  585. {$EXTERNALSYM COMMPROP}
  586. TCommProp = COMMPROP;
  587. PCommProp = LPCOMMPROP;
  588. //
  589. // Set dwProvSpec1 to COMMPROP_INITIALIZED to indicate that wPacketLength
  590. // is valid before a call to GetCommProperties().
  591. //
  592. const
  593. COMMPROP_INITIALIZED = DWORD($E73CF52E);
  594. {$EXTERNALSYM COMMPROP_INITIALIZED}
  595. //_COMSTAT Flags (bitfield)
  596. COMSTAT_CTS_HOLD = 1 shl 0;
  597. COMSTAT_DSR_HOLD = 1 shl 1;
  598. COMSTAT_RLSD_HOLD = 1 shl 2;
  599. COMSTAT_XOFF_HOLD = 1 shl 3;
  600. COMSTAT_XOFF_SENT = 1 shl 4;
  601. COMSTAT_F_EOF = 1 shl 5;
  602. COMSTAT_F_TXIM = 1 shl 6;
  603. type
  604. LPCOMSTAT = ^COMSTAT;
  605. {$EXTERNALSYM LPCOMSTAT}
  606. _COMSTAT = record
  607. Flags: DWORD;
  608. cbInQue: DWORD;
  609. cbOutQue: DWORD;
  610. end;
  611. {$EXTERNALSYM _COMSTAT}
  612. COMSTAT = _COMSTAT;
  613. {$EXTERNALSYM COMSTAT}
  614. TComstat = COMSTAT;
  615. PComstat = LPCOMSTAT;
  616. //
  617. // DTR Control Flow Values.
  618. //
  619. const
  620. DTR_CONTROL_DISABLE = $00;
  621. {$EXTERNALSYM DTR_CONTROL_DISABLE}
  622. DTR_CONTROL_ENABLE = $01;
  623. {$EXTERNALSYM DTR_CONTROL_ENABLE}
  624. DTR_CONTROL_HANDSHAKE = $02;
  625. {$EXTERNALSYM DTR_CONTROL_HANDSHAKE}
  626. //
  627. // RTS Control Flow Values
  628. //
  629. RTS_CONTROL_DISABLE = $00;
  630. {$EXTERNALSYM RTS_CONTROL_DISABLE}
  631. RTS_CONTROL_ENABLE = $01;
  632. {$EXTERNALSYM RTS_CONTROL_ENABLE}
  633. RTS_CONTROL_HANDSHAKE = $02;
  634. {$EXTERNALSYM RTS_CONTROL_HANDSHAKE}
  635. RTS_CONTROL_TOGGLE = $03;
  636. {$EXTERNALSYM RTS_CONTROL_TOGGLE}
  637. // _DCB.Flags
  638. const
  639. fDcbBinary = 1 shl 0; // Binary Mode (skip EOF check)
  640. fDcbParity = 1 shl 1; // Enable parity checking
  641. fDcbOutxCtsFlow = 1 shl 2; // CTS handshaking on output
  642. fDcbOutxDsrFlow = 1 shl 3; // DSR handshaking on output
  643. fDcbDtrControl = $0030; // DTR Flow control
  644. fDcbDsrSensitivity = 1 shl 6; // DSR Sensitivity
  645. fDcbTXContinueOnXoff = 1 shl 7; // Continue TX when Xoff sent
  646. fDcbOutX = 1 shl 8; // Enable output X-ON/X-OFF
  647. fDcbInX = 1 shl 9; // Enable input X-ON/X-OFF
  648. fDcbErrorChar = 1 shl 10; // Enable Err Replacement
  649. fDcbNull = 1 shl 11; // Enable Null stripping
  650. fDcbRtsControl = $3000; // Rts Flow control
  651. fAbortOnError = 1 shl 14; // Abort all reads and writes on Error
  652. type
  653. LPDCB = ^DCB;
  654. {$EXTERNALSYM LPDCB}
  655. _DCB = record
  656. DCBlength: DWORD; // sizeof(DCB)
  657. BaudRate: DWORD; // Baudrate at which running
  658. Flags: DWORD; // See constants above
  659. wReserved: WORD; // Not currently used
  660. XonLim: WORD; // Transmit X-ON threshold
  661. XoffLim: WORD; // Transmit X-OFF threshold
  662. ByteSize: BYTE; // Number of bits/byte, 4-8
  663. Parity: BYTE; // 0-4=None,Odd,Even,Mark,Space
  664. StopBits: BYTE; // 0,1,2 = 1, 1.5, 2
  665. XonChar: Char; // Tx and Rx X-ON character
  666. XoffChar: Char; // Tx and Rx X-OFF character
  667. ErrorChar: Char; // Error replacement char
  668. EofChar: Char; // End of Input character
  669. EvtChar: Char; // Received Event character
  670. wReserved1: WORD; // Fill for now.
  671. end;
  672. {$EXTERNALSYM _DCB}
  673. DCB = _DCB;
  674. {$EXTERNALSYM DCB}
  675. TDCB = DCB;
  676. PDCB = LPDCB;
  677. LPCOMMTIMEOUTS = ^COMMTIMEOUTS;
  678. {$EXTERNALSYM LPCOMMTIMEOUTS}
  679. _COMMTIMEOUTS = record
  680. ReadIntervalTimeout: DWORD; // Maximum time between read chars.
  681. ReadTotalTimeoutMultiplier: DWORD; // Multiplier of characters.
  682. ReadTotalTimeoutConstant: DWORD; // Constant in milliseconds.
  683. WriteTotalTimeoutMultiplier: DWORD; // Multiplier of characters.
  684. WriteTotalTimeoutConstant: DWORD; // Constant in milliseconds.
  685. end;
  686. {$EXTERNALSYM _COMMTIMEOUTS}
  687. COMMTIMEOUTS = _COMMTIMEOUTS;
  688. {$EXTERNALSYM COMMTIMEOUTS}
  689. TCommTimeouts = COMMTIMEOUTS;
  690. PCommTimeouts = LPCOMMTIMEOUTS;
  691. LPCOMMCONFIG = ^COMMCONFIG;
  692. {$EXTERNALSYM LPCOMMCONFIG}
  693. _COMMCONFIG = record
  694. dwSize: DWORD; // Size of the entire struct
  695. wVersion: Word; // version of the structure
  696. wReserved: Word; // alignment
  697. dcb: DCB; // device control block
  698. dwProviderSubType: DWORD; // ordinal value for identifying
  699. // provider-defined data structure format
  700. dwProviderOffset: DWORD; // Specifies the offset of provider specific
  701. // data field in bytes from the start
  702. dwProviderSize: DWORD; // size of the provider-specific data field
  703. wcProviderData: array [0..0] of WCHAR; // provider-specific data
  704. end;
  705. {$EXTERNALSYM _COMMCONFIG}
  706. COMMCONFIG = _COMMCONFIG;
  707. {$EXTERNALSYM COMMCONFIG}
  708. TCommConfig = COMMCONFIG;
  709. PCommConfig = LPCOMMCONFIG;
  710. LPSYSTEM_INFO = ^SYSTEM_INFO;
  711. {$EXTERNALSYM LPSYSTEM_INFO}
  712. _SYSTEM_INFO = record
  713. case Integer of
  714. 0: (
  715. dwOemId: DWORD); // absolete, do not use
  716. 1: (
  717. wProcessorArchitecture: WORD;
  718. wReserved: WORD;
  719. dwPageSize: DWORD;
  720. lpMinimumApplicationAddress: LPVOID;
  721. lpMaximumApplicationAddress: LPVOID;
  722. dwActiveProcessorMask: DWORD_PTR;
  723. dwNumberOfProcessors: DWORD;
  724. dwProcessorType: DWORD;
  725. dwAllocationGranularity: DWORD;
  726. wProcessorLevel: WORD;
  727. wProcessorRevision: WORD);
  728. end;
  729. {$EXTERNALSYM _SYSTEM_INFO}
  730. SYSTEM_INFO = _SYSTEM_INFO;
  731. {$EXTERNALSYM SYSTEM_INFO}
  732. TSystemInfo = SYSTEM_INFO;
  733. PSystemInfo = LPSYSTEM_INFO;
  734. //
  735. //
  736. function FreeModule(hLibModule: HMODULE): BOOL;
  737. {$EXTERNALSYM FreeModule}
  738. function MakeProcInstance(lpProc: FARPROC; hInstance: HINST): FARPROC;
  739. {$EXTERNALSYM MakeProcInstance}
  740. procedure FreeProcInstance(lpProc: FARPROC);
  741. {$EXTERNALSYM FreeProcInstance}
  742. // Global Memory Flags
  743. const
  744. GMEM_FIXED = $0000;
  745. {$EXTERNALSYM GMEM_FIXED}
  746. GMEM_MOVEABLE = $0002;
  747. {$EXTERNALSYM GMEM_MOVEABLE}
  748. GMEM_NOCOMPACT = $0010;
  749. {$EXTERNALSYM GMEM_NOCOMPACT}
  750. GMEM_NODISCARD = $0020;
  751. {$EXTERNALSYM GMEM_NODISCARD}
  752. GMEM_ZEROINIT = $0040;
  753. {$EXTERNALSYM GMEM_ZEROINIT}
  754. GMEM_MODIFY = $0080;
  755. {$EXTERNALSYM GMEM_MODIFY}
  756. GMEM_DISCARDABLE = $0100;
  757. {$EXTERNALSYM GMEM_DISCARDABLE}
  758. GMEM_NOT_BANKED = $1000;
  759. {$EXTERNALSYM GMEM_NOT_BANKED}
  760. GMEM_SHARE = $2000;
  761. {$EXTERNALSYM GMEM_SHARE}
  762. GMEM_DDESHARE = $2000;
  763. {$EXTERNALSYM GMEM_DDESHARE}
  764. GMEM_NOTIFY = $4000;
  765. {$EXTERNALSYM GMEM_NOTIFY}
  766. GMEM_LOWER = GMEM_NOT_BANKED;
  767. {$EXTERNALSYM GMEM_LOWER}
  768. GMEM_VALID_FLAGS = $7F72;
  769. {$EXTERNALSYM GMEM_VALID_FLAGS}
  770. GMEM_INVALID_HANDLE = $8000;
  771. {$EXTERNALSYM GMEM_INVALID_HANDLE}
  772. GHND = GMEM_MOVEABLE or GMEM_ZEROINIT;
  773. {$EXTERNALSYM GHND}
  774. GPTR = GMEM_FIXED or GMEM_ZEROINIT;
  775. {$EXTERNALSYM GPTR}
  776. function GlobalLRUNewest(h: HANDLE): HANDLE;
  777. {$EXTERNALSYM GlobalLRUNewest}
  778. function GlobalLRUOldest(h: HANDLE): HANDLE;
  779. {$EXTERNALSYM GlobalLRUOldest}
  780. function GlobalDiscard(h: HANDLE): HANDLE;
  781. {$EXTERNALSYM GlobalDiscard}
  782. // Flags returned by GlobalFlags (in addition to GMEM_DISCARDABLE)
  783. const
  784. GMEM_DISCARDED = $4000;
  785. {$EXTERNALSYM GMEM_DISCARDED}
  786. GMEM_LOCKCOUNT = $00FF;
  787. {$EXTERNALSYM GMEM_LOCKCOUNT}
  788. type
  789. LPMEMORYSTATUS = ^MEMORYSTATUS;
  790. {$EXTERNALSYM LPMEMORYSTATUS}
  791. _MEMORYSTATUS = record
  792. dwLength: DWORD;
  793. dwMemoryLoad: DWORD;
  794. dwTotalPhys: SIZE_T;
  795. dwAvailPhys: SIZE_T;
  796. dwTotalPageFile: SIZE_T;
  797. dwAvailPageFile: SIZE_T;
  798. dwTotalVirtual: SIZE_T;
  799. dwAvailVirtual: SIZE_T;
  800. end;
  801. {$EXTERNALSYM _MEMORYSTATUS}
  802. MEMORYSTATUS = _MEMORYSTATUS;
  803. {$EXTERNALSYM MEMORYSTATUS}
  804. TMemoryStatus = MEMORYSTATUS;
  805. PMemoryStatus = LPMEMORYSTATUS;
  806. // Local Memory Flags
  807. const
  808. LMEM_FIXED = $0000;
  809. {$EXTERNALSYM LMEM_FIXED}
  810. LMEM_MOVEABLE = $0002;
  811. {$EXTERNALSYM LMEM_MOVEABLE}
  812. LMEM_NOCOMPACT = $0010;
  813. {$EXTERNALSYM LMEM_NOCOMPACT}
  814. LMEM_NODISCARD = $0020;
  815. {$EXTERNALSYM LMEM_NODISCARD}
  816. LMEM_ZEROINIT = $0040;
  817. {$EXTERNALSYM LMEM_ZEROINIT}
  818. LMEM_MODIFY = $0080;
  819. {$EXTERNALSYM LMEM_MODIFY}
  820. LMEM_DISCARDABLE = $0F00;
  821. {$EXTERNALSYM LMEM_DISCARDABLE}
  822. LMEM_VALID_FLAGS = $0F72;
  823. {$EXTERNALSYM LMEM_VALID_FLAGS}
  824. LMEM_INVALID_HANDLE = $8000;
  825. {$EXTERNALSYM LMEM_INVALID_HANDLE}
  826. LHND = LMEM_MOVEABLE or LMEM_ZEROINIT;
  827. {$EXTERNALSYM LHND}
  828. LPTR = LMEM_FIXED or LMEM_ZEROINIT;
  829. {$EXTERNALSYM LPTR}
  830. NONZEROLHND = LMEM_MOVEABLE;
  831. {$EXTERNALSYM NONZEROLHND}
  832. NONZEROLPTR = LMEM_FIXED;
  833. {$EXTERNALSYM NONZEROLPTR}
  834. function LocalDiscard(h: HLOCAL): HLOCAL;
  835. {$EXTERNALSYM LocalDiscard}
  836. // Flags returned by LocalFlags (in addition to LMEM_DISCARDABLE)
  837. const
  838. LMEM_DISCARDED = $4000;
  839. {$EXTERNALSYM LMEM_DISCARDED}
  840. LMEM_LOCKCOUNT = $00FF;
  841. {$EXTERNALSYM LMEM_LOCKCOUNT}
  842. //
  843. // dwCreationFlag values
  844. //
  845. DEBUG_PROCESS = $00000001;
  846. {$EXTERNALSYM DEBUG_PROCESS}
  847. DEBUG_ONLY_THIS_PROCESS = $00000002;
  848. {$EXTERNALSYM DEBUG_ONLY_THIS_PROCESS}
  849. CREATE_SUSPENDED = $00000004;
  850. {$EXTERNALSYM CREATE_SUSPENDED}
  851. DETACHED_PROCESS = $00000008;
  852. {$EXTERNALSYM DETACHED_PROCESS}
  853. CREATE_NEW_CONSOLE = $00000010;
  854. {$EXTERNALSYM CREATE_NEW_CONSOLE}
  855. NORMAL_PRIORITY_CLASS = $00000020;
  856. {$EXTERNALSYM NORMAL_PRIORITY_CLASS}
  857. IDLE_PRIORITY_CLASS = $00000040;
  858. {$EXTERNALSYM IDLE_PRIORITY_CLASS}
  859. HIGH_PRIORITY_CLASS = $00000080;
  860. {$EXTERNALSYM HIGH_PRIORITY_CLASS}
  861. REALTIME_PRIORITY_CLASS = $00000100;
  862. {$EXTERNALSYM REALTIME_PRIORITY_CLASS}
  863. CREATE_NEW_PROCESS_GROUP = $00000200;
  864. {$EXTERNALSYM CREATE_NEW_PROCESS_GROUP}
  865. CREATE_UNICODE_ENVIRONMENT = $00000400;
  866. {$EXTERNALSYM CREATE_UNICODE_ENVIRONMENT}
  867. CREATE_SEPARATE_WOW_VDM = $00000800;
  868. {$EXTERNALSYM CREATE_SEPARATE_WOW_VDM}
  869. CREATE_SHARED_WOW_VDM = $00001000;
  870. {$EXTERNALSYM CREATE_SHARED_WOW_VDM}
  871. CREATE_FORCEDOS = $00002000;
  872. {$EXTERNALSYM CREATE_FORCEDOS}
  873. BELOW_NORMAL_PRIORITY_CLASS = $00004000;
  874. {$EXTERNALSYM BELOW_NORMAL_PRIORITY_CLASS}
  875. ABOVE_NORMAL_PRIORITY_CLASS = $00008000;
  876. {$EXTERNALSYM ABOVE_NORMAL_PRIORITY_CLASS}
  877. STACK_SIZE_PARAM_IS_A_RESERVATION = $00010000;
  878. {$EXTERNALSYM STACK_SIZE_PARAM_IS_A_RESERVATION}
  879. CREATE_BREAKAWAY_FROM_JOB = $01000000;
  880. {$EXTERNALSYM CREATE_BREAKAWAY_FROM_JOB}
  881. CREATE_PRESERVE_CODE_AUTHZ_LEVEL = $02000000;
  882. {$EXTERNALSYM CREATE_PRESERVE_CODE_AUTHZ_LEVEL}
  883. CREATE_DEFAULT_ERROR_MODE = $04000000;
  884. {$EXTERNALSYM CREATE_DEFAULT_ERROR_MODE}
  885. CREATE_NO_WINDOW = $08000000;
  886. {$EXTERNALSYM CREATE_NO_WINDOW}
  887. PROFILE_USER = $10000000;
  888. {$EXTERNALSYM PROFILE_USER}
  889. PROFILE_KERNEL = $20000000;
  890. {$EXTERNALSYM PROFILE_KERNEL}
  891. PROFILE_SERVER = $40000000;
  892. {$EXTERNALSYM PROFILE_SERVER}
  893. CREATE_IGNORE_SYSTEM_DEFAULT = DWORD($80000000);
  894. {$EXTERNALSYM CREATE_IGNORE_SYSTEM_DEFAULT}
  895. THREAD_PRIORITY_LOWEST = THREAD_BASE_PRIORITY_MIN;
  896. {$EXTERNALSYM THREAD_PRIORITY_LOWEST}
  897. THREAD_PRIORITY_BELOW_NORMAL = THREAD_PRIORITY_LOWEST + 1;
  898. {$EXTERNALSYM THREAD_PRIORITY_BELOW_NORMAL}
  899. THREAD_PRIORITY_NORMAL = 0;
  900. {$EXTERNALSYM THREAD_PRIORITY_NORMAL}
  901. THREAD_PRIORITY_HIGHEST = THREAD_BASE_PRIORITY_MAX;
  902. {$EXTERNALSYM THREAD_PRIORITY_HIGHEST}
  903. THREAD_PRIORITY_ABOVE_NORMAL = THREAD_PRIORITY_HIGHEST - 1;
  904. {$EXTERNALSYM THREAD_PRIORITY_ABOVE_NORMAL}
  905. THREAD_PRIORITY_ERROR_RETURN = MAXLONG;
  906. {$EXTERNALSYM THREAD_PRIORITY_ERROR_RETURN}
  907. THREAD_PRIORITY_TIME_CRITICAL = THREAD_BASE_PRIORITY_LOWRT;
  908. {$EXTERNALSYM THREAD_PRIORITY_TIME_CRITICAL}
  909. THREAD_PRIORITY_IDLE = THREAD_BASE_PRIORITY_IDLE;
  910. {$EXTERNALSYM THREAD_PRIORITY_IDLE}
  911. //
  912. // Debug APIs
  913. //
  914. EXCEPTION_DEBUG_EVENT = 1;
  915. {$EXTERNALSYM EXCEPTION_DEBUG_EVENT}
  916. CREATE_THREAD_DEBUG_EVENT = 2;
  917. {$EXTERNALSYM CREATE_THREAD_DEBUG_EVENT}
  918. CREATE_PROCESS_DEBUG_EVENT = 3;
  919. {$EXTERNALSYM CREATE_PROCESS_DEBUG_EVENT}
  920. EXIT_THREAD_DEBUG_EVENT = 4;
  921. {$EXTERNALSYM EXIT_THREAD_DEBUG_EVENT}
  922. EXIT_PROCESS_DEBUG_EVENT = 5;
  923. {$EXTERNALSYM EXIT_PROCESS_DEBUG_EVENT}
  924. LOAD_DLL_DEBUG_EVENT = 6;
  925. {$EXTERNALSYM LOAD_DLL_DEBUG_EVENT}
  926. UNLOAD_DLL_DEBUG_EVENT = 7;
  927. {$EXTERNALSYM UNLOAD_DLL_DEBUG_EVENT}
  928. OUTPUT_DEBUG_STRING_EVENT = 8;
  929. {$EXTERNALSYM OUTPUT_DEBUG_STRING_EVENT}
  930. RIP_EVENT = 9;
  931. {$EXTERNALSYM RIP_EVENT}
  932. type
  933. LPEXCEPTION_DEBUG_INFO = ^EXCEPTION_DEBUG_INFO;
  934. {$EXTERNALSYM LPEXCEPTION_DEBUG_INFO}
  935. _EXCEPTION_DEBUG_INFO = record
  936. ExceptionRecord: EXCEPTION_RECORD;
  937. dwFirstChance: DWORD;
  938. end;
  939. {$EXTERNALSYM _EXCEPTION_DEBUG_INFO}
  940. EXCEPTION_DEBUG_INFO = _EXCEPTION_DEBUG_INFO;
  941. {$EXTERNALSYM EXCEPTION_DEBUG_INFO}
  942. TExceptionDebugInfo = EXCEPTION_DEBUG_INFO;
  943. PExceptionDebugInfo = LPEXCEPTION_DEBUG_INFO;
  944. LPCREATE_THREAD_DEBUG_INFO = ^CREATE_THREAD_DEBUG_INFO;
  945. {$EXTERNALSYM LPCREATE_THREAD_DEBUG_INFO}
  946. _CREATE_THREAD_DEBUG_INFO = record
  947. hThread: HANDLE;
  948. lpThreadLocalBase: LPVOID;
  949. lpStartAddress: LPTHREAD_START_ROUTINE;
  950. end;
  951. {$EXTERNALSYM _CREATE_THREAD_DEBUG_INFO}
  952. CREATE_THREAD_DEBUG_INFO = _CREATE_THREAD_DEBUG_INFO;
  953. {$EXTERNALSYM CREATE_THREAD_DEBUG_INFO}
  954. TCreateThreadDebugInfo = CREATE_THREAD_DEBUG_INFO;
  955. PCreateThreadDebugInfo = LPCREATE_THREAD_DEBUG_INFO;
  956. LPCREATE_PROCESS_DEBUG_INFO = ^CREATE_PROCESS_DEBUG_INFO;
  957. {$EXTERNALSYM LPCREATE_PROCESS_DEBUG_INFO}
  958. _CREATE_PROCESS_DEBUG_INFO = record
  959. hFile: HANDLE;
  960. hProcess: HANDLE;
  961. hThread: HANDLE;
  962. lpBaseOfImage: LPVOID;
  963. dwDebugInfoFileOffset: DWORD;
  964. nDebugInfoSize: DWORD;
  965. lpThreadLocalBase: LPVOID;
  966. lpStartAddress: LPTHREAD_START_ROUTINE;
  967. lpImageName: LPVOID;
  968. fUnicode: Word;
  969. end;
  970. {$EXTERNALSYM _CREATE_PROCESS_DEBUG_INFO}
  971. CREATE_PROCESS_DEBUG_INFO = _CREATE_PROCESS_DEBUG_INFO;
  972. {$EXTERNALSYM CREATE_PROCESS_DEBUG_INFO}
  973. TCreateProcessDebugInfo = CREATE_PROCESS_DEBUG_INFO;
  974. PCreateProcessDebugInfo = LPCREATE_PROCESS_DEBUG_INFO;
  975. LPEXIT_THREAD_DEBUG_INFO = ^EXIT_THREAD_DEBUG_INFO;
  976. {$EXTERNALSYM LPEXIT_THREAD_DEBUG_INFO}
  977. _EXIT_THREAD_DEBUG_INFO = record
  978. dwExitCode: DWORD;
  979. end;
  980. {$EXTERNALSYM _EXIT_THREAD_DEBUG_INFO}
  981. EXIT_THREAD_DEBUG_INFO = _EXIT_THREAD_DEBUG_INFO;
  982. {$EXTERNALSYM EXIT_THREAD_DEBUG_INFO}
  983. TExitThreadDebugInfo = EXIT_THREAD_DEBUG_INFO;
  984. PExitThreadDebugInfo = LPEXIT_THREAD_DEBUG_INFO;
  985. LPEXIT_PROCESS_DEBUG_INFO = ^EXIT_PROCESS_DEBUG_INFO;
  986. {$EXTERNALSYM LPEXIT_PROCESS_DEBUG_INFO}
  987. _EXIT_PROCESS_DEBUG_INFO = record
  988. dwExitCode: DWORD;
  989. end;
  990. {$EXTERNALSYM _EXIT_PROCESS_DEBUG_INFO}
  991. EXIT_PROCESS_DEBUG_INFO = _EXIT_PROCESS_DEBUG_INFO;
  992. {$EXTERNALSYM EXIT_PROCESS_DEBUG_INFO}
  993. TExitProcessDebugInfo = EXIT_PROCESS_DEBUG_INFO;
  994. PExitProcessDebugInfo = LPEXIT_PROCESS_DEBUG_INFO;
  995. LPLOAD_DLL_DEBUG_INFO = ^LOAD_DLL_DEBUG_INFO;
  996. {$EXTERNALSYM LPLOAD_DLL_DEBUG_INFO}
  997. _LOAD_DLL_DEBUG_INFO = record
  998. hFile: HANDLE;
  999. lpBaseOfDll: LPVOID;
  1000. dwDebugInfoFileOffset: DWORD;
  1001. nDebugInfoSize: DWORD;
  1002. lpImageName: LPVOID;
  1003. fUnicode: Word;
  1004. end;
  1005. {$EXTERNALSYM _LOAD_DLL_DEBUG_INFO}
  1006. LOAD_DLL_DEBUG_INFO = _LOAD_DLL_DEBUG_INFO;
  1007. {$EXTERNALSYM LOAD_DLL_DEBUG_INFO}
  1008. TLoadDllDebugInfo = LOAD_DLL_DEBUG_INFO;
  1009. PLoadDllDebugInfo = LPLOAD_DLL_DEBUG_INFO;
  1010. LPUNLOAD_DLL_DEBUG_INFO = ^UNLOAD_DLL_DEBUG_INFO;
  1011. {$EXTERNALSYM LPUNLOAD_DLL_DEBUG_INFO}
  1012. _UNLOAD_DLL_DEBUG_INFO = record
  1013. lpBaseOfDll: LPVOID;
  1014. end;
  1015. {$EXTERNALSYM _UNLOAD_DLL_DEBUG_INFO}
  1016. UNLOAD_DLL_DEBUG_INFO = _UNLOAD_DLL_DEBUG_INFO;
  1017. {$EXTERNALSYM UNLOAD_DLL_DEBUG_INFO}
  1018. TUnloadDllDebugInfo = UNLOAD_DLL_DEBUG_INFO;
  1019. PUnloadDllDebugInfo = LPUNLOAD_DLL_DEBUG_INFO;
  1020. LPOUTPUT_DEBUG_STRING_INFO = ^OUTPUT_DEBUG_STRING_INFO;
  1021. {$EXTERNALSYM LPOUTPUT_DEBUG_STRING_INFO}
  1022. _OUTPUT_DEBUG_STRING_INFO = record
  1023. lpDebugStringData: LPSTR;
  1024. fUnicode: Word;
  1025. nDebugStringLength: Word;
  1026. end;
  1027. {$EXTERNALSYM _OUTPUT_DEBUG_STRING_INFO}
  1028. OUTPUT_DEBUG_STRING_INFO = _OUTPUT_DEBUG_STRING_INFO;
  1029. {$EXTERNALSYM OUTPUT_DEBUG_STRING_INFO}
  1030. TOutputDebugStringInfo = OUTPUT_DEBUG_STRING_INFO;
  1031. POutputDebugStringInfo = LPOUTPUT_DEBUG_STRING_INFO;
  1032. LPRIP_INFO = ^RIP_INFO;
  1033. {$EXTERNALSYM LPRIP_INFO}
  1034. _RIP_INFO = record
  1035. dwError: DWORD;
  1036. dwType: DWORD;
  1037. end;
  1038. {$EXTERNALSYM _RIP_INFO}
  1039. RIP_INFO = _RIP_INFO;
  1040. {$EXTERNALSYM RIP_INFO}
  1041. TRipInfo = RIP_INFO;
  1042. PRipInfo = LPRIP_INFO;
  1043. LPDEBUG_EVENT = ^DEBUG_EVENT;
  1044. {$EXTERNALSYM LPDEBUG_EVENT}
  1045. _DEBUG_EVENT = record
  1046. dwDebugEventCode: DWORD;
  1047. dwProcessId: DWORD;
  1048. dwThreadId: DWORD;
  1049. case Integer of
  1050. 0: (Exception: EXCEPTION_DEBUG_INFO);
  1051. 1: (CreateThread: CREATE_THREAD_DEBUG_INFO);
  1052. 2: (CreateProcessInfo: CREATE_PROCESS_DEBUG_INFO);
  1053. 3: (ExitThread: EXIT_THREAD_DEBUG_INFO);
  1054. 4: (ExitProcess: EXIT_PROCESS_DEBUG_INFO);
  1055. 5: (LoadDll: LOAD_DLL_DEBUG_INFO);
  1056. 6: (UnloadDll: UNLOAD_DLL_DEBUG_INFO);
  1057. 7: (DebugString: OUTPUT_DEBUG_STRING_INFO);
  1058. 8: (RipInfo: RIP_INFO);
  1059. end;
  1060. {$EXTERNALSYM _DEBUG_EVENT}
  1061. DEBUG_EVENT = _DEBUG_EVENT;
  1062. {$EXTERNALSYM DEBUG_EVENT}
  1063. TDebugEvent = DEBUG_EVENT;
  1064. PDebugEvent = LPDEBUG_EVENT;
  1065. LPCONTEXT = PCONTEXT;
  1066. {$EXTERNALSYM LPCONTEXT}
  1067. LPEXCEPTION_RECORD = PEXCEPTION_RECORD;
  1068. {$EXTERNALSYM LPEXCEPTION_RECORD}
  1069. LPEXCEPTION_POINTERS = PEXCEPTION_POINTERS;
  1070. {$EXTERNALSYM LPEXCEPTION_POINTERS}
  1071. const
  1072. DRIVE_UNKNOWN = 0;
  1073. {$EXTERNALSYM DRIVE_UNKNOWN}
  1074. DRIVE_NO_ROOT_DIR = 1;
  1075. {$EXTERNALSYM DRIVE_NO_ROOT_DIR}
  1076. DRIVE_REMOVABLE = 2;
  1077. {$EXTERNALSYM DRIVE_REMOVABLE}
  1078. DRIVE_FIXED = 3;
  1079. {$EXTERNALSYM DRIVE_FIXED}
  1080. DRIVE_REMOTE = 4;
  1081. {$EXTERNALSYM DRIVE_REMOTE}
  1082. DRIVE_CDROM = 5;
  1083. {$EXTERNALSYM DRIVE_CDROM}
  1084. DRIVE_RAMDISK = 6;
  1085. {$EXTERNALSYM DRIVE_RAMDISK}
  1086. function GetFreeSpace(w: WORD): DWORD;
  1087. {$EXTERNALSYM GetFreeSpace}
  1088. const
  1089. FILE_TYPE_UNKNOWN = $0000;
  1090. {$EXTERNALSYM FILE_TYPE_UNKNOWN}
  1091. FILE_TYPE_DISK = $0001;
  1092. {$EXTERNALSYM FILE_TYPE_DISK}
  1093. FILE_TYPE_CHAR = $0002;
  1094. {$EXTERNALSYM FILE_TYPE_CHAR}
  1095. FILE_TYPE_PIPE = $0003;
  1096. {$EXTERNALSYM FILE_TYPE_PIPE}
  1097. FILE_TYPE_REMOTE = $8000;
  1098. {$EXTERNALSYM FILE_TYPE_REMOTE}
  1099. STD_INPUT_HANDLE = DWORD(-10);
  1100. {$EXTERNALSYM STD_INPUT_HANDLE}
  1101. STD_OUTPUT_HANDLE = DWORD(-11);
  1102. {$EXTERNALSYM STD_OUTPUT_HANDLE}
  1103. STD_ERROR_HANDLE = DWORD(-12);
  1104. {$EXTERNALSYM STD_ERROR_HANDLE}
  1105. NOPARITY = 0;
  1106. {$EXTERNALSYM NOPARITY}
  1107. ODDPARITY = 1;
  1108. {$EXTERNALSYM ODDPARITY}
  1109. EVENPARITY = 2;
  1110. {$EXTERNALSYM EVENPARITY}
  1111. MARKPARITY = 3;
  1112. {$EXTERNALSYM MARKPARITY}
  1113. SPACEPARITY = 4;
  1114. {$EXTERNALSYM SPACEPARITY}
  1115. ONESTOPBIT = 0;
  1116. {$EXTERNALSYM ONESTOPBIT}
  1117. ONE5STOPBITS = 1;
  1118. {$EXTERNALSYM ONE5STOPBITS}
  1119. TWOSTOPBITS = 2;
  1120. {$EXTERNALSYM TWOSTOPBITS}
  1121. IGNORE = 0; // Ignore signal
  1122. {$EXTERNALSYM IGNORE}
  1123. INFINITE = DWORD($FFFFFFFF); // Infinite timeout
  1124. {$EXTERNALSYM INFINITE}
  1125. //
  1126. // Baud rates at which the communication device operates
  1127. //
  1128. CBR_110 = 110;
  1129. {$EXTERNALSYM CBR_110}
  1130. CBR_300 = 300;
  1131. {$EXTERNALSYM CBR_300}
  1132. CBR_600 = 600;
  1133. {$EXTERNALSYM CBR_600}
  1134. CBR_1200 = 1200;
  1135. {$EXTERNALSYM CBR_1200}
  1136. CBR_2400 = 2400;
  1137. {$EXTERNALSYM CBR_2400}
  1138. CBR_4800 = 4800;
  1139. {$EXTERNALSYM CBR_4800}
  1140. CBR_9600 = 9600;
  1141. {$EXTERNALSYM CBR_9600}
  1142. CBR_14400 = 14400;
  1143. {$EXTERNALSYM CBR_14400}
  1144. CBR_19200 = 19200;
  1145. {$EXTERNALSYM CBR_19200}
  1146. CBR_38400 = 38400;
  1147. {$EXTERNALSYM CBR_38400}
  1148. CBR_56000 = 56000;
  1149. {$EXTERNALSYM CBR_56000}
  1150. CBR_57600 = 57600;
  1151. {$EXTERNALSYM CBR_57600}
  1152. CBR_115200 = 115200;
  1153. {$EXTERNALSYM CBR_115200}
  1154. CBR_128000 = 128000;
  1155. {$EXTERNALSYM CBR_128000}
  1156. CBR_256000 = 256000;
  1157. {$EXTERNALSYM CBR_256000}
  1158. //
  1159. // Error Flags
  1160. //
  1161. CE_RXOVER = $0001; // Receive Queue overflow
  1162. {$EXTERNALSYM CE_RXOVER}
  1163. CE_OVERRUN = $0002; // Receive Overrun Error
  1164. {$EXTERNALSYM CE_OVERRUN}
  1165. CE_RXPARITY = $0004; // Receive Parity Error
  1166. {$EXTERNALSYM CE_RXPARITY}
  1167. CE_FRAME = $0008; // Receive Framing error
  1168. {$EXTERNALSYM CE_FRAME}
  1169. CE_BREAK = $0010; // Break Detected
  1170. {$EXTERNALSYM CE_BREAK}
  1171. CE_TXFULL = $0100; // TX Queue is full
  1172. {$EXTERNALSYM CE_TXFULL}
  1173. CE_PTO = $0200; // LPTx Timeout
  1174. {$EXTERNALSYM CE_PTO}
  1175. CE_IOE = $0400; // LPTx I/O Error
  1176. {$EXTERNALSYM CE_IOE}
  1177. CE_DNS = $0800; // LPTx Device not selected
  1178. {$EXTERNALSYM CE_DNS}
  1179. CE_OOP = $1000; // LPTx Out-Of-Paper
  1180. {$EXTERNALSYM CE_OOP}
  1181. CE_MODE = $8000; // Requested mode unsupported
  1182. {$EXTERNALSYM CE_MODE}
  1183. IE_BADID = DWORD(-1); // Invalid or unsupported id
  1184. {$EXTERNALSYM IE_BADID}
  1185. IE_OPEN = DWORD(-2); // Device Already Open
  1186. {$EXTERNALSYM IE_OPEN}
  1187. IE_NOPEN = DWORD(-3); // Device Not Open
  1188. {$EXTERNALSYM IE_NOPEN}
  1189. IE_MEMORY = DWORD(-4); // Unable to allocate queues
  1190. {$EXTERNALSYM IE_MEMORY}
  1191. IE_DEFAULT = DWORD(-5); // Error in default parameters
  1192. {$EXTERNALSYM IE_DEFAULT}
  1193. IE_HARDWARE = DWORD(-10); // Hardware Not Present
  1194. {$EXTERNALSYM IE_HARDWARE}
  1195. IE_BYTESIZE = DWORD(-11); // Illegal Byte Size
  1196. {$EXTERNALSYM IE_BYTESIZE}
  1197. IE_BAUDRATE = DWORD(-12); // Unsupported BaudRate
  1198. {$EXTERNALSYM IE_BAUDRATE}
  1199. //
  1200. // Events
  1201. //
  1202. EV_RXCHAR = $0001; // Any Character received
  1203. {$EXTERNALSYM EV_RXCHAR}
  1204. EV_RXFLAG = $0002; // Received certain character
  1205. {$EXTERNALSYM EV_RXFLAG}
  1206. EV_TXEMPTY = $0004; // Transmitt Queue Empty
  1207. {$EXTERNALSYM EV_TXEMPTY}
  1208. EV_CTS = $0008; // CTS changed state
  1209. {$EXTERNALSYM EV_CTS}
  1210. EV_DSR = $0010; // DSR changed state
  1211. {$EXTERNALSYM EV_DSR}
  1212. EV_RLSD = $0020; // RLSD changed state
  1213. {$EXTERNALSYM EV_RLSD}
  1214. EV_BREAK = $0040; // BREAK received
  1215. {$EXTERNALSYM EV_BREAK}
  1216. EV_ERR = $0080; // Line status error occurred
  1217. {$EXTERNALSYM EV_ERR}
  1218. EV_RING = $0100; // Ring signal detected
  1219. {$EXTERNALSYM EV_RING}
  1220. EV_PERR = $0200; // Printer error occured
  1221. {$EXTERNALSYM EV_PERR}
  1222. EV_RX80FULL = $0400; // Receive buffer is 80 percent full
  1223. {$EXTERNALSYM EV_RX80FULL}
  1224. EV_EVENT1 = $0800; // Provider specific event 1
  1225. {$EXTERNALSYM EV_EVENT1}
  1226. EV_EVENT2 = $1000; // Provider specific event 2
  1227. {$EXTERNALSYM EV_EVENT2}
  1228. //
  1229. // Escape Functions
  1230. //
  1231. SETXOFF = 1; // Simulate XOFF received
  1232. {$EXTERNALSYM SETXOFF}
  1233. SETXON = 2; // Simulate XON received
  1234. {$EXTERNALSYM SETXON}
  1235. SETRTS = 3; // Set RTS high
  1236. {$EXTERNALSYM SETRTS}
  1237. CLRRTS = 4; // Set RTS low
  1238. {$EXTERNALSYM CLRRTS}
  1239. SETDTR = 5; // Set DTR high
  1240. {$EXTERNALSYM SETDTR}
  1241. CLRDTR = 6; // Set DTR low
  1242. {$EXTERNALSYM CLRDTR}
  1243. RESETDEV = 7; // Reset device if possible
  1244. {$EXTERNALSYM RESETDEV}
  1245. SETBREAK = 8; // Set the device break line.
  1246. {$EXTERNALSYM SETBREAK}
  1247. CLRBREAK = 9; // Clear the device break line.
  1248. {$EXTERNALSYM CLRBREAK}
  1249. //
  1250. // PURGE function flags.
  1251. //
  1252. PURGE_TXABORT = $0001; // Kill the pending/current writes to the comm port.
  1253. {$EXTERNALSYM PURGE_TXABORT}
  1254. PURGE_RXABORT = $0002; // Kill the pending/current reads to the comm port.
  1255. {$EXTERNALSYM PURGE_RXABORT}
  1256. PURGE_TXCLEAR = $0004; // Kill the transmit queue if there.
  1257. {$EXTERNALSYM PURGE_TXCLEAR}
  1258. PURGE_RXCLEAR = $0008; // Kill the typeahead buffer if there.
  1259. {$EXTERNALSYM PURGE_RXCLEAR}
  1260. LPTx = $80; // Set if ID is for LPT device
  1261. {$EXTERNALSYM LPTx}
  1262. //
  1263. // Modem Status Flags
  1264. //
  1265. MS_CTS_ON = DWORD($0010);
  1266. {$EXTERNALSYM MS_CTS_ON}
  1267. MS_DSR_ON = DWORD($0020);
  1268. {$EXTERNALSYM MS_DSR_ON}
  1269. MS_RING_ON = DWORD($0040);
  1270. {$EXTERNALSYM MS_RING_ON}
  1271. MS_RLSD_ON = DWORD($0080);
  1272. {$EXTERNALSYM MS_RLSD_ON}
  1273. //
  1274. // WaitSoundState() Constants
  1275. //
  1276. S_QUEUEEMPTY = 0;
  1277. {$EXTERNALSYM S_QUEUEEMPTY}
  1278. S_THRESHOLD = 1;
  1279. {$EXTERNALSYM S_THRESHOLD}
  1280. S_ALLTHRESHOLD = 2;
  1281. {$EXTERNALSYM S_ALLTHRESHOLD}
  1282. //
  1283. // Accent Modes
  1284. //
  1285. S_NORMAL = 0;
  1286. {$EXTERNALSYM S_NORMAL}
  1287. S_LEGATO = 1;
  1288. {$EXTERNALSYM S_LEGATO}
  1289. S_STACCATO = 2;
  1290. {$EXTERNALSYM S_STACCATO}
  1291. //
  1292. // SetSoundNoise() Sources
  1293. //
  1294. S_PERIOD512 = 0; // Freq = N/512 high pitch, less coarse hiss
  1295. {$EXTERNALSYM S_PERIOD512}
  1296. S_PERIOD1024 = 1; // Freq = N/1024
  1297. {$EXTERNALSYM S_PERIOD1024}
  1298. S_PERIOD2048 = 2; // Freq = N/2048 low pitch, more coarse hiss
  1299. {$EXTERNALSYM S_PERIOD2048}
  1300. S_PERIODVOICE = 3; // Source is frequency from voice channel (3)
  1301. {$EXTERNALSYM S_PERIODVOICE}
  1302. S_WHITE512 = 4; // Freq = N/512 high pitch, less coarse hiss
  1303. {$EXTERNALSYM S_WHITE512}
  1304. S_WHITE1024 = 5; // Freq = N/1024
  1305. {$EXTERNALSYM S_WHITE1024}
  1306. S_WHITE2048 = 6; // Freq = N/2048 low pitch, more coarse hiss
  1307. {$EXTERNALSYM S_WHITE2048}
  1308. S_WHITEVOICE = 7; // Source is frequency from voice channel (3)
  1309. {$EXTERNALSYM S_WHITEVOICE}
  1310. S_SERDVNA = DWORD(-1); // Device not available
  1311. {$EXTERNALSYM S_SERDVNA}
  1312. S_SEROFM = DWORD(-2); // Out of memory
  1313. {$EXTERNALSYM S_SEROFM}
  1314. S_SERMACT = DWORD(-3); // Music active
  1315. {$EXTERNALSYM S_SERMACT}
  1316. S_SERQFUL = DWORD(-4); // Queue full
  1317. {$EXTERNALSYM S_SERQFUL}
  1318. S_SERBDNT = DWORD(-5); // Invalid note
  1319. {$EXTERNALSYM S_SERBDNT}
  1320. S_SERDLN = DWORD(-6); // Invalid note length
  1321. {$EXTERNALSYM S_SERDLN}
  1322. S_SERDCC = DWORD(-7); // Invalid note count
  1323. {$EXTERNALSYM S_SERDCC}
  1324. S_SERDTP = DWORD(-8); // Invalid tempo
  1325. {$EXTERNALSYM S_SERDTP}
  1326. S_SERDVL = DWORD(-9); // Invalid volume
  1327. {$EXTERNALSYM S_SERDVL}
  1328. S_SERDMD = DWORD(-10); // Invalid mode
  1329. {$EXTERNALSYM S_SERDMD}
  1330. S_SERDSH = DWORD(-11); // Invalid shape
  1331. {$EXTERNALSYM S_SERDSH}
  1332. S_SERDPT = DWORD(-12); // Invalid pitch
  1333. {$EXTERNALSYM S_SERDPT}
  1334. S_SERDFQ = DWORD(-13); // Invalid frequency
  1335. {$EXTERNALSYM S_SERDFQ}
  1336. S_SERDDR = DWORD(-14); // Invalid duration
  1337. {$EXTERNALSYM S_SERDDR}
  1338. S_SERDSR = DWORD(-15); // Invalid source
  1339. {$EXTERNALSYM S_SERDSR}
  1340. S_SERDST = DWORD(-16); // Invalid state
  1341. {$EXTERNALSYM S_SERDST}
  1342. NMPWAIT_WAIT_FOREVER = DWORD($ffffffff);
  1343. {$EXTERNALSYM NMPWAIT_WAIT_FOREVER}
  1344. NMPWAIT_NOWAIT = $00000001;
  1345. {$EXTERNALSYM NMPWAIT_NOWAIT}
  1346. NMPWAIT_USE_DEFAULT_WAIT = $00000000;
  1347. {$EXTERNALSYM NMPWAIT_USE_DEFAULT_WAIT}
  1348. FS_CASE_IS_PRESERVED = FILE_CASE_PRESERVED_NAMES;
  1349. {$EXTERNALSYM FS_CASE_IS_PRESERVED}
  1350. FS_CASE_SENSITIVE = FILE_CASE_SENSITIVE_SEARCH;
  1351. {$EXTERNALSYM FS_CASE_SENSITIVE}
  1352. FS_UNICODE_STORED_ON_DISK = FILE_UNICODE_ON_DISK;
  1353. {$EXTERNALSYM FS_UNICODE_STORED_ON_DISK}
  1354. FS_PERSISTENT_ACLS = FILE_PERSISTENT_ACLS;
  1355. {$EXTERNALSYM FS_PERSISTENT_ACLS}
  1356. FS_VOL_IS_COMPRESSED = FILE_VOLUME_IS_COMPRESSED;
  1357. {$EXTERNALSYM FS_VOL_IS_COMPRESSED}
  1358. FS_FILE_COMPRESSION = FILE_FILE_COMPRESSION;
  1359. {$EXTERNALSYM FS_FILE_COMPRESSION}
  1360. FS_FILE_ENCRYPTION = FILE_SUPPORTS_ENCRYPTION;
  1361. {$EXTERNALSYM FS_FILE_ENCRYPTION}
  1362. FILE_MAP_COPY = SECTION_QUERY;
  1363. {$EXTERNALSYM FILE_MAP_COPY}
  1364. FILE_MAP_WRITE = SECTION_MAP_WRITE;
  1365. {$EXTERNALSYM FILE_MAP_WRITE}
  1366. FILE_MAP_READ = SECTION_MAP_READ;
  1367. {$EXTERNALSYM FILE_MAP_READ}
  1368. FILE_MAP_ALL_ACCESS = SECTION_ALL_ACCESS;
  1369. {$EXTERNALSYM FILE_MAP_ALL_ACCESS}
  1370. OF_READ = $00000000;
  1371. {$EXTERNALSYM OF_READ}
  1372. OF_WRITE = $00000001;
  1373. {$EXTERNALSYM OF_WRITE}
  1374. OF_READWRITE = $00000002;
  1375. {$EXTERNALSYM OF_READWRITE}
  1376. OF_SHARE_COMPAT = $00000000;
  1377. {$EXTERNALSYM OF_SHARE_COMPAT}
  1378. OF_SHARE_EXCLUSIVE = $00000010;
  1379. {$EXTERNALSYM OF_SHARE_EXCLUSIVE}
  1380. OF_SHARE_DENY_WRITE = $00000020;
  1381. {$EXTERNALSYM OF_SHARE_DENY_WRITE}
  1382. OF_SHARE_DENY_READ = $00000030;
  1383. {$EXTERNALSYM OF_SHARE_DENY_READ}
  1384. OF_SHARE_DENY_NONE = $00000040;
  1385. {$EXTERNALSYM OF_SHARE_DENY_NONE}
  1386. OF_PARSE = $00000100;
  1387. {$EXTERNALSYM OF_PARSE}
  1388. OF_DELETE = $00000200;
  1389. {$EXTERNALSYM OF_DELETE}
  1390. OF_VERIFY = $00000400;
  1391. {$EXTERNALSYM OF_VERIFY}
  1392. OF_CANCEL = $00000800;
  1393. {$EXTERNALSYM OF_CANCEL}
  1394. OF_CREATE = $00001000;
  1395. {$EXTERNALSYM OF_CREATE}
  1396. OF_PROMPT = $00002000;
  1397. {$EXTERNALSYM OF_PROMPT}
  1398. OF_EXIST = $00004000;
  1399. {$EXTERNALSYM OF_EXIST}
  1400. OF_REOPEN = $00008000;
  1401. {$EXTERNALSYM OF_REOPEN}
  1402. OFS_MAXPATHNAME = 128;
  1403. {$EXTERNALSYM OFS_MAXPATHNAME}
  1404. type
  1405. LPOFSTRUCT = ^OFSTRUCT;
  1406. {$EXTERNALSYM LPOFSTRUCT}
  1407. _OFSTRUCT = record
  1408. cBytes: Byte;
  1409. fFixedDisk: Byte;
  1410. nErrCode: Word;
  1411. Reserved1: Word;
  1412. Reserved2: Word;
  1413. szPathName: array [0..OFS_MAXPATHNAME - 1] of CHAR;
  1414. end;
  1415. {$EXTERNALSYM _OFSTRUCT}
  1416. OFSTRUCT = _OFSTRUCT;
  1417. {$EXTERNALSYM OFSTRUCT}
  1418. TOfStruct = OFSTRUCT;
  1419. POfStruct = LPOFSTRUCT;
  1420. // 64 bit interlocked functions, donated by Will DeWitt Jr.
  1421. function InterlockedCompareExchange64(var Destination: LONGLONG; Exchange, Comperand: LONGLONG): LONGLONG; stdcall;
  1422. {$EXTERNALSYM InterlockedCompareExchange64}
  1423. function InterlockedAnd64(var Destination: LONGLONG; Value: LONGLONG): LONGLONG;
  1424. {$EXTERNALSYM InterlockedAnd64}
  1425. function InterlockedOr64(var Destination: LONGLONG; Value: LONGLONG): LONGLONG;
  1426. {$EXTERNALSYM InterlockedOr64}
  1427. function InterlockedXor64(var Destination: LONGLONG; Value: LONGLONG): LONGLONG;
  1428. {$EXTERNALSYM InterlockedXor64}
  1429. function InterlockedIncrement64(var Addend: LONGLONG): LONGLONG;
  1430. {$EXTERNALSYM InterlockedIncrement64}
  1431. function InterlockedDecrement64(var Addend: LONGLONG): LONGLONG;
  1432. {$EXTERNALSYM InterlockedDecrement}
  1433. function InterlockedExchange64(var Target: LONGLONG; Value: LONGLONG): LONGLONG;
  1434. {$EXTERNALSYM InterlockedExchange64}
  1435. function InterlockedExchangeAdd64(var Addend: LONGLONG; Value: LONGLONG): LONGLONG;
  1436. {$EXTERNALSYM InterlockedExchangeAdd64}
  1437. //
  1438. // The Risc compilers support intrinsic functions for interlocked
  1439. // increment, decrement, and exchange.
  1440. //
  1441. function InterlockedIncrement(var lpAddend: LONG): LONG; stdcall;
  1442. {$EXTERNALSYM InterlockedIncrement}
  1443. function InterlockedDecrement(var lpAddend: LONG): LONG; stdcall;
  1444. {$EXTERNALSYM InterlockedDecrement}
  1445. function InterlockedExchange(var Target: LONG; Value: LONG): LONG; stdcall;
  1446. {$EXTERNALSYM InterlockedExchange}
  1447. function InterlockedExchangePointer(var Target: PVOID; Value: PVOID): PVOID;
  1448. {$EXTERNALSYM InterlockedExchangePointer}
  1449. function InterlockedExchangeAdd(var Addend: LONG; Value: LONG): LONG; stdcall;
  1450. {$EXTERNALSYM InterlockedExchangeAdd}
  1451. function InterlockedCompareExchange(var Destination: LONG; Exchange: LONG;
  1452. Comperand: LONG): LONG; stdcall;
  1453. {$EXTERNALSYM InterlockedCompareExchange}
  1454. function InterlockedCompareExchangePointer(var Destination: PVOID;
  1455. Exchange, Comperand: PVOID): PVOID;
  1456. {$EXTERNALSYM InterlockedCompareExchangePointer}
  1457. {
  1458. #define InterlockedIncrementAcquire InterlockedIncrement
  1459. #define InterlockedIncrementRelease InterlockedIncrement
  1460. #define InterlockedDecrementAcquire InterlockedDecrement
  1461. #define InterlockedDecrementRelease InterlockedDecrement
  1462. #define InterlockedIncrementAcquire InterlockedIncrement
  1463. #define InterlockedIncrementRelease InterlockedIncrement
  1464. #define InterlockedCompareExchangeAcquire InterlockedCompareExchange
  1465. #define InterlockedCompareExchangeRelease InterlockedCompareExchange
  1466. #define InterlockedCompareExchangeAcquire64 InterlockedCompareExchange64
  1467. #define InterlockedCompareExchangeRelease64 InterlockedCompareExchange64
  1468. }
  1469. procedure InitializeSListHead(ListHead: PSLIST_HEADER); stdcall;
  1470. {$EXTERNALSYM InitializeSListHead}
  1471. function InterlockedPopEntrySList(ListHead: PSLIST_HEADER): PSLIST_ENTRY; stdcall;
  1472. {$EXTERNALSYM InterlockedPopEntrySList}
  1473. function InterlockedPushEntrySList(ListHead: PSLIST_HEADER; ListEntry: PSLIST_ENTRY): PSLIST_ENTRY; stdcall;
  1474. {$EXTERNALSYM InterlockedPushEntrySList}
  1475. function InterlockedFlushSList(ListHead: PSLIST_HEADER): PSLIST_ENTRY; stdcall;
  1476. {$EXTERNALSYM InterlockedFlushSList}
  1477. function QueryDepthSList(ListHead: PSLIST_HEADER): USHORT; stdcall;
  1478. {$EXTERNALSYM QueryDepthSList}
  1479. function FreeResource(hResData: HGLOBAL): BOOL; stdcall;
  1480. {$EXTERNALSYM FreeResource}
  1481. function LockResource(hResData: HGLOBAL): LPVOID; stdcall;
  1482. {$EXTERNALSYM LockResource}
  1483. function UnlockResource(hResData: HANDLE): BOOL;
  1484. {$EXTERNALSYM UnlockResource}
  1485. const
  1486. MAXINTATOM = $C000;
  1487. {$EXTERNALSYM MAXINTATOM}
  1488. INVALID_ATOM = ATOM(0);
  1489. {$EXTERNALSYM INVALID_ATOM}
  1490. type
  1491. MAKEINTATOMA = PAnsiChar;
  1492. MAKEINTATOMW = PWideChar;
  1493. {$IFDEF UNICODE}
  1494. MAKEINTATOM = MAKEINTATOMW;
  1495. {$EXTERNALSYM MAKEINTATOM}
  1496. {$ELSE}
  1497. MAKEINTATOM = MAKEINTATOMA;
  1498. {$EXTERNALSYM MAKEINTATOM}
  1499. {$ENDIF UNICODE}
  1500. function FreeLibrary(hLibModule: HMODULE): BOOL; stdcall;
  1501. {$EXTERNALSYM FreeLibrary}
  1502. procedure FreeLibraryAndExitThread(hLibModule: HMODULE; dwExitCode: DWORD); stdcall;
  1503. {$EXTERNALSYM FreeLibraryAndExitThread}
  1504. function DisableThreadLibraryCalls(hLibModule: HMODULE): BOOL; stdcall;
  1505. {$EXTERNALSYM DisableThreadLibraryCalls}
  1506. {$IFNDEF JWA_INCLUDEMODE}
  1507. function GetProcAddress(hModule: HMODULE; lpProcName: LPCSTR): FARPROC; stdcall;
  1508. {$EXTERNALSYM GetProcAddress}
  1509. {$ENDIF !JWA_INCLUDEMODE}
  1510. function GetVersion: DWORD; stdcall;
  1511. {$EXTERNALSYM GetVersion)}
  1512. function GlobalAlloc(uFlags: UINT; dwBytes: SIZE_T): HGLOBAL; stdcall;
  1513. {$EXTERNALSYM GlobalAlloc}
  1514. function GlobalReAlloc(hMem: HGLOBAL; dwBytes: SIZE_T; uFlags: UINT): HGLOBAL; stdcall;
  1515. {$EXTERNALSYM GlobalReAlloc}
  1516. function GlobalSize(hMem: HGLOBAL): SIZE_T; stdcall;
  1517. {$EXTERNALSYM GlobalSize}
  1518. function GlobalFlags(hMem: HGLOBAL): UINT; stdcall;
  1519. {$EXTERNALSYM GlobalFlags}
  1520. function GlobalLock(hMem: HGLOBAL): LPVOID; stdcall;
  1521. {$EXTERNALSYM GlobalLock}
  1522. //!!!MWH My version win31 = DWORD WINAPI GlobalHandle(UINT)
  1523. function GlobalHandle(pMem: LPCVOID): HGLOBAL; stdcall;
  1524. {$EXTERNALSYM GlobalHandle}
  1525. function GlobalUnlock(hMem: HGLOBAL): BOOL; stdcall;
  1526. {$EXTERNALSYM GlobalUnlock}
  1527. function GlobalFree(hMem: HGLOBAL): HGLOBAL; stdcall;
  1528. {$EXTERNALSYM GlobalFree}
  1529. function GlobalCompact(dwMinFree: DWORD): SIZE_T; stdcall;
  1530. {$EXTERNALSYM GlobalCompact}
  1531. procedure GlobalFix(hMem: HGLOBAL); stdcall;
  1532. {$EXTERNALSYM GlobalFix}
  1533. procedure GlobalUnfix(hMem: HGLOBAL); stdcall;
  1534. {$EXTERNALSYM GlobalUnfix}
  1535. function GlobalWire(hMem: HGLOBAL): LPVOID; stdcall;
  1536. {$EXTERNALSYM GlobalWire}
  1537. function GlobalUnWire(hMem: HGLOBAL): BOOL; stdcall;
  1538. {$EXTERNALSYM GlobalUnWire}
  1539. procedure GlobalMemoryStatus(var lpBuffer: MEMORYSTATUS); stdcall;
  1540. {$EXTERNALSYM GlobalMemoryStatus}
  1541. type
  1542. LPMEMORYSTATUSEX = ^MEMORYSTATUSEX;
  1543. {$EXTERNALSYM LPMEMORYSTATUSEX}
  1544. _MEMORYSTATUSEX = record
  1545. dwLength: DWORD;
  1546. dwMemoryLoad: DWORD;
  1547. ullTotalPhys: DWORDLONG;
  1548. ullAvailPhys: DWORDLONG;
  1549. ullTotalPageFile: DWORDLONG;
  1550. ullAvailPageFile: DWORDLONG;
  1551. ullTotalVirtual: DWORDLONG;
  1552. ullAvailVirtual: DWORDLONG;
  1553. ullAvailExtendedVirtual: DWORDLONG;
  1554. end;
  1555. {$EXTERNALSYM _MEMORYSTATUSEX}
  1556. MEMORYSTATUSEX = _MEMORYSTATUSEX;
  1557. {$EXTERNALSYM MEMORYSTATUSEX}
  1558. TMemoryStatusEx = MEMORYSTATUSEX;
  1559. PMemoryStatusEx = LPMEMORYSTATUSEX;
  1560. function GlobalMemoryStatusEx(var lpBuffer: MEMORYSTATUSEX): BOOL; stdcall;
  1561. {$EXTERNALSYM GlobalMemoryStatusEx}
  1562. function LocalAlloc(uFlags: UINT; uBytes: SIZE_T): HLOCAL; stdcall;
  1563. {$EXTERNALSYM LocalAlloc}
  1564. function LocalReAlloc(hMem: HLOCAL; uBytes: SIZE_T; uFlags: UINT): HLOCAL; stdcall;
  1565. {$EXTERNALSYM LocalReAlloc}
  1566. function LocalLock(hMem: HLOCAL): LPVOID; stdcall;
  1567. {$EXTERNALSYM LocalLock}
  1568. function LocalHandle(pMem: LPCVOID): HLOCAL; stdcall;
  1569. {$EXTERNALSYM LocalHandle}
  1570. function LocalUnlock(hMem: HLOCAL): BOOL; stdcall;
  1571. {$EXTERNALSYM LocalUnlock}
  1572. function LocalSize(hMem: HLOCAL): SIZE_T; stdcall;
  1573. {$EXTERNALSYM LocalSize}
  1574. function LocalFlags(hMem: HLOCAL): UINT; stdcall;
  1575. {$EXTERNALSYM LocalFlags}
  1576. function LocalFree(hMem: HLOCAL): HLOCAL; stdcall;
  1577. {$EXTERNALSYM LocalFree}
  1578. function LocalShrink(hMem: HLOCAL; cbNewSize: UINT): SIZE_T; stdcall;
  1579. {$EXTERNALSYM LocalShrink}
  1580. function LocalCompact(uMinFree: UINT): SIZE_T; stdcall;
  1581. {$EXTERNALSYM LocalCompact}
  1582. function FlushInstructionCache(hProcess: HANDLE; lpBaseAddress: LPCVOID;
  1583. dwSize: DWORD): BOOL; stdcall;
  1584. {$EXTERNALSYM FlushInstructionCache}
  1585. function VirtualAlloc(lpAddress: LPVOID; dwSize: SIZE_T; flAllocationType: DWORD;
  1586. flProtect: DWORD): LPVOID; stdcall;
  1587. {$EXTERNALSYM VirtualAlloc}
  1588. function VirtualFree(lpAddress: LPVOID; dwSize: SIZE_T; dwFreeType: DWORD): BOOL; stdcall;
  1589. {$EXTERNALSYM VirtualFree}
  1590. function VirtualProtect(lpAddress: LPVOID; dwSize: SIZE_T; flNewProtect: DWORD;
  1591. lpflOldProtect: PDWORD): BOOL; stdcall;
  1592. {$EXTERNALSYM VirtualProtect}
  1593. function VirtualQuery(lpAddress: LPCVOID; var lpBuffer: MEMORY_BASIC_INFORMATION;
  1594. dwLength: DWORD): DWORD; stdcall;
  1595. {$EXTERNALSYM VirtualQuery}
  1596. function VirtualAllocEx(hProcess: HANDLE; lpAddress: LPVOID; dwSize: SIZE_T;
  1597. flAllocationType: DWORD; flProtect: DWORD): LPVOID; stdcall;
  1598. {$EXTERNALSYM VirtualAllocEx}
  1599. function GetWriteWatch(dwFlags: DWORD; lpBaseAddress: PVOID;
  1600. dwRegionSize: SIZE_T; var lpAddresses: PVOID; var lpdwCount: ULONG_PTR;
  1601. var lpdwGranularity: ULONG): UINT; stdcall;
  1602. {$EXTERNALSYM GetWriteWatch}
  1603. function ResetWriteWatch(lpBaseAddress: LPVOID; dwRegionSize: SIZE_T): UINT; stdcall;
  1604. {$EXTERNALSYM ResetWriteWatch}
  1605. function GetLargePageMinimum: SIZE_T; stdcall;
  1606. {$EXTERNALSYM GetLargePageMinimum}
  1607. function VirtualFreeEx(hProcess: HANDLE; lpAddress: LPVOID; dwSize: SIZE_T;
  1608. dwFreeType: DWORD): BOOL; stdcall;
  1609. {$EXTERNALSYM VirtualFreeEx}
  1610. function VirtualProtectEx(hProcess: HANDLE; lpAddress: LPVOID; dwSize: SIZE_T;
  1611. flNewProtect: DWORD; lpflOldProtect: PDWORD): BOOL; stdcall;
  1612. {$EXTERNALSYM VirtualProtectEx}
  1613. function VirtualQueryEx(hProcess: HANDLE; lpAddress: LPCVOID;
  1614. var lpBuffer: MEMORY_BASIC_INFORMATION; dwLength: DWORD): DWORD; stdcall;
  1615. {$EXTERNALSYM VirtualQueryEx}
  1616. function HeapCreate(flOptions: DWORD; dwInitialSize: SIZE_T;
  1617. dwMaximumSize: SIZE_T): HANDLE; stdcall;
  1618. {$EXTERNALSYM HeapCreate}
  1619. function HeapDestroy(hHeap: HANDLE): BOOL; stdcall;
  1620. {$EXTERNALSYM HeapDestroy}
  1621. function HeapAlloc(hHeap: HANDLE; dwFlags: DWORD; dwBytes: SIZE_T): LPVOID; stdcall;
  1622. {$EXTERNALSYM HeapAlloc}
  1623. function HeapReAlloc(hHeap: HANDLE; dwFlags: DWORD; lpMem: LPVOID; dwBytes: SIZE_T): LPVOID; stdcall;
  1624. {$EXTERNALSYM HeapReAlloc}
  1625. function HeapFree(hHeap: HANDLE; dwFlags: DWORD; lpMem: LPVOID): BOOL; stdcall;
  1626. {$EXTERNALSYM HeapFree}
  1627. function HeapSize(hHeap: HANDLE; dwFlags: DWORD; lpMem: LPCVOID): SIZE_T; stdcall;
  1628. {$EXTERNALSYM HeapSize}
  1629. function HeapValidate(hHeap: HANDLE; dwFlags: DWORD; lpMem: LPCVOID): BOOL; stdcall;
  1630. {$EXTERNALSYM HeapValidate}
  1631. function HeapCompact(hHeap: HANDLE; dwFlags: DWORD): SIZE_T; stdcall;
  1632. {$EXTERNALSYM HeapCompact}
  1633. function GetProcessHeap: HANDLE; stdcall;
  1634. {$EXTERNALSYM GetProcessHeap)}
  1635. function GetProcessHeaps(NumberOfHeaps: DWORD; var ProcessHeaps: HANDLE): DWORD; stdcall;
  1636. {$EXTERNALSYM GetProcessHeaps}
  1637. type
  1638. PPROCESS_HEAP_ENTRY = ^PROCESS_HEAP_ENTRY;
  1639. {$EXTERNALSYM PPROCESS_HEAP_ENTRY}
  1640. _PROCESS_HEAP_ENTRY = record
  1641. lpData: PVOID;
  1642. cbData: DWORD;
  1643. cbOverhead: BYTE;
  1644. iRegionIndex: BYTE;
  1645. wFlags: WORD;
  1646. case Integer of
  1647. 0: (
  1648. hMem: HANDLE;
  1649. dwReserved: array [0..2] of DWORD);
  1650. 1: (
  1651. dwComittedSize: DWORD;
  1652. dwUnComittedSize: DWORD;
  1653. lpFirstBlock: LPVOID;
  1654. lpLastBlock: LPVOID);
  1655. end;
  1656. {$EXTERNALSYM _PROCESS_HEAP_ENTRY}
  1657. PROCESS_HEAP_ENTRY = _PROCESS_HEAP_ENTRY;
  1658. {$EXTERNALSYM PROCESS_HEAP_ENTRY}
  1659. LPPROCESS_HEAP_ENTRY = ^PROCESS_HEAP_ENTRY;
  1660. {$EXTERNALSYM LPPROCESS_HEAP_ENTRY}
  1661. TProcessHeapEntry = PROCESS_HEAP_ENTRY;
  1662. PProcessHeapEntry = PPROCESS_HEAP_ENTRY;
  1663. const
  1664. PROCESS_HEAP_REGION = $0001;
  1665. {$EXTERNALSYM PROCESS_HEAP_REGION}
  1666. PROCESS_HEAP_UNCOMMITTED_RANGE = $0002;
  1667. {$EXTERNALSYM PROCESS_HEAP_UNCOMMITTED_RANGE}
  1668. PROCESS_HEAP_ENTRY_BUSY = $0004;
  1669. {$EXTERNALSYM PROCESS_HEAP_ENTRY_BUSY}
  1670. PROCESS_HEAP_ENTRY_MOVEABLE = $0010;
  1671. {$EXTERNALSYM PROCESS_HEAP_ENTRY_MOVEABLE}
  1672. PROCESS_HEAP_ENTRY_DDESHARE = $0020;
  1673. {$EXTERNALSYM PROCESS_HEAP_ENTRY_DDESHARE}
  1674. function HeapLock(hHeap: HANDLE): BOOL; stdcall;
  1675. {$EXTERNALSYM HeapLock}
  1676. function HeapUnlock(hHeap: HANDLE): BOOL; stdcall;
  1677. {$EXTERNALSYM HeapUnlock}
  1678. function HeapWalk(hHeap: HANDLE; var lpEntry: PROCESS_HEAP_ENTRY): BOOL; stdcall;
  1679. {$EXTERNALSYM HeapWalk}
  1680. function HeapSetInformation(HeapHandle: HANDLE; HeapInformationClass: HEAP_INFORMATION_CLASS;
  1681. HeapInformation: PVOID; HeapInformationLength: SIZE_T): BOOL; stdcall;
  1682. {$EXTERNALSYM HeapSetInformation}
  1683. function HeapQueryInformation(HeapHandle: HANDLE; HeapInformationClass: HEAP_INFORMATION_CLASS;
  1684. HeapInformation: PVOID; HeapInformationLength: SIZE_T; ReturnLength: PSIZE_T): BOOL; stdcall;
  1685. {$EXTERNALSYM HeapQueryInformation}
  1686. // GetBinaryType return values.
  1687. const
  1688. SCS_32BIT_BINARY = 0;
  1689. {$EXTERNALSYM SCS_32BIT_BINARY}
  1690. SCS_DOS_BINARY = 1;
  1691. {$EXTERNALSYM SCS_DOS_BINARY}
  1692. SCS_WOW_BINARY = 2;
  1693. {$EXTERNALSYM SCS_WOW_BINARY}
  1694. SCS_PIF_BINARY = 3;
  1695. {$EXTERNALSYM SCS_PIF_BINARY}
  1696. SCS_POSIX_BINARY = 4;
  1697. {$EXTERNALSYM SCS_POSIX_BINARY}
  1698. SCS_OS216_BINARY = 5;
  1699. {$EXTERNALSYM SCS_OS216_BINARY}
  1700. SCS_64BIT_BINARY = 6;
  1701. {$EXTERNALSYM SCS_64BIT_BINARY}
  1702. SCS_THIS_PLATFORM_BINARY = SCS_32BIT_BINARY;
  1703. {$EXTERNALSYM SCS_THIS_PLATFORM_BINARY}
  1704. function GetBinaryTypeA(lpApplicationName: LPCSTR; var lpBinaryType: DWORD): BOOL; stdcall;
  1705. {$EXTERNALSYM GetBinaryTypeA}
  1706. function GetBinaryTypeW(lpApplicationName: LPCWSTR; var lpBinaryType: DWORD): BOOL; stdcall;
  1707. {$EXTERNALSYM GetBinaryTypeW}
  1708. function GetBinaryType(lpApplicationName: LPCTSTR; var lpBinaryType: DWORD): BOOL; stdcall;
  1709. {$EXTERNALSYM GetBinaryType}
  1710. function GetShortPathNameA(lpszLongPath: LPCSTR; lpszShortPath: LPSTR;
  1711. cchBuffer: DWORD): DWORD; stdcall;
  1712. {$EXTERNALSYM GetShortPathNameA}
  1713. function GetShortPathNameW(lpszLongPath: LPCWSTR; lpszShortPath: LPWSTR;
  1714. cchBuffer: DWORD): DWORD; stdcall;
  1715. {$EXTERNALSYM GetShortPathNameW}
  1716. function GetShortPathName(lpszLongPath: LPCTSTR; lpszShortPath: LPTSTR;
  1717. cchBuffer: DWORD): DWORD; stdcall;
  1718. {$EXTERNALSYM GetShortPathName}
  1719. function GetLongPathNameA(lpszShortPath: LPCSTR; lpszLongPath: LPSTR;
  1720. cchBuffer: DWORD): DWORD; stdcall;
  1721. {$EXTERNALSYM GetLongPathNameA}
  1722. function GetLongPathNameW(lpszShortPath: LPCWSTR; lpszLongPath: LPWSTR;
  1723. cchBuffer: DWORD): DWORD; stdcall;
  1724. {$EXTERNALSYM GetLongPathNameW}
  1725. function GetLongPathName(lpszShortPath: LPCTSTR; lpszLongPath: LPTSTR;
  1726. cchBuffer: DWORD): DWORD; stdcall;
  1727. {$EXTERNALSYM GetLongPathName}
  1728. function GetProcessAffinityMask(hProcess: HANDLE;
  1729. var lpProcessAffinityMask, lpSystemAffinityMask: DWORD_PTR): BOOL; stdcall;
  1730. {$EXTERNALSYM GetProcessAffinityMask}
  1731. function SetProcessAffinityMask(hProcess: HANDLE;
  1732. dwProcessAffinityMask: DWORD_PTR): BOOL; stdcall;
  1733. {$EXTERNALSYM SetProcessAffinityMask}
  1734. function GetProcessHandleCount(hProcess: HANDLE; out pdwHandleCount: DWORD): BOOL; stdcall;
  1735. {$EXTERNALSYM GetProcessHandleCount}
  1736. function GetProcessTimes(hProcess: HANDLE; var lpCreationTime, lpExitTime,
  1737. lpKernelTime, lpUserTime: FILETIME): BOOL; stdcall;
  1738. {$EXTERNALSYM GetProcessTimes}
  1739. function GetProcessIoCounters(hProcess: HANDLE; var lpIoCounters: IO_COUNTERS): BOOL; stdcall;
  1740. {$EXTERNALSYM GetProcessIoCounters}
  1741. function GetProcessWorkingSetSize(hProcess: HANDLE;
  1742. var lpMinimumWorkingSetSize, lpMaximumWorkingSetSize: SIZE_T): BOOL; stdcall;
  1743. {$EXTERNALSYM GetProcessWorkingSetSize}
  1744. function GetProcessWorkingSetSizeEx(hProcess: HANDLE; out lpMinimumWorkingSetSize, lpMaximumWorkingSetSize: SIZE_T; out Flags: DWORD): BOOL; stdcall;
  1745. {$EXTERNALSYM GetProcessWorkingSetSizeEx}
  1746. function SetProcessWorkingSetSize(hProcess: HANDLE; dwMinimumWorkingSetSize,
  1747. dwMaximumWorkingSetSize: SIZE_T): BOOL; stdcall;
  1748. {$EXTERNALSYM SetProcessWorkingSetSize}
  1749. function SetProcessWorkingSetSizeEx(hProcess: HANDLE; dwMinimumWorkingSetSize, dwMaximumWorkingSetSize: SIZE_T; Flags: DWORD): BOOL; stdcall;
  1750. {$EXTERNALSYM SetProcessWorkingSetSizeEx}
  1751. function OpenProcess(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
  1752. dwProcessId: DWORD): HANDLE; stdcall;
  1753. {$EXTERNALSYM OpenProcess}
  1754. function GetCurrentProcess: HANDLE; stdcall;
  1755. {$EXTERNALSYM GetCurrentProcess}
  1756. function GetCurrentProcessId: DWORD; stdcall;
  1757. {$EXTERNALSYM GetCurrentProcessId}
  1758. procedure ExitProcess(uExitCode: UINT); stdcall;
  1759. {$EXTERNALSYM ExitProcess}
  1760. function TerminateProcess(hProcess: HANDLE; uExitCode: UINT): BOOL; stdcall;
  1761. {$EXTERNALSYM TerminateProcess}
  1762. function GetExitCodeProcess(hProcess: HANDLE; var lpExitCode: DWORD): BOOL; stdcall;
  1763. {$EXTERNALSYM GetExitCodeProcess}
  1764. procedure FatalExit(ExitCode: Integer); stdcall;
  1765. {$EXTERNALSYM FatalExit}
  1766. function GetEnvironmentStringsW: LPWSTR; stdcall;
  1767. {$EXTERNALSYM GetEnvironmentStringsW}
  1768. function GetEnvironmentStrings: LPSTR; stdcall;
  1769. {$EXTERNALSYM GetEnvironmentStrings}
  1770. {$IFNDEF UNICODE}
  1771. function GetEnvironmentStringsA: LPSTR; stdcall;
  1772. {$EXTERNALSYM GetEnvironmentStringsA}
  1773. {$ENDIF !UNICODE}
  1774. function SetEnvironmentStringsA(NewEnvironment: LPSTR): BOOL; stdcall;
  1775. {$EXTERNALSYM SetEnvironmentStringsA}
  1776. function SetEnvironmentStringsW(NewEnvironment: LPWSTR): BOOL; stdcall;
  1777. {$EXTERNALSYM SetEnvironmentStringsW}
  1778. function SetEnvironmentStrings(NewEnvironment: LPTSTR): BOOL; stdcall;
  1779. {$EXTERNALSYM SetEnvironmentStrings}
  1780. function FreeEnvironmentStringsA(pstr: LPSTR): BOOL; stdcall;
  1781. {$EXTERNALSYM FreeEnvironmentStringsA}
  1782. function FreeEnvironmentStringsW(pstr: LPWSTR): BOOL; stdcall;
  1783. {$EXTERNALSYM FreeEnvironmentStringsW}
  1784. function FreeEnvironmentStrings(pstr: LPTSTR): BOOL; stdcall;
  1785. {$EXTERNALSYM FreeEnvironmentStrings}
  1786. procedure RaiseException(dwExceptionCode: DWORD; dwExceptionFlags: DWORD;
  1787. nNumberOfArguments: DWORD; lpArguments: PULONG_PTR); stdcall;
  1788. {$EXTERNALSYM RaiseException}
  1789. function UnhandledExceptionFilter(ExceptionInfo: PEXCEPTION_POINTERS): LONG; stdcall;
  1790. {$EXTERNALSYM UnhandledExceptionFilter}
  1791. type
  1792. PTOP_LEVEL_EXCEPTION_FILTER = function(ExceptionInfo: PEXCEPTION_POINTERS): LONG; stdcall;
  1793. {$EXTERNALSYM PTOP_LEVEL_EXCEPTION_FILTER}
  1794. LPTOP_LEVEL_EXCEPTION_FILTER = PTOP_LEVEL_EXCEPTION_FILTER;
  1795. {$EXTERNALSYM LPTOP_LEVEL_EXCEPTION_FILTER}
  1796. TTopLevelExceptionFilter = PTOP_LEVEL_EXCEPTION_FILTER;
  1797. function SetUnhandledExceptionFilter(lpTopLevelExceptionFilter: LPTOP_LEVEL_EXCEPTION_FILTER): LPTOP_LEVEL_EXCEPTION_FILTER; stdcall;
  1798. {$EXTERNALSYM SetUnhandledExceptionFilter}
  1799. //
  1800. // Fiber creation flags
  1801. //
  1802. const
  1803. FIBER_FLAG_FLOAT_SWITCH = $1; // context switch floating point
  1804. {$EXTERNALSYM FIBER_FLAG_FLOAT_SWITCH}
  1805. function CreateFiber(dwStackSize: DWORD; lpStartAddress: LPFIBER_START_ROUTINE;
  1806. lpParameter: LPVOID): LPVOID; stdcall;
  1807. {$EXTERNALSYM CreateFiber}
  1808. function CreateFiberEx(dwStackCommitSize, dwStackReserveSize: SIZE_T; dwFlags: DWORD;
  1809. lpStartAddress: LPFIBER_START_ROUTINE; lpParameter: LPVOID): LPVOID; stdcall;
  1810. {$EXTERNALSYM CreateFiberEx}
  1811. procedure DeleteFiber(lpFiber: LPVOID); stdcall;
  1812. {$EXTERNALSYM DeleteFiber}
  1813. function ConvertThreadToFiber(lpParameter: LPVOID): LPVOID; stdcall;
  1814. {$EXTERNALSYM ConvertThreadToFiber}
  1815. function ConvertThreadToFiberEx(lpParameter: LPVOID; dwFlags: DWORD): LPVOID; stdcall;
  1816. {$EXTERNALSYM ConvertThreadToFiberEx}
  1817. function ConvertFiberToThread: BOOL; stdcall;
  1818. {$EXTERNALSYM ConvertFiberToThread}
  1819. procedure SwitchToFiber(lpFiber: LPVOID); stdcall;
  1820. {$EXTERNALSYM SwitchToFiber}
  1821. function SwitchToThread: BOOL; stdcall;
  1822. {$EXTERNALSYM SwitchToThread}
  1823. function CreateThread(lpThreadAttributes: LPSECURITY_ATTRIBUTES;
  1824. dwStackSize: DWORD; lpStartAddress: LPTHREAD_START_ROUTINE; lpParameter: LPVOID;
  1825. dwCreationFlags: DWORD; lpThreadId: LPDWORD): HANDLE; stdcall;
  1826. {$EXTERNALSYM CreateThread}
  1827. function CreateRemoteThread(hProcess: HANDLE;
  1828. lpThreadAttributes: LPSECURITY_ATTRIBUTES; dwStackSize: DWORD;
  1829. lpStartAddress: LPTHREAD_START_ROUTINE; lpParameter: LPVOID;
  1830. dwCreationFlags: DWORD; lpThreadId: LPDWORD): HANDLE; stdcall;
  1831. {$EXTERNALSYM CreateRemoteThread}
  1832. function GetCurrentThread: HANDLE; stdcall;
  1833. {$EXTERNALSYM GetCurrentThread}
  1834. function GetCurrentThreadId: DWORD; stdcall;
  1835. {$EXTERNALSYM GetCurrentThreadId}
  1836. function GetProcessIdOfThread(Thread: HANDLE): DWORD; stdcall;
  1837. {$EXTERNALSYM GetProcessIdOfThread}
  1838. function GetThreadId(Thread: HANDLE): DWORD; stdcall;
  1839. {$EXTERNALSYM GetThreadId}
  1840. function GetProcessId(Process: HANDLE): DWORD; stdcall;
  1841. {$EXTERNALSYM GetProcessId}
  1842. function GetCurrentProcessorNumber: DWORD; stdcall;
  1843. {$EXTERNALSYM GetCurrentProcessorNumber}
  1844. function SetThreadAffinityMask(hThread: HANDLE;
  1845. dwThreadAffinityMask: DWORD_PTR): DWORD_PTR; stdcall;
  1846. {$EXTERNALSYM SetThreadAffinityMask}
  1847. function SetThreadIdealProcessor(hThread: HANDLE; dwIdealProcessor: DWORD): DWORD; stdcall;
  1848. {$EXTERNALSYM SetThreadIdealProcessor}
  1849. function SetProcessPriorityBoost(hProcess: HANDLE;
  1850. bDisablePriorityBoost: BOOL): BOOL; stdcall;
  1851. {$EXTERNALSYM SetProcessPriorityBoost}
  1852. function GetProcessPriorityBoost(hProcess: HANDLE;
  1853. var pDisablePriorityBoost: BOOL): BOOL; stdcall;
  1854. {$EXTERNALSYM GetProcessPriorityBoost}
  1855. function RequestWakeupLatency(latency: LATENCY_TIME): BOOL; stdcall;
  1856. {$EXTERNALSYM RequestWakeupLatency}
  1857. function IsSystemResumeAutomatic: BOOL; stdcall;
  1858. {$EXTERNALSYM IsSystemResumeAutomatic}
  1859. function OpenThread(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
  1860. dwThreadId: DWORD): HANDLE; stdcall;
  1861. {$EXTERNALSYM OpenThread}
  1862. function SetThreadPriority(hThread: HANDLE; nPriority: Integer): BOOL; stdcall;
  1863. {$EXTERNALSYM SetThreadPriority}
  1864. function SetThreadPriorityBoost(hThread: HANDLE; bDisablePriorityBoost: BOOL): BOOL; stdcall;
  1865. {$EXTERNALSYM SetThreadPriorityBoost}
  1866. function GetThreadPriorityBoost(hThread: HANDLE;
  1867. var pDisablePriorityBoost: BOOL): BOOL; stdcall;
  1868. {$EXTERNALSYM GetThreadPriorityBoost}
  1869. function GetThreadPriority(hThread: HANDLE): Integer; stdcall;
  1870. {$EXTERNALSYM GetThreadPriority}
  1871. function GetThreadTimes(hThread: HANDLE; var lpCreationTime, lpExitTime,
  1872. lpKernelTime, lpUserTime: FILETIME): BOOL; stdcall;
  1873. {$EXTERNALSYM GetThreadTimes}
  1874. function GetThreadIOPendingFlag(hThread: HANDLE; out lpIOIsPending: BOOL): BOOL; stdcall;
  1875. {$EXTERNALSYM GetThreadIOPendingFlag}
  1876. procedure ExitThread(dwExitCode: DWORD); stdcall;
  1877. {$EXTERNALSYM ExitThread}
  1878. function TerminateThread(hThread: HANDLE; dwExitCode: DWORD): BOOL; stdcall;
  1879. {$EXTERNALSYM TerminateThread}
  1880. function GetExitCodeThread(hThread: HANDLE; var lpExitCode: DWORD): BOOL; stdcall;
  1881. {$EXTERNALSYM GetExitCodeThread}
  1882. function GetThreadSelectorEntry(hThread: HANDLE; dwSelector: DWORD;
  1883. var lpSelectorEntry: LDT_ENTRY): BOOL; stdcall;
  1884. {$EXTERNALSYM GetThreadSelectorEntry}
  1885. function SetThreadExecutionState(esFlags: EXECUTION_STATE): EXECUTION_STATE; stdcall;
  1886. {$EXTERNALSYM SetThreadExecutionState}
  1887. function GetLastError: DWORD; stdcall;
  1888. {$EXTERNALSYM GetLastError}
  1889. procedure SetLastError(dwErrCode: DWORD); stdcall;
  1890. {$EXTERNALSYM SetLastError}
  1891. procedure RestoreLastError(dwErrCode: DWORD); stdcall;
  1892. {$EXTERNALSYM RestoreLastError}
  1893. type
  1894. PRESTORE_LAST_ERROR = procedure(dwErrCode: DWORD); stdcall;
  1895. {$EXTERNALSYM PRESTORE_LAST_ERROR}
  1896. const
  1897. RESTORE_LAST_ERROR_NAME_A = 'RestoreLastError';
  1898. {$EXTERNALSYM RESTORE_LAST_ERROR_NAME_A}
  1899. RESTORE_LAST_ERROR_NAME_W = WideString('RestoreLastError');
  1900. {$EXTERNALSYM RESTORE_LAST_ERROR_NAME_W}
  1901. RESTORE_LAST_ERROR_NAME = __TEXT('RestoreLastError');
  1902. {$EXTERNALSYM RESTORE_LAST_ERROR_NAME}
  1903. function HasOverlappedIoCompleted(const lpOverlapped: OVERLAPPED): BOOL;
  1904. {$EXTERNALSYM HasOverlappedIoCompleted}
  1905. function GetOverlappedResult(hFile: HANDLE; const lpOverlapped: OVERLAPPED;
  1906. var lpNumberOfBytesTransferred: DWORD; bWait: BOOL): BOOL; stdcall;
  1907. {$EXTERNALSYM GetOverlappedResult}
  1908. function CreateIoCompletionPort(FileHandle: HANDLE; ExistingCompletionPort: HANDLE;
  1909. CompletionKey: ULONG_PTR; NumberOfConcurrentThreads: DWORD): HANDLE; stdcall;
  1910. {$EXTERNALSYM CreateIoCompletionPort}
  1911. function GetQueuedCompletionStatus(CompletionPort: HANDLE;
  1912. var lpNumberOfBytesTransferred: DWORD; var lpCompletionKey: ULONG_PTR;
  1913. var lpOverlapped: LPOVERLAPPED; dwMilliseconds: DWORD): BOOL; stdcall;
  1914. {$EXTERNALSYM GetQueuedCompletionStatus}
  1915. function PostQueuedCompletionStatus(CompletionPort: HANDLE;
  1916. dwNumberOfBytesTransferred: DWORD; dwCompletionKey: ULONG_PTR;
  1917. lpOverlapped: LPOVERLAPPED): BOOL; stdcall;
  1918. {$EXTERNALSYM PostQueuedCompletionStatus}
  1919. const
  1920. SEM_FAILCRITICALERRORS = $0001;
  1921. {$EXTERNALSYM SEM_FAILCRITICALERRORS}
  1922. SEM_NOGPFAULTERRORBOX = $0002;
  1923. {$EXTERNALSYM SEM_NOGPFAULTERRORBOX}
  1924. SEM_NOALIGNMENTFAULTEXCEPT = $0004;
  1925. {$EXTERNALSYM SEM_NOALIGNMENTFAULTEXCEPT}
  1926. SEM_NOOPENFILEERRORBOX = $8000;
  1927. {$EXTERNALSYM SEM_NOOPENFILEERRORBOX}
  1928. function SetErrorMode(uMode: UINT): UINT; stdcall;
  1929. {$EXTERNALSYM SetErrorMode}
  1930. function ReadProcessMemory(hProcess: HANDLE; lpBaseAddress: LPCVOID;
  1931. lpBuffer: LPVOID; nSize: DWORD; lpNumberOfBytesRead: LPDWORD): BOOL; stdcall;
  1932. {$EXTERNALSYM ReadProcessMemory}
  1933. function WriteProcessMemory(hProcess: HANDLE; lpBaseAddress: LPVOID;
  1934. lpBuffer: LPVOID; nSize: DWORD; lpNumberOfBytesWritten: LPDWORD): BOOL; stdcall;
  1935. {$EXTERNALSYM WriteProcessMemory}
  1936. function GetThreadContext(hThread: HANDLE; var lpContext: CONTEXT): BOOL; stdcall;
  1937. {$EXTERNALSYM GetThreadContext}
  1938. function SetThreadContext(hThread: HANDLE; const lpContext: CONTEXT): BOOL; stdcall;
  1939. {$EXTERNALSYM SetThreadContext}
  1940. function SuspendThread(hThread: HANDLE): DWORD; stdcall;
  1941. {$EXTERNALSYM SuspendThread}
  1942. function ResumeThread(hThread: HANDLE): DWORD; stdcall;
  1943. {$EXTERNALSYM ResumeThread}
  1944. type
  1945. PAPCFUNC = procedure(dwParam: ULONG_PTR); stdcall;
  1946. {$EXTERNALSYM PAPCFUNC}
  1947. TApcFunc = PAPCFUNC;
  1948. function QueueUserAPC(pfnAPC: PAPCFUNC; hThread: HANDLE; dwData: ULONG_PTR): DWORD; stdcall;
  1949. {$EXTERNALSYM QueueUserAPC}
  1950. function IsDebuggerPresent: BOOL; stdcall;
  1951. {$EXTERNALSYM IsDebuggerPresent}
  1952. function CheckRemoteDebuggerPresent(hProcess: HANDLE; out pbDebuggerPresent: BOOL): BOOL; stdcall;
  1953. {$EXTERNALSYM CheckRemoteDebuggerPresent}
  1954. procedure DebugBreak; stdcall;
  1955. {$EXTERNALSYM DebugBreak}
  1956. function WaitForDebugEvent(var lpDebugEvent: DEBUG_EVENT; dwMilliseconds: DWORD): BOOL; stdcall;
  1957. {$EXTERNALSYM WaitForDebugEvent}
  1958. function ContinueDebugEvent(dwProcessId: DWORD; dwThreadId: DWORD;
  1959. dwContinueStatus: DWORD): BOOL; stdcall;
  1960. {$EXTERNALSYM ContinueDebugEvent}
  1961. function DebugActiveProcess(dwProcessId: DWORD): BOOL; stdcall;
  1962. {$EXTERNALSYM DebugActiveProcess}
  1963. function DebugActiveProcessStop(dwProcessId: DWORD): BOOL; stdcall;
  1964. {$EXTERNALSYM DebugActiveProcessStop}
  1965. function DebugSetProcessKillOnExit(KillOnExit: BOOL): BOOL; stdcall;
  1966. {$EXTERNALSYM DebugSetProcessKillOnExit}
  1967. function DebugBreakProcess(Process: HANDLE): BOOL; stdcall;
  1968. {$EXTERNALSYM DebugBreakProcess}
  1969. procedure InitializeCriticalSection(var lpCriticalSection: CRITICAL_SECTION); stdcall;
  1970. {$EXTERNALSYM InitializeCriticalSection}
  1971. procedure EnterCriticalSection(var lpCriticalSection: CRITICAL_SECTION); stdcall;
  1972. {$EXTERNALSYM EnterCriticalSection}
  1973. procedure LeaveCriticalSection(var lpCriticalSection: CRITICAL_SECTION); stdcall;
  1974. {$EXTERNALSYM LeaveCriticalSection}
  1975. function InitializeCriticalSectionAndSpinCount(var lpCriticalSection: CRITICAL_SECTION;
  1976. dwSpinCount: DWORD): BOOL; stdcall;
  1977. {$EXTERNALSYM InitializeCriticalSectionAndSpinCount}
  1978. function SetCriticalSectionSpinCount(var lpCriticalSection: CRITICAL_SECTION;
  1979. dwSpinCount: DWORD): DWORD; stdcall;
  1980. {$EXTERNALSYM SetCriticalSectionSpinCount}
  1981. function TryEnterCriticalSection(var lpCriticalSection: CRITICAL_SECTION): BOOL; stdcall;
  1982. {$EXTERNALSYM TryEnterCriticalSection}
  1983. procedure DeleteCriticalSection(var lpCriticalSection: CRITICAL_SECTION); stdcall;
  1984. {$EXTERNALSYM DeleteCriticalSection}
  1985. function SetEvent(hEvent: HANDLE): BOOL; stdcall;
  1986. {$EXTERNALSYM SetEvent}
  1987. function ResetEvent(hEvent: HANDLE): BOOL; stdcall;
  1988. {$EXTERNALSYM ResetEvent}
  1989. function PulseEvent(hEvent: HANDLE): BOOL; stdcall;
  1990. {$EXTERNALSYM PulseEvent}
  1991. function ReleaseSemaphore(hSemaphore: HANDLE; lReleaseCount: LONG;
  1992. lpPreviousCount: LPLONG): BOOL; stdcall;
  1993. {$EXTERNALSYM ReleaseSemaphore}
  1994. function ReleaseMutex(hMutex: HANDLE): BOOL; stdcall;
  1995. {$EXTERNALSYM ReleaseMutex}
  1996. function WaitForSingleObject(hHandle: HANDLE; dwMilliseconds: DWORD): DWORD; stdcall;
  1997. {$EXTERNALSYM WaitForSingleObject}
  1998. function WaitForMultipleObjects(nCount: DWORD; lpHandles: PHANDLE; bWaitAll: BOOL;
  1999. dwMilliseconds: DWORD): DWORD; stdcall;
  2000. {$EXTERNALSYM WaitForMultipleObjects}
  2001. procedure Sleep(dwMilliseconds: DWORD); stdcall;
  2002. {$EXTERNALSYM Sleep}
  2003. function LoadResource(hModule: HMODULE; hResInfo: HRSRC): HGLOBAL; stdcall;
  2004. {$EXTERNALSYM LoadResource}
  2005. function SizeofResource(hModule: HMODULE; hResInfo: HRSRC): DWORD; stdcall;
  2006. {$EXTERNALSYM SizeofResource}
  2007. function GlobalDeleteAtom(nAtom: ATOM): ATOM; stdcall;
  2008. {$EXTERNALSYM GlobalDeleteAtom}
  2009. function InitAtomTable(nSize: DWORD): BOOL; stdcall;
  2010. {$EXTERNALSYM InitAtomTable}
  2011. function DeleteAtom(nAtom: ATOM): ATOM; stdcall;
  2012. {$EXTERNALSYM DeleteAtom}
  2013. function SetHandleCount(uNumber: UINT): UINT; stdcall;
  2014. {$EXTERNALSYM SetHandleCount}
  2015. function GetLogicalDrives: DWORD; stdcall;
  2016. {$EXTERNALSYM GetLogicalDrives}
  2017. function LockFile(hFile: HANDLE; dwFileOffsetLow: DWORD; dwFileOffsetHigh: DWORD;
  2018. nNumberOfBytesToLockLow: DWORD; nNumberOfBytesToLockHigh: DWORD): BOOL; stdcall;
  2019. {$EXTERNALSYM LockFile}
  2020. function UnlockFile(hFile: HANDLE; dwFileOffsetLow: DWORD; dwFileOffsetHigh: DWORD;
  2021. nNumberOfBytesToUnlockLow: DWORD; nNumberOfBytesToUnlockHigh: DWORD): BOOL; stdcall;
  2022. {$EXTERNALSYM UnlockFile}
  2023. function LockFileEx(hFile: HANDLE; dwFlags: DWORD; dwReserved: DWORD;
  2024. nNumberOfBytesToLockLow: DWORD; nNumberOfBytesToLockHigh: DWORD;
  2025. const lpOverlapped: OVERLAPPED): BOOL; stdcall;
  2026. {$EXTERNALSYM LockFileEx}
  2027. const
  2028. LOCKFILE_FAIL_IMMEDIATELY = $00000001;
  2029. {$EXTERNALSYM LOCKFILE_FAIL_IMMEDIATELY}
  2030. LOCKFILE_EXCLUSIVE_LOCK = $00000002;
  2031. {$EXTERNALSYM LOCKFILE_EXCLUSIVE_LOCK}
  2032. function UnlockFileEx(hFile: HANDLE; dwReserved: DWORD;
  2033. nNumberOfBytesToUnlockLow: DWORD; nNumberOfBytesToUnlockHigh: DWORD;
  2034. const lpOverlapped: OVERLAPPED): BOOL; stdcall;
  2035. {$EXTERNALSYM UnlockFileEx}
  2036. type
  2037. PBY_HANDLE_FILE_INFORMATION = ^BY_HANDLE_FILE_INFORMATION;
  2038. {$EXTERNALSYM PBY_HANDLE_FILE_INFORMATION}
  2039. _BY_HANDLE_FILE_INFORMATION = record
  2040. dwFileAttributes: DWORD;
  2041. ftCreationTime: FILETIME;
  2042. ftLastAccessTime: FILETIME;
  2043. ftLastWriteTime: FILETIME;
  2044. dwVolumeSerialNumber: DWORD;
  2045. nFileSizeHigh: DWORD;
  2046. nFileSizeLow: DWORD;
  2047. nNumberOfLinks: DWORD;
  2048. nFileIndexHigh: DWORD;
  2049. nFileIndexLow: DWORD;
  2050. end;
  2051. {$EXTERNALSYM _BY_HANDLE_FILE_INFORMATION}
  2052. BY_HANDLE_FILE_INFORMATION = _BY_HANDLE_FILE_INFORMATION;
  2053. {$EXTERNALSYM BY_HANDLE_FILE_INFORMATION}
  2054. LPBY_HANDLE_FILE_INFORMATION = ^BY_HANDLE_FILE_INFORMATION;
  2055. {$EXTERNALSYM LPBY_HANDLE_FILE_INFORMATION}
  2056. TByHandleFileInformation = BY_HANDLE_FILE_INFORMATION;
  2057. PByHandleFileInformation = PBY_HANDLE_FILE_INFORMATION;
  2058. function GetFileInformationByHandle(hFile: HANDLE;
  2059. var lpFileInformation: BY_HANDLE_FILE_INFORMATION): BOOL; stdcall;
  2060. {$EXTERNALSYM GetFileInformationByHandle}
  2061. function GetFileType(hFile: HANDLE): DWORD; stdcall;
  2062. {$EXTERNALSYM GetFileType}
  2063. function GetFileSize(hFile: HANDLE; lpFileSizeHigh: LPDWORD): DWORD; stdcall;
  2064. {$EXTERNALSYM GetFileSize}
  2065. function GetFileSizeEx(hFile: HANDLE; var lpFileSize: LARGE_INTEGER): BOOL; stdcall;
  2066. {$EXTERNALSYM GetFileSizeEx}
  2067. function GetStdHandle(nStdHandle: DWORD): HANDLE; stdcall;
  2068. {$EXTERNALSYM GetStdHandle}
  2069. function SetStdHandle(nStdHandle: DWORD; hHandle: HANDLE): BOOL; stdcall;
  2070. {$EXTERNALSYM SetStdHandle}
  2071. function WriteFile(hFile: HANDLE; lpBuffer: LPCVOID; nNumberOfBytesToWrite: DWORD;
  2072. lpNumberOfBytesWritten: LPDWORD; lpOverlapped: LPOVERLAPPED): BOOL; stdcall;
  2073. {$EXTERNALSYM WriteFile}
  2074. function ReadFile(hFile: HANDLE; lpBuffer: LPVOID; nNumberOfBytesToRead: DWORD;
  2075. lpNumberOfBytesRead: LPDWORD; lpOverlapped: LPOVERLAPPED): BOOL; stdcall;
  2076. {$EXTERNALSYM ReadFile}
  2077. function FlushFileBuffers(hFile: HANDLE): BOOL; stdcall;
  2078. {$EXTERNALSYM FlushFileBuffers}
  2079. function DeviceIoControl(hDevice: HANDLE; dwIoControlCode: DWORD;
  2080. lpInBuffer: LPVOID; nInBufferSize: DWORD; lpOutBuffer: LPVOID;
  2081. nOutBufferSize: DWORD; lpBytesReturned: LPDWORD;
  2082. lpOverlapped: LPOVERLAPPED): BOOL; stdcall;
  2083. {$EXTERNALSYM DeviceIoControl}
  2084. function RequestDeviceWakeup(hDevice: HANDLE): BOOL; stdcall;
  2085. {$EXTERNALSYM RequestDeviceWakeup}
  2086. function CancelDeviceWakeupRequest(hDevice: HANDLE): BOOL; stdcall;
  2087. {$EXTERNALSYM CancelDeviceWakeupRequest}
  2088. function GetDevicePowerState(hDevice: HANDLE; var pfOn: BOOL): BOOL; stdcall;
  2089. {$EXTERNALSYM GetDevicePowerState}
  2090. function SetMessageWaitingIndicator(hMsgIndicator: HANDLE; ulMsgCount: ULONG): BOOL; stdcall;
  2091. {$EXTERNALSYM SetMessageWaitingIndicator}
  2092. function SetEndOfFile(hFile: HANDLE): BOOL; stdcall;
  2093. {$EXTERNALSYM SetEndOfFile}
  2094. function SetFilePointer(hFile: HANDLE; lDistanceToMove: LONG;
  2095. lpDistanceToMoveHigh: PLONG; dwMoveMethod: DWORD): DWORD; stdcall;
  2096. {$EXTERNALSYM SetFilePointer}
  2097. function SetFilePointerEx(hFile: HANDLE; liDistanceToMove: LARGE_INTEGER;
  2098. lpNewFilePointer: PLARGE_INTEGER; dwMoveMethod: DWORD): BOOL; stdcall;
  2099. {$EXTERNALSYM SetFilePointerEx}
  2100. function FindClose(hFindFile: HANDLE): BOOL; stdcall;
  2101. {$EXTERNALSYM FindClose}
  2102. function GetFileTime(hFile: HANDLE; lpCreationTime, lpLastAccessTime,
  2103. lpLastWriteTime: PFILETIME): BOOL; stdcall;
  2104. {$EXTERNALSYM GetFileTime}
  2105. function SetFileTime(hFile: HANDLE; lpCreationTime, lpLastAccessTime,
  2106. lpLastWriteTime: PFILETIME): BOOL; stdcall;
  2107. {$EXTERNALSYM SetFileTime}
  2108. function SetFileValidData(hFile: HANDLE; ValidDataLength: LONGLONG): BOOL; stdcall;
  2109. {$EXTERNALSYM SetFileValidData}
  2110. function SetFileShortNameA(hFile: HANDLE; lpShortName: LPCSTR): BOOL; stdcall;
  2111. {$EXTERNALSYM SetFileShortNameA}
  2112. function SetFileShortNameW(hFile: HANDLE; lpShortName: LPCWSTR): BOOL; stdcall;
  2113. {$EXTERNALSYM SetFileShortNameW}
  2114. function SetFileShortName(hFile: HANDLE; lpShortName: LPCTSTR): BOOL; stdcall;
  2115. {$EXTERNALSYM SetFileShortName}
  2116. function CloseHandle(hObject: HANDLE): BOOL; stdcall;
  2117. {$EXTERNALSYM CloseHandle}
  2118. function DuplicateHandle(hSourceProcessHandle: HANDLE; hSourceHandle: HANDLE;
  2119. hTargetProcessHandle: HANDLE; lpTargetHandle: LPHANDLE;
  2120. dwDesiredAccess: DWORD; bInheritHandle: BOOL; dwOptions: DWORD): BOOL; stdcall;
  2121. {$EXTERNALSYM DuplicateHandle}
  2122. function GetHandleInformation(hObject: HANDLE; var lpdwFlags: DWORD): BOOL; stdcall;
  2123. {$EXTERNALSYM GetHandleInformation}
  2124. function SetHandleInformation(hObject: HANDLE; dwMask: DWORD; dwFlags: DWORD): BOOL; stdcall;
  2125. {$EXTERNALSYM SetHandleInformation}
  2126. const
  2127. HANDLE_FLAG_INHERIT = $00000001;
  2128. {$EXTERNALSYM HANDLE_FLAG_INHERIT}
  2129. HANDLE_FLAG_PROTECT_FROM_CLOSE = $00000002;
  2130. {$EXTERNALSYM HANDLE_FLAG_PROTECT_FROM_CLOSE}
  2131. HINSTANCE_ERROR = 32;
  2132. {$EXTERNALSYM HINSTANCE_ERROR}
  2133. function LoadModule(lpModuleName: LPCSTR; lpParameterBlock: LPVOID): DWORD; stdcall;
  2134. {$EXTERNALSYM LoadModule}
  2135. function WinExec(lpCmdLine: LPCSTR; uCmdShow: UINT): UINT; stdcall;
  2136. {$EXTERNALSYM WinExec}
  2137. function ClearCommBreak(hFile: HANDLE): BOOL; stdcall;
  2138. {$EXTERNALSYM ClearCommBreak}
  2139. function ClearCommError(hFile: HANDLE; var lpErrors: DWORD;
  2140. lpStat: LPCOMSTAT): BOOL; stdcall;
  2141. {$EXTERNALSYM ClearCommError}
  2142. function SetupComm(hFile: HANDLE; dwInQueue: DWORD; dwOutQueue: DWORD): BOOL; stdcall;
  2143. {$EXTERNALSYM SetupComm}
  2144. function EscapeCommFunction(hFile: HANDLE; dwFunc: DWORD): BOOL; stdcall;
  2145. {$EXTERNALSYM EscapeCommFunction}
  2146. function GetCommConfig(hCommDev: HANDLE; var lpCC: COMMCONFIG;
  2147. var lpdwSize: DWORD): BOOL; stdcall;
  2148. {$EXTERNALSYM GetCommConfig}
  2149. function GetCommMask(hFile: HANDLE; var lpEvtMask: DWORD): BOOL; stdcall;
  2150. {$EXTERNALSYM GetCommMask}
  2151. function GetCommProperties(hFile: HANDLE; var lpCommProp: COMMPROP): BOOL; stdcall;
  2152. {$EXTERNALSYM GetCommProperties}
  2153. function GetCommModemStatus(hFile: HANDLE; var lpModemStat: DWORD): BOOL; stdcall;
  2154. {$EXTERNALSYM GetCommModemStatus}
  2155. function GetCommState(hFile: HANDLE; var lpDCB: DCB): BOOL; stdcall;
  2156. {$EXTERNALSYM GetCommState}
  2157. function GetCommTimeouts(hFile: HANDLE; var lpCommTimeouts: COMMTIMEOUTS): BOOL; stdcall;
  2158. {$EXTERNALSYM GetCommTimeouts}
  2159. function PurgeComm(hFile: HANDLE; dwFlags: DWORD): BOOL; stdcall;
  2160. {$EXTERNALSYM PurgeComm}
  2161. function SetCommBreak(hFile: HANDLE): BOOL; stdcall;
  2162. {$EXTERNALSYM SetCommBreak}
  2163. function SetCommConfig(hCommDev: HANDLE; const lpCC: COMMCONFIG; dwSize: DWORD): BOOL; stdcall;
  2164. {$EXTERNALSYM SetCommConfig}
  2165. function SetCommMask(hFile: HANDLE; dwEvtMask: DWORD): BOOL; stdcall;
  2166. {$EXTERNALSYM SetCommMask}
  2167. function SetCommState(hFile: HANDLE; const lpDCB: DCB): BOOL; stdcall;
  2168. {$EXTERNALSYM SetCommState}
  2169. function SetCommTimeouts(hFile: HANDLE; const lpCommTimeouts: COMMTIMEOUTS): BOOL; stdcall;
  2170. {$EXTERNALSYM SetCommTimeouts}
  2171. function TransmitCommChar(hFile: HANDLE; cChar: Char): BOOL; stdcall;
  2172. {$EXTERNALSYM TransmitCommChar}
  2173. function WaitCommEvent(hFile: HANDLE; var lpEvtMask: DWORD;
  2174. lpOverlapped: LPOVERLAPPED): BOOL; stdcall;
  2175. {$EXTERNALSYM WaitCommEvent}
  2176. function SetTapePosition(hDevice: HANDLE; dwPositionMethod, dwPartition,
  2177. dwOffsetLow, dwOffsetHigh: DWORD; bImmediate: BOOL): DWORD; stdcall;
  2178. {$EXTERNALSYM SetTapePosition}
  2179. function GetTapePosition(hDevice: HANDLE; dwPositionType: DWORD;
  2180. var lpdwPartition, lpdwOffsetLow: LPDWORD; lpdwOffsetHigh: LPDWORD): DWORD; stdcall;
  2181. {$EXTERNALSYM GetTapePosition}
  2182. function PrepareTape(hDevice: HANDLE; dwOperation: DWORD; bImmediate: BOOL): DWORD; stdcall;
  2183. {$EXTERNALSYM PrepareTape}
  2184. function EraseTape(hDevice: HANDLE; dwEraseType: DWORD; bImmediate: BOOL): DWORD; stdcall;
  2185. {$EXTERNALSYM EraseTape}
  2186. function CreateTapePartition(hDevice: HANDLE; dwPartitionMethod: DWORD;
  2187. dwCount: DWORD; dwSize: DWORD): DWORD; stdcall;
  2188. {$EXTERNALSYM CreateTapePartition}
  2189. function WriteTapemark(hDevice: HANDLE; dwTapemarkType: DWORD;
  2190. dwTapemarkCount: DWORD; bImmediate: BOOL): DWORD; stdcall;
  2191. {$EXTERNALSYM WriteTapemark}
  2192. function GetTapeStatus(hDevice: HANDLE): DWORD; stdcall;
  2193. {$EXTERNALSYM GetTapeStatus}
  2194. function GetTapeParameters(hDevice: HANDLE; dwOperation: DWORD;
  2195. var lpdwSize: DWORD; lpTapeInformation: LPVOID): DWORD; stdcall;
  2196. {$EXTERNALSYM GetTapeParameters}
  2197. const
  2198. GET_TAPE_MEDIA_INFORMATION = 0;
  2199. {$EXTERNALSYM GET_TAPE_MEDIA_INFORMATION}
  2200. GET_TAPE_DRIVE_INFORMATION = 1;
  2201. {$EXTERNALSYM GET_TAPE_DRIVE_INFORMATION}
  2202. function SetTapeParameters(hDevice: HANDLE; dwOperation: DWORD; lpTapeInformation: LPVOID): DWORD; stdcall;
  2203. {$EXTERNALSYM SetTapeParameters}
  2204. const
  2205. SET_TAPE_MEDIA_INFORMATION = 0;
  2206. {$EXTERNALSYM SET_TAPE_MEDIA_INFORMATION}
  2207. SET_TAPE_DRIVE_INFORMATION = 1;
  2208. {$EXTERNALSYM SET_TAPE_DRIVE_INFORMATION}
  2209. function Beep(dwFreq: DWORD; dwDuration: DWORD): BOOL; stdcall;
  2210. {$EXTERNALSYM Beep}
  2211. function MulDiv(nNumber, nNumerator, nDenominator: Integer): Integer; stdcall;
  2212. {$EXTERNALSYM MulDiv}
  2213. procedure GetSystemTime(var lpSystemTime: SYSTEMTIME); stdcall;
  2214. {$EXTERNALSYM GetSystemTime}
  2215. procedure GetSystemTimeAsFileTime(var lpSystemTimeAsFileTime: FILETIME); stdcall;
  2216. {$EXTERNALSYM GetSystemTimeAsFileTime}
  2217. function SetSystemTime(var lpSystemTime: SYSTEMTIME): BOOL; stdcall;
  2218. {$EXTERNALSYM SetSystemTime}
  2219. procedure GetLocalTime(var lpSystemTime: SYSTEMTIME); stdcall;
  2220. {$EXTERNALSYM GetLocalTime}
  2221. function SetLocalTime(var lpSystemTime: SYSTEMTIME): BOOL; stdcall;
  2222. {$EXTERNALSYM SetLocalTime}
  2223. procedure GetSystemInfo(var lpSystemInfo: SYSTEM_INFO); stdcall;
  2224. {$EXTERNALSYM GetSystemInfo}
  2225. function GetSystemRegistryQuota(out pdwQuotaAllowed, pdwQuotaUsed: DWORD): BOOL; stdcall;
  2226. {$EXTERNALSYM GetSystemRegistryQuota}
  2227. function GetSystemTimes(lpIdleTime, lpKernelTime, lpUserTime: LPFILETIME): BOOL; stdcall;
  2228. {$EXTERNALSYM GetSystemTimes}
  2229. procedure GetNativeSystemInfo(lpSystemInfo: LPSYSTEM_INFO); stdcall;
  2230. {$EXTERNALSYM GetNativeSystemInfo}
  2231. function IsProcessorFeaturePresent(ProcessorFeature: DWORD): BOOL; stdcall;
  2232. {$EXTERNALSYM IsProcessorFeaturePresent}
  2233. type
  2234. PTIME_ZONE_INFORMATION = ^TIME_ZONE_INFORMATION;
  2235. {$EXTERNALSYM PTIME_ZONE_INFORMATION}
  2236. _TIME_ZONE_INFORMATION = record
  2237. Bias: LONG;
  2238. StandardName: array [0..31] of WCHAR;
  2239. StandardDate: SYSTEMTIME;
  2240. StandardBias: LONG;
  2241. DaylightName: array [0..31] of WCHAR;
  2242. DaylightDate: SYSTEMTIME;
  2243. DaylightBias: LONG;
  2244. end;
  2245. {$EXTERNALSYM _TIME_ZONE_INFORMATION}
  2246. TIME_ZONE_INFORMATION = _TIME_ZONE_INFORMATION;
  2247. {$EXTERNALSYM TIME_ZONE_INFORMATION}
  2248. LPTIME_ZONE_INFORMATION = ^TIME_ZONE_INFORMATION;
  2249. {$EXTERNALSYM LPTIME_ZONE_INFORMATION}
  2250. TTimeZoneInformation = TIME_ZONE_INFORMATION;
  2251. PTimeZoneInformation = PTIME_ZONE_INFORMATION;
  2252. function SystemTimeToTzSpecificLocalTime(lpTimeZoneInformation: LPTIME_ZONE_INFORMATION;
  2253. var lpUniversalTime, lpLocalTime: SYSTEMTIME): BOOL; stdcall;
  2254. {$EXTERNALSYM SystemTimeToTzSpecificLocalTime}
  2255. function TzSpecificLocalTimeToSystemTime(const lpTimeZoneInformation: TIME_ZONE_INFORMATION;
  2256. const lpLocalTime: SYSTEMTIME; var lpUniversalTime: SYSTEMTIME): BOOL; stdcall;
  2257. {$EXTERNALSYM TzSpecificLocalTimeToSystemTime}
  2258. function GetTimeZoneInformation(var lpTimeZoneInformation: TIME_ZONE_INFORMATION): DWORD; stdcall;
  2259. {$EXTERNALSYM GetTimeZoneInformation}
  2260. function SetTimeZoneInformation(const lpTimeZoneInformation: TIME_ZONE_INFORMATION): BOOL; stdcall;
  2261. {$EXTERNALSYM SetTimeZoneInformation}
  2262. //
  2263. // Routines to convert back and forth between system time and file time
  2264. //
  2265. function SystemTimeToFileTime(const lpSystemTime: SYSTEMTIME; var lpFileTime: FILETIME): BOOL; stdcall;
  2266. {$EXTERNALSYM SystemTimeToFileTime}
  2267. function FileTimeToLocalFileTime(const lpFileTime: FILETIME; var lpLocalFileTime: FILETIME): BOOL; stdcall;
  2268. {$EXTERNALSYM FileTimeToLocalFileTime}
  2269. function LocalFileTimeToFileTime(const lpLocalFileTime: FILETIME; var lpFileTime: FILETIME): BOOL; stdcall;
  2270. {$EXTERNALSYM LocalFileTimeToFileTime}
  2271. function FileTimeToSystemTime(const lpFileTime: FILETIME; var lpSystemTime: SYSTEMTIME): BOOL; stdcall;
  2272. {$EXTERNALSYM FileTimeToSystemTime}
  2273. function CompareFileTime(const lpFileTime1, lpFileTime2: FILETIME): LONG; stdcall;
  2274. {$EXTERNALSYM CompareFileTime}
  2275. function FileTimeToDosDateTime(const lpFileTime: FILETIME; var lpFatDate,
  2276. lpFatTime: WORD): BOOL; stdcall;
  2277. {$EXTERNALSYM FileTimeToDosDateTime}
  2278. function DosDateTimeToFileTime(wFatDate, wFatTime: WORD; var lpFileTime: FILETIME): BOOL; stdcall;
  2279. {$EXTERNALSYM DosDateTimeToFileTime}
  2280. function GetTickCount: DWORD; stdcall;
  2281. {$EXTERNALSYM GetTickCount}
  2282. function SetSystemTimeAdjustment(dwTimeAdjustment: DWORD;
  2283. bTimeAdjustmentDisabled: BOOL): BOOL; stdcall;
  2284. {$EXTERNALSYM SetSystemTimeAdjustment}
  2285. function GetSystemTimeAdjustment(var lpTimeAdjustment, lpTimeIncrement: DWORD;
  2286. var lpTimeAdjustmentDisabled: BOOL): BOOL; stdcall;
  2287. {$EXTERNALSYM GetSystemTimeAdjustment}
  2288. function FormatMessageA(dwFlags: DWORD; lpSource: LPCVOID; dwMessageId: DWORD;
  2289. dwLanguageId: DWORD; lpBuffer: LPSTR; nSize: DWORD; Arguments: Pointer): DWORD; stdcall;
  2290. {$EXTERNALSYM FormatMessageA}
  2291. function FormatMessageW(dwFlags: DWORD; lpSource: LPCVOID; dwMessageId: DWORD;
  2292. dwLanguageId: DWORD; lpBuffer: LPWSTR; nSize: DWORD; Arguments: Pointer): DWORD; stdcall;
  2293. {$EXTERNALSYM FormatMessageW}
  2294. function FormatMessage(dwFlags: DWORD; lpSource: LPCVOID; dwMessageId: DWORD;
  2295. dwLanguageId: DWORD; lpBuffer: LPTSTR; nSize: DWORD; Arguments: Pointer): DWORD; stdcall;
  2296. {$EXTERNALSYM FormatMessage}
  2297. const
  2298. FORMAT_MESSAGE_ALLOCATE_BUFFER = $00000100;
  2299. {$EXTERNALSYM FORMAT_MESSAGE_ALLOCATE_BUFFER}
  2300. FORMAT_MESSAGE_IGNORE_INSERTS = $00000200;
  2301. {$EXTERNALSYM FORMAT_MESSAGE_IGNORE_INSERTS}
  2302. FORMAT_MESSAGE_FROM_STRING = $00000400;
  2303. {$EXTERNALSYM FORMAT_MESSAGE_FROM_STRING}
  2304. FORMAT_MESSAGE_FROM_HMODULE = $00000800;
  2305. {$EXTERNALSYM FORMAT_MESSAGE_FROM_HMODULE}
  2306. FORMAT_MESSAGE_FROM_SYSTEM = $00001000;
  2307. {$EXTERNALSYM FORMAT_MESSAGE_FROM_SYSTEM}
  2308. FORMAT_MESSAGE_ARGUMENT_ARRAY = $00002000;
  2309. {$EXTERNALSYM FORMAT_MESSAGE_ARGUMENT_ARRAY}
  2310. FORMAT_MESSAGE_MAX_WIDTH_MASK = $000000FF;
  2311. {$EXTERNALSYM FORMAT_MESSAGE_MAX_WIDTH_MASK}
  2312. function CreatePipe(var hReadPipe, hWritePipe: HANDLE;
  2313. lpPipeAttributes: LPSECURITY_ATTRIBUTES; nSize: DWORD): BOOL; stdcall;
  2314. {$EXTERNALSYM CreatePipe}
  2315. function ConnectNamedPipe(hNamedPipe: HANDLE; lpOverlapped: LPOVERLAPPED): BOOL; stdcall;
  2316. {$EXTERNALSYM ConnectNamedPipe}
  2317. function DisconnectNamedPipe(hNamedPipe: HANDLE): BOOL; stdcall;
  2318. {$EXTERNALSYM DisconnectNamedPipe}
  2319. function SetNamedPipeHandleState(hNamedPipe: HANDLE; var lpMode: DWORD;
  2320. lpMaxCollectionCount: LPDWORD; lpCollectDataTimeout: LPDWORD): BOOL; stdcall;
  2321. {$EXTERNALSYM SetNamedPipeHandleState}
  2322. function GetNamedPipeInfo(hNamedPipe: HANDLE; lpFlags, lpOutBufferSize,
  2323. lpInBufferSize, lpMaxInstances: LPDWORD): BOOL; stdcall;
  2324. {$EXTERNALSYM GetNamedPipeInfo}
  2325. function PeekNamedPipe(hNamedPipe: HANDLE; lpBuffer: LPVOID; nBufferSize: DWORD;
  2326. lpBytesRead, lpTotalBytesAvail, lpBytesLeftThisMessage: LPDWORD): BOOL; stdcall;
  2327. {$EXTERNALSYM PeekNamedPipe}
  2328. function TransactNamedPipe(hNamedPipe: HANDLE; lpInBuffer: LPVOID;
  2329. nInBufferSize: DWORD; lpOutBuffer: LPVOID; nOutBufferSize: DWORD;
  2330. lpBytesRead: LPDWORD; lpOverlapped: LPOVERLAPPED): BOOL; stdcall;
  2331. {$EXTERNALSYM TransactNamedPipe}
  2332. function CreateMailslotA(lpName: LPCSTR; nMaxMessageSize, lReadTimeout: DWORD;
  2333. lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE; stdcall;
  2334. {$EXTERNALSYM CreateMailslotA}
  2335. function CreateMailslotW(lpName: LPCWSTR; nMaxMessageSize, lReadTimeout: DWORD;
  2336. lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE; stdcall;
  2337. {$EXTERNALSYM CreateMailslotW}
  2338. function CreateMailslot(lpName: LPCTSTR; nMaxMessageSize, lReadTimeout: DWORD;
  2339. lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE; stdcall;
  2340. {$EXTERNALSYM CreateMailslot}
  2341. function GetMailslotInfo(hMailslot: HANDLE; lpMaxMessageSize, lpNextSize,
  2342. lpMessageCount, lpReadTimeout: LPDWORD): BOOL; stdcall;
  2343. {$EXTERNALSYM GetMailslotInfo}
  2344. function SetMailslotInfo(hMailslot: HANDLE; lReadTimeout: DWORD): BOOL; stdcall;
  2345. {$EXTERNALSYM SetMailslotInfo}
  2346. function MapViewOfFile(hFileMappingObject: HANDLE; dwDesiredAccess: DWORD;
  2347. dwFileOffsetHigh, dwFileOffsetLow: DWORD; dwNumberOfBytesToMap: SIZE_T): LPVOID; stdcall;
  2348. {$EXTERNALSYM MapViewOfFile}
  2349. function FlushViewOfFile(lpBaseAddress: LPCVOID; dwNumberOfBytesToFlush: SIZE_T): BOOL; stdcall;
  2350. {$EXTERNALSYM FlushViewOfFile}
  2351. function UnmapViewOfFile(lpBaseAddress: LPCVOID): BOOL; stdcall;
  2352. {$EXTERNALSYM UnmapViewOfFile}
  2353. //
  2354. // File Encryption API
  2355. //
  2356. function EncryptFileA(lpFileName: LPCSTR): BOOL; stdcall;
  2357. {$EXTERNALSYM EncryptFileA}
  2358. function EncryptFileW(lpFileName: LPCWSTR): BOOL; stdcall;
  2359. {$EXTERNALSYM EncryptFileW}
  2360. function EncryptFile(lpFileName: LPCTSTR): BOOL; stdcall;
  2361. {$EXTERNALSYM EncryptFile}
  2362. function DecryptFileA(lpFileName: LPCSTR; dwReserved: DWORD): BOOL; stdcall;
  2363. {$EXTERNALSYM DecryptFileA}
  2364. function DecryptFileW(lpFileName: LPCWSTR; dwReserved: DWORD): BOOL; stdcall;
  2365. {$EXTERNALSYM DecryptFileW}
  2366. function DecryptFile(lpFileName: LPCTSTR; dwReserved: DWORD): BOOL; stdcall;
  2367. {$EXTERNALSYM DecryptFile}
  2368. //
  2369. // Encryption Status Value
  2370. //
  2371. const
  2372. FILE_ENCRYPTABLE = 0;
  2373. {$EXTERNALSYM FILE_ENCRYPTABLE}
  2374. FILE_IS_ENCRYPTED = 1;
  2375. {$EXTERNALSYM FILE_IS_ENCRYPTED}
  2376. FILE_SYSTEM_ATTR = 2;
  2377. {$EXTERNALSYM FILE_SYSTEM_ATTR}
  2378. FILE_ROOT_DIR = 3;
  2379. {$EXTERNALSYM FILE_ROOT_DIR}
  2380. FILE_SYSTEM_DIR = 4;
  2381. {$EXTERNALSYM FILE_SYSTEM_DIR}
  2382. FILE_UNKNOWN = 5;
  2383. {$EXTERNALSYM FILE_UNKNOWN}
  2384. FILE_SYSTEM_NOT_SUPPORT = 6;
  2385. {$EXTERNALSYM FILE_SYSTEM_NOT_SUPPORT}
  2386. FILE_USER_DISALLOWED = 7;
  2387. {$EXTERNALSYM FILE_USER_DISALLOWED}
  2388. FILE_READ_ONLY = 8;
  2389. {$EXTERNALSYM FILE_READ_ONLY}
  2390. FILE_DIR_DISALLOWED = 9;
  2391. {$EXTERNALSYM FILE_DIR_DISALLOWED}
  2392. function FileEncryptionStatusA(lpFileName: LPCSTR; var lpStatus: DWORD): BOOL; stdcall;
  2393. {$EXTERNALSYM FileEncryptionStatusA}
  2394. function FileEncryptionStatusW(lpFileName: LPCWSTR; var lpStatus: DWORD): BOOL; stdcall;
  2395. {$EXTERNALSYM FileEncryptionStatusW}
  2396. function FileEncryptionStatus(lpFileName: LPCTSTR; var lpStatus: DWORD): BOOL; stdcall;
  2397. {$EXTERNALSYM FileEncryptionStatus}
  2398. //
  2399. // Currently defined recovery flags
  2400. //
  2401. const
  2402. EFS_USE_RECOVERY_KEYS = $1;
  2403. {$EXTERNALSYM EFS_USE_RECOVERY_KEYS}
  2404. type
  2405. PFE_EXPORT_FUNC = function(pbData: PBYTE; pvCallbackContext: PVOID;
  2406. ulLength: ULONG): DWORD; stdcall;
  2407. {$EXTERNALSYM PFE_EXPORT_FUNC}
  2408. PFE_IMPORT_FUNC = function(pbData: PBYTE; pvCallbackContext: PVOID;
  2409. ulLength: PULONG): DWORD; stdcall;
  2410. {$EXTERNALSYM PFE_IMPORT_FUNC}
  2411. //
  2412. // OpenRaw flag values
  2413. //
  2414. const
  2415. CREATE_FOR_IMPORT = 1;
  2416. {$EXTERNALSYM CREATE_FOR_IMPORT}
  2417. CREATE_FOR_DIR = 2;
  2418. {$EXTERNALSYM CREATE_FOR_DIR}
  2419. OVERWRITE_HIDDEN = 4;
  2420. {$EXTERNALSYM OVERWRITE_HIDDEN}
  2421. function OpenEncryptedFileRawA(lpFileName: LPCSTR; ulFlags: ULONG;
  2422. pvContext: PVOID): DWORD; stdcall;
  2423. {$EXTERNALSYM OpenEncryptedFileRawA}
  2424. function OpenEncryptedFileRawW(lpFileName: LPCWSTR; ulFlags: ULONG;
  2425. pvContext: PVOID): DWORD; stdcall;
  2426. {$EXTERNALSYM OpenEncryptedFileRawW}
  2427. function OpenEncryptedFileRaw(lpFileName: LPCTSTR; ulFlags: ULONG;
  2428. pvContext: PVOID): DWORD; stdcall;
  2429. {$EXTERNALSYM OpenEncryptedFileRaw}
  2430. function ReadEncryptedFileRaw(pfExportCallback: PFE_EXPORT_FUNC;
  2431. pvCallbackContext: PVOID; pvContext: PVOID): DWORD; stdcall;
  2432. {$EXTERNALSYM ReadEncryptedFileRaw}
  2433. function WriteEncryptedFileRaw(pfImportCallback: PFE_IMPORT_FUNC;
  2434. pvCallbackContext: PVOID; pvContext: PVOID): DWORD; stdcall;
  2435. {$EXTERNALSYM WriteEncryptedFileRaw}
  2436. procedure CloseEncryptedFileRaw(pvContext: PVOID); stdcall;
  2437. {$EXTERNALSYM CloseEncryptedFileRaw}
  2438. //
  2439. // _l Compat Functions
  2440. //
  2441. function lstrcmpA(lpString1, lpString2: LPCSTR): Integer; stdcall;
  2442. {$EXTERNALSYM lstrcmpA}
  2443. function lstrcmpW(lpString1, lpString2: LPCWSTR): Integer; stdcall;
  2444. {$EXTERNALSYM lstrcmpW}
  2445. function lstrcmp(lpString1, lpString2: LPCTSTR): Integer; stdcall;
  2446. {$EXTERNALSYM lstrcmp}
  2447. function lstrcmpiA(lpString1, lpString2: LPCSTR): Integer; stdcall;
  2448. {$EXTERNALSYM lstrcmpiA}
  2449. function lstrcmpiW(lpString1, lpString2: LPCWSTR): Integer; stdcall;
  2450. {$EXTERNALSYM lstrcmpiW}
  2451. function lstrcmpi(lpString1, lpString2: LPCTSTR): Integer; stdcall;
  2452. {$EXTERNALSYM lstrcmpi}
  2453. function lstrcpynA(lpString1: LPSTR; lpString2: LPCSTR; iMaxLength: Integer): LPSTR; stdcall;
  2454. {$EXTERNALSYM lstrcpynA}
  2455. function lstrcpynW(lpString1: LPWSTR; lpString2: LPCWSTR; iMaxLength: Integer): LPWSTR; stdcall;
  2456. {$EXTERNALSYM lstrcpynW}
  2457. function lstrcpyn(lpString1: LPTSTR; lpString2: LPCTSTR; iMaxLength: Integer): LPTSTR; stdcall;
  2458. {$EXTERNALSYM lstrcpyn}
  2459. function lstrcpyA(lpString1: LPSTR; lpString2: LPCSTR): LPSTR; stdcall;
  2460. {$EXTERNALSYM lstrcpyA}
  2461. function lstrcpyW(lpString1: LPWSTR; lpString2: LPCWSTR): LPWSTR; stdcall;
  2462. {$EXTERNALSYM lstrcpyW}
  2463. function lstrcpy(lpString1: LPTSTR; lpString2: LPCTSTR): LPTSTR; stdcall;
  2464. {$EXTERNALSYM lstrcpy}
  2465. function lstrcatA(lpString1: LPSTR; lpString2: LPCSTR): LPSTR; stdcall;
  2466. {$EXTERNALSYM lstrcatA}
  2467. function lstrcatW(lpString1: LPWSTR; lpString2: LPCWSTR): LPWSTR; stdcall;
  2468. {$EXTERNALSYM lstrcatW}
  2469. function lstrcat(lpString1: LPTSTR; lpString2: LPCTSTR): LPTSTR; stdcall;
  2470. {$EXTERNALSYM lstrcat}
  2471. function lstrlenA(lpString: LPCSTR): Integer; stdcall;
  2472. {$EXTERNALSYM lstrlenA}
  2473. function lstrlenW(lpString: LPCWSTR): Integer; stdcall;
  2474. {$EXTERNALSYM lstrlenW}
  2475. function lstrlen(lpString: LPCTSTR): Integer; stdcall;
  2476. {$EXTERNALSYM lstrlen}
  2477. function OpenFile(lpFileName: LPCSTR; var lpReOpenBuff: OFSTRUCT; uStyle: UINT): HFILE; stdcall;
  2478. {$EXTERNALSYM OpenFile}
  2479. function _lopen(lpPathName: LPCSTR; iReadWrite: Integer): HFILE; stdcall;
  2480. {$EXTERNALSYM _lopen}
  2481. function _lcreat(lpPathName: LPCSTR; iAttribute: Integer): HFILE; stdcall;
  2482. {$EXTERNALSYM _lcreat}
  2483. function _lread(hFile: HFILE; lpBuffer: LPVOID; uBytes: UINT): UINT; stdcall;
  2484. {$EXTERNALSYM _lread}
  2485. function _lwrite(hFile: HFILE; lpBuffer: LPCSTR; uBytes: UINT): UINT; stdcall;
  2486. {$EXTERNALSYM _lwrite}
  2487. function _hread(hFile: HFILE; lpBuffer: LPVOID; lBytes: Longint): Longint; stdcall;
  2488. {$EXTERNALSYM _hread}
  2489. function _hwrite(hFile: HFILE; lpBuffer: LPCSTR; lBytes: Longint): Longint; stdcall;
  2490. {$EXTERNALSYM _hwrite}
  2491. function _lclose(hFile: HFILE): HFILE; stdcall;
  2492. {$EXTERNALSYM _lclose}
  2493. function _llseek(hFile: HFILE; lOffset: LONG; iOrigin: Integer): LONG; stdcall;
  2494. {$EXTERNALSYM _llseek}
  2495. function IsTextUnicode(lpBuffer: LPVOID; cb: Integer; lpi: LPINT): BOOL; stdcall;
  2496. {$EXTERNALSYM IsTextUnicode}
  2497. type
  2498. PFLS_CALLBACK_FUNCTION = procedure(lpFlsData: PVOID); stdcall;
  2499. {$EXTERNALSYM PFLS_CALLBACK_FUNCTION}
  2500. TFlsCallbackFunction = PFLS_CALLBACK_FUNCTION;
  2501. const
  2502. FLS_OUT_OF_INDEXES = DWORD($FFFFFFFF);
  2503. {$EXTERNALSYM FLS_OUT_OF_INDEXES}
  2504. function FlsAlloc(lpCallback: PFLS_CALLBACK_FUNCTION): DWORD; stdcall;
  2505. {$EXTERNALSYM FlsAlloc}
  2506. function FlsGetValue(dwFlsIndex: DWORD): DWORD; stdcall;
  2507. {$EXTERNALSYM FlsGetValue}
  2508. function FlsSetValue(dwFlsIndex: DWORD; lpFlsData: PVOID): DWORD; stdcall;
  2509. {$EXTERNALSYM FlsSetValue}
  2510. function FlsFree(dwFlsIndex: DWORD): DWORD; stdcall;
  2511. {$EXTERNALSYM FlsFree}
  2512. const
  2513. TLS_OUT_OF_INDEXES = DWORD($FFFFFFFF);
  2514. {$EXTERNALSYM TLS_OUT_OF_INDEXES}
  2515. function TlsAlloc: DWORD; stdcall;
  2516. {$EXTERNALSYM TlsAlloc}
  2517. function TlsGetValue(dwTlsIndex: DWORD): LPVOID; stdcall;
  2518. {$EXTERNALSYM TlsGetValue}
  2519. function TlsSetValue(dwTlsIndex: DWORD; lpTlsValue: LPVOID): BOOL; stdcall;
  2520. {$EXTERNALSYM TlsSetValue}
  2521. function TlsFree(dwTlsIndex: DWORD): BOOL; stdcall;
  2522. {$EXTERNALSYM TlsFree}
  2523. type
  2524. LPOVERLAPPED_COMPLETION_ROUTINE = procedure(dwErrorCode: DWORD;
  2525. dwNumberOfBytesTransfered: DWORD; lpOverlapped: LPOVERLAPPED); stdcall;
  2526. {$EXTERNALSYM LPOVERLAPPED_COMPLETION_ROUTINE}
  2527. TOverlappedCompletionRoutine = LPOVERLAPPED_COMPLETION_ROUTINE;
  2528. function SleepEx(dwMilliseconds: DWORD; bAlertable: BOOL): DWORD; stdcall;
  2529. {$EXTERNALSYM SleepEx}
  2530. function WaitForSingleObjectEx(hHandle: HANDLE; dwMilliseconds: DWORD;
  2531. bAlertable: BOOL): DWORD; stdcall;
  2532. {$EXTERNALSYM WaitForSingleObjectEx}
  2533. function WaitForMultipleObjectsEx(nCount: DWORD; lpHandles: PHANDLE;
  2534. bWaitAll: BOOL; dwMilliseconds: DWORD; bAlertable: BOOL): DWORD; stdcall;
  2535. {$EXTERNALSYM WaitForMultipleObjectsEx}
  2536. function SignalObjectAndWait(hObjectToSignal: HANDLE; hObjectToWaitOn: HANDLE;
  2537. dwMilliseconds: DWORD; bAlertable: BOOL): DWORD; stdcall;
  2538. {$EXTERNALSYM SignalObjectAndWait}
  2539. function ReadFileEx(hFile: HANDLE; lpBuffer: LPVOID; nNumberOfBytesToRead: DWORD;
  2540. lpOverlapped: LPOVERLAPPED; lpCompletionRoutine: LPOVERLAPPED_COMPLETION_ROUTINE): BOOL; stdcall;
  2541. {$EXTERNALSYM ReadFileEx}
  2542. function WriteFileEx(hFile: HANDLE; lpBuffer: LPCVOID; nNumberOfBytesToWrite: DWORD;
  2543. lpOverlapped: LPOVERLAPPED; lpCompletionRoutine: LPOVERLAPPED_COMPLETION_ROUTINE): BOOL; stdcall;
  2544. {$EXTERNALSYM WriteFileEx}
  2545. function BackupRead(hFile: HANDLE; lpBuffer: LPBYTE;
  2546. nNumberOfBytesToRead: DWORD; var lpNumberOfBytesRead: DWORD;
  2547. bAbort, bProcessSecurity: BOOL; var lpContext: LPVOID): BOOL; stdcall;
  2548. {$EXTERNALSYM BackupRead}
  2549. function BackupSeek(hFile: HANDLE; dwLowBytesToSeek, dwHighBytesToSeek: DWORD;
  2550. var lpdwLowByteSeeked, lpdwHighByteSeeked: DWORD; var lpContext: LPVOID): BOOL; stdcall;
  2551. {$EXTERNALSYM BackupSeek}
  2552. function BackupWrite(hFile: HANDLE; lpBuffer: LPBYTE; nNumberOfBytesToWrite: DWORD;
  2553. var lpNumberOfBytesWritten: DWORD; bAbort, bProcessSecurity: BOOL;
  2554. var lpContext: LPVOID): BOOL; stdcall;
  2555. {$EXTERNALSYM BackupWrite}
  2556. //
  2557. // Stream id structure
  2558. //
  2559. type
  2560. LPWIN32_STREAM_ID = ^WIN32_STREAM_ID;
  2561. {$EXTERNALSYM LPWIN32_STREAM_ID}
  2562. _WIN32_STREAM_ID = record
  2563. dwStreamId: DWORD;
  2564. dwStreamAttributes: DWORD;
  2565. Size: TLargeInteger;
  2566. dwStreamNameSize: DWORD;
  2567. cStreamName: array [0..ANYSIZE_ARRAY - 1] of WCHAR;
  2568. end;
  2569. {$EXTERNALSYM _WIN32_STREAM_ID}
  2570. WIN32_STREAM_ID = _WIN32_STREAM_ID;
  2571. {$EXTERNALSYM WIN32_STREAM_ID}
  2572. TWin32StreamId = WIN32_STREAM_ID;
  2573. PWin32StreamId = LPWIN32_STREAM_ID;
  2574. //
  2575. // Stream Ids
  2576. //
  2577. const
  2578. BACKUP_INVALID = $00000000;
  2579. {$EXTERNALSYM BACKUP_INVALID}
  2580. BACKUP_DATA = $00000001;
  2581. {$EXTERNALSYM BACKUP_DATA}
  2582. BACKUP_EA_DATA = $00000002;
  2583. {$EXTERNALSYM BACKUP_EA_DATA}
  2584. BACKUP_SECURITY_DATA = $00000003;
  2585. {$EXTERNALSYM BACKUP_SECURITY_DATA}
  2586. BACKUP_ALTERNATE_DATA = $00000004;
  2587. {$EXTERNALSYM BACKUP_ALTERNATE_DATA}
  2588. BACKUP_LINK = $00000005;
  2589. {$EXTERNALSYM BACKUP_LINK}
  2590. BACKUP_PROPERTY_DATA = $00000006;
  2591. {$EXTERNALSYM BACKUP_PROPERTY_DATA}
  2592. BACKUP_OBJECT_ID = $00000007;
  2593. {$EXTERNALSYM BACKUP_OBJECT_ID}
  2594. BACKUP_REPARSE_DATA = $00000008;
  2595. {$EXTERNALSYM BACKUP_REPARSE_DATA}
  2596. BACKUP_SPARSE_BLOCK = $00000009;
  2597. {$EXTERNALSYM BACKUP_SPARSE_BLOCK}
  2598. //
  2599. // Stream Attributes
  2600. //
  2601. const
  2602. STREAM_NORMAL_ATTRIBUTE = $00000000;
  2603. {$EXTERNALSYM STREAM_NORMAL_ATTRIBUTE}
  2604. STREAM_MODIFIED_WHEN_READ = $00000001;
  2605. {$EXTERNALSYM STREAM_MODIFIED_WHEN_READ}
  2606. STREAM_CONTAINS_SECURITY = $00000002;
  2607. {$EXTERNALSYM STREAM_CONTAINS_SECURITY}
  2608. STREAM_CONTAINS_PROPERTIES = $00000004;
  2609. {$EXTERNALSYM STREAM_CONTAINS_PROPERTIES}
  2610. STREAM_SPARSE_ATTRIBUTE = $00000008;
  2611. {$EXTERNALSYM STREAM_SPARSE_ATTRIBUTE}
  2612. function ReadFileScatter(hFile: HANDLE; aSegmentArray: PFILE_SEGMENT_ELEMENT;
  2613. nNumberOfBytesToRead: DWORD; lpReserved: LPDWORD; lpOverlapped: LPOVERLAPPED): BOOL; stdcall;
  2614. {$EXTERNALSYM ReadFileScatter}
  2615. function WriteFileGather(hFile: HANDLE; aSegmentArray: PFILE_SEGMENT_ELEMENT;
  2616. nNumberOfBytesToWrite: DWORD; lpReserved: LPDWORD; lpOverlapped: LPOVERLAPPED): BOOL; stdcall;
  2617. {$EXTERNALSYM WriteFileGather}
  2618. //
  2619. // Dual Mode API below this line. Dual Mode Structures also included.
  2620. //
  2621. const
  2622. STARTF_USESHOWWINDOW = $00000001;
  2623. {$EXTERNALSYM STARTF_USESHOWWINDOW}
  2624. STARTF_USESIZE = $00000002;
  2625. {$EXTERNALSYM STARTF_USESIZE}
  2626. STARTF_USEPOSITION = $00000004;
  2627. {$EXTERNALSYM STARTF_USEPOSITION}
  2628. STARTF_USECOUNTCHARS = $00000008;
  2629. {$EXTERNALSYM STARTF_USECOUNTCHARS}
  2630. STARTF_USEFILLATTRIBUTE = $00000010;
  2631. {$EXTERNALSYM STARTF_USEFILLATTRIBUTE}
  2632. STARTF_RUNFULLSCREEN = $00000020; // ignored for non-x86 platforms
  2633. {$EXTERNALSYM STARTF_RUNFULLSCREEN}
  2634. STARTF_FORCEONFEEDBACK = $00000040;
  2635. {$EXTERNALSYM STARTF_FORCEONFEEDBACK}
  2636. STARTF_FORCEOFFFEEDBACK = $00000080;
  2637. {$EXTERNALSYM STARTF_FORCEOFFFEEDBACK}
  2638. STARTF_USESTDHANDLES = $00000100;
  2639. {$EXTERNALSYM STARTF_USESTDHANDLES}
  2640. STARTF_USEHOTKEY = $00000200;
  2641. {$EXTERNALSYM STARTF_USEHOTKEY}
  2642. type
  2643. LPSTARTUPINFOA = ^STARTUPINFOA;
  2644. {$EXTERNALSYM LPSTARTUPINFOA}
  2645. _STARTUPINFOA = record
  2646. cb: DWORD;
  2647. lpReserved: LPSTR;
  2648. lpDesktop: LPSTR;
  2649. lpTitle: LPSTR;
  2650. dwX: DWORD;
  2651. dwY: DWORD;
  2652. dwXSize: DWORD;
  2653. dwYSize: DWORD;
  2654. dwXCountChars: DWORD;
  2655. dwYCountChars: DWORD;
  2656. dwFillAttribute: DWORD;
  2657. dwFlags: DWORD;
  2658. wShowWindow: WORD;
  2659. cbReserved2: WORD;
  2660. lpReserved2: LPBYTE;
  2661. hStdInput: HANDLE;
  2662. hStdOutput: HANDLE;
  2663. hStdError: HANDLE;
  2664. end;
  2665. {$EXTERNALSYM _STARTUPINFOA}
  2666. STARTUPINFOA = _STARTUPINFOA;
  2667. {$EXTERNALSYM STARTUPINFOA}
  2668. TStartupInfoA = STARTUPINFOA;
  2669. PStartupInfoA = LPSTARTUPINFOA;
  2670. LPSTARTUPINFOW = ^STARTUPINFOW;
  2671. {$EXTERNALSYM LPSTARTUPINFOW}
  2672. _STARTUPINFOW = record
  2673. cb: DWORD;
  2674. lpReserved: LPWSTR;
  2675. lpDesktop: LPWSTR;
  2676. lpTitle: LPWSTR;
  2677. dwX: DWORD;
  2678. dwY: DWORD;
  2679. dwXSize: DWORD;
  2680. dwYSize: DWORD;
  2681. dwXCountChars: DWORD;
  2682. dwYCountChars: DWORD;
  2683. dwFillAttribute: DWORD;
  2684. dwFlags: DWORD;
  2685. wShowWindow: WORD;
  2686. cbReserved2: WORD;
  2687. lpReserved2: LPBYTE;
  2688. hStdInput: HANDLE;
  2689. hStdOutput: HANDLE;
  2690. hStdError: HANDLE;
  2691. end;
  2692. {$EXTERNALSYM _STARTUPINFOW}
  2693. STARTUPINFOW = _STARTUPINFOW;
  2694. {$EXTERNALSYM STARTUPINFOW}
  2695. TStartupInfoW = STARTUPINFOW;
  2696. PStartupInfoW = LPSTARTUPINFOW;
  2697. {$IFDEF UNICODE}
  2698. STARTUPINFO = STARTUPINFOW;
  2699. {$EXTERNALSYM STARTUPINFO}
  2700. LPSTARTUPINFO = LPSTARTUPINFOW;
  2701. {$EXTERNALSYM LPSTARTUPINFO}
  2702. TStartupInfo = TStartupInfoW;
  2703. PStartupInfo = PStartupInfoW;
  2704. {$ELSE}
  2705. STARTUPINFO = STARTUPINFOA;
  2706. {$EXTERNALSYM STARTUPINFO}
  2707. LPSTARTUPINFO = LPSTARTUPINFOA;
  2708. {$EXTERNALSYM LPSTARTUPINFO}
  2709. TStartupInfo = TStartupInfoA;
  2710. PStartupInfo = PStartupInfoA;
  2711. {$ENDIF UNICODE}
  2712. const
  2713. SHUTDOWN_NORETRY = $00000001;
  2714. {$EXTERNALSYM SHUTDOWN_NORETRY}
  2715. type
  2716. PWIN32_FIND_DATAA = ^WIN32_FIND_DATAA;
  2717. {$EXTERNALSYM PWIN32_FIND_DATAA}
  2718. _WIN32_FIND_DATAA = record
  2719. dwFileAttributes: DWORD;
  2720. ftCreationTime: FILETIME;
  2721. ftLastAccessTime: FILETIME;
  2722. ftLastWriteTime: FILETIME;
  2723. nFileSizeHigh: DWORD;
  2724. nFileSizeLow: DWORD;
  2725. dwReserved0: DWORD;
  2726. dwReserved1: DWORD;
  2727. cFileName: array [0..MAX_PATH - 1] of CHAR;
  2728. cAlternateFileName: array [0..13] of CHAR;
  2729. end;
  2730. {$EXTERNALSYM _WIN32_FIND_DATAA}
  2731. WIN32_FIND_DATAA = _WIN32_FIND_DATAA;
  2732. {$EXTERNALSYM WIN32_FIND_DATAA}
  2733. LPWIN32_FIND_DATAA = ^WIN32_FIND_DATAA;
  2734. {$EXTERNALSYM LPWIN32_FIND_DATAA}
  2735. TWin32FindDataA = WIN32_FIND_DATAA;
  2736. PWin32FindDataA = PWIN32_FIND_DATAA;
  2737. PWIN32_FIND_DATAW = ^WIN32_FIND_DATAW;
  2738. {$EXTERNALSYM PWIN32_FIND_DATAW}
  2739. _WIN32_FIND_DATAW = record
  2740. dwFileAttributes: DWORD;
  2741. ftCreationTime: FILETIME;
  2742. ftLastAccessTime: FILETIME;
  2743. ftLastWriteTime: FILETIME;
  2744. nFileSizeHigh: DWORD;
  2745. nFileSizeLow: DWORD;
  2746. dwReserved0: DWORD;
  2747. dwReserved1: DWORD;
  2748. cFileName: array [0..MAX_PATH - 1] of WCHAR;
  2749. cAlternateFileName: array [0..13] of WCHAR;
  2750. end;
  2751. {$EXTERNALSYM _WIN32_FIND_DATAW}
  2752. WIN32_FIND_DATAW = _WIN32_FIND_DATAW;
  2753. {$EXTERNALSYM WIN32_FIND_DATAW}
  2754. LPWIN32_FIND_DATAW = ^WIN32_FIND_DATAW;
  2755. {$EXTERNALSYM LPWIN32_FIND_DATAW}
  2756. TWin32FindDataW = WIN32_FIND_DATAW;
  2757. PWin32FindDataW = PWIN32_FIND_DATAW;
  2758. {$IFDEF UNICODE}
  2759. WIN32_FIND_DATA = WIN32_FIND_DATAW;
  2760. {$EXTERNALSYM WIN32_FIND_DATA}
  2761. PWIN32_FIND_DATA = PWIN32_FIND_DATAW;
  2762. {$EXTERNALSYM PWIN32_FIND_DATA}
  2763. LPWIN32_FIND_DATA = LPWIN32_FIND_DATAW;
  2764. {$EXTERNALSYM LPWIN32_FIND_DATA}
  2765. TWin32FindData = TWin32FindDataW;
  2766. PWin32FindData = PWin32FindDataW;
  2767. {$ELSE}
  2768. WIN32_FIND_DATA = WIN32_FIND_DATAA;
  2769. {$EXTERNALSYM WIN32_FIND_DATA}
  2770. PWIN32_FIND_DATA = PWIN32_FIND_DATAA;
  2771. {$EXTERNALSYM PWIN32_FIND_DATA}
  2772. LPWIN32_FIND_DATA = LPWIN32_FIND_DATAA;
  2773. {$EXTERNALSYM LPWIN32_FIND_DATA}
  2774. TWin32FindData = TWin32FindDataA;
  2775. PWin32FindData = PWin32FindDataA;
  2776. {$ENDIF UNICODE}
  2777. LPWIN32_FILE_ATTRIBUTE_DATA = ^WIN32_FILE_ATTRIBUTE_DATA;
  2778. {$EXTERNALSYM LPWIN32_FILE_ATTRIBUTE_DATA}
  2779. _WIN32_FILE_ATTRIBUTE_DATA = record
  2780. dwFileAttributes: DWORD;
  2781. ftCreationTime: FILETIME;
  2782. ftLastAccessTime: FILETIME;
  2783. ftLastWriteTime: FILETIME;
  2784. nFileSizeHigh: DWORD;
  2785. nFileSizeLow: DWORD;
  2786. end;
  2787. {$EXTERNALSYM _WIN32_FILE_ATTRIBUTE_DATA}
  2788. WIN32_FILE_ATTRIBUTE_DATA = _WIN32_FILE_ATTRIBUTE_DATA;
  2789. {$EXTERNALSYM WIN32_FILE_ATTRIBUTE_DATA}
  2790. TWin32FileAttributeData = WIN32_FILE_ATTRIBUTE_DATA;
  2791. PWin32FileAttributeData = LPWIN32_FILE_ATTRIBUTE_DATA;
  2792. function CreateMutexA(lpMutexAttributes: LPSECURITY_ATTRIBUTES; bInitialOwner: BOOL; lpName: LPCSTR): HANDLE;
  2793. {$EXTERNALSYM CreateMutexA}
  2794. function CreateMutexW(lpMutexAttributes: LPSECURITY_ATTRIBUTES; bInitialOwner: BOOL; lpName: LPCWSTR): HANDLE;
  2795. {$EXTERNALSYM CreateMutexW}
  2796. function CreateMutex(lpMutexAttributes: LPSECURITY_ATTRIBUTES;
  2797. bInitialOwner: BOOL; lpName: LPCTSTR): HANDLE;
  2798. {$EXTERNALSYM CreateMutex}
  2799. function OpenMutexA(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: LPCSTR): HANDLE; stdcall;
  2800. {$EXTERNALSYM OpenMutexA}
  2801. function OpenMutexW(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: LPCWSTR): HANDLE; stdcall;
  2802. {$EXTERNALSYM OpenMutexW}
  2803. function OpenMutex(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: LPCTSTR): HANDLE; stdcall;
  2804. {$EXTERNALSYM OpenMutex}
  2805. function CreateEventA(lpEventAttributes: LPSECURITY_ATTRIBUTES;
  2806. bManualReset, bInitialState: BOOL; lpName: LPCSTR): HANDLE; stdcall;
  2807. {$EXTERNALSYM CreateEventA}
  2808. function CreateEventW(lpEventAttributes: LPSECURITY_ATTRIBUTES;
  2809. bManualReset, bInitialState: BOOL; lpName: LPCWSTR): HANDLE; stdcall;
  2810. {$EXTERNALSYM CreateEventW}
  2811. function CreateEvent(lpEventAttributes: LPSECURITY_ATTRIBUTES;
  2812. bManualReset, bInitialState: BOOL; lpName: LPCTSTR): HANDLE; stdcall;
  2813. {$EXTERNALSYM CreateEvent}
  2814. function OpenEventA(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: LPCSTR): HANDLE; stdcall;
  2815. {$EXTERNALSYM OpenEventA}
  2816. function OpenEventW(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: LPCWSTR): HANDLE; stdcall;
  2817. {$EXTERNALSYM OpenEventW}
  2818. function OpenEvent(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: LPCTSTR): HANDLE; stdcall;
  2819. {$EXTERNALSYM OpenEvent}
  2820. function CreateSemaphoreA(lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES;
  2821. lInitialCount, lMaximumCount: LONG; lpName: LPCSTR): HANDLE; stdcall;
  2822. {$EXTERNALSYM CreateSemaphoreA}
  2823. function CreateSemaphoreW(lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES;
  2824. lInitialCount, lMaximumCount: LONG; lpName: LPCWSTR): HANDLE; stdcall;
  2825. {$EXTERNALSYM CreateSemaphoreW}
  2826. function CreateSemaphore(lpSemaphoreAttributes: LPSECURITY_ATTRIBUTES;
  2827. lInitialCount, lMaximumCount: LONG; lpName: LPCTSTR): HANDLE; stdcall;
  2828. {$EXTERNALSYM CreateSemaphore}
  2829. function OpenSemaphoreA(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
  2830. lpName: LPCSTR): HANDLE; stdcall;
  2831. {$EXTERNALSYM OpenSemaphoreA}
  2832. function OpenSemaphoreW(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
  2833. lpName: LPCWSTR): HANDLE; stdcall;
  2834. {$EXTERNALSYM OpenSemaphoreW}
  2835. function OpenSemaphore(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
  2836. lpName: LPCTSTR): HANDLE; stdcall;
  2837. {$EXTERNALSYM OpenSemaphore}
  2838. type
  2839. PTIMERAPCROUTINE = procedure(lpArgToCompletionRoutine: LPVOID;
  2840. dwTimerLowValue, dwTimerHighValue: DWORD); stdcall;
  2841. {$EXTERNALSYM PTIMERAPCROUTINE}
  2842. TTimerApcRoutine = PTIMERAPCROUTINE;
  2843. function CreateWaitableTimerA(lpTimerAttributes: LPSECURITY_ATTRIBUTES;
  2844. bManualReset: BOOL; lpTimerName: LPCSTR): HANDLE; stdcall;
  2845. {$EXTERNALSYM CreateWaitableTimerA}
  2846. function CreateWaitableTimerW(lpTimerAttributes: LPSECURITY_ATTRIBUTES;
  2847. bManualReset: BOOL; lpTimerName: LPCWSTR): HANDLE; stdcall;
  2848. {$EXTERNALSYM CreateWaitableTimerW}
  2849. function CreateWaitableTimer(lpTimerAttributes: LPSECURITY_ATTRIBUTES;
  2850. bManualReset: BOOL; lpTimerName: LPCTSTR): HANDLE; stdcall;
  2851. {$EXTERNALSYM CreateWaitableTimer}
  2852. function OpenWaitableTimerA(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
  2853. lpTimerName: LPCSTR): HANDLE; stdcall;
  2854. {$EXTERNALSYM OpenWaitableTimerA}
  2855. function OpenWaitableTimerW(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
  2856. lpTimerName: LPCWSTR): HANDLE; stdcall;
  2857. {$EXTERNALSYM OpenWaitableTimerW}
  2858. function OpenWaitableTimer(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
  2859. lpTimerName: LPCTSTR): HANDLE; stdcall;
  2860. {$EXTERNALSYM OpenWaitableTimer}
  2861. function SetWaitableTimer(hTimer: HANDLE; var lpDueTime: LARGE_INTEGER;
  2862. lPeriod: LONG; pfnCompletionRoutine: PTIMERAPCROUTINE;
  2863. lpArgToCompletionRoutine: LPVOID; fResume: BOOL): BOOL; stdcall;
  2864. {$EXTERNALSYM SetWaitableTimer}
  2865. function CancelWaitableTimer(hTimer: HANDLE): BOOL; stdcall;
  2866. {$EXTERNALSYM CancelWaitableTimer}
  2867. function CreateFileMappingA(hFile: HANDLE; lpFileMappingAttributes: LPSECURITY_ATTRIBUTES;
  2868. flProtect, dwMaximumSizeHigh, dwMaximumSizeLow: DWORD; lpName: LPCSTR): HANDLE; stdcall;
  2869. {$EXTERNALSYM CreateFileMappingA}
  2870. function CreateFileMappingW(hFile: HANDLE; lpFileMappingAttributes: LPSECURITY_ATTRIBUTES;
  2871. flProtect, dwMaximumSizeHigh, dwMaximumSizeLow: DWORD; lpName: LPCWSTR): HANDLE; stdcall;
  2872. {$EXTERNALSYM CreateFileMappingW}
  2873. function CreateFileMapping(hFile: HANDLE; lpFileMappingAttributes: LPSECURITY_ATTRIBUTES;
  2874. flProtect, dwMaximumSizeHigh, dwMaximumSizeLow: DWORD; lpName: LPCTSTR): HANDLE; stdcall;
  2875. {$EXTERNALSYM CreateFileMapping}
  2876. function OpenFileMappingA(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
  2877. lpName: LPCSTR): HANDLE; stdcall;
  2878. {$EXTERNALSYM OpenFileMappingA}
  2879. function OpenFileMappingW(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
  2880. lpName: LPCWSTR): HANDLE; stdcall;
  2881. {$EXTERNALSYM OpenFileMappingW}
  2882. function OpenFileMapping(dwDesiredAccess: DWORD; bInheritHandle: BOOL;
  2883. lpName: LPCTSTR): HANDLE; stdcall;
  2884. {$EXTERNALSYM OpenFileMapping}
  2885. function GetLogicalDriveStringsA(nBufferLength: DWORD; lpBuffer: LPSTR): DWORD; stdcall;
  2886. {$EXTERNALSYM GetLogicalDriveStringsA}
  2887. function GetLogicalDriveStringsW(nBufferLength: DWORD; lpBuffer: LPWSTR): DWORD; stdcall;
  2888. {$EXTERNALSYM GetLogicalDriveStringsW}
  2889. function GetLogicalDriveStrings(nBufferLength: DWORD; lpBuffer: LPTSTR): DWORD; stdcall;
  2890. {$EXTERNALSYM GetLogicalDriveStrings}
  2891. type
  2892. _MEMORY_RESOURCE_NOTIFICATION_TYPE = (
  2893. LowMemoryResourceNotification,
  2894. HighMemoryResourceNotification);
  2895. {$EXTERNALSYM _MEMORY_RESOURCE_NOTIFICATION_TYPE}
  2896. MEMORY_RESOURCE_NOTIFICATION_TYPE = _MEMORY_RESOURCE_NOTIFICATION_TYPE;
  2897. {$EXTERNALSYM MEMORY_RESOURCE_NOTIFICATION_TYPE}
  2898. TMemoryResourceNotification = MEMORY_RESOURCE_NOTIFICATION_TYPE;
  2899. function CreateMemoryResourceNotification(NotificationType: MEMORY_RESOURCE_NOTIFICATION_TYPE): HANDLE; stdcall;
  2900. {$EXTERNALSYM CreateMemoryResourceNotification}
  2901. function QueryMemoryResourceNotification(ResourceNotificationHandle: HANDLE;
  2902. ResourceState: BOOL): BOOL; stdcall;
  2903. {$EXTERNALSYM QueryMemoryResourceNotification}
  2904. function LoadLibraryA(lpLibFileName: LPCSTR): HMODULE; stdcall;
  2905. {$EXTERNALSYM LoadLibraryA}
  2906. function LoadLibraryW(lpLibFileName: LPCWSTR): HMODULE; stdcall;
  2907. {$EXTERNALSYM LoadLibraryW}
  2908. {$IFNDEF JWA_INCLUDEMODE}
  2909. function LoadLibrary(lpLibFileName: LPCTSTR): HMODULE; stdcall;
  2910. {$EXTERNALSYM LoadLibrary}
  2911. {$ENDIF !JWA_INCLUDEMODE}
  2912. function LoadLibraryExA(lpLibFileName: LPCSTR; hFile: HANDLE; dwFlags: DWORD): HMODULE; stdcall;
  2913. {$EXTERNALSYM LoadLibraryExA}
  2914. function LoadLibraryExW(lpLibFileName: LPCWSTR; hFile: HANDLE; dwFlags: DWORD): HMODULE; stdcall;
  2915. {$EXTERNALSYM LoadLibraryExW}
  2916. function LoadLibraryEx(lpLibFileName: LPCTSTR; hFile: HANDLE; dwFlags: DWORD): HMODULE; stdcall;
  2917. {$EXTERNALSYM LoadLibraryEx}
  2918. const
  2919. DONT_RESOLVE_DLL_REFERENCES = $00000001;
  2920. {$EXTERNALSYM DONT_RESOLVE_DLL_REFERENCES}
  2921. LOAD_LIBRARY_AS_DATAFILE = $00000002;
  2922. {$EXTERNALSYM LOAD_LIBRARY_AS_DATAFILE}
  2923. LOAD_WITH_ALTERED_SEARCH_PATH = $00000008;
  2924. {$EXTERNALSYM LOAD_WITH_ALTERED_SEARCH_PATH}
  2925. LOAD_IGNORE_CODE_AUTHZ_LEVEL = $00000010;
  2926. {$EXTERNALSYM LOAD_IGNORE_CODE_AUTHZ_LEVEL}
  2927. function GetModuleFileNameA(hModule: HMODULE; lpFilename: LPSTR; nSize: DWORD): DWORD; stdcall;
  2928. {$EXTERNALSYM GetModuleFileNameA}
  2929. function GetModuleFileNameW(hModule: HMODULE; lpFilename: LPWSTR; nSize: DWORD): DWORD; stdcall;
  2930. {$EXTERNALSYM GetModuleFileNameW}
  2931. function GetModuleFileName(hModule: HMODULE; lpFilename: LPTSTR; nSize: DWORD): DWORD; stdcall;
  2932. {$EXTERNALSYM GetModuleFileName}
  2933. function GetModuleHandleA(lpModuleName: LPCSTR): HMODULE; stdcall;
  2934. {$EXTERNALSYM GetModuleHandleA}
  2935. function GetModuleHandleW(lpModuleName: LPCWSTR): HMODULE; stdcall;
  2936. {$EXTERNALSYM GetModuleHandleW}
  2937. {$IFNDEF JWA_INCLUDEMODE}
  2938. function GetModuleHandle(lpModuleName: LPCTSTR): HMODULE; stdcall;
  2939. {$EXTERNALSYM GetModuleHandle}
  2940. {$ENDIF !JWA_INCLUDEMODE}
  2941. const
  2942. GET_MODULE_HANDLE_EX_FLAG_PIN = $00000001;
  2943. {$EXTERNALSYM GET_MODULE_HANDLE_EX_FLAG_PIN}
  2944. GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = $00000002;
  2945. {$EXTERNALSYM GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT}
  2946. GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = $00000004;
  2947. {$EXTERNALSYM GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS}
  2948. type
  2949. PGET_MODULE_HANDLE_EXA = function(dwFlags: DWORD; lpModuleName: LPCSTR; var phModule: HMODULE): BOOL; stdcall;
  2950. {$EXTERNALSYM PGET_MODULE_HANDLE_EXA}
  2951. PGET_MODULE_HANDLE_EXW = function(dwFlags: DWORD; lpModuleName: LPCWSTR; var phModule: HMODULE): BOOL; stdcall;
  2952. {$EXTERNALSYM PGET_MODULE_HANDLE_EXW}
  2953. {$IFDEF UNICODE}
  2954. PGET_MODULE_HANDLE_EX = PGET_MODULE_HANDLE_EXW;
  2955. {$EXTERNALSYM PGET_MODULE_HANDLE_EX}
  2956. {$ELSE}
  2957. PGET_MODULE_HANDLE_EX = PGET_MODULE_HANDLE_EXA;
  2958. {$EXTERNALSYM PGET_MODULE_HANDLE_EX}
  2959. {$ENDIF UNICODE}
  2960. function GetModuleHandleExA(dwFlags: DWORD; lpModuleName: LPCSTR; var phModule: HMODULE): BOOL; stdcall;
  2961. {$EXTERNALSYM GetModuleHandleExA}
  2962. function GetModuleHandleExW(dwFlags: DWORD; lpModuleName: LPCWSTR; var phModule: HMODULE): BOOL; stdcall;
  2963. {$EXTERNALSYM GetModuleHandleExW}
  2964. function GetModuleHandleEx(dwFlags: DWORD; lpModuleName: LPCTSTR; var phModule: HMODULE): BOOL; stdcall;
  2965. {$EXTERNALSYM GetModuleHandleEx}
  2966. function NeedCurrentDirectoryForExePathA(ExeName: LPCSTR): BOOL; stdcall;
  2967. {$EXTERNALSYM NeedCurrentDirectoryForExePathA}
  2968. function NeedCurrentDirectoryForExePathW(ExeName: LPCWSTR): BOOL; stdcall;
  2969. {$EXTERNALSYM NeedCurrentDirectoryForExePathW}
  2970. function NeedCurrentDirectoryForExePath(ExeName: LPCTSTR): BOOL; stdcall;
  2971. {$EXTERNALSYM NeedCurrentDirectoryForExePath}
  2972. function CreateProcessA(lpApplicationName: LPCSTR; lpCommandLine: LPSTR;
  2973. lpProcessAttributes, lpThreadAttributes: LPSECURITY_ATTRIBUTES;
  2974. bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: LPVOID;
  2975. lpCurrentDirectory: LPCSTR; const lpStartupInfo: STARTUPINFOA;
  2976. var lpProcessInformation: PROCESS_INFORMATION): BOOL; stdcall;
  2977. {$EXTERNALSYM CreateProcessA}
  2978. function CreateProcessW(lpApplicationName: LPCWSTR; lpCommandLine: LPWSTR;
  2979. lpProcessAttributes, lpThreadAttributes: LPSECURITY_ATTRIBUTES;
  2980. bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: LPVOID;
  2981. lpCurrentDirectory: LPCWSTR; const lpStartupInfo: STARTUPINFOW;
  2982. var lpProcessInformation: PROCESS_INFORMATION): BOOL; stdcall;
  2983. {$EXTERNALSYM CreateProcessW}
  2984. function CreateProcess(lpApplicationName: LPCTSTR; lpCommandLine: LPTSTR;
  2985. lpProcessAttributes, lpThreadAttributes: LPSECURITY_ATTRIBUTES;
  2986. bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: LPVOID;
  2987. lpCurrentDirectory: LPCTSTR; const lpStartupInfo: STARTUPINFO;
  2988. var lpProcessInformation: PROCESS_INFORMATION): BOOL; stdcall;
  2989. {$EXTERNALSYM CreateProcess}
  2990. function SetProcessShutdownParameters(dwLevel, dwFlags: DWORD): BOOL; stdcall;
  2991. {$EXTERNALSYM SetProcessShutdownParameters}
  2992. function GetProcessShutdownParameters(var lpdwLevel, lpdwFlags: DWORD): BOOL; stdcall;
  2993. {$EXTERNALSYM GetProcessShutdownParameters}
  2994. function GetProcessVersion(ProcessId: DWORD): DWORD; stdcall;
  2995. {$EXTERNALSYM GetProcessVersion}
  2996. procedure FatalAppExitA(uAction: UINT; lpMessageText: LPCSTR); stdcall;
  2997. {$EXTERNALSYM FatalAppExitA}
  2998. procedure FatalAppExitW(uAction: UINT; lpMessageText: LPCWSTR); stdcall;
  2999. {$EXTERNALSYM FatalAppExitW}
  3000. procedure FatalAppExit(uAction: UINT; lpMessageText: LPCTSTR); stdcall;
  3001. {$EXTERNALSYM FatalAppExit}
  3002. procedure GetStartupInfoA(var lpStartupInfo: STARTUPINFOA); stdcall;
  3003. {$EXTERNALSYM GetStartupInfoA}
  3004. procedure GetStartupInfoW(var lpStartupInfo: STARTUPINFOW); stdcall;
  3005. {$EXTERNALSYM GetStartupInfoW}
  3006. procedure GetStartupInfo(var lpStartupInfo: STARTUPINFO); stdcall;
  3007. {$EXTERNALSYM GetStartupInfo}
  3008. function GetCommandLineA: LPSTR; stdcall;
  3009. {$EXTERNALSYM GetCommandLineA}
  3010. function GetCommandLineW: LPWSTR; stdcall;
  3011. {$EXTERNALSYM GetCommandLineW}
  3012. function GetCommandLine: LPTSTR; stdcall;
  3013. {$EXTERNALSYM GetCommandLine}
  3014. function GetEnvironmentVariableA(lpName: LPCSTR; lpBuffer: LPSTR; nSize: DWORD): DWORD; stdcall;
  3015. {$EXTERNALSYM GetEnvironmentVariableA}
  3016. function GetEnvironmentVariableW(lpName: LPCWSTR; lpBuffer: LPWSTR; nSize: DWORD): DWORD; stdcall;
  3017. {$EXTERNALSYM GetEnvironmentVariableW}
  3018. function GetEnvironmentVariable(lpName: LPCTSTR; lpBuffer: LPTSTR; nSize: DWORD): DWORD; stdcall;
  3019. {$EXTERNALSYM GetEnvironmentVariable}
  3020. function SetEnvironmentVariableA(lpName, lpValue: LPCSTR): BOOL; stdcall;
  3021. {$EXTERNALSYM SetEnvironmentVariableA}
  3022. function SetEnvironmentVariableW(lpName, lpValue: LPCWSTR): BOOL; stdcall;
  3023. {$EXTERNALSYM SetEnvironmentVariableW}
  3024. function SetEnvironmentVariable(lpName, lpValue: LPCTSTR): BOOL; stdcall;
  3025. {$EXTERNALSYM SetEnvironmentVariable}
  3026. function ExpandEnvironmentStringsA(lpSrc: LPCSTR; lpDst: LPSTR; nSize: DWORD): DWORD; stdcall;
  3027. {$EXTERNALSYM ExpandEnvironmentStringsA}
  3028. function ExpandEnvironmentStringsW(lpSrc: LPCWSTR; lpDst: LPWSTR; nSize: DWORD): DWORD; stdcall;
  3029. {$EXTERNALSYM ExpandEnvironmentStringsW}
  3030. function ExpandEnvironmentStrings(lpSrc: LPCTSTR; lpDst: LPTSTR; nSize: DWORD): DWORD; stdcall;
  3031. {$EXTERNALSYM ExpandEnvironmentStrings}
  3032. function GetFirmwareEnvironmentVariableA(lpName, lpGuid: LPCSTR; pBuffer: PVOID;
  3033. nSize: DWORD): DWORD; stdcall;
  3034. {$EXTERNALSYM GetFirmwareEnvironmentVariableA}
  3035. function GetFirmwareEnvironmentVariableW(lpName, lpGuid: LPCWSTR; pBuffer: PVOID;
  3036. nSize: DWORD): DWORD; stdcall;
  3037. {$EXTERNALSYM GetFirmwareEnvironmentVariableW}
  3038. function GetFirmwareEnvironmentVariable(lpName, lpGuid: LPCTSTR; pBuffer: PVOID;
  3039. nSize: DWORD): DWORD; stdcall;
  3040. {$EXTERNALSYM GetFirmwareEnvironmentVariable}
  3041. function SetFirmwareEnvironmentVariableA(lpName, lpGuid: LPCSTR; pValue: PVOID;
  3042. nSize: DWORD): BOOL; stdcall;
  3043. {$EXTERNALSYM SetFirmwareEnvironmentVariableA}
  3044. function SetFirmwareEnvironmentVariableW(lpName, lpGuid: LPCWSTR; pValue: PVOID;
  3045. nSize: DWORD): BOOL; stdcall;
  3046. {$EXTERNALSYM SetFirmwareEnvironmentVariableW}
  3047. function SetFirmwareEnvironmentVariable(lpName, lpGuid: LPCTSTR; pValue: PVOID;
  3048. nSize: DWORD): BOOL; stdcall;
  3049. {$EXTERNALSYM SetFirmwareEnvironmentVariable}
  3050. procedure OutputDebugStringA(lpOutputString: LPCSTR); stdcall;
  3051. {$EXTERNALSYM OutputDebugStringA}
  3052. procedure OutputDebugStringW(lpOutputString: LPCWSTR); stdcall;
  3053. {$EXTERNALSYM OutputDebugStringW}
  3054. procedure OutputDebugString(lpOutputString: LPCTSTR); stdcall;
  3055. {$EXTERNALSYM OutputDebugString}
  3056. function FindResourceA(hModule: HMODULE; lpName, lpType: LPCSTR): HRSRC; stdcall;
  3057. {$EXTERNALSYM FindResourceA}
  3058. function FindResourceW(hModule: HMODULE; lpName, lpType: LPCWSTR): HRSRC; stdcall;
  3059. {$EXTERNALSYM FindResourceW}
  3060. function FindResource(hModule: HMODULE; lpName, lpType: LPCTSTR): HRSRC; stdcall;
  3061. {$EXTERNALSYM FindResource}
  3062. function FindResourceExA(hModule: HMODULE; lpType, lpName: LPCSTR; wLanguage: WORD): HRSRC; stdcall;
  3063. {$EXTERNALSYM FindResourceExA}
  3064. function FindResourceExW(hModule: HMODULE; lpType, lpName: LPCWSTR; wLanguage: WORD): HRSRC; stdcall;
  3065. {$EXTERNALSYM FindResourceExW}
  3066. function FindResourceEx(hModule: HMODULE; lpType, lpName: LPCTSTR; wLanguage: WORD): HRSRC; stdcall;
  3067. {$EXTERNALSYM FindResourceEx}
  3068. type
  3069. ENUMRESTYPEPROCA = function(hModule: HMODULE; lpType: LPSTR; lParam: LONG_PTR): BOOL; stdcall;
  3070. {$EXTERNALSYM ENUMRESTYPEPROCA}
  3071. ENUMRESTYPEPROCW = function(hModule: HMODULE; lpType: LPWSTR; lParam: LONG_PTR): BOOL; stdcall;
  3072. {$EXTERNALSYM ENUMRESTYPEPROCW}
  3073. ENUMRESTYPEPROC = function(hModule: HMODULE; lpType: LPTSTR; lParam: LONG_PTR): BOOL; stdcall;
  3074. {$EXTERNALSYM ENUMRESTYPEPROC}
  3075. TEnumResTypeProcA = ENUMRESTYPEPROCA;
  3076. TEnumResTypeProcW = ENUMRESTYPEPROCW;
  3077. TEnumResTypeProc = ENUMRESTYPEPROC;
  3078. ENUMRESNAMEPROCA = function(hModule: HMODULE; lpType: LPCSTR; lpName: LPSTR;
  3079. lParam: LONG_PTR): BOOL; stdcall;
  3080. {$EXTERNALSYM ENUMRESNAMEPROCA}
  3081. ENUMRESNAMEPROCW = function(hModule: HMODULE; lpType: LPCWSTR; lpName: LPWSTR;
  3082. lParam: LONG_PTR): BOOL; stdcall;
  3083. {$EXTERNALSYM ENUMRESNAMEPROCW}
  3084. ENUMRESNAMEPROC = function(hModule: HMODULE; lpType: LPCTSTR; lpName: LPTSTR;
  3085. lParam: LONG_PTR): BOOL; stdcall;
  3086. {$EXTERNALSYM ENUMRESNAMEPROC}
  3087. TEnumResNameProcA = ENUMRESNAMEPROCA;
  3088. TEnumResNameProcW = ENUMRESNAMEPROCW;
  3089. TEnumResNameProc = ENUMRESNAMEPROC;
  3090. ENUMRESLANGPROCA = function(hModule: HMODULE; lpType, lpName: LPCSTR;
  3091. wLanguage: WORD; lParam: LONG_PTR): BOOL; stdcall;
  3092. {$EXTERNALSYM ENUMRESLANGPROCA}
  3093. ENUMRESLANGPROCW = function(hModule: HMODULE; lpType, lpName: LPCWSTR;
  3094. wLanguage: WORD; lParam: LONG_PTR): BOOL; stdcall;
  3095. {$EXTERNALSYM ENUMRESLANGPROCW}
  3096. ENUMRESLANGPROC = function(hModule: HMODULE; lpType, lpName: LPCTSTR;
  3097. wLanguage: WORD; lParam: LONG_PTR): BOOL; stdcall;
  3098. {$EXTERNALSYM ENUMRESLANGPROC}
  3099. TEnumResLangProcA = ENUMRESLANGPROCA;
  3100. TEnumResLangProcW = ENUMRESLANGPROCW;
  3101. TEnumResLangProc = ENUMRESLANGPROC;
  3102. function EnumResourceTypesA(hModule: HMODULE; lpEnumFunc: ENUMRESTYPEPROCA;
  3103. lParam: LONG_PTR): BOOL; stdcall;
  3104. {$EXTERNALSYM EnumResourceTypesA}
  3105. function EnumResourceTypesW(hModule: HMODULE; lpEnumFunc: ENUMRESTYPEPROCW;
  3106. lParam: LONG_PTR): BOOL; stdcall;
  3107. {$EXTERNALSYM EnumResourceTypesW}
  3108. function EnumResourceTypes(hModule: HMODULE; lpEnumFunc: ENUMRESTYPEPROC;
  3109. lParam: LONG_PTR): BOOL; stdcall;
  3110. {$EXTERNALSYM EnumResourceTypes}
  3111. function EnumResourceNamesA(hModule: HMODULE; lpType: LPCSTR;
  3112. lpEnumFunc: ENUMRESNAMEPROCA; lParam: LONG_PTR): BOOL; stdcall;
  3113. {$EXTERNALSYM EnumResourceNamesA}
  3114. function EnumResourceNamesW(hModule: HMODULE; lpType: LPCWSTR;
  3115. lpEnumFunc: ENUMRESNAMEPROCW; lParam: LONG_PTR): BOOL; stdcall;
  3116. {$EXTERNALSYM EnumResourceNamesW}
  3117. function EnumResourceNames(hModule: HMODULE; lpType: LPCTSTR;
  3118. lpEnumFunc: ENUMRESNAMEPROC; lParam: LONG_PTR): BOOL; stdcall;
  3119. {$EXTERNALSYM EnumResourceNames}
  3120. function EnumResourceLanguagesA(hModule: HMODULE; lpType, lpName: LPCSTR;
  3121. lpEnumFunc: ENUMRESLANGPROCA; lParam: LONG_PTR): BOOL; stdcall;
  3122. {$EXTERNALSYM EnumResourceLanguagesA}
  3123. function EnumResourceLanguagesW(hModule: HMODULE; lpType, lpName: LPCWSTR;
  3124. lpEnumFunc: ENUMRESLANGPROCW; lParam: LONG_PTR): BOOL; stdcall;
  3125. {$EXTERNALSYM EnumResourceLanguagesW}
  3126. function EnumResourceLanguages(hModule: HMODULE; lpType, lpName: LPCTSTR;
  3127. lpEnumFunc: ENUMRESLANGPROC; lParam: LONG_PTR): BOOL; stdcall;
  3128. {$EXTERNALSYM EnumResourceLanguages}
  3129. function BeginUpdateResourceA(pFileName: LPCSTR; bDeleteExistingResources: BOOL): HANDLE; stdcall;
  3130. {$EXTERNALSYM BeginUpdateResourceA}
  3131. function BeginUpdateResourceW(pFileName: LPCWSTR; bDeleteExistingResources: BOOL): HANDLE; stdcall;
  3132. {$EXTERNALSYM BeginUpdateResourceW}
  3133. function BeginUpdateResource(pFileName: LPCTSTR; bDeleteExistingResources: BOOL): HANDLE; stdcall;
  3134. {$EXTERNALSYM BeginUpdateResource}
  3135. function UpdateResourceA(hUpdate: HANDLE; lpType, lpName: LPCSTR;
  3136. wLanguage: WORD; lpData: LPVOID; cbData: DWORD): BOOL; stdcall;
  3137. {$EXTERNALSYM UpdateResourceA}
  3138. function UpdateResourceW(hUpdate: HANDLE; lpType, lpName: LPCWSTR;
  3139. wLanguage: WORD; lpData: LPVOID; cbData: DWORD): BOOL; stdcall;
  3140. {$EXTERNALSYM UpdateResourceW}
  3141. function UpdateResource(hUpdate: HANDLE; lpType, lpName: LPCTSTR;
  3142. wLanguage: WORD; lpData: LPVOID; cbData: DWORD): BOOL; stdcall;
  3143. {$EXTERNALSYM UpdateResource}
  3144. function EndUpdateResourceA(hUpdate: HANDLE; fDiscard: BOOL): BOOL; stdcall;
  3145. {$EXTERNALSYM EndUpdateResourceA}
  3146. function EndUpdateResourceW(hUpdate: HANDLE; fDiscard: BOOL): BOOL; stdcall;
  3147. {$EXTERNALSYM EndUpdateResourceW}
  3148. function EndUpdateResource(hUpdate: HANDLE; fDiscard: BOOL): BOOL; stdcall;
  3149. {$EXTERNALSYM EndUpdateResource}
  3150. function GlobalAddAtomA(lpString: LPCSTR): ATOM; stdcall;
  3151. {$EXTERNALSYM GlobalAddAtomA}
  3152. function GlobalAddAtomW(lpString: LPCWSTR): ATOM; stdcall;
  3153. {$EXTERNALSYM GlobalAddAtomW}
  3154. function GlobalAddAtom(lpString: LPCTSTR): ATOM; stdcall;
  3155. {$EXTERNALSYM GlobalAddAtom}
  3156. function GlobalFindAtomA(lpString: LPCSTR): ATOM; stdcall;
  3157. {$EXTERNALSYM GlobalFindAtomA}
  3158. function GlobalFindAtomW(lpString: LPCWSTR): ATOM; stdcall;
  3159. {$EXTERNALSYM GlobalFindAtomW}
  3160. function GlobalFindAtom(lpString: LPCTSTR): ATOM; stdcall;
  3161. {$EXTERNALSYM GlobalFindAtom}
  3162. function GlobalGetAtomNameA(nAtom: ATOM; lpBuffer: LPSTR; nSize: Integer): UINT; stdcall;
  3163. {$EXTERNALSYM GlobalGetAtomNameA}
  3164. function GlobalGetAtomNameW(nAtom: ATOM; lpBuffer: LPWSTR; nSize: Integer): UINT; stdcall;
  3165. {$EXTERNALSYM GlobalGetAtomNameW}
  3166. function GlobalGetAtomName(nAtom: ATOM; lpBuffer: LPTSTR; nSize: Integer): UINT; stdcall;
  3167. {$EXTERNALSYM GlobalGetAtomName}
  3168. function AddAtomA(lpString: LPCSTR): ATOM; stdcall;
  3169. {$EXTERNALSYM AddAtomA}
  3170. function AddAtomW(lpString: LPCWSTR): ATOM; stdcall;
  3171. {$EXTERNALSYM AddAtomW}
  3172. function AddAtom(lpString: LPCTSTR): ATOM; stdcall;
  3173. {$EXTERNALSYM AddAtom}
  3174. function FindAtomA(lpString: LPCSTR): ATOM; stdcall;
  3175. {$EXTERNALSYM FindAtomA}
  3176. function FindAtomW(lpString: LPCWSTR): ATOM; stdcall;
  3177. {$EXTERNALSYM FindAtomW}
  3178. function FindAtom(lpString: LPCTSTR): ATOM; stdcall;
  3179. {$EXTERNALSYM FindAtom}
  3180. function GetAtomNameA(nAtom: ATOM; lpBuffer: LPSTR; nSize: Integer): UINT; stdcall;
  3181. {$EXTERNALSYM GetAtomNameA}
  3182. function GetAtomNameW(nAtom: ATOM; lpBuffer: LPWSTR; nSize: Integer): UINT; stdcall;
  3183. {$EXTERNALSYM GetAtomNameW}
  3184. function GetAtomName(nAtom: ATOM; lpBuffer: LPTSTR; nSize: Integer): UINT; stdcall;
  3185. {$EXTERNALSYM GetAtomName}
  3186. function GetProfileIntA(lpAppName, lpKeyName: LPCSTR; nDefault: Integer): UINT; stdcall;
  3187. {$EXTERNALSYM GetProfileIntA}
  3188. function GetProfileIntW(lpAppName, lpKeyName: LPCWSTR; nDefault: Integer): UINT; stdcall;
  3189. {$EXTERNALSYM GetProfileIntW}
  3190. function GetProfileInt(lpAppName, lpKeyName: LPCTSTR; nDefault: Integer): UINT; stdcall;
  3191. {$EXTERNALSYM GetProfileInt}
  3192. function GetProfileStringA(lpAppName, lpKeyName, lpDefault: LPCSTR;
  3193. lpReturnedString: LPSTR; nSize: DWORD): DWORD; stdcall;
  3194. {$EXTERNALSYM GetProfileStringA}
  3195. function GetProfileStringW(lpAppName, lpKeyName, lpDefault: LPCWSTR;
  3196. lpReturnedString: LPWSTR; nSize: DWORD): DWORD; stdcall;
  3197. {$EXTERNALSYM GetProfileStringW}
  3198. function GetProfileString(lpAppName, lpKeyName, lpDefault: LPCTSTR;
  3199. lpReturnedString: LPTSTR; nSize: DWORD): DWORD; stdcall;
  3200. {$EXTERNALSYM GetProfileString}
  3201. function WriteProfileStringA(lpAppName, lpKeyName, lpString: LPCSTR): BOOL; stdcall;
  3202. {$EXTERNALSYM WriteProfileStringA}
  3203. function WriteProfileStringW(lpAppName, lpKeyName, lpString: LPCWSTR): BOOL; stdcall;
  3204. {$EXTERNALSYM WriteProfileStringW}
  3205. function WriteProfileString(lpAppName, lpKeyName, lpString: LPCTSTR): BOOL; stdcall;
  3206. {$EXTERNALSYM WriteProfileString}
  3207. function GetProfileSectionA(lpAppName: LPCSTR; lpReturnedString: LPSTR;
  3208. nSize: DWORD): DWORD; stdcall;
  3209. {$EXTERNALSYM GetProfileSectionA}
  3210. function GetProfileSectionW(lpAppName: LPCWSTR; lpReturnedString: LPWSTR;
  3211. nSize: DWORD): DWORD; stdcall;
  3212. {$EXTERNALSYM GetProfileSectionW}
  3213. function GetProfileSection(lpAppName: LPCTSTR; lpReturnedString: LPTSTR;
  3214. nSize: DWORD): DWORD; stdcall;
  3215. {$EXTERNALSYM GetProfileSection}
  3216. function WriteProfileSectionA(lpAppName, lpString: LPCSTR): BOOL; stdcall;
  3217. {$EXTERNALSYM WriteProfileSectionA}
  3218. function WriteProfileSectionW(lpAppName, lpString: LPCWSTR): BOOL; stdcall;
  3219. {$EXTERNALSYM WriteProfileSectionW}
  3220. function WriteProfileSection(lpAppName, lpString: LPCTSTR): BOOL; stdcall;
  3221. {$EXTERNALSYM WriteProfileSection}
  3222. function GetPrivateProfileIntA(lpAppName, lpKeyName: LPCSTR; nDefault: Integer;
  3223. lpFileName: LPCSTR): UINT; stdcall;
  3224. {$EXTERNALSYM GetPrivateProfileIntA}
  3225. function GetPrivateProfileIntW(lpAppName, lpKeyName: LPCWSTR; nDefault: Integer;
  3226. lpFileName: LPCWSTR): UINT; stdcall;
  3227. {$EXTERNALSYM GetPrivateProfileIntW}
  3228. function GetPrivateProfileInt(lpAppName, lpKeyName: LPCTSTR; nDefault: Integer;
  3229. lpFileName: LPCTSTR): UINT; stdcall;
  3230. {$EXTERNALSYM GetPrivateProfileInt}
  3231. function GetPrivateProfileStringA(lpAppName, lpKeyName, lpDefault: LPCSTR;
  3232. lpReturnedString: LPSTR; nSize: DWORD; lpFileName: LPCSTR): DWORD; stdcall;
  3233. {$EXTERNALSYM GetPrivateProfileStringA}
  3234. function GetPrivateProfileStringW(lpAppName, lpKeyName, lpDefault: LPCWSTR;
  3235. lpReturnedString: LPWSTR; nSize: DWORD; lpFileName: LPCWSTR): DWORD; stdcall;
  3236. {$EXTERNALSYM GetPrivateProfileStringW}
  3237. function GetPrivateProfileString(lpAppName, lpKeyName, lpDefault: LPCTSTR;
  3238. lpReturnedString: LPTSTR; nSize: DWORD; lpFileName: LPCTSTR): DWORD; stdcall;
  3239. {$EXTERNALSYM GetPrivateProfileString}
  3240. function WritePrivateProfileStringA(lpAppName, lpKeyName, lpString,
  3241. lpFileName: LPCSTR): BOOL; stdcall;
  3242. {$EXTERNALSYM WritePrivateProfileStringA}
  3243. function WritePrivateProfileStringW(lpAppName, lpKeyName, lpString,
  3244. lpFileName: LPCWSTR): BOOL; stdcall;
  3245. {$EXTERNALSYM WritePrivateProfileStringW}
  3246. function WritePrivateProfileString(lpAppName, lpKeyName, lpString,
  3247. lpFileName: LPCTSTR): BOOL; stdcall;
  3248. {$EXTERNALSYM WritePrivateProfileString}
  3249. function GetPrivateProfileSectionA(lpAppName: LPCSTR; lpReturnedString: LPSTR;
  3250. nSize: DWORD; lpFileName: LPCSTR): DWORD; stdcall;
  3251. {$EXTERNALSYM GetPrivateProfileSectionA}
  3252. function GetPrivateProfileSectionW(lpAppName: LPCWSTR; lpReturnedString: LPWSTR;
  3253. nSize: DWORD; lpFileName: LPCWSTR): DWORD; stdcall;
  3254. {$EXTERNALSYM GetPrivateProfileSectionW}
  3255. function GetPrivateProfileSection(lpAppName: LPCTSTR; lpReturnedString: LPTSTR;
  3256. nSize: DWORD; lpFileName: LPCTSTR): DWORD; stdcall;
  3257. {$EXTERNALSYM GetPrivateProfileSection}
  3258. function WritePrivateProfileSectionA(lpAppName, lpString, lpFileName: LPCSTR): BOOL; stdcall;
  3259. {$EXTERNALSYM WritePrivateProfileSectionA}
  3260. function WritePrivateProfileSectionW(lpAppName, lpString, lpFileName: LPCWSTR): BOOL; stdcall;
  3261. {$EXTERNALSYM WritePrivateProfileSectionW}
  3262. function WritePrivateProfileSection(lpAppName, lpString, lpFileName: LPCTSTR): BOOL; stdcall;
  3263. {$EXTERNALSYM WritePrivateProfileSection}
  3264. function GetPrivateProfileSectionNamesA(lpszReturnBuffer: LPSTR; nSize: DWORD;
  3265. lpFileName: LPCSTR): DWORD; stdcall;
  3266. {$EXTERNALSYM GetPrivateProfileSectionNamesA}
  3267. function GetPrivateProfileSectionNamesW(lpszReturnBuffer: LPWSTR; nSize: DWORD;
  3268. lpFileName: LPCWSTR): DWORD; stdcall;
  3269. {$EXTERNALSYM GetPrivateProfileSectionNamesW}
  3270. function GetPrivateProfileSectionNames(lpszReturnBuffer: LPTSTR; nSize: DWORD;
  3271. lpFileName: LPCTSTR): DWORD; stdcall;
  3272. {$EXTERNALSYM GetPrivateProfileSectionNames}
  3273. function GetPrivateProfileStructA(lpszSection, lpszKey: LPCSTR; lpStruct: LPVOID;
  3274. uSizeStruct: UINT; szFile: LPCSTR): BOOL; stdcall;
  3275. {$EXTERNALSYM GetPrivateProfileStructA}
  3276. function GetPrivateProfileStructW(lpszSection, lpszKey: LPCWSTR; lpStruct: LPVOID;
  3277. uSizeStruct: UINT; szFile: LPCWSTR): BOOL; stdcall;
  3278. {$EXTERNALSYM GetPrivateProfileStructW}
  3279. function GetPrivateProfileStruct(lpszSection, lpszKey: LPCTSTR; lpStruct: LPVOID;
  3280. uSizeStruct: UINT; szFile: LPCTSTR): BOOL; stdcall;
  3281. {$EXTERNALSYM GetPrivateProfileStruct}
  3282. function WritePrivateProfileStructA(lpszSection, lpszKey: LPCSTR; lpStruct: LPVOID;
  3283. uSizeStruct: UINT; szFile: LPCSTR): BOOL; stdcall;
  3284. {$EXTERNALSYM WritePrivateProfileStructA}
  3285. function WritePrivateProfileStructW(lpszSection, lpszKey: LPCWSTR; lpStruct: LPVOID;
  3286. uSizeStruct: UINT; szFile: LPCWSTR): BOOL; stdcall;
  3287. {$EXTERNALSYM WritePrivateProfileStructW}
  3288. function WritePrivateProfileStruct(lpszSection, lpszKey: LPCTSTR; lpStruct: LPVOID;
  3289. uSizeStruct: UINT; szFile: LPCTSTR): BOOL; stdcall;
  3290. {$EXTERNALSYM WritePrivateProfileStruct}
  3291. function GetDriveTypeA(lpRootPathName: LPCSTR): UINT; stdcall;
  3292. {$EXTERNALSYM GetDriveTypeA}
  3293. function GetDriveTypeW(lpRootPathName: LPCWSTR): UINT; stdcall;
  3294. {$EXTERNALSYM GetDriveTypeW}
  3295. function GetDriveType(lpRootPathName: LPCTSTR): UINT; stdcall;
  3296. {$EXTERNALSYM GetDriveType}
  3297. function GetSystemDirectoryA(lpBuffer: LPSTR; uSize: UINT): UINT; stdcall;
  3298. {$EXTERNALSYM GetSystemDirectoryA}
  3299. function GetSystemDirectoryW(lpBuffer: LPWSTR; uSize: UINT): UINT; stdcall;
  3300. {$EXTERNALSYM GetSystemDirectoryW}
  3301. function GetSystemDirectory(lpBuffer: LPTSTR; uSize: UINT): UINT; stdcall;
  3302. {$EXTERNALSYM GetSystemDirectory}
  3303. function GetTempPathA(nBufferLength: DWORD; lpBuffer: LPSTR): DWORD; stdcall;
  3304. {$EXTERNALSYM GetTempPathA}
  3305. function GetTempPathW(nBufferLength: DWORD; lpBuffer: LPWSTR): DWORD; stdcall;
  3306. {$EXTERNALSYM GetTempPathW}
  3307. function GetTempPath(nBufferLength: DWORD; lpBuffer: LPTSTR): DWORD; stdcall;
  3308. {$EXTERNALSYM GetTempPath}
  3309. function GetTempFileNameA(lpPathName, lpPrefixString: LPCSTR; uUnique: UINT;
  3310. lpTempFileName: LPSTR): UINT; stdcall;
  3311. {$EXTERNALSYM GetTempFileNameA}
  3312. function GetTempFileNameW(lpPathName, lpPrefixString: LPCWSTR; uUnique: UINT;
  3313. lpTempFileName: LPWSTR): UINT; stdcall;
  3314. {$EXTERNALSYM GetTempFileNameW}
  3315. function GetTempFileName(lpPathName, lpPrefixString: LPCTSTR; uUnique: UINT;
  3316. lpTempFileName: LPTSTR): UINT; stdcall;
  3317. {$EXTERNALSYM GetTempFileName}
  3318. function GetWindowsDirectoryA(lpBuffer: LPSTR; uSize: UINT): UINT; stdcall;
  3319. {$EXTERNALSYM GetWindowsDirectoryA}
  3320. function GetWindowsDirectoryW(lpBuffer: LPWSTR; uSize: UINT): UINT; stdcall;
  3321. {$EXTERNALSYM GetWindowsDirectoryW}
  3322. function GetWindowsDirectory(lpBuffer: LPTSTR; uSize: UINT): UINT; stdcall;
  3323. {$EXTERNALSYM GetWindowsDirectory}
  3324. function GetSystemWindowsDirectoryA(lpBuffer: LPSTR; uSize: UINT): UINT; stdcall;
  3325. {$EXTERNALSYM GetSystemWindowsDirectoryA}
  3326. function GetSystemWindowsDirectoryW(lpBuffer: LPWSTR; uSize: UINT): UINT; stdcall;
  3327. {$EXTERNALSYM GetSystemWindowsDirectoryW}
  3328. function GetSystemWindowsDirectory(lpBuffer: LPTSTR; uSize: UINT): UINT; stdcall;
  3329. {$EXTERNALSYM GetSystemWindowsDirectory}
  3330. function GetSystemWow64DirectoryA(lpBuffer: LPSTR; uSize: UINT): UINT; stdcall;
  3331. {$EXTERNALSYM GetSystemWow64DirectoryA}
  3332. function GetSystemWow64DirectoryW(lpBuffer: LPWSTR; uSize: UINT): UINT; stdcall;
  3333. {$EXTERNALSYM GetSystemWow64DirectoryW}
  3334. function GetSystemWow64Directory(lpBuffer: LPTSTR; uSize: UINT): UINT; stdcall;
  3335. {$EXTERNALSYM GetSystemWow64Directory}
  3336. function Wow64EnableWow64FsRedirection(Wow64FsEnableRedirection: BOOL): BOOL; stdcall;
  3337. {$EXTERNALSYM Wow64EnableWow64FsRedirection}
  3338. //
  3339. // for GetProcAddress
  3340. //
  3341. type
  3342. PGET_SYSTEM_WOW64_DIRECTORY_A = function(lpBuffer: LPSTR; uSize: UINT): UINT; stdcall;
  3343. {$EXTERNALSYM PGET_SYSTEM_WOW64_DIRECTORY_A}
  3344. PGET_SYSTEM_WOW64_DIRECTORY_W = function(lpBuffer: LPWSTR; uSize: UINT): UINT; stdcall;
  3345. {$EXTERNALSYM PGET_SYSTEM_WOW64_DIRECTORY_W}
  3346. //
  3347. // GetProcAddress only accepts GET_SYSTEM_WOW64_DIRECTORY_NAME_A_A,
  3348. // GET_SYSTEM_WOW64_DIRECTORY_NAME_W_A, GET_SYSTEM_WOW64_DIRECTORY_NAME_T_A.
  3349. // The others are if you want to use the strings in some other way.
  3350. //
  3351. const
  3352. GET_SYSTEM_WOW64_DIRECTORY_NAME_A_A = 'GetSystemWow64DirectoryA';
  3353. {$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_A_A}
  3354. GET_SYSTEM_WOW64_DIRECTORY_NAME_A_W = WideString('GetSystemWow64DirectoryA');
  3355. {$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_A_W}
  3356. GET_SYSTEM_WOW64_DIRECTORY_NAME_A_T = __TEXT('GetSystemWow64DirectoryA');
  3357. {$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_A_T}
  3358. GET_SYSTEM_WOW64_DIRECTORY_NAME_W_A = 'GetSystemWow64DirectoryW';
  3359. {$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_W_A}
  3360. GET_SYSTEM_WOW64_DIRECTORY_NAME_W_W = WideString('GetSystemWow64DirectoryW');
  3361. {$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_W_W}
  3362. GET_SYSTEM_WOW64_DIRECTORY_NAME_W_T = __TEXT('GetSystemWow64DirectoryW');
  3363. {$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_W_T}
  3364. {$IFDEF UNICODE}
  3365. GET_SYSTEM_WOW64_DIRECTORY_NAME_T_A = GET_SYSTEM_WOW64_DIRECTORY_NAME_W_A;
  3366. {$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_T_A}
  3367. GET_SYSTEM_WOW64_DIRECTORY_NAME_T_W = GET_SYSTEM_WOW64_DIRECTORY_NAME_W_W;
  3368. {$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_T_W}
  3369. GET_SYSTEM_WOW64_DIRECTORY_NAME_T_T = GET_SYSTEM_WOW64_DIRECTORY_NAME_W_T;
  3370. {$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_T_T}
  3371. {$ELSE}
  3372. GET_SYSTEM_WOW64_DIRECTORY_NAME_T_A = GET_SYSTEM_WOW64_DIRECTORY_NAME_A_A;
  3373. {$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_T_A}
  3374. GET_SYSTEM_WOW64_DIRECTORY_NAME_T_W = GET_SYSTEM_WOW64_DIRECTORY_NAME_A_W;
  3375. {$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_T_W}
  3376. GET_SYSTEM_WOW64_DIRECTORY_NAME_T_T = GET_SYSTEM_WOW64_DIRECTORY_NAME_A_T;
  3377. {$EXTERNALSYM GET_SYSTEM_WOW64_DIRECTORY_NAME_T_T}
  3378. {$ENDIF UNICODE}
  3379. function SetCurrentDirectoryA(lpPathName: LPCSTR): BOOL; stdcall;
  3380. {$EXTERNALSYM SetCurrentDirectoryA}
  3381. function SetCurrentDirectoryW(lpPathName: LPCWSTR): BOOL; stdcall;
  3382. {$EXTERNALSYM SetCurrentDirectoryW}
  3383. function SetCurrentDirectory(lpPathName: LPCTSTR): BOOL; stdcall;
  3384. {$EXTERNALSYM SetCurrentDirectory}
  3385. function GetCurrentDirectoryA(nBufferLength: DWORD; lpBuffer: LPSTR): DWORD; stdcall;
  3386. {$EXTERNALSYM GetCurrentDirectoryA}
  3387. function GetCurrentDirectoryW(nBufferLength: DWORD; lpBuffer: LPWSTR): DWORD; stdcall;
  3388. {$EXTERNALSYM GetCurrentDirectoryW}
  3389. function GetCurrentDirectory(nBufferLength: DWORD; lpBuffer: LPTSTR): DWORD; stdcall;
  3390. {$EXTERNALSYM GetCurrentDirectory}
  3391. //#if _WIN32_WINNT >= 0x0502
  3392. function SetDllDirectoryA(lpPathName: LPCSTR): BOOL; stdcall;
  3393. {$EXTERNALSYM SetDllDirectoryA}
  3394. function SetDllDirectoryW(lpPathName: LPCWSTR): BOOL; stdcall;
  3395. {$EXTERNALSYM SetDllDirectoryW}
  3396. function SetDllDirectory(lpPathName: LPCTSTR): BOOL; stdcall;
  3397. {$EXTERNALSYM SetDllDirectory}
  3398. function GetDllDirectoryA(nBufferLength: DWORD; lpBuffer: LPSTR): DWORD; stdcall;
  3399. {$EXTERNALSYM GetDllDirectoryA}
  3400. function GetDllDirectoryW(nBufferLength: DWORD; lpBuffer: LPWSTR): DWORD; stdcall;
  3401. {$EXTERNALSYM GetDllDirectoryW}
  3402. function GetDllDirectory(nBufferLength: DWORD; lpBuffer: LPTSTR): DWORD; stdcall;
  3403. {$EXTERNALSYM GetDllDirectory}
  3404. //#endif // _WIN32_WINNT >= 0x0502
  3405. function GetDiskFreeSpaceA(lpRootPathName: LPCSTR; var lpSectorsPerCluster,
  3406. lpBytesPerSector, lpNumberOfFreeClusters, lpTotalNumberOfClusters: DWORD): BOOL; stdcall;
  3407. {$EXTERNALSYM GetDiskFreeSpaceA}
  3408. function GetDiskFreeSpaceW(lpRootPathName: LPCWSTR; var lpSectorsPerCluster,
  3409. lpBytesPerSector, lpNumberOfFreeClusters, lpTotalNumberOfClusters: DWORD): BOOL; stdcall;
  3410. {$EXTERNALSYM GetDiskFreeSpaceW}
  3411. function GetDiskFreeSpace(lpRootPathName: LPCTSTR; var lpSectorsPerCluster,
  3412. lpBytesPerSector, lpNumberOfFreeClusters, lpTotalNumberOfClusters: DWORD): BOOL; stdcall;
  3413. {$EXTERNALSYM GetDiskFreeSpace}
  3414. function GetDiskFreeSpaceExA(lpDirectoryName: LPCSTR; var lpFreeBytesAvailableToCaller,
  3415. lpTotalNumberOfBytes: ULARGE_INTEGER; lpTotalNumberOfFreeBytes: PULARGE_INTEGER): BOOL; stdcall;
  3416. {$EXTERNALSYM GetDiskFreeSpaceExA}
  3417. function GetDiskFreeSpaceExW(lpDirectoryName: LPCWSTR; var lpFreeBytesAvailableToCaller,
  3418. lpTotalNumberOfBytes: ULARGE_INTEGER; lpTotalNumberOfFreeBytes: PULARGE_INTEGER): BOOL; stdcall;
  3419. {$EXTERNALSYM GetDiskFreeSpaceExW}
  3420. function GetDiskFreeSpaceEx(lpDirectoryName: LPCTSTR; var lpFreeBytesAvailableToCaller,
  3421. lpTotalNumberOfBytes: ULARGE_INTEGER; lpTotalNumberOfFreeBytes: PULARGE_INTEGER): BOOL; stdcall;
  3422. {$EXTERNALSYM GetDiskFreeSpaceEx}
  3423. function CreateDirectoryA(lpPathName: LPCSTR; lpSecurityAttributes: LPSECURITY_ATTRIBUTES): BOOL; stdcall;
  3424. {$EXTERNALSYM CreateDirectoryA}
  3425. function CreateDirectoryW(lpPathName: LPCWSTR; lpSecurityAttributes: LPSECURITY_ATTRIBUTES): BOOL; stdcall;
  3426. {$EXTERNALSYM CreateDirectoryW}
  3427. function CreateDirectory(lpPathName: LPCTSTR; lpSecurityAttributes: LPSECURITY_ATTRIBUTES): BOOL; stdcall;
  3428. {$EXTERNALSYM CreateDirectory}
  3429. function CreateDirectoryExA(lpTemplateDirectory: LPCSTR; lpNewDirectory: LPCSTR;
  3430. lpSecurityAttributes: LPSECURITY_ATTRIBUTES): BOOL; stdcall;
  3431. {$EXTERNALSYM CreateDirectoryExA}
  3432. function CreateDirectoryExW(lpTemplateDirectory: LPCWSTR; lpNewDirectory: LPCWSTR;
  3433. lpSecurityAttributes: LPSECURITY_ATTRIBUTES): BOOL; stdcall;
  3434. {$EXTERNALSYM CreateDirectoryExW}
  3435. function CreateDirectoryEx(lpTemplateDirectory: LPCTSTR; lpNewDirectory: LPCTSTR;
  3436. lpSecurityAttributes: LPSECURITY_ATTRIBUTES): BOOL; stdcall;
  3437. {$EXTERNALSYM CreateDirectoryEx}
  3438. function RemoveDirectoryA(lpPathName: LPCSTR): BOOL; stdcall;
  3439. {$EXTERNALSYM RemoveDirectoryA}
  3440. function RemoveDirectoryW(lpPathName: LPCWSTR): BOOL; stdcall;
  3441. {$EXTERNALSYM RemoveDirectoryW}
  3442. function RemoveDirectory(lpPathName: LPCTSTR): BOOL; stdcall;
  3443. {$EXTERNALSYM RemoveDirectory}
  3444. function GetFullPathNameA(lpFileName: LPCSTR; nBufferLength: DWORD;
  3445. lpBuffer: LPSTR; var lpFilePart: LPSTR): DWORD; stdcall;
  3446. {$EXTERNALSYM GetFullPathNameA}
  3447. function GetFullPathNameW(lpFileName: LPCWSTR; nBufferLength: DWORD;
  3448. lpBuffer: LPWSTR; var lpFilePart: LPWSTR): DWORD; stdcall;
  3449. {$EXTERNALSYM GetFullPathNameA}
  3450. function GetFullPathName(lpFileName: LPCTSTR; nBufferLength: DWORD;
  3451. lpBuffer: LPTSTR; var lpFilePart: LPTSTR): DWORD; stdcall;
  3452. {$EXTERNALSYM GetFullPathName}
  3453. const
  3454. DDD_RAW_TARGET_PATH = $00000001;
  3455. {$EXTERNALSYM DDD_RAW_TARGET_PATH}
  3456. DDD_REMOVE_DEFINITION = $00000002;
  3457. {$EXTERNALSYM DDD_REMOVE_DEFINITION}
  3458. DDD_EXACT_MATCH_ON_REMOVE = $00000004;
  3459. {$EXTERNALSYM DDD_EXACT_MATCH_ON_REMOVE}
  3460. DDD_NO_BROADCAST_SYSTEM = $00000008;
  3461. {$EXTERNALSYM DDD_NO_BROADCAST_SYSTEM}
  3462. DDD_LUID_BROADCAST_DRIVE = $00000010;
  3463. {$EXTERNALSYM DDD_LUID_BROADCAST_DRIVE}
  3464. function DefineDosDeviceA(dwFlags: DWORD; lpDeviceName, lpTargetPath: LPCSTR): BOOL; stdcall;
  3465. {$EXTERNALSYM DefineDosDeviceA}
  3466. function DefineDosDeviceW(dwFlags: DWORD; lpDeviceName, lpTargetPath: LPCWSTR): BOOL; stdcall;
  3467. {$EXTERNALSYM DefineDosDeviceW}
  3468. function DefineDosDevice(dwFlags: DWORD; lpDeviceName, lpTargetPath: LPCTSTR): BOOL; stdcall;
  3469. {$EXTERNALSYM DefineDosDevice}
  3470. function QueryDosDeviceA(lpDeviceName, lpTargetPath: LPSTR; ucchMax: DWORD): DWORD; stdcall;
  3471. {$EXTERNALSYM QueryDosDeviceA}
  3472. function QueryDosDeviceW(lpDeviceName, lpTargetPath: LPWSTR; ucchMax: DWORD): DWORD; stdcall;
  3473. {$EXTERNALSYM QueryDosDeviceW}
  3474. function QueryDosDevice(lpDeviceName, lpTargetPath: LPTSTR; ucchMax: DWORD): DWORD; stdcall;
  3475. {$EXTERNALSYM QueryDosDevice}
  3476. function CreateFileA(lpFileName: LPCSTR; dwDesiredAccess, dwShareMode: DWORD;
  3477. lpSecurityAttributes: LPSECURITY_ATTRIBUTES; dwCreationDisposition: DWORD;
  3478. dwFlagsAndAttributes: DWORD; hTemplateFile: HANDLE): HANDLE; stdcall;
  3479. {$EXTERNALSYM CreateFileA}
  3480. function CreateFileW(lpFileName: LPCWSTR; dwDesiredAccess, dwShareMode: DWORD;
  3481. lpSecurityAttributes: LPSECURITY_ATTRIBUTES; dwCreationDisposition: DWORD;
  3482. dwFlagsAndAttributes: DWORD; hTemplateFile: HANDLE): HANDLE; stdcall;
  3483. {$EXTERNALSYM CreateFileW}
  3484. function CreateFile(lpFileName: LPCTSTR; dwDesiredAccess, dwShareMode: DWORD;
  3485. lpSecurityAttributes: LPSECURITY_ATTRIBUTES; dwCreationDisposition: DWORD;
  3486. dwFlagsAndAttributes: DWORD; hTemplateFile: HANDLE): HANDLE; stdcall;
  3487. {$EXTERNALSYM CreateFile}
  3488. function ReOpenFile(hOriginalFile: HANDLE; dwDesiredAccess, dwShareMode, dwFlagsAndAttributes: DWORD): HANDLE; stdcall;
  3489. {$EXTERNALSYM ReOpenFile}
  3490. function SetFileAttributesA(lpFileName: LPCSTR; dwFileAttributes: DWORD): BOOL; stdcall;
  3491. {$EXTERNALSYM SetFileAttributesA}
  3492. function SetFileAttributesW(lpFileName: LPCWSTR; dwFileAttributes: DWORD): BOOL; stdcall;
  3493. {$EXTERNALSYM SetFileAttributesW}
  3494. function SetFileAttributes(lpFileName: LPCTSTR; dwFileAttributes: DWORD): BOOL; stdcall;
  3495. {$EXTERNALSYM SetFileAttributes}
  3496. function GetFileAttributesA(lpFileName: LPCSTR): DWORD; stdcall;
  3497. {$EXTERNALSYM GetFileAttributesA}
  3498. function GetFileAttributesW(lpFileName: LPCWSTR): DWORD; stdcall;
  3499. {$EXTERNALSYM GetFileAttributesW}
  3500. function GetFileAttributes(lpFileName: LPCTSTR): DWORD; stdcall;
  3501. {$EXTERNALSYM GetFileAttributes}
  3502. type
  3503. _GET_FILEEX_INFO_LEVELS = (GetFileExInfoStandard, GetFileExMaxInfoLevel);
  3504. {$EXTERNALSYM _GET_FILEEX_INFO_LEVELS}
  3505. GET_FILEEX_INFO_LEVELS = _GET_FILEEX_INFO_LEVELS;
  3506. {$EXTERNALSYM GET_FILEEX_INFO_LEVELS}
  3507. TGetFileExInfoLevels = GET_FILEEX_INFO_LEVELS;
  3508. function GetFileAttributesExA(lpFileName: LPCSTR;
  3509. fInfoLevelId: GET_FILEEX_INFO_LEVELS; lpFileInformation: LPVOID): BOOL; stdcall;
  3510. {$EXTERNALSYM GetFileAttributesExA}
  3511. function GetFileAttributesExW(lpFileName: LPCWSTR;
  3512. fInfoLevelId: GET_FILEEX_INFO_LEVELS; lpFileInformation: LPVOID): BOOL; stdcall;
  3513. {$EXTERNALSYM GetFileAttributesExW}
  3514. function GetFileAttributesEx(lpFileName: LPCTSTR;
  3515. fInfoLevelId: GET_FILEEX_INFO_LEVELS; lpFileInformation: LPVOID): BOOL; stdcall;
  3516. {$EXTERNALSYM GetFileAttributesEx}
  3517. function GetCompressedFileSizeA(lpFileName: LPCSTR; lpFileSizeHigh: LPDWORD): DWORD; stdcall;
  3518. {$EXTERNALSYM GetCompressedFileSizeA}
  3519. function GetCompressedFileSizeW(lpFileName: LPCWSTR; lpFileSizeHigh: LPDWORD): DWORD; stdcall;
  3520. {$EXTERNALSYM GetCompressedFileSizeW}
  3521. function GetCompressedFileSize(lpFileName: LPCTSTR; lpFileSizeHigh: LPDWORD): DWORD; stdcall;
  3522. {$EXTERNALSYM GetCompressedFileSize}
  3523. function DeleteFileA(lpFileName: LPCSTR): BOOL; stdcall;
  3524. {$EXTERNALSYM DeleteFileA}
  3525. function DeleteFileW(lpFileName: LPCWSTR): BOOL; stdcall;
  3526. {$EXTERNALSYM DeleteFileW}
  3527. function DeleteFile(lpFileName: LPCTSTR): BOOL; stdcall;
  3528. {$EXTERNALSYM DeleteFile}
  3529. (* todo
  3530. WINBASEAPI
  3531. BOOL
  3532. WINAPI
  3533. CheckNameLegalDOS8Dot3A(
  3534. IN LPCSTR lpName,
  3535. OUT LPSTR lpOemName OPTIONAL,
  3536. IN DWORD OemNameSize OPTIONAL,
  3537. OUT PBOOL pbNameContainsSpaces OPTIONAL,
  3538. OUT PBOOL pbNameLegal
  3539. );
  3540. WINBASEAPI
  3541. BOOL
  3542. WINAPI
  3543. CheckNameLegalDOS8Dot3W(
  3544. IN LPCWSTR lpName,
  3545. OUT LPSTR lpOemName OPTIONAL,
  3546. IN DWORD OemNameSize OPTIONAL,
  3547. OUT PBOOL pbNameContainsSpaces OPTIONAL,
  3548. OUT PBOOL pbNameLegal
  3549. );
  3550. #ifdef UNICODE
  3551. #define CheckNameLegalDOS8Dot3 CheckNameLegalDOS8Dot3W
  3552. #else
  3553. #define CheckNameLegalDOS8Dot3 CheckNameLegalDOS8Dot3A
  3554. #endif // !UNICODE
  3555. *)
  3556. type
  3557. _FINDEX_INFO_LEVELS = (FindExInfoStandard, FindExInfoMaxInfoLevel);
  3558. {$EXTERNALSYM _FINDEX_INFO_LEVELS}
  3559. FINDEX_INFO_LEVELS = _FINDEX_INFO_LEVELS;
  3560. {$EXTERNALSYM FINDEX_INFO_LEVELS}
  3561. TFindExInfoLevels = FINDEX_INFO_LEVELS;
  3562. _FINDEX_SEARCH_OPS = (
  3563. FindExSearchNameMatch,
  3564. FindExSearchLimitToDirectories,
  3565. FindExSearchLimitToDevices,
  3566. FindExSearchMaxSearchOp);
  3567. {$EXTERNALSYM _FINDEX_SEARCH_OPS}
  3568. FINDEX_SEARCH_OPS = _FINDEX_SEARCH_OPS;
  3569. {$EXTERNALSYM FINDEX_SEARCH_OPS}
  3570. TFindExSearchOps = FINDEX_SEARCH_OPS;
  3571. const
  3572. FIND_FIRST_EX_CASE_SENSITIVE = $00000001;
  3573. {$EXTERNALSYM FIND_FIRST_EX_CASE_SENSITIVE}
  3574. function FindFirstFileExA(lpFileName: LPCSTR; fInfoLevelId: FINDEX_INFO_LEVELS;
  3575. lpFindFileData: LPVOID; fSearchOp: FINDEX_SEARCH_OPS; lpSearchFilter: LPVOID;
  3576. dwAdditionalFlags: DWORD): HANDLE; stdcall;
  3577. {$EXTERNALSYM FindFirstFileExA}
  3578. function FindFirstFileExW(lpFileName: LPCWSTR; fInfoLevelId: FINDEX_INFO_LEVELS;
  3579. lpFindFileData: LPVOID; fSearchOp: FINDEX_SEARCH_OPS; lpSearchFilter: LPVOID;
  3580. dwAdditionalFlags: DWORD): HANDLE; stdcall;
  3581. {$EXTERNALSYM FindFirstFileExW}
  3582. function FindFirstFileEx(lpFileName: LPCTSTR; fInfoLevelId: FINDEX_INFO_LEVELS;
  3583. lpFindFileData: LPVOID; fSearchOp: FINDEX_SEARCH_OPS; lpSearchFilter: LPVOID;
  3584. dwAdditionalFlags: DWORD): HANDLE; stdcall;
  3585. {$EXTERNALSYM FindFirstFileEx}
  3586. function FindFirstFileA(lpFileName: LPCSTR; var lpFindFileData: WIN32_FIND_DATAA): HANDLE; stdcall;
  3587. {$EXTERNALSYM FindFirstFileA}
  3588. function FindFirstFileW(lpFileName: LPCWSTR; var lpFindFileData: WIN32_FIND_DATAW): HANDLE; stdcall;
  3589. {$EXTERNALSYM FindFirstFileW}
  3590. function FindFirstFile(lpFileName: LPCTSTR; var lpFindFileData: WIN32_FIND_DATA): HANDLE; stdcall;
  3591. {$EXTERNALSYM FindFirstFile}
  3592. function FindNextFileA(hFindFile: HANDLE; var FindFileData: WIN32_FIND_DATAA): BOOL; stdcall;
  3593. {$EXTERNALSYM FindNextFileA}
  3594. function FindNextFileW(hFindFile: HANDLE; var lpFindFileData: WIN32_FIND_DATAW): BOOL; stdcall;
  3595. {$EXTERNALSYM FindNextFileW}
  3596. function FindNextFile(hFindFile: HANDLE; var lpFindFileData: WIN32_FIND_DATA): BOOL; stdcall;
  3597. {$EXTERNALSYM FindNextFile}
  3598. function SearchPathA(lpPath, lpFileName, lpExtension: LPCSTR; nBufferLength: DWORD;
  3599. lpBuffer: LPSTR; var lpFilePart: LPSTR): DWORD; stdcall;
  3600. {$EXTERNALSYM SearchPathA}
  3601. function SearchPathW(lpPath, lpFileName, lpExtension: LPCWSTR; nBufferLength: DWORD;
  3602. lpBuffer: LPWSTR; var lpFilePart: LPWSTR): DWORD; stdcall;
  3603. {$EXTERNALSYM SearchPathW}
  3604. function SearchPath(lpPath, lpFileName, lpExtension: LPCTSTR; nBufferLength: DWORD;
  3605. lpBuffer: LPTSTR; var lpFilePart: LPTSTR): DWORD; stdcall;
  3606. {$EXTERNALSYM SearchPath}
  3607. function CopyFileA(lpExistingFileName, lpNewFileName: LPCSTR; bFailIfExists: BOOL): BOOL; stdcall;
  3608. {$EXTERNALSYM CopyFileA}
  3609. function CopyFileW(lpExistingFileName, lpNewFileName: LPCWSTR; bFailIfExists: BOOL): BOOL; stdcall;
  3610. {$EXTERNALSYM CopyFileW}
  3611. function CopyFile(lpExistingFileName, lpNewFileName: LPCTSTR; bFailIfExists: BOOL): BOOL; stdcall;
  3612. {$EXTERNALSYM CopyFile}
  3613. type
  3614. LPPROGRESS_ROUTINE = function(
  3615. TotalFileSize: LARGE_INTEGER;
  3616. TotalBytesTransferred: LARGE_INTEGER;
  3617. StreamSize: LARGE_INTEGER;
  3618. StreamBytesTransferred: LARGE_INTEGER;
  3619. dwStreamNumber: DWORD;
  3620. dwCallbackReason: DWORD;
  3621. hSourceFile: HANDLE;
  3622. hDestinationFile: HANDLE;
  3623. lpData: LPVOID): DWORD; stdcall;
  3624. {$EXTERNALSYM LPPROGRESS_ROUTINE}
  3625. TProgressRoutine = LPPROGRESS_ROUTINE;
  3626. function CopyFileExA(lpExistingFileName, lpNewFileName: LPCSTR;
  3627. lpProgressRoutine: LPPROGRESS_ROUTINE; lpData: LPVOID; var pbCancel: BOOL;
  3628. dwCopyFlags: DWORD): BOOL; stdcall;
  3629. {$EXTERNALSYM CopyFileExA}
  3630. function CopyFileExW(lpExistingFileName, lpNewFileName: LPCWSTR;
  3631. lpProgressRoutine: LPPROGRESS_ROUTINE; lpData: LPVOID; var pbCancel: BOOL;
  3632. dwCopyFlags: DWORD): BOOL; stdcall;
  3633. {$EXTERNALSYM CopyFileExW}
  3634. function CopyFileEx(lpExistingFileName, lpNewFileName: LPCTSTR;
  3635. lpProgressRoutine: LPPROGRESS_ROUTINE; lpData: LPVOID; var pbCancel: BOOL;
  3636. dwCopyFlags: DWORD): BOOL; stdcall;
  3637. {$EXTERNALSYM CopyFileEx}
  3638. function MoveFileA(lpExistingFileName, lpNewFileName: LPCSTR): BOOL; stdcall;
  3639. {$EXTERNALSYM MoveFileA}
  3640. function MoveFileW(lpExistingFileName, lpNewFileName: LPCWSTR): BOOL; stdcall;
  3641. {$EXTERNALSYM MoveFileW}
  3642. function MoveFile(lpExistingFileName, lpNewFileName: LPCTSTR): BOOL; stdcall;
  3643. {$EXTERNALSYM MoveFile}
  3644. function MoveFileExA(lpExistingFileName, lpNewFileName: LPCSTR; dwFlags: DWORD): BOOL; stdcall;
  3645. {$EXTERNALSYM MoveFileExA}
  3646. function MoveFileExW(lpExistingFileName, lpNewFileName: LPCWSTR; dwFlags: DWORD): BOOL; stdcall;
  3647. {$EXTERNALSYM MoveFileExW}
  3648. function MoveFileEx(lpExistingFileName, lpNewFileName: LPCTSTR; dwFlags: DWORD): BOOL; stdcall;
  3649. {$EXTERNALSYM MoveFileEx}
  3650. function MoveFileWithProgressA(lpExistingFileName, lpNewFileName: LPCSTR;
  3651. lpProgressRoutine: LPPROGRESS_ROUTINE; lpData: LPVOID; dwFlags: DWORD): BOOL; stdcall;
  3652. {$EXTERNALSYM MoveFileWithProgressA}
  3653. function MoveFileWithProgressW(lpExistingFileName, lpNewFileName: LPCWSTR;
  3654. lpProgressRoutine: LPPROGRESS_ROUTINE; lpData: LPVOID; dwFlags: DWORD): BOOL; stdcall;
  3655. {$EXTERNALSYM MoveFileWithProgressW}
  3656. function MoveFileWithProgress(lpExistingFileName, lpNewFileName: LPCTSTR;
  3657. lpProgressRoutine: LPPROGRESS_ROUTINE; lpData: LPVOID; dwFlags: DWORD): BOOL; stdcall;
  3658. {$EXTERNALSYM MoveFileWithProgress}
  3659. const
  3660. MOVEFILE_REPLACE_EXISTING = $00000001;
  3661. {$EXTERNALSYM MOVEFILE_REPLACE_EXISTING}
  3662. MOVEFILE_COPY_ALLOWED = $00000002;
  3663. {$EXTERNALSYM MOVEFILE_COPY_ALLOWED}
  3664. MOVEFILE_DELAY_UNTIL_REBOOT = $00000004;
  3665. {$EXTERNALSYM MOVEFILE_DELAY_UNTIL_REBOOT}
  3666. MOVEFILE_WRITE_THROUGH = $00000008;
  3667. {$EXTERNALSYM MOVEFILE_WRITE_THROUGH}
  3668. MOVEFILE_CREATE_HARDLINK = $00000010;
  3669. {$EXTERNALSYM MOVEFILE_CREATE_HARDLINK}
  3670. MOVEFILE_FAIL_IF_NOT_TRACKABLE = $00000020;
  3671. {$EXTERNALSYM MOVEFILE_FAIL_IF_NOT_TRACKABLE}
  3672. function ReplaceFileA(lpReplacedFileName, lpReplacementFileName,
  3673. lpBackupFileName: LPCSTR; dwReplaceFlags: DWORD; lpExclude: LPVOID;
  3674. lpReserved: LPVOID): BOOL; stdcall;
  3675. {$EXTERNALSYM ReplaceFileA}
  3676. function ReplaceFileW(lpReplacedFileName, lpReplacementFileName,
  3677. lpBackupFileName: LPCWSTR; dwReplaceFlags: DWORD; lpExclude: LPVOID;
  3678. lpReserved: LPVOID): BOOL; stdcall;
  3679. {$EXTERNALSYM ReplaceFileW}
  3680. function ReplaceFile(lpReplacedFileName, lpReplacementFileName,
  3681. lpBackupFileName: LPCTSTR; dwReplaceFlags: DWORD; lpExclude: LPVOID;
  3682. lpReserved: LPVOID): BOOL; stdcall;
  3683. {$EXTERNALSYM ReplaceFile}
  3684. //
  3685. // API call to create hard links.
  3686. //
  3687. function CreateHardLinkA(lpFileName, lpExistingFileName: LPCSTR;
  3688. lpSecurityAttributes: LPSECURITY_ATTRIBUTES): BOOL; stdcall;
  3689. {$EXTERNALSYM CreateHardLinkA}
  3690. function CreateHardLinkW(lpFileName, lpExistingFileName: LPCWSTR;
  3691. lpSecurityAttributes: LPSECURITY_ATTRIBUTES): BOOL; stdcall;
  3692. {$EXTERNALSYM CreateHardLinkW}
  3693. function CreateHardLink(lpFileName, lpExistingFileName: LPCTSTR;
  3694. lpSecurityAttributes: LPSECURITY_ATTRIBUTES): BOOL; stdcall;
  3695. {$EXTERNALSYM CreateHardLink}
  3696. //#if (_WIN32_WINNT >= 0x0501)
  3697. //
  3698. // API call to enumerate for streams within a file
  3699. //
  3700. type
  3701. _STREAM_INFO_LEVELS = (FindStreamInfoStandard, FindStreamInfoMaxInfoLevel);
  3702. {$EXTERNALSYM _STREAM_INFO_LEVELS}
  3703. STREAM_INFO_LEVELS = _STREAM_INFO_LEVELS;
  3704. {$EXTERNALSYM STREAM_INFO_LEVELS}
  3705. TStreamInfoLevels = STREAM_INFO_LEVELS;
  3706. _WIN32_FIND_STREAM_DATA = record
  3707. StreamSize: LARGE_INTEGER;
  3708. cStreamName: array [0..MAX_PATH + 35] of WCHAR;
  3709. end;
  3710. {$EXTERNALSYM _WIN32_FIND_STREAM_DATA}
  3711. WIN32_FIND_STREAM_DATA = _WIN32_FIND_STREAM_DATA;
  3712. {$EXTERNALSYM WIN32_FIND_STREAM_DATA}
  3713. PWIN32_FIND_STREAM_DATA = ^WIN32_FIND_STREAM_DATA;
  3714. {$EXTERNALSYM PWIN32_FIND_STREAM_DATA}
  3715. TWin32FindStreamData = WIN32_FIND_STREAM_DATA;
  3716. PWin32FindStreamData = PWIN32_FIND_STREAM_DATA;
  3717. function FindFirstStreamW(lpFileName: LPCWSTR; InfoLevel: STREAM_INFO_LEVELS; lpFindStreamData: LPVOID; dwFlags: DWORD): HANDLE; stdcall;
  3718. {$EXTERNALSYM FindFirstStreamW}
  3719. function FindNextStreamW(hFindStream: HANDLE; lpFindStreamData: LPVOID): BOOL; stdcall;
  3720. {$EXTERNALSYM FindNextStreamW}
  3721. //#endif // (_WIN32_WINNT >= 0x0500)
  3722. function CreateNamedPipeA(lpName: LPCSTR; dwOpenMode, dwPipeMode, nMaxInstances,
  3723. nOutBufferSize, nInBufferSize, nDefaultTimeOut: DWORD;
  3724. lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE; stdcall;
  3725. {$EXTERNALSYM CreateNamedPipeA}
  3726. function CreateNamedPipeW(lpName: LPCWSTR; dwOpenMode, dwPipeMode, nMaxInstances,
  3727. nOutBufferSize, nInBufferSize, nDefaultTimeOut: DWORD;
  3728. lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE; stdcall;
  3729. {$EXTERNALSYM CreateNamedPipeW}
  3730. function CreateNamedPipe(lpName: LPCTSTR; dwOpenMode, dwPipeMode, nMaxInstances,
  3731. nOutBufferSize, nInBufferSize, nDefaultTimeOut: DWORD;
  3732. lpSecurityAttributes: LPSECURITY_ATTRIBUTES): HANDLE; stdcall;
  3733. {$EXTERNALSYM CreateNamedPipe}
  3734. function GetNamedPipeHandleStateA(hNamedPipe: HANDLE; lpState, lpCurInstances,
  3735. lpMaxCollectionCount, lpCollectDataTimeout: LPDWORD; lpUserName: LPSTR;
  3736. nMaxUserNameSize: DWORD): BOOL; stdcall;
  3737. {$EXTERNALSYM GetNamedPipeHandleStateA}
  3738. function GetNamedPipeHandleStateW(hNamedPipe: HANDLE; lpState, lpCurInstances,
  3739. lpMaxCollectionCount, lpCollectDataTimeout: LPDWORD; lpUserName: LPWSTR;
  3740. nMaxUserNameSize: DWORD): BOOL; stdcall;
  3741. {$EXTERNALSYM GetNamedPipeHandleStateW}
  3742. function GetNamedPipeHandleState(hNamedPipe: HANDLE; lpState, lpCurInstances,
  3743. lpMaxCollectionCount, lpCollectDataTimeout: LPDWORD; lpUserName: LPTSTR;
  3744. nMaxUserNameSize: DWORD): BOOL; stdcall;
  3745. {$EXTERNALSYM GetNamedPipeHandleState}
  3746. function CallNamedPipeA(lpNamedPipeName: LPCSTR; lpInBuffer: LPVOID;
  3747. nInBufferSize: DWORD; lpOutBuffer: LPVOID; nOutBufferSize: DWORD;
  3748. var lpBytesRead: DWORD; nTimeOut: DWORD): BOOL; stdcall;
  3749. {$EXTERNALSYM CallNamedPipeA}
  3750. function CallNamedPipeW(lpNamedPipeName: LPCWSTR; lpInBuffer: LPVOID;
  3751. nInBufferSize: DWORD; lpOutBuffer: LPVOID; nOutBufferSize: DWORD;
  3752. var lpBytesRead: DWORD; nTimeOut: DWORD): BOOL; stdcall;
  3753. {$EXTERNALSYM CallNamedPipeW}
  3754. function CallNamedPipe(lpNamedPipeName: LPCTSTR; lpInBuffer: LPVOID;
  3755. nInBufferSize: DWORD; lpOutBuffer: LPVOID; nOutBufferSize: DWORD;
  3756. var lpBytesRead: DWORD; nTimeOut: DWORD): BOOL; stdcall;
  3757. {$EXTERNALSYM CallNamedPipe}
  3758. function WaitNamedPipeA(lpNamedPipeName: LPCSTR; nTimeOut: DWORD): BOOL; stdcall;
  3759. {$EXTERNALSYM WaitNamedPipeA}
  3760. function WaitNamedPipeW(lpNamedPipeName: LPCWSTR; nTimeOut: DWORD): BOOL; stdcall;
  3761. {$EXTERNALSYM WaitNamedPipeW}
  3762. function WaitNamedPipe(lpNamedPipeName: LPCTSTR; nTimeOut: DWORD): BOOL; stdcall;
  3763. {$EXTERNALSYM WaitNamedPipe}
  3764. function SetVolumeLabelA(lpRootPathName, lpVolumeName: LPCSTR): BOOL; stdcall;
  3765. {$EXTERNALSYM SetVolumeLabelA}
  3766. function SetVolumeLabelW(lpRootPathName, lpVolumeName: LPCWSTR): BOOL; stdcall;
  3767. {$EXTERNALSYM SetVolumeLabelW}
  3768. function SetVolumeLabel(lpRootPathName, lpVolumeName: LPCTSTR): BOOL; stdcall;
  3769. {$EXTERNALSYM SetVolumeLabel}
  3770. procedure SetFileApisToOEM; stdcall;
  3771. {$EXTERNALSYM SetFileApisToOEM}
  3772. procedure SetFileApisToANSI; stdcall;
  3773. {$EXTERNALSYM SetFileApisToANSI}
  3774. function AreFileApisANSI: BOOL; stdcall;
  3775. {$EXTERNALSYM AreFileApisANSI}
  3776. function GetVolumeInformationA(lpRootPathName: LPCSTR; lpVolumeNameBuffer: LPSTR;
  3777. nVolumeNameSize: DWORD; lpVolumeSerialNumber: LPDWORD;
  3778. var lpMaximumComponentLength, lpFileSystemFlags: DWORD;
  3779. lpFileSystemNameBuffer: LPSTR; nFileSystemNameSize: DWORD): BOOL; stdcall;
  3780. {$EXTERNALSYM GetVolumeInformationA}
  3781. function GetVolumeInformationW(lpRootPathName: LPCWSTR; lpVolumeNameBuffer: LPWSTR;
  3782. nVolumeNameSize: DWORD; lpVolumeSerialNumber: LPDWORD;
  3783. var lpMaximumComponentLength, lpFileSystemFlags: DWORD;
  3784. lpFileSystemNameBuffer: LPWSTR; nFileSystemNameSize: DWORD): BOOL; stdcall;
  3785. {$EXTERNALSYM GetVolumeInformationW}
  3786. function GetVolumeInformation(lpRootPathName: LPCTSTR; lpVolumeNameBuffer: LPTSTR;
  3787. nVolumeNameSize: DWORD; lpVolumeSerialNumber: LPDWORD;
  3788. var lpMaximumComponentLength, lpFileSystemFlags: DWORD;
  3789. lpFileSystemNameBuffer: LPTSTR; nFileSystemNameSize: DWORD): BOOL; stdcall;
  3790. {$EXTERNALSYM GetVolumeInformation}
  3791. function CancelIo(hFile: HANDLE): BOOL; stdcall;
  3792. {$EXTERNALSYM CancelIo}
  3793. //
  3794. // Event logging APIs
  3795. //
  3796. function ClearEventLogA(hEventLog: HANDLE; lpBackupFileName: LPCSTR): BOOL; stdcall;
  3797. {$EXTERNALSYM ClearEventLogA}
  3798. function ClearEventLogW(hEventLog: HANDLE; lpBackupFileName: LPCWSTR): BOOL; stdcall;
  3799. {$EXTERNALSYM ClearEventLogW}
  3800. function ClearEventLog(hEventLog: HANDLE; lpBackupFileName: LPCTSTR): BOOL; stdcall;
  3801. {$EXTERNALSYM ClearEventLogA}
  3802. function BackupEventLogA(hEventLog: HANDLE; lpBackupFileName: LPCSTR): BOOL; stdcall;
  3803. {$EXTERNALSYM BackupEventLogA}
  3804. function BackupEventLogW(hEventLog: HANDLE; lpBackupFileName: LPCWSTR): BOOL; stdcall;
  3805. {$EXTERNALSYM BackupEventLogW}
  3806. function BackupEventLog(hEventLog: HANDLE; lpBackupFileName: LPCTSTR): BOOL; stdcall;
  3807. {$EXTERNALSYM BackupEventLogA}
  3808. function CloseEventLog(hEventLog: HANDLE): BOOL; stdcall;
  3809. {$EXTERNALSYM CloseEventLog}
  3810. function DeregisterEventSource(hEventLog: HANDLE): BOOL; stdcall;
  3811. {$EXTERNALSYM DeregisterEventSource}
  3812. function NotifyChangeEventLog(hEventLog, hEvent: HANDLE): BOOL; stdcall;
  3813. {$EXTERNALSYM NotifyChangeEventLog}
  3814. function GetNumberOfEventLogRecords(hEventLog: HANDLE; var NumberOfRecords: DWORD): BOOL; stdcall;
  3815. {$EXTERNALSYM GetNumberOfEventLogRecords}
  3816. function GetOldestEventLogRecord(hEventLog: HANDLE; var OldestRecord: DWORD): BOOL; stdcall;
  3817. {$EXTERNALSYM GetOldestEventLogRecord}
  3818. function OpenEventLogA(lpUNCServerName, lpSourceName: LPCSTR): HANDLE; stdcall;
  3819. {$EXTERNALSYM OpenEventLogA}
  3820. function OpenEventLogW(lpUNCServerName, lpSourceName: LPCWSTR): HANDLE; stdcall;
  3821. {$EXTERNALSYM OpenEventLogW}
  3822. function OpenEventLog(lpUNCServerName, lpSourceName: LPCTSTR): HANDLE; stdcall;
  3823. {$EXTERNALSYM OpenEventLogA}
  3824. function RegisterEventSourceA(lpUNCServerName, lpSourceName: LPCSTR): HANDLE; stdcall;
  3825. {$EXTERNALSYM RegisterEventSourceA}
  3826. function RegisterEventSourceW(lpUNCServerName, lpSourceName: LPCWSTR): HANDLE; stdcall;
  3827. {$EXTERNALSYM RegisterEventSourceW}
  3828. function RegisterEventSource(lpUNCServerName, lpSourceName: LPCTSTR): HANDLE; stdcall;
  3829. {$EXTERNALSYM RegisterEventSourceA}
  3830. function OpenBackupEventLogA(lpUNCServerName, lpFileName: LPCSTR): HANDLE; stdcall;
  3831. {$EXTERNALSYM OpenBackupEventLogA}
  3832. function OpenBackupEventLogW(lpUNCServerName, lpFileName: LPCWSTR): HANDLE; stdcall;
  3833. {$EXTERNALSYM OpenBackupEventLogW}
  3834. function OpenBackupEventLog(lpUNCServerName, lpFileName: LPCTSTR): HANDLE; stdcall;
  3835. {$EXTERNALSYM OpenBackupEventLogA}
  3836. function ReadEventLogA(hEventLog: HANDLE; dwReadFlags, dwRecordOffset: DWORD;
  3837. lpBuffer: LPVOID; nNumberOfBytesToRead: DWORD;
  3838. var pnBytesRead, pnMinNumberOfBytesNeeded: DWORD): BOOL; stdcall;
  3839. {$EXTERNALSYM ReadEventLogA}
  3840. function ReadEventLogW(hEventLog: HANDLE; dwReadFlags, dwRecordOffset: DWORD;
  3841. lpBuffer: LPVOID; nNumberOfBytesToRead: DWORD;
  3842. var pnBytesRead, pnMinNumberOfBytesNeeded: DWORD): BOOL; stdcall;
  3843. {$EXTERNALSYM ReadEventLogW}
  3844. function ReadEventLog(hEventLog: HANDLE; dwReadFlags, dwRecordOffset: DWORD;
  3845. lpBuffer: LPVOID; nNumberOfBytesToRead: DWORD;
  3846. var pnBytesRead, pnMinNumberOfBytesNeeded: DWORD): BOOL; stdcall;
  3847. {$EXTERNALSYM ReadEventLog}
  3848. function ReportEventA(hEventLog: HANDLE; wType, wCategory: WORD; dwEventID: DWORD;
  3849. lpUserSid: PSID; wNumStrings: WORD; dwDataSize: DWORD; lpStrings: LPCSTR;
  3850. lpRawData: LPVOID): BOOL; stdcall;
  3851. {$EXTERNALSYM ReportEventA}
  3852. function ReportEventW(hEventLog: HANDLE; wType, wCategory: WORD; dwEventID: DWORD;
  3853. lpUserSid: PSID; wNumStrings: WORD; dwDataSize: DWORD; lpStrings: LPCWSTR;
  3854. lpRawData: LPVOID): BOOL; stdcall;
  3855. {$EXTERNALSYM ReportEventW}
  3856. function ReportEvent(hEventLog: HANDLE; wType, wCategory: WORD; dwEventID: DWORD;
  3857. lpUserSid: PSID; wNumStrings: WORD; dwDataSize: DWORD; lpStrings: LPCTSTR;
  3858. lpRawData: LPVOID): BOOL; stdcall;
  3859. {$EXTERNALSYM ReportEvent}
  3860. const
  3861. EVENTLOG_FULL_INFO = 0;
  3862. {$EXTERNALSYM EVENTLOG_FULL_INFO}
  3863. type
  3864. LPEVENTLOG_FULL_INFORMATION = ^EVENTLOG_FULL_INFORMATION;
  3865. {$EXTERNALSYM LPEVENTLOG_FULL_INFORMATION}
  3866. _EVENTLOG_FULL_INFORMATION = record
  3867. dwFull: DWORD;
  3868. end;
  3869. {$EXTERNALSYM _EVENTLOG_FULL_INFORMATION}
  3870. EVENTLOG_FULL_INFORMATION = _EVENTLOG_FULL_INFORMATION;
  3871. {$EXTERNALSYM EVENTLOG_FULL_INFORMATION}
  3872. TEventlogFullInformation = EVENTLOG_FULL_INFORMATION;
  3873. PEventlogFullInformation = LPEVENTLOG_FULL_INFORMATION;
  3874. function GetEventLogInformation(hEventLog: HANDLE; dwInfoLevel: DWORD;
  3875. lpBuffer: LPVOID; cbBufSize: DWORD; var pcbBytesNeeded: DWORD): BOOL; stdcall;
  3876. {$EXTERNALSYM GetEventLogInformation}
  3877. //
  3878. // Security APIs
  3879. //
  3880. function DuplicateToken(ExistingTokenHandle: HANDLE;
  3881. ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL; DuplicateTokenHandle: PHANDLE): BOOL; stdcall;
  3882. {$EXTERNALSYM DuplicateToken}
  3883. function GetKernelObjectSecurity(Handle: HANDLE;
  3884. RequestedInformation: SECURITY_INFORMATION;
  3885. pSecurityDescriptor: PSECURITY_DESCRIPTOR; nLength: DWORD;
  3886. var lpnLengthNeeded: DWORD): BOOL; stdcall;
  3887. {$EXTERNALSYM GetKernelObjectSecurity}
  3888. function ImpersonateNamedPipeClient(hNamedPipe: HANDLE): BOOL; stdcall;
  3889. {$EXTERNALSYM ImpersonateNamedPipeClient}
  3890. function ImpersonateSelf(ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL): BOOL; stdcall;
  3891. {$EXTERNALSYM ImpersonateSelf}
  3892. function RevertToSelf : BOOL; stdcall;
  3893. {$EXTERNALSYM RevertToSelf}
  3894. function SetThreadToken(Thread: PHANDLE; Token: HANDLE): BOOL; stdcall;
  3895. {$EXTERNALSYM SetThreadToken}
  3896. function AccessCheck(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  3897. ClientToken: HANDLE; DesiredAccess: DWORD; const GenericMapping: GENERIC_MAPPING;
  3898. var PrivilegeSet: PRIVILEGE_SET; var PrivilegeSetLength,
  3899. GrantedAccess: DWORD; var AccessStatus: BOOL): BOOL; stdcall;
  3900. {$EXTERNALSYM AccessCheck}
  3901. function AccessCheckByType(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  3902. PrincipalSelfSid: PSID; ClientToken: HANDLE; DesiredAccess: DWORD;
  3903. ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
  3904. const GenericMapping: GENERIC_MAPPING; var PrivilegeSet: PRIVILEGE_SET;
  3905. var PrivilegeSetLength, GrantedAccess: DWORD; var AccessStatus: BOOL): BOOL; stdcall;
  3906. {$EXTERNALSYM AccessCheckByType}
  3907. function AccessCheckByTypeResultList(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  3908. PrincipalSelfSid: PSID; ClientToken: HANDLE; DesiredAccess: DWORD;
  3909. ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
  3910. const GenericMapping: GENERIC_MAPPING; var PrivilegeSet: PRIVILEGE_SET;
  3911. var PrivilegeSetLength, GrantedAccessList: DWORD;
  3912. var AccessStatusList: DWORD): BOOL; stdcall;
  3913. {$EXTERNALSYM AccessCheckByTypeResultList}
  3914. function OpenProcessToken(ProcessHandle: HANDLE; DesiredAccess: DWORD;
  3915. var TokenHandle: HANDLE): BOOL; stdcall;
  3916. {$EXTERNALSYM OpenProcessToken}
  3917. function OpenThreadToken(ThreadHandle: HANDLE; DesiredAccess: DWORD;
  3918. OpenAsSelf: BOOL; var TokenHandle: HANDLE): BOOL; stdcall;
  3919. {$EXTERNALSYM OpenThreadToken}
  3920. function GetTokenInformation(TokenHandle: HANDLE;
  3921. TokenInformationClass: TOKEN_INFORMATION_CLASS; TokenInformation: LPVOID;
  3922. TokenInformationLength: DWORD; var ReturnLength: DWORD): BOOL; stdcall;
  3923. {$EXTERNALSYM GetTokenInformation}
  3924. function SetTokenInformation(TokenHandle: HANDLE;
  3925. TokenInformationClass: TOKEN_INFORMATION_CLASS; TokenInformation: LPVOID;
  3926. TokenInformationLength: DWORD): BOOL; stdcall;
  3927. {$EXTERNALSYM SetTokenInformation}
  3928. function AdjustTokenPrivileges(TokenHandle: HANDLE; DisableAllPrivileges: BOOL;
  3929. NewState: PTOKEN_PRIVILEGES; BufferLength: DWORD;
  3930. PreviousState: PTOKEN_PRIVILEGES; ReturnLength: LPDWORD): BOOL; stdcall;
  3931. {$EXTERNALSYM AdjustTokenPrivileges}
  3932. function AdjustTokenGroups(TokenHandle: HANDLE; ResetToDefault: BOOL;
  3933. NewState: PTOKEN_GROUPS; BufferLength: DWORD; PreviousState: PTOKEN_GROUPS;
  3934. ReturnLength: PDWORD): BOOL; stdcall;
  3935. {$EXTERNALSYM AdjustTokenGroups}
  3936. function PrivilegeCheck(ClientToken: HANDLE;
  3937. RequiredPrivileges: PPRIVILEGE_SET; var pfResult: BOOL): BOOL; stdcall;
  3938. {$EXTERNALSYM PrivilegeCheck}
  3939. function AccessCheckAndAuditAlarmA(SubsystemName: LPCSTR; HandleId: LPVOID;
  3940. ObjectTypeName, ObjectName: LPSTR; SecurityDescriptor: PSECURITY_DESCRIPTOR;
  3941. DesiredAccess: DWORD; const GenericMapping: GENERIC_MAPPING;
  3942. ObjectCreation: BOOL; var GrantedAccess: DWORD;
  3943. var AccessStatus, pfGenerateOnClose: BOOL): BOOL; stdcall;
  3944. {$EXTERNALSYM AccessCheckAndAuditAlarmA}
  3945. function AccessCheckAndAuditAlarmW(SubsystemName: LPCWSTR; HandleId: LPVOID;
  3946. ObjectTypeName, ObjectName: LPWSTR; SecurityDescriptor: PSECURITY_DESCRIPTOR;
  3947. DesiredAccess: DWORD; const GenericMapping: GENERIC_MAPPING;
  3948. ObjectCreation: BOOL; var GrantedAccess: DWORD;
  3949. var AccessStatus, pfGenerateOnClose: BOOL): BOOL; stdcall;
  3950. {$EXTERNALSYM AccessCheckAndAuditAlarmW}
  3951. function AccessCheckAndAuditAlarm(SubsystemName: LPCTSTR; HandleId: LPVOID;
  3952. ObjectTypeName, ObjectName: LPTSTR; SecurityDescriptor: PSECURITY_DESCRIPTOR;
  3953. DesiredAccess: DWORD; const GenericMapping: GENERIC_MAPPING;
  3954. ObjectCreation: BOOL; var GrantedAccess: DWORD;
  3955. var AccessStatus, pfGenerateOnClose: BOOL): BOOL; stdcall;
  3956. {$EXTERNALSYM AccessCheckAndAuditAlarmA}
  3957. function AccessCheckByTypeAndAuditAlarmA(SubsystemName: LPCSTR; HandleId: LPVOID;
  3958. ObjectTypeName: LPCSTR; ObjectName: LPCSTR; SecurityDescriptor: PSECURITY_DESCRIPTOR;
  3959. PrincipalSelfSid: PSID; DesiredAccess: DWORD; AuditType: AUDIT_EVENT_TYPE;
  3960. Flags: DWORD; ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
  3961. GenericMapping: PGENERIC_MAPPING; ObjectCreation: BOOL; GrantedAccess: LPDWORD;
  3962. AccessStatus: LPBOOL; pfGenerateOnClose: LPBOOL): BOOL; stdcall;
  3963. {$EXTERNALSYM AccessCheckByTypeAndAuditAlarmA}
  3964. function AccessCheckByTypeAndAuditAlarmW(SubsystemName: LPCWSTR; HandleId: LPVOID;
  3965. ObjectTypeName: LPCWSTR; ObjectName: LPCWSTR; SecurityDescriptor: PSECURITY_DESCRIPTOR;
  3966. PrincipalSelfSid: PSID; DesiredAccess: DWORD; AuditType: AUDIT_EVENT_TYPE;
  3967. Flags: DWORD; ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
  3968. GenericMapping: PGENERIC_MAPPING; ObjectCreation: BOOL; GrantedAccess: LPDWORD;
  3969. AccessStatus: LPBOOL; pfGenerateOnClose: LPBOOL): BOOL; stdcall;
  3970. {$EXTERNALSYM AccessCheckByTypeAndAuditAlarmW}
  3971. function AccessCheckByTypeAndAuditAlarm(SubsystemName: LPCTSTR; HandleId: LPVOID;
  3972. ObjectTypeName, ObjectName: LPCTSTR; SecurityDescriptor: PSECURITY_DESCRIPTOR;
  3973. PrincipalSelfSid: PSID; DesiredAccess: DWORD; AuditType: AUDIT_EVENT_TYPE;
  3974. Flags: DWORD; ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
  3975. const GenericMapping: GENERIC_MAPPING; ObjectCreation: BOOL;
  3976. var GrantedAccess: DWORD; var AccessStatus, pfGenerateOnClose: BOOL): BOOL; stdcall;
  3977. {$EXTERNALSYM AccessCheckByTypeAndAuditAlarmA}
  3978. function AccessCheckByTypeResultListAndAuditAlarmA(SubsystemName: LPCSTR;
  3979. HandleId: LPVOID; ObjectTypeName, ObjectName: LPCSTR;
  3980. SecurityDescriptor: PSECURITY_DESCRIPTOR; PrincipalSelfSid: PSID;
  3981. DesiredAccess: DWORD; AuditType: AUDIT_EVENT_TYPE; Flags: DWORD;
  3982. ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
  3983. const GenericMapping: GENERIC_MAPPING; ObjectCreation: BOOL;
  3984. var GrantedAccess, AccessStatusList: DWORD; var pfGenerateOnClose: BOOL): BOOL; stdcall;
  3985. {$EXTERNALSYM AccessCheckByTypeResultListAndAuditAlarmA}
  3986. function AccessCheckByTypeResultListAndAuditAlarmW(SubsystemName: LPCWSTR;
  3987. HandleId: LPVOID; ObjectTypeName, ObjectName: LPCWSTR;
  3988. SecurityDescriptor: PSECURITY_DESCRIPTOR; PrincipalSelfSid: PSID;
  3989. DesiredAccess: DWORD; AuditType: AUDIT_EVENT_TYPE; Flags: DWORD;
  3990. ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
  3991. const GenericMapping: GENERIC_MAPPING; ObjectCreation: BOOL;
  3992. var GrantedAccess, AccessStatusList: DWORD; var pfGenerateOnClose: BOOL): BOOL; stdcall;
  3993. {$EXTERNALSYM AccessCheckByTypeResultListAndAuditAlarmW}
  3994. function AccessCheckByTypeResultListAndAuditAlarm(SubsystemName: LPCTSTR;
  3995. HandleId: LPVOID; ObjectTypeName, ObjectName: LPCTSTR;
  3996. SecurityDescriptor: PSECURITY_DESCRIPTOR; PrincipalSelfSid: PSID;
  3997. DesiredAccess: DWORD; AuditType: AUDIT_EVENT_TYPE; Flags: DWORD;
  3998. ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
  3999. const GenericMapping: GENERIC_MAPPING; ObjectCreation: BOOL;
  4000. var GrantedAccess, AccessStatusList: DWORD; var pfGenerateOnClose: BOOL): BOOL; stdcall;
  4001. {$EXTERNALSYM AccessCheckByTypeResultListAndAuditAlarmA}
  4002. function AccessCheckByTypeResultListAndAuditAlarmByHandleA(SubsystemName: LPCSTR;
  4003. HandleId: LPVOID; ClientToken: HANDLE; ObjectTypeName, ObjectName: LPCSTR;
  4004. SecurityDescriptor: PSECURITY_DESCRIPTOR; PrincipalSelfSid: PSID;
  4005. DesiredAccess: DWORD; AuditType: AUDIT_EVENT_TYPE; Flags: DWORD;
  4006. ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
  4007. const GenericMapping: GENERIC_MAPPING; ObjectCreation: BOOL;
  4008. var GrantedAccess, AccessStatusList: DWORD; var pfGenerateOnClose: BOOL): BOOL; stdcall;
  4009. {$EXTERNALSYM AccessCheckByTypeResultListAndAuditAlarmByHandleA}
  4010. function AccessCheckByTypeResultListAndAuditAlarmByHandleW(SubsystemName: LPCWSTR;
  4011. HandleId: LPVOID; ClientToken: HANDLE; ObjectTypeName, ObjectName: LPCWSTR;
  4012. SecurityDescriptor: PSECURITY_DESCRIPTOR; PrincipalSelfSid: PSID;
  4013. DesiredAccess: DWORD; AuditType: AUDIT_EVENT_TYPE; Flags: DWORD;
  4014. ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
  4015. const GenericMapping: PGENERIC_MAPPING; ObjectCreation: BOOL;
  4016. var GrantedAccess, AccessStatusList: DWORD; var pfGenerateOnClose: BOOL): BOOL; stdcall;
  4017. {$EXTERNALSYM AccessCheckByTypeResultListAndAuditAlarmByHandleW}
  4018. function AccessCheckByTypeResultListAndAuditAlarmByHandle(SubsystemName: LPCTSTR;
  4019. HandleId: LPVOID; ClientToken: HANDLE; ObjectTypeName, ObjectName: LPCTSTR;
  4020. SecurityDescriptor: PSECURITY_DESCRIPTOR; PrincipalSelfSid: PSID;
  4021. DesiredAccess: DWORD; AuditType: AUDIT_EVENT_TYPE; Flags: DWORD;
  4022. ObjectTypeList: POBJECT_TYPE_LIST; ObjectTypeListLength: DWORD;
  4023. const GenericMapping: PGENERIC_MAPPING; ObjectCreation: BOOL;
  4024. var GrantedAccess, AccessStatusList: DWORD; var pfGenerateOnClose: BOOL): BOOL; stdcall;
  4025. {$EXTERNALSYM AccessCheckByTypeResultListAndAuditAlarmByHandle}
  4026. function ObjectOpenAuditAlarmA(SubsystemName: LPCSTR; HandleId: LPVOID;
  4027. ObjectTypeName: LPSTR; ObjectName: LPSTR; pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4028. ClientToken: HANDLE; DesiredAccess, GrantedAccess: DWORD;
  4029. Privileges: PPRIVILEGE_SET; ObjectCreation: BOOL; AccessGranted: BOOL;
  4030. var GenerateOnClose: BOOL): BOOL; stdcall;
  4031. {$EXTERNALSYM ObjectOpenAuditAlarmA}
  4032. function ObjectOpenAuditAlarmW(SubsystemName: LPCWSTR; HandleId: LPVOID;
  4033. ObjectTypeName, ObjectName: LPWSTR; pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4034. ClientToken: HANDLE; DesiredAccess: DWORD; GrantedAccess: DWORD;
  4035. Privileges: PPRIVILEGE_SET; ObjectCreation: BOOL; AccessGranted: BOOL;
  4036. var GenerateOnClose: BOOL): BOOL; stdcall;
  4037. {$EXTERNALSYM ObjectOpenAuditAlarmW}
  4038. function ObjectOpenAuditAlarm(SubsystemName: LPCTSTR; HandleId: LPVOID;
  4039. ObjectTypeName: LPTSTR; ObjectName: LPTSTR; pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4040. ClientToken: HANDLE; DesiredAccess: DWORD; GrantedAccess: DWORD;
  4041. Privileges: PPRIVILEGE_SET; ObjectCreation: BOOL; AccessGranted: BOOL;
  4042. var GenerateOnClose: BOOL): BOOL; stdcall;
  4043. {$EXTERNALSYM ObjectOpenAuditAlarmA}
  4044. function ObjectPrivilegeAuditAlarmA(SubsystemName: LPCSTR; HandleId: LPVOID;
  4045. ClientToken: HANDLE; DesiredAccess: DWORD; const Privileges: PRIVILEGE_SET;
  4046. AccessGranted: BOOL): BOOL; stdcall;
  4047. {$EXTERNALSYM ObjectPrivilegeAuditAlarmA}
  4048. function ObjectPrivilegeAuditAlarmW(SubsystemName: LPCWSTR; HandleId: LPVOID;
  4049. ClientToken: HANDLE; DesiredAccess: DWORD; const Privileges: PRIVILEGE_SET;
  4050. AccessGranted: BOOL): BOOL; stdcall;
  4051. {$EXTERNALSYM ObjectPrivilegeAuditAlarmW}
  4052. function ObjectPrivilegeAuditAlarm(SubsystemName: LPCTSTR; HandleId: LPVOID;
  4053. ClientToken: HANDLE; DesiredAccess: DWORD; const Privileges: PRIVILEGE_SET;
  4054. AccessGranted: BOOL): BOOL; stdcall;
  4055. {$EXTERNALSYM ObjectPrivilegeAuditAlarmA}
  4056. function ObjectCloseAuditAlarmA(SubsystemName: LPCSTR; HandleId: LPVOID;
  4057. GenerateOnClose: BOOL): BOOL; stdcall;
  4058. {$EXTERNALSYM ObjectCloseAuditAlarmA}
  4059. function ObjectCloseAuditAlarmW(SubsystemName: LPCWSTR; HandleId: LPVOID;
  4060. GenerateOnClose: BOOL): BOOL; stdcall;
  4061. {$EXTERNALSYM ObjectCloseAuditAlarmW}
  4062. function ObjectCloseAuditAlarm(SubsystemName: LPCTSTR; HandleId: LPVOID;
  4063. GenerateOnClose: BOOL): BOOL; stdcall;
  4064. {$EXTERNALSYM ObjectCloseAuditAlarmA}
  4065. function ObjectDeleteAuditAlarmA(SubsystemName: LPCSTR; HandleId: LPVOID;
  4066. GenerateOnClose: BOOL): BOOL; stdcall;
  4067. {$EXTERNALSYM ObjectDeleteAuditAlarmA}
  4068. function ObjectDeleteAuditAlarmW(SubsystemName: LPCWSTR; HandleId: LPVOID;
  4069. GenerateOnClose: BOOL): BOOL; stdcall;
  4070. {$EXTERNALSYM ObjectDeleteAuditAlarmW}
  4071. function ObjectDeleteAuditAlarm(SubsystemName: LPCTSTR; HandleId: LPVOID;
  4072. GenerateOnClose: BOOL): BOOL; stdcall;
  4073. {$EXTERNALSYM ObjectDeleteAuditAlarmA}
  4074. function PrivilegedServiceAuditAlarmA(SubsystemName, ServiceName: LPCSTR;
  4075. ClientToken: HANDLE; const Privileges: PRIVILEGE_SET; AccessGranted: BOOL): BOOL; stdcall;
  4076. {$EXTERNALSYM PrivilegedServiceAuditAlarmA}
  4077. function PrivilegedServiceAuditAlarmW(SubsystemName, ServiceName: LPCWSTR;
  4078. ClientToken: HANDLE; const Privileges: PRIVILEGE_SET; AccessGranted: BOOL): BOOL; stdcall;
  4079. {$EXTERNALSYM PrivilegedServiceAuditAlarmW}
  4080. function PrivilegedServiceAuditAlarm(SubsystemName, ServiceName: LPCTSTR;
  4081. ClientToken: HANDLE; const Privileges: PRIVILEGE_SET; AccessGranted: BOOL): BOOL; stdcall;
  4082. {$EXTERNALSYM PrivilegedServiceAuditAlarmA}
  4083. function IsWellKnownSid(pSid: PSID; WellKnownSidType: WELL_KNOWN_SID_TYPE): BOOL; stdcall;
  4084. {$EXTERNALSYM IsWellKnownSid}
  4085. function CreateWellKnownSid(WellKnownSidType: WELL_KNOWN_SID_TYPE; DomainSid: PSID;
  4086. pSid: PSID; var cbSid: DWORD): BOOL; stdcall;
  4087. {$EXTERNALSYM CreateWellKnownSid}
  4088. function EqualDomainSid(pSid1, pSid2: PSID; pfEqual: PBOOL): BOOL; stdcall;
  4089. {$EXTERNALSYM EqualDomainSid}
  4090. function GetWindowsAccountDomainSid(pSid, ppDomainSid: PSID; var cbSid: DWORD): BOOL; stdcall;
  4091. {$EXTERNALSYM GetWindowsAccountDomainSid}
  4092. function IsValidSid(pSid: PSID): BOOL; stdcall;
  4093. {$EXTERNALSYM IsValidSid}
  4094. function EqualSid(pSid1, pSid2: PSID): BOOL; stdcall;
  4095. {$EXTERNALSYM EqualSid}
  4096. function EqualPrefixSid(pSid1, pSid2: PSID): BOOL; stdcall;
  4097. {$EXTERNALSYM EqualPrefixSid}
  4098. function GetSidLengthRequired(nSubAuthorityCount: UCHAR): DWORD; stdcall;
  4099. {$EXTERNALSYM GetSidLengthRequired}
  4100. function AllocateAndInitializeSid(pIdentifierAuthority: PSID_IDENTIFIER_AUTHORITY;
  4101. SubAuthorityCount: BYTE; nSubAuthority0, nSubAuthority1, nSubAuthority2,
  4102. nSubAuthority3, nSubAuthority4, nSubAuthority5, nSubAuthority6,
  4103. nSubAuthority7: DWORD; var pSid: PSID): BOOL; stdcall;
  4104. {$EXTERNALSYM AllocateAndInitializeSid}
  4105. function FreeSid(pSid: PSID): PVOID; stdcall;
  4106. {$EXTERNALSYM FreeSid}
  4107. function InitializeSid(Sid: PSID; pIdentifierAuthority: PSID_IDENTIFIER_AUTHORITY;
  4108. nSubAuthorityCount: BYTE): BOOL; stdcall;
  4109. {$EXTERNALSYM InitializeSid}
  4110. function GetSidIdentifierAuthority(pSid: PSID): PSID_IDENTIFIER_AUTHORITY; stdcall;
  4111. {$EXTERNALSYM GetSidIdentifierAuthority}
  4112. function GetSidSubAuthority(pSid: PSID; nSubAuthority: DWORD): PDWORD; stdcall;
  4113. {$EXTERNALSYM GetSidSubAuthority}
  4114. function GetSidSubAuthorityCount(pSid: PSID): PUCHAR; stdcall;
  4115. {$EXTERNALSYM GetSidSubAuthorityCount}
  4116. function GetLengthSid(pSid: PSID): DWORD; stdcall;
  4117. {$EXTERNALSYM GetLengthSid}
  4118. function CopySid(nDestinationSidLength: DWORD; pDestinationSid: PSID;
  4119. pSourceSid: PSID): BOOL; stdcall;
  4120. {$EXTERNALSYM CopySid}
  4121. function AreAllAccessesGranted(GrantedAccess, DesiredAccess: DWORD): BOOL; stdcall;
  4122. {$EXTERNALSYM AreAllAccessesGranted}
  4123. function AreAnyAccessesGranted(GrantedAccess, DesiredAccess: DWORD): BOOL; stdcall;
  4124. {$EXTERNALSYM AreAnyAccessesGranted}
  4125. procedure MapGenericMask(var AccessMask: DWORD; var GenericMapping: GENERIC_MAPPING); stdcall;
  4126. {$EXTERNALSYM MapGenericMask}
  4127. function IsValidAcl(pAcl: PACL): BOOL; stdcall;
  4128. {$EXTERNALSYM IsValidAcl}
  4129. function InitializeAcl(pAcl: PACL; nAclLength: DWORD; dwAclRevision: DWORD): BOOL; stdcall;
  4130. {$EXTERNALSYM InitializeAcl}
  4131. function GetAclInformation(pAcl: PACL; pAclInformation: LPVOID;
  4132. nAclInformationLength: DWORD; dwAclInformationClass: ACL_INFORMATION_CLASS): BOOL; stdcall;
  4133. {$EXTERNALSYM GetAclInformation}
  4134. function SetAclInformation(pAcl: PACL; pAclInformation: LPVOID;
  4135. nAclInformationLength: DWORD; dwAclInformationClass: ACL_INFORMATION_CLASS): BOOL; stdcall;
  4136. {$EXTERNALSYM SetAclInformation}
  4137. function AddAce(pAcl: PACL; dwAceRevision: DWORD; dwStartingAceIndex: DWORD;
  4138. pAceList: LPVOID; nAceListLength: DWORD): BOOL; stdcall;
  4139. {$EXTERNALSYM AddAce}
  4140. function DeleteAce(pAcl: PACL; dwAceIndex: DWORD): BOOL; stdcall;
  4141. {$EXTERNALSYM DeleteAce}
  4142. function GetAce(pAcl: PACL; dwAceIndex: DWORD; var pAce: LPVOID): BOOL; stdcall;
  4143. {$EXTERNALSYM GetAce}
  4144. function AddAccessAllowedAce(pAcl: PACL; dwAceRevision, AccessMask: DWORD; pSid: PSID): BOOL; stdcall;
  4145. {$EXTERNALSYM AddAccessAllowedAce}
  4146. function AddAccessAllowedAceEx(pAcl: PACL; dwAceRevision, AceFlags,
  4147. AccessMask: DWORD; pSid: PSID): BOOL; stdcall;
  4148. {$EXTERNALSYM AddAccessAllowedAceEx}
  4149. function AddAccessDeniedAce(pAcl: PACL; dwAceRevision, AccessMask: DWORD; pSid: PSID): BOOL; stdcall;
  4150. {$EXTERNALSYM AddAccessDeniedAce}
  4151. function AddAccessDeniedAceEx(pAcl: PACL; dwAceRevision, AceFlags: DWORD;
  4152. AccessMask: DWORD; pSid: PSID): BOOL; stdcall;
  4153. {$EXTERNALSYM AddAccessDeniedAceEx}
  4154. function AddAuditAccessAce(pAcl: PACL; dwAceRevision, dwAccessMask: DWORD;
  4155. pSid: PSID; bAuditSuccess, bAuditFailure: BOOL): BOOL; stdcall;
  4156. {$EXTERNALSYM AddAuditAccessAce}
  4157. function AddAuditAccessAceEx(pAcl: PACL; dwAceRevision, AceFlags,
  4158. dwAccessMask: DWORD; pSid: PSID; bAuditSuccess, bAuditFailure: BOOL): BOOL; stdcall;
  4159. {$EXTERNALSYM AddAuditAccessAceEx}
  4160. function AddAccessAllowedObjectAce(pAcl: PACL; dwAceRevision, AceFlags,
  4161. AccessMask: DWORD; ObjectTypeGuid, InheritedObjectTypeGuid: LPGUID; pSid: PSID): BOOL; stdcall;
  4162. {$EXTERNALSYM AddAccessAllowedObjectAce}
  4163. function AddAccessDeniedObjectAce(pAcl: PACL; dwAceRevision, AceFlags,
  4164. AccessMask: DWORD; ObjectTypeGuid, InheritedObjectTypeGuid: LPGUID; pSid: PSID): BOOL; stdcall;
  4165. {$EXTERNALSYM AddAccessDeniedObjectAce}
  4166. function AddAuditAccessObjectAce(pAcl: PACL; dwAceRevision, AceFlags,
  4167. AccessMask: DWORD; ObjectTypeGuid, InheritedObjectTypeGuid: LPGUID; pSid: PSID;
  4168. bAuditSuccess, bAuditFailure: BOOL): BOOL; stdcall;
  4169. {$EXTERNALSYM AddAuditAccessObjectAce}
  4170. function FindFirstFreeAce(pAcl: PACL; var pAce: LPVOID): BOOL; stdcall;
  4171. {$EXTERNALSYM FindFirstFreeAce}
  4172. function InitializeSecurityDescriptor(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4173. dwRevision: DWORD): BOOL; stdcall;
  4174. {$EXTERNALSYM InitializeSecurityDescriptor}
  4175. function IsValidSecurityDescriptor(pSecurityDescriptor: PSECURITY_DESCRIPTOR): BOOL; stdcall;
  4176. {$EXTERNALSYM IsValidSecurityDescriptor}
  4177. function GetSecurityDescriptorLength(pSecurityDescriptor: PSECURITY_DESCRIPTOR): DWORD; stdcall;
  4178. {$EXTERNALSYM GetSecurityDescriptorLength}
  4179. function GetSecurityDescriptorControl(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4180. var pControl: SECURITY_DESCRIPTOR_CONTROL; var lpdwRevision: DWORD): BOOL; stdcall;
  4181. {$EXTERNALSYM GetSecurityDescriptorControl}
  4182. function SetSecurityDescriptorControl(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4183. ControlBitsOfInterest, ControlBitsToSet: SECURITY_DESCRIPTOR_CONTROL): BOOL; stdcall;
  4184. {$EXTERNALSYM SetSecurityDescriptorControl}
  4185. function SetSecurityDescriptorDacl(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4186. bDaclPresent: BOOL; pDacl: PACL; bDaclDefaulted: BOOL): BOOL; stdcall;
  4187. {$EXTERNALSYM SetSecurityDescriptorDacl}
  4188. function GetSecurityDescriptorDacl(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4189. var lpbDaclPresent: BOOL; var pDacl: PACL; var lpbDaclDefaulted: BOOL): BOOL; stdcall;
  4190. {$EXTERNALSYM GetSecurityDescriptorDacl}
  4191. function SetSecurityDescriptorSacl(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4192. bSaclPresent: BOOL; pSacl: PACL; bSaclDefaulted: BOOL): BOOL; stdcall;
  4193. {$EXTERNALSYM SetSecurityDescriptorSacl}
  4194. function GetSecurityDescriptorSacl(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4195. var lpbSaclPresent: BOOL; var pSacl: PACL; var lpbSaclDefaulted: BOOL): BOOL; stdcall;
  4196. {$EXTERNALSYM GetSecurityDescriptorSacl}
  4197. function SetSecurityDescriptorOwner(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4198. pOwner: PSID; bOwnerDefaulted: BOOL): BOOL; stdcall;
  4199. {$EXTERNALSYM SetSecurityDescriptorOwner}
  4200. function GetSecurityDescriptorOwner(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4201. var pOwner: PSID; lpbOwnerDefaulted: PBOOL): BOOL; stdcall;
  4202. {$EXTERNALSYM GetSecurityDescriptorOwner}
  4203. function SetSecurityDescriptorGroup(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4204. pGroup: PSID; bGroupDefaulted: BOOL): BOOL; stdcall;
  4205. {$EXTERNALSYM SetSecurityDescriptorGroup}
  4206. function GetSecurityDescriptorGroup(pSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4207. var pGroup: PSID; lpbGroupDefaulted: PBOOL): BOOL; stdcall;
  4208. {$EXTERNALSYM GetSecurityDescriptorGroup}
  4209. function SetSecurityDescriptorRMControl(SecurityDescriptor: PSECURITY_DESCRIPTOR;
  4210. RMControl: PUCHAR): DWORD; stdcall;
  4211. {$EXTERNALSYM SetSecurityDescriptorRMControl}
  4212. function GetSecurityDescriptorRMControl(SecurityDescriptor: PSECURITY_DESCRIPTOR;
  4213. var RMControl: UCHAR): DWORD; stdcall;
  4214. {$EXTERNALSYM GetSecurityDescriptorRMControl}
  4215. function CreatePrivateObjectSecurity(ParentDescriptor, CreatorDescriptor: PSECURITY_DESCRIPTOR;
  4216. var NewDescriptor: PSECURITY_DESCRIPTOR; IsDirectoryObject: BOOL; Token: HANDLE;
  4217. const GenericMapping: GENERIC_MAPPING): BOOL; stdcall;
  4218. {$EXTERNALSYM CreatePrivateObjectSecurity}
  4219. function ConvertToAutoInheritPrivateObjectSecurity(ParentDescriptor,
  4220. CurrentSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4221. var NewSecurityDescriptor: PSECURITY_DESCRIPTOR; ObjectType: LPGUID;
  4222. IsDirectoryObject: ByteBool; const GenericMapping: GENERIC_MAPPING): BOOL; stdcall;
  4223. {$EXTERNALSYM ConvertToAutoInheritPrivateObjectSecurity}
  4224. function CreatePrivateObjectSecurityEx(ParentDescriptor,
  4225. CreatorDescriptor: PSECURITY_DESCRIPTOR;
  4226. var NewDescriptor: PSECURITY_DESCRIPTOR; ObjectType: LPGUID;
  4227. IsContainerObject: BOOL; AutoInheritFlags: ULONG; Token: HANDLE;
  4228. const GenericMapping: GENERIC_MAPPING): BOOL; stdcall;
  4229. {$EXTERNALSYM CreatePrivateObjectSecurityEx}
  4230. function SetPrivateObjectSecurity(SecurityInformation: SECURITY_INFORMATION;
  4231. ModificationDescriptor: PSECURITY_DESCRIPTOR;
  4232. var ObjectsSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4233. const GenericMapping: GENERIC_MAPPING; Token: HANDLE): BOOL; stdcall;
  4234. {$EXTERNALSYM SetPrivateObjectSecurity}
  4235. function SetPrivateObjectSecurityEx(SecurityInformation: SECURITY_INFORMATION;
  4236. ModificationDescriptor: PSECURITY_DESCRIPTOR;
  4237. var ObjectsSecurityDescriptor: PSECURITY_DESCRIPTOR; AutoInheritFlags: ULONG;
  4238. const GenericMapping: GENERIC_MAPPING; Token: HANDLE): BOOL; stdcall;
  4239. {$EXTERNALSYM SetPrivateObjectSecurityEx}
  4240. function GetPrivateObjectSecurity(ObjectDescriptor: PSECURITY_DESCRIPTOR;
  4241. SecurityInformation: SECURITY_INFORMATION;
  4242. ResultantDescriptor: PSECURITY_DESCRIPTOR; DescriptorLength: DWORD;
  4243. var ReturnLength: DWORD): BOOL; stdcall;
  4244. {$EXTERNALSYM GetPrivateObjectSecurity}
  4245. function DestroyPrivateObjectSecurity(var ObjectDescriptor: PSECURITY_DESCRIPTOR): BOOL; stdcall;
  4246. {$EXTERNALSYM DestroyPrivateObjectSecurity}
  4247. function MakeSelfRelativeSD(pAbsoluteSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4248. pSelfRelativeSecurityDescriptor: PSECURITY_DESCRIPTOR; var lpdwBufferLength: DWORD): BOOL; stdcall;
  4249. {$EXTERNALSYM MakeSelfRelativeSD}
  4250. function MakeAbsoluteSD(pSelfRelativeSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4251. pAbsoluteSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4252. var lpdwAbsoluteSecurityDescriptorSize: DWORD; pDacl: PACL;
  4253. var lpdwDaclSize: DWORD; pSacl: PACL; var lpdwSaclSize: DWORD; pOwner: PSID;
  4254. var lpdwOwnerSize: DWORD; pPrimaryGroup: PSID; var lpdwPrimaryGroupSize: DWORD): BOOL; stdcall;
  4255. {$EXTERNALSYM MakeAbsoluteSD}
  4256. function MakeAbsoluteSD2(pSelfRelativeSecurityDescriptor: PSECURITY_DESCRIPTOR;
  4257. var lpdwBufferSize: DWORD): BOOL; stdcall;
  4258. {$EXTERNALSYM MakeAbsoluteSD2}
  4259. function SetFileSecurityA(lpFileName: LPCSTR; SecurityInformation: SECURITY_INFORMATION;
  4260. pSecurityDescriptor: PSECURITY_DESCRIPTOR): BOOL; stdcall;
  4261. {$EXTERNALSYM SetFileSecurityA}
  4262. function SetFileSecurityW(lpFileName: LPCWSTR; SecurityInformation: SECURITY_INFORMATION;
  4263. pSecurityDescriptor: PSECURITY_DESCRIPTOR): BOOL; stdcall;
  4264. {$EXTERNALSYM SetFileSecurityW}
  4265. function SetFileSecurity(lpFileName: LPCTSTR; SecurityInformation: SECURITY_INFORMATION;
  4266. pSecurityDescriptor: PSECURITY_DESCRIPTOR): BOOL; stdcall;
  4267. {$EXTERNALSYM SetFileSecurityA}
  4268. function GetFileSecurityA(lpFileName: LPCSTR; RequestedInformation: SECURITY_INFORMATION;
  4269. pSecurityDescriptor: PSECURITY_DESCRIPTOR; nLength: DWORD;
  4270. var lpnLengthNeeded: DWORD): BOOL; stdcall;
  4271. {$EXTERNALSYM GetFileSecurityA}
  4272. function GetFileSecurityW(lpFileName: LPCWSTR; RequestedInformation: SECURITY_INFORMATION;
  4273. pSecurityDescriptor: PSECURITY_DESCRIPTOR; nLength: DWORD;
  4274. var lpnLengthNeeded: DWORD): BOOL; stdcall;
  4275. {$EXTERNALSYM GetFileSecurityW}
  4276. function GetFileSecurity(lpFileName: LPCTSTR; RequestedInformation: SECURITY_INFORMATION;
  4277. pSecurityDescriptor: PSECURITY_DESCRIPTOR; nLength: DWORD;
  4278. var lpnLengthNeeded: DWORD): BOOL; stdcall;
  4279. {$EXTERNALSYM GetFileSecurityA}
  4280. function SetKernelObjectSecurity(Handle: HANDLE; SecurityInformation: SECURITY_INFORMATION;
  4281. SecurityDescriptor: PSECURITY_DESCRIPTOR): BOOL; stdcall;
  4282. {$EXTERNALSYM SetKernelObjectSecurity}
  4283. function FindFirstChangeNotificationA(lpPathName: LPCSTR; bWatchSubtree: Cardinal;
  4284. dwNotifyFilter: DWORD): HANDLE; stdcall;
  4285. {$EXTERNALSYM FindFirstChangeNotificationA}
  4286. function FindFirstChangeNotificationW(lpPathName: LPCWSTR; bWatchSubtree: Cardinal;
  4287. dwNotifyFilter: DWORD): HANDLE; stdcall;
  4288. {$EXTERNALSYM FindFirstChangeNotificationW}
  4289. function FindFirstChangeNotification(lpPathName: LPCTSTR; bWatchSubtree: Cardinal;
  4290. dwNotifyFilter: DWORD): HANDLE; stdcall;
  4291. {$EXTERNALSYM FindFirstChangeNotification}
  4292. function FindNextChangeNotification(hChangeHandle: HANDLE): BOOL; stdcall;
  4293. {$EXTERNALSYM FindNextChangeNotification}
  4294. function FindCloseChangeNotification(hChangeHandle: HANDLE): BOOL; stdcall;
  4295. {$EXTERNALSYM FindCloseChangeNotification}
  4296. function ReadDirectoryChangesW(hDirectory: HANDLE; lpBuffer: LPVOID;
  4297. nBufferLength: DWORD; bWatchSubtree: BOOL; dwNotifyFilter: DWORD;
  4298. lpBytesReturned: LPDWORD; lpOverlapped: LPOVERLAPPED;
  4299. lpCompletionRoutine: LPOVERLAPPED_COMPLETION_ROUTINE): BOOL; stdcall;
  4300. {$EXTERNALSYM ReadDirectoryChangesW}
  4301. function VirtualLock(lpAddress: LPVOID; dwSize: SIZE_T): BOOL; stdcall;
  4302. {$EXTERNALSYM VirtualLock}
  4303. function VirtualUnlock(lpAddress: LPVOID; dwSize: SIZE_T): BOOL; stdcall;
  4304. {$EXTERNALSYM VirtualUnlock}
  4305. function MapViewOfFileEx(hFileMappingObject: HANDLE; dwDesiredAccess: DWORD;
  4306. dwFileOffsetHigh: DWORD; dwFileOffsetLow: DWORD; dwNumberOfBytesToMap: SIZE_T;
  4307. lpBaseAddress: LPVOID): LPVOID; stdcall;
  4308. {$EXTERNALSYM MapViewOfFileEx}
  4309. function SetPriorityClass(hProcess: HANDLE; dwPriorityClass: DWORD): BOOL; stdcall;
  4310. {$EXTERNALSYM SetPriorityClass}
  4311. function GetPriorityClass(hProcess: HANDLE): DWORD; stdcall;
  4312. {$EXTERNALSYM GetPriorityClass}
  4313. function IsBadReadPtr(lp: LPVOID; ucb: UINT_PTR): BOOL; stdcall;
  4314. {$EXTERNALSYM IsBadReadPtr}
  4315. function IsBadWritePtr(lp: LPVOID; ucb: UINT_PTR): BOOL; stdcall;
  4316. {$EXTERNALSYM IsBadWritePtr}
  4317. function IsBadHugeReadPtr(lp: LPVOID; ucb: UINT_PTR): BOOL; stdcall;
  4318. {$EXTERNALSYM IsBadHugeReadPtr}
  4319. function IsBadHugeWritePtr(lp: LPVOID; ucb: UINT_PTR): BOOL; stdcall;
  4320. {$EXTERNALSYM IsBadHugeWritePtr}
  4321. function IsBadCodePtr(lpfn: FARPROC): BOOL; stdcall;
  4322. {$EXTERNALSYM IsBadCodePtr}
  4323. function IsBadStringPtrA(lpsz: LPCSTR; ucchMax: UINT_PTR): BOOL; stdcall;
  4324. {$EXTERNALSYM IsBadStringPtrA}
  4325. function IsBadStringPtrW(lpsz: LPCWSTR; ucchMax: UINT_PTR): BOOL; stdcall;
  4326. {$EXTERNALSYM IsBadStringPtrW}
  4327. function IsBadStringPtr(lpsz: LPCTSTR; ucchMax: UINT_PTR): BOOL; stdcall;
  4328. {$EXTERNALSYM IsBadStringPtr}
  4329. function LookupAccountSidA(lpSystemName: LPCSTR; Sid: PSID; Name: LPSTR;
  4330. var cchName: DWORD; ReferencedDomainName: LPSTR; var cchReferencedDomainName: DWORD;
  4331. var peUse: SID_NAME_USE): BOOL; stdcall;
  4332. {$EXTERNALSYM LookupAccountSidA}
  4333. function LookupAccountSidW(lpSystemName: LPCWSTR; Sid: PSID; Name: LPWSTR;
  4334. var cchName: DWORD; ReferencedDomainName: LPWSTR; var cchReferencedDomainName: DWORD;
  4335. var peUse: SID_NAME_USE): BOOL; stdcall;
  4336. {$EXTERNALSYM LookupAccountSidW}
  4337. function LookupAccountSid(lpSystemName: LPCTSTR; Sid: PSID; Name: LPTSTR;
  4338. var cchName: DWORD; ReferencedDomainName: LPTSTR; var cchReferencedDomainName: DWORD;
  4339. var peUse: SID_NAME_USE): BOOL; stdcall;
  4340. {$EXTERNALSYM LookupAccountSid}
  4341. function LookupAccountNameA(lpSystemName, lpAccountName: LPCSTR; Sid: PSID;
  4342. var cbSid: DWORD; ReferencedDomainName: LPSTR; var cchReferencedDomainName: DWORD;
  4343. var peUse: SID_NAME_USE): BOOL; stdcall;
  4344. {$EXTERNALSYM LookupAccountNameA}
  4345. function LookupAccountNameW(lpSystemName, lpAccountName: LPCWSTR; Sid: PSID;
  4346. var cbSid: DWORD; ReferencedDomainName: LPWSTR; var cchReferencedDomainName: DWORD;
  4347. var peUse: SID_NAME_USE): BOOL; stdcall;
  4348. {$EXTERNALSYM LookupAccountNameW}
  4349. function LookupAccountName(lpSystemName: LPCTSTR; lpAccountName: LPCTSTR; Sid: PSID;
  4350. var cbSid: DWORD; ReferencedDomainName: LPTSTR; var cchReferencedDomainName: DWORD;
  4351. var peUse: SID_NAME_USE): BOOL; stdcall;
  4352. {$EXTERNALSYM LookupAccountName}
  4353. function LookupPrivilegeValueA(lpSystemName, lpName: LPCSTR; var lpLuid: LUID): BOOL; stdcall;
  4354. {$EXTERNALSYM LookupPrivilegeValueA}
  4355. function LookupPrivilegeValueW(lpSystemName, lpName: LPCWSTR; var lpLuid: LUID): BOOL; stdcall;
  4356. {$EXTERNALSYM LookupPrivilegeValueW}
  4357. function LookupPrivilegeValue(lpSystemName, lpName: LPCTSTR; var lpLuid: LUID): BOOL; stdcall;
  4358. {$EXTERNALSYM LookupPrivilegeValue}
  4359. function LookupPrivilegeNameA(lpSystemName: LPCSTR; const lpLuid: LUID;
  4360. lpName: LPSTR; var cbName: DWORD): BOOL; stdcall;
  4361. {$EXTERNALSYM LookupPrivilegeNameA}
  4362. function LookupPrivilegeNameW(lpSystemName: LPCWSTR; const lpLuid: LUID;
  4363. lpName: LPWSTR; var cbName: DWORD): BOOL; stdcall;
  4364. {$EXTERNALSYM LookupPrivilegeNameW}
  4365. function LookupPrivilegeName(lpSystemName: LPCTSTR; const lpLuid: LUID;
  4366. lpName: LPTSTR; var cbName: DWORD): BOOL; stdcall;
  4367. {$EXTERNALSYM LookupPrivilegeName}
  4368. function LookupPrivilegeDisplayNameA(lpSystemName, lpName: LPCSTR;
  4369. lpDisplayName: LPSTR; var cbDisplayName, lpLanguageId: DWORD): BOOL; stdcall;
  4370. {$EXTERNALSYM LookupPrivilegeDisplayNameA}
  4371. function LookupPrivilegeDisplayNameW(lpSystemName, lpName: LPCWSTR;
  4372. lpDisplayName: LPWSTR; var cbDisplayName, lpLanguageId: DWORD): BOOL; stdcall;
  4373. {$EXTERNALSYM LookupPrivilegeDisplayNameW}
  4374. function LookupPrivilegeDisplayName(lpSystemName, lpName: LPCTSTR;
  4375. lpDisplayName: LPTSTR; var cbDisplayName, lpLanguageId: DWORD): BOOL; stdcall;
  4376. {$EXTERNALSYM LookupPrivilegeDisplayName}
  4377. function AllocateLocallyUniqueId(var Luid: LUID): BOOL; stdcall;
  4378. {$EXTERNALSYM AllocateLocallyUniqueId}
  4379. function BuildCommDCBA(lpDef: LPCSTR; var lpDCB: DCB): BOOL; stdcall;
  4380. {$EXTERNALSYM BuildCommDCBA}
  4381. function BuildCommDCBW(lpDef: LPCWSTR; var lpDCB: DCB): BOOL; stdcall;
  4382. {$EXTERNALSYM BuildCommDCBW}
  4383. function BuildCommDCB(lpDef: LPCTSTR; var lpDCB: DCB): BOOL; stdcall;
  4384. {$EXTERNALSYM BuildCommDCB}
  4385. function BuildCommDCBAndTimeoutsA(lpDef: LPCSTR; var lpDCB: DCB;
  4386. var lpCommTimeouts: COMMTIMEOUTS): BOOL; stdcall;
  4387. {$EXTERNALSYM BuildCommDCBAndTimeoutsA}
  4388. function BuildCommDCBAndTimeoutsW(lpDef: LPCWSTR; var lpDCB: DCB;
  4389. var lpCommTimeouts: COMMTIMEOUTS): BOOL; stdcall;
  4390. {$EXTERNALSYM BuildCommDCBAndTimeoutsW}
  4391. function BuildCommDCBAndTimeouts(lpDef: LPCTSTR; var lpDCB: DCB;
  4392. var lpCommTimeouts: COMMTIMEOUTS): BOOL; stdcall;
  4393. {$EXTERNALSYM BuildCommDCBAndTimeouts}
  4394. function CommConfigDialogA(lpszName: LPCSTR; hWnd: HWND; var lpCC: COMMCONFIG): BOOL; stdcall;
  4395. {$EXTERNALSYM CommConfigDialogA}
  4396. function CommConfigDialogW(lpszName: LPCWSTR; hWnd: HWND; var lpCC: COMMCONFIG): BOOL; stdcall;
  4397. {$EXTERNALSYM CommConfigDialogW}
  4398. function CommConfigDialog(lpszName: LPCTSTR; hWnd: HWND; var lpCC: COMMCONFIG): BOOL; stdcall;
  4399. {$EXTERNALSYM CommConfigDialog}
  4400. function GetDefaultCommConfigA(lpszName: LPCSTR; var lpCC: COMMCONFIG;
  4401. var lpdwSize: DWORD): BOOL; stdcall;
  4402. {$EXTERNALSYM GetDefaultCommConfigA}
  4403. function GetDefaultCommConfigW(lpszName: LPCWSTR; var lpCC: COMMCONFIG;
  4404. var lpdwSize: DWORD): BOOL; stdcall;
  4405. {$EXTERNALSYM GetDefaultCommConfigW}
  4406. function GetDefaultCommConfig(lpszName: LPCTSTR; var lpCC: COMMCONFIG;
  4407. var lpdwSize: DWORD): BOOL; stdcall;
  4408. {$EXTERNALSYM GetDefaultCommConfig}
  4409. function SetDefaultCommConfigA(lpszName: LPCSTR; const lpCC: COMMCONFIG;
  4410. dwSize: DWORD): BOOL; stdcall;
  4411. {$EXTERNALSYM SetDefaultCommConfigA}
  4412. function SetDefaultCommConfigW(lpszName: LPCWSTR; const lpCC: COMMCONFIG;
  4413. dwSize: DWORD): BOOL; stdcall;
  4414. {$EXTERNALSYM SetDefaultCommConfigW}
  4415. function SetDefaultCommConfig(lpszName: LPCTSTR; const lpCC: COMMCONFIG;
  4416. dwSize: DWORD): BOOL; stdcall;
  4417. {$EXTERNALSYM SetDefaultCommConfig}
  4418. const
  4419. MAX_COMPUTERNAME_LENGTH = 15;
  4420. {$EXTERNALSYM MAX_COMPUTERNAME_LENGTH}
  4421. function GetComputerNameA(lpBuffer: LPSTR; var nSize: DWORD): BOOL; stdcall;
  4422. {$EXTERNALSYM GetComputerNameA}
  4423. function GetComputerNameW(lpBuffer: LPWSTR; var nSize: DWORD): BOOL; stdcall;
  4424. {$EXTERNALSYM GetComputerNameW}
  4425. function GetComputerName(lpBuffer: LPTSTR; var nSize: DWORD): BOOL; stdcall;
  4426. {$EXTERNALSYM GetComputerName}
  4427. function SetComputerNameA(lpComputerName: LPCSTR): BOOL; stdcall;
  4428. {$EXTERNALSYM SetComputerNameA}
  4429. function SetComputerNameW(lpComputerName: LPCWSTR): BOOL; stdcall;
  4430. {$EXTERNALSYM SetComputerNameW}
  4431. function SetComputerName(lpComputerName: LPCTSTR): BOOL; stdcall;
  4432. {$EXTERNALSYM SetComputerName}
  4433. type
  4434. _COMPUTER_NAME_FORMAT = (
  4435. ComputerNameNetBIOS,
  4436. ComputerNameDnsHostname,
  4437. ComputerNameDnsDomain,
  4438. ComputerNameDnsFullyQualified,
  4439. ComputerNamePhysicalNetBIOS,
  4440. ComputerNamePhysicalDnsHostname,
  4441. ComputerNamePhysicalDnsDomain,
  4442. ComputerNamePhysicalDnsFullyQualified,
  4443. ComputerNameMax);
  4444. {$EXTERNALSYM _COMPUTER_NAME_FORMAT}
  4445. COMPUTER_NAME_FORMAT = _COMPUTER_NAME_FORMAT;
  4446. {$EXTERNALSYM COMPUTER_NAME_FORMAT}
  4447. TComputerNameFormat = COMPUTER_NAME_FORMAT;
  4448. function GetComputerNameExA(NameType: COMPUTER_NAME_FORMAT; lpBuffer: LPSTR;
  4449. var nSize: DWORD): BOOL; stdcall;
  4450. {$EXTERNALSYM GetComputerNameExA}
  4451. function GetComputerNameExW(NameType: COMPUTER_NAME_FORMAT; lpBuffer: LPWSTR;
  4452. var nSize: DWORD): BOOL; stdcall;
  4453. {$EXTERNALSYM GetComputerNameExW}
  4454. function GetComputerNameEx(NameType: COMPUTER_NAME_FORMAT; lpBuffer: LPTSTR;
  4455. var nSize: DWORD): BOOL; stdcall;
  4456. {$EXTERNALSYM GetComputerNameEx}
  4457. function SetComputerNameExA(NameType: COMPUTER_NAME_FORMAT; lpBuffer: LPCSTR): BOOL; stdcall;
  4458. {$EXTERNALSYM SetComputerNameExA}
  4459. function SetComputerNameExW(NameType: COMPUTER_NAME_FORMAT; lpBuffer: LPCWSTR): BOOL; stdcall;
  4460. {$EXTERNALSYM SetComputerNameExW}
  4461. function SetComputerNameEx(NameType: COMPUTER_NAME_FORMAT; lpBuffer: LPCTSTR): BOOL; stdcall;
  4462. {$EXTERNALSYM SetComputerNameEx}
  4463. function DnsHostnameToComputerNameA(Hostname, ComputerName: LPSTR; var nSize: DWORD): BOOL; stdcall;
  4464. {$EXTERNALSYM DnsHostnameToComputerNameA}
  4465. function DnsHostnameToComputerNameW(Hostname, ComputerName: LPWSTR; var nSize: DWORD): BOOL; stdcall;
  4466. {$EXTERNALSYM DnsHostnameToComputerNameW}
  4467. function DnsHostnameToComputerName(Hostname, ComputerName: LPTSTR; var nSize: DWORD): BOOL; stdcall;
  4468. {$EXTERNALSYM DnsHostnameToComputerName}
  4469. function GetUserNameA(lpBuffer: LPSTR; var nSize: DWORD): BOOL; stdcall;
  4470. {$EXTERNALSYM GetUserNameA}
  4471. function GetUserNameW(lpBuffer: LPWSTR; var nSize: DWORD): BOOL; stdcall;
  4472. {$EXTERNALSYM GetUserNameW}
  4473. function GetUserName(lpBuffer: LPTSTR; var nSize: DWORD): BOOL; stdcall;
  4474. {$EXTERNALSYM GetUserName}
  4475. //
  4476. // Logon Support APIs
  4477. //
  4478. const
  4479. LOGON32_LOGON_INTERACTIVE = 2;
  4480. {$EXTERNALSYM LOGON32_LOGON_INTERACTIVE}
  4481. LOGON32_LOGON_NETWORK = 3;
  4482. {$EXTERNALSYM LOGON32_LOGON_NETWORK}
  4483. LOGON32_LOGON_BATCH = 4;
  4484. {$EXTERNALSYM LOGON32_LOGON_BATCH}
  4485. LOGON32_LOGON_SERVICE = 5;
  4486. {$EXTERNALSYM LOGON32_LOGON_SERVICE}
  4487. LOGON32_LOGON_UNLOCK = 7;
  4488. {$EXTERNALSYM LOGON32_LOGON_UNLOCK}
  4489. LOGON32_LOGON_NETWORK_CLEARTEXT = 8;
  4490. {$EXTERNALSYM LOGON32_LOGON_NETWORK_CLEARTEXT}
  4491. LOGON32_LOGON_NEW_CREDENTIALS = 9;
  4492. {$EXTERNALSYM LOGON32_LOGON_NEW_CREDENTIALS}
  4493. LOGON32_PROVIDER_DEFAULT = 0;
  4494. {$EXTERNALSYM LOGON32_PROVIDER_DEFAULT}
  4495. LOGON32_PROVIDER_WINNT35 = 1;
  4496. {$EXTERNALSYM LOGON32_PROVIDER_WINNT35}
  4497. LOGON32_PROVIDER_WINNT40 = 2;
  4498. {$EXTERNALSYM LOGON32_PROVIDER_WINNT40}
  4499. LOGON32_PROVIDER_WINNT50 = 3;
  4500. {$EXTERNALSYM LOGON32_PROVIDER_WINNT50}
  4501. function LogonUserA(lpszUsername, lpszDomain, lpszPassword: LPCSTR;
  4502. dwLogonType, dwLogonProvider: DWORD; var phToken: HANDLE): BOOL; stdcall;
  4503. {$EXTERNALSYM LogonUserA}
  4504. function LogonUserW(lpszUsername, lpszDomain, lpszPassword: LPCWSTR;
  4505. dwLogonType, dwLogonProvider: DWORD; var phToken: HANDLE): BOOL; stdcall;
  4506. {$EXTERNALSYM LogonUserW}
  4507. function LogonUser(lpszUsername, lpszDomain, lpszPassword: LPCTSTR;
  4508. dwLogonType, dwLogonProvider: DWORD; var phToken: HANDLE): BOOL; stdcall;
  4509. {$EXTERNALSYM LogonUser}
  4510. function LogonUserExA(lpszUsername, lpszDomain, lpszPassword: LPCSTR;
  4511. dwLogonType, dwLogonProvider: DWORD; var phToken: HANDLE; ppLogonSid: PPSID;
  4512. ppProfileBuffer: PPVOID; pdwProfileLength: LPDWORD; pQuotaLimits: PQUOTA_LIMITS): BOOL; stdcall;
  4513. {$EXTERNALSYM LogonUserExA}
  4514. function LogonUserExW(lpszUsername, lpszDomain, lpszPassword: LPCWSTR;
  4515. dwLogonType, dwLogonProvider: DWORD; var phToken: HANDLE; ppLogonSid: PPSID;
  4516. ppProfileBuffer: PPVOID; pdwProfileLength: LPDWORD; pQuotaLimits: PQUOTA_LIMITS): BOOL; stdcall;
  4517. {$EXTERNALSYM LogonUserExW}
  4518. function LogonUserEx(lpszUsername, lpszDomain, lpszPassword: LPCTSTR;
  4519. dwLogonType, dwLogonProvider: DWORD; var phToken: HANDLE; ppLogonSid: PPSID;
  4520. ppProfileBuffer: PPVOID; pdwProfileLength: LPDWORD; pQuotaLimits: PQUOTA_LIMITS): BOOL; stdcall;
  4521. {$EXTERNALSYM LogonUserEx}
  4522. function ImpersonateLoggedOnUser(hToken: HANDLE): BOOL; stdcall;
  4523. {$EXTERNALSYM ImpersonateLoggedOnUser}
  4524. function CreateProcessAsUserA(hToken: HANDLE; lpApplicationName: LPCSTR;
  4525. lpCommandLine: LPSTR; lpProcessAttributes: LPSECURITY_ATTRIBUTES;
  4526. lpThreadAttributes: LPSECURITY_ATTRIBUTES; bInheritHandles: BOOL;
  4527. dwCreationFlags: DWORD; lpEnvironment: LPVOID; lpCurrentDirectory: LPCSTR;
  4528. const lpStartupInfo: STARTUPINFOA; var lpProcessInformation: PROCESS_INFORMATION): BOOL; stdcall;
  4529. {$EXTERNALSYM CreateProcessAsUserA}
  4530. function CreateProcessAsUserW(hToken: HANDLE; lpApplicationName: LPCWSTR;
  4531. lpCommandLine: LPWSTR; lpProcessAttributes: LPSECURITY_ATTRIBUTES;
  4532. lpThreadAttributes: LPSECURITY_ATTRIBUTES; bInheritHandles: BOOL;
  4533. dwCreationFlags: DWORD; lpEnvironment: LPVOID; lpCurrentDirectory: LPCWSTR;
  4534. const lpStartupInfo: STARTUPINFOW; var lpProcessInformation: PROCESS_INFORMATION): BOOL; stdcall;
  4535. {$EXTERNALSYM CreateProcessAsUserW}
  4536. function CreateProcessAsUser(hToken: HANDLE; lpApplicationName: LPCTSTR;
  4537. lpCommandLine: LPTSTR; lpProcessAttributes: LPSECURITY_ATTRIBUTES;
  4538. lpThreadAttributes: LPSECURITY_ATTRIBUTES; bInheritHandles: BOOL;
  4539. dwCreationFlags: DWORD; lpEnvironment: LPVOID; lpCurrentDirectory: LPCTSTR;
  4540. const lpStartupInfo: STARTUPINFO; var lpProcessInformation: PROCESS_INFORMATION): BOOL; stdcall;
  4541. {$EXTERNALSYM CreateProcessAsUser}
  4542. //
  4543. // LogonFlags
  4544. //
  4545. const
  4546. LOGON_WITH_PROFILE = $00000001;
  4547. {$EXTERNALSYM LOGON_WITH_PROFILE}
  4548. LOGON_NETCREDENTIALS_ONLY = $00000002;
  4549. {$EXTERNALSYM LOGON_NETCREDENTIALS_ONLY}
  4550. LOGON_ZERO_PASSWORD_BUFFER = DWORD($80000000);
  4551. {$EXTERNALSYM LOGON_ZERO_PASSWORD_BUFFER}
  4552. function CreateProcessWithLogonW(lpUsername, lpDomain, lpPassword: LPCWSTR;
  4553. dwLogonFlags: DWORD; lpApplicationName: LPCWSTR; lpCommandLine: LPWSTR;
  4554. dwCreationFlags: DWORD; lpEnvironment: LPVOID; lpCurrentDirectory: LPCWSTR;
  4555. const lpStartupInfo: STARTUPINFOW; var lpProcessInformation: PROCESS_INFORMATION): BOOL; stdcall;
  4556. {$EXTERNALSYM CreateProcessWithLogonW}
  4557. function CreateProcessWithTokenW(hToken: HANDLE; dwLogonFlags: DWORD; lpApplicationName: LPCWSTR; lpCommandLine: LPWSTR;
  4558. dwCreationFlags: DWORD; lpEnvironment: LPVOID; lpCurrentDirectory: LPCWSTR; lpStartupInfo: LPSTARTUPINFOW;
  4559. lpProcessInformation: LPPROCESS_INFORMATION): BOOL; stdcall;
  4560. {$EXTERNALSYM CreateProcessWithTokenW}
  4561. function ImpersonateAnonymousToken(ThreadHandle: HANDLE): BOOL; stdcall;
  4562. {$EXTERNALSYM ImpersonateAnonymousToken}
  4563. function DuplicateTokenEx(hExistingToken: HANDLE; dwDesiredAccess: DWORD;
  4564. lpTokenAttributes: LPSECURITY_ATTRIBUTES; ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL;
  4565. TokenType: TOKEN_TYPE; var phNewToken: HANDLE): BOOL; stdcall;
  4566. {$EXTERNALSYM DuplicateTokenEx}
  4567. function CreateRestrictedToken(ExistingTokenHandle: HANDLE; Flags: DWORD;
  4568. DisableSidCount: DWORD; SidsToDisable: PSID_AND_ATTRIBUTES;
  4569. DeletePrivilegeCount: DWORD; PrivilegesToDelete: PLUID_AND_ATTRIBUTES;
  4570. RestrictedSidCount: DWORD; SidsToRestrict: PSID_AND_ATTRIBUTES;
  4571. var NewTokenHandle: HANDLE): BOOL; stdcall;
  4572. {$EXTERNALSYM CreateRestrictedToken}
  4573. function IsTokenRestricted(TokenHandle: HANDLE): BOOL; stdcall;
  4574. {$EXTERNALSYM IsTokenRestricted}
  4575. function CheckTokenMembership(TokenHandle: HANDLE; SidToCheck: PSID; var IsMember: BOOL): BOOL; stdcall;
  4576. {$EXTERNALSYM CheckTokenMembership}
  4577. function IsTokenUntrusted(TokenHandle: HANDLE): BOOL; stdcall;
  4578. {$EXTERNALSYM IsTokenUntrusted}
  4579. //
  4580. // Thread pool API's
  4581. //
  4582. type
  4583. WAITORTIMERCALLBACK = WAITORTIMERCALLBACKFUNC;
  4584. {$EXTERNALSYM WAITORTIMERCALLBACK}
  4585. TWaitOrTimerCallback = WAITORTIMERCALLBACKFUNC;
  4586. function RegisterWaitForSingleObject(var phNewWaitObject: HANDLE; hObject: HANDLE;
  4587. Callback: WAITORTIMERCALLBACK; Context: PVOID; dwMilliseconds, dwFlags: ULONG): BOOL; stdcall;
  4588. {$EXTERNALSYM RegisterWaitForSingleObject}
  4589. function RegisterWaitForSingleObjectEx(hObject: HANDLE;
  4590. Callback: WAITORTIMERCALLBACK; Context: PVOID; dwMilliseconds, dwFlags: ULONG): HANDLE; stdcall;
  4591. {$EXTERNALSYM RegisterWaitForSingleObjectEx}
  4592. function UnregisterWait(WaitHandle: HANDLE): BOOL; stdcall;
  4593. {$EXTERNALSYM UnregisterWait}
  4594. function UnregisterWaitEx(WaitHandle, CompletionEvent: HANDLE): BOOL; stdcall;
  4595. {$EXTERNALSYM UnregisterWaitEx}
  4596. function QueueUserWorkItem(Function_: LPTHREAD_START_ROUTINE; Context: PVOID;
  4597. Flags: ULONG): BOOL; stdcall;
  4598. {$EXTERNALSYM QueueUserWorkItem}
  4599. function BindIoCompletionCallback(FileHandle: HANDLE;
  4600. Function_: LPOVERLAPPED_COMPLETION_ROUTINE; Flags: ULONG): BOOL; stdcall;
  4601. {$EXTERNALSYM BindIoCompletionCallback}
  4602. function CreateTimerQueue: HANDLE; stdcall;
  4603. {$EXTERNALSYM CreateTimerQueue}
  4604. function CreateTimerQueueTimer(var phNewTimer: HANDLE; TimerQueue: HANDLE;
  4605. Callback: WAITORTIMERCALLBACK; Parameter: PVOID; DueTime, Period: DWORD;
  4606. Flags: ULONG): BOOL; stdcall;
  4607. {$EXTERNALSYM CreateTimerQueueTimer}
  4608. function ChangeTimerQueueTimer(TimerQueue, Timer: HANDLE; DueTime, Period: ULONG): BOOL; stdcall;
  4609. {$EXTERNALSYM ChangeTimerQueueTimer}
  4610. function DeleteTimerQueueTimer(TimerQueue, Timer, CompletionEvent: HANDLE): BOOL; stdcall;
  4611. {$EXTERNALSYM DeleteTimerQueueTimer}
  4612. function DeleteTimerQueueEx(TimerQueue, CompletionEvent: HANDLE): BOOL; stdcall;
  4613. {$EXTERNALSYM DeleteTimerQueueEx}
  4614. function SetTimerQueueTimer(TimerQueue, Callback: WAITORTIMERCALLBACK;
  4615. Parameter: PVOID; DueTime, Period: DWORD; PreferIo: BOOL): HANDLE; stdcall;
  4616. {$EXTERNALSYM SetTimerQueueTimer}
  4617. function CancelTimerQueueTimer(TimerQueue, Timer: HANDLE): BOOL; stdcall;
  4618. {$EXTERNALSYM CancelTimerQueueTimer}
  4619. function DeleteTimerQueue(TimerQueue: HANDLE): BOOL; stdcall;
  4620. {$EXTERNALSYM DeleteTimerQueue}
  4621. //
  4622. // Plug-and-Play API's
  4623. //
  4624. const
  4625. HW_PROFILE_GUIDLEN = 39; // 36-characters plus NULL terminator
  4626. {$EXTERNALSYM HW_PROFILE_GUIDLEN}
  4627. MAX_PROFILE_LEN = 80;
  4628. {$EXTERNALSYM MAX_PROFILE_LEN}
  4629. DOCKINFO_UNDOCKED = $1;
  4630. {$EXTERNALSYM DOCKINFO_UNDOCKED}
  4631. DOCKINFO_DOCKED = $2;
  4632. {$EXTERNALSYM DOCKINFO_DOCKED}
  4633. DOCKINFO_USER_SUPPLIED = $4;
  4634. {$EXTERNALSYM DOCKINFO_USER_SUPPLIED}
  4635. DOCKINFO_USER_UNDOCKED = DOCKINFO_USER_SUPPLIED or DOCKINFO_UNDOCKED;
  4636. {$EXTERNALSYM DOCKINFO_USER_UNDOCKED}
  4637. DOCKINFO_USER_DOCKED = DOCKINFO_USER_SUPPLIED or DOCKINFO_DOCKED;
  4638. {$EXTERNALSYM DOCKINFO_USER_DOCKED}
  4639. type
  4640. LPHW_PROFILE_INFOA = ^HW_PROFILE_INFOA;
  4641. {$EXTERNALSYM LPHW_PROFILE_INFOA}
  4642. tagHW_PROFILE_INFOA = record
  4643. dwDockInfo: DWORD;
  4644. szHwProfileGuid: array [0..HW_PROFILE_GUIDLEN - 1] of CHAR;
  4645. szHwProfileName: array [0..MAX_PROFILE_LEN - 1] of CHAR;
  4646. end;
  4647. {$EXTERNALSYM tagHW_PROFILE_INFOA}
  4648. HW_PROFILE_INFOA = tagHW_PROFILE_INFOA;
  4649. {$EXTERNALSYM HW_PROFILE_INFOA}
  4650. THWProfileInfoA = HW_PROFILE_INFOA;
  4651. PHWProfileInfoA = LPHW_PROFILE_INFOA;
  4652. LPHW_PROFILE_INFOW = ^HW_PROFILE_INFOW;
  4653. {$EXTERNALSYM LPHW_PROFILE_INFOW}
  4654. tagHW_PROFILE_INFOW = record
  4655. dwDockInfo: DWORD;
  4656. szHwProfileGuid: array [0..HW_PROFILE_GUIDLEN - 1] of WCHAR;
  4657. szHwProfileName: array [0..MAX_PROFILE_LEN - 1] of WCHAR;
  4658. end;
  4659. {$EXTERNALSYM tagHW_PROFILE_INFOW}
  4660. HW_PROFILE_INFOW = tagHW_PROFILE_INFOW;
  4661. {$EXTERNALSYM HW_PROFILE_INFOW}
  4662. THWProfileInfoW = HW_PROFILE_INFOW;
  4663. PHWProfileInfoW = LPHW_PROFILE_INFOW;
  4664. {$IFDEF UNICODE}
  4665. HW_PROFILE_INFO = HW_PROFILE_INFOW;
  4666. {$EXTERNALSYM HW_PROFILE_INFO}
  4667. LPHW_PROFILE_INFO = LPHW_PROFILE_INFOW;
  4668. {$EXTERNALSYM LPHW_PROFILE_INFO}
  4669. THWProfileInfo = THWProfileInfoW;
  4670. PHWProfileInfo = PHWProfileInfoW;
  4671. {$ELSE}
  4672. HW_PROFILE_INFO = HW_PROFILE_INFOA;
  4673. {$EXTERNALSYM HW_PROFILE_INFO}
  4674. LPHW_PROFILE_INFO = LPHW_PROFILE_INFOA;
  4675. {$EXTERNALSYM LPHW_PROFILE_INFO}
  4676. THWProfileInfo = THWProfileInfoA;
  4677. PHWProfileInfo = PHWProfileInfoA;
  4678. {$ENDIF UNICODE}
  4679. function GetCurrentHwProfileA(var lpHwProfileInfo: HW_PROFILE_INFOA): BOOL; stdcall;
  4680. {$EXTERNALSYM GetCurrentHwProfileA}
  4681. function GetCurrentHwProfileW(var lpHwProfileInfo: HW_PROFILE_INFOW): BOOL; stdcall;
  4682. {$EXTERNALSYM GetCurrentHwProfileW}
  4683. function GetCurrentHwProfile(var lpHwProfileInfo: HW_PROFILE_INFO): BOOL; stdcall;
  4684. {$EXTERNALSYM GetCurrentHwProfile}
  4685. //
  4686. // Performance counter API's
  4687. //
  4688. function QueryPerformanceCounter(var lpPerformanceCount: LARGE_INTEGER): BOOL; stdcall;
  4689. {$EXTERNALSYM QueryPerformanceCounter}
  4690. function QueryPerformanceFrequency(var lpFrequency: LARGE_INTEGER): BOOL; stdcall;
  4691. {$EXTERNALSYM QueryPerformanceFrequency}
  4692. function GetVersionExA(lpVersionInformation: LPOSVERSIONINFOA): BOOL; stdcall;
  4693. {$EXTERNALSYM GetVersionExA}
  4694. function GetVersionExW(lpVersionInformation: LPOSVERSIONINFOW): BOOL; stdcall;
  4695. {$EXTERNALSYM GetVersionExW}
  4696. function GetVersionEx(lpVersionInformation: LPOSVERSIONINFO): BOOL; stdcall;
  4697. {$EXTERNALSYM GetVersionEx}
  4698. function VerifyVersionInfoA(var lpVersionInformation: OSVERSIONINFOEXA;
  4699. dwTypeMask: DWORD; dwlConditionMask: DWORDLONG): BOOL; stdcall;
  4700. {$EXTERNALSYM VerifyVersionInfoA}
  4701. function VerifyVersionInfoW(var lpVersionInformation: OSVERSIONINFOEXW;
  4702. dwTypeMask: DWORD; dwlConditionMask: DWORDLONG): BOOL; stdcall;
  4703. {$EXTERNALSYM VerifyVersionInfoW}
  4704. function VerifyVersionInfo(var lpVersionInformation: OSVERSIONINFOEX;
  4705. dwTypeMask: DWORD; dwlConditionMask: DWORDLONG): BOOL; stdcall;
  4706. {$EXTERNALSYM VerifyVersionInfo}
  4707. // DOS and OS/2 Compatible Error Code definitions returned by the Win32 Base
  4708. // API functions.
  4709. //
  4710. // #include <winerror.h>
  4711. // Abnormal termination codes
  4712. const
  4713. TC_NORMAL = 0;
  4714. {$EXTERNALSYM TC_NORMAL}
  4715. TC_HARDERR = 1;
  4716. {$EXTERNALSYM TC_HARDERR}
  4717. TC_GP_TRAP = 2;
  4718. {$EXTERNALSYM TC_GP_TRAP}
  4719. TC_SIGNAL = 3;
  4720. {$EXTERNALSYM TC_SIGNAL}
  4721. //
  4722. // Power Management APIs
  4723. //
  4724. AC_LINE_OFFLINE = $00;
  4725. {$EXTERNALSYM AC_LINE_OFFLINE}
  4726. AC_LINE_ONLINE = $01;
  4727. {$EXTERNALSYM AC_LINE_ONLINE}
  4728. AC_LINE_BACKUP_POWER = $02;
  4729. {$EXTERNALSYM AC_LINE_BACKUP_POWER}
  4730. AC_LINE_UNKNOWN = $FF;
  4731. {$EXTERNALSYM AC_LINE_UNKNOWN}
  4732. BATTERY_FLAG_HIGH = $01;
  4733. {$EXTERNALSYM BATTERY_FLAG_HIGH}
  4734. BATTERY_FLAG_LOW = $02;
  4735. {$EXTERNALSYM BATTERY_FLAG_LOW}
  4736. BATTERY_FLAG_CRITICAL = $04;
  4737. {$EXTERNALSYM BATTERY_FLAG_CRITICAL}
  4738. BATTERY_FLAG_CHARGING = $08;
  4739. {$EXTERNALSYM BATTERY_FLAG_CHARGING}
  4740. BATTERY_FLAG_NO_BATTERY = $80;
  4741. {$EXTERNALSYM BATTERY_FLAG_NO_BATTERY}
  4742. BATTERY_FLAG_UNKNOWN = $FF;
  4743. {$EXTERNALSYM BATTERY_FLAG_UNKNOWN}
  4744. BATTERY_PERCENTAGE_UNKNOWN = $FF;
  4745. {$EXTERNALSYM BATTERY_PERCENTAGE_UNKNOWN}
  4746. BATTERY_LIFE_UNKNOWN = DWORD($FFFFFFFF);
  4747. {$EXTERNALSYM BATTERY_LIFE_UNKNOWN}
  4748. type
  4749. LPSYSTEM_POWER_STATUS = ^SYSTEM_POWER_STATUS;
  4750. {$EXTERNALSYM LPSYSTEM_POWER_STATUS}
  4751. _SYSTEM_POWER_STATUS = record
  4752. ACLineStatus: BYTE;
  4753. BatteryFlag: BYTE;
  4754. BatteryLifePercent: BYTE;
  4755. Reserved1: BYTE;
  4756. BatteryLifeTime: DWORD;
  4757. BatteryFullLifeTime: DWORD;
  4758. end;
  4759. {$EXTERNALSYM _SYSTEM_POWER_STATUS}
  4760. SYSTEM_POWER_STATUS = _SYSTEM_POWER_STATUS;
  4761. {$EXTERNALSYM SYSTEM_POWER_STATUS}
  4762. TSystemPowerStatus = SYSTEM_POWER_STATUS;
  4763. PSystemPowerStatus = LPSYSTEM_POWER_STATUS;
  4764. function GetSystemPowerStatus(var lpSystemPowerStatus: SYSTEM_POWER_STATUS): BOOL; stdcall;
  4765. {$EXTERNALSYM GetSystemPowerStatus}
  4766. function SetSystemPowerState(fSuspend, fForce: BOOL): BOOL; stdcall;
  4767. {$EXTERNALSYM SetSystemPowerState}
  4768. //
  4769. // Very Large Memory API Subset
  4770. //
  4771. function AllocateUserPhysicalPages(hProcess: HANDLE; var NumberOfPages: ULONG_PTR;
  4772. PageArray: PULONG_PTR): BOOL; stdcall;
  4773. {$EXTERNALSYM AllocateUserPhysicalPages}
  4774. function FreeUserPhysicalPages(hProcess: HANDLE; var NumberOfPages: ULONG_PTR;
  4775. PageArray: PULONG_PTR): BOOL; stdcall;
  4776. {$EXTERNALSYM FreeUserPhysicalPages}
  4777. function MapUserPhysicalPages(VirtualAddress: PVOID; NumberOfPages: ULONG_PTR;
  4778. PageArray: PULONG_PTR): BOOL; stdcall;
  4779. {$EXTERNALSYM MapUserPhysicalPages}
  4780. function MapUserPhysicalPagesScatter(VirtualAddresses: PVOID; NumberOfPages: ULONG_PTR;
  4781. PageArray: PULONG_PTR): BOOL; stdcall;
  4782. {$EXTERNALSYM MapUserPhysicalPagesScatter}
  4783. function CreateJobObjectA(lpJobAttributes: LPSECURITY_ATTRIBUTES; lpName: LPCSTR): HANDLE; stdcall;
  4784. {$EXTERNALSYM CreateJobObjectA}
  4785. function CreateJobObjectW(lpJobAttributes: LPSECURITY_ATTRIBUTES; lpName: LPCWSTR): HANDLE; stdcall;
  4786. {$EXTERNALSYM CreateJobObjectW}
  4787. function CreateJobObject(lpJobAttributes: LPSECURITY_ATTRIBUTES; lpName: LPCTSTR): HANDLE; stdcall;
  4788. {$EXTERNALSYM CreateJobObject}
  4789. function OpenJobObjectA(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: LPCSTR): HANDLE; stdcall;
  4790. {$EXTERNALSYM OpenJobObjectA}
  4791. function OpenJobObjectW(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: LPCWSTR): HANDLE; stdcall;
  4792. {$EXTERNALSYM OpenJobObjectW}
  4793. function OpenJobObject(dwDesiredAccess: DWORD; bInheritHandle: BOOL; lpName: LPCTSTR): HANDLE; stdcall;
  4794. {$EXTERNALSYM OpenJobObject}
  4795. function AssignProcessToJobObject(hJob, hProcess: HANDLE): BOOL; stdcall;
  4796. {$EXTERNALSYM AssignProcessToJobObject}
  4797. function TerminateJobObject(hJob: HANDLE; uExitCode: UINT): BOOL; stdcall;
  4798. {$EXTERNALSYM TerminateJobObject}
  4799. function QueryInformationJobObject(hJob: HANDLE; JobObjectInformationClass: JOBOBJECTINFOCLASS;
  4800. lpJobObjectInformation: LPVOID; cbJobObjectInformationLength: DWORD;
  4801. lpReturnLength: LPDWORD): BOOL; stdcall;
  4802. {$EXTERNALSYM QueryInformationJobObject}
  4803. function SetInformationJobObject(hJob: HANDLE; JobObjectInformationClass: JOBOBJECTINFOCLASS;
  4804. lpJobObjectInformation: LPVOID; cbJobObjectInformationLength: DWORD): BOOL; stdcall;
  4805. {$EXTERNALSYM SetInformationJobObject}
  4806. function IsProcessInJob(ProcessHandle, JobHandle: HANDLE; var Result_: BOOL): BOOL; stdcall;
  4807. {$EXTERNALSYM IsProcessInJob}
  4808. function CreateJobSet(NumJob: ULONG; UserJobSet: PJOB_SET_ARRAY; Flags: ULONG): BOOL; stdcall;
  4809. {$EXTERNALSYM CreateJobSet}
  4810. function AddVectoredExceptionHandler(FirstHandler: ULONG;
  4811. VectoredHandler: PVECTORED_EXCEPTION_HANDLER): PVOID; stdcall;
  4812. {$EXTERNALSYM AddVectoredExceptionHandler}
  4813. function RemoveVectoredExceptionHandler(VectoredHandlerHandle: PVOID): ULONG; stdcall;
  4814. {$EXTERNALSYM RemoveVectoredExceptionHandler}
  4815. //
  4816. // New Volume Mount Point API.
  4817. //
  4818. function FindFirstVolumeA(lpszVolumeName: LPSTR; cchBufferLength: DWORD): HANDLE; stdcall;
  4819. {$EXTERNALSYM FindFirstVolumeA}
  4820. function FindFirstVolumeW(lpszVolumeName: LPWSTR; cchBufferLength: DWORD): HANDLE; stdcall;
  4821. {$EXTERNALSYM FindFirstVolumeW}
  4822. function FindFirstVolume(lpszVolumeName: LPTSTR; cchBufferLength: DWORD): HANDLE; stdcall;
  4823. {$EXTERNALSYM FindFirstVolume}
  4824. function FindNextVolumeA(hFindVolume: HANDLE; lpszVolumeName: LPSTR;
  4825. cchBufferLength: DWORD): BOOL; stdcall;
  4826. {$EXTERNALSYM FindNextVolumeA}
  4827. function FindNextVolumeW(hFindVolume: HANDLE; lpszVolumeName: LPWSTR;
  4828. cchBufferLength: DWORD): BOOL; stdcall;
  4829. {$EXTERNALSYM FindNextVolumeW}
  4830. function FindNextVolume(hFindVolume: HANDLE; lpszVolumeName: LPTSTR;
  4831. cchBufferLength: DWORD): BOOL; stdcall;
  4832. {$EXTERNALSYM FindNextVolume}
  4833. function FindVolumeClose(hFindVolume: HANDLE): BOOL; stdcall;
  4834. {$EXTERNALSYM FindVolumeClose}
  4835. function FindFirstVolumeMountPointA(lpszRootPathName: LPCSTR;
  4836. lpszVolumeMountPoint: LPSTR; cchBufferLength: DWORD): HANDLE; stdcall;
  4837. {$EXTERNALSYM FindFirstVolumeMountPointA}
  4838. function FindFirstVolumeMountPointW(lpszRootPathName: LPCWSTR;
  4839. lpszVolumeMountPoint: LPWSTR; cchBufferLength: DWORD): HANDLE; stdcall;
  4840. {$EXTERNALSYM FindFirstVolumeMountPointW}
  4841. function FindFirstVolumeMountPoint(lpszRootPathName: LPCTSTR;
  4842. lpszVolumeMountPoint: LPTSTR; cchBufferLength: DWORD): HANDLE; stdcall;
  4843. {$EXTERNALSYM FindFirstVolumeMountPoint}
  4844. function FindNextVolumeMountPointA(hFindVolumeMountPoint: HANDLE;
  4845. lpszVolumeMountPoint: LPSTR; cchBufferLength: DWORD): BOOL; stdcall;
  4846. {$EXTERNALSYM FindNextVolumeMountPointA}
  4847. function FindNextVolumeMountPointW(hFindVolumeMountPoint: HANDLE;
  4848. lpszVolumeMountPoint: LPWSTR; cchBufferLength: DWORD): BOOL; stdcall;
  4849. {$EXTERNALSYM FindNextVolumeMountPointW}
  4850. function FindNextVolumeMountPoint(hFindVolumeMountPoint: HANDLE;
  4851. lpszVolumeMountPoint: LPTSTR; cchBufferLength: DWORD): BOOL; stdcall;
  4852. {$EXTERNALSYM FindNextVolumeMountPoint}
  4853. function FindVolumeMountPointClose(hFindVolumeMountPoint: HANDLE): BOOL; stdcall;
  4854. {$EXTERNALSYM FindVolumeMountPointClose}
  4855. function SetVolumeMountPointA(lpszVolumeMountPoint, lpszVolumeName: LPCSTR): BOOL; stdcall;
  4856. {$EXTERNALSYM SetVolumeMountPointA}
  4857. function SetVolumeMountPointW(lpszVolumeMountPoint, lpszVolumeName: LPCWSTR): BOOL; stdcall;
  4858. {$EXTERNALSYM SetVolumeMountPointW}
  4859. function SetVolumeMountPoint(lpszVolumeMountPoint, lpszVolumeName: LPCTSTR): BOOL; stdcall;
  4860. {$EXTERNALSYM SetVolumeMountPoint}
  4861. function DeleteVolumeMountPointA(lpszVolumeMountPoint: LPCSTR): BOOL; stdcall;
  4862. {$EXTERNALSYM DeleteVolumeMountPointA}
  4863. function DeleteVolumeMountPointW(lpszVolumeMountPoint: LPCWSTR): BOOL; stdcall;
  4864. {$EXTERNALSYM DeleteVolumeMountPointW}
  4865. function DeleteVolumeMountPoint(lpszVolumeMountPoint: LPCTSTR): BOOL; stdcall;
  4866. {$EXTERNALSYM DeleteVolumeMountPoint}
  4867. function GetVolumeNameForVolumeMountPointA(lpszVolumeMountPoint: LPCSTR;
  4868. lpszVolumeName: LPSTR; cchBufferLength: DWORD): BOOL; stdcall;
  4869. {$EXTERNALSYM GetVolumeNameForVolumeMountPointA}
  4870. function GetVolumeNameForVolumeMountPointW(lpszVolumeMountPoint: LPCWSTR;
  4871. lpszVolumeName: LPWSTR; cchBufferLength: DWORD): BOOL; stdcall;
  4872. {$EXTERNALSYM GetVolumeNameForVolumeMountPointW}
  4873. function GetVolumeNameForVolumeMountPoint(lpszVolumeMountPoint: LPCTSTR;
  4874. lpszVolumeName: LPTSTR; cchBufferLength: DWORD): BOOL; stdcall;
  4875. {$EXTERNALSYM GetVolumeNameForVolumeMountPoint}
  4876. function GetVolumePathNameA(lpszFileName: LPCSTR; lpszVolumePathName: LPSTR;
  4877. cchBufferLength: DWORD): BOOL; stdcall;
  4878. {$EXTERNALSYM GetVolumePathNameA}
  4879. function GetVolumePathNameW(lpszFileName: LPCWSTR; lpszVolumePathName: LPWSTR;
  4880. cchBufferLength: DWORD): BOOL; stdcall;
  4881. {$EXTERNALSYM GetVolumePathNameW}
  4882. function GetVolumePathName(lpszFileName: LPCTSTR; lpszVolumePathName: LPTSTR;
  4883. cchBufferLength: DWORD): BOOL; stdcall;
  4884. {$EXTERNALSYM GetVolumePathName}
  4885. function GetVolumePathNamesForVolumeNameA(lpszVolumeName, lpszVolumePathNames: LPCSTR;
  4886. cchBufferLength: DWORD; var lpcchReturnLength: DWORD): BOOL; stdcall;
  4887. {$EXTERNALSYM GetVolumePathNamesForVolumeNameA}
  4888. function GetVolumePathNamesForVolumeNameW(lpszVolumeName, lpszVolumePathNames: LPCWSTR;
  4889. cchBufferLength: DWORD; var lpcchReturnLength: DWORD): BOOL; stdcall;
  4890. {$EXTERNALSYM GetVolumePathNamesForVolumeNameW}
  4891. function GetVolumePathNamesForVolumeName(lpszVolumeName, lpszVolumePathNames: LPCTSTR;
  4892. cchBufferLength: DWORD; var lpcchReturnLength: DWORD): BOOL; stdcall;
  4893. {$EXTERNALSYM GetVolumePathNamesForVolumeName}
  4894. const
  4895. ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID = $00000001;
  4896. {$EXTERNALSYM ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID}
  4897. ACTCTX_FLAG_LANGID_VALID = $00000002;
  4898. {$EXTERNALSYM ACTCTX_FLAG_LANGID_VALID}
  4899. ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID = $00000004;
  4900. {$EXTERNALSYM ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID}
  4901. ACTCTX_FLAG_RESOURCE_NAME_VALID = $00000008;
  4902. {$EXTERNALSYM ACTCTX_FLAG_RESOURCE_NAME_VALID}
  4903. ACTCTX_FLAG_SET_PROCESS_DEFAULT = $00000010;
  4904. {$EXTERNALSYM ACTCTX_FLAG_SET_PROCESS_DEFAULT}
  4905. ACTCTX_FLAG_APPLICATION_NAME_VALID = $00000020;
  4906. {$EXTERNALSYM ACTCTX_FLAG_APPLICATION_NAME_VALID}
  4907. ACTCTX_FLAG_SOURCE_IS_ASSEMBLYREF = $00000040;
  4908. {$EXTERNALSYM ACTCTX_FLAG_SOURCE_IS_ASSEMBLYREF}
  4909. ACTCTX_FLAG_HMODULE_VALID = $00000080;
  4910. {$EXTERNALSYM ACTCTX_FLAG_HMODULE_VALID}
  4911. type
  4912. tagACTCTXA = record
  4913. cbSize: ULONG;
  4914. dwFlags: DWORD;
  4915. lpSource: LPCSTR;
  4916. wProcessorArchitecture: USHORT;
  4917. wLangId: LANGID;
  4918. lpAssemblyDirectory: LPCSTR;
  4919. lpResourceName: LPCSTR;
  4920. lpApplicationName: LPCSTR;
  4921. hModule: HMODULE;
  4922. end;
  4923. {$EXTERNALSYM tagACTCTXA}
  4924. ACTCTXA = tagACTCTXA;
  4925. {$EXTERNALSYM ACTCTXA}
  4926. PACTCTXA = ^ACTCTXA;
  4927. {$EXTERNALSYM PACTCTXA}
  4928. TActCtxA = ACTCTXA;
  4929. tagACTCTXW = record
  4930. cbSize: ULONG;
  4931. dwFlags: DWORD;
  4932. lpSource: LPCWSTR;
  4933. wProcessorArchitecture: USHORT;
  4934. wLangId: LANGID;
  4935. lpAssemblyDirectory: LPCWSTR;
  4936. lpResourceName: LPCWSTR;
  4937. lpApplicationName: LPCWSTR;
  4938. hModule: HMODULE;
  4939. end;
  4940. {$EXTERNALSYM tagACTCTXW}
  4941. ACTCTXW = tagACTCTXW;
  4942. {$EXTERNALSYM ACTCTXW}
  4943. PACTCTXW = ^ACTCTXW;
  4944. {$EXTERNALSYM PACTCTXW}
  4945. TActCtxW = ACTCTXW;
  4946. {$IFDEF UNICODE}
  4947. ACTCTX = ACTCTXW;
  4948. {$EXTERNALSYM ACTCTX}
  4949. PACTCTX = PACTCTXW;
  4950. {$EXTERNALSYM PACTCTX}
  4951. TActCtx = TActCtxW;
  4952. {$ELSE}
  4953. ACTCTX = ACTCTXA;
  4954. {$EXTERNALSYM ACTCTX}
  4955. PACTCTX = PACTCTXA;
  4956. {$EXTERNALSYM PACTCTX}
  4957. TActCtx = TActCtxA;
  4958. {$ENDIF UNICODE}
  4959. function CreateActCtxA(var pActCtx: ACTCTXA): HANDLE; stdcall;
  4960. {$EXTERNALSYM CreateActCtxA}
  4961. function CreateActCtxW(var pActCtx: ACTCTXW): HANDLE; stdcall;
  4962. {$EXTERNALSYM CreateActCtxW}
  4963. function CreateActCtx(var pActCtx: ACTCTX): HANDLE; stdcall;
  4964. {$EXTERNALSYM CreateActCtx}
  4965. procedure AddRefActCtx(hActCtx: HANDLE); stdcall;
  4966. {$EXTERNALSYM AddRefActCtx}
  4967. procedure ReleaseActCtx(hActCtx: HANDLE); stdcall;
  4968. {$EXTERNALSYM ReleaseActCtx}
  4969. function ZombifyActCtx(hActCtx: HANDLE): BOOL; stdcall;
  4970. {$EXTERNALSYM ZombifyActCtx}
  4971. function ActivateActCtx(hActCtx: HANDLE; var lpCookie: ULONG_PTR): BOOL; stdcall;
  4972. {$EXTERNALSYM ActivateActCtx}
  4973. const
  4974. DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION = $00000001;
  4975. {$EXTERNALSYM DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION}
  4976. function DeactivateActCtx(dwFlags: DWORD; ulCookie: ULONG_PTR): BOOL; stdcall;
  4977. {$EXTERNALSYM DeactivateActCtx}
  4978. function GetCurrentActCtx(var lphActCtx: HANDLE): BOOL; stdcall;
  4979. {$EXTERNALSYM GetCurrentActCtx}
  4980. type
  4981. tagACTCTX_SECTION_KEYED_DATA_2600 = record
  4982. cbSize: ULONG;
  4983. ulDataFormatVersion: ULONG;
  4984. lpData: PVOID;
  4985. ulLength: ULONG;
  4986. lpSectionGlobalData: PVOID;
  4987. ulSectionGlobalDataLength: ULONG;
  4988. lpSectionBase: PVOID;
  4989. ulSectionTotalLength: ULONG;
  4990. hActCtx: HANDLE;
  4991. ulAssemblyRosterIndex: ULONG;
  4992. end;
  4993. {$EXTERNALSYM tagACTCTX_SECTION_KEYED_DATA_2600}
  4994. ACTCTX_SECTION_KEYED_DATA_2600 = tagACTCTX_SECTION_KEYED_DATA_2600;
  4995. {$EXTERNALSYM ACTCTX_SECTION_KEYED_DATA_2600}
  4996. PACTCTX_SECTION_KEYED_DATA_2600 = ^ACTCTX_SECTION_KEYED_DATA_2600;
  4997. {$EXTERNALSYM PACTCTX_SECTION_KEYED_DATA_2600}
  4998. PCACTCTX_SECTION_KEYED_DATA_2600 = ^ACTCTX_SECTION_KEYED_DATA_2600;
  4999. {$EXTERNALSYM PCACTCTX_SECTION_KEYED_DATA_2600}
  5000. TActCtxSectionKeyedData2600 = ACTCTX_SECTION_KEYED_DATA_2600;
  5001. PActCtxSectionKeyedData2600 = PACTCTX_SECTION_KEYED_DATA_2600;
  5002. tagACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA = record
  5003. lpInformation: PVOID;
  5004. lpSectionBase: PVOID;
  5005. ulSectionLength: ULONG;
  5006. lpSectionGlobalDataBase: PVOID;
  5007. ulSectionGlobalDataLength: ULONG;
  5008. end;
  5009. {$EXTERNALSYM tagACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA}
  5010. ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA = tagACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
  5011. {$EXTERNALSYM ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA}
  5012. PACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA = ^ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
  5013. {$EXTERNALSYM PACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA}
  5014. PCACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA = ^ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
  5015. {$EXTERNALSYM PCACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA}
  5016. TActCtxSectionKeyedDataAssemblyMetadata = ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
  5017. PActCtxSectionKeyedDataAssemblyMetadata = PACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
  5018. tagACTCTX_SECTION_KEYED_DATA = record
  5019. cbSize: ULONG;
  5020. ulDataFormatVersion: ULONG;
  5021. lpData: PVOID;
  5022. ulLength: ULONG;
  5023. lpSectionGlobalData: PVOID;
  5024. ulSectionGlobalDataLength: ULONG;
  5025. lpSectionBase: PVOID;
  5026. ulSectionTotalLength: ULONG;
  5027. hActCtx: HANDLE;
  5028. ulAssemblyRosterIndex: ULONG;
  5029. // 2600 stops here
  5030. ulFlags: ULONG;
  5031. AssemblyMetadata: ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
  5032. end;
  5033. {$EXTERNALSYM tagACTCTX_SECTION_KEYED_DATA}
  5034. ACTCTX_SECTION_KEYED_DATA = tagACTCTX_SECTION_KEYED_DATA;
  5035. {$EXTERNALSYM ACTCTX_SECTION_KEYED_DATA}
  5036. PACTCTX_SECTION_KEYED_DATA = ^ACTCTX_SECTION_KEYED_DATA;
  5037. {$EXTERNALSYM PACTCTX_SECTION_KEYED_DATA}
  5038. PCACTCTX_SECTION_KEYED_DATA = ^ACTCTX_SECTION_KEYED_DATA;
  5039. {$EXTERNALSYM PCACTCTX_SECTION_KEYED_DATA}
  5040. TActCtxSectionKeyedData = ACTCTX_SECTION_KEYED_DATA;
  5041. PActCtxSectionKeyedData = PACTCTX_SECTION_KEYED_DATA;
  5042. const
  5043. FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX = $00000001;
  5044. {$EXTERNALSYM FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX}
  5045. FIND_ACTCTX_SECTION_KEY_RETURN_FLAGS = $00000002;
  5046. {$EXTERNALSYM FIND_ACTCTX_SECTION_KEY_RETURN_FLAGS}
  5047. FIND_ACTCTX_SECTION_KEY_RETURN_ASSEMBLY_METADATA = $00000004;
  5048. {$EXTERNALSYM FIND_ACTCTX_SECTION_KEY_RETURN_ASSEMBLY_METADATA}
  5049. function FindActCtxSectionStringA(dwFlags: DWORD; const lpExtensionGuid: TGUID;
  5050. ulSectionId: ULONG; lpStringToFind: LPCSTR; ReturnedData: PACTCTX_SECTION_KEYED_DATA): BOOL; stdcall;
  5051. {$EXTERNALSYM FindActCtxSectionStringA}
  5052. function FindActCtxSectionStringW(dwFlags: DWORD; const lpExtensionGuid: TGUID;
  5053. ulSectionId: ULONG; lpStringToFind: LPCWSTR; ReturnedData: PACTCTX_SECTION_KEYED_DATA): BOOL; stdcall;
  5054. {$EXTERNALSYM FindActCtxSectionStringW}
  5055. function FindActCtxSectionString(dwFlags: DWORD; const lpExtensionGuid: TGUID;
  5056. ulSectionId: ULONG; lpStringToFind: LPCTSTR; ReturnedData: PACTCTX_SECTION_KEYED_DATA): BOOL; stdcall;
  5057. {$EXTERNALSYM FindActCtxSectionString}
  5058. function FindActCtxSectionGuid(dwFlags: DWORD; const lpExtensionGuid: TGUID;
  5059. ulSectionId: ULONG; const lpGuidToFind: TGUID; ReturnedData: PACTCTX_SECTION_KEYED_DATA): BOOL; stdcall;
  5060. {$EXTERNALSYM FindActCtxSectionGuid}
  5061. type
  5062. _ACTIVATION_CONTEXT_BASIC_INFORMATION = record
  5063. hActCtx: HANDLE;
  5064. dwFlags: DWORD;
  5065. end;
  5066. {$EXTERNALSYM _ACTIVATION_CONTEXT_BASIC_INFORMATION}
  5067. ACTIVATION_CONTEXT_BASIC_INFORMATION = _ACTIVATION_CONTEXT_BASIC_INFORMATION;
  5068. {$EXTERNALSYM ACTIVATION_CONTEXT_BASIC_INFORMATION}
  5069. PACTIVATION_CONTEXT_BASIC_INFORMATION = ^ACTIVATION_CONTEXT_BASIC_INFORMATION;
  5070. {$EXTERNALSYM PACTIVATION_CONTEXT_BASIC_INFORMATION}
  5071. TActivationContextBasicInformation = ACTIVATION_CONTEXT_BASIC_INFORMATION;
  5072. PActivationContextBasicInformation = PACTIVATION_CONTEXT_BASIC_INFORMATION;
  5073. PCACTIVATION_CONTEXT_BASIC_INFORMATION = ^_ACTIVATION_CONTEXT_BASIC_INFORMATION;
  5074. {$EXTERNALSYM PCACTIVATION_CONTEXT_BASIC_INFORMATION}
  5075. const
  5076. ACTIVATION_CONTEXT_BASIC_INFORMATION_DEFINED = 1;
  5077. {$EXTERNALSYM ACTIVATION_CONTEXT_BASIC_INFORMATION_DEFINED}
  5078. QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX = $00000004;
  5079. {$EXTERNALSYM QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX}
  5080. QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE = $00000008;
  5081. {$EXTERNALSYM QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE}
  5082. QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS = $00000010;
  5083. {$EXTERNALSYM QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS}
  5084. QUERY_ACTCTX_FLAG_NO_ADDREF = $80000000;
  5085. {$EXTERNALSYM QUERY_ACTCTX_FLAG_NO_ADDREF}
  5086. //
  5087. // switch (ulInfoClass)
  5088. //
  5089. // case ActivationContextBasicInformation:
  5090. // pvSubInstance == NULL
  5091. // pvBuffer is of type PACTIVATION_CONTEXT_BASIC_INFORMATION
  5092. //
  5093. // case ActivationContextDetailedInformation:
  5094. // pvSubInstance == NULL
  5095. // pvBuffer is of type PACTIVATION_CONTEXT_DETAILED_INFORMATION
  5096. //
  5097. // case AssemblyDetailedInformationInActivationContext:
  5098. // pvSubInstance is of type PULONG
  5099. // *pvSubInstance < ACTIVATION_CONTEXT_DETAILED_INFORMATION::ulAssemblyCount
  5100. // pvBuffer is of type PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION
  5101. //
  5102. // case FileInformationInAssemblyOfAssemblyInActivationContext:
  5103. // pvSubInstance is of type PACTIVATION_CONTEXT_QUERY_INDEX
  5104. // pvSubInstance->ulAssemblyIndex < ACTIVATION_CONTEXT_DETAILED_INFORMATION::ulAssemblyCount
  5105. // pvSubInstance->ulFileIndexInAssembly < ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION::ulFileCount
  5106. // pvBuffer is of type PASSEMBLY_FILE_DETAILED_INFORMATION
  5107. //
  5108. // String are placed after the structs.
  5109. //
  5110. function QueryActCtxW(dwFlags: DWORD; hActCtx: HANDLE; pvSubInstance: PVOID;
  5111. ulInfoClass: ULONG; pvBuffer: PVOID; cbBuffer: SIZE_T;
  5112. pcbWrittenOrRequired: PSIZE_T): BOOL; stdcall;
  5113. {$EXTERNALSYM QueryActCtxW}
  5114. type
  5115. PQUERYACTCTXW_FUNC = function(dwFlags: DWORD; hActCtx: HANDLE;
  5116. pvSubInstance: PVOID; ulInfoClass: ULONG; pvBuffer: PVOID; cbBuffer: SIZE_T;
  5117. pcbWrittenOrRequired: PSIZE_T): BOOL; stdcall;
  5118. {$EXTERNALSYM PQUERYACTCTXW_FUNC}
  5119. function ProcessIdToSessionId(dwProcessId: DWORD; var pSessionId: DWORD): BOOL; stdcall;
  5120. {$EXTERNALSYM ProcessIdToSessionId}
  5121. function WTSGetActiveConsoleSessionId: DWORD; stdcall;
  5122. {$EXTERNALSYM WTSGetActiveConsoleSessionId}
  5123. function IsWow64Process(hProcess: HANDLE; var Wow64Process: BOOL): BOOL; stdcall;
  5124. {$EXTERNALSYM IsWow64Process}
  5125. function GetLogicalProcessorInformation(Buffer: PSYSTEM_LOGICAL_PROCESSOR_INFORMATION; ReturnedLength: PDWORD): BOOL; stdcall;
  5126. {$EXTERNALSYM GetLogicalProcessorInformation}
  5127. //
  5128. // NUMA Information routines.
  5129. //
  5130. function GetNumaHighestNodeNumber(var HighestNodeNumber: ULONG): BOOL; stdcall;
  5131. {$EXTERNALSYM GetNumaHighestNodeNumber}
  5132. function GetNumaProcessorNode(Processor: UCHAR; var NodeNumber: UCHAR): BOOL; stdcall;
  5133. {$EXTERNALSYM GetNumaProcessorNode}
  5134. function GetNumaNodeProcessorMask(Node: UCHAR; ProcessorMask: ULONGLONG): BOOL; stdcall;
  5135. {$EXTERNALSYM GetNumaNodeProcessorMask}
  5136. function GetNumaAvailableMemoryNode(Node: UCHAR; var AvailableBytes: ULONGLONG): BOOL; stdcall;
  5137. {$EXTERNALSYM GetNumaAvailableMemoryNode}
  5138. {$ENDIF JWA_INTERFACESECTION}
  5139. {$IFNDEF JWA_INCLUDEMODE}
  5140. implementation
  5141. uses
  5142. JwaWinDLLNames;
  5143. {$ENDIF !JWA_INCLUDEMODE}
  5144. {$IFDEF JWA_IMPLEMENTATIONSECTION}
  5145. procedure MoveMemory(Destination, Source: PVOID; Length: SIZE_T);
  5146. begin
  5147. Move(Source^, Destination^, Length);
  5148. end;
  5149. procedure CopyMemory(Destination, Source: PVOID; Length: SIZE_T);
  5150. begin
  5151. Move(Source^, Destination^, Length);
  5152. end;
  5153. procedure FillMemory(Destination: PVOID; Length: SIZE_T; Fill: BYTE);
  5154. begin
  5155. FillChar(Destination^, Length, Fill);
  5156. end;
  5157. procedure ZeroMemory(Destination: PVOID; Length: SIZE_T);
  5158. begin
  5159. FillChar(Destination^, Length, 0);
  5160. end;
  5161. function FreeModule(hLibModule: HMODULE): BOOL;
  5162. begin
  5163. Result := FreeLibrary(hLibModule);
  5164. end;
  5165. function MakeProcInstance(lpProc: FARPROC; hInstance: HINST): FARPROC;
  5166. begin
  5167. Result := lpProc;
  5168. end;
  5169. procedure FreeProcInstance(lpProc: FARPROC);
  5170. begin
  5171. { nothing }
  5172. end;
  5173. function GlobalLRUNewest(h: HANDLE): HANDLE;
  5174. begin
  5175. Result := H;
  5176. end;
  5177. function GlobalLRUOldest(h: HANDLE): HANDLE;
  5178. begin
  5179. Result := H;
  5180. end;
  5181. function GlobalDiscard(h: HANDLE): HANDLE;
  5182. begin
  5183. Result := GlobalReAlloc(h, 0, GMEM_MOVEABLE);
  5184. end;
  5185. function LocalDiscard(h: HLOCAL): HLOCAL;
  5186. begin
  5187. Result := LocalReAlloc(h, 0, LMEM_MOVEABLE);
  5188. end;
  5189. function GetFreeSpace(w: WORD): DWORD;
  5190. begin
  5191. Result := $100000;
  5192. end;
  5193. function InterlockedExchangePointer(var Target: PVOID; Value: PVOID): PVOID;
  5194. begin
  5195. {$ifdef cpu64}
  5196. Result := PVOID(InterlockedExchange64(LONGLONG(Target), LONGLONG(Value)));
  5197. {$else}
  5198. Result := PVOID(InterlockedExchange(LONG(Target), LONG(Value)));
  5199. {$endif cpu64}
  5200. end;
  5201. function InterlockedCompareExchangePointer(var Destination: PVOID; Exchange, Comperand: PVOID): PVOID;
  5202. begin
  5203. {$ifdef cpu64}
  5204. Result := PVOID(InterlockedCompareExchange64(LONGLONG(Destination), LONGLONG(Exchange), LONGLONG(Comperand)));
  5205. {$else cpu64}
  5206. Result := PVOID(InterlockedCompareExchange(LONG(Destination), LONG(Exchange), LONG(Comperand)));
  5207. {$endif cpu64}
  5208. end;
  5209. function UnlockResource(hResData: HANDLE): BOOL;
  5210. begin
  5211. Result := False;
  5212. end;
  5213. function HasOverlappedIoCompleted(const lpOverlapped: OVERLAPPED): BOOL;
  5214. begin
  5215. Result := NTSTATUS(lpOverlapped.Internal) <> STATUS_PENDING;
  5216. end;
  5217. // 64 bit interlocked functions from Will
  5218. function InterlockedAnd64(var Destination: LONGLONG; Value: LONGLONG): LONGLONG;
  5219. begin
  5220. repeat
  5221. Result := Destination;
  5222. until (InterlockedCompareExchange64(Destination, Result and Value, Result) = Result);
  5223. end;
  5224. function InterlockedOr64(var Destination: LONGLONG; Value: LONGLONG): LONGLONG;
  5225. begin
  5226. repeat
  5227. Result := Destination;
  5228. until (InterlockedCompareExchange64(Destination, Result or Value, Result) = Result);
  5229. end;
  5230. function InterlockedXor64(var Destination: LONGLONG; Value: LONGLONG): LONGLONG;
  5231. begin
  5232. repeat
  5233. Result := Destination;
  5234. until (InterlockedCompareExchange64(Destination, Result xor Value, Result) = Result);
  5235. end;
  5236. function InterlockedIncrement64(var Addend: LONGLONG): LONGLONG;
  5237. begin
  5238. repeat
  5239. Result := Addend;
  5240. until (InterlockedCompareExchange64(Addend, Result + 1, Result) = Result);
  5241. Inc(Result);
  5242. end;
  5243. function InterlockedDecrement64(var Addend: LONGLONG): LONGLONG;
  5244. begin
  5245. repeat
  5246. Result := Addend;
  5247. until (InterlockedCompareExchange64(Addend, Result - 1, Result) = Result);
  5248. Dec(Result);
  5249. end;
  5250. function InterlockedExchange64(var Target: LONGLONG; Value: LONGLONG): LONGLONG;
  5251. begin
  5252. repeat
  5253. Result := Target;
  5254. until (InterlockedCompareExchange64(Target, Value, Result) = Result);
  5255. end;
  5256. function InterlockedExchangeAdd64(var Addend: LONGLONG; Value: LONGLONG): LONGLONG;
  5257. begin
  5258. repeat
  5259. Result := Addend;
  5260. until (InterlockedCompareExchange64(Addend, Result + Value, Result) = Result);
  5261. end;
  5262. { MVB:
  5263. The implementation of CreateMutex only interpretes bInitialOwner as True if
  5264. it's ordinal value is 1, all other values are interpreted as False. Delphi
  5265. compiles Longbool(True) as $FFFFFFFF which is consequently interpreted as
  5266. False. Changing the bInitalOwner parameter type to Boolean fixes the problem
  5267. (Boolean(True) = 1) but that would be implementation specific and might break
  5268. in the future, though unlikely. Hence the CreateMutex function here which
  5269. explicitly passes LongBool(1) instead of LongBool(True). }
  5270. type
  5271. TCreateMutexA = function(lpMutexAttributes: LPSECURITY_ATTRIBUTES; bInitialOwner: LongBool; lpName: LPCSTR): HANDLE; stdcall;
  5272. TCreateMutexW = function(lpMutexAttributes: LPSECURITY_ATTRIBUTES; bInitialOwner: LongBool; lpName: LPCWSTR): HANDLE; stdcall;
  5273. var
  5274. _CreateMutexA: Pointer;
  5275. _CreateMutexW: Pointer;
  5276. function CreateMutexA(lpMutexAttributes: LPSECURITY_ATTRIBUTES; bInitialOwner: BOOL; lpName: LPCSTR): HANDLE;
  5277. begin
  5278. GetProcedureAddress(_CreateMutexA, kernel32, 'CreateMutexA');
  5279. if bInitialOwner then
  5280. Result := TCreateMutexA(_CreateMutexA)(lpMutexAttributes, LongBool(1), lpName)
  5281. else
  5282. Result := TCreateMutexA(_CreateMutexA)(lpMutexAttributes, LongBool(0), lpName)
  5283. end;
  5284. function CreateMutexW(lpMutexAttributes: LPSECURITY_ATTRIBUTES; bInitialOwner: BOOL; lpName: LPCWSTR): HANDLE;
  5285. begin
  5286. GetProcedureAddress(_CreateMutexW, kernel32, 'CreateMutexW');
  5287. if bInitialOwner then
  5288. Result := TCreateMutexW(_CreateMutexW)(lpMutexAttributes, LongBool(1), lpName)
  5289. else
  5290. Result := TCreateMutexW(_CreateMutexW)(lpMutexAttributes, LongBool(0), lpName)
  5291. end;
  5292. {$IFDEF UNICODE}
  5293. function CreateMutex(lpMutexAttributes: LPSECURITY_ATTRIBUTES; bInitialOwner: BOOL; lpName: LPCWSTR): HANDLE;
  5294. begin
  5295. GetProcedureAddress(_CreateMutexW, kernel32, 'CreateMutexW');
  5296. if bInitialOwner then
  5297. Result := TCreateMutexW(_CreateMutexW)(lpMutexAttributes, LongBool(1), lpName)
  5298. else
  5299. Result := TCreateMutexW(_CreateMutexW)(lpMutexAttributes, LongBool(0), lpName)
  5300. end;
  5301. {$ELSE}
  5302. function CreateMutex(lpMutexAttributes: LPSECURITY_ATTRIBUTES; bInitialOwner: BOOL; lpName: LPCSTR): HANDLE;
  5303. begin
  5304. GetProcedureAddress(_CreateMutexA, kernel32, 'CreateMutexA');
  5305. if bInitialOwner then
  5306. Result := TCreateMutexA(_CreateMutexA)(lpMutexAttributes, LongBool(1), lpName)
  5307. else
  5308. Result := TCreateMutexA(_CreateMutexA)(lpMutexAttributes, LongBool(0), lpName)
  5309. end;
  5310. {$ENDIF UNICODE}
  5311. {$IFDEF DYNAMIC_LINK}
  5312. var
  5313. _InterlockedCompareExchange64: Pointer;
  5314. function InterlockedCompareExchange64;
  5315. begin
  5316. GetProcedureAddress(_InterlockedCompareExchange64, kernel32, 'InterlockedCompareExchange64');
  5317. asm
  5318. MOV ESP, EBP
  5319. POP EBP
  5320. JMP [_InterlockedCompareExchange64]
  5321. end;
  5322. end;
  5323. var
  5324. _InterlockedIncrement: Pointer;
  5325. function InterlockedIncrement;
  5326. begin
  5327. GetProcedureAddress(_InterlockedIncrement, kernel32, 'InterlockedIncrement');
  5328. asm
  5329. MOV ESP, EBP
  5330. POP EBP
  5331. JMP [_InterlockedIncrement]
  5332. end;
  5333. end;
  5334. var
  5335. _InterlockedDecrement: Pointer;
  5336. function InterlockedDecrement;
  5337. begin
  5338. GetProcedureAddress(_InterlockedDecrement, kernel32, 'InterlockedDecrement');
  5339. asm
  5340. MOV ESP, EBP
  5341. POP EBP
  5342. JMP [_InterlockedDecrement]
  5343. end;
  5344. end;
  5345. var
  5346. _InterlockedExchange: Pointer;
  5347. function InterlockedExchange;
  5348. begin
  5349. GetProcedureAddress(_InterlockedExchange, kernel32, 'InterlockedExchange');
  5350. asm
  5351. MOV ESP, EBP
  5352. POP EBP
  5353. JMP [_InterlockedExchange]
  5354. end;
  5355. end;
  5356. var
  5357. _InterlockedExchangeAdd: Pointer;
  5358. function InterlockedExchangeAdd;
  5359. begin
  5360. GetProcedureAddress(_InterlockedExchangeAdd, kernel32, 'InterlockedExchangeAdd');
  5361. asm
  5362. MOV ESP, EBP
  5363. POP EBP
  5364. JMP [_InterlockedExchangeAdd]
  5365. end;
  5366. end;
  5367. var
  5368. _InterlockedCompareExchange: Pointer;
  5369. function InterlockedCompareExchange;
  5370. begin
  5371. GetProcedureAddress(_InterlockedCompareExchange, kernel32, 'InterlockedCompareExchange');
  5372. asm
  5373. MOV ESP, EBP
  5374. POP EBP
  5375. JMP [_InterlockedCompareExchange]
  5376. end;
  5377. end;
  5378. var
  5379. _InitializeSListHead: Pointer;
  5380. procedure InitializeSListHead;
  5381. begin
  5382. GetProcedureAddress(_InitializeSListHead, kernel32, 'InitializeSListHead');
  5383. asm
  5384. MOV ESP, EBP
  5385. POP EBP
  5386. JMP [_InitializeSListHead]
  5387. end;
  5388. end;
  5389. var
  5390. _InterlockedPopEntrySList: Pointer;
  5391. function InterlockedPopEntrySList;
  5392. begin
  5393. GetProcedureAddress(_InterlockedPopEntrySList, kernel32, 'InterlockedPopEntrySList');
  5394. asm
  5395. MOV ESP, EBP
  5396. POP EBP
  5397. JMP [_InterlockedPopEntrySList]
  5398. end;
  5399. end;
  5400. var
  5401. _InterlockedPushEntrySList: Pointer;
  5402. function InterlockedPushEntrySList;
  5403. begin
  5404. GetProcedureAddress(_InterlockedPushEntrySList, kernel32, 'InterlockedPushEntrySList');
  5405. asm
  5406. MOV ESP, EBP
  5407. POP EBP
  5408. JMP [_InterlockedPushEntrySList]
  5409. end;
  5410. end;
  5411. var
  5412. _InterlockedFlushSList: Pointer;
  5413. function InterlockedFlushSList;
  5414. begin
  5415. GetProcedureAddress(_InterlockedFlushSList, kernel32, 'InterlockedFlushSList');
  5416. asm
  5417. MOV ESP, EBP
  5418. POP EBP
  5419. JMP [_InterlockedFlushSList]
  5420. end;
  5421. end;
  5422. var
  5423. _QueryDepthSList: Pointer;
  5424. function QueryDepthSList;
  5425. begin
  5426. GetProcedureAddress(_QueryDepthSList, kernel32, 'QueryDepthSList');
  5427. asm
  5428. MOV ESP, EBP
  5429. POP EBP
  5430. JMP [_QueryDepthSList]
  5431. end;
  5432. end;
  5433. var
  5434. _FreeResource: Pointer;
  5435. function FreeResource;
  5436. begin
  5437. GetProcedureAddress(_FreeResource, kernel32, 'FreeResource');
  5438. asm
  5439. MOV ESP, EBP
  5440. POP EBP
  5441. JMP [_FreeResource]
  5442. end;
  5443. end;
  5444. var
  5445. _LockResource: Pointer;
  5446. function LockResource;
  5447. begin
  5448. GetProcedureAddress(_LockResource, kernel32, 'LockResource');
  5449. asm
  5450. MOV ESP, EBP
  5451. POP EBP
  5452. JMP [_LockResource]
  5453. end;
  5454. end;
  5455. var
  5456. _FreeLibrary: Pointer;
  5457. function FreeLibrary;
  5458. begin
  5459. GetProcedureAddress(_FreeLibrary, kernel32, 'FreeLibrary');
  5460. asm
  5461. MOV ESP, EBP
  5462. POP EBP
  5463. JMP [_FreeLibrary]
  5464. end;
  5465. end;
  5466. var
  5467. _FreeLibraryAndExitThread: Pointer;
  5468. procedure FreeLibraryAndExitThread;
  5469. begin
  5470. GetProcedureAddress(_FreeLibraryAndExitThread, kernel32, 'FreeLibraryAndExitThread');
  5471. asm
  5472. MOV ESP, EBP
  5473. POP EBP
  5474. JMP [_FreeLibraryAndExitThread]
  5475. end;
  5476. end;
  5477. var
  5478. _DisableThreadLibraryCalls: Pointer;
  5479. function DisableThreadLibraryCalls;
  5480. begin
  5481. GetProcedureAddress(_DisableThreadLibraryCalls, kernel32, 'DisableThreadLibraryCalls');
  5482. asm
  5483. MOV ESP, EBP
  5484. POP EBP
  5485. JMP [_DisableThreadLibraryCalls]
  5486. end;
  5487. end;
  5488. {$IFNDEF JWA_INCLUDEMODE}
  5489. // MVB TODO Dynamic linking for GetProcAddress doesn't make much sense, does it? Same for LoadLibrary.
  5490. var
  5491. _GetProcAddress: Pointer;
  5492. function GetProcAddress;
  5493. begin
  5494. GetProcedureAddress(_GetProcAddress, kernel32, 'GetProcAddress');
  5495. asm
  5496. MOV ESP, EBP
  5497. POP EBP
  5498. JMP [_GetProcAddress]
  5499. end;
  5500. end;
  5501. {$ENDIF !JWA_INCLUDEMODE}
  5502. var
  5503. _GetVersion: Pointer;
  5504. function GetVersion;
  5505. begin
  5506. GetProcedureAddress(_GetVersion, kernel32, 'GetVersion');
  5507. asm
  5508. MOV ESP, EBP
  5509. POP EBP
  5510. JMP [_GetVersion]
  5511. end;
  5512. end;
  5513. var
  5514. _GlobalAlloc: Pointer;
  5515. function GlobalAlloc;
  5516. begin
  5517. GetProcedureAddress(_GlobalAlloc, kernel32, 'GlobalAlloc');
  5518. asm
  5519. MOV ESP, EBP
  5520. POP EBP
  5521. JMP [_GlobalAlloc]
  5522. end;
  5523. end;
  5524. var
  5525. _GlobalReAlloc: Pointer;
  5526. function GlobalReAlloc;
  5527. begin
  5528. GetProcedureAddress(_GlobalReAlloc, kernel32, 'GlobalReAlloc');
  5529. asm
  5530. MOV ESP, EBP
  5531. POP EBP
  5532. JMP [_GlobalReAlloc]
  5533. end;
  5534. end;
  5535. var
  5536. _GlobalSize: Pointer;
  5537. function GlobalSize;
  5538. begin
  5539. GetProcedureAddress(_GlobalSize, kernel32, 'GlobalSize');
  5540. asm
  5541. MOV ESP, EBP
  5542. POP EBP
  5543. JMP [_GlobalSize]
  5544. end;
  5545. end;
  5546. var
  5547. _GlobalFlags: Pointer;
  5548. function GlobalFlags;
  5549. begin
  5550. GetProcedureAddress(_GlobalFlags, kernel32, 'GlobalFlags');
  5551. asm
  5552. MOV ESP, EBP
  5553. POP EBP
  5554. JMP [_GlobalFlags]
  5555. end;
  5556. end;
  5557. var
  5558. _GlobalLock: Pointer;
  5559. function GlobalLock;
  5560. begin
  5561. GetProcedureAddress(_GlobalLock, kernel32, 'GlobalLock');
  5562. asm
  5563. MOV ESP, EBP
  5564. POP EBP
  5565. JMP [_GlobalLock]
  5566. end;
  5567. end;
  5568. var
  5569. _GlobalHandle: Pointer;
  5570. function GlobalHandle;
  5571. begin
  5572. GetProcedureAddress(_GlobalHandle, kernel32, 'GlobalHandle');
  5573. asm
  5574. MOV ESP, EBP
  5575. POP EBP
  5576. JMP [_GlobalHandle]
  5577. end;
  5578. end;
  5579. var
  5580. _GlobalUnlock: Pointer;
  5581. function GlobalUnlock;
  5582. begin
  5583. GetProcedureAddress(_GlobalUnlock, kernel32, 'GlobalUnlock');
  5584. asm
  5585. MOV ESP, EBP
  5586. POP EBP
  5587. JMP [_GlobalUnlock]
  5588. end;
  5589. end;
  5590. var
  5591. _GlobalFree: Pointer;
  5592. function GlobalFree;
  5593. begin
  5594. GetProcedureAddress(_GlobalFree, kernel32, 'GlobalFree');
  5595. asm
  5596. MOV ESP, EBP
  5597. POP EBP
  5598. JMP [_GlobalFree]
  5599. end;
  5600. end;
  5601. var
  5602. _GlobalCompact: Pointer;
  5603. function GlobalCompact;
  5604. begin
  5605. GetProcedureAddress(_GlobalCompact, kernel32, 'GlobalCompact');
  5606. asm
  5607. MOV ESP, EBP
  5608. POP EBP
  5609. JMP [_GlobalCompact]
  5610. end;
  5611. end;
  5612. var
  5613. _GlobalFix: Pointer;
  5614. procedure GlobalFix;
  5615. begin
  5616. GetProcedureAddress(_GlobalFix, kernel32, 'GlobalFix');
  5617. asm
  5618. MOV ESP, EBP
  5619. POP EBP
  5620. JMP [_GlobalFix]
  5621. end;
  5622. end;
  5623. var
  5624. _GlobalUnfix: Pointer;
  5625. procedure GlobalUnfix;
  5626. begin
  5627. GetProcedureAddress(_GlobalUnfix, kernel32, 'GlobalUnfix');
  5628. asm
  5629. MOV ESP, EBP
  5630. POP EBP
  5631. JMP [_GlobalUnfix]
  5632. end;
  5633. end;
  5634. var
  5635. _GlobalWire: Pointer;
  5636. function GlobalWire;
  5637. begin
  5638. GetProcedureAddress(_GlobalWire, kernel32, 'GlobalWire');
  5639. asm
  5640. MOV ESP, EBP
  5641. POP EBP
  5642. JMP [_GlobalWire]
  5643. end;
  5644. end;
  5645. var
  5646. _GlobalUnWire: Pointer;
  5647. function GlobalUnWire;
  5648. begin
  5649. GetProcedureAddress(_GlobalUnWire, kernel32, 'GlobalUnWire');
  5650. asm
  5651. MOV ESP, EBP
  5652. POP EBP
  5653. JMP [_GlobalUnWire]
  5654. end;
  5655. end;
  5656. var
  5657. _GlobalMemoryStatus: Pointer;
  5658. procedure GlobalMemoryStatus;
  5659. begin
  5660. GetProcedureAddress(_GlobalMemoryStatus, kernel32, 'GlobalMemoryStatus');
  5661. asm
  5662. MOV ESP, EBP
  5663. POP EBP
  5664. JMP [_GlobalMemoryStatus]
  5665. end;
  5666. end;
  5667. var
  5668. _GlobalMemoryStatusEx: Pointer;
  5669. function GlobalMemoryStatusEx;
  5670. begin
  5671. GetProcedureAddress(_GlobalMemoryStatusEx, kernel32, 'GlobalMemoryStatusEx');
  5672. asm
  5673. MOV ESP, EBP
  5674. POP EBP
  5675. JMP [_GlobalMemoryStatusEx]
  5676. end;
  5677. end;
  5678. var
  5679. _LocalAlloc: Pointer;
  5680. function LocalAlloc;
  5681. begin
  5682. GetProcedureAddress(_LocalAlloc, kernel32, 'LocalAlloc');
  5683. asm
  5684. MOV ESP, EBP
  5685. POP EBP
  5686. JMP [_LocalAlloc]
  5687. end;
  5688. end;
  5689. var
  5690. _LocalReAlloc: Pointer;
  5691. function LocalReAlloc;
  5692. begin
  5693. GetProcedureAddress(_LocalReAlloc, kernel32, 'LocalReAlloc');
  5694. asm
  5695. MOV ESP, EBP
  5696. POP EBP
  5697. JMP [_LocalReAlloc]
  5698. end;
  5699. end;
  5700. var
  5701. _LocalLock: Pointer;
  5702. function LocalLock;
  5703. begin
  5704. GetProcedureAddress(_LocalLock, kernel32, 'LocalLock');
  5705. asm
  5706. MOV ESP, EBP
  5707. POP EBP
  5708. JMP [_LocalLock]
  5709. end;
  5710. end;
  5711. var
  5712. _LocalHandle: Pointer;
  5713. function LocalHandle;
  5714. begin
  5715. GetProcedureAddress(_LocalHandle, kernel32, 'LocalHandle');
  5716. asm
  5717. MOV ESP, EBP
  5718. POP EBP
  5719. JMP [_LocalHandle]
  5720. end;
  5721. end;
  5722. var
  5723. _LocalUnlock: Pointer;
  5724. function LocalUnlock;
  5725. begin
  5726. GetProcedureAddress(_LocalUnlock, kernel32, 'LocalUnlock');
  5727. asm
  5728. MOV ESP, EBP
  5729. POP EBP
  5730. JMP [_LocalUnlock]
  5731. end;
  5732. end;
  5733. var
  5734. _LocalSize: Pointer;
  5735. function LocalSize;
  5736. begin
  5737. GetProcedureAddress(_LocalSize, kernel32, 'LocalSize');
  5738. asm
  5739. MOV ESP, EBP
  5740. POP EBP
  5741. JMP [_LocalSize]
  5742. end;
  5743. end;
  5744. var
  5745. _LocalFlags: Pointer;
  5746. function LocalFlags;
  5747. begin
  5748. GetProcedureAddress(_LocalFlags, kernel32, 'LocalFlags');
  5749. asm
  5750. MOV ESP, EBP
  5751. POP EBP
  5752. JMP [_LocalFlags]
  5753. end;
  5754. end;
  5755. var
  5756. _LocalFree: Pointer;
  5757. function LocalFree;
  5758. begin
  5759. GetProcedureAddress(_LocalFree, kernel32, 'LocalFree');
  5760. asm
  5761. MOV ESP, EBP
  5762. POP EBP
  5763. JMP [_LocalFree]
  5764. end;
  5765. end;
  5766. var
  5767. _LocalShrink: Pointer;
  5768. function LocalShrink;
  5769. begin
  5770. GetProcedureAddress(_LocalShrink, kernel32, 'LocalShrink');
  5771. asm
  5772. MOV ESP, EBP
  5773. POP EBP
  5774. JMP [_LocalShrink]
  5775. end;
  5776. end;
  5777. var
  5778. _LocalCompact: Pointer;
  5779. function LocalCompact;
  5780. begin
  5781. GetProcedureAddress(_LocalCompact, kernel32, 'LocalCompact');
  5782. asm
  5783. MOV ESP, EBP
  5784. POP EBP
  5785. JMP [_LocalCompact]
  5786. end;
  5787. end;
  5788. var
  5789. _FlushInstructionCache: Pointer;
  5790. function FlushInstructionCache;
  5791. begin
  5792. GetProcedureAddress(_FlushInstructionCache, kernel32, 'FlushInstructionCache');
  5793. asm
  5794. MOV ESP, EBP
  5795. POP EBP
  5796. JMP [_FlushInstructionCache]
  5797. end;
  5798. end;
  5799. var
  5800. _VirtualAlloc: Pointer;
  5801. function VirtualAlloc;
  5802. begin
  5803. GetProcedureAddress(_VirtualAlloc, kernel32, 'VirtualAlloc');
  5804. asm
  5805. MOV ESP, EBP
  5806. POP EBP
  5807. JMP [_VirtualAlloc]
  5808. end;
  5809. end;
  5810. var
  5811. _VirtualFree: Pointer;
  5812. function VirtualFree;
  5813. begin
  5814. GetProcedureAddress(_VirtualFree, kernel32, 'VirtualFree');
  5815. asm
  5816. MOV ESP, EBP
  5817. POP EBP
  5818. JMP [_VirtualFree]
  5819. end;
  5820. end;
  5821. var
  5822. _VirtualProtect: Pointer;
  5823. function VirtualProtect;
  5824. begin
  5825. GetProcedureAddress(_VirtualProtect, kernel32, 'VirtualProtect');
  5826. asm
  5827. MOV ESP, EBP
  5828. POP EBP
  5829. JMP [_VirtualProtect]
  5830. end;
  5831. end;
  5832. var
  5833. _VirtualQuery: Pointer;
  5834. function VirtualQuery;
  5835. begin
  5836. GetProcedureAddress(_VirtualQuery, kernel32, 'VirtualQuery');
  5837. asm
  5838. MOV ESP, EBP
  5839. POP EBP
  5840. JMP [_VirtualQuery]
  5841. end;
  5842. end;
  5843. var
  5844. _VirtualAllocEx: Pointer;
  5845. function VirtualAllocEx;
  5846. begin
  5847. GetProcedureAddress(_VirtualAllocEx, kernel32, 'VirtualAllocEx');
  5848. asm
  5849. MOV ESP, EBP
  5850. POP EBP
  5851. JMP [_VirtualAllocEx]
  5852. end;
  5853. end;
  5854. var
  5855. _GetWriteWatch: Pointer;
  5856. function GetWriteWatch;
  5857. begin
  5858. GetProcedureAddress(_GetWriteWatch, kernel32, 'GetWriteWatch');
  5859. asm
  5860. MOV ESP, EBP
  5861. POP EBP
  5862. JMP [_GetWriteWatch]
  5863. end;
  5864. end;
  5865. var
  5866. _ResetWriteWatch: Pointer;
  5867. function ResetWriteWatch;
  5868. begin
  5869. GetProcedureAddress(_ResetWriteWatch, kernel32, 'ResetWriteWatch');
  5870. asm
  5871. MOV ESP, EBP
  5872. POP EBP
  5873. JMP [_ResetWriteWatch]
  5874. end;
  5875. end;
  5876. var
  5877. _GetLargePageMinimum: Pointer;
  5878. function GetLargePageMinimum;
  5879. begin
  5880. GetProcedureAddress(_GetLargePageMinimum, kernel32, 'GetLargePageMinimum');
  5881. asm
  5882. MOV ESP, EBP
  5883. POP EBP
  5884. JMP [_GetLargePageMinimum]
  5885. end;
  5886. end;
  5887. var
  5888. _VirtualFreeEx: Pointer;
  5889. function VirtualFreeEx;
  5890. begin
  5891. GetProcedureAddress(_VirtualFreeEx, kernel32, 'VirtualFreeEx');
  5892. asm
  5893. MOV ESP, EBP
  5894. POP EBP
  5895. JMP [_VirtualFreeEx]
  5896. end;
  5897. end;
  5898. var
  5899. _VirtualProtectEx: Pointer;
  5900. function VirtualProtectEx;
  5901. begin
  5902. GetProcedureAddress(_VirtualProtectEx, kernel32, 'VirtualProtectEx');
  5903. asm
  5904. MOV ESP, EBP
  5905. POP EBP
  5906. JMP [_VirtualProtectEx]
  5907. end;
  5908. end;
  5909. var
  5910. _VirtualQueryEx: Pointer;
  5911. function VirtualQueryEx;
  5912. begin
  5913. GetProcedureAddress(_VirtualQueryEx, kernel32, 'VirtualQueryEx');
  5914. asm
  5915. MOV ESP, EBP
  5916. POP EBP
  5917. JMP [_VirtualQueryEx]
  5918. end;
  5919. end;
  5920. var
  5921. _HeapCreate: Pointer;
  5922. function HeapCreate;
  5923. begin
  5924. GetProcedureAddress(_HeapCreate, kernel32, 'HeapCreate');
  5925. asm
  5926. MOV ESP, EBP
  5927. POP EBP
  5928. JMP [_HeapCreate]
  5929. end;
  5930. end;
  5931. var
  5932. _HeapDestroy: Pointer;
  5933. function HeapDestroy;
  5934. begin
  5935. GetProcedureAddress(_HeapDestroy, kernel32, 'HeapDestroy');
  5936. asm
  5937. MOV ESP, EBP
  5938. POP EBP
  5939. JMP [_HeapDestroy]
  5940. end;
  5941. end;
  5942. var
  5943. _HeapAlloc: Pointer;
  5944. function HeapAlloc;
  5945. begin
  5946. GetProcedureAddress(_HeapAlloc, kernel32, 'HeapAlloc');
  5947. asm
  5948. MOV ESP, EBP
  5949. POP EBP
  5950. JMP [_HeapAlloc]
  5951. end;
  5952. end;
  5953. var
  5954. _HeapReAlloc: Pointer;
  5955. function HeapReAlloc;
  5956. begin
  5957. GetProcedureAddress(_HeapReAlloc, kernel32, 'HeapReAlloc');
  5958. asm
  5959. MOV ESP, EBP
  5960. POP EBP
  5961. JMP [_HeapReAlloc]
  5962. end;
  5963. end;
  5964. var
  5965. _HeapFree: Pointer;
  5966. function HeapFree;
  5967. begin
  5968. GetProcedureAddress(_HeapFree, kernel32, 'HeapFree');
  5969. asm
  5970. MOV ESP, EBP
  5971. POP EBP
  5972. JMP [_HeapFree]
  5973. end;
  5974. end;
  5975. var
  5976. _HeapSize: Pointer;
  5977. function HeapSize;
  5978. begin
  5979. GetProcedureAddress(_HeapSize, kernel32, 'HeapSize');
  5980. asm
  5981. MOV ESP, EBP
  5982. POP EBP
  5983. JMP [_HeapSize]
  5984. end;
  5985. end;
  5986. var
  5987. _HeapValidate: Pointer;
  5988. function HeapValidate;
  5989. begin
  5990. GetProcedureAddress(_HeapValidate, kernel32, 'HeapValidate');
  5991. asm
  5992. MOV ESP, EBP
  5993. POP EBP
  5994. JMP [_HeapValidate]
  5995. end;
  5996. end;
  5997. var
  5998. _HeapCompact: Pointer;
  5999. function HeapCompact;
  6000. begin
  6001. GetProcedureAddress(_HeapCompact, kernel32, 'HeapCompact');
  6002. asm
  6003. MOV ESP, EBP
  6004. POP EBP
  6005. JMP [_HeapCompact]
  6006. end;
  6007. end;
  6008. var
  6009. _GetProcessHeap: Pointer;
  6010. function GetProcessHeap;
  6011. begin
  6012. GetProcedureAddress(_GetProcessHeap, kernel32, 'GetProcessHeap');
  6013. asm
  6014. MOV ESP, EBP
  6015. POP EBP
  6016. JMP [_GetProcessHeap]
  6017. end;
  6018. end;
  6019. var
  6020. _GetProcessHeaps: Pointer;
  6021. function GetProcessHeaps;
  6022. begin
  6023. GetProcedureAddress(_GetProcessHeaps, kernel32, 'GetProcessHeaps');
  6024. asm
  6025. MOV ESP, EBP
  6026. POP EBP
  6027. JMP [_GetProcessHeaps]
  6028. end;
  6029. end;
  6030. var
  6031. _HeapLock: Pointer;
  6032. function HeapLock;
  6033. begin
  6034. GetProcedureAddress(_HeapLock, kernel32, 'HeapLock');
  6035. asm
  6036. MOV ESP, EBP
  6037. POP EBP
  6038. JMP [_HeapLock]
  6039. end;
  6040. end;
  6041. var
  6042. _HeapUnlock: Pointer;
  6043. function HeapUnlock;
  6044. begin
  6045. GetProcedureAddress(_HeapUnlock, kernel32, 'HeapUnlock');
  6046. asm
  6047. MOV ESP, EBP
  6048. POP EBP
  6049. JMP [_HeapUnlock]
  6050. end;
  6051. end;
  6052. var
  6053. _HeapWalk: Pointer;
  6054. function HeapWalk;
  6055. begin
  6056. GetProcedureAddress(_HeapWalk, kernel32, 'HeapWalk');
  6057. asm
  6058. MOV ESP, EBP
  6059. POP EBP
  6060. JMP [_HeapWalk]
  6061. end;
  6062. end;
  6063. var
  6064. _HeapSetInformation: Pointer;
  6065. function HeapSetInformation;
  6066. begin
  6067. GetProcedureAddress(_HeapSetInformation, kernel32, 'HeapSetInformation');
  6068. asm
  6069. MOV ESP, EBP
  6070. POP EBP
  6071. JMP [_HeapSetInformation]
  6072. end;
  6073. end;
  6074. var
  6075. _HeapQueryInformation: Pointer;
  6076. function HeapQueryInformation;
  6077. begin
  6078. GetProcedureAddress(_HeapQueryInformation, kernel32, 'HeapQueryInformation');
  6079. asm
  6080. MOV ESP, EBP
  6081. POP EBP
  6082. JMP [_HeapQueryInformation]
  6083. end;
  6084. end;
  6085. var
  6086. _GetBinaryTypeA: Pointer;
  6087. function GetBinaryTypeA;
  6088. begin
  6089. GetProcedureAddress(_GetBinaryTypeA, kernel32, 'GetBinaryTypeA');
  6090. asm
  6091. MOV ESP, EBP
  6092. POP EBP
  6093. JMP [_GetBinaryTypeA]
  6094. end;
  6095. end;
  6096. var
  6097. _GetBinaryTypeW: Pointer;
  6098. function GetBinaryTypeW;
  6099. begin
  6100. GetProcedureAddress(_GetBinaryTypeW, kernel32, 'GetBinaryTypeW');
  6101. asm
  6102. MOV ESP, EBP
  6103. POP EBP
  6104. JMP [_GetBinaryTypeW]
  6105. end;
  6106. end;
  6107. var
  6108. _GetBinaryType: Pointer;
  6109. function GetBinaryType;
  6110. begin
  6111. GetProcedureAddress(_GetBinaryType, kernel32, 'GetBinaryType' + AWSuffix);
  6112. asm
  6113. MOV ESP, EBP
  6114. POP EBP
  6115. JMP [_GetBinaryType]
  6116. end;
  6117. end;
  6118. var
  6119. _GetShortPathNameA: Pointer;
  6120. function GetShortPathNameA;
  6121. begin
  6122. GetProcedureAddress(_GetShortPathNameA, kernel32, 'GetShortPathNameA');
  6123. asm
  6124. MOV ESP, EBP
  6125. POP EBP
  6126. JMP [_GetShortPathNameA]
  6127. end;
  6128. end;
  6129. var
  6130. _GetShortPathNameW: Pointer;
  6131. function GetShortPathNameW;
  6132. begin
  6133. GetProcedureAddress(_GetShortPathNameW, kernel32, 'GetShortPathNameW');
  6134. asm
  6135. MOV ESP, EBP
  6136. POP EBP
  6137. JMP [_GetShortPathNameW]
  6138. end;
  6139. end;
  6140. var
  6141. _GetShortPathName: Pointer;
  6142. function GetShortPathName;
  6143. begin
  6144. GetProcedureAddress(_GetShortPathName, kernel32, 'GetShortPathName' + AWSuffix);
  6145. asm
  6146. MOV ESP, EBP
  6147. POP EBP
  6148. JMP [_GetShortPathName]
  6149. end;
  6150. end;
  6151. var
  6152. _GetLongPathNameA: Pointer;
  6153. function GetLongPathNameA;
  6154. begin
  6155. GetProcedureAddress(_GetLongPathNameA, kernel32, 'GetLongPathNameA');
  6156. asm
  6157. MOV ESP, EBP
  6158. POP EBP
  6159. JMP [_GetLongPathNameA]
  6160. end;
  6161. end;
  6162. var
  6163. _GetLongPathNameW: Pointer;
  6164. function GetLongPathNameW;
  6165. begin
  6166. GetProcedureAddress(_GetLongPathNameW, kernel32, 'GetLongPathNameW');
  6167. asm
  6168. MOV ESP, EBP
  6169. POP EBP
  6170. JMP [_GetLongPathNameW]
  6171. end;
  6172. end;
  6173. var
  6174. _GetLongPathName: Pointer;
  6175. function GetLongPathName;
  6176. begin
  6177. GetProcedureAddress(_GetLongPathName, kernel32, 'GetLongPathName' + AWSuffix);
  6178. asm
  6179. MOV ESP, EBP
  6180. POP EBP
  6181. JMP [_GetLongPathName]
  6182. end;
  6183. end;
  6184. var
  6185. _GetProcessAffinityMask: Pointer;
  6186. function GetProcessAffinityMask;
  6187. begin
  6188. GetProcedureAddress(_GetProcessAffinityMask, kernel32, 'GetProcessAffinityMask');
  6189. asm
  6190. MOV ESP, EBP
  6191. POP EBP
  6192. JMP [_GetProcessAffinityMask]
  6193. end;
  6194. end;
  6195. var
  6196. _SetProcessAffinityMask: Pointer;
  6197. function SetProcessAffinityMask;
  6198. begin
  6199. GetProcedureAddress(_SetProcessAffinityMask, kernel32, 'SetProcessAffinityMask');
  6200. asm
  6201. MOV ESP, EBP
  6202. POP EBP
  6203. JMP [_SetProcessAffinityMask]
  6204. end;
  6205. end;
  6206. var
  6207. _GetProcessHandleCount: Pointer;
  6208. function GetProcessHandleCount;
  6209. begin
  6210. GetProcedureAddress(_GetProcessHandleCount, kernel32, 'GetProcessHandleCount');
  6211. asm
  6212. MOV ESP, EBP
  6213. POP EBP
  6214. JMP [_GetProcessHandleCount]
  6215. end;
  6216. end;
  6217. var
  6218. _GetProcessTimes: Pointer;
  6219. function GetProcessTimes;
  6220. begin
  6221. GetProcedureAddress(_GetProcessTimes, kernel32, 'GetProcessTimes');
  6222. asm
  6223. MOV ESP, EBP
  6224. POP EBP
  6225. JMP [_GetProcessTimes]
  6226. end;
  6227. end;
  6228. var
  6229. _GetProcessIoCounters: Pointer;
  6230. function GetProcessIoCounters;
  6231. begin
  6232. GetProcedureAddress(_GetProcessIoCounters, kernel32, 'GetProcessIoCounters');
  6233. asm
  6234. MOV ESP, EBP
  6235. POP EBP
  6236. JMP [_GetProcessIoCounters]
  6237. end;
  6238. end;
  6239. var
  6240. _GetProcessWorkingSetSize: Pointer;
  6241. function GetProcessWorkingSetSize;
  6242. begin
  6243. GetProcedureAddress(_GetProcessWorkingSetSize, kernel32, 'GetProcessWorkingSetSize');
  6244. asm
  6245. MOV ESP, EBP
  6246. POP EBP
  6247. JMP [_GetProcessWorkingSetSize]
  6248. end;
  6249. end;
  6250. var
  6251. _GetProcessWorkingSetSizeEx: Pointer;
  6252. function GetProcessWorkingSetSizeEx;
  6253. begin
  6254. GetProcedureAddress(_GetProcessWorkingSetSizeEx, kernel32, 'GetProcessWorkingSetSizeEx');
  6255. asm
  6256. MOV ESP, EBP
  6257. POP EBP
  6258. JMP [_GetProcessWorkingSetSizeEx]
  6259. end;
  6260. end;
  6261. var
  6262. _SetProcessWorkingSetSize: Pointer;
  6263. function SetProcessWorkingSetSize;
  6264. begin
  6265. GetProcedureAddress(_SetProcessWorkingSetSize, kernel32, 'SetProcessWorkingSetSize');
  6266. asm
  6267. MOV ESP, EBP
  6268. POP EBP
  6269. JMP [_SetProcessWorkingSetSize]
  6270. end;
  6271. end;
  6272. var
  6273. _SetProcessWorkingSetSizeEx: Pointer;
  6274. function SetProcessWorkingSetSizeEx;
  6275. begin
  6276. GetProcedureAddress(_SetProcessWorkingSetSizeEx, kernel32, 'SetProcessWorkingSetSizeEx');
  6277. asm
  6278. MOV ESP, EBP
  6279. POP EBP
  6280. JMP [_SetProcessWorkingSetSizeEx]
  6281. end;
  6282. end;
  6283. var
  6284. _OpenProcess: Pointer;
  6285. function OpenProcess;
  6286. begin
  6287. GetProcedureAddress(_OpenProcess, kernel32, 'OpenProcess');
  6288. asm
  6289. MOV ESP, EBP
  6290. POP EBP
  6291. JMP [_OpenProcess]
  6292. end;
  6293. end;
  6294. var
  6295. _GetCurrentProcess: Pointer;
  6296. function GetCurrentProcess;
  6297. begin
  6298. GetProcedureAddress(_GetCurrentProcess, kernel32, 'GetCurrentProcess');
  6299. asm
  6300. MOV ESP, EBP
  6301. POP EBP
  6302. JMP [_GetCurrentProcess]
  6303. end;
  6304. end;
  6305. var
  6306. _GetCurrentProcessId: Pointer;
  6307. function GetCurrentProcessId;
  6308. begin
  6309. GetProcedureAddress(_GetCurrentProcessId, kernel32, 'GetCurrentProcessId');
  6310. asm
  6311. MOV ESP, EBP
  6312. POP EBP
  6313. JMP [_GetCurrentProcessId]
  6314. end;
  6315. end;
  6316. var
  6317. _ExitProcess: Pointer;
  6318. procedure ExitProcess;
  6319. begin
  6320. GetProcedureAddress(_ExitProcess, kernel32, 'ExitProcess');
  6321. asm
  6322. MOV ESP, EBP
  6323. POP EBP
  6324. JMP [_ExitProcess]
  6325. end;
  6326. end;
  6327. var
  6328. _TerminateProcess: Pointer;
  6329. function TerminateProcess;
  6330. begin
  6331. GetProcedureAddress(_TerminateProcess, kernel32, 'TerminateProcess');
  6332. asm
  6333. MOV ESP, EBP
  6334. POP EBP
  6335. JMP [_TerminateProcess]
  6336. end;
  6337. end;
  6338. var
  6339. _GetExitCodeProcess: Pointer;
  6340. function GetExitCodeProcess;
  6341. begin
  6342. GetProcedureAddress(_GetExitCodeProcess, kernel32, 'GetExitCodeProcess');
  6343. asm
  6344. MOV ESP, EBP
  6345. POP EBP
  6346. JMP [_GetExitCodeProcess]
  6347. end;
  6348. end;
  6349. var
  6350. _FatalExit: Pointer;
  6351. procedure FatalExit;
  6352. begin
  6353. GetProcedureAddress(_FatalExit, kernel32, 'FatalExit');
  6354. asm
  6355. MOV ESP, EBP
  6356. POP EBP
  6357. JMP [_FatalExit]
  6358. end;
  6359. end;
  6360. var
  6361. _GetEnvironmentStringsW: Pointer;
  6362. function GetEnvironmentStringsW;
  6363. begin
  6364. GetProcedureAddress(_GetEnvironmentStringsW, kernel32, 'GetEnvironmentStringsW');
  6365. asm
  6366. MOV ESP, EBP
  6367. POP EBP
  6368. JMP [_GetEnvironmentStringsW]
  6369. end;
  6370. end;
  6371. var
  6372. _GetEnvironmentStrings: Pointer;
  6373. function GetEnvironmentStrings;
  6374. begin
  6375. GetProcedureAddress(_GetEnvironmentStrings, kernel32, 'GetEnvironmentStrings' + AWSuffix);
  6376. asm
  6377. MOV ESP, EBP
  6378. POP EBP
  6379. JMP [_GetEnvironmentStrings]
  6380. end;
  6381. end;
  6382. {$IFNDEF UNICODE}
  6383. var
  6384. _GetEnvironmentStringsA: Pointer;
  6385. function GetEnvironmentStringsA;
  6386. begin
  6387. GetProcedureAddress(_GetEnvironmentStringsA, kernel32, 'GetEnvironmentStringsA');
  6388. asm
  6389. MOV ESP, EBP
  6390. POP EBP
  6391. JMP [_GetEnvironmentStringsA]
  6392. end;
  6393. end;
  6394. {$ENDIF !UNICODE}
  6395. var
  6396. _SetEnvironmentStringsA: Pointer;
  6397. function SetEnvironmentStringsA;
  6398. begin
  6399. GetProcedureAddress(_SetEnvironmentStringsA, kernel32, 'SetEnvironmentStringsA');
  6400. asm
  6401. MOV ESP, EBP
  6402. POP EBP
  6403. JMP [_SetEnvironmentStringsA]
  6404. end;
  6405. end;
  6406. var
  6407. _SetEnvironmentStringsW: Pointer;
  6408. function SetEnvironmentStringsW;
  6409. begin
  6410. GetProcedureAddress(_SetEnvironmentStringsW, kernel32, 'SetEnvironmentStringsW');
  6411. asm
  6412. MOV ESP, EBP
  6413. POP EBP
  6414. JMP [_SetEnvironmentStringsW]
  6415. end;
  6416. end;
  6417. var
  6418. _SetEnvironmentStrings: Pointer;
  6419. function SetEnvironmentStrings;
  6420. begin
  6421. GetProcedureAddress(_SetEnvironmentStrings, kernel32, 'SetEnvironmentStrings' + AWSuffix);
  6422. asm
  6423. MOV ESP, EBP
  6424. POP EBP
  6425. JMP [_SetEnvironmentStrings]
  6426. end;
  6427. end;
  6428. var
  6429. _FreeEnvironmentStringsA: Pointer;
  6430. function FreeEnvironmentStringsA;
  6431. begin
  6432. GetProcedureAddress(_FreeEnvironmentStringsA, kernel32, 'FreeEnvironmentStringsA');
  6433. asm
  6434. MOV ESP, EBP
  6435. POP EBP
  6436. JMP [_FreeEnvironmentStringsA]
  6437. end;
  6438. end;
  6439. var
  6440. _FreeEnvironmentStringsW: Pointer;
  6441. function FreeEnvironmentStringsW;
  6442. begin
  6443. GetProcedureAddress(_FreeEnvironmentStringsW, kernel32, 'FreeEnvironmentStringsW');
  6444. asm
  6445. MOV ESP, EBP
  6446. POP EBP
  6447. JMP [_FreeEnvironmentStringsW]
  6448. end;
  6449. end;
  6450. var
  6451. _FreeEnvironmentStrings: Pointer;
  6452. function FreeEnvironmentStrings;
  6453. begin
  6454. GetProcedureAddress(_FreeEnvironmentStrings, kernel32, 'FreeEnvironmentStrings' + AWSuffix);
  6455. asm
  6456. MOV ESP, EBP
  6457. POP EBP
  6458. JMP [_FreeEnvironmentStrings]
  6459. end;
  6460. end;
  6461. var
  6462. _RaiseException: Pointer;
  6463. procedure RaiseException;
  6464. begin
  6465. GetProcedureAddress(_RaiseException, kernel32, 'RaiseException');
  6466. asm
  6467. MOV ESP, EBP
  6468. POP EBP
  6469. JMP [_RaiseException]
  6470. end;
  6471. end;
  6472. var
  6473. _UnhandledExceptionFilter: Pointer;
  6474. function UnhandledExceptionFilter;
  6475. begin
  6476. GetProcedureAddress(_UnhandledExceptionFilter, kernel32, 'UnhandledExceptionFilter');
  6477. asm
  6478. MOV ESP, EBP
  6479. POP EBP
  6480. JMP [_UnhandledExceptionFilter]
  6481. end;
  6482. end;
  6483. var
  6484. _SetUnhandledExceptionFilter: Pointer;
  6485. function SetUnhandledExceptionFilter;
  6486. begin
  6487. GetProcedureAddress(_SetUnhandledExceptionFilter, kernel32, 'SetUnhandledExceptionFilter');
  6488. asm
  6489. MOV ESP, EBP
  6490. POP EBP
  6491. JMP [_SetUnhandledExceptionFilter]
  6492. end;
  6493. end;
  6494. var
  6495. _CreateFiber: Pointer;
  6496. function CreateFiber;
  6497. begin
  6498. GetProcedureAddress(_CreateFiber, kernel32, 'CreateFiber');
  6499. asm
  6500. MOV ESP, EBP
  6501. POP EBP
  6502. JMP [_CreateFiber]
  6503. end;
  6504. end;
  6505. var
  6506. _CreateFiberEx: Pointer;
  6507. function CreateFiberEx;
  6508. begin
  6509. GetProcedureAddress(_CreateFiberEx, kernel32, 'CreateFiberEx');
  6510. asm
  6511. MOV ESP, EBP
  6512. POP EBP
  6513. JMP [_CreateFiberEx]
  6514. end;
  6515. end;
  6516. var
  6517. _DeleteFiber: Pointer;
  6518. procedure DeleteFiber;
  6519. begin
  6520. GetProcedureAddress(_DeleteFiber, kernel32, 'DeleteFiber');
  6521. asm
  6522. MOV ESP, EBP
  6523. POP EBP
  6524. JMP [_DeleteFiber]
  6525. end;
  6526. end;
  6527. var
  6528. _ConvertThreadToFiber: Pointer;
  6529. function ConvertThreadToFiber;
  6530. begin
  6531. GetProcedureAddress(_ConvertThreadToFiber, kernel32, 'ConvertThreadToFiber');
  6532. asm
  6533. MOV ESP, EBP
  6534. POP EBP
  6535. JMP [_ConvertThreadToFiber]
  6536. end;
  6537. end;
  6538. var
  6539. _ConvertThreadToFiberEx: Pointer;
  6540. function ConvertThreadToFiberEx;
  6541. begin
  6542. GetProcedureAddress(_ConvertThreadToFiberEx, kernel32, 'ConvertThreadToFiberEx');
  6543. asm
  6544. MOV ESP, EBP
  6545. POP EBP
  6546. JMP [_ConvertThreadToFiberEx]
  6547. end;
  6548. end;
  6549. var
  6550. _ConvertFiberToThread: Pointer;
  6551. function ConvertFiberToThread;
  6552. begin
  6553. GetProcedureAddress(_ConvertFiberToThread, kernel32, 'ConvertFiberToThread');
  6554. asm
  6555. MOV ESP, EBP
  6556. POP EBP
  6557. JMP [_ConvertFiberToThread]
  6558. end;
  6559. end;
  6560. var
  6561. _SwitchToFiber: Pointer;
  6562. procedure SwitchToFiber;
  6563. begin
  6564. GetProcedureAddress(_SwitchToFiber, kernel32, 'SwitchToFiber');
  6565. asm
  6566. MOV ESP, EBP
  6567. POP EBP
  6568. JMP [_SwitchToFiber]
  6569. end;
  6570. end;
  6571. var
  6572. _SwitchToThread: Pointer;
  6573. function SwitchToThread;
  6574. begin
  6575. GetProcedureAddress(_SwitchToThread, kernel32, 'SwitchToThread');
  6576. asm
  6577. MOV ESP, EBP
  6578. POP EBP
  6579. JMP [_SwitchToThread]
  6580. end;
  6581. end;
  6582. var
  6583. _CreateThread: Pointer;
  6584. function CreateThread;
  6585. begin
  6586. GetProcedureAddress(_CreateThread, kernel32, 'CreateThread');
  6587. asm
  6588. MOV ESP, EBP
  6589. POP EBP
  6590. JMP [_CreateThread]
  6591. end;
  6592. end;
  6593. var
  6594. _CreateRemoteThread: Pointer;
  6595. function CreateRemoteThread;
  6596. begin
  6597. GetProcedureAddress(_CreateRemoteThread, kernel32, 'CreateRemoteThread');
  6598. asm
  6599. MOV ESP, EBP
  6600. POP EBP
  6601. JMP [_CreateRemoteThread]
  6602. end;
  6603. end;
  6604. var
  6605. _GetCurrentThread: Pointer;
  6606. function GetCurrentThread;
  6607. begin
  6608. GetProcedureAddress(_GetCurrentThread, kernel32, 'GetCurrentThread');
  6609. asm
  6610. MOV ESP, EBP
  6611. POP EBP
  6612. JMP [_GetCurrentThread]
  6613. end;
  6614. end;
  6615. var
  6616. _GetCurrentThreadId: Pointer;
  6617. function GetCurrentThreadId;
  6618. begin
  6619. GetProcedureAddress(_GetCurrentThreadId, kernel32, 'GetCurrentThreadId');
  6620. asm
  6621. MOV ESP, EBP
  6622. POP EBP
  6623. JMP [_GetCurrentThreadId]
  6624. end;
  6625. end;
  6626. var
  6627. _GetProcessIdOfThread: Pointer;
  6628. function GetProcessIdOfThread;
  6629. begin
  6630. GetProcedureAddress(_GetProcessIdOfThread, kernel32, 'GetProcessIdOfThread');
  6631. asm
  6632. MOV ESP, EBP
  6633. POP EBP
  6634. JMP [_GetProcessIdOfThread]
  6635. end;
  6636. end;
  6637. var
  6638. _GetThreadId: Pointer;
  6639. function GetThreadId;
  6640. begin
  6641. GetProcedureAddress(_GetThreadId, kernel32, 'GetThreadId');
  6642. asm
  6643. MOV ESP, EBP
  6644. POP EBP
  6645. JMP [_GetThreadId]
  6646. end;
  6647. end;
  6648. var
  6649. _GetProcessId: Pointer;
  6650. function GetProcessId;
  6651. begin
  6652. GetProcedureAddress(_GetProcessId, kernel32, 'GetProcessId');
  6653. asm
  6654. MOV ESP, EBP
  6655. POP EBP
  6656. JMP [_GetProcessId]
  6657. end;
  6658. end;
  6659. var
  6660. _GetCurrentProcessorNumber: Pointer;
  6661. function GetCurrentProcessorNumber;
  6662. begin
  6663. GetProcedureAddress(_GetCurrentProcessorNumber, kernel32, 'GetCurrentProcessorNumber');
  6664. asm
  6665. MOV ESP, EBP
  6666. POP EBP
  6667. JMP [_GetCurrentProcessorNumber]
  6668. end;
  6669. end;
  6670. var
  6671. _SetThreadAffinityMask: Pointer;
  6672. function SetThreadAffinityMask;
  6673. begin
  6674. GetProcedureAddress(_SetThreadAffinityMask, kernel32, 'SetThreadAffinityMask');
  6675. asm
  6676. MOV ESP, EBP
  6677. POP EBP
  6678. JMP [_SetThreadAffinityMask]
  6679. end;
  6680. end;
  6681. var
  6682. _SetThreadIdealProcessor: Pointer;
  6683. function SetThreadIdealProcessor;
  6684. begin
  6685. GetProcedureAddress(_SetThreadIdealProcessor, kernel32, 'SetThreadIdealProcessor');
  6686. asm
  6687. MOV ESP, EBP
  6688. POP EBP
  6689. JMP [_SetThreadIdealProcessor]
  6690. end;
  6691. end;
  6692. var
  6693. _SetProcessPriorityBoost: Pointer;
  6694. function SetProcessPriorityBoost;
  6695. begin
  6696. GetProcedureAddress(_SetProcessPriorityBoost, kernel32, 'SetProcessPriorityBoost');
  6697. asm
  6698. MOV ESP, EBP
  6699. POP EBP
  6700. JMP [_SetProcessPriorityBoost]
  6701. end;
  6702. end;
  6703. var
  6704. _GetProcessPriorityBoost: Pointer;
  6705. function GetProcessPriorityBoost;
  6706. begin
  6707. GetProcedureAddress(_GetProcessPriorityBoost, kernel32, 'GetProcessPriorityBoost');
  6708. asm
  6709. MOV ESP, EBP
  6710. POP EBP
  6711. JMP [_GetProcessPriorityBoost]
  6712. end;
  6713. end;
  6714. var
  6715. _RequestWakeupLatency: Pointer;
  6716. function RequestWakeupLatency;
  6717. begin
  6718. GetProcedureAddress(_RequestWakeupLatency, kernel32, 'RequestWakeupLatency');
  6719. asm
  6720. MOV ESP, EBP
  6721. POP EBP
  6722. JMP [_RequestWakeupLatency]
  6723. end;
  6724. end;
  6725. var
  6726. _IsSystemResumeAutomatic: Pointer;
  6727. function IsSystemResumeAutomatic;
  6728. begin
  6729. GetProcedureAddress(_IsSystemResumeAutomatic, kernel32, 'IsSystemResumeAutomatic');
  6730. asm
  6731. MOV ESP, EBP
  6732. POP EBP
  6733. JMP [_IsSystemResumeAutomatic]
  6734. end;
  6735. end;
  6736. var
  6737. _OpenThread: Pointer;
  6738. function OpenThread;
  6739. begin
  6740. GetProcedureAddress(_OpenThread, kernel32, 'OpenThread');
  6741. asm
  6742. MOV ESP, EBP
  6743. POP EBP
  6744. JMP [_OpenThread]
  6745. end;
  6746. end;
  6747. var
  6748. _SetThreadPriority: Pointer;
  6749. function SetThreadPriority;
  6750. begin
  6751. GetProcedureAddress(_SetThreadPriority, kernel32, 'SetThreadPriority');
  6752. asm
  6753. MOV ESP, EBP
  6754. POP EBP
  6755. JMP [_SetThreadPriority]
  6756. end;
  6757. end;
  6758. var
  6759. _SetThreadPriorityBoost: Pointer;
  6760. function SetThreadPriorityBoost;
  6761. begin
  6762. GetProcedureAddress(_SetThreadPriorityBoost, kernel32, 'SetThreadPriorityBoost');
  6763. asm
  6764. MOV ESP, EBP
  6765. POP EBP
  6766. JMP [_SetThreadPriorityBoost]
  6767. end;
  6768. end;
  6769. var
  6770. _GetThreadPriorityBoost: Pointer;
  6771. function GetThreadPriorityBoost;
  6772. begin
  6773. GetProcedureAddress(_GetThreadPriorityBoost, kernel32, 'GetThreadPriorityBoost');
  6774. asm
  6775. MOV ESP, EBP
  6776. POP EBP
  6777. JMP [_GetThreadPriorityBoost]
  6778. end;
  6779. end;
  6780. var
  6781. _GetThreadPriority: Pointer;
  6782. function GetThreadPriority;
  6783. begin
  6784. GetProcedureAddress(_GetThreadPriority, kernel32, 'GetThreadPriority');
  6785. asm
  6786. MOV ESP, EBP
  6787. POP EBP
  6788. JMP [_GetThreadPriority]
  6789. end;
  6790. end;
  6791. var
  6792. _GetThreadTimes: Pointer;
  6793. function GetThreadTimes;
  6794. begin
  6795. GetProcedureAddress(_GetThreadTimes, kernel32, 'GetThreadTimes');
  6796. asm
  6797. MOV ESP, EBP
  6798. POP EBP
  6799. JMP [_GetThreadTimes]
  6800. end;
  6801. end;
  6802. var
  6803. _GetThreadIOPendingFlag: Pointer;
  6804. function GetThreadIOPendingFlag;
  6805. begin
  6806. GetProcedureAddress(_GetThreadIOPendingFlag, kernel32, 'GetThreadIOPendingFlag');
  6807. asm
  6808. MOV ESP, EBP
  6809. POP EBP
  6810. JMP [_GetThreadIOPendingFlag]
  6811. end;
  6812. end;
  6813. var
  6814. _ExitThread: Pointer;
  6815. procedure ExitThread;
  6816. begin
  6817. GetProcedureAddress(_ExitThread, kernel32, 'ExitThread');
  6818. asm
  6819. MOV ESP, EBP
  6820. POP EBP
  6821. JMP [_ExitThread]
  6822. end;
  6823. end;
  6824. var
  6825. _TerminateThread: Pointer;
  6826. function TerminateThread;
  6827. begin
  6828. GetProcedureAddress(_TerminateThread, kernel32, 'TerminateThread');
  6829. asm
  6830. MOV ESP, EBP
  6831. POP EBP
  6832. JMP [_TerminateThread]
  6833. end;
  6834. end;
  6835. var
  6836. _GetExitCodeThread: Pointer;
  6837. function GetExitCodeThread;
  6838. begin
  6839. GetProcedureAddress(_GetExitCodeThread, kernel32, 'GetExitCodeThread');
  6840. asm
  6841. MOV ESP, EBP
  6842. POP EBP
  6843. JMP [_GetExitCodeThread]
  6844. end;
  6845. end;
  6846. var
  6847. _GetThreadSelectorEntry: Pointer;
  6848. function GetThreadSelectorEntry;
  6849. begin
  6850. GetProcedureAddress(_GetThreadSelectorEntry, kernel32, 'GetThreadSelectorEntry');
  6851. asm
  6852. MOV ESP, EBP
  6853. POP EBP
  6854. JMP [_GetThreadSelectorEntry]
  6855. end;
  6856. end;
  6857. var
  6858. _SetThreadExecutionState: Pointer;
  6859. function SetThreadExecutionState;
  6860. begin
  6861. GetProcedureAddress(_SetThreadExecutionState, kernel32, 'SetThreadExecutionState');
  6862. asm
  6863. MOV ESP, EBP
  6864. POP EBP
  6865. JMP [_SetThreadExecutionState]
  6866. end;
  6867. end;
  6868. var
  6869. _GetLastError: Pointer;
  6870. function GetLastError;
  6871. begin
  6872. GetProcedureAddress(_GetLastError, kernel32, 'GetLastError');
  6873. asm
  6874. MOV ESP, EBP
  6875. POP EBP
  6876. JMP [_GetLastError]
  6877. end;
  6878. end;
  6879. var
  6880. _SetLastError: Pointer;
  6881. procedure SetLastError;
  6882. begin
  6883. GetProcedureAddress(_SetLastError, kernel32, 'SetLastError');
  6884. asm
  6885. MOV ESP, EBP
  6886. POP EBP
  6887. JMP [_SetLastError]
  6888. end;
  6889. end;
  6890. var
  6891. _RestoreLastError: Pointer;
  6892. procedure RestoreLastError;
  6893. begin
  6894. GetProcedureAddress(_RestoreLastError, kernel32, 'RestoreLastError');
  6895. asm
  6896. MOV ESP, EBP
  6897. POP EBP
  6898. JMP [_RestoreLastError]
  6899. end;
  6900. end;
  6901. var
  6902. _GetOverlappedResult: Pointer;
  6903. function GetOverlappedResult;
  6904. begin
  6905. GetProcedureAddress(_GetOverlappedResult, kernel32, 'GetOverlappedResult');
  6906. asm
  6907. MOV ESP, EBP
  6908. POP EBP
  6909. JMP [_GetOverlappedResult]
  6910. end;
  6911. end;
  6912. var
  6913. _CreateIoCompletionPort: Pointer;
  6914. function CreateIoCompletionPort;
  6915. begin
  6916. GetProcedureAddress(_CreateIoCompletionPort, kernel32, 'CreateIoCompletionPort');
  6917. asm
  6918. MOV ESP, EBP
  6919. POP EBP
  6920. JMP [_CreateIoCompletionPort]
  6921. end;
  6922. end;
  6923. var
  6924. _GetQueuedCompletionStatus: Pointer;
  6925. function GetQueuedCompletionStatus;
  6926. begin
  6927. GetProcedureAddress(_GetQueuedCompletionStatus, kernel32, 'GetQueuedCompletionStatus');
  6928. asm
  6929. MOV ESP, EBP
  6930. POP EBP
  6931. JMP [_GetQueuedCompletionStatus]
  6932. end;
  6933. end;
  6934. var
  6935. _PostQueuedCompletionStatus: Pointer;
  6936. function PostQueuedCompletionStatus;
  6937. begin
  6938. GetProcedureAddress(_PostQueuedCompletionStatus, kernel32, 'PostQueuedCompletionStatus');
  6939. asm
  6940. MOV ESP, EBP
  6941. POP EBP
  6942. JMP [_PostQueuedCompletionStatus]
  6943. end;
  6944. end;
  6945. var
  6946. _SetErrorMode: Pointer;
  6947. function SetErrorMode;
  6948. begin
  6949. GetProcedureAddress(_SetErrorMode, kernel32, 'SetErrorMode');
  6950. asm
  6951. MOV ESP, EBP
  6952. POP EBP
  6953. JMP [_SetErrorMode]
  6954. end;
  6955. end;
  6956. var
  6957. _ReadProcessMemory: Pointer;
  6958. function ReadProcessMemory;
  6959. begin
  6960. GetProcedureAddress(_ReadProcessMemory, kernel32, 'ReadProcessMemory');
  6961. asm
  6962. MOV ESP, EBP
  6963. POP EBP
  6964. JMP [_ReadProcessMemory]
  6965. end;
  6966. end;
  6967. var
  6968. _WriteProcessMemory: Pointer;
  6969. function WriteProcessMemory;
  6970. begin
  6971. GetProcedureAddress(_WriteProcessMemory, kernel32, 'WriteProcessMemory');
  6972. asm
  6973. MOV ESP, EBP
  6974. POP EBP
  6975. JMP [_WriteProcessMemory]
  6976. end;
  6977. end;
  6978. var
  6979. _GetThreadContext: Pointer;
  6980. function GetThreadContext;
  6981. begin
  6982. GetProcedureAddress(_GetThreadContext, kernel32, 'GetThreadContext');
  6983. asm
  6984. MOV ESP, EBP
  6985. POP EBP
  6986. JMP [_GetThreadContext]
  6987. end;
  6988. end;
  6989. var
  6990. _SetThreadContext: Pointer;
  6991. function SetThreadContext;
  6992. begin
  6993. GetProcedureAddress(_SetThreadContext, kernel32, 'SetThreadContext');
  6994. asm
  6995. MOV ESP, EBP
  6996. POP EBP
  6997. JMP [_SetThreadContext]
  6998. end;
  6999. end;
  7000. var
  7001. _SuspendThread: Pointer;
  7002. function SuspendThread;
  7003. begin
  7004. GetProcedureAddress(_SuspendThread, kernel32, 'SuspendThread');
  7005. asm
  7006. MOV ESP, EBP
  7007. POP EBP
  7008. JMP [_SuspendThread]
  7009. end;
  7010. end;
  7011. var
  7012. _ResumeThread: Pointer;
  7013. function ResumeThread;
  7014. begin
  7015. GetProcedureAddress(_ResumeThread, kernel32, 'ResumeThread');
  7016. asm
  7017. MOV ESP, EBP
  7018. POP EBP
  7019. JMP [_ResumeThread]
  7020. end;
  7021. end;
  7022. var
  7023. _QueueUserAPC: Pointer;
  7024. function QueueUserAPC;
  7025. begin
  7026. GetProcedureAddress(_QueueUserAPC, kernel32, 'QueueUserAPC');
  7027. asm
  7028. MOV ESP, EBP
  7029. POP EBP
  7030. JMP [_QueueUserAPC]
  7031. end;
  7032. end;
  7033. var
  7034. _IsDebuggerPresent: Pointer;
  7035. function IsDebuggerPresent;
  7036. begin
  7037. GetProcedureAddress(_IsDebuggerPresent, kernel32, 'IsDebuggerPresent');
  7038. asm
  7039. MOV ESP, EBP
  7040. POP EBP
  7041. JMP [_IsDebuggerPresent]
  7042. end;
  7043. end;
  7044. var
  7045. _CheckRemoteDebuggerPresent: Pointer;
  7046. function CheckRemoteDebuggerPresent;
  7047. begin
  7048. GetProcedureAddress(_CheckRemoteDebuggerPresent, kernel32, 'CheckRemoteDebuggerPresent');
  7049. asm
  7050. MOV ESP, EBP
  7051. POP EBP
  7052. JMP [_CheckRemoteDebuggerPresent]
  7053. end;
  7054. end;
  7055. var
  7056. _DebugBreak: Pointer;
  7057. procedure DebugBreak;
  7058. begin
  7059. GetProcedureAddress(_DebugBreak, kernel32, 'DebugBreak');
  7060. asm
  7061. MOV ESP, EBP
  7062. POP EBP
  7063. JMP [_DebugBreak]
  7064. end;
  7065. end;
  7066. var
  7067. _WaitForDebugEvent: Pointer;
  7068. function WaitForDebugEvent;
  7069. begin
  7070. GetProcedureAddress(_WaitForDebugEvent, kernel32, 'WaitForDebugEvent');
  7071. asm
  7072. MOV ESP, EBP
  7073. POP EBP
  7074. JMP [_WaitForDebugEvent]
  7075. end;
  7076. end;
  7077. var
  7078. _ContinueDebugEvent: Pointer;
  7079. function ContinueDebugEvent;
  7080. begin
  7081. GetProcedureAddress(_ContinueDebugEvent, kernel32, 'ContinueDebugEvent');
  7082. asm
  7083. MOV ESP, EBP
  7084. POP EBP
  7085. JMP [_ContinueDebugEvent]
  7086. end;
  7087. end;
  7088. var
  7089. _DebugActiveProcess: Pointer;
  7090. function DebugActiveProcess;
  7091. begin
  7092. GetProcedureAddress(_DebugActiveProcess, kernel32, 'DebugActiveProcess');
  7093. asm
  7094. MOV ESP, EBP
  7095. POP EBP
  7096. JMP [_DebugActiveProcess]
  7097. end;
  7098. end;
  7099. var
  7100. _DebugActiveProcessStop: Pointer;
  7101. function DebugActiveProcessStop;
  7102. begin
  7103. GetProcedureAddress(_DebugActiveProcessStop, kernel32, 'DebugActiveProcessStop');
  7104. asm
  7105. MOV ESP, EBP
  7106. POP EBP
  7107. JMP [_DebugActiveProcessStop]
  7108. end;
  7109. end;
  7110. var
  7111. _DebugSetProcessKillOnExit: Pointer;
  7112. function DebugSetProcessKillOnExit;
  7113. begin
  7114. GetProcedureAddress(_DebugSetProcessKillOnExit, kernel32, 'DebugSetProcessKillOnExit');
  7115. asm
  7116. MOV ESP, EBP
  7117. POP EBP
  7118. JMP [_DebugSetProcessKillOnExit]
  7119. end;
  7120. end;
  7121. var
  7122. _DebugBreakProcess: Pointer;
  7123. function DebugBreakProcess;
  7124. begin
  7125. GetProcedureAddress(_DebugBreakProcess, kernel32, 'DebugBreakProcess');
  7126. asm
  7127. MOV ESP, EBP
  7128. POP EBP
  7129. JMP [_DebugBreakProcess]
  7130. end;
  7131. end;
  7132. var
  7133. _InitializeCriticalSection: Pointer;
  7134. procedure InitializeCriticalSection;
  7135. begin
  7136. GetProcedureAddress(_InitializeCriticalSection, kernel32, 'InitializeCriticalSection');
  7137. asm
  7138. MOV ESP, EBP
  7139. POP EBP
  7140. JMP [_InitializeCriticalSection]
  7141. end;
  7142. end;
  7143. var
  7144. _EnterCriticalSection: Pointer;
  7145. procedure EnterCriticalSection;
  7146. begin
  7147. GetProcedureAddress(_EnterCriticalSection, kernel32, 'EnterCriticalSection');
  7148. asm
  7149. MOV ESP, EBP
  7150. POP EBP
  7151. JMP [_EnterCriticalSection]
  7152. end;
  7153. end;
  7154. var
  7155. _LeaveCriticalSection: Pointer;
  7156. procedure LeaveCriticalSection;
  7157. begin
  7158. GetProcedureAddress(_LeaveCriticalSection, kernel32, 'LeaveCriticalSection');
  7159. asm
  7160. MOV ESP, EBP
  7161. POP EBP
  7162. JMP [_LeaveCriticalSection]
  7163. end;
  7164. end;
  7165. var
  7166. _InitCritSectAndSpinCount: Pointer;
  7167. function InitializeCriticalSectionAndSpinCount;
  7168. begin
  7169. GetProcedureAddress(_InitCritSectAndSpinCount, kernel32, 'InitializeCriticalSectionAndSpinCount');
  7170. asm
  7171. MOV ESP, EBP
  7172. POP EBP
  7173. JMP [_InitCritSectAndSpinCount]
  7174. end;
  7175. end;
  7176. var
  7177. _SetCriticalSectionSpinCount: Pointer;
  7178. function SetCriticalSectionSpinCount;
  7179. begin
  7180. GetProcedureAddress(_SetCriticalSectionSpinCount, kernel32, 'SetCriticalSectionSpinCount');
  7181. asm
  7182. MOV ESP, EBP
  7183. POP EBP
  7184. JMP [_SetCriticalSectionSpinCount]
  7185. end;
  7186. end;
  7187. var
  7188. _TryEnterCriticalSection: Pointer;
  7189. function TryEnterCriticalSection;
  7190. begin
  7191. GetProcedureAddress(_TryEnterCriticalSection, kernel32, 'TryEnterCriticalSection');
  7192. asm
  7193. MOV ESP, EBP
  7194. POP EBP
  7195. JMP [_TryEnterCriticalSection]
  7196. end;
  7197. end;
  7198. var
  7199. _DeleteCriticalSection: Pointer;
  7200. procedure DeleteCriticalSection;
  7201. begin
  7202. GetProcedureAddress(_DeleteCriticalSection, kernel32, 'DeleteCriticalSection');
  7203. asm
  7204. MOV ESP, EBP
  7205. POP EBP
  7206. JMP [_DeleteCriticalSection]
  7207. end;
  7208. end;
  7209. var
  7210. _SetEvent: Pointer;
  7211. function SetEvent;
  7212. begin
  7213. GetProcedureAddress(_SetEvent, kernel32, 'SetEvent');
  7214. asm
  7215. MOV ESP, EBP
  7216. POP EBP
  7217. JMP [_SetEvent]
  7218. end;
  7219. end;
  7220. var
  7221. _ResetEvent: Pointer;
  7222. function ResetEvent;
  7223. begin
  7224. GetProcedureAddress(_ResetEvent, kernel32, 'ResetEvent');
  7225. asm
  7226. MOV ESP, EBP
  7227. POP EBP
  7228. JMP [_ResetEvent]
  7229. end;
  7230. end;
  7231. var
  7232. _PulseEvent: Pointer;
  7233. function PulseEvent;
  7234. begin
  7235. GetProcedureAddress(_PulseEvent, kernel32, 'PulseEvent');
  7236. asm
  7237. MOV ESP, EBP
  7238. POP EBP
  7239. JMP [_PulseEvent]
  7240. end;
  7241. end;
  7242. var
  7243. _ReleaseSemaphore: Pointer;
  7244. function ReleaseSemaphore;
  7245. begin
  7246. GetProcedureAddress(_ReleaseSemaphore, kernel32, 'ReleaseSemaphore');
  7247. asm
  7248. MOV ESP, EBP
  7249. POP EBP
  7250. JMP [_ReleaseSemaphore]
  7251. end;
  7252. end;
  7253. var
  7254. _ReleaseMutex: Pointer;
  7255. function ReleaseMutex;
  7256. begin
  7257. GetProcedureAddress(_ReleaseMutex, kernel32, 'ReleaseMutex');
  7258. asm
  7259. MOV ESP, EBP
  7260. POP EBP
  7261. JMP [_ReleaseMutex]
  7262. end;
  7263. end;
  7264. var
  7265. _WaitForSingleObject: Pointer;
  7266. function WaitForSingleObject;
  7267. begin
  7268. GetProcedureAddress(_WaitForSingleObject, kernel32, 'WaitForSingleObject');
  7269. asm
  7270. MOV ESP, EBP
  7271. POP EBP
  7272. JMP [_WaitForSingleObject]
  7273. end;
  7274. end;
  7275. var
  7276. _WaitForMultipleObjects: Pointer;
  7277. function WaitForMultipleObjects;
  7278. begin
  7279. GetProcedureAddress(_WaitForMultipleObjects, kernel32, 'WaitForMultipleObjects');
  7280. asm
  7281. MOV ESP, EBP
  7282. POP EBP
  7283. JMP [_WaitForMultipleObjects]
  7284. end;
  7285. end;
  7286. var
  7287. _Sleep: Pointer;
  7288. procedure Sleep;
  7289. begin
  7290. GetProcedureAddress(_Sleep, kernel32, 'Sleep');
  7291. asm
  7292. MOV ESP, EBP
  7293. POP EBP
  7294. JMP [_Sleep]
  7295. end;
  7296. end;
  7297. var
  7298. _LoadResource: Pointer;
  7299. function LoadResource;
  7300. begin
  7301. GetProcedureAddress(_LoadResource, kernel32, 'LoadResource');
  7302. asm
  7303. MOV ESP, EBP
  7304. POP EBP
  7305. JMP [_LoadResource]
  7306. end;
  7307. end;
  7308. var
  7309. _SizeofResource: Pointer;
  7310. function SizeofResource;
  7311. begin
  7312. GetProcedureAddress(_SizeofResource, kernel32, 'SizeofResource');
  7313. asm
  7314. MOV ESP, EBP
  7315. POP EBP
  7316. JMP [_SizeofResource]
  7317. end;
  7318. end;
  7319. var
  7320. _GlobalDeleteAtom: Pointer;
  7321. function GlobalDeleteAtom;
  7322. begin
  7323. GetProcedureAddress(_GlobalDeleteAtom, kernel32, 'GlobalDeleteAtom');
  7324. asm
  7325. MOV ESP, EBP
  7326. POP EBP
  7327. JMP [_GlobalDeleteAtom]
  7328. end;
  7329. end;
  7330. var
  7331. _InitAtomTable: Pointer;
  7332. function InitAtomTable;
  7333. begin
  7334. GetProcedureAddress(_InitAtomTable, kernel32, 'InitAtomTable');
  7335. asm
  7336. MOV ESP, EBP
  7337. POP EBP
  7338. JMP [_InitAtomTable]
  7339. end;
  7340. end;
  7341. var
  7342. _DeleteAtom: Pointer;
  7343. function DeleteAtom;
  7344. begin
  7345. GetProcedureAddress(_DeleteAtom, kernel32, 'DeleteAtom');
  7346. asm
  7347. MOV ESP, EBP
  7348. POP EBP
  7349. JMP [_DeleteAtom]
  7350. end;
  7351. end;
  7352. var
  7353. _SetHandleCount: Pointer;
  7354. function SetHandleCount;
  7355. begin
  7356. GetProcedureAddress(_SetHandleCount, kernel32, 'SetHandleCount');
  7357. asm
  7358. MOV ESP, EBP
  7359. POP EBP
  7360. JMP [_SetHandleCount]
  7361. end;
  7362. end;
  7363. var
  7364. _GetLogicalDrives: Pointer;
  7365. function GetLogicalDrives;
  7366. begin
  7367. GetProcedureAddress(_GetLogicalDrives, kernel32, 'GetLogicalDrives');
  7368. asm
  7369. MOV ESP, EBP
  7370. POP EBP
  7371. JMP [_GetLogicalDrives]
  7372. end;
  7373. end;
  7374. var
  7375. _LockFile: Pointer;
  7376. function LockFile;
  7377. begin
  7378. GetProcedureAddress(_LockFile, kernel32, 'LockFile');
  7379. asm
  7380. MOV ESP, EBP
  7381. POP EBP
  7382. JMP [_LockFile]
  7383. end;
  7384. end;
  7385. var
  7386. _UnlockFile: Pointer;
  7387. function UnlockFile;
  7388. begin
  7389. GetProcedureAddress(_UnlockFile, kernel32, 'UnlockFile');
  7390. asm
  7391. MOV ESP, EBP
  7392. POP EBP
  7393. JMP [_UnlockFile]
  7394. end;
  7395. end;
  7396. var
  7397. _LockFileEx: Pointer;
  7398. function LockFileEx;
  7399. begin
  7400. GetProcedureAddress(_LockFileEx, kernel32, 'LockFileEx');
  7401. asm
  7402. MOV ESP, EBP
  7403. POP EBP
  7404. JMP [_LockFileEx]
  7405. end;
  7406. end;
  7407. var
  7408. _UnlockFileEx: Pointer;
  7409. function UnlockFileEx;
  7410. begin
  7411. GetProcedureAddress(_UnlockFileEx, kernel32, 'UnlockFileEx');
  7412. asm
  7413. MOV ESP, EBP
  7414. POP EBP
  7415. JMP [_UnlockFileEx]
  7416. end;
  7417. end;
  7418. var
  7419. _GetFileInformationByHandle: Pointer;
  7420. function GetFileInformationByHandle;
  7421. begin
  7422. GetProcedureAddress(_GetFileInformationByHandle, kernel32, 'GetFileInformationByHandle');
  7423. asm
  7424. MOV ESP, EBP
  7425. POP EBP
  7426. JMP [_GetFileInformationByHandle]
  7427. end;
  7428. end;
  7429. var
  7430. _GetFileType: Pointer;
  7431. function GetFileType;
  7432. begin
  7433. GetProcedureAddress(_GetFileType, kernel32, 'GetFileType');
  7434. asm
  7435. MOV ESP, EBP
  7436. POP EBP
  7437. JMP [_GetFileType]
  7438. end;
  7439. end;
  7440. var
  7441. _GetFileSize: Pointer;
  7442. function GetFileSize;
  7443. begin
  7444. GetProcedureAddress(_GetFileSize, kernel32, 'GetFileSize');
  7445. asm
  7446. MOV ESP, EBP
  7447. POP EBP
  7448. JMP [_GetFileSize]
  7449. end;
  7450. end;
  7451. var
  7452. _GetFileSizeEx: Pointer;
  7453. function GetFileSizeEx;
  7454. begin
  7455. GetProcedureAddress(_GetFileSizeEx, kernel32, 'GetFileSizeEx');
  7456. asm
  7457. MOV ESP, EBP
  7458. POP EBP
  7459. JMP [_GetFileSizeEx]
  7460. end;
  7461. end;
  7462. var
  7463. _GetStdHandle: Pointer;
  7464. function GetStdHandle;
  7465. begin
  7466. GetProcedureAddress(_GetStdHandle, kernel32, 'GetStdHandle');
  7467. asm
  7468. MOV ESP, EBP
  7469. POP EBP
  7470. JMP [_GetStdHandle]
  7471. end;
  7472. end;
  7473. var
  7474. _SetStdHandle: Pointer;
  7475. function SetStdHandle;
  7476. begin
  7477. GetProcedureAddress(_SetStdHandle, kernel32, 'SetStdHandle');
  7478. asm
  7479. MOV ESP, EBP
  7480. POP EBP
  7481. JMP [_SetStdHandle]
  7482. end;
  7483. end;
  7484. var
  7485. _WriteFile: Pointer;
  7486. function WriteFile;
  7487. begin
  7488. GetProcedureAddress(_WriteFile, kernel32, 'WriteFile');
  7489. asm
  7490. MOV ESP, EBP
  7491. POP EBP
  7492. JMP [_WriteFile]
  7493. end;
  7494. end;
  7495. var
  7496. _ReadFile: Pointer;
  7497. function ReadFile;
  7498. begin
  7499. GetProcedureAddress(_ReadFile, kernel32, 'ReadFile');
  7500. asm
  7501. MOV ESP, EBP
  7502. POP EBP
  7503. JMP [_ReadFile]
  7504. end;
  7505. end;
  7506. var
  7507. _FlushFileBuffers: Pointer;
  7508. function FlushFileBuffers;
  7509. begin
  7510. GetProcedureAddress(_FlushFileBuffers, kernel32, 'FlushFileBuffers');
  7511. asm
  7512. MOV ESP, EBP
  7513. POP EBP
  7514. JMP [_FlushFileBuffers]
  7515. end;
  7516. end;
  7517. var
  7518. _DeviceIoControl: Pointer;
  7519. function DeviceIoControl;
  7520. begin
  7521. GetProcedureAddress(_DeviceIoControl, kernel32, 'DeviceIoControl');
  7522. asm
  7523. MOV ESP, EBP
  7524. POP EBP
  7525. JMP [_DeviceIoControl]
  7526. end;
  7527. end;
  7528. var
  7529. _RequestDeviceWakeup: Pointer;
  7530. function RequestDeviceWakeup;
  7531. begin
  7532. GetProcedureAddress(_RequestDeviceWakeup, kernel32, 'RequestDeviceWakeup');
  7533. asm
  7534. MOV ESP, EBP
  7535. POP EBP
  7536. JMP [_RequestDeviceWakeup]
  7537. end;
  7538. end;
  7539. var
  7540. _CancelDeviceWakeupRequest: Pointer;
  7541. function CancelDeviceWakeupRequest;
  7542. begin
  7543. GetProcedureAddress(_CancelDeviceWakeupRequest, kernel32, 'CancelDeviceWakeupRequest');
  7544. asm
  7545. MOV ESP, EBP
  7546. POP EBP
  7547. JMP [_CancelDeviceWakeupRequest]
  7548. end;
  7549. end;
  7550. var
  7551. _GetDevicePowerState: Pointer;
  7552. function GetDevicePowerState;
  7553. begin
  7554. GetProcedureAddress(_GetDevicePowerState, kernel32, 'GetDevicePowerState');
  7555. asm
  7556. MOV ESP, EBP
  7557. POP EBP
  7558. JMP [_GetDevicePowerState]
  7559. end;
  7560. end;
  7561. var
  7562. _SetMessageWaitingIndicator: Pointer;
  7563. function SetMessageWaitingIndicator;
  7564. begin
  7565. GetProcedureAddress(_SetMessageWaitingIndicator, kernel32, 'SetMessageWaitingIndicator');
  7566. asm
  7567. MOV ESP, EBP
  7568. POP EBP
  7569. JMP [_SetMessageWaitingIndicator]
  7570. end;
  7571. end;
  7572. var
  7573. _SetEndOfFile: Pointer;
  7574. function SetEndOfFile;
  7575. begin
  7576. GetProcedureAddress(_SetEndOfFile, kernel32, 'SetEndOfFile');
  7577. asm
  7578. MOV ESP, EBP
  7579. POP EBP
  7580. JMP [_SetEndOfFile]
  7581. end;
  7582. end;
  7583. var
  7584. _SetFilePointer: Pointer;
  7585. function SetFilePointer;
  7586. begin
  7587. GetProcedureAddress(_SetFilePointer, kernel32, 'SetFilePointer');
  7588. asm
  7589. MOV ESP, EBP
  7590. POP EBP
  7591. JMP [_SetFilePointer]
  7592. end;
  7593. end;
  7594. var
  7595. _SetFilePointerEx: Pointer;
  7596. function SetFilePointerEx;
  7597. begin
  7598. GetProcedureAddress(_SetFilePointerEx, kernel32, 'SetFilePointerEx');
  7599. asm
  7600. MOV ESP, EBP
  7601. POP EBP
  7602. JMP [_SetFilePointerEx]
  7603. end;
  7604. end;
  7605. var
  7606. _FindClose: Pointer;
  7607. function FindClose;
  7608. begin
  7609. GetProcedureAddress(_FindClose, kernel32, 'FindClose');
  7610. asm
  7611. MOV ESP, EBP
  7612. POP EBP
  7613. JMP [_FindClose]
  7614. end;
  7615. end;
  7616. var
  7617. _GetFileTime: Pointer;
  7618. function GetFileTime;
  7619. begin
  7620. GetProcedureAddress(_GetFileTime, kernel32, 'GetFileTime');
  7621. asm
  7622. MOV ESP, EBP
  7623. POP EBP
  7624. JMP [_GetFileTime]
  7625. end;
  7626. end;
  7627. var
  7628. _SetFileTime: Pointer;
  7629. function SetFileTime;
  7630. begin
  7631. GetProcedureAddress(_SetFileTime, kernel32, 'SetFileTime');
  7632. asm
  7633. MOV ESP, EBP
  7634. POP EBP
  7635. JMP [_SetFileTime]
  7636. end;
  7637. end;
  7638. var
  7639. _SetFileValidData: Pointer;
  7640. function SetFileValidData;
  7641. begin
  7642. GetProcedureAddress(_SetFileValidData, kernel32, 'SetFileValidData');
  7643. asm
  7644. MOV ESP, EBP
  7645. POP EBP
  7646. JMP [_SetFileValidData]
  7647. end;
  7648. end;
  7649. var
  7650. _SetFileShortNameA: Pointer;
  7651. function SetFileShortNameA;
  7652. begin
  7653. GetProcedureAddress(_SetFileShortNameA, kernel32, 'SetFileShortNameA');
  7654. asm
  7655. MOV ESP, EBP
  7656. POP EBP
  7657. JMP [_SetFileShortNameA]
  7658. end;
  7659. end;
  7660. var
  7661. _SetFileShortNameW: Pointer;
  7662. function SetFileShortNameW;
  7663. begin
  7664. GetProcedureAddress(_SetFileShortNameW, kernel32, 'SetFileShortNameW');
  7665. asm
  7666. MOV ESP, EBP
  7667. POP EBP
  7668. JMP [_SetFileShortNameW]
  7669. end;
  7670. end;
  7671. var
  7672. _SetFileShortName: Pointer;
  7673. function SetFileShortName;
  7674. begin
  7675. GetProcedureAddress(_SetFileShortName, kernel32, 'SetFileShortName' + AWSuffix);
  7676. asm
  7677. MOV ESP, EBP
  7678. POP EBP
  7679. JMP [_SetFileShortName]
  7680. end;
  7681. end;
  7682. var
  7683. _CloseHandle: Pointer;
  7684. function CloseHandle;
  7685. begin
  7686. GetProcedureAddress(_CloseHandle, kernel32, 'CloseHandle');
  7687. asm
  7688. MOV ESP, EBP
  7689. POP EBP
  7690. JMP [_CloseHandle]
  7691. end;
  7692. end;
  7693. var
  7694. _DuplicateHandle: Pointer;
  7695. function DuplicateHandle;
  7696. begin
  7697. GetProcedureAddress(_DuplicateHandle, kernel32, 'DuplicateHandle');
  7698. asm
  7699. MOV ESP, EBP
  7700. POP EBP
  7701. JMP [_DuplicateHandle]
  7702. end;
  7703. end;
  7704. var
  7705. _GetHandleInformation: Pointer;
  7706. function GetHandleInformation;
  7707. begin
  7708. GetProcedureAddress(_GetHandleInformation, kernel32, 'GetHandleInformation');
  7709. asm
  7710. MOV ESP, EBP
  7711. POP EBP
  7712. JMP [_GetHandleInformation]
  7713. end;
  7714. end;
  7715. var
  7716. _SetHandleInformation: Pointer;
  7717. function SetHandleInformation;
  7718. begin
  7719. GetProcedureAddress(_SetHandleInformation, kernel32, 'SetHandleInformation');
  7720. asm
  7721. MOV ESP, EBP
  7722. POP EBP
  7723. JMP [_SetHandleInformation]
  7724. end;
  7725. end;
  7726. var
  7727. _LoadModule: Pointer;
  7728. function LoadModule;
  7729. begin
  7730. GetProcedureAddress(_LoadModule, kernel32, 'LoadModule');
  7731. asm
  7732. MOV ESP, EBP
  7733. POP EBP
  7734. JMP [_LoadModule]
  7735. end;
  7736. end;
  7737. var
  7738. _WinExec: Pointer;
  7739. function WinExec;
  7740. begin
  7741. GetProcedureAddress(_WinExec, kernel32, 'WinExec');
  7742. asm
  7743. MOV ESP, EBP
  7744. POP EBP
  7745. JMP [_WinExec]
  7746. end;
  7747. end;
  7748. var
  7749. _ClearCommBreak: Pointer;
  7750. function ClearCommBreak;
  7751. begin
  7752. GetProcedureAddress(_ClearCommBreak, kernel32, 'ClearCommBreak');
  7753. asm
  7754. MOV ESP, EBP
  7755. POP EBP
  7756. JMP [_ClearCommBreak]
  7757. end;
  7758. end;
  7759. var
  7760. _ClearCommError: Pointer;
  7761. function ClearCommError;
  7762. begin
  7763. GetProcedureAddress(_ClearCommError, kernel32, 'ClearCommError');
  7764. asm
  7765. MOV ESP, EBP
  7766. POP EBP
  7767. JMP [_ClearCommError]
  7768. end;
  7769. end;
  7770. var
  7771. _SetupComm: Pointer;
  7772. function SetupComm;
  7773. begin
  7774. GetProcedureAddress(_SetupComm, kernel32, 'SetupComm');
  7775. asm
  7776. MOV ESP, EBP
  7777. POP EBP
  7778. JMP [_SetupComm]
  7779. end;
  7780. end;
  7781. var
  7782. _EscapeCommFunction: Pointer;
  7783. function EscapeCommFunction;
  7784. begin
  7785. GetProcedureAddress(_EscapeCommFunction, kernel32, 'EscapeCommFunction');
  7786. asm
  7787. MOV ESP, EBP
  7788. POP EBP
  7789. JMP [_EscapeCommFunction]
  7790. end;
  7791. end;
  7792. var
  7793. _GetCommConfig: Pointer;
  7794. function GetCommConfig;
  7795. begin
  7796. GetProcedureAddress(_GetCommConfig, kernel32, 'GetCommConfig');
  7797. asm
  7798. MOV ESP, EBP
  7799. POP EBP
  7800. JMP [_GetCommConfig]
  7801. end;
  7802. end;
  7803. var
  7804. _GetCommMask: Pointer;
  7805. function GetCommMask;
  7806. begin
  7807. GetProcedureAddress(_GetCommMask, kernel32, 'GetCommMask');
  7808. asm
  7809. MOV ESP, EBP
  7810. POP EBP
  7811. JMP [_GetCommMask]
  7812. end;
  7813. end;
  7814. var
  7815. _GetCommProperties: Pointer;
  7816. function GetCommProperties;
  7817. begin
  7818. GetProcedureAddress(_GetCommProperties, kernel32, 'GetCommProperties');
  7819. asm
  7820. MOV ESP, EBP
  7821. POP EBP
  7822. JMP [_GetCommProperties]
  7823. end;
  7824. end;
  7825. var
  7826. _GetCommModemStatus: Pointer;
  7827. function GetCommModemStatus;
  7828. begin
  7829. GetProcedureAddress(_GetCommModemStatus, kernel32, 'GetCommModemStatus');
  7830. asm
  7831. MOV ESP, EBP
  7832. POP EBP
  7833. JMP [_GetCommModemStatus]
  7834. end;
  7835. end;
  7836. var
  7837. _GetCommState: Pointer;
  7838. function GetCommState;
  7839. begin
  7840. GetProcedureAddress(_GetCommState, kernel32, 'GetCommState');
  7841. asm
  7842. MOV ESP, EBP
  7843. POP EBP
  7844. JMP [_GetCommState]
  7845. end;
  7846. end;
  7847. var
  7848. _GetCommTimeouts: Pointer;
  7849. function GetCommTimeouts;
  7850. begin
  7851. GetProcedureAddress(_GetCommTimeouts, kernel32, 'GetCommTimeouts');
  7852. asm
  7853. MOV ESP, EBP
  7854. POP EBP
  7855. JMP [_GetCommTimeouts]
  7856. end;
  7857. end;
  7858. var
  7859. _PurgeComm: Pointer;
  7860. function PurgeComm;
  7861. begin
  7862. GetProcedureAddress(_PurgeComm, kernel32, 'PurgeComm');
  7863. asm
  7864. MOV ESP, EBP
  7865. POP EBP
  7866. JMP [_PurgeComm]
  7867. end;
  7868. end;
  7869. var
  7870. _SetCommBreak: Pointer;
  7871. function SetCommBreak;
  7872. begin
  7873. GetProcedureAddress(_SetCommBreak, kernel32, 'SetCommBreak');
  7874. asm
  7875. MOV ESP, EBP
  7876. POP EBP
  7877. JMP [_SetCommBreak]
  7878. end;
  7879. end;
  7880. var
  7881. _SetCommConfig: Pointer;
  7882. function SetCommConfig;
  7883. begin
  7884. GetProcedureAddress(_SetCommConfig, kernel32, 'SetCommConfig');
  7885. asm
  7886. MOV ESP, EBP
  7887. POP EBP
  7888. JMP [_SetCommConfig]
  7889. end;
  7890. end;
  7891. var
  7892. _SetCommMask: Pointer;
  7893. function SetCommMask;
  7894. begin
  7895. GetProcedureAddress(_SetCommMask, kernel32, 'SetCommMask');
  7896. asm
  7897. MOV ESP, EBP
  7898. POP EBP
  7899. JMP [_SetCommMask]
  7900. end;
  7901. end;
  7902. var
  7903. _SetCommState: Pointer;
  7904. function SetCommState;
  7905. begin
  7906. GetProcedureAddress(_SetCommState, kernel32, 'SetCommState');
  7907. asm
  7908. MOV ESP, EBP
  7909. POP EBP
  7910. JMP [_SetCommState]
  7911. end;
  7912. end;
  7913. var
  7914. _SetCommTimeouts: Pointer;
  7915. function SetCommTimeouts;
  7916. begin
  7917. GetProcedureAddress(_SetCommTimeouts, kernel32, 'SetCommTimeouts');
  7918. asm
  7919. MOV ESP, EBP
  7920. POP EBP
  7921. JMP [_SetCommTimeouts]
  7922. end;
  7923. end;
  7924. var
  7925. _TransmitCommChar: Pointer;
  7926. function TransmitCommChar;
  7927. begin
  7928. GetProcedureAddress(_TransmitCommChar, kernel32, 'TransmitCommChar');
  7929. asm
  7930. MOV ESP, EBP
  7931. POP EBP
  7932. JMP [_TransmitCommChar]
  7933. end;
  7934. end;
  7935. var
  7936. _WaitCommEvent: Pointer;
  7937. function WaitCommEvent;
  7938. begin
  7939. GetProcedureAddress(_WaitCommEvent, kernel32, 'WaitCommEvent');
  7940. asm
  7941. MOV ESP, EBP
  7942. POP EBP
  7943. JMP [_WaitCommEvent]
  7944. end;
  7945. end;
  7946. var
  7947. _SetTapePosition: Pointer;
  7948. function SetTapePosition;
  7949. begin
  7950. GetProcedureAddress(_SetTapePosition, kernel32, 'SetTapePosition');
  7951. asm
  7952. MOV ESP, EBP
  7953. POP EBP
  7954. JMP [_SetTapePosition]
  7955. end;
  7956. end;
  7957. var
  7958. _GetTapePosition: Pointer;
  7959. function GetTapePosition;
  7960. begin
  7961. GetProcedureAddress(_GetTapePosition, kernel32, 'GetTapePosition');
  7962. asm
  7963. MOV ESP, EBP
  7964. POP EBP
  7965. JMP [_GetTapePosition]
  7966. end;
  7967. end;
  7968. var
  7969. _PrepareTape: Pointer;
  7970. function PrepareTape;
  7971. begin
  7972. GetProcedureAddress(_PrepareTape, kernel32, 'PrepareTape');
  7973. asm
  7974. MOV ESP, EBP
  7975. POP EBP
  7976. JMP [_PrepareTape]
  7977. end;
  7978. end;
  7979. var
  7980. _EraseTape: Pointer;
  7981. function EraseTape;
  7982. begin
  7983. GetProcedureAddress(_EraseTape, kernel32, 'EraseTape');
  7984. asm
  7985. MOV ESP, EBP
  7986. POP EBP
  7987. JMP [_EraseTape]
  7988. end;
  7989. end;
  7990. var
  7991. _CreateTapePartition: Pointer;
  7992. function CreateTapePartition;
  7993. begin
  7994. GetProcedureAddress(_CreateTapePartition, kernel32, 'CreateTapePartition');
  7995. asm
  7996. MOV ESP, EBP
  7997. POP EBP
  7998. JMP [_CreateTapePartition]
  7999. end;
  8000. end;
  8001. var
  8002. _WriteTapemark: Pointer;
  8003. function WriteTapemark;
  8004. begin
  8005. GetProcedureAddress(_WriteTapemark, kernel32, 'WriteTapemark');
  8006. asm
  8007. MOV ESP, EBP
  8008. POP EBP
  8009. JMP [_WriteTapemark]
  8010. end;
  8011. end;
  8012. var
  8013. _GetTapeStatus: Pointer;
  8014. function GetTapeStatus;
  8015. begin
  8016. GetProcedureAddress(_GetTapeStatus, kernel32, 'GetTapeStatus');
  8017. asm
  8018. MOV ESP, EBP
  8019. POP EBP
  8020. JMP [_GetTapeStatus]
  8021. end;
  8022. end;
  8023. var
  8024. _GetTapeParameters: Pointer;
  8025. function GetTapeParameters;
  8026. begin
  8027. GetProcedureAddress(_GetTapeParameters, kernel32, 'GetTapeParameters');
  8028. asm
  8029. MOV ESP, EBP
  8030. POP EBP
  8031. JMP [_GetTapeParameters]
  8032. end;
  8033. end;
  8034. var
  8035. _SetTapeParameters: Pointer;
  8036. function SetTapeParameters;
  8037. begin
  8038. GetProcedureAddress(_SetTapeParameters, kernel32, 'SetTapeParameters');
  8039. asm
  8040. MOV ESP, EBP
  8041. POP EBP
  8042. JMP [_SetTapeParameters]
  8043. end;
  8044. end;
  8045. var
  8046. _Beep: Pointer;
  8047. function Beep;
  8048. begin
  8049. GetProcedureAddress(_Beep, kernel32, 'Beep');
  8050. asm
  8051. MOV ESP, EBP
  8052. POP EBP
  8053. JMP [_Beep]
  8054. end;
  8055. end;
  8056. var
  8057. _MulDiv: Pointer;
  8058. function MulDiv;
  8059. begin
  8060. GetProcedureAddress(_MulDiv, kernel32, 'MulDiv');
  8061. asm
  8062. MOV ESP, EBP
  8063. POP EBP
  8064. JMP [_MulDiv]
  8065. end;
  8066. end;
  8067. var
  8068. _GetSystemTime: Pointer;
  8069. procedure GetSystemTime;
  8070. begin
  8071. GetProcedureAddress(_GetSystemTime, kernel32, 'GetSystemTime');
  8072. asm
  8073. MOV ESP, EBP
  8074. POP EBP
  8075. JMP [_GetSystemTime]
  8076. end;
  8077. end;
  8078. var
  8079. _GetSystemTimeAsFileTime: Pointer;
  8080. procedure GetSystemTimeAsFileTime;
  8081. begin
  8082. GetProcedureAddress(_GetSystemTimeAsFileTime, kernel32, 'GetSystemTimeAsFileTime');
  8083. asm
  8084. MOV ESP, EBP
  8085. POP EBP
  8086. JMP [_GetSystemTimeAsFileTime]
  8087. end;
  8088. end;
  8089. var
  8090. _SetSystemTime: Pointer;
  8091. function SetSystemTime;
  8092. begin
  8093. GetProcedureAddress(_SetSystemTime, kernel32, 'SetSystemTime');
  8094. asm
  8095. MOV ESP, EBP
  8096. POP EBP
  8097. JMP [_SetSystemTime]
  8098. end;
  8099. end;
  8100. var
  8101. _GetLocalTime: Pointer;
  8102. procedure GetLocalTime;
  8103. begin
  8104. GetProcedureAddress(_GetLocalTime, kernel32, 'GetLocalTime');
  8105. asm
  8106. MOV ESP, EBP
  8107. POP EBP
  8108. JMP [_GetLocalTime]
  8109. end;
  8110. end;
  8111. var
  8112. _SetLocalTime: Pointer;
  8113. function SetLocalTime;
  8114. begin
  8115. GetProcedureAddress(_SetLocalTime, kernel32, 'SetLocalTime');
  8116. asm
  8117. MOV ESP, EBP
  8118. POP EBP
  8119. JMP [_SetLocalTime]
  8120. end;
  8121. end;
  8122. var
  8123. _GetSystemInfo: Pointer;
  8124. procedure GetSystemInfo;
  8125. begin
  8126. GetProcedureAddress(_GetSystemInfo, kernel32, 'GetSystemInfo');
  8127. asm
  8128. MOV ESP, EBP
  8129. POP EBP
  8130. JMP [_GetSystemInfo]
  8131. end;
  8132. end;
  8133. var
  8134. _GetSystemRegistryQuota: Pointer;
  8135. function GetSystemRegistryQuota;
  8136. begin
  8137. GetProcedureAddress(_GetSystemRegistryQuota, kernel32, 'GetSystemRegistryQuota');
  8138. asm
  8139. MOV ESP, EBP
  8140. POP EBP
  8141. JMP [_GetSystemRegistryQuota]
  8142. end;
  8143. end;
  8144. var
  8145. _GetSystemTimes: Pointer;
  8146. function GetSystemTimes;
  8147. begin
  8148. GetProcedureAddress(_GetSystemTimes, kernel32, 'GetSystemTimes');
  8149. asm
  8150. MOV ESP, EBP
  8151. POP EBP
  8152. JMP [_GetSystemTimes]
  8153. end;
  8154. end;
  8155. var
  8156. _GetNativeSystemInfo: Pointer;
  8157. procedure GetNativeSystemInfo;
  8158. begin
  8159. GetProcedureAddress(_GetNativeSystemInfo, kernel32, 'GetNativeSystemInfo');
  8160. asm
  8161. MOV ESP, EBP
  8162. POP EBP
  8163. JMP [_GetNativeSystemInfo]
  8164. end;
  8165. end;
  8166. var
  8167. _IsProcessorFeaturePresent: Pointer;
  8168. function IsProcessorFeaturePresent;
  8169. begin
  8170. GetProcedureAddress(_IsProcessorFeaturePresent, kernel32, 'IsProcessorFeaturePresent');
  8171. asm
  8172. MOV ESP, EBP
  8173. POP EBP
  8174. JMP [_IsProcessorFeaturePresent]
  8175. end;
  8176. end;
  8177. var
  8178. _SystemTimeToTzSpecificLocalTime: Pointer;
  8179. function SystemTimeToTzSpecificLocalTime;
  8180. begin
  8181. GetProcedureAddress(_SystemTimeToTzSpecificLocalTime, kernel32, 'SystemTimeToTzSpecificLocalTime');
  8182. asm
  8183. MOV ESP, EBP
  8184. POP EBP
  8185. JMP [_SystemTimeToTzSpecificLocalTime]
  8186. end;
  8187. end;
  8188. var
  8189. _TzSpecificLocalTimeToSystemTime: Pointer;
  8190. function TzSpecificLocalTimeToSystemTime;
  8191. begin
  8192. GetProcedureAddress(_TzSpecificLocalTimeToSystemTime, kernel32, 'TzSpecificLocalTimeToSystemTime');
  8193. asm
  8194. MOV ESP, EBP
  8195. POP EBP
  8196. JMP [_TzSpecificLocalTimeToSystemTime]
  8197. end;
  8198. end;
  8199. var
  8200. _GetTimeZoneInformation: Pointer;
  8201. function GetTimeZoneInformation;
  8202. begin
  8203. GetProcedureAddress(_GetTimeZoneInformation, kernel32, 'GetTimeZoneInformation');
  8204. asm
  8205. MOV ESP, EBP
  8206. POP EBP
  8207. JMP [_GetTimeZoneInformation]
  8208. end;
  8209. end;
  8210. var
  8211. _SetTimeZoneInformation: Pointer;
  8212. function SetTimeZoneInformation;
  8213. begin
  8214. GetProcedureAddress(_SetTimeZoneInformation, kernel32, 'SetTimeZoneInformation');
  8215. asm
  8216. MOV ESP, EBP
  8217. POP EBP
  8218. JMP [_SetTimeZoneInformation]
  8219. end;
  8220. end;
  8221. var
  8222. _SystemTimeToFileTime: Pointer;
  8223. function SystemTimeToFileTime;
  8224. begin
  8225. GetProcedureAddress(_SystemTimeToFileTime, kernel32, 'SystemTimeToFileTime');
  8226. asm
  8227. MOV ESP, EBP
  8228. POP EBP
  8229. JMP [_SystemTimeToFileTime]
  8230. end;
  8231. end;
  8232. var
  8233. _FileTimeToLocalFileTime: Pointer;
  8234. function FileTimeToLocalFileTime;
  8235. begin
  8236. GetProcedureAddress(_FileTimeToLocalFileTime, kernel32, 'FileTimeToLocalFileTime');
  8237. asm
  8238. MOV ESP, EBP
  8239. POP EBP
  8240. JMP [_FileTimeToLocalFileTime]
  8241. end;
  8242. end;
  8243. var
  8244. _LocalFileTimeToFileTime: Pointer;
  8245. function LocalFileTimeToFileTime;
  8246. begin
  8247. GetProcedureAddress(_LocalFileTimeToFileTime, kernel32, 'LocalFileTimeToFileTime');
  8248. asm
  8249. MOV ESP, EBP
  8250. POP EBP
  8251. JMP [_LocalFileTimeToFileTime]
  8252. end;
  8253. end;
  8254. var
  8255. _FileTimeToSystemTime: Pointer;
  8256. function FileTimeToSystemTime;
  8257. begin
  8258. GetProcedureAddress(_FileTimeToSystemTime, kernel32, 'FileTimeToSystemTime');
  8259. asm
  8260. MOV ESP, EBP
  8261. POP EBP
  8262. JMP [_FileTimeToSystemTime]
  8263. end;
  8264. end;
  8265. var
  8266. _CompareFileTime: Pointer;
  8267. function CompareFileTime;
  8268. begin
  8269. GetProcedureAddress(_CompareFileTime, kernel32, 'CompareFileTime');
  8270. asm
  8271. MOV ESP, EBP
  8272. POP EBP
  8273. JMP [_CompareFileTime]
  8274. end;
  8275. end;
  8276. var
  8277. _FileTimeToDosDateTime: Pointer;
  8278. function FileTimeToDosDateTime;
  8279. begin
  8280. GetProcedureAddress(_FileTimeToDosDateTime, kernel32, 'FileTimeToDosDateTime');
  8281. asm
  8282. MOV ESP, EBP
  8283. POP EBP
  8284. JMP [_FileTimeToDosDateTime]
  8285. end;
  8286. end;
  8287. var
  8288. _DosDateTimeToFileTime: Pointer;
  8289. function DosDateTimeToFileTime;
  8290. begin
  8291. GetProcedureAddress(_DosDateTimeToFileTime, kernel32, 'DosDateTimeToFileTime');
  8292. asm
  8293. MOV ESP, EBP
  8294. POP EBP
  8295. JMP [_DosDateTimeToFileTime]
  8296. end;
  8297. end;
  8298. var
  8299. _GetTickCount: Pointer;
  8300. function GetTickCount;
  8301. begin
  8302. GetProcedureAddress(_GetTickCount, kernel32, 'GetTickCount');
  8303. asm
  8304. MOV ESP, EBP
  8305. POP EBP
  8306. JMP [_GetTickCount]
  8307. end;
  8308. end;
  8309. var
  8310. _SetSystemTimeAdjustment: Pointer;
  8311. function SetSystemTimeAdjustment;
  8312. begin
  8313. GetProcedureAddress(_SetSystemTimeAdjustment, kernel32, 'SetSystemTimeAdjustment');
  8314. asm
  8315. MOV ESP, EBP
  8316. POP EBP
  8317. JMP [_SetSystemTimeAdjustment]
  8318. end;
  8319. end;
  8320. var
  8321. _GetSystemTimeAdjustment: Pointer;
  8322. function GetSystemTimeAdjustment;
  8323. begin
  8324. GetProcedureAddress(_GetSystemTimeAdjustment, kernel32, 'GetSystemTimeAdjustment');
  8325. asm
  8326. MOV ESP, EBP
  8327. POP EBP
  8328. JMP [_GetSystemTimeAdjustment]
  8329. end;
  8330. end;
  8331. var
  8332. _FormatMessageA: Pointer;
  8333. function FormatMessageA;
  8334. begin
  8335. GetProcedureAddress(_FormatMessageA, kernel32, 'FormatMessageA');
  8336. asm
  8337. MOV ESP, EBP
  8338. POP EBP
  8339. JMP [_FormatMessageA]
  8340. end;
  8341. end;
  8342. var
  8343. _FormatMessageW: Pointer;
  8344. function FormatMessageW;
  8345. begin
  8346. GetProcedureAddress(_FormatMessageW, kernel32, 'FormatMessageW');
  8347. asm
  8348. MOV ESP, EBP
  8349. POP EBP
  8350. JMP [_FormatMessageW]
  8351. end;
  8352. end;
  8353. var
  8354. _FormatMessage: Pointer;
  8355. function FormatMessage;
  8356. begin
  8357. GetProcedureAddress(_FormatMessage, kernel32, 'FormatMessage' + AWSuffix);
  8358. asm
  8359. MOV ESP, EBP
  8360. POP EBP
  8361. JMP [_FormatMessage]
  8362. end;
  8363. end;
  8364. var
  8365. _CreatePipe: Pointer;
  8366. function CreatePipe;
  8367. begin
  8368. GetProcedureAddress(_CreatePipe, kernel32, 'CreatePipe');
  8369. asm
  8370. MOV ESP, EBP
  8371. POP EBP
  8372. JMP [_CreatePipe]
  8373. end;
  8374. end;
  8375. var
  8376. _ConnectNamedPipe: Pointer;
  8377. function ConnectNamedPipe;
  8378. begin
  8379. GetProcedureAddress(_ConnectNamedPipe, kernel32, 'ConnectNamedPipe');
  8380. asm
  8381. MOV ESP, EBP
  8382. POP EBP
  8383. JMP [_ConnectNamedPipe]
  8384. end;
  8385. end;
  8386. var
  8387. _DisconnectNamedPipe: Pointer;
  8388. function DisconnectNamedPipe;
  8389. begin
  8390. GetProcedureAddress(_DisconnectNamedPipe, kernel32, 'DisconnectNamedPipe');
  8391. asm
  8392. MOV ESP, EBP
  8393. POP EBP
  8394. JMP [_DisconnectNamedPipe]
  8395. end;
  8396. end;
  8397. var
  8398. _SetNamedPipeHandleState: Pointer;
  8399. function SetNamedPipeHandleState;
  8400. begin
  8401. GetProcedureAddress(_SetNamedPipeHandleState, kernel32, 'SetNamedPipeHandleState');
  8402. asm
  8403. MOV ESP, EBP
  8404. POP EBP
  8405. JMP [_SetNamedPipeHandleState]
  8406. end;
  8407. end;
  8408. var
  8409. _GetNamedPipeInfo: Pointer;
  8410. function GetNamedPipeInfo;
  8411. begin
  8412. GetProcedureAddress(_GetNamedPipeInfo, kernel32, 'GetNamedPipeInfo');
  8413. asm
  8414. MOV ESP, EBP
  8415. POP EBP
  8416. JMP [_GetNamedPipeInfo]
  8417. end;
  8418. end;
  8419. var
  8420. _PeekNamedPipe: Pointer;
  8421. function PeekNamedPipe;
  8422. begin
  8423. GetProcedureAddress(_PeekNamedPipe, kernel32, 'PeekNamedPipe');
  8424. asm
  8425. MOV ESP, EBP
  8426. POP EBP
  8427. JMP [_PeekNamedPipe]
  8428. end;
  8429. end;
  8430. var
  8431. _TransactNamedPipe: Pointer;
  8432. function TransactNamedPipe;
  8433. begin
  8434. GetProcedureAddress(_TransactNamedPipe, kernel32, 'TransactNamedPipe');
  8435. asm
  8436. MOV ESP, EBP
  8437. POP EBP
  8438. JMP [_TransactNamedPipe]
  8439. end;
  8440. end;
  8441. var
  8442. _CreateMailslotA: Pointer;
  8443. function CreateMailslotA;
  8444. begin
  8445. GetProcedureAddress(_CreateMailslotA, kernel32, 'CreateMailslotA');
  8446. asm
  8447. MOV ESP, EBP
  8448. POP EBP
  8449. JMP [_CreateMailslotA]
  8450. end;
  8451. end;
  8452. var
  8453. _CreateMailslotW: Pointer;
  8454. function CreateMailslotW;
  8455. begin
  8456. GetProcedureAddress(_CreateMailslotW, kernel32, 'CreateMailslotW');
  8457. asm
  8458. MOV ESP, EBP
  8459. POP EBP
  8460. JMP [_CreateMailslotW]
  8461. end;
  8462. end;
  8463. var
  8464. _CreateMailslot: Pointer;
  8465. function CreateMailslot;
  8466. begin
  8467. GetProcedureAddress(_CreateMailslot, kernel32, 'CreateMailslot' + AWSuffix);
  8468. asm
  8469. MOV ESP, EBP
  8470. POP EBP
  8471. JMP [_CreateMailslot]
  8472. end;
  8473. end;
  8474. var
  8475. _GetMailslotInfo: Pointer;
  8476. function GetMailslotInfo;
  8477. begin
  8478. GetProcedureAddress(_GetMailslotInfo, kernel32, 'GetMailslotInfo');
  8479. asm
  8480. MOV ESP, EBP
  8481. POP EBP
  8482. JMP [_GetMailslotInfo]
  8483. end;
  8484. end;
  8485. var
  8486. _SetMailslotInfo: Pointer;
  8487. function SetMailslotInfo;
  8488. begin
  8489. GetProcedureAddress(_SetMailslotInfo, kernel32, 'SetMailslotInfo');
  8490. asm
  8491. MOV ESP, EBP
  8492. POP EBP
  8493. JMP [_SetMailslotInfo]
  8494. end;
  8495. end;
  8496. var
  8497. _MapViewOfFile: Pointer;
  8498. function MapViewOfFile;
  8499. begin
  8500. GetProcedureAddress(_MapViewOfFile, kernel32, 'MapViewOfFile');
  8501. asm
  8502. MOV ESP, EBP
  8503. POP EBP
  8504. JMP [_MapViewOfFile]
  8505. end;
  8506. end;
  8507. var
  8508. _FlushViewOfFile: Pointer;
  8509. function FlushViewOfFile;
  8510. begin
  8511. GetProcedureAddress(_FlushViewOfFile, kernel32, 'FlushViewOfFile');
  8512. asm
  8513. MOV ESP, EBP
  8514. POP EBP
  8515. JMP [_FlushViewOfFile]
  8516. end;
  8517. end;
  8518. var
  8519. _UnmapViewOfFile: Pointer;
  8520. function UnmapViewOfFile;
  8521. begin
  8522. GetProcedureAddress(_UnmapViewOfFile, kernel32, 'UnmapViewOfFile');
  8523. asm
  8524. MOV ESP, EBP
  8525. POP EBP
  8526. JMP [_UnmapViewOfFile]
  8527. end;
  8528. end;
  8529. var
  8530. _EncryptFileA: Pointer;
  8531. function EncryptFileA;
  8532. begin
  8533. GetProcedureAddress(_EncryptFileA, advapi32, 'EncryptFileA');
  8534. asm
  8535. MOV ESP, EBP
  8536. POP EBP
  8537. JMP [_EncryptFileA]
  8538. end;
  8539. end;
  8540. var
  8541. _EncryptFileW: Pointer;
  8542. function EncryptFileW;
  8543. begin
  8544. GetProcedureAddress(_EncryptFileW, advapi32, 'EncryptFileW');
  8545. asm
  8546. MOV ESP, EBP
  8547. POP EBP
  8548. JMP [_EncryptFileW]
  8549. end;
  8550. end;
  8551. var
  8552. _EncryptFile: Pointer;
  8553. function EncryptFile;
  8554. begin
  8555. GetProcedureAddress(_EncryptFile, advapi32, 'EncryptFile' + AWSuffix);
  8556. asm
  8557. MOV ESP, EBP
  8558. POP EBP
  8559. JMP [_EncryptFile]
  8560. end;
  8561. end;
  8562. var
  8563. _DecryptFileA: Pointer;
  8564. function DecryptFileA;
  8565. begin
  8566. GetProcedureAddress(_DecryptFileA, advapi32, 'DecryptFileA');
  8567. asm
  8568. MOV ESP, EBP
  8569. POP EBP
  8570. JMP [_DecryptFileA]
  8571. end;
  8572. end;
  8573. var
  8574. _DecryptFileW: Pointer;
  8575. function DecryptFileW;
  8576. begin
  8577. GetProcedureAddress(_DecryptFileW, advapi32, 'DecryptFileW');
  8578. asm
  8579. MOV ESP, EBP
  8580. POP EBP
  8581. JMP [_DecryptFileW]
  8582. end;
  8583. end;
  8584. var
  8585. _DecryptFile: Pointer;
  8586. function DecryptFile;
  8587. begin
  8588. GetProcedureAddress(_DecryptFile, advapi32, 'DecryptFile' + AWSuffix);
  8589. asm
  8590. MOV ESP, EBP
  8591. POP EBP
  8592. JMP [_DecryptFile]
  8593. end;
  8594. end;
  8595. var
  8596. _FileEncryptionStatusA: Pointer;
  8597. function FileEncryptionStatusA;
  8598. begin
  8599. GetProcedureAddress(_FileEncryptionStatusA, advapi32, 'FileEncryptionStatusA');
  8600. asm
  8601. MOV ESP, EBP
  8602. POP EBP
  8603. JMP [_FileEncryptionStatusA]
  8604. end;
  8605. end;
  8606. var
  8607. _FileEncryptionStatusW: Pointer;
  8608. function FileEncryptionStatusW;
  8609. begin
  8610. GetProcedureAddress(_FileEncryptionStatusW, advapi32, 'FileEncryptionStatusW');
  8611. asm
  8612. MOV ESP, EBP
  8613. POP EBP
  8614. JMP [_FileEncryptionStatusW]
  8615. end;
  8616. end;
  8617. var
  8618. _FileEncryptionStatus: Pointer;
  8619. function FileEncryptionStatus;
  8620. begin
  8621. GetProcedureAddress(_FileEncryptionStatus, advapi32, 'FileEncryptionStatus' + AWSuffix);
  8622. asm
  8623. MOV ESP, EBP
  8624. POP EBP
  8625. JMP [_FileEncryptionStatus]
  8626. end;
  8627. end;
  8628. var
  8629. _OpenEncryptedFileRawA: Pointer;
  8630. function OpenEncryptedFileRawA;
  8631. begin
  8632. GetProcedureAddress(_OpenEncryptedFileRawA, advapi32, 'OpenEncryptedFileRawA');
  8633. asm
  8634. MOV ESP, EBP
  8635. POP EBP
  8636. JMP [_OpenEncryptedFileRawA]
  8637. end;
  8638. end;
  8639. var
  8640. _OpenEncryptedFileRawW: Pointer;
  8641. function OpenEncryptedFileRawW;
  8642. begin
  8643. GetProcedureAddress(_OpenEncryptedFileRawW, advapi32, 'OpenEncryptedFileRawW');
  8644. asm
  8645. MOV ESP, EBP
  8646. POP EBP
  8647. JMP [_OpenEncryptedFileRawW]
  8648. end;
  8649. end;
  8650. var
  8651. _OpenEncryptedFileRaw: Pointer;
  8652. function OpenEncryptedFileRaw;
  8653. begin
  8654. GetProcedureAddress(_OpenEncryptedFileRaw, advapi32, 'OpenEncryptedFileRaw' + AWSuffix);
  8655. asm
  8656. MOV ESP, EBP
  8657. POP EBP
  8658. JMP [_OpenEncryptedFileRaw]
  8659. end;
  8660. end;
  8661. var
  8662. _ReadEncryptedFileRaw: Pointer;
  8663. function ReadEncryptedFileRaw;
  8664. begin
  8665. GetProcedureAddress(_ReadEncryptedFileRaw, advapi32, 'ReadEncryptedFileRaw');
  8666. asm
  8667. MOV ESP, EBP
  8668. POP EBP
  8669. JMP [_ReadEncryptedFileRaw]
  8670. end;
  8671. end;
  8672. var
  8673. _WriteEncryptedFileRaw: Pointer;
  8674. function WriteEncryptedFileRaw;
  8675. begin
  8676. GetProcedureAddress(_WriteEncryptedFileRaw, advapi32, 'WriteEncryptedFileRaw');
  8677. asm
  8678. MOV ESP, EBP
  8679. POP EBP
  8680. JMP [_WriteEncryptedFileRaw]
  8681. end;
  8682. end;
  8683. var
  8684. _CloseEncryptedFileRaw: Pointer;
  8685. procedure CloseEncryptedFileRaw;
  8686. begin
  8687. GetProcedureAddress(_CloseEncryptedFileRaw, advapi32, 'CloseEncryptedFileRaw');
  8688. asm
  8689. MOV ESP, EBP
  8690. POP EBP
  8691. JMP [_CloseEncryptedFileRaw]
  8692. end;
  8693. end;
  8694. var
  8695. _lstrcmpA: Pointer;
  8696. function lstrcmpA;
  8697. begin
  8698. GetProcedureAddress(_lstrcmpA, kernel32, 'lstrcmpA');
  8699. asm
  8700. MOV ESP, EBP
  8701. POP EBP
  8702. JMP [_lstrcmpA]
  8703. end;
  8704. end;
  8705. var
  8706. _lstrcmpW: Pointer;
  8707. function lstrcmpW;
  8708. begin
  8709. GetProcedureAddress(_lstrcmpW, kernel32, 'lstrcmpW');
  8710. asm
  8711. MOV ESP, EBP
  8712. POP EBP
  8713. JMP [_lstrcmpW]
  8714. end;
  8715. end;
  8716. var
  8717. _lstrcmp: Pointer;
  8718. function lstrcmp;
  8719. begin
  8720. GetProcedureAddress(_lstrcmp, kernel32, 'lstrcmp' + AWSuffix);
  8721. asm
  8722. MOV ESP, EBP
  8723. POP EBP
  8724. JMP [_lstrcmp]
  8725. end;
  8726. end;
  8727. var
  8728. _lstrcmpiA: Pointer;
  8729. function lstrcmpiA;
  8730. begin
  8731. GetProcedureAddress(_lstrcmpiA, kernel32, 'lstrcmpiA');
  8732. asm
  8733. MOV ESP, EBP
  8734. POP EBP
  8735. JMP [_lstrcmpiA]
  8736. end;
  8737. end;
  8738. var
  8739. _lstrcmpiW: Pointer;
  8740. function lstrcmpiW;
  8741. begin
  8742. GetProcedureAddress(_lstrcmpiW, kernel32, 'lstrcmpiW');
  8743. asm
  8744. MOV ESP, EBP
  8745. POP EBP
  8746. JMP [_lstrcmpiW]
  8747. end;
  8748. end;
  8749. var
  8750. _lstrcmpi: Pointer;
  8751. function lstrcmpi;
  8752. begin
  8753. GetProcedureAddress(_lstrcmpi, kernel32, 'lstrcmpi' + AWSuffix);
  8754. asm
  8755. MOV ESP, EBP
  8756. POP EBP
  8757. JMP [_lstrcmpi]
  8758. end;
  8759. end;
  8760. var
  8761. _lstrcpynA: Pointer;
  8762. function lstrcpynA;
  8763. begin
  8764. GetProcedureAddress(_lstrcpynA, kernel32, 'lstrcpynA');
  8765. asm
  8766. MOV ESP, EBP
  8767. POP EBP
  8768. JMP [_lstrcpynA]
  8769. end;
  8770. end;
  8771. var
  8772. _lstrcpynW: Pointer;
  8773. function lstrcpynW;
  8774. begin
  8775. GetProcedureAddress(_lstrcpynW, kernel32, 'lstrcpynW');
  8776. asm
  8777. MOV ESP, EBP
  8778. POP EBP
  8779. JMP [_lstrcpynW]
  8780. end;
  8781. end;
  8782. var
  8783. _lstrcpyn: Pointer;
  8784. function lstrcpyn;
  8785. begin
  8786. GetProcedureAddress(_lstrcpyn, kernel32, 'lstrcpyn' + AWSuffix);
  8787. asm
  8788. MOV ESP, EBP
  8789. POP EBP
  8790. JMP [_lstrcpyn]
  8791. end;
  8792. end;
  8793. var
  8794. _lstrcpyA: Pointer;
  8795. function lstrcpyA;
  8796. begin
  8797. GetProcedureAddress(_lstrcpyA, kernel32, 'lstrcpyA');
  8798. asm
  8799. MOV ESP, EBP
  8800. POP EBP
  8801. JMP [_lstrcpyA]
  8802. end;
  8803. end;
  8804. var
  8805. _lstrcpyW: Pointer;
  8806. function lstrcpyW;
  8807. begin
  8808. GetProcedureAddress(_lstrcpyW, kernel32, 'lstrcpyW');
  8809. asm
  8810. MOV ESP, EBP
  8811. POP EBP
  8812. JMP [_lstrcpyW]
  8813. end;
  8814. end;
  8815. var
  8816. _lstrcpy: Pointer;
  8817. function lstrcpy;
  8818. begin
  8819. GetProcedureAddress(_lstrcpy, kernel32, 'lstrcpy' + AWSuffix);
  8820. asm
  8821. MOV ESP, EBP
  8822. POP EBP
  8823. JMP [_lstrcpy]
  8824. end;
  8825. end;
  8826. var
  8827. _lstrcatA: Pointer;
  8828. function lstrcatA;
  8829. begin
  8830. GetProcedureAddress(_lstrcatA, kernel32, 'lstrcatA');
  8831. asm
  8832. MOV ESP, EBP
  8833. POP EBP
  8834. JMP [_lstrcatA]
  8835. end;
  8836. end;
  8837. var
  8838. _lstrcatW: Pointer;
  8839. function lstrcatW;
  8840. begin
  8841. GetProcedureAddress(_lstrcatW, kernel32, 'lstrcatW');
  8842. asm
  8843. MOV ESP, EBP
  8844. POP EBP
  8845. JMP [_lstrcatW]
  8846. end;
  8847. end;
  8848. var
  8849. _lstrcat: Pointer;
  8850. function lstrcat;
  8851. begin
  8852. GetProcedureAddress(_lstrcat, kernel32, 'lstrcat' + AWSuffix);
  8853. asm
  8854. MOV ESP, EBP
  8855. POP EBP
  8856. JMP [_lstrcat]
  8857. end;
  8858. end;
  8859. var
  8860. _lstrlenA: Pointer;
  8861. function lstrlenA;
  8862. begin
  8863. GetProcedureAddress(_lstrlenA, kernel32, 'lstrlenA');
  8864. asm
  8865. MOV ESP, EBP
  8866. POP EBP
  8867. JMP [_lstrlenA]
  8868. end;
  8869. end;
  8870. var
  8871. _lstrlenW: Pointer;
  8872. function lstrlenW;
  8873. begin
  8874. GetProcedureAddress(_lstrlenW, kernel32, 'lstrlenW');
  8875. asm
  8876. MOV ESP, EBP
  8877. POP EBP
  8878. JMP [_lstrlenW]
  8879. end;
  8880. end;
  8881. var
  8882. _lstrlen: Pointer;
  8883. function lstrlen;
  8884. begin
  8885. GetProcedureAddress(_lstrlen, kernel32, 'lstrlen' + AWSuffix);
  8886. asm
  8887. MOV ESP, EBP
  8888. POP EBP
  8889. JMP [_lstrlen]
  8890. end;
  8891. end;
  8892. var
  8893. _OpenFile: Pointer;
  8894. function OpenFile;
  8895. begin
  8896. GetProcedureAddress(_OpenFile, kernel32, 'OpenFile');
  8897. asm
  8898. MOV ESP, EBP
  8899. POP EBP
  8900. JMP [_OpenFile]
  8901. end;
  8902. end;
  8903. var
  8904. __lopen: Pointer;
  8905. function _lopen;
  8906. begin
  8907. GetProcedureAddress(__lopen, kernel32, '_lopen');
  8908. asm
  8909. MOV ESP, EBP
  8910. POP EBP
  8911. JMP [__lopen]
  8912. end;
  8913. end;
  8914. var
  8915. __lcreat: Pointer;
  8916. function _lcreat;
  8917. begin
  8918. GetProcedureAddress(__lcreat, kernel32, '_lcreat');
  8919. asm
  8920. MOV ESP, EBP
  8921. POP EBP
  8922. JMP [__lcreat]
  8923. end;
  8924. end;
  8925. var
  8926. __lread: Pointer;
  8927. function _lread;
  8928. begin
  8929. GetProcedureAddress(__lread, kernel32, '_lread');
  8930. asm
  8931. MOV ESP, EBP
  8932. POP EBP
  8933. JMP [__lread]
  8934. end;
  8935. end;
  8936. var
  8937. __lwrite: Pointer;
  8938. function _lwrite;
  8939. begin
  8940. GetProcedureAddress(__lwrite, kernel32, '_lwrite');
  8941. asm
  8942. MOV ESP, EBP
  8943. POP EBP
  8944. JMP [__lwrite]
  8945. end;
  8946. end;
  8947. var
  8948. __hread: Pointer;
  8949. function _hread;
  8950. begin
  8951. GetProcedureAddress(__hread, kernel32, '_hread');
  8952. asm
  8953. MOV ESP, EBP
  8954. POP EBP
  8955. JMP [__hread]
  8956. end;
  8957. end;
  8958. var
  8959. __hwrite: Pointer;
  8960. function _hwrite;
  8961. begin
  8962. GetProcedureAddress(__hwrite, kernel32, '_hwrite');
  8963. asm
  8964. MOV ESP, EBP
  8965. POP EBP
  8966. JMP [__hwrite]
  8967. end;
  8968. end;
  8969. var
  8970. __lclose: Pointer;
  8971. function _lclose;
  8972. begin
  8973. GetProcedureAddress(__lclose, kernel32, '_lclose');
  8974. asm
  8975. MOV ESP, EBP
  8976. POP EBP
  8977. JMP [__lclose]
  8978. end;
  8979. end;
  8980. var
  8981. __llseek: Pointer;
  8982. function _llseek;
  8983. begin
  8984. GetProcedureAddress(__llseek, kernel32, '_llseek');
  8985. asm
  8986. MOV ESP, EBP
  8987. POP EBP
  8988. JMP [__llseek]
  8989. end;
  8990. end;
  8991. var
  8992. _IsTextUnicode: Pointer;
  8993. function IsTextUnicode;
  8994. begin
  8995. GetProcedureAddress(_IsTextUnicode, advapi32, 'IsTextUnicode');
  8996. asm
  8997. MOV ESP, EBP
  8998. POP EBP
  8999. JMP [_IsTextUnicode]
  9000. end;
  9001. end;
  9002. var
  9003. _FlsAlloc: Pointer;
  9004. function FlsAlloc;
  9005. begin
  9006. GetProcedureAddress(_FlsAlloc, kernel32, 'FlsAlloc');
  9007. asm
  9008. MOV ESP, EBP
  9009. POP EBP
  9010. JMP [_FlsAlloc]
  9011. end;
  9012. end;
  9013. var
  9014. _FlsGetValue: Pointer;
  9015. function FlsGetValue;
  9016. begin
  9017. GetProcedureAddress(_FlsGetValue, kernel32, 'FlsGetValue');
  9018. asm
  9019. MOV ESP, EBP
  9020. POP EBP
  9021. JMP [_FlsGetValue]
  9022. end;
  9023. end;
  9024. var
  9025. _FlsSetValue: Pointer;
  9026. function FlsSetValue;
  9027. begin
  9028. GetProcedureAddress(_FlsSetValue, kernel32, 'FlsSetValue');
  9029. asm
  9030. MOV ESP, EBP
  9031. POP EBP
  9032. JMP [_FlsSetValue]
  9033. end;
  9034. end;
  9035. var
  9036. _FlsFree: Pointer;
  9037. function FlsFree;
  9038. begin
  9039. GetProcedureAddress(_FlsFree, kernel32, 'FlsFree');
  9040. asm
  9041. MOV ESP, EBP
  9042. POP EBP
  9043. JMP [_FlsFree]
  9044. end;
  9045. end;
  9046. var
  9047. _TlsAlloc: Pointer;
  9048. function TlsAlloc;
  9049. begin
  9050. GetProcedureAddress(_TlsAlloc, kernel32, 'TlsAlloc');
  9051. asm
  9052. MOV ESP, EBP
  9053. POP EBP
  9054. JMP [_TlsAlloc]
  9055. end;
  9056. end;
  9057. var
  9058. _TlsGetValue: Pointer;
  9059. function TlsGetValue;
  9060. begin
  9061. GetProcedureAddress(_TlsGetValue, kernel32, 'TlsGetValue');
  9062. asm
  9063. MOV ESP, EBP
  9064. POP EBP
  9065. JMP [_TlsGetValue]
  9066. end;
  9067. end;
  9068. var
  9069. _TlsSetValue: Pointer;
  9070. function TlsSetValue;
  9071. begin
  9072. GetProcedureAddress(_TlsSetValue, kernel32, 'TlsSetValue');
  9073. asm
  9074. MOV ESP, EBP
  9075. POP EBP
  9076. JMP [_TlsSetValue]
  9077. end;
  9078. end;
  9079. var
  9080. _TlsFree: Pointer;
  9081. function TlsFree;
  9082. begin
  9083. GetProcedureAddress(_TlsFree, kernel32, 'TlsFree');
  9084. asm
  9085. MOV ESP, EBP
  9086. POP EBP
  9087. JMP [_TlsFree]
  9088. end;
  9089. end;
  9090. var
  9091. _SleepEx: Pointer;
  9092. function SleepEx;
  9093. begin
  9094. GetProcedureAddress(_SleepEx, kernel32, 'SleepEx');
  9095. asm
  9096. MOV ESP, EBP
  9097. POP EBP
  9098. JMP [_SleepEx]
  9099. end;
  9100. end;
  9101. var
  9102. _WaitForSingleObjectEx: Pointer;
  9103. function WaitForSingleObjectEx;
  9104. begin
  9105. GetProcedureAddress(_WaitForSingleObjectEx, kernel32, 'WaitForSingleObjectEx');
  9106. asm
  9107. MOV ESP, EBP
  9108. POP EBP
  9109. JMP [_WaitForSingleObjectEx]
  9110. end;
  9111. end;
  9112. var
  9113. _WaitForMultipleObjectsEx: Pointer;
  9114. function WaitForMultipleObjectsEx;
  9115. begin
  9116. GetProcedureAddress(_WaitForMultipleObjectsEx, kernel32, 'WaitForMultipleObjectsEx');
  9117. asm
  9118. MOV ESP, EBP
  9119. POP EBP
  9120. JMP [_WaitForMultipleObjectsEx]
  9121. end;
  9122. end;
  9123. var
  9124. _SignalObjectAndWait: Pointer;
  9125. function SignalObjectAndWait;
  9126. begin
  9127. GetProcedureAddress(_SignalObjectAndWait, kernel32, 'SignalObjectAndWait');
  9128. asm
  9129. MOV ESP, EBP
  9130. POP EBP
  9131. JMP [_SignalObjectAndWait]
  9132. end;
  9133. end;
  9134. var
  9135. _ReadFileEx: Pointer;
  9136. function ReadFileEx;
  9137. begin
  9138. GetProcedureAddress(_ReadFileEx, kernel32, 'ReadFileEx');
  9139. asm
  9140. MOV ESP, EBP
  9141. POP EBP
  9142. JMP [_ReadFileEx]
  9143. end;
  9144. end;
  9145. var
  9146. _WriteFileEx: Pointer;
  9147. function WriteFileEx;
  9148. begin
  9149. GetProcedureAddress(_WriteFileEx, kernel32, 'WriteFileEx');
  9150. asm
  9151. MOV ESP, EBP
  9152. POP EBP
  9153. JMP [_WriteFileEx]
  9154. end;
  9155. end;
  9156. var
  9157. _BackupRead: Pointer;
  9158. function BackupRead;
  9159. begin
  9160. GetProcedureAddress(_BackupRead, kernel32, 'BackupRead');
  9161. asm
  9162. MOV ESP, EBP
  9163. POP EBP
  9164. JMP [_BackupRead]
  9165. end;
  9166. end;
  9167. var
  9168. _BackupSeek: Pointer;
  9169. function BackupSeek;
  9170. begin
  9171. GetProcedureAddress(_BackupSeek, kernel32, 'BackupSeek');
  9172. asm
  9173. MOV ESP, EBP
  9174. POP EBP
  9175. JMP [_BackupSeek]
  9176. end;
  9177. end;
  9178. var
  9179. _BackupWrite: Pointer;
  9180. function BackupWrite;
  9181. begin
  9182. GetProcedureAddress(_BackupWrite, kernel32, 'BackupWrite');
  9183. asm
  9184. MOV ESP, EBP
  9185. POP EBP
  9186. JMP [_BackupWrite]
  9187. end;
  9188. end;
  9189. var
  9190. _ReadFileScatter: Pointer;
  9191. function ReadFileScatter;
  9192. begin
  9193. GetProcedureAddress(_ReadFileScatter, kernel32, 'ReadFileScatter');
  9194. asm
  9195. MOV ESP, EBP
  9196. POP EBP
  9197. JMP [_ReadFileScatter]
  9198. end;
  9199. end;
  9200. var
  9201. _WriteFileGather: Pointer;
  9202. function WriteFileGather;
  9203. begin
  9204. GetProcedureAddress(_WriteFileGather, kernel32, 'WriteFileGather');
  9205. asm
  9206. MOV ESP, EBP
  9207. POP EBP
  9208. JMP [_WriteFileGather]
  9209. end;
  9210. end;
  9211. var
  9212. _OpenMutexA: Pointer;
  9213. function OpenMutexA;
  9214. begin
  9215. GetProcedureAddress(_OpenMutexA, kernel32, 'OpenMutexA');
  9216. asm
  9217. MOV ESP, EBP
  9218. POP EBP
  9219. JMP [_OpenMutexA]
  9220. end;
  9221. end;
  9222. var
  9223. _OpenMutexW: Pointer;
  9224. function OpenMutexW;
  9225. begin
  9226. GetProcedureAddress(_OpenMutexW, kernel32, 'OpenMutexW');
  9227. asm
  9228. MOV ESP, EBP
  9229. POP EBP
  9230. JMP [_OpenMutexW]
  9231. end;
  9232. end;
  9233. var
  9234. _OpenMutex: Pointer;
  9235. function OpenMutex;
  9236. begin
  9237. GetProcedureAddress(_OpenMutex, kernel32, 'OpenMutex' + AWSuffix);
  9238. asm
  9239. MOV ESP, EBP
  9240. POP EBP
  9241. JMP [_OpenMutex]
  9242. end;
  9243. end;
  9244. var
  9245. _CreateEventA: Pointer;
  9246. function CreateEventA;
  9247. begin
  9248. GetProcedureAddress(_CreateEventA, kernel32, 'CreateEventA');
  9249. asm
  9250. MOV ESP, EBP
  9251. POP EBP
  9252. JMP [_CreateEventA]
  9253. end;
  9254. end;
  9255. var
  9256. _CreateEventW: Pointer;
  9257. function CreateEventW;
  9258. begin
  9259. GetProcedureAddress(_CreateEventW, kernel32, 'CreateEventW');
  9260. asm
  9261. MOV ESP, EBP
  9262. POP EBP
  9263. JMP [_CreateEventW]
  9264. end;
  9265. end;
  9266. var
  9267. _CreateEvent: Pointer;
  9268. function CreateEvent;
  9269. begin
  9270. GetProcedureAddress(_CreateEvent, kernel32, 'CreateEvent' + AWSuffix);
  9271. asm
  9272. MOV ESP, EBP
  9273. POP EBP
  9274. JMP [_CreateEvent]
  9275. end;
  9276. end;
  9277. var
  9278. _OpenEventA: Pointer;
  9279. function OpenEventA;
  9280. begin
  9281. GetProcedureAddress(_OpenEventA, kernel32, 'OpenEventA');
  9282. asm
  9283. MOV ESP, EBP
  9284. POP EBP
  9285. JMP [_OpenEventA]
  9286. end;
  9287. end;
  9288. var
  9289. _OpenEventW: Pointer;
  9290. function OpenEventW;
  9291. begin
  9292. GetProcedureAddress(_OpenEventW, kernel32, 'OpenEventW');
  9293. asm
  9294. MOV ESP, EBP
  9295. POP EBP
  9296. JMP [_OpenEventW]
  9297. end;
  9298. end;
  9299. var
  9300. _OpenEvent: Pointer;
  9301. function OpenEvent;
  9302. begin
  9303. GetProcedureAddress(_OpenEvent, kernel32, 'OpenEvent' + AWSuffix);
  9304. asm
  9305. MOV ESP, EBP
  9306. POP EBP
  9307. JMP [_OpenEvent]
  9308. end;
  9309. end;
  9310. var
  9311. _CreateSemaphoreA: Pointer;
  9312. function CreateSemaphoreA;
  9313. begin
  9314. GetProcedureAddress(_CreateSemaphoreA, kernel32, 'CreateSemaphoreA');
  9315. asm
  9316. MOV ESP, EBP
  9317. POP EBP
  9318. JMP [_CreateSemaphoreA]
  9319. end;
  9320. end;
  9321. var
  9322. _CreateSemaphoreW: Pointer;
  9323. function CreateSemaphoreW;
  9324. begin
  9325. GetProcedureAddress(_CreateSemaphoreW, kernel32, 'CreateSemaphoreW');
  9326. asm
  9327. MOV ESP, EBP
  9328. POP EBP
  9329. JMP [_CreateSemaphoreW]
  9330. end;
  9331. end;
  9332. var
  9333. _CreateSemaphore: Pointer;
  9334. function CreateSemaphore;
  9335. begin
  9336. GetProcedureAddress(_CreateSemaphore, kernel32, 'CreateSemaphore' + AWSuffix);
  9337. asm
  9338. MOV ESP, EBP
  9339. POP EBP
  9340. JMP [_CreateSemaphore]
  9341. end;
  9342. end;
  9343. var
  9344. _OpenSemaphoreA: Pointer;
  9345. function OpenSemaphoreA;
  9346. begin
  9347. GetProcedureAddress(_OpenSemaphoreA, kernel32, 'OpenSemaphoreA');
  9348. asm
  9349. MOV ESP, EBP
  9350. POP EBP
  9351. JMP [_OpenSemaphoreA]
  9352. end;
  9353. end;
  9354. var
  9355. _OpenSemaphoreW: Pointer;
  9356. function OpenSemaphoreW;
  9357. begin
  9358. GetProcedureAddress(_OpenSemaphoreW, kernel32, 'OpenSemaphoreW');
  9359. asm
  9360. MOV ESP, EBP
  9361. POP EBP
  9362. JMP [_OpenSemaphoreW]
  9363. end;
  9364. end;
  9365. var
  9366. _OpenSemaphore: Pointer;
  9367. function OpenSemaphore;
  9368. begin
  9369. GetProcedureAddress(_OpenSemaphore, kernel32, 'OpenSemaphore' + AWSuffix);
  9370. asm
  9371. MOV ESP, EBP
  9372. POP EBP
  9373. JMP [_OpenSemaphore]
  9374. end;
  9375. end;
  9376. var
  9377. _CreateWaitableTimerA: Pointer;
  9378. function CreateWaitableTimerA;
  9379. begin
  9380. GetProcedureAddress(_CreateWaitableTimerA, kernel32, 'CreateWaitableTimerA');
  9381. asm
  9382. MOV ESP, EBP
  9383. POP EBP
  9384. JMP [_CreateWaitableTimerA]
  9385. end;
  9386. end;
  9387. var
  9388. _CreateWaitableTimerW: Pointer;
  9389. function CreateWaitableTimerW;
  9390. begin
  9391. GetProcedureAddress(_CreateWaitableTimerW, kernel32, 'CreateWaitableTimerW');
  9392. asm
  9393. MOV ESP, EBP
  9394. POP EBP
  9395. JMP [_CreateWaitableTimerW]
  9396. end;
  9397. end;
  9398. var
  9399. _CreateWaitableTimer: Pointer;
  9400. function CreateWaitableTimer;
  9401. begin
  9402. GetProcedureAddress(_CreateWaitableTimer, kernel32, 'CreateWaitableTimer' + AWSuffix);
  9403. asm
  9404. MOV ESP, EBP
  9405. POP EBP
  9406. JMP [_CreateWaitableTimer]
  9407. end;
  9408. end;
  9409. var
  9410. _OpenWaitableTimerA: Pointer;
  9411. function OpenWaitableTimerA;
  9412. begin
  9413. GetProcedureAddress(_OpenWaitableTimerA, kernel32, 'OpenWaitableTimerA');
  9414. asm
  9415. MOV ESP, EBP
  9416. POP EBP
  9417. JMP [_OpenWaitableTimerA]
  9418. end;
  9419. end;
  9420. var
  9421. _OpenWaitableTimerW: Pointer;
  9422. function OpenWaitableTimerW;
  9423. begin
  9424. GetProcedureAddress(_OpenWaitableTimerW, kernel32, 'OpenWaitableTimerW');
  9425. asm
  9426. MOV ESP, EBP
  9427. POP EBP
  9428. JMP [_OpenWaitableTimerW]
  9429. end;
  9430. end;
  9431. var
  9432. _OpenWaitableTimer: Pointer;
  9433. function OpenWaitableTimer;
  9434. begin
  9435. GetProcedureAddress(_OpenWaitableTimer, kernel32, 'OpenWaitableTimer' + AWSuffix);
  9436. asm
  9437. MOV ESP, EBP
  9438. POP EBP
  9439. JMP [_OpenWaitableTimer]
  9440. end;
  9441. end;
  9442. var
  9443. _SetWaitableTimer: Pointer;
  9444. function SetWaitableTimer;
  9445. begin
  9446. GetProcedureAddress(_SetWaitableTimer, kernel32, 'SetWaitableTimer');
  9447. asm
  9448. MOV ESP, EBP
  9449. POP EBP
  9450. JMP [_SetWaitableTimer]
  9451. end;
  9452. end;
  9453. var
  9454. _CancelWaitableTimer: Pointer;
  9455. function CancelWaitableTimer;
  9456. begin
  9457. GetProcedureAddress(_CancelWaitableTimer, kernel32, 'CancelWaitableTimer');
  9458. asm
  9459. MOV ESP, EBP
  9460. POP EBP
  9461. JMP [_CancelWaitableTimer]
  9462. end;
  9463. end;
  9464. var
  9465. _CreateFileMappingA: Pointer;
  9466. function CreateFileMappingA;
  9467. begin
  9468. GetProcedureAddress(_CreateFileMappingA, kernel32, 'CreateFileMappingA');
  9469. asm
  9470. MOV ESP, EBP
  9471. POP EBP
  9472. JMP [_CreateFileMappingA]
  9473. end;
  9474. end;
  9475. var
  9476. _CreateFileMappingW: Pointer;
  9477. function CreateFileMappingW;
  9478. begin
  9479. GetProcedureAddress(_CreateFileMappingW, kernel32, 'CreateFileMappingW');
  9480. asm
  9481. MOV ESP, EBP
  9482. POP EBP
  9483. JMP [_CreateFileMappingW]
  9484. end;
  9485. end;
  9486. var
  9487. _CreateFileMapping: Pointer;
  9488. function CreateFileMapping;
  9489. begin
  9490. GetProcedureAddress(_CreateFileMapping, kernel32, 'CreateFileMapping' + AWSuffix);
  9491. asm
  9492. MOV ESP, EBP
  9493. POP EBP
  9494. JMP [_CreateFileMapping]
  9495. end;
  9496. end;
  9497. var
  9498. _OpenFileMappingA: Pointer;
  9499. function OpenFileMappingA;
  9500. begin
  9501. GetProcedureAddress(_OpenFileMappingA, kernel32, 'OpenFileMappingA');
  9502. asm
  9503. MOV ESP, EBP
  9504. POP EBP
  9505. JMP [_OpenFileMappingA]
  9506. end;
  9507. end;
  9508. var
  9509. _OpenFileMappingW: Pointer;
  9510. function OpenFileMappingW;
  9511. begin
  9512. GetProcedureAddress(_OpenFileMappingW, kernel32, 'OpenFileMappingW');
  9513. asm
  9514. MOV ESP, EBP
  9515. POP EBP
  9516. JMP [_OpenFileMappingW]
  9517. end;
  9518. end;
  9519. var
  9520. _OpenFileMapping: Pointer;
  9521. function OpenFileMapping;
  9522. begin
  9523. GetProcedureAddress(_OpenFileMapping, kernel32, 'OpenFileMapping' + AWSuffix);
  9524. asm
  9525. MOV ESP, EBP
  9526. POP EBP
  9527. JMP [_OpenFileMapping]
  9528. end;
  9529. end;
  9530. var
  9531. _GetLogicalDriveStringsA: Pointer;
  9532. function GetLogicalDriveStringsA;
  9533. begin
  9534. GetProcedureAddress(_GetLogicalDriveStringsA, kernel32, 'GetLogicalDriveStringsA');
  9535. asm
  9536. MOV ESP, EBP
  9537. POP EBP
  9538. JMP [_GetLogicalDriveStringsA]
  9539. end;
  9540. end;
  9541. var
  9542. _GetLogicalDriveStringsW: Pointer;
  9543. function GetLogicalDriveStringsW;
  9544. begin
  9545. GetProcedureAddress(_GetLogicalDriveStringsW, kernel32, 'GetLogicalDriveStringsW');
  9546. asm
  9547. MOV ESP, EBP
  9548. POP EBP
  9549. JMP [_GetLogicalDriveStringsW]
  9550. end;
  9551. end;
  9552. var
  9553. _GetLogicalDriveStrings: Pointer;
  9554. function GetLogicalDriveStrings;
  9555. begin
  9556. GetProcedureAddress(_GetLogicalDriveStrings, kernel32, 'GetLogicalDriveStrings' + AWSuffix);
  9557. asm
  9558. MOV ESP, EBP
  9559. POP EBP
  9560. JMP [_GetLogicalDriveStrings]
  9561. end;
  9562. end;
  9563. var
  9564. _CreateMemResNotification: Pointer;
  9565. function CreateMemoryResourceNotification;
  9566. begin
  9567. GetProcedureAddress(_CreateMemResNotification, kernel32, 'CreateMemoryResourceNotification');
  9568. asm
  9569. MOV ESP, EBP
  9570. POP EBP
  9571. JMP [_CreateMemResNotification]
  9572. end;
  9573. end;
  9574. var
  9575. _QueryMemoryResourceNotification: Pointer;
  9576. function QueryMemoryResourceNotification;
  9577. begin
  9578. GetProcedureAddress(_QueryMemoryResourceNotification, kernel32, 'QueryMemoryResourceNotification');
  9579. asm
  9580. MOV ESP, EBP
  9581. POP EBP
  9582. JMP [_QueryMemoryResourceNotification]
  9583. end;
  9584. end;
  9585. var
  9586. _LoadLibraryA: Pointer;
  9587. function LoadLibraryA;
  9588. begin
  9589. GetProcedureAddress(_LoadLibraryA, kernel32, 'LoadLibraryA');
  9590. asm
  9591. MOV ESP, EBP
  9592. POP EBP
  9593. JMP [_LoadLibraryA]
  9594. end;
  9595. end;
  9596. var
  9597. _LoadLibraryW: Pointer;
  9598. function LoadLibraryW;
  9599. begin
  9600. GetProcedureAddress(_LoadLibraryW, kernel32, 'LoadLibraryW');
  9601. asm
  9602. MOV ESP, EBP
  9603. POP EBP
  9604. JMP [_LoadLibraryW]
  9605. end;
  9606. end;
  9607. var
  9608. _LoadLibrary: Pointer;
  9609. function LoadLibrary;
  9610. begin
  9611. GetProcedureAddress(_LoadLibrary, kernel32, 'LoadLibrary' + AWSuffix);
  9612. asm
  9613. MOV ESP, EBP
  9614. POP EBP
  9615. JMP [_LoadLibrary]
  9616. end;
  9617. end;
  9618. var
  9619. _LoadLibraryExA: Pointer;
  9620. function LoadLibraryExA;
  9621. begin
  9622. GetProcedureAddress(_LoadLibraryExA, kernel32, 'LoadLibraryExA');
  9623. asm
  9624. MOV ESP, EBP
  9625. POP EBP
  9626. JMP [_LoadLibraryExA]
  9627. end;
  9628. end;
  9629. var
  9630. _LoadLibraryExW: Pointer;
  9631. function LoadLibraryExW;
  9632. begin
  9633. GetProcedureAddress(_LoadLibraryExW, kernel32, 'LoadLibraryExW');
  9634. asm
  9635. MOV ESP, EBP
  9636. POP EBP
  9637. JMP [_LoadLibraryExW]
  9638. end;
  9639. end;
  9640. var
  9641. _LoadLibraryEx: Pointer;
  9642. function LoadLibraryEx;
  9643. begin
  9644. GetProcedureAddress(_LoadLibraryEx, kernel32, 'LoadLibraryEx' + AWSuffix);
  9645. asm
  9646. MOV ESP, EBP
  9647. POP EBP
  9648. JMP [_LoadLibraryEx]
  9649. end;
  9650. end;
  9651. var
  9652. _GetModuleFileNameA: Pointer;
  9653. function GetModuleFileNameA;
  9654. begin
  9655. GetProcedureAddress(_GetModuleFileNameA, kernel32, 'GetModuleFileNameA');
  9656. asm
  9657. MOV ESP, EBP
  9658. POP EBP
  9659. JMP [_GetModuleFileNameA]
  9660. end;
  9661. end;
  9662. var
  9663. _GetModuleFileNameW: Pointer;
  9664. function GetModuleFileNameW;
  9665. begin
  9666. GetProcedureAddress(_GetModuleFileNameW, kernel32, 'GetModuleFileNameW');
  9667. asm
  9668. MOV ESP, EBP
  9669. POP EBP
  9670. JMP [_GetModuleFileNameW]
  9671. end;
  9672. end;
  9673. var
  9674. _GetModuleFileName: Pointer;
  9675. function GetModuleFileName;
  9676. begin
  9677. GetProcedureAddress(_GetModuleFileName, kernel32, 'GetModuleFileName' + AWSuffix);
  9678. asm
  9679. MOV ESP, EBP
  9680. POP EBP
  9681. JMP [_GetModuleFileName]
  9682. end;
  9683. end;
  9684. var
  9685. _GetModuleHandleA: Pointer;
  9686. function GetModuleHandleA;
  9687. begin
  9688. GetProcedureAddress(_GetModuleHandleA, kernel32, 'GetModuleHandleA');
  9689. asm
  9690. MOV ESP, EBP
  9691. POP EBP
  9692. JMP [_GetModuleHandleA]
  9693. end;
  9694. end;
  9695. var
  9696. _GetModuleHandleW: Pointer;
  9697. function GetModuleHandleW;
  9698. begin
  9699. GetProcedureAddress(_GetModuleHandleW, kernel32, 'GetModuleHandleW');
  9700. asm
  9701. MOV ESP, EBP
  9702. POP EBP
  9703. JMP [_GetModuleHandleW]
  9704. end;
  9705. end;
  9706. var
  9707. _GetModuleHandle: Pointer;
  9708. function GetModuleHandle;
  9709. begin
  9710. GetProcedureAddress(_GetModuleHandle, kernel32, 'GetModuleHandle' + AWSuffix);
  9711. asm
  9712. MOV ESP, EBP
  9713. POP EBP
  9714. JMP [_GetModuleHandle]
  9715. end;
  9716. end;
  9717. var
  9718. _CreateProcessA: Pointer;
  9719. function CreateProcessA;
  9720. begin
  9721. GetProcedureAddress(_CreateProcessA, kernel32, 'CreateProcessA');
  9722. asm
  9723. MOV ESP, EBP
  9724. POP EBP
  9725. JMP [_CreateProcessA]
  9726. end;
  9727. end;
  9728. var
  9729. _CreateProcessW: Pointer;
  9730. function CreateProcessW;
  9731. begin
  9732. GetProcedureAddress(_CreateProcessW, kernel32, 'CreateProcessW');
  9733. asm
  9734. MOV ESP, EBP
  9735. POP EBP
  9736. JMP [_CreateProcessW]
  9737. end;
  9738. end;
  9739. var
  9740. _CreateProcess: Pointer;
  9741. function CreateProcess;
  9742. begin
  9743. GetProcedureAddress(_CreateProcess, kernel32, 'CreateProcess' + AWSuffix);
  9744. asm
  9745. MOV ESP, EBP
  9746. POP EBP
  9747. JMP [_CreateProcess]
  9748. end;
  9749. end;
  9750. var
  9751. _GetModuleHandleExA: Pointer;
  9752. function GetModuleHandleExA;
  9753. begin
  9754. GetProcedureAddress(_GetModuleHandleExA, kernel32, 'GetModuleHandleExA');
  9755. asm
  9756. MOV ESP, EBP
  9757. POP EBP
  9758. JMP [_GetModuleHandleExA]
  9759. end;
  9760. end;
  9761. var
  9762. _GetModuleHandleExW: Pointer;
  9763. function GetModuleHandleExW;
  9764. begin
  9765. GetProcedureAddress(_GetModuleHandleExW, kernel32, 'GetModuleHandleExW');
  9766. asm
  9767. MOV ESP, EBP
  9768. POP EBP
  9769. JMP [_GetModuleHandleExW]
  9770. end;
  9771. end;
  9772. var
  9773. _GetModuleHandleEx: Pointer;
  9774. function GetModuleHandleEx;
  9775. begin
  9776. GetProcedureAddress(_GetModuleHandleEx, kernel32, 'GetModuleHandleEx' + AWSuffix);
  9777. asm
  9778. MOV ESP, EBP
  9779. POP EBP
  9780. JMP [_GetModuleHandleEx]
  9781. end;
  9782. end;
  9783. var
  9784. _NeedCurrentDirectoryForExePathA: Pointer;
  9785. function NeedCurrentDirectoryForExePathA;
  9786. begin
  9787. GetProcedureAddress(_NeedCurrentDirectoryForExePathA, kernel32, 'NeedCurrentDirectoryForExePathA');
  9788. asm
  9789. MOV ESP, EBP
  9790. POP EBP
  9791. JMP [_NeedCurrentDirectoryForExePathA]
  9792. end;
  9793. end;
  9794. var
  9795. _NeedCurrentDirectoryForExePathW: Pointer;
  9796. function NeedCurrentDirectoryForExePathW;
  9797. begin
  9798. GetProcedureAddress(_NeedCurrentDirectoryForExePathW, kernel32, 'NeedCurrentDirectoryForExePathW');
  9799. asm
  9800. MOV ESP, EBP
  9801. POP EBP
  9802. JMP [_NeedCurrentDirectoryForExePathW]
  9803. end;
  9804. end;
  9805. var
  9806. _NeedCurrentDirectoryForExePath: Pointer;
  9807. function NeedCurrentDirectoryForExePath;
  9808. begin
  9809. GetProcedureAddress(_NeedCurrentDirectoryForExePath, kernel32, 'NeedCurrentDirectoryForExePath' + AWSuffix);
  9810. asm
  9811. MOV ESP, EBP
  9812. POP EBP
  9813. JMP [_NeedCurrentDirectoryForExePath]
  9814. end;
  9815. end;
  9816. var
  9817. _SetProcessShutdownParameters: Pointer;
  9818. function SetProcessShutdownParameters;
  9819. begin
  9820. GetProcedureAddress(_SetProcessShutdownParameters, kernel32, 'SetProcessShutdownParameters');
  9821. asm
  9822. MOV ESP, EBP
  9823. POP EBP
  9824. JMP [_SetProcessShutdownParameters]
  9825. end;
  9826. end;
  9827. var
  9828. _GetProcessShutdownParameters: Pointer;
  9829. function GetProcessShutdownParameters;
  9830. begin
  9831. GetProcedureAddress(_GetProcessShutdownParameters, kernel32, 'GetProcessShutdownParameters');
  9832. asm
  9833. MOV ESP, EBP
  9834. POP EBP
  9835. JMP [_GetProcessShutdownParameters]
  9836. end;
  9837. end;
  9838. var
  9839. _GetProcessVersion: Pointer;
  9840. function GetProcessVersion;
  9841. begin
  9842. GetProcedureAddress(_GetProcessVersion, kernel32, 'GetProcessVersion');
  9843. asm
  9844. MOV ESP, EBP
  9845. POP EBP
  9846. JMP [_GetProcessVersion]
  9847. end;
  9848. end;
  9849. var
  9850. _FatalAppExitA: Pointer;
  9851. procedure FatalAppExitA;
  9852. begin
  9853. GetProcedureAddress(_FatalAppExitA, kernel32, 'FatalAppExitA');
  9854. asm
  9855. MOV ESP, EBP
  9856. POP EBP
  9857. JMP [_FatalAppExitA]
  9858. end;
  9859. end;
  9860. var
  9861. _FatalAppExitW: Pointer;
  9862. procedure FatalAppExitW;
  9863. begin
  9864. GetProcedureAddress(_FatalAppExitW, kernel32, 'FatalAppExitW');
  9865. asm
  9866. MOV ESP, EBP
  9867. POP EBP
  9868. JMP [_FatalAppExitW]
  9869. end;
  9870. end;
  9871. var
  9872. _FatalAppExit: Pointer;
  9873. procedure FatalAppExit;
  9874. begin
  9875. GetProcedureAddress(_FatalAppExit, kernel32, 'FatalAppExit' + AWSuffix);
  9876. asm
  9877. MOV ESP, EBP
  9878. POP EBP
  9879. JMP [_FatalAppExit]
  9880. end;
  9881. end;
  9882. var
  9883. _GetStartupInfoA: Pointer;
  9884. procedure GetStartupInfoA;
  9885. begin
  9886. GetProcedureAddress(_GetStartupInfoA, kernel32, 'GetStartupInfoA');
  9887. asm
  9888. MOV ESP, EBP
  9889. POP EBP
  9890. JMP [_GetStartupInfoA]
  9891. end;
  9892. end;
  9893. var
  9894. _GetStartupInfoW: Pointer;
  9895. procedure GetStartupInfoW;
  9896. begin
  9897. GetProcedureAddress(_GetStartupInfoW, kernel32, 'GetStartupInfoW');
  9898. asm
  9899. MOV ESP, EBP
  9900. POP EBP
  9901. JMP [_GetStartupInfoW]
  9902. end;
  9903. end;
  9904. var
  9905. _GetStartupInfo: Pointer;
  9906. procedure GetStartupInfo;
  9907. begin
  9908. GetProcedureAddress(_GetStartupInfo, kernel32, 'GetStartupInfo' + AWSuffix);
  9909. asm
  9910. MOV ESP, EBP
  9911. POP EBP
  9912. JMP [_GetStartupInfo]
  9913. end;
  9914. end;
  9915. var
  9916. _GetCommandLineA: Pointer;
  9917. function GetCommandLineA;
  9918. begin
  9919. GetProcedureAddress(_GetCommandLineA, kernel32, 'GetCommandLineA');
  9920. asm
  9921. MOV ESP, EBP
  9922. POP EBP
  9923. JMP [_GetCommandLineA]
  9924. end;
  9925. end;
  9926. var
  9927. _GetCommandLineW: Pointer;
  9928. function GetCommandLineW;
  9929. begin
  9930. GetProcedureAddress(_GetCommandLineW, kernel32, 'GetCommandLineW');
  9931. asm
  9932. MOV ESP, EBP
  9933. POP EBP
  9934. JMP [_GetCommandLineW]
  9935. end;
  9936. end;
  9937. var
  9938. _GetCommandLine: Pointer;
  9939. function GetCommandLine;
  9940. begin
  9941. GetProcedureAddress(_GetCommandLine, kernel32, 'GetCommandLine' + AWSuffix);
  9942. asm
  9943. MOV ESP, EBP
  9944. POP EBP
  9945. JMP [_GetCommandLine]
  9946. end;
  9947. end;
  9948. var
  9949. _GetEnvironmentVariableA: Pointer;
  9950. function GetEnvironmentVariableA;
  9951. begin
  9952. GetProcedureAddress(_GetEnvironmentVariableA, kernel32, 'GetEnvironmentVariableA');
  9953. asm
  9954. MOV ESP, EBP
  9955. POP EBP
  9956. JMP [_GetEnvironmentVariableA]
  9957. end;
  9958. end;
  9959. var
  9960. _GetEnvironmentVariableW: Pointer;
  9961. function GetEnvironmentVariableW;
  9962. begin
  9963. GetProcedureAddress(_GetEnvironmentVariableW, kernel32, 'GetEnvironmentVariableW');
  9964. asm
  9965. MOV ESP, EBP
  9966. POP EBP
  9967. JMP [_GetEnvironmentVariableW]
  9968. end;
  9969. end;
  9970. var
  9971. _GetEnvironmentVariable: Pointer;
  9972. function GetEnvironmentVariable;
  9973. begin
  9974. GetProcedureAddress(_GetEnvironmentVariable, kernel32, 'GetEnvironmentVariable' + AWSuffix);
  9975. asm
  9976. MOV ESP, EBP
  9977. POP EBP
  9978. JMP [_GetEnvironmentVariable]
  9979. end;
  9980. end;
  9981. var
  9982. _SetEnvironmentVariableA: Pointer;
  9983. function SetEnvironmentVariableA;
  9984. begin
  9985. GetProcedureAddress(_SetEnvironmentVariableA, kernel32, 'SetEnvironmentVariableA');
  9986. asm
  9987. MOV ESP, EBP
  9988. POP EBP
  9989. JMP [_SetEnvironmentVariableA]
  9990. end;
  9991. end;
  9992. var
  9993. _SetEnvironmentVariableW: Pointer;
  9994. function SetEnvironmentVariableW;
  9995. begin
  9996. GetProcedureAddress(_SetEnvironmentVariableW, kernel32, 'SetEnvironmentVariableW');
  9997. asm
  9998. MOV ESP, EBP
  9999. POP EBP
  10000. JMP [_SetEnvironmentVariableW]
  10001. end;
  10002. end;
  10003. var
  10004. _SetEnvironmentVariable: Pointer;
  10005. function SetEnvironmentVariable;
  10006. begin
  10007. GetProcedureAddress(_SetEnvironmentVariable, kernel32, 'SetEnvironmentVariable' + AWSuffix);
  10008. asm
  10009. MOV ESP, EBP
  10010. POP EBP
  10011. JMP [_SetEnvironmentVariable]
  10012. end;
  10013. end;
  10014. var
  10015. _ExpandEnvironmentStringsA: Pointer;
  10016. function ExpandEnvironmentStringsA;
  10017. begin
  10018. GetProcedureAddress(_ExpandEnvironmentStringsA, kernel32, 'ExpandEnvironmentStringsA');
  10019. asm
  10020. MOV ESP, EBP
  10021. POP EBP
  10022. JMP [_ExpandEnvironmentStringsA]
  10023. end;
  10024. end;
  10025. var
  10026. _ExpandEnvironmentStringsW: Pointer;
  10027. function ExpandEnvironmentStringsW;
  10028. begin
  10029. GetProcedureAddress(_ExpandEnvironmentStringsW, kernel32, 'ExpandEnvironmentStringsW');
  10030. asm
  10031. MOV ESP, EBP
  10032. POP EBP
  10033. JMP [_ExpandEnvironmentStringsW]
  10034. end;
  10035. end;
  10036. var
  10037. _ExpandEnvironmentStrings: Pointer;
  10038. function ExpandEnvironmentStrings;
  10039. begin
  10040. GetProcedureAddress(_ExpandEnvironmentStrings, kernel32, 'ExpandEnvironmentStrings' + AWSuffix);
  10041. asm
  10042. MOV ESP, EBP
  10043. POP EBP
  10044. JMP [_ExpandEnvironmentStrings]
  10045. end;
  10046. end;
  10047. var
  10048. _GetFirmwareEnvironmentVariableA: Pointer;
  10049. function GetFirmwareEnvironmentVariableA;
  10050. begin
  10051. GetProcedureAddress(_GetFirmwareEnvironmentVariableA, kernel32, 'GetFirmwareEnvironmentVariableA');
  10052. asm
  10053. MOV ESP, EBP
  10054. POP EBP
  10055. JMP [_GetFirmwareEnvironmentVariableA]
  10056. end;
  10057. end;
  10058. var
  10059. _GetFirmwareEnvironmentVariableW: Pointer;
  10060. function GetFirmwareEnvironmentVariableW;
  10061. begin
  10062. GetProcedureAddress(_GetFirmwareEnvironmentVariableW, kernel32, 'GetFirmwareEnvironmentVariableW');
  10063. asm
  10064. MOV ESP, EBP
  10065. POP EBP
  10066. JMP [_GetFirmwareEnvironmentVariableW]
  10067. end;
  10068. end;
  10069. var
  10070. _GetFirmwareEnvironmentVariable: Pointer;
  10071. function GetFirmwareEnvironmentVariable;
  10072. begin
  10073. GetProcedureAddress(_GetFirmwareEnvironmentVariable, kernel32, 'GetFirmwareEnvironmentVariable' + AWSuffix);
  10074. asm
  10075. MOV ESP, EBP
  10076. POP EBP
  10077. JMP [_GetFirmwareEnvironmentVariable]
  10078. end;
  10079. end;
  10080. var
  10081. _SetFirmwareEnvironmentVariableA: Pointer;
  10082. function SetFirmwareEnvironmentVariableA;
  10083. begin
  10084. GetProcedureAddress(_SetFirmwareEnvironmentVariableA, kernel32, 'SetFirmwareEnvironmentVariableA');
  10085. asm
  10086. MOV ESP, EBP
  10087. POP EBP
  10088. JMP [_SetFirmwareEnvironmentVariableA]
  10089. end;
  10090. end;
  10091. var
  10092. _SetFirmwareEnvironmentVariableW: Pointer;
  10093. function SetFirmwareEnvironmentVariableW;
  10094. begin
  10095. GetProcedureAddress(_SetFirmwareEnvironmentVariableW, kernel32, 'SetFirmwareEnvironmentVariableW');
  10096. asm
  10097. MOV ESP, EBP
  10098. POP EBP
  10099. JMP [_SetFirmwareEnvironmentVariableW]
  10100. end;
  10101. end;
  10102. var
  10103. _SetFirmwareEnvironmentVariable: Pointer;
  10104. function SetFirmwareEnvironmentVariable;
  10105. begin
  10106. GetProcedureAddress(_SetFirmwareEnvironmentVariable, kernel32, 'SetFirmwareEnvironmentVariable' + AWSuffix);
  10107. asm
  10108. MOV ESP, EBP
  10109. POP EBP
  10110. JMP [_SetFirmwareEnvironmentVariable]
  10111. end;
  10112. end;
  10113. var
  10114. _OutputDebugStringA: Pointer;
  10115. procedure OutputDebugStringA;
  10116. begin
  10117. GetProcedureAddress(_OutputDebugStringA, kernel32, 'OutputDebugStringA');
  10118. asm
  10119. MOV ESP, EBP
  10120. POP EBP
  10121. JMP [_OutputDebugStringA]
  10122. end;
  10123. end;
  10124. var
  10125. _OutputDebugStringW: Pointer;
  10126. procedure OutputDebugStringW;
  10127. begin
  10128. GetProcedureAddress(_OutputDebugStringW, kernel32, 'OutputDebugStringW');
  10129. asm
  10130. MOV ESP, EBP
  10131. POP EBP
  10132. JMP [_OutputDebugStringW]
  10133. end;
  10134. end;
  10135. var
  10136. _OutputDebugString: Pointer;
  10137. procedure OutputDebugString;
  10138. begin
  10139. GetProcedureAddress(_OutputDebugString, kernel32, 'OutputDebugString' + AWSuffix);
  10140. asm
  10141. MOV ESP, EBP
  10142. POP EBP
  10143. JMP [_OutputDebugString]
  10144. end;
  10145. end;
  10146. var
  10147. _FindResourceA: Pointer;
  10148. function FindResourceA;
  10149. begin
  10150. GetProcedureAddress(_FindResourceA, kernel32, 'FindResourceA');
  10151. asm
  10152. MOV ESP, EBP
  10153. POP EBP
  10154. JMP [_FindResourceA]
  10155. end;
  10156. end;
  10157. var
  10158. _FindResourceW: Pointer;
  10159. function FindResourceW;
  10160. begin
  10161. GetProcedureAddress(_FindResourceW, kernel32, 'FindResourceW');
  10162. asm
  10163. MOV ESP, EBP
  10164. POP EBP
  10165. JMP [_FindResourceW]
  10166. end;
  10167. end;
  10168. var
  10169. _FindResource: Pointer;
  10170. function FindResource;
  10171. begin
  10172. GetProcedureAddress(_FindResource, kernel32, 'FindResource' + AWSuffix);
  10173. asm
  10174. MOV ESP, EBP
  10175. POP EBP
  10176. JMP [_FindResource]
  10177. end;
  10178. end;
  10179. var
  10180. _FindResourceExA: Pointer;
  10181. function FindResourceExA;
  10182. begin
  10183. GetProcedureAddress(_FindResourceExA, kernel32, 'FindResourceExA');
  10184. asm
  10185. MOV ESP, EBP
  10186. POP EBP
  10187. JMP [_FindResourceExA]
  10188. end;
  10189. end;
  10190. var
  10191. _FindResourceExW: Pointer;
  10192. function FindResourceExW;
  10193. begin
  10194. GetProcedureAddress(_FindResourceExW, kernel32, 'FindResourceExW');
  10195. asm
  10196. MOV ESP, EBP
  10197. POP EBP
  10198. JMP [_FindResourceExW]
  10199. end;
  10200. end;
  10201. var
  10202. _FindResourceEx: Pointer;
  10203. function FindResourceEx;
  10204. begin
  10205. GetProcedureAddress(_FindResourceEx, kernel32, 'FindResourceEx' + AWSuffix);
  10206. asm
  10207. MOV ESP, EBP
  10208. POP EBP
  10209. JMP [_FindResourceEx]
  10210. end;
  10211. end;
  10212. var
  10213. _EnumResourceTypesA: Pointer;
  10214. function EnumResourceTypesA;
  10215. begin
  10216. GetProcedureAddress(_EnumResourceTypesA, kernel32, 'EnumResourceTypesA');
  10217. asm
  10218. MOV ESP, EBP
  10219. POP EBP
  10220. JMP [_EnumResourceTypesA]
  10221. end;
  10222. end;
  10223. var
  10224. _EnumResourceTypesW: Pointer;
  10225. function EnumResourceTypesW;
  10226. begin
  10227. GetProcedureAddress(_EnumResourceTypesW, kernel32, 'EnumResourceTypesW');
  10228. asm
  10229. MOV ESP, EBP
  10230. POP EBP
  10231. JMP [_EnumResourceTypesW]
  10232. end;
  10233. end;
  10234. var
  10235. _EnumResourceTypes: Pointer;
  10236. function EnumResourceTypes;
  10237. begin
  10238. GetProcedureAddress(_EnumResourceTypes, kernel32, 'EnumResourceTypes' + AWSuffix);
  10239. asm
  10240. MOV ESP, EBP
  10241. POP EBP
  10242. JMP [_EnumResourceTypes]
  10243. end;
  10244. end;
  10245. var
  10246. _EnumResourceNamesA: Pointer;
  10247. function EnumResourceNamesA;
  10248. begin
  10249. GetProcedureAddress(_EnumResourceNamesA, kernel32, 'EnumResourceNamesA');
  10250. asm
  10251. MOV ESP, EBP
  10252. POP EBP
  10253. JMP [_EnumResourceNamesA]
  10254. end;
  10255. end;
  10256. var
  10257. _EnumResourceNamesW: Pointer;
  10258. function EnumResourceNamesW;
  10259. begin
  10260. GetProcedureAddress(_EnumResourceNamesW, kernel32, 'EnumResourceNamesW');
  10261. asm
  10262. MOV ESP, EBP
  10263. POP EBP
  10264. JMP [_EnumResourceNamesW]
  10265. end;
  10266. end;
  10267. var
  10268. _EnumResourceNames: Pointer;
  10269. function EnumResourceNames;
  10270. begin
  10271. GetProcedureAddress(_EnumResourceNames, kernel32, 'EnumResourceNames' + AWSuffix);
  10272. asm
  10273. MOV ESP, EBP
  10274. POP EBP
  10275. JMP [_EnumResourceNames]
  10276. end;
  10277. end;
  10278. var
  10279. _EnumResourceLanguagesA: Pointer;
  10280. function EnumResourceLanguagesA;
  10281. begin
  10282. GetProcedureAddress(_EnumResourceLanguagesA, kernel32, 'EnumResourceLanguagesA');
  10283. asm
  10284. MOV ESP, EBP
  10285. POP EBP
  10286. JMP [_EnumResourceLanguagesA]
  10287. end;
  10288. end;
  10289. var
  10290. _EnumResourceLanguagesW: Pointer;
  10291. function EnumResourceLanguagesW;
  10292. begin
  10293. GetProcedureAddress(_EnumResourceLanguagesW, kernel32, 'EnumResourceLanguagesW');
  10294. asm
  10295. MOV ESP, EBP
  10296. POP EBP
  10297. JMP [_EnumResourceLanguagesW]
  10298. end;
  10299. end;
  10300. var
  10301. _EnumResourceLanguages: Pointer;
  10302. function EnumResourceLanguages;
  10303. begin
  10304. GetProcedureAddress(_EnumResourceLanguages, kernel32, 'EnumResourceLanguages' + AWSuffix);
  10305. asm
  10306. MOV ESP, EBP
  10307. POP EBP
  10308. JMP [_EnumResourceLanguages]
  10309. end;
  10310. end;
  10311. var
  10312. _BeginUpdateResourceA: Pointer;
  10313. function BeginUpdateResourceA;
  10314. begin
  10315. GetProcedureAddress(_BeginUpdateResourceA, kernel32, 'BeginUpdateResourceA');
  10316. asm
  10317. MOV ESP, EBP
  10318. POP EBP
  10319. JMP [_BeginUpdateResourceA]
  10320. end;
  10321. end;
  10322. var
  10323. _BeginUpdateResourceW: Pointer;
  10324. function BeginUpdateResourceW;
  10325. begin
  10326. GetProcedureAddress(_BeginUpdateResourceW, kernel32, 'BeginUpdateResourceW');
  10327. asm
  10328. MOV ESP, EBP
  10329. POP EBP
  10330. JMP [_BeginUpdateResourceW]
  10331. end;
  10332. end;
  10333. var
  10334. _BeginUpdateResource: Pointer;
  10335. function BeginUpdateResource;
  10336. begin
  10337. GetProcedureAddress(_BeginUpdateResource, kernel32, 'BeginUpdateResource' + AWSuffix);
  10338. asm
  10339. MOV ESP, EBP
  10340. POP EBP
  10341. JMP [_BeginUpdateResource]
  10342. end;
  10343. end;
  10344. var
  10345. _UpdateResourceA: Pointer;
  10346. function UpdateResourceA;
  10347. begin
  10348. GetProcedureAddress(_UpdateResourceA, kernel32, 'UpdateResourceA');
  10349. asm
  10350. MOV ESP, EBP
  10351. POP EBP
  10352. JMP [_UpdateResourceA]
  10353. end;
  10354. end;
  10355. var
  10356. _UpdateResourceW: Pointer;
  10357. function UpdateResourceW;
  10358. begin
  10359. GetProcedureAddress(_UpdateResourceW, kernel32, 'UpdateResourceW');
  10360. asm
  10361. MOV ESP, EBP
  10362. POP EBP
  10363. JMP [_UpdateResourceW]
  10364. end;
  10365. end;
  10366. var
  10367. _UpdateResource: Pointer;
  10368. function UpdateResource;
  10369. begin
  10370. GetProcedureAddress(_UpdateResource, kernel32, 'UpdateResource' + AWSuffix);
  10371. asm
  10372. MOV ESP, EBP
  10373. POP EBP
  10374. JMP [_UpdateResource]
  10375. end;
  10376. end;
  10377. var
  10378. _EndUpdateResourceA: Pointer;
  10379. function EndUpdateResourceA;
  10380. begin
  10381. GetProcedureAddress(_EndUpdateResourceA, kernel32, 'EndUpdateResourceA');
  10382. asm
  10383. MOV ESP, EBP
  10384. POP EBP
  10385. JMP [_EndUpdateResourceA]
  10386. end;
  10387. end;
  10388. var
  10389. _EndUpdateResourceW: Pointer;
  10390. function EndUpdateResourceW;
  10391. begin
  10392. GetProcedureAddress(_EndUpdateResourceW, kernel32, 'EndUpdateResourceW');
  10393. asm
  10394. MOV ESP, EBP
  10395. POP EBP
  10396. JMP [_EndUpdateResourceW]
  10397. end;
  10398. end;
  10399. var
  10400. _EndUpdateResource: Pointer;
  10401. function EndUpdateResource;
  10402. begin
  10403. GetProcedureAddress(_EndUpdateResource, kernel32, 'EndUpdateResource' + AWSuffix);
  10404. asm
  10405. MOV ESP, EBP
  10406. POP EBP
  10407. JMP [_EndUpdateResource]
  10408. end;
  10409. end;
  10410. var
  10411. _GlobalAddAtomA: Pointer;
  10412. function GlobalAddAtomA;
  10413. begin
  10414. GetProcedureAddress(_GlobalAddAtomA, kernel32, 'GlobalAddAtomA');
  10415. asm
  10416. MOV ESP, EBP
  10417. POP EBP
  10418. JMP [_GlobalAddAtomA]
  10419. end;
  10420. end;
  10421. var
  10422. _GlobalAddAtomW: Pointer;
  10423. function GlobalAddAtomW;
  10424. begin
  10425. GetProcedureAddress(_GlobalAddAtomW, kernel32, 'GlobalAddAtomW');
  10426. asm
  10427. MOV ESP, EBP
  10428. POP EBP
  10429. JMP [_GlobalAddAtomW]
  10430. end;
  10431. end;
  10432. var
  10433. _GlobalAddAtom: Pointer;
  10434. function GlobalAddAtom;
  10435. begin
  10436. GetProcedureAddress(_GlobalAddAtom, kernel32, 'GlobalAddAtom' + AWSuffix);
  10437. asm
  10438. MOV ESP, EBP
  10439. POP EBP
  10440. JMP [_GlobalAddAtom]
  10441. end;
  10442. end;
  10443. var
  10444. _GlobalFindAtomA: Pointer;
  10445. function GlobalFindAtomA;
  10446. begin
  10447. GetProcedureAddress(_GlobalFindAtomA, kernel32, 'GlobalFindAtomA');
  10448. asm
  10449. MOV ESP, EBP
  10450. POP EBP
  10451. JMP [_GlobalFindAtomA]
  10452. end;
  10453. end;
  10454. var
  10455. _GlobalFindAtomW: Pointer;
  10456. function GlobalFindAtomW;
  10457. begin
  10458. GetProcedureAddress(_GlobalFindAtomW, kernel32, 'GlobalFindAtomW');
  10459. asm
  10460. MOV ESP, EBP
  10461. POP EBP
  10462. JMP [_GlobalFindAtomW]
  10463. end;
  10464. end;
  10465. var
  10466. _GlobalFindAtom: Pointer;
  10467. function GlobalFindAtom;
  10468. begin
  10469. GetProcedureAddress(_GlobalFindAtom, kernel32, 'GlobalFindAtom' + AWSuffix);
  10470. asm
  10471. MOV ESP, EBP
  10472. POP EBP
  10473. JMP [_GlobalFindAtom]
  10474. end;
  10475. end;
  10476. var
  10477. _GlobalGetAtomNameA: Pointer;
  10478. function GlobalGetAtomNameA;
  10479. begin
  10480. GetProcedureAddress(_GlobalGetAtomNameA, kernel32, 'GlobalGetAtomNameA');
  10481. asm
  10482. MOV ESP, EBP
  10483. POP EBP
  10484. JMP [_GlobalGetAtomNameA]
  10485. end;
  10486. end;
  10487. var
  10488. _GlobalGetAtomNameW: Pointer;
  10489. function GlobalGetAtomNameW;
  10490. begin
  10491. GetProcedureAddress(_GlobalGetAtomNameW, kernel32, 'GlobalGetAtomNameW');
  10492. asm
  10493. MOV ESP, EBP
  10494. POP EBP
  10495. JMP [_GlobalGetAtomNameW]
  10496. end;
  10497. end;
  10498. var
  10499. _GlobalGetAtomName: Pointer;
  10500. function GlobalGetAtomName;
  10501. begin
  10502. GetProcedureAddress(_GlobalGetAtomName, kernel32, 'GlobalGetAtomName' + AWSuffix);
  10503. asm
  10504. MOV ESP, EBP
  10505. POP EBP
  10506. JMP [_GlobalGetAtomName]
  10507. end;
  10508. end;
  10509. var
  10510. _AddAtomA: Pointer;
  10511. function AddAtomA;
  10512. begin
  10513. GetProcedureAddress(_AddAtomA, kernel32, 'AddAtomA');
  10514. asm
  10515. MOV ESP, EBP
  10516. POP EBP
  10517. JMP [_AddAtomA]
  10518. end;
  10519. end;
  10520. var
  10521. _AddAtomW: Pointer;
  10522. function AddAtomW;
  10523. begin
  10524. GetProcedureAddress(_AddAtomW, kernel32, 'AddAtomW');
  10525. asm
  10526. MOV ESP, EBP
  10527. POP EBP
  10528. JMP [_AddAtomW]
  10529. end;
  10530. end;
  10531. var
  10532. _AddAtom: Pointer;
  10533. function AddAtom;
  10534. begin
  10535. GetProcedureAddress(_AddAtom, kernel32, 'AddAtom' + AWSuffix);
  10536. asm
  10537. MOV ESP, EBP
  10538. POP EBP
  10539. JMP [_AddAtom]
  10540. end;
  10541. end;
  10542. var
  10543. _FindAtomA: Pointer;
  10544. function FindAtomA;
  10545. begin
  10546. GetProcedureAddress(_FindAtomA, kernel32, 'FindAtomA');
  10547. asm
  10548. MOV ESP, EBP
  10549. POP EBP
  10550. JMP [_FindAtomA]
  10551. end;
  10552. end;
  10553. var
  10554. _FindAtomW: Pointer;
  10555. function FindAtomW;
  10556. begin
  10557. GetProcedureAddress(_FindAtomW, kernel32, 'FindAtomW');
  10558. asm
  10559. MOV ESP, EBP
  10560. POP EBP
  10561. JMP [_FindAtomW]
  10562. end;
  10563. end;
  10564. var
  10565. _FindAtom: Pointer;
  10566. function FindAtom;
  10567. begin
  10568. GetProcedureAddress(_FindAtom, kernel32, 'FindAtom' + AWSuffix);
  10569. asm
  10570. MOV ESP, EBP
  10571. POP EBP
  10572. JMP [_FindAtom]
  10573. end;
  10574. end;
  10575. var
  10576. _GetAtomNameA: Pointer;
  10577. function GetAtomNameA;
  10578. begin
  10579. GetProcedureAddress(_GetAtomNameA, kernel32, 'GetAtomNameA');
  10580. asm
  10581. MOV ESP, EBP
  10582. POP EBP
  10583. JMP [_GetAtomNameA]
  10584. end;
  10585. end;
  10586. var
  10587. _GetAtomNameW: Pointer;
  10588. function GetAtomNameW;
  10589. begin
  10590. GetProcedureAddress(_GetAtomNameW, kernel32, 'GetAtomNameW');
  10591. asm
  10592. MOV ESP, EBP
  10593. POP EBP
  10594. JMP [_GetAtomNameW]
  10595. end;
  10596. end;
  10597. var
  10598. _GetAtomName: Pointer;
  10599. function GetAtomName;
  10600. begin
  10601. GetProcedureAddress(_GetAtomName, kernel32, 'GetAtomName' + AWSuffix);
  10602. asm
  10603. MOV ESP, EBP
  10604. POP EBP
  10605. JMP [_GetAtomName]
  10606. end;
  10607. end;
  10608. var
  10609. _GetProfileIntA: Pointer;
  10610. function GetProfileIntA;
  10611. begin
  10612. GetProcedureAddress(_GetProfileIntA, kernel32, 'GetProfileIntA');
  10613. asm
  10614. MOV ESP, EBP
  10615. POP EBP
  10616. JMP [_GetProfileIntA]
  10617. end;
  10618. end;
  10619. var
  10620. _GetProfileIntW: Pointer;
  10621. function GetProfileIntW;
  10622. begin
  10623. GetProcedureAddress(_GetProfileIntW, kernel32, 'GetProfileIntW');
  10624. asm
  10625. MOV ESP, EBP
  10626. POP EBP
  10627. JMP [_GetProfileIntW]
  10628. end;
  10629. end;
  10630. var
  10631. _GetProfileInt: Pointer;
  10632. function GetProfileInt;
  10633. begin
  10634. GetProcedureAddress(_GetProfileInt, kernel32, 'GetProfileInt' + AWSuffix);
  10635. asm
  10636. MOV ESP, EBP
  10637. POP EBP
  10638. JMP [_GetProfileInt]
  10639. end;
  10640. end;
  10641. var
  10642. _GetProfileStringA: Pointer;
  10643. function GetProfileStringA;
  10644. begin
  10645. GetProcedureAddress(_GetProfileStringA, kernel32, 'GetProfileStringA');
  10646. asm
  10647. MOV ESP, EBP
  10648. POP EBP
  10649. JMP [_GetProfileStringA]
  10650. end;
  10651. end;
  10652. var
  10653. _GetProfileStringW: Pointer;
  10654. function GetProfileStringW;
  10655. begin
  10656. GetProcedureAddress(_GetProfileStringW, kernel32, 'GetProfileStringW');
  10657. asm
  10658. MOV ESP, EBP
  10659. POP EBP
  10660. JMP [_GetProfileStringW]
  10661. end;
  10662. end;
  10663. var
  10664. _GetProfileString: Pointer;
  10665. function GetProfileString;
  10666. begin
  10667. GetProcedureAddress(_GetProfileString, kernel32, 'GetProfileString' + AWSuffix);
  10668. asm
  10669. MOV ESP, EBP
  10670. POP EBP
  10671. JMP [_GetProfileString]
  10672. end;
  10673. end;
  10674. var
  10675. _WriteProfileStringA: Pointer;
  10676. function WriteProfileStringA;
  10677. begin
  10678. GetProcedureAddress(_WriteProfileStringA, kernel32, 'WriteProfileStringA');
  10679. asm
  10680. MOV ESP, EBP
  10681. POP EBP
  10682. JMP [_WriteProfileStringA]
  10683. end;
  10684. end;
  10685. var
  10686. _WriteProfileStringW: Pointer;
  10687. function WriteProfileStringW;
  10688. begin
  10689. GetProcedureAddress(_WriteProfileStringW, kernel32, 'WriteProfileStringW');
  10690. asm
  10691. MOV ESP, EBP
  10692. POP EBP
  10693. JMP [_WriteProfileStringW]
  10694. end;
  10695. end;
  10696. var
  10697. _WriteProfileString: Pointer;
  10698. function WriteProfileString;
  10699. begin
  10700. GetProcedureAddress(_WriteProfileString, kernel32, 'WriteProfileString' + AWSuffix);
  10701. asm
  10702. MOV ESP, EBP
  10703. POP EBP
  10704. JMP [_WriteProfileString]
  10705. end;
  10706. end;
  10707. var
  10708. _GetProfileSectionA: Pointer;
  10709. function GetProfileSectionA;
  10710. begin
  10711. GetProcedureAddress(_GetProfileSectionA, kernel32, 'GetProfileSectionA');
  10712. asm
  10713. MOV ESP, EBP
  10714. POP EBP
  10715. JMP [_GetProfileSectionA]
  10716. end;
  10717. end;
  10718. var
  10719. _GetProfileSectionW: Pointer;
  10720. function GetProfileSectionW;
  10721. begin
  10722. GetProcedureAddress(_GetProfileSectionW, kernel32, 'GetProfileSectionW');
  10723. asm
  10724. MOV ESP, EBP
  10725. POP EBP
  10726. JMP [_GetProfileSectionW]
  10727. end;
  10728. end;
  10729. var
  10730. _GetProfileSection: Pointer;
  10731. function GetProfileSection;
  10732. begin
  10733. GetProcedureAddress(_GetProfileSection, kernel32, 'GetProfileSection' + AWSuffix);
  10734. asm
  10735. MOV ESP, EBP
  10736. POP EBP
  10737. JMP [_GetProfileSection]
  10738. end;
  10739. end;
  10740. var
  10741. _WriteProfileSectionA: Pointer;
  10742. function WriteProfileSectionA;
  10743. begin
  10744. GetProcedureAddress(_WriteProfileSectionA, kernel32, 'WriteProfileSectionA');
  10745. asm
  10746. MOV ESP, EBP
  10747. POP EBP
  10748. JMP [_WriteProfileSectionA]
  10749. end;
  10750. end;
  10751. var
  10752. _WriteProfileSectionW: Pointer;
  10753. function WriteProfileSectionW;
  10754. begin
  10755. GetProcedureAddress(_WriteProfileSectionW, kernel32, 'WriteProfileSectionW');
  10756. asm
  10757. MOV ESP, EBP
  10758. POP EBP
  10759. JMP [_WriteProfileSectionW]
  10760. end;
  10761. end;
  10762. var
  10763. _WriteProfileSection: Pointer;
  10764. function WriteProfileSection;
  10765. begin
  10766. GetProcedureAddress(_WriteProfileSection, kernel32, 'WriteProfileSection' + AWSuffix);
  10767. asm
  10768. MOV ESP, EBP
  10769. POP EBP
  10770. JMP [_WriteProfileSection]
  10771. end;
  10772. end;
  10773. var
  10774. _GetPrivateProfileIntA: Pointer;
  10775. function GetPrivateProfileIntA;
  10776. begin
  10777. GetProcedureAddress(_GetPrivateProfileIntA, kernel32, 'GetPrivateProfileIntA');
  10778. asm
  10779. MOV ESP, EBP
  10780. POP EBP
  10781. JMP [_GetPrivateProfileIntA]
  10782. end;
  10783. end;
  10784. var
  10785. _GetPrivateProfileIntW: Pointer;
  10786. function GetPrivateProfileIntW;
  10787. begin
  10788. GetProcedureAddress(_GetPrivateProfileIntW, kernel32, 'GetPrivateProfileIntW');
  10789. asm
  10790. MOV ESP, EBP
  10791. POP EBP
  10792. JMP [_GetPrivateProfileIntW]
  10793. end;
  10794. end;
  10795. var
  10796. _GetPrivateProfileInt: Pointer;
  10797. function GetPrivateProfileInt;
  10798. begin
  10799. GetProcedureAddress(_GetPrivateProfileInt, kernel32, 'GetPrivateProfileInt' + AWSuffix);
  10800. asm
  10801. MOV ESP, EBP
  10802. POP EBP
  10803. JMP [_GetPrivateProfileInt]
  10804. end;
  10805. end;
  10806. var
  10807. _GetPrivateProfileStringA: Pointer;
  10808. function GetPrivateProfileStringA;
  10809. begin
  10810. GetProcedureAddress(_GetPrivateProfileStringA, kernel32, 'GetPrivateProfileStringA');
  10811. asm
  10812. MOV ESP, EBP
  10813. POP EBP
  10814. JMP [_GetPrivateProfileStringA]
  10815. end;
  10816. end;
  10817. var
  10818. _GetPrivateProfileStringW: Pointer;
  10819. function GetPrivateProfileStringW;
  10820. begin
  10821. GetProcedureAddress(_GetPrivateProfileStringW, kernel32, 'GetPrivateProfileStringW');
  10822. asm
  10823. MOV ESP, EBP
  10824. POP EBP
  10825. JMP [_GetPrivateProfileStringW]
  10826. end;
  10827. end;
  10828. var
  10829. _GetPrivateProfileString: Pointer;
  10830. function GetPrivateProfileString;
  10831. begin
  10832. GetProcedureAddress(_GetPrivateProfileString, kernel32, 'GetPrivateProfileString' + AWSuffix);
  10833. asm
  10834. MOV ESP, EBP
  10835. POP EBP
  10836. JMP [_GetPrivateProfileString]
  10837. end;
  10838. end;
  10839. var
  10840. _WritePrivateProfileStringA: Pointer;
  10841. function WritePrivateProfileStringA;
  10842. begin
  10843. GetProcedureAddress(_WritePrivateProfileStringA, kernel32, 'WritePrivateProfileStringA');
  10844. asm
  10845. MOV ESP, EBP
  10846. POP EBP
  10847. JMP [_WritePrivateProfileStringA]
  10848. end;
  10849. end;
  10850. var
  10851. _WritePrivateProfileStringW: Pointer;
  10852. function WritePrivateProfileStringW;
  10853. begin
  10854. GetProcedureAddress(_WritePrivateProfileStringW, kernel32, 'WritePrivateProfileStringW');
  10855. asm
  10856. MOV ESP, EBP
  10857. POP EBP
  10858. JMP [_WritePrivateProfileStringW]
  10859. end;
  10860. end;
  10861. var
  10862. _WritePrivateProfileString: Pointer;
  10863. function WritePrivateProfileString;
  10864. begin
  10865. GetProcedureAddress(_WritePrivateProfileString, kernel32, 'WritePrivateProfileString' + AWSuffix);
  10866. asm
  10867. MOV ESP, EBP
  10868. POP EBP
  10869. JMP [_WritePrivateProfileString]
  10870. end;
  10871. end;
  10872. var
  10873. _GetPrivateProfileSectionA: Pointer;
  10874. function GetPrivateProfileSectionA;
  10875. begin
  10876. GetProcedureAddress(_GetPrivateProfileSectionA, kernel32, 'GetPrivateProfileSectionA');
  10877. asm
  10878. MOV ESP, EBP
  10879. POP EBP
  10880. JMP [_GetPrivateProfileSectionA]
  10881. end;
  10882. end;
  10883. var
  10884. _GetPrivateProfileSectionW: Pointer;
  10885. function GetPrivateProfileSectionW;
  10886. begin
  10887. GetProcedureAddress(_GetPrivateProfileSectionW, kernel32, 'GetPrivateProfileSectionW');
  10888. asm
  10889. MOV ESP, EBP
  10890. POP EBP
  10891. JMP [_GetPrivateProfileSectionW]
  10892. end;
  10893. end;
  10894. var
  10895. _GetPrivateProfileSection: Pointer;
  10896. function GetPrivateProfileSection;
  10897. begin
  10898. GetProcedureAddress(_GetPrivateProfileSection, kernel32, 'GetPrivateProfileSection' + AWSuffix);
  10899. asm
  10900. MOV ESP, EBP
  10901. POP EBP
  10902. JMP [_GetPrivateProfileSection]
  10903. end;
  10904. end;
  10905. var
  10906. _WritePrivateProfileSectionA: Pointer;
  10907. function WritePrivateProfileSectionA;
  10908. begin
  10909. GetProcedureAddress(_WritePrivateProfileSectionA, kernel32, 'WritePrivateProfileSectionA');
  10910. asm
  10911. MOV ESP, EBP
  10912. POP EBP
  10913. JMP [_WritePrivateProfileSectionA]
  10914. end;
  10915. end;
  10916. var
  10917. _WritePrivateProfileSectionW: Pointer;
  10918. function WritePrivateProfileSectionW;
  10919. begin
  10920. GetProcedureAddress(_WritePrivateProfileSectionW, kernel32, 'WritePrivateProfileSectionW');
  10921. asm
  10922. MOV ESP, EBP
  10923. POP EBP
  10924. JMP [_WritePrivateProfileSectionW]
  10925. end;
  10926. end;
  10927. var
  10928. _WritePrivateProfileSection: Pointer;
  10929. function WritePrivateProfileSection;
  10930. begin
  10931. GetProcedureAddress(_WritePrivateProfileSection, kernel32, 'WritePrivateProfileSection' + AWSuffix);
  10932. asm
  10933. MOV ESP, EBP
  10934. POP EBP
  10935. JMP [_WritePrivateProfileSection]
  10936. end;
  10937. end;
  10938. var
  10939. _GetPrivateProfileSectionNamesA: Pointer;
  10940. function GetPrivateProfileSectionNamesA;
  10941. begin
  10942. GetProcedureAddress(_GetPrivateProfileSectionNamesA, kernel32, 'GetPrivateProfileSectionNamesA');
  10943. asm
  10944. MOV ESP, EBP
  10945. POP EBP
  10946. JMP [_GetPrivateProfileSectionNamesA]
  10947. end;
  10948. end;
  10949. var
  10950. _GetPrivateProfileSectionNamesW: Pointer;
  10951. function GetPrivateProfileSectionNamesW;
  10952. begin
  10953. GetProcedureAddress(_GetPrivateProfileSectionNamesW, kernel32, 'GetPrivateProfileSectionNamesW');
  10954. asm
  10955. MOV ESP, EBP
  10956. POP EBP
  10957. JMP [_GetPrivateProfileSectionNamesW]
  10958. end;
  10959. end;
  10960. var
  10961. _GetPrivateProfileSectionNames: Pointer;
  10962. function GetPrivateProfileSectionNames;
  10963. begin
  10964. GetProcedureAddress(_GetPrivateProfileSectionNames, kernel32, 'GetPrivateProfileSectionNames' + AWSuffix);
  10965. asm
  10966. MOV ESP, EBP
  10967. POP EBP
  10968. JMP [_GetPrivateProfileSectionNames]
  10969. end;
  10970. end;
  10971. var
  10972. _GetPrivateProfileStructA: Pointer;
  10973. function GetPrivateProfileStructA;
  10974. begin
  10975. GetProcedureAddress(_GetPrivateProfileStructA, kernel32, 'GetPrivateProfileStructA');
  10976. asm
  10977. MOV ESP, EBP
  10978. POP EBP
  10979. JMP [_GetPrivateProfileStructA]
  10980. end;
  10981. end;
  10982. var
  10983. _GetPrivateProfileStructW: Pointer;
  10984. function GetPrivateProfileStructW;
  10985. begin
  10986. GetProcedureAddress(_GetPrivateProfileStructW, kernel32, 'GetPrivateProfileStructW');
  10987. asm
  10988. MOV ESP, EBP
  10989. POP EBP
  10990. JMP [_GetPrivateProfileStructW]
  10991. end;
  10992. end;
  10993. var
  10994. _GetPrivateProfileStruct: Pointer;
  10995. function GetPrivateProfileStruct;
  10996. begin
  10997. GetProcedureAddress(_GetPrivateProfileStruct, kernel32, 'GetPrivateProfileStruct' + AWSuffix);
  10998. asm
  10999. MOV ESP, EBP
  11000. POP EBP
  11001. JMP [_GetPrivateProfileStruct]
  11002. end;
  11003. end;
  11004. var
  11005. _WritePrivateProfileStructA: Pointer;
  11006. function WritePrivateProfileStructA;
  11007. begin
  11008. GetProcedureAddress(_WritePrivateProfileStructA, kernel32, 'WritePrivateProfileStructA');
  11009. asm
  11010. MOV ESP, EBP
  11011. POP EBP
  11012. JMP [_WritePrivateProfileStructA]
  11013. end;
  11014. end;
  11015. var
  11016. _WritePrivateProfileStructW: Pointer;
  11017. function WritePrivateProfileStructW;
  11018. begin
  11019. GetProcedureAddress(_WritePrivateProfileStructW, kernel32, 'WritePrivateProfileStructW');
  11020. asm
  11021. MOV ESP, EBP
  11022. POP EBP
  11023. JMP [_WritePrivateProfileStructW]
  11024. end;
  11025. end;
  11026. var
  11027. _WritePrivateProfileStruct: Pointer;
  11028. function WritePrivateProfileStruct;
  11029. begin
  11030. GetProcedureAddress(_WritePrivateProfileStruct, kernel32, 'WritePrivateProfileStruct' + AWSuffix);
  11031. asm
  11032. MOV ESP, EBP
  11033. POP EBP
  11034. JMP [_WritePrivateProfileStruct]
  11035. end;
  11036. end;
  11037. var
  11038. _GetDriveTypeA: Pointer;
  11039. function GetDriveTypeA;
  11040. begin
  11041. GetProcedureAddress(_GetDriveTypeA, kernel32, 'GetDriveTypeA');
  11042. asm
  11043. MOV ESP, EBP
  11044. POP EBP
  11045. JMP [_GetDriveTypeA]
  11046. end;
  11047. end;
  11048. var
  11049. _GetDriveTypeW: Pointer;
  11050. function GetDriveTypeW;
  11051. begin
  11052. GetProcedureAddress(_GetDriveTypeW, kernel32, 'GetDriveTypeW');
  11053. asm
  11054. MOV ESP, EBP
  11055. POP EBP
  11056. JMP [_GetDriveTypeW]
  11057. end;
  11058. end;
  11059. var
  11060. _GetDriveType: Pointer;
  11061. function GetDriveType;
  11062. begin
  11063. GetProcedureAddress(_GetDriveType, kernel32, 'GetDriveType' + AWSuffix);
  11064. asm
  11065. MOV ESP, EBP
  11066. POP EBP
  11067. JMP [_GetDriveType]
  11068. end;
  11069. end;
  11070. var
  11071. _GetSystemDirectoryA: Pointer;
  11072. function GetSystemDirectoryA;
  11073. begin
  11074. GetProcedureAddress(_GetSystemDirectoryA, kernel32, 'GetSystemDirectoryA');
  11075. asm
  11076. MOV ESP, EBP
  11077. POP EBP
  11078. JMP [_GetSystemDirectoryA]
  11079. end;
  11080. end;
  11081. var
  11082. _GetSystemDirectoryW: Pointer;
  11083. function GetSystemDirectoryW;
  11084. begin
  11085. GetProcedureAddress(_GetSystemDirectoryW, kernel32, 'GetSystemDirectoryW');
  11086. asm
  11087. MOV ESP, EBP
  11088. POP EBP
  11089. JMP [_GetSystemDirectoryW]
  11090. end;
  11091. end;
  11092. var
  11093. _GetSystemDirectory: Pointer;
  11094. function GetSystemDirectory;
  11095. begin
  11096. GetProcedureAddress(_GetSystemDirectory, kernel32, 'GetSystemDirectory' + AWSuffix);
  11097. asm
  11098. MOV ESP, EBP
  11099. POP EBP
  11100. JMP [_GetSystemDirectory]
  11101. end;
  11102. end;
  11103. var
  11104. _GetTempPathA: Pointer;
  11105. function GetTempPathA;
  11106. begin
  11107. GetProcedureAddress(_GetTempPathA, kernel32, 'GetTempPathA');
  11108. asm
  11109. MOV ESP, EBP
  11110. POP EBP
  11111. JMP [_GetTempPathA]
  11112. end;
  11113. end;
  11114. var
  11115. _GetTempPathW: Pointer;
  11116. function GetTempPathW;
  11117. begin
  11118. GetProcedureAddress(_GetTempPathW, kernel32, 'GetTempPathW');
  11119. asm
  11120. MOV ESP, EBP
  11121. POP EBP
  11122. JMP [_GetTempPathW]
  11123. end;
  11124. end;
  11125. var
  11126. _GetTempPath: Pointer;
  11127. function GetTempPath;
  11128. begin
  11129. GetProcedureAddress(_GetTempPath, kernel32, 'GetTempPath' + AWSuffix);
  11130. asm
  11131. MOV ESP, EBP
  11132. POP EBP
  11133. JMP [_GetTempPath]
  11134. end;
  11135. end;
  11136. var
  11137. _GetTempFileNameA: Pointer;
  11138. function GetTempFileNameA;
  11139. begin
  11140. GetProcedureAddress(_GetTempFileNameA, kernel32, 'GetTempFileNameA');
  11141. asm
  11142. MOV ESP, EBP
  11143. POP EBP
  11144. JMP [_GetTempFileNameA]
  11145. end;
  11146. end;
  11147. var
  11148. _GetTempFileNameW: Pointer;
  11149. function GetTempFileNameW;
  11150. begin
  11151. GetProcedureAddress(_GetTempFileNameW, kernel32, 'GetTempFileNameW');
  11152. asm
  11153. MOV ESP, EBP
  11154. POP EBP
  11155. JMP [_GetTempFileNameW]
  11156. end;
  11157. end;
  11158. var
  11159. _GetTempFileName: Pointer;
  11160. function GetTempFileName;
  11161. begin
  11162. GetProcedureAddress(_GetTempFileName, kernel32, 'GetTempFileName' + AWSuffix);
  11163. asm
  11164. MOV ESP, EBP
  11165. POP EBP
  11166. JMP [_GetTempFileName]
  11167. end;
  11168. end;
  11169. var
  11170. _GetWindowsDirectoryA: Pointer;
  11171. function GetWindowsDirectoryA;
  11172. begin
  11173. GetProcedureAddress(_GetWindowsDirectoryA, kernel32, 'GetWindowsDirectoryA');
  11174. asm
  11175. MOV ESP, EBP
  11176. POP EBP
  11177. JMP [_GetWindowsDirectoryA]
  11178. end;
  11179. end;
  11180. var
  11181. _GetWindowsDirectoryW: Pointer;
  11182. function GetWindowsDirectoryW;
  11183. begin
  11184. GetProcedureAddress(_GetWindowsDirectoryW, kernel32, 'GetWindowsDirectoryW');
  11185. asm
  11186. MOV ESP, EBP
  11187. POP EBP
  11188. JMP [_GetWindowsDirectoryW]
  11189. end;
  11190. end;
  11191. var
  11192. _GetWindowsDirectory: Pointer;
  11193. function GetWindowsDirectory;
  11194. begin
  11195. GetProcedureAddress(_GetWindowsDirectory, kernel32, 'GetWindowsDirectory' + AWSuffix);
  11196. asm
  11197. MOV ESP, EBP
  11198. POP EBP
  11199. JMP [_GetWindowsDirectory]
  11200. end;
  11201. end;
  11202. var
  11203. _GetSystemWindowsDirectoryA: Pointer;
  11204. function GetSystemWindowsDirectoryA;
  11205. begin
  11206. GetProcedureAddress(_GetSystemWindowsDirectoryA, kernel32, 'GetSystemWindowsDirectoryA');
  11207. asm
  11208. MOV ESP, EBP
  11209. POP EBP
  11210. JMP [_GetSystemWindowsDirectoryA]
  11211. end;
  11212. end;
  11213. var
  11214. _GetSystemWindowsDirectoryW: Pointer;
  11215. function GetSystemWindowsDirectoryW;
  11216. begin
  11217. GetProcedureAddress(_GetSystemWindowsDirectoryW, kernel32, 'GetSystemWindowsDirectoryW');
  11218. asm
  11219. MOV ESP, EBP
  11220. POP EBP
  11221. JMP [_GetSystemWindowsDirectoryW]
  11222. end;
  11223. end;
  11224. var
  11225. _GetSystemWindowsDirectory: Pointer;
  11226. function GetSystemWindowsDirectory;
  11227. begin
  11228. GetProcedureAddress(_GetSystemWindowsDirectory, kernel32, 'GetSystemWindowsDirectory' + AWSuffix);
  11229. asm
  11230. MOV ESP, EBP
  11231. POP EBP
  11232. JMP [_GetSystemWindowsDirectory]
  11233. end;
  11234. end;
  11235. var
  11236. _GetSystemWow64DirectoryA: Pointer;
  11237. function GetSystemWow64DirectoryA;
  11238. begin
  11239. GetProcedureAddress(_GetSystemWow64DirectoryA, kernel32, 'GetSystemWow64DirectoryA');
  11240. asm
  11241. MOV ESP, EBP
  11242. POP EBP
  11243. JMP [_GetSystemWow64DirectoryA]
  11244. end;
  11245. end;
  11246. var
  11247. _GetSystemWow64DirectoryW: Pointer;
  11248. function GetSystemWow64DirectoryW;
  11249. begin
  11250. GetProcedureAddress(_GetSystemWow64DirectoryW, kernel32, 'GetSystemWow64DirectoryW');
  11251. asm
  11252. MOV ESP, EBP
  11253. POP EBP
  11254. JMP [_GetSystemWow64DirectoryW]
  11255. end;
  11256. end;
  11257. var
  11258. _GetSystemWow64Directory: Pointer;
  11259. function GetSystemWow64Directory;
  11260. begin
  11261. GetProcedureAddress(_GetSystemWow64Directory, kernel32, 'GetSystemWow64Directory' + AWSuffix);
  11262. asm
  11263. MOV ESP, EBP
  11264. POP EBP
  11265. JMP [_GetSystemWow64Directory]
  11266. end;
  11267. end;
  11268. var
  11269. _Wow64EnableWow64FsRedirection: Pointer;
  11270. function Wow64EnableWow64FsRedirection;
  11271. begin
  11272. GetProcedureAddress(_Wow64EnableWow64FsRedirection, kernel32, 'Wow64EnableWow64FsRedirection');
  11273. asm
  11274. MOV ESP, EBP
  11275. POP EBP
  11276. JMP [_Wow64EnableWow64FsRedirection]
  11277. end;
  11278. end;
  11279. var
  11280. _SetCurrentDirectoryA: Pointer;
  11281. function SetCurrentDirectoryA;
  11282. begin
  11283. GetProcedureAddress(_SetCurrentDirectoryA, kernel32, 'SetCurrentDirectoryA');
  11284. asm
  11285. MOV ESP, EBP
  11286. POP EBP
  11287. JMP [_SetCurrentDirectoryA]
  11288. end;
  11289. end;
  11290. var
  11291. _SetCurrentDirectoryW: Pointer;
  11292. function SetCurrentDirectoryW;
  11293. begin
  11294. GetProcedureAddress(_SetCurrentDirectoryW, kernel32, 'SetCurrentDirectoryW');
  11295. asm
  11296. MOV ESP, EBP
  11297. POP EBP
  11298. JMP [_SetCurrentDirectoryW]
  11299. end;
  11300. end;
  11301. var
  11302. _SetCurrentDirectory: Pointer;
  11303. function SetCurrentDirectory;
  11304. begin
  11305. GetProcedureAddress(_SetCurrentDirectory, kernel32, 'SetCurrentDirectory' + AWSuffix);
  11306. asm
  11307. MOV ESP, EBP
  11308. POP EBP
  11309. JMP [_SetCurrentDirectory]
  11310. end;
  11311. end;
  11312. var
  11313. _GetCurrentDirectoryA: Pointer;
  11314. function GetCurrentDirectoryA;
  11315. begin
  11316. GetProcedureAddress(_GetCurrentDirectoryA, kernel32, 'GetCurrentDirectoryA');
  11317. asm
  11318. MOV ESP, EBP
  11319. POP EBP
  11320. JMP [_GetCurrentDirectoryA]
  11321. end;
  11322. end;
  11323. var
  11324. _GetCurrentDirectoryW: Pointer;
  11325. function GetCurrentDirectoryW;
  11326. begin
  11327. GetProcedureAddress(_GetCurrentDirectoryW, kernel32, 'GetCurrentDirectoryW');
  11328. asm
  11329. MOV ESP, EBP
  11330. POP EBP
  11331. JMP [_GetCurrentDirectoryW]
  11332. end;
  11333. end;
  11334. var
  11335. _GetCurrentDirectory: Pointer;
  11336. function GetCurrentDirectory;
  11337. begin
  11338. GetProcedureAddress(_GetCurrentDirectory, kernel32, 'GetCurrentDirectory' + AWSuffix);
  11339. asm
  11340. MOV ESP, EBP
  11341. POP EBP
  11342. JMP [_GetCurrentDirectory]
  11343. end;
  11344. end;
  11345. var
  11346. _SetDllDirectoryA: Pointer;
  11347. function SetDllDirectoryA;
  11348. begin
  11349. GetProcedureAddress(_SetDllDirectoryA, kernel32, 'SetDllDirectoryA');
  11350. asm
  11351. MOV ESP, EBP
  11352. POP EBP
  11353. JMP [_SetDllDirectoryA]
  11354. end;
  11355. end;
  11356. var
  11357. _SetDllDirectoryW: Pointer;
  11358. function SetDllDirectoryW;
  11359. begin
  11360. GetProcedureAddress(_SetDllDirectoryW, kernel32, 'SetDllDirectoryW');
  11361. asm
  11362. MOV ESP, EBP
  11363. POP EBP
  11364. JMP [_SetDllDirectoryW]
  11365. end;
  11366. end;
  11367. var
  11368. _SetDllDirectory: Pointer;
  11369. function SetDllDirectory;
  11370. begin
  11371. GetProcedureAddress(_SetDllDirectory, kernel32, 'SetDllDirectory' + AWSuffix);
  11372. asm
  11373. MOV ESP, EBP
  11374. POP EBP
  11375. JMP [_SetDllDirectory]
  11376. end;
  11377. end;
  11378. var
  11379. _GetDllDirectoryA: Pointer;
  11380. function GetDllDirectoryA;
  11381. begin
  11382. GetProcedureAddress(_GetDllDirectoryA, kernel32, 'GetDllDirectoryA');
  11383. asm
  11384. MOV ESP, EBP
  11385. POP EBP
  11386. JMP [_GetDllDirectoryA]
  11387. end;
  11388. end;
  11389. var
  11390. _GetDllDirectoryW: Pointer;
  11391. function GetDllDirectoryW;
  11392. begin
  11393. GetProcedureAddress(_GetDllDirectoryW, kernel32, 'GetDllDirectoryW');
  11394. asm
  11395. MOV ESP, EBP
  11396. POP EBP
  11397. JMP [_GetDllDirectoryW]
  11398. end;
  11399. end;
  11400. var
  11401. _GetDllDirectory: Pointer;
  11402. function GetDllDirectory;
  11403. begin
  11404. GetProcedureAddress(_GetDllDirectory, kernel32, 'GetDllDirectory' + AWSuffix);
  11405. asm
  11406. MOV ESP, EBP
  11407. POP EBP
  11408. JMP [_GetDllDirectory]
  11409. end;
  11410. end;
  11411. var
  11412. _GetDiskFreeSpaceA: Pointer;
  11413. function GetDiskFreeSpaceA;
  11414. begin
  11415. GetProcedureAddress(_GetDiskFreeSpaceA, kernel32, 'GetDiskFreeSpaceA');
  11416. asm
  11417. MOV ESP, EBP
  11418. POP EBP
  11419. JMP [_GetDiskFreeSpaceA]
  11420. end;
  11421. end;
  11422. var
  11423. _GetDiskFreeSpaceW: Pointer;
  11424. function GetDiskFreeSpaceW;
  11425. begin
  11426. GetProcedureAddress(_GetDiskFreeSpaceW, kernel32, 'GetDiskFreeSpaceW');
  11427. asm
  11428. MOV ESP, EBP
  11429. POP EBP
  11430. JMP [_GetDiskFreeSpaceW]
  11431. end;
  11432. end;
  11433. var
  11434. _GetDiskFreeSpace: Pointer;
  11435. function GetDiskFreeSpace;
  11436. begin
  11437. GetProcedureAddress(_GetDiskFreeSpace, kernel32, 'GetDiskFreeSpace' + AWSuffix);
  11438. asm
  11439. MOV ESP, EBP
  11440. POP EBP
  11441. JMP [_GetDiskFreeSpace]
  11442. end;
  11443. end;
  11444. var
  11445. _GetDiskFreeSpaceExA: Pointer;
  11446. function GetDiskFreeSpaceExA;
  11447. begin
  11448. GetProcedureAddress(_GetDiskFreeSpaceExA, kernel32, 'GetDiskFreeSpaceExA');
  11449. asm
  11450. MOV ESP, EBP
  11451. POP EBP
  11452. JMP [_GetDiskFreeSpaceExA]
  11453. end;
  11454. end;
  11455. var
  11456. _GetDiskFreeSpaceExW: Pointer;
  11457. function GetDiskFreeSpaceExW;
  11458. begin
  11459. GetProcedureAddress(_GetDiskFreeSpaceExW, kernel32, 'GetDiskFreeSpaceExW');
  11460. asm
  11461. MOV ESP, EBP
  11462. POP EBP
  11463. JMP [_GetDiskFreeSpaceExW]
  11464. end;
  11465. end;
  11466. var
  11467. _GetDiskFreeSpaceEx: Pointer;
  11468. function GetDiskFreeSpaceEx;
  11469. begin
  11470. GetProcedureAddress(_GetDiskFreeSpaceEx, kernel32, 'GetDiskFreeSpaceEx' + AWSuffix);
  11471. asm
  11472. MOV ESP, EBP
  11473. POP EBP
  11474. JMP [_GetDiskFreeSpaceEx]
  11475. end;
  11476. end;
  11477. var
  11478. _CreateDirectoryA: Pointer;
  11479. function CreateDirectoryA;
  11480. begin
  11481. GetProcedureAddress(_CreateDirectoryA, kernel32, 'CreateDirectoryA');
  11482. asm
  11483. MOV ESP, EBP
  11484. POP EBP
  11485. JMP [_CreateDirectoryA]
  11486. end;
  11487. end;
  11488. var
  11489. _CreateDirectoryW: Pointer;
  11490. function CreateDirectoryW;
  11491. begin
  11492. GetProcedureAddress(_CreateDirectoryW, kernel32, 'CreateDirectoryW');
  11493. asm
  11494. MOV ESP, EBP
  11495. POP EBP
  11496. JMP [_CreateDirectoryW]
  11497. end;
  11498. end;
  11499. var
  11500. _CreateDirectory: Pointer;
  11501. function CreateDirectory;
  11502. begin
  11503. GetProcedureAddress(_CreateDirectory, kernel32, 'CreateDirectory' + AWSuffix);
  11504. asm
  11505. MOV ESP, EBP
  11506. POP EBP
  11507. JMP [_CreateDirectory]
  11508. end;
  11509. end;
  11510. var
  11511. _CreateDirectoryExA: Pointer;
  11512. function CreateDirectoryExA;
  11513. begin
  11514. GetProcedureAddress(_CreateDirectoryExA, kernel32, 'CreateDirectoryExA');
  11515. asm
  11516. MOV ESP, EBP
  11517. POP EBP
  11518. JMP [_CreateDirectoryExA]
  11519. end;
  11520. end;
  11521. var
  11522. _CreateDirectoryExW: Pointer;
  11523. function CreateDirectoryExW;
  11524. begin
  11525. GetProcedureAddress(_CreateDirectoryExW, kernel32, 'CreateDirectoryExW');
  11526. asm
  11527. MOV ESP, EBP
  11528. POP EBP
  11529. JMP [_CreateDirectoryExW]
  11530. end;
  11531. end;
  11532. var
  11533. _CreateDirectoryEx: Pointer;
  11534. function CreateDirectoryEx;
  11535. begin
  11536. GetProcedureAddress(_CreateDirectoryEx, kernel32, 'CreateDirectoryEx' + AWSuffix);
  11537. asm
  11538. MOV ESP, EBP
  11539. POP EBP
  11540. JMP [_CreateDirectoryEx]
  11541. end;
  11542. end;
  11543. var
  11544. _RemoveDirectoryA: Pointer;
  11545. function RemoveDirectoryA;
  11546. begin
  11547. GetProcedureAddress(_RemoveDirectoryA, kernel32, 'RemoveDirectoryA');
  11548. asm
  11549. MOV ESP, EBP
  11550. POP EBP
  11551. JMP [_RemoveDirectoryA]
  11552. end;
  11553. end;
  11554. var
  11555. _RemoveDirectoryW: Pointer;
  11556. function RemoveDirectoryW;
  11557. begin
  11558. GetProcedureAddress(_RemoveDirectoryW, kernel32, 'RemoveDirectoryW');
  11559. asm
  11560. MOV ESP, EBP
  11561. POP EBP
  11562. JMP [_RemoveDirectoryW]
  11563. end;
  11564. end;
  11565. var
  11566. _RemoveDirectory: Pointer;
  11567. function RemoveDirectory;
  11568. begin
  11569. GetProcedureAddress(_RemoveDirectory, kernel32, 'RemoveDirectory' + AWSuffix);
  11570. asm
  11571. MOV ESP, EBP
  11572. POP EBP
  11573. JMP [_RemoveDirectory]
  11574. end;
  11575. end;
  11576. var
  11577. _GetFullPathNameA: Pointer;
  11578. function GetFullPathNameA;
  11579. begin
  11580. GetProcedureAddress(_GetFullPathNameA, kernel32, 'GetFullPathNameA');
  11581. asm
  11582. MOV ESP, EBP
  11583. POP EBP
  11584. JMP [_GetFullPathNameA]
  11585. end;
  11586. end;
  11587. var
  11588. _GetFullPathNameW: Pointer;
  11589. function GetFullPathNameW;
  11590. begin
  11591. GetProcedureAddress(_GetFullPathNameW, kernel32, 'GetFullPathNameW');
  11592. asm
  11593. MOV ESP, EBP
  11594. POP EBP
  11595. JMP [_GetFullPathNameW]
  11596. end;
  11597. end;
  11598. var
  11599. _GetFullPathName: Pointer;
  11600. function GetFullPathName;
  11601. begin
  11602. GetProcedureAddress(_GetFullPathName, kernel32, 'GetFullPathName' + AWSuffix);
  11603. asm
  11604. MOV ESP, EBP
  11605. POP EBP
  11606. JMP [_GetFullPathName]
  11607. end;
  11608. end;
  11609. var
  11610. _DefineDosDeviceA: Pointer;
  11611. function DefineDosDeviceA;
  11612. begin
  11613. GetProcedureAddress(_DefineDosDeviceA, kernel32, 'DefineDosDeviceA');
  11614. asm
  11615. MOV ESP, EBP
  11616. POP EBP
  11617. JMP [_DefineDosDeviceA]
  11618. end;
  11619. end;
  11620. var
  11621. _DefineDosDeviceW: Pointer;
  11622. function DefineDosDeviceW;
  11623. begin
  11624. GetProcedureAddress(_DefineDosDeviceW, kernel32, 'DefineDosDeviceW');
  11625. asm
  11626. MOV ESP, EBP
  11627. POP EBP
  11628. JMP [_DefineDosDeviceW]
  11629. end;
  11630. end;
  11631. var
  11632. _DefineDosDevice: Pointer;
  11633. function DefineDosDevice;
  11634. begin
  11635. GetProcedureAddress(_DefineDosDevice, kernel32, 'DefineDosDevice' + AWSuffix);
  11636. asm
  11637. MOV ESP, EBP
  11638. POP EBP
  11639. JMP [_DefineDosDevice]
  11640. end;
  11641. end;
  11642. var
  11643. _QueryDosDeviceA: Pointer;
  11644. function QueryDosDeviceA;
  11645. begin
  11646. GetProcedureAddress(_QueryDosDeviceA, kernel32, 'QueryDosDeviceA');
  11647. asm
  11648. MOV ESP, EBP
  11649. POP EBP
  11650. JMP [_QueryDosDeviceA]
  11651. end;
  11652. end;
  11653. var
  11654. _QueryDosDeviceW: Pointer;
  11655. function QueryDosDeviceW;
  11656. begin
  11657. GetProcedureAddress(_QueryDosDeviceW, kernel32, 'QueryDosDeviceW');
  11658. asm
  11659. MOV ESP, EBP
  11660. POP EBP
  11661. JMP [_QueryDosDeviceW]
  11662. end;
  11663. end;
  11664. var
  11665. _QueryDosDevice: Pointer;
  11666. function QueryDosDevice;
  11667. begin
  11668. GetProcedureAddress(_QueryDosDevice, kernel32, 'QueryDosDevice' + AWSuffix);
  11669. asm
  11670. MOV ESP, EBP
  11671. POP EBP
  11672. JMP [_QueryDosDevice]
  11673. end;
  11674. end;
  11675. var
  11676. _CreateFileA: Pointer;
  11677. function CreateFileA;
  11678. begin
  11679. GetProcedureAddress(_CreateFileA, kernel32, 'CreateFileA');
  11680. asm
  11681. MOV ESP, EBP
  11682. POP EBP
  11683. JMP [_CreateFileA]
  11684. end;
  11685. end;
  11686. var
  11687. _CreateFileW: Pointer;
  11688. function CreateFileW;
  11689. begin
  11690. GetProcedureAddress(_CreateFileW, kernel32, 'CreateFileW');
  11691. asm
  11692. MOV ESP, EBP
  11693. POP EBP
  11694. JMP [_CreateFileW]
  11695. end;
  11696. end;
  11697. var
  11698. _CreateFile: Pointer;
  11699. function CreateFile;
  11700. begin
  11701. GetProcedureAddress(_CreateFile, kernel32, 'CreateFile' + AWSuffix);
  11702. asm
  11703. MOV ESP, EBP
  11704. POP EBP
  11705. JMP [_CreateFile]
  11706. end;
  11707. end;
  11708. var
  11709. _ReOpenFile: Pointer;
  11710. function ReOpenFile;
  11711. begin
  11712. GetProcedureAddress(_ReOpenFile, kernel32, 'ReOpenFile');
  11713. asm
  11714. MOV ESP, EBP
  11715. POP EBP
  11716. JMP [_ReOpenFile]
  11717. end;
  11718. end;
  11719. var
  11720. _SetFileAttributesA: Pointer;
  11721. function SetFileAttributesA;
  11722. begin
  11723. GetProcedureAddress(_SetFileAttributesA, kernel32, 'SetFileAttributesA');
  11724. asm
  11725. MOV ESP, EBP
  11726. POP EBP
  11727. JMP [_SetFileAttributesA]
  11728. end;
  11729. end;
  11730. var
  11731. _SetFileAttributesW: Pointer;
  11732. function SetFileAttributesW;
  11733. begin
  11734. GetProcedureAddress(_SetFileAttributesW, kernel32, 'SetFileAttributesW');
  11735. asm
  11736. MOV ESP, EBP
  11737. POP EBP
  11738. JMP [_SetFileAttributesW]
  11739. end;
  11740. end;
  11741. var
  11742. _SetFileAttributes: Pointer;
  11743. function SetFileAttributes;
  11744. begin
  11745. GetProcedureAddress(_SetFileAttributes, kernel32, 'SetFileAttributes' + AWSuffix);
  11746. asm
  11747. MOV ESP, EBP
  11748. POP EBP
  11749. JMP [_SetFileAttributes]
  11750. end;
  11751. end;
  11752. var
  11753. _GetFileAttributesA: Pointer;
  11754. function GetFileAttributesA;
  11755. begin
  11756. GetProcedureAddress(_GetFileAttributesA, kernel32, 'GetFileAttributesA');
  11757. asm
  11758. MOV ESP, EBP
  11759. POP EBP
  11760. JMP [_GetFileAttributesA]
  11761. end;
  11762. end;
  11763. var
  11764. _GetFileAttributesW: Pointer;
  11765. function GetFileAttributesW;
  11766. begin
  11767. GetProcedureAddress(_GetFileAttributesW, kernel32, 'GetFileAttributesW');
  11768. asm
  11769. MOV ESP, EBP
  11770. POP EBP
  11771. JMP [_GetFileAttributesW]
  11772. end;
  11773. end;
  11774. var
  11775. _GetFileAttributes: Pointer;
  11776. function GetFileAttributes;
  11777. begin
  11778. GetProcedureAddress(_GetFileAttributes, kernel32, 'GetFileAttributes' + AWSuffix);
  11779. asm
  11780. MOV ESP, EBP
  11781. POP EBP
  11782. JMP [_GetFileAttributes]
  11783. end;
  11784. end;
  11785. var
  11786. _GetFileAttributesExA: Pointer;
  11787. function GetFileAttributesExA;
  11788. begin
  11789. GetProcedureAddress(_GetFileAttributesExA, kernel32, 'GetFileAttributesExA');
  11790. asm
  11791. MOV ESP, EBP
  11792. POP EBP
  11793. JMP [_GetFileAttributesExA]
  11794. end;
  11795. end;
  11796. var
  11797. _GetFileAttributesExW: Pointer;
  11798. function GetFileAttributesExW;
  11799. begin
  11800. GetProcedureAddress(_GetFileAttributesExW, kernel32, 'GetFileAttributesExW');
  11801. asm
  11802. MOV ESP, EBP
  11803. POP EBP
  11804. JMP [_GetFileAttributesExW]
  11805. end;
  11806. end;
  11807. var
  11808. _GetFileAttributesEx: Pointer;
  11809. function GetFileAttributesEx;
  11810. begin
  11811. GetProcedureAddress(_GetFileAttributesEx, kernel32, 'GetFileAttributesEx' + AWSuffix);
  11812. asm
  11813. MOV ESP, EBP
  11814. POP EBP
  11815. JMP [_GetFileAttributesEx]
  11816. end;
  11817. end;
  11818. var
  11819. _GetCompressedFileSizeA: Pointer;
  11820. function GetCompressedFileSizeA;
  11821. begin
  11822. GetProcedureAddress(_GetCompressedFileSizeA, kernel32, 'GetCompressedFileSizeA');
  11823. asm
  11824. MOV ESP, EBP
  11825. POP EBP
  11826. JMP [_GetCompressedFileSizeA]
  11827. end;
  11828. end;
  11829. var
  11830. _GetCompressedFileSizeW: Pointer;
  11831. function GetCompressedFileSizeW;
  11832. begin
  11833. GetProcedureAddress(_GetCompressedFileSizeW, kernel32, 'GetCompressedFileSizeW');
  11834. asm
  11835. MOV ESP, EBP
  11836. POP EBP
  11837. JMP [_GetCompressedFileSizeW]
  11838. end;
  11839. end;
  11840. var
  11841. _GetCompressedFileSize: Pointer;
  11842. function GetCompressedFileSize;
  11843. begin
  11844. GetProcedureAddress(_GetCompressedFileSize, kernel32, 'GetCompressedFileSize' + AWSuffix);
  11845. asm
  11846. MOV ESP, EBP
  11847. POP EBP
  11848. JMP [_GetCompressedFileSize]
  11849. end;
  11850. end;
  11851. var
  11852. _DeleteFileA: Pointer;
  11853. function DeleteFileA;
  11854. begin
  11855. GetProcedureAddress(_DeleteFileA, kernel32, 'DeleteFileA');
  11856. asm
  11857. MOV ESP, EBP
  11858. POP EBP
  11859. JMP [_DeleteFileA]
  11860. end;
  11861. end;
  11862. var
  11863. _DeleteFileW: Pointer;
  11864. function DeleteFileW;
  11865. begin
  11866. GetProcedureAddress(_DeleteFileW, kernel32, 'DeleteFileW');
  11867. asm
  11868. MOV ESP, EBP
  11869. POP EBP
  11870. JMP [_DeleteFileW]
  11871. end;
  11872. end;
  11873. var
  11874. _DeleteFile: Pointer;
  11875. function DeleteFile;
  11876. begin
  11877. GetProcedureAddress(_DeleteFile, kernel32, 'DeleteFile' + AWSuffix);
  11878. asm
  11879. MOV ESP, EBP
  11880. POP EBP
  11881. JMP [_DeleteFile]
  11882. end;
  11883. end;
  11884. var
  11885. _FindFirstFileExA: Pointer;
  11886. function FindFirstFileExA;
  11887. begin
  11888. GetProcedureAddress(_FindFirstFileExA, kernel32, 'FindFirstFileExA');
  11889. asm
  11890. MOV ESP, EBP
  11891. POP EBP
  11892. JMP [_FindFirstFileExA]
  11893. end;
  11894. end;
  11895. var
  11896. _FindFirstFileExW: Pointer;
  11897. function FindFirstFileExW;
  11898. begin
  11899. GetProcedureAddress(_FindFirstFileExW, kernel32, 'FindFirstFileExW');
  11900. asm
  11901. MOV ESP, EBP
  11902. POP EBP
  11903. JMP [_FindFirstFileExW]
  11904. end;
  11905. end;
  11906. var
  11907. _FindFirstFileEx: Pointer;
  11908. function FindFirstFileEx;
  11909. begin
  11910. GetProcedureAddress(_FindFirstFileEx, kernel32, 'FindFirstFileEx' + AWSuffix);
  11911. asm
  11912. MOV ESP, EBP
  11913. POP EBP
  11914. JMP [_FindFirstFileEx]
  11915. end;
  11916. end;
  11917. var
  11918. _FindFirstFileA: Pointer;
  11919. function FindFirstFileA;
  11920. begin
  11921. GetProcedureAddress(_FindFirstFileA, kernel32, 'FindFirstFileA');
  11922. asm
  11923. MOV ESP, EBP
  11924. POP EBP
  11925. JMP [_FindFirstFileA]
  11926. end;
  11927. end;
  11928. var
  11929. _FindFirstFileW: Pointer;
  11930. function FindFirstFileW;
  11931. begin
  11932. GetProcedureAddress(_FindFirstFileW, kernel32, 'FindFirstFileW');
  11933. asm
  11934. MOV ESP, EBP
  11935. POP EBP
  11936. JMP [_FindFirstFileW]
  11937. end;
  11938. end;
  11939. var
  11940. _FindFirstFile: Pointer;
  11941. function FindFirstFile;
  11942. begin
  11943. GetProcedureAddress(_FindFirstFile, kernel32, 'FindFirstFile' + AWSuffix);
  11944. asm
  11945. MOV ESP, EBP
  11946. POP EBP
  11947. JMP [_FindFirstFile]
  11948. end;
  11949. end;
  11950. var
  11951. _FindNextFileA: Pointer;
  11952. function FindNextFileA;
  11953. begin
  11954. GetProcedureAddress(_FindNextFileA, kernel32, 'FindNextFileA');
  11955. asm
  11956. MOV ESP, EBP
  11957. POP EBP
  11958. JMP [_FindNextFileA]
  11959. end;
  11960. end;
  11961. var
  11962. _FindNextFileW: Pointer;
  11963. function FindNextFileW;
  11964. begin
  11965. GetProcedureAddress(_FindNextFileW, kernel32, 'FindNextFileW');
  11966. asm
  11967. MOV ESP, EBP
  11968. POP EBP
  11969. JMP [_FindNextFileW]
  11970. end;
  11971. end;
  11972. var
  11973. _FindNextFile: Pointer;
  11974. function FindNextFile;
  11975. begin
  11976. GetProcedureAddress(_FindNextFile, kernel32, 'FindNextFile' + AWSuffix);
  11977. asm
  11978. MOV ESP, EBP
  11979. POP EBP
  11980. JMP [_FindNextFile]
  11981. end;
  11982. end;
  11983. var
  11984. _SearchPathA: Pointer;
  11985. function SearchPathA;
  11986. begin
  11987. GetProcedureAddress(_SearchPathA, kernel32, 'SearchPathA');
  11988. asm
  11989. MOV ESP, EBP
  11990. POP EBP
  11991. JMP [_SearchPathA]
  11992. end;
  11993. end;
  11994. var
  11995. _SearchPathW: Pointer;
  11996. function SearchPathW;
  11997. begin
  11998. GetProcedureAddress(_SearchPathW, kernel32, 'SearchPathW');
  11999. asm
  12000. MOV ESP, EBP
  12001. POP EBP
  12002. JMP [_SearchPathW]
  12003. end;
  12004. end;
  12005. var
  12006. _SearchPath: Pointer;
  12007. function SearchPath;
  12008. begin
  12009. GetProcedureAddress(_SearchPath, kernel32, 'SearchPath' + AWSuffix);
  12010. asm
  12011. MOV ESP, EBP
  12012. POP EBP
  12013. JMP [_SearchPath]
  12014. end;
  12015. end;
  12016. var
  12017. _CopyFileA: Pointer;
  12018. function CopyFileA;
  12019. begin
  12020. GetProcedureAddress(_CopyFileA, kernel32, 'CopyFileA');
  12021. asm
  12022. MOV ESP, EBP
  12023. POP EBP
  12024. JMP [_CopyFileA]
  12025. end;
  12026. end;
  12027. var
  12028. _CopyFileW: Pointer;
  12029. function CopyFileW;
  12030. begin
  12031. GetProcedureAddress(_CopyFileW, kernel32, 'CopyFileW');
  12032. asm
  12033. MOV ESP, EBP
  12034. POP EBP
  12035. JMP [_CopyFileW]
  12036. end;
  12037. end;
  12038. var
  12039. _CopyFile: Pointer;
  12040. function CopyFile;
  12041. begin
  12042. GetProcedureAddress(_CopyFile, kernel32, 'CopyFile' + AWSuffix);
  12043. asm
  12044. MOV ESP, EBP
  12045. POP EBP
  12046. JMP [_CopyFile]
  12047. end;
  12048. end;
  12049. var
  12050. _CopyFileExA: Pointer;
  12051. function CopyFileExA;
  12052. begin
  12053. GetProcedureAddress(_CopyFileExA, kernel32, 'CopyFileExA');
  12054. asm
  12055. MOV ESP, EBP
  12056. POP EBP
  12057. JMP [_CopyFileExA]
  12058. end;
  12059. end;
  12060. var
  12061. _CopyFileExW: Pointer;
  12062. function CopyFileExW;
  12063. begin
  12064. GetProcedureAddress(_CopyFileExW, kernel32, 'CopyFileExW');
  12065. asm
  12066. MOV ESP, EBP
  12067. POP EBP
  12068. JMP [_CopyFileExW]
  12069. end;
  12070. end;
  12071. var
  12072. _CopyFileEx: Pointer;
  12073. function CopyFileEx;
  12074. begin
  12075. GetProcedureAddress(_CopyFileEx, kernel32, 'CopyFileEx' + AWSuffix);
  12076. asm
  12077. MOV ESP, EBP
  12078. POP EBP
  12079. JMP [_CopyFileEx]
  12080. end;
  12081. end;
  12082. var
  12083. _MoveFileA: Pointer;
  12084. function MoveFileA;
  12085. begin
  12086. GetProcedureAddress(_MoveFileA, kernel32, 'MoveFileA');
  12087. asm
  12088. MOV ESP, EBP
  12089. POP EBP
  12090. JMP [_MoveFileA]
  12091. end;
  12092. end;
  12093. var
  12094. _MoveFileW: Pointer;
  12095. function MoveFileW;
  12096. begin
  12097. GetProcedureAddress(_MoveFileW, kernel32, 'MoveFileW');
  12098. asm
  12099. MOV ESP, EBP
  12100. POP EBP
  12101. JMP [_MoveFileW]
  12102. end;
  12103. end;
  12104. var
  12105. _MoveFile: Pointer;
  12106. function MoveFile;
  12107. begin
  12108. GetProcedureAddress(_MoveFile, kernel32, 'MoveFile' + AWSuffix);
  12109. asm
  12110. MOV ESP, EBP
  12111. POP EBP
  12112. JMP [_MoveFile]
  12113. end;
  12114. end;
  12115. var
  12116. _MoveFileExA: Pointer;
  12117. function MoveFileExA;
  12118. begin
  12119. GetProcedureAddress(_MoveFileExA, kernel32, 'MoveFileExA');
  12120. asm
  12121. MOV ESP, EBP
  12122. POP EBP
  12123. JMP [_MoveFileExA]
  12124. end;
  12125. end;
  12126. var
  12127. _MoveFileExW: Pointer;
  12128. function MoveFileExW;
  12129. begin
  12130. GetProcedureAddress(_MoveFileExW, kernel32, 'MoveFileExW');
  12131. asm
  12132. MOV ESP, EBP
  12133. POP EBP
  12134. JMP [_MoveFileExW]
  12135. end;
  12136. end;
  12137. var
  12138. _MoveFileEx: Pointer;
  12139. function MoveFileEx;
  12140. begin
  12141. GetProcedureAddress(_MoveFileEx, kernel32, 'MoveFileEx' + AWSuffix);
  12142. asm
  12143. MOV ESP, EBP
  12144. POP EBP
  12145. JMP [_MoveFileEx]
  12146. end;
  12147. end;
  12148. var
  12149. _MoveFileWithProgressA: Pointer;
  12150. function MoveFileWithProgressA;
  12151. begin
  12152. GetProcedureAddress(_MoveFileWithProgressA, kernel32, 'MoveFileWithProgressA');
  12153. asm
  12154. MOV ESP, EBP
  12155. POP EBP
  12156. JMP [_MoveFileWithProgressA]
  12157. end;
  12158. end;
  12159. var
  12160. _MoveFileWithProgressW: Pointer;
  12161. function MoveFileWithProgressW;
  12162. begin
  12163. GetProcedureAddress(_MoveFileWithProgressW, kernel32, 'MoveFileWithProgressW');
  12164. asm
  12165. MOV ESP, EBP
  12166. POP EBP
  12167. JMP [_MoveFileWithProgressW]
  12168. end;
  12169. end;
  12170. var
  12171. _MoveFileWithProgress: Pointer;
  12172. function MoveFileWithProgress;
  12173. begin
  12174. GetProcedureAddress(_MoveFileWithProgress, kernel32, 'MoveFileWithProgress' + AWSuffix);
  12175. asm
  12176. MOV ESP, EBP
  12177. POP EBP
  12178. JMP [_MoveFileWithProgress]
  12179. end;
  12180. end;
  12181. var
  12182. _ReplaceFileA: Pointer;
  12183. function ReplaceFileA;
  12184. begin
  12185. GetProcedureAddress(_ReplaceFileA, kernel32, 'ReplaceFileA');
  12186. asm
  12187. MOV ESP, EBP
  12188. POP EBP
  12189. JMP [_ReplaceFileA]
  12190. end;
  12191. end;
  12192. var
  12193. _ReplaceFileW: Pointer;
  12194. function ReplaceFileW;
  12195. begin
  12196. GetProcedureAddress(_ReplaceFileW, kernel32, 'ReplaceFileW');
  12197. asm
  12198. MOV ESP, EBP
  12199. POP EBP
  12200. JMP [_ReplaceFileW]
  12201. end;
  12202. end;
  12203. var
  12204. _ReplaceFile: Pointer;
  12205. function ReplaceFile;
  12206. begin
  12207. GetProcedureAddress(_ReplaceFile, kernel32, 'ReplaceFile' + AWSuffix);
  12208. asm
  12209. MOV ESP, EBP
  12210. POP EBP
  12211. JMP [_ReplaceFile]
  12212. end;
  12213. end;
  12214. var
  12215. _CreateHardLinkA: Pointer;
  12216. function CreateHardLinkA;
  12217. begin
  12218. GetProcedureAddress(_CreateHardLinkA, kernel32, 'CreateHardLinkA');
  12219. asm
  12220. MOV ESP, EBP
  12221. POP EBP
  12222. JMP [_CreateHardLinkA]
  12223. end;
  12224. end;
  12225. var
  12226. _CreateHardLinkW: Pointer;
  12227. function CreateHardLinkW;
  12228. begin
  12229. GetProcedureAddress(_CreateHardLinkW, kernel32, 'CreateHardLinkW');
  12230. asm
  12231. MOV ESP, EBP
  12232. POP EBP
  12233. JMP [_CreateHardLinkW]
  12234. end;
  12235. end;
  12236. var
  12237. _CreateHardLink: Pointer;
  12238. function CreateHardLink;
  12239. begin
  12240. GetProcedureAddress(_CreateHardLink, kernel32, 'CreateHardLink' + AWSuffix);
  12241. asm
  12242. MOV ESP, EBP
  12243. POP EBP
  12244. JMP [_CreateHardLink]
  12245. end;
  12246. end;
  12247. var
  12248. _FindFirstStreamW: Pointer;
  12249. function FindFirstStreamW;
  12250. begin
  12251. GetProcedureAddress(_FindFirstStreamW, kernel32, 'FindFirstStreamW');
  12252. asm
  12253. MOV ESP, EBP
  12254. POP EBP
  12255. JMP [_FindFirstStreamW]
  12256. end;
  12257. end;
  12258. var
  12259. _FindNextStreamW: Pointer;
  12260. function FindNextStreamW;
  12261. begin
  12262. GetProcedureAddress(_FindNextStreamW, kernel32, 'FindNextStreamW');
  12263. asm
  12264. MOV ESP, EBP
  12265. POP EBP
  12266. JMP [_FindNextStreamW]
  12267. end;
  12268. end;
  12269. var
  12270. _CreateNamedPipeA: Pointer;
  12271. function CreateNamedPipeA;
  12272. begin
  12273. GetProcedureAddress(_CreateNamedPipeA, kernel32, 'CreateNamedPipeA');
  12274. asm
  12275. MOV ESP, EBP
  12276. POP EBP
  12277. JMP [_CreateNamedPipeA]
  12278. end;
  12279. end;
  12280. var
  12281. _CreateNamedPipeW: Pointer;
  12282. function CreateNamedPipeW;
  12283. begin
  12284. GetProcedureAddress(_CreateNamedPipeW, kernel32, 'CreateNamedPipeW');
  12285. asm
  12286. MOV ESP, EBP
  12287. POP EBP
  12288. JMP [_CreateNamedPipeW]
  12289. end;
  12290. end;
  12291. var
  12292. _CreateNamedPipe: Pointer;
  12293. function CreateNamedPipe;
  12294. begin
  12295. GetProcedureAddress(_CreateNamedPipe, kernel32, 'CreateNamedPipe' + AWSuffix);
  12296. asm
  12297. MOV ESP, EBP
  12298. POP EBP
  12299. JMP [_CreateNamedPipe]
  12300. end;
  12301. end;
  12302. var
  12303. _GetNamedPipeHandleStateA: Pointer;
  12304. function GetNamedPipeHandleStateA;
  12305. begin
  12306. GetProcedureAddress(_GetNamedPipeHandleStateA, kernel32, 'GetNamedPipeHandleStateA');
  12307. asm
  12308. MOV ESP, EBP
  12309. POP EBP
  12310. JMP [_GetNamedPipeHandleStateA]
  12311. end;
  12312. end;
  12313. var
  12314. _GetNamedPipeHandleStateW: Pointer;
  12315. function GetNamedPipeHandleStateW;
  12316. begin
  12317. GetProcedureAddress(_GetNamedPipeHandleStateW, kernel32, 'GetNamedPipeHandleStateW');
  12318. asm
  12319. MOV ESP, EBP
  12320. POP EBP
  12321. JMP [_GetNamedPipeHandleStateW]
  12322. end;
  12323. end;
  12324. var
  12325. _GetNamedPipeHandleState: Pointer;
  12326. function GetNamedPipeHandleState;
  12327. begin
  12328. GetProcedureAddress(_GetNamedPipeHandleState, kernel32, 'GetNamedPipeHandleState' + AWSuffix);
  12329. asm
  12330. MOV ESP, EBP
  12331. POP EBP
  12332. JMP [_GetNamedPipeHandleState]
  12333. end;
  12334. end;
  12335. var
  12336. _CallNamedPipeA: Pointer;
  12337. function CallNamedPipeA;
  12338. begin
  12339. GetProcedureAddress(_CallNamedPipeA, kernel32, 'CallNamedPipeA');
  12340. asm
  12341. MOV ESP, EBP
  12342. POP EBP
  12343. JMP [_CallNamedPipeA]
  12344. end;
  12345. end;
  12346. var
  12347. _CallNamedPipeW: Pointer;
  12348. function CallNamedPipeW;
  12349. begin
  12350. GetProcedureAddress(_CallNamedPipeW, kernel32, 'CallNamedPipeW');
  12351. asm
  12352. MOV ESP, EBP
  12353. POP EBP
  12354. JMP [_CallNamedPipeW]
  12355. end;
  12356. end;
  12357. var
  12358. _CallNamedPipe: Pointer;
  12359. function CallNamedPipe;
  12360. begin
  12361. GetProcedureAddress(_CallNamedPipe, kernel32, 'CallNamedPipe' + AWSuffix);
  12362. asm
  12363. MOV ESP, EBP
  12364. POP EBP
  12365. JMP [_CallNamedPipe]
  12366. end;
  12367. end;
  12368. var
  12369. _WaitNamedPipeA: Pointer;
  12370. function WaitNamedPipeA;
  12371. begin
  12372. GetProcedureAddress(_WaitNamedPipeA, kernel32, 'WaitNamedPipeA');
  12373. asm
  12374. MOV ESP, EBP
  12375. POP EBP
  12376. JMP [_WaitNamedPipeA]
  12377. end;
  12378. end;
  12379. var
  12380. _WaitNamedPipeW: Pointer;
  12381. function WaitNamedPipeW;
  12382. begin
  12383. GetProcedureAddress(_WaitNamedPipeW, kernel32, 'WaitNamedPipeW');
  12384. asm
  12385. MOV ESP, EBP
  12386. POP EBP
  12387. JMP [_WaitNamedPipeW]
  12388. end;
  12389. end;
  12390. var
  12391. _WaitNamedPipe: Pointer;
  12392. function WaitNamedPipe;
  12393. begin
  12394. GetProcedureAddress(_WaitNamedPipe, kernel32, 'WaitNamedPipe' + AWSuffix);
  12395. asm
  12396. MOV ESP, EBP
  12397. POP EBP
  12398. JMP [_WaitNamedPipe]
  12399. end;
  12400. end;
  12401. var
  12402. _SetVolumeLabelA: Pointer;
  12403. function SetVolumeLabelA;
  12404. begin
  12405. GetProcedureAddress(_SetVolumeLabelA, kernel32, 'SetVolumeLabelA');
  12406. asm
  12407. MOV ESP, EBP
  12408. POP EBP
  12409. JMP [_SetVolumeLabelA]
  12410. end;
  12411. end;
  12412. var
  12413. _SetVolumeLabelW: Pointer;
  12414. function SetVolumeLabelW;
  12415. begin
  12416. GetProcedureAddress(_SetVolumeLabelW, kernel32, 'SetVolumeLabelW');
  12417. asm
  12418. MOV ESP, EBP
  12419. POP EBP
  12420. JMP [_SetVolumeLabelW]
  12421. end;
  12422. end;
  12423. var
  12424. _SetVolumeLabel: Pointer;
  12425. function SetVolumeLabel;
  12426. begin
  12427. GetProcedureAddress(_SetVolumeLabel, kernel32, 'SetVolumeLabel' + AWSuffix);
  12428. asm
  12429. MOV ESP, EBP
  12430. POP EBP
  12431. JMP [_SetVolumeLabel]
  12432. end;
  12433. end;
  12434. var
  12435. _SetFileApisToOEM: Pointer;
  12436. procedure SetFileApisToOEM;
  12437. begin
  12438. GetProcedureAddress(_SetFileApisToOEM, kernel32, 'SetFileApisToOEM');
  12439. asm
  12440. MOV ESP, EBP
  12441. POP EBP
  12442. JMP [_SetFileApisToOEM]
  12443. end;
  12444. end;
  12445. var
  12446. _SetFileApisToANSI: Pointer;
  12447. procedure SetFileApisToANSI;
  12448. begin
  12449. GetProcedureAddress(_SetFileApisToANSI, kernel32, 'SetFileApisToANSI');
  12450. asm
  12451. MOV ESP, EBP
  12452. POP EBP
  12453. JMP [_SetFileApisToANSI]
  12454. end;
  12455. end;
  12456. var
  12457. _AreFileApisANSI: Pointer;
  12458. function AreFileApisANSI;
  12459. begin
  12460. GetProcedureAddress(_AreFileApisANSI, kernel32, 'AreFileApisANSI');
  12461. asm
  12462. MOV ESP, EBP
  12463. POP EBP
  12464. JMP [_AreFileApisANSI]
  12465. end;
  12466. end;
  12467. var
  12468. _GetVolumeInformationA: Pointer;
  12469. function GetVolumeInformationA;
  12470. begin
  12471. GetProcedureAddress(_GetVolumeInformationA, kernel32, 'GetVolumeInformationA');
  12472. asm
  12473. MOV ESP, EBP
  12474. POP EBP
  12475. JMP [_GetVolumeInformationA]
  12476. end;
  12477. end;
  12478. var
  12479. _GetVolumeInformationW: Pointer;
  12480. function GetVolumeInformationW;
  12481. begin
  12482. GetProcedureAddress(_GetVolumeInformationW, kernel32, 'GetVolumeInformationW');
  12483. asm
  12484. MOV ESP, EBP
  12485. POP EBP
  12486. JMP [_GetVolumeInformationW]
  12487. end;
  12488. end;
  12489. var
  12490. _GetVolumeInformation: Pointer;
  12491. function GetVolumeInformation;
  12492. begin
  12493. GetProcedureAddress(_GetVolumeInformation, kernel32, 'GetVolumeInformation' + AWSuffix);
  12494. asm
  12495. MOV ESP, EBP
  12496. POP EBP
  12497. JMP [_GetVolumeInformation]
  12498. end;
  12499. end;
  12500. var
  12501. _CancelIo: Pointer;
  12502. function CancelIo;
  12503. begin
  12504. GetProcedureAddress(_CancelIo, kernel32, 'CancelIo');
  12505. asm
  12506. MOV ESP, EBP
  12507. POP EBP
  12508. JMP [_CancelIo]
  12509. end;
  12510. end;
  12511. var
  12512. _ClearEventLogA: Pointer;
  12513. function ClearEventLogA;
  12514. begin
  12515. GetProcedureAddress(_ClearEventLogA, advapi32, 'ClearEventLogA');
  12516. asm
  12517. MOV ESP, EBP
  12518. POP EBP
  12519. JMP [_ClearEventLogA]
  12520. end;
  12521. end;
  12522. var
  12523. _ClearEventLogW: Pointer;
  12524. function ClearEventLogW;
  12525. begin
  12526. GetProcedureAddress(_ClearEventLogW, advapi32, 'ClearEventLogW');
  12527. asm
  12528. MOV ESP, EBP
  12529. POP EBP
  12530. JMP [_ClearEventLogW]
  12531. end;
  12532. end;
  12533. var
  12534. _ClearEventLog: Pointer;
  12535. function ClearEventLog;
  12536. begin
  12537. GetProcedureAddress(_ClearEventLog, advapi32, 'ClearEventLog' + AWSuffix);
  12538. asm
  12539. MOV ESP, EBP
  12540. POP EBP
  12541. JMP [_ClearEventLog]
  12542. end;
  12543. end;
  12544. var
  12545. _BackupEventLogA: Pointer;
  12546. function BackupEventLogA;
  12547. begin
  12548. GetProcedureAddress(_BackupEventLogA, advapi32, 'BackupEventLogA');
  12549. asm
  12550. MOV ESP, EBP
  12551. POP EBP
  12552. JMP [_BackupEventLogA]
  12553. end;
  12554. end;
  12555. var
  12556. _BackupEventLogW: Pointer;
  12557. function BackupEventLogW;
  12558. begin
  12559. GetProcedureAddress(_BackupEventLogW, advapi32, 'BackupEventLogW');
  12560. asm
  12561. MOV ESP, EBP
  12562. POP EBP
  12563. JMP [_BackupEventLogW]
  12564. end;
  12565. end;
  12566. var
  12567. _BackupEventLog: Pointer;
  12568. function BackupEventLog;
  12569. begin
  12570. GetProcedureAddress(_BackupEventLog, advapi32, 'BackupEventLog' + AWSuffix);
  12571. asm
  12572. MOV ESP, EBP
  12573. POP EBP
  12574. JMP [_BackupEventLog]
  12575. end;
  12576. end;
  12577. var
  12578. _CloseEventLog: Pointer;
  12579. function CloseEventLog;
  12580. begin
  12581. GetProcedureAddress(_CloseEventLog, advapi32, 'CloseEventLog');
  12582. asm
  12583. MOV ESP, EBP
  12584. POP EBP
  12585. JMP [_CloseEventLog]
  12586. end;
  12587. end;
  12588. var
  12589. _DeregisterEventSource: Pointer;
  12590. function DeregisterEventSource;
  12591. begin
  12592. GetProcedureAddress(_DeregisterEventSource, advapi32, 'DeregisterEventSource');
  12593. asm
  12594. MOV ESP, EBP
  12595. POP EBP
  12596. JMP [_DeregisterEventSource]
  12597. end;
  12598. end;
  12599. var
  12600. _NotifyChangeEventLog: Pointer;
  12601. function NotifyChangeEventLog;
  12602. begin
  12603. GetProcedureAddress(_NotifyChangeEventLog, advapi32, 'NotifyChangeEventLog');
  12604. asm
  12605. MOV ESP, EBP
  12606. POP EBP
  12607. JMP [_NotifyChangeEventLog]
  12608. end;
  12609. end;
  12610. var
  12611. _GetNumberOfEventLogRecords: Pointer;
  12612. function GetNumberOfEventLogRecords;
  12613. begin
  12614. GetProcedureAddress(_GetNumberOfEventLogRecords, advapi32, 'GetNumberOfEventLogRecords');
  12615. asm
  12616. MOV ESP, EBP
  12617. POP EBP
  12618. JMP [_GetNumberOfEventLogRecords]
  12619. end;
  12620. end;
  12621. var
  12622. _GetOldestEventLogRecord: Pointer;
  12623. function GetOldestEventLogRecord;
  12624. begin
  12625. GetProcedureAddress(_GetOldestEventLogRecord, advapi32, 'GetOldestEventLogRecord');
  12626. asm
  12627. MOV ESP, EBP
  12628. POP EBP
  12629. JMP [_GetOldestEventLogRecord]
  12630. end;
  12631. end;
  12632. var
  12633. _OpenEventLogA: Pointer;
  12634. function OpenEventLogA;
  12635. begin
  12636. GetProcedureAddress(_OpenEventLogA, advapi32, 'OpenEventLogA');
  12637. asm
  12638. MOV ESP, EBP
  12639. POP EBP
  12640. JMP [_OpenEventLogA]
  12641. end;
  12642. end;
  12643. var
  12644. _OpenEventLogW: Pointer;
  12645. function OpenEventLogW;
  12646. begin
  12647. GetProcedureAddress(_OpenEventLogW, advapi32, 'OpenEventLogW');
  12648. asm
  12649. MOV ESP, EBP
  12650. POP EBP
  12651. JMP [_OpenEventLogW]
  12652. end;
  12653. end;
  12654. var
  12655. _OpenEventLog: Pointer;
  12656. function OpenEventLog;
  12657. begin
  12658. GetProcedureAddress(_OpenEventLog, advapi32, 'OpenEventLog' + AWSuffix);
  12659. asm
  12660. MOV ESP, EBP
  12661. POP EBP
  12662. JMP [_OpenEventLog]
  12663. end;
  12664. end;
  12665. var
  12666. _RegisterEventSourceA: Pointer;
  12667. function RegisterEventSourceA;
  12668. begin
  12669. GetProcedureAddress(_RegisterEventSourceA, advapi32, 'RegisterEventSourceA');
  12670. asm
  12671. MOV ESP, EBP
  12672. POP EBP
  12673. JMP [_RegisterEventSourceA]
  12674. end;
  12675. end;
  12676. var
  12677. _RegisterEventSourceW: Pointer;
  12678. function RegisterEventSourceW;
  12679. begin
  12680. GetProcedureAddress(_RegisterEventSourceW, advapi32, 'RegisterEventSourceW');
  12681. asm
  12682. MOV ESP, EBP
  12683. POP EBP
  12684. JMP [_RegisterEventSourceW]
  12685. end;
  12686. end;
  12687. var
  12688. _RegisterEventSource: Pointer;
  12689. function RegisterEventSource;
  12690. begin
  12691. GetProcedureAddress(_RegisterEventSource, advapi32, 'RegisterEventSource' + AWSuffix);
  12692. asm
  12693. MOV ESP, EBP
  12694. POP EBP
  12695. JMP [_RegisterEventSource]
  12696. end;
  12697. end;
  12698. var
  12699. _OpenBackupEventLogA: Pointer;
  12700. function OpenBackupEventLogA;
  12701. begin
  12702. GetProcedureAddress(_OpenBackupEventLogA, advapi32, 'OpenBackupEventLogA');
  12703. asm
  12704. MOV ESP, EBP
  12705. POP EBP
  12706. JMP [_OpenBackupEventLogA]
  12707. end;
  12708. end;
  12709. var
  12710. _OpenBackupEventLogW: Pointer;
  12711. function OpenBackupEventLogW;
  12712. begin
  12713. GetProcedureAddress(_OpenBackupEventLogW, advapi32, 'OpenBackupEventLogW');
  12714. asm
  12715. MOV ESP, EBP
  12716. POP EBP
  12717. JMP [_OpenBackupEventLogW]
  12718. end;
  12719. end;
  12720. var
  12721. _OpenBackupEventLog: Pointer;
  12722. function OpenBackupEventLog;
  12723. begin
  12724. GetProcedureAddress(_OpenBackupEventLog, advapi32, 'OpenBackupEventLog' + AWSuffix);
  12725. asm
  12726. MOV ESP, EBP
  12727. POP EBP
  12728. JMP [_OpenBackupEventLog]
  12729. end;
  12730. end;
  12731. var
  12732. _ReadEventLogA: Pointer;
  12733. function ReadEventLogA;
  12734. begin
  12735. GetProcedureAddress(_ReadEventLogA, advapi32, 'ReadEventLogA');
  12736. asm
  12737. MOV ESP, EBP
  12738. POP EBP
  12739. JMP [_ReadEventLogA]
  12740. end;
  12741. end;
  12742. var
  12743. _ReadEventLogW: Pointer;
  12744. function ReadEventLogW;
  12745. begin
  12746. GetProcedureAddress(_ReadEventLogW, advapi32, 'ReadEventLogW');
  12747. asm
  12748. MOV ESP, EBP
  12749. POP EBP
  12750. JMP [_ReadEventLogW]
  12751. end;
  12752. end;
  12753. var
  12754. _ReadEventLog: Pointer;
  12755. function ReadEventLog;
  12756. begin
  12757. GetProcedureAddress(_ReadEventLog, advapi32, 'ReadEventLog' + AWSuffix);
  12758. asm
  12759. MOV ESP, EBP
  12760. POP EBP
  12761. JMP [_ReadEventLog]
  12762. end;
  12763. end;
  12764. var
  12765. _ReportEventA: Pointer;
  12766. function ReportEventA;
  12767. begin
  12768. GetProcedureAddress(_ReportEventA, advapi32, 'ReportEventA');
  12769. asm
  12770. MOV ESP, EBP
  12771. POP EBP
  12772. JMP [_ReportEventA]
  12773. end;
  12774. end;
  12775. var
  12776. _ReportEventW: Pointer;
  12777. function ReportEventW;
  12778. begin
  12779. GetProcedureAddress(_ReportEventW, advapi32, 'ReportEventW');
  12780. asm
  12781. MOV ESP, EBP
  12782. POP EBP
  12783. JMP [_ReportEventW]
  12784. end;
  12785. end;
  12786. var
  12787. _ReportEvent: Pointer;
  12788. function ReportEvent;
  12789. begin
  12790. GetProcedureAddress(_ReportEvent, advapi32, 'ReportEvent' + AWSuffix);
  12791. asm
  12792. MOV ESP, EBP
  12793. POP EBP
  12794. JMP [_ReportEvent]
  12795. end;
  12796. end;
  12797. var
  12798. _GetEventLogInformation: Pointer;
  12799. function GetEventLogInformation;
  12800. begin
  12801. GetProcedureAddress(_GetEventLogInformation, advapi32, 'GetEventLogInformation');
  12802. asm
  12803. MOV ESP, EBP
  12804. POP EBP
  12805. JMP [_GetEventLogInformation]
  12806. end;
  12807. end;
  12808. var
  12809. _DuplicateToken: Pointer;
  12810. function DuplicateToken;
  12811. begin
  12812. GetProcedureAddress(_DuplicateToken, advapi32, 'DuplicateToken');
  12813. asm
  12814. MOV ESP, EBP
  12815. POP EBP
  12816. JMP [_DuplicateToken]
  12817. end;
  12818. end;
  12819. var
  12820. _GetKernelObjectSecurity: Pointer;
  12821. function GetKernelObjectSecurity;
  12822. begin
  12823. GetProcedureAddress(_GetKernelObjectSecurity, advapi32, 'GetKernelObjectSecurity');
  12824. asm
  12825. MOV ESP, EBP
  12826. POP EBP
  12827. JMP [_GetKernelObjectSecurity]
  12828. end;
  12829. end;
  12830. var
  12831. _ImpersonateNamedPipeClient: Pointer;
  12832. function ImpersonateNamedPipeClient;
  12833. begin
  12834. GetProcedureAddress(_ImpersonateNamedPipeClient, advapi32, 'ImpersonateNamedPipeClient');
  12835. asm
  12836. MOV ESP, EBP
  12837. POP EBP
  12838. JMP [_ImpersonateNamedPipeClient]
  12839. end;
  12840. end;
  12841. var
  12842. _ImpersonateSelf: Pointer;
  12843. function ImpersonateSelf;
  12844. begin
  12845. GetProcedureAddress(_ImpersonateSelf, advapi32, 'ImpersonateSelf');
  12846. asm
  12847. MOV ESP, EBP
  12848. POP EBP
  12849. JMP [_ImpersonateSelf]
  12850. end;
  12851. end;
  12852. var
  12853. _RevertToSelf: Pointer;
  12854. function RevertToSelf;
  12855. begin
  12856. GetProcedureAddress(_RevertToSelf, advapi32, 'RevertToSelf');
  12857. asm
  12858. MOV ESP, EBP
  12859. POP EBP
  12860. JMP [_RevertToSelf]
  12861. end;
  12862. end;
  12863. var
  12864. _SetThreadToken: Pointer;
  12865. function SetThreadToken;
  12866. begin
  12867. GetProcedureAddress(_SetThreadToken, advapi32, 'SetThreadToken');
  12868. asm
  12869. MOV ESP, EBP
  12870. POP EBP
  12871. JMP [_SetThreadToken]
  12872. end;
  12873. end;
  12874. var
  12875. _AccessCheck: Pointer;
  12876. function AccessCheck;
  12877. begin
  12878. GetProcedureAddress(_AccessCheck, advapi32, 'AccessCheck');
  12879. asm
  12880. MOV ESP, EBP
  12881. POP EBP
  12882. JMP [_AccessCheck]
  12883. end;
  12884. end;
  12885. var
  12886. _AccessCheckByType: Pointer;
  12887. function AccessCheckByType;
  12888. begin
  12889. GetProcedureAddress(_AccessCheckByType, advapi32, 'AccessCheckByType');
  12890. asm
  12891. MOV ESP, EBP
  12892. POP EBP
  12893. JMP [_AccessCheckByType]
  12894. end;
  12895. end;
  12896. var
  12897. _AccessCheckByTypeResultList: Pointer;
  12898. function AccessCheckByTypeResultList;
  12899. begin
  12900. GetProcedureAddress(_AccessCheckByTypeResultList, advapi32, 'AccessCheckByTypeResultList');
  12901. asm
  12902. MOV ESP, EBP
  12903. POP EBP
  12904. JMP [_AccessCheckByTypeResultList]
  12905. end;
  12906. end;
  12907. var
  12908. _OpenProcessToken: Pointer;
  12909. function OpenProcessToken;
  12910. begin
  12911. GetProcedureAddress(_OpenProcessToken, advapi32, 'OpenProcessToken');
  12912. asm
  12913. MOV ESP, EBP
  12914. POP EBP
  12915. JMP [_OpenProcessToken]
  12916. end;
  12917. end;
  12918. var
  12919. _OpenThreadToken: Pointer;
  12920. function OpenThreadToken;
  12921. begin
  12922. GetProcedureAddress(_OpenThreadToken, advapi32, 'OpenThreadToken');
  12923. asm
  12924. MOV ESP, EBP
  12925. POP EBP
  12926. JMP [_OpenThreadToken]
  12927. end;
  12928. end;
  12929. var
  12930. _GetTokenInformation: Pointer;
  12931. function GetTokenInformation;
  12932. begin
  12933. GetProcedureAddress(_GetTokenInformation, advapi32, 'GetTokenInformation');
  12934. asm
  12935. MOV ESP, EBP
  12936. POP EBP
  12937. JMP [_GetTokenInformation]
  12938. end;
  12939. end;
  12940. var
  12941. _SetTokenInformation: Pointer;
  12942. function SetTokenInformation;
  12943. begin
  12944. GetProcedureAddress(_SetTokenInformation, advapi32, 'SetTokenInformation');
  12945. asm
  12946. MOV ESP, EBP
  12947. POP EBP
  12948. JMP [_SetTokenInformation]
  12949. end;
  12950. end;
  12951. var
  12952. _AdjustTokenPrivileges: Pointer;
  12953. function AdjustTokenPrivileges;
  12954. begin
  12955. GetProcedureAddress(_AdjustTokenPrivileges, advapi32, 'AdjustTokenPrivileges');
  12956. asm
  12957. MOV ESP, EBP
  12958. POP EBP
  12959. JMP [_AdjustTokenPrivileges]
  12960. end;
  12961. end;
  12962. var
  12963. _AdjustTokenGroups: Pointer;
  12964. function AdjustTokenGroups;
  12965. begin
  12966. GetProcedureAddress(_AdjustTokenGroups, advapi32, 'AdjustTokenGroups');
  12967. asm
  12968. MOV ESP, EBP
  12969. POP EBP
  12970. JMP [_AdjustTokenGroups]
  12971. end;
  12972. end;
  12973. var
  12974. _PrivilegeCheck: Pointer;
  12975. function PrivilegeCheck;
  12976. begin
  12977. GetProcedureAddress(_PrivilegeCheck, advapi32, 'PrivilegeCheck');
  12978. asm
  12979. MOV ESP, EBP
  12980. POP EBP
  12981. JMP [_PrivilegeCheck]
  12982. end;
  12983. end;
  12984. var
  12985. _AccessCheckAndAuditAlarmA: Pointer;
  12986. function AccessCheckAndAuditAlarmA;
  12987. begin
  12988. GetProcedureAddress(_AccessCheckAndAuditAlarmA, advapi32, 'AccessCheckAndAuditAlarmA');
  12989. asm
  12990. MOV ESP, EBP
  12991. POP EBP
  12992. JMP [_AccessCheckAndAuditAlarmA]
  12993. end;
  12994. end;
  12995. var
  12996. _AccessCheckAndAuditAlarmW: Pointer;
  12997. function AccessCheckAndAuditAlarmW;
  12998. begin
  12999. GetProcedureAddress(_AccessCheckAndAuditAlarmW, advapi32, 'AccessCheckAndAuditAlarmW');
  13000. asm
  13001. MOV ESP, EBP
  13002. POP EBP
  13003. JMP [_AccessCheckAndAuditAlarmW]
  13004. end;
  13005. end;
  13006. var
  13007. _AccessCheckAndAuditAlarm: Pointer;
  13008. function AccessCheckAndAuditAlarm;
  13009. begin
  13010. GetProcedureAddress(_AccessCheckAndAuditAlarm, advapi32, 'AccessCheckAndAuditAlarm' + AWSuffix);
  13011. asm
  13012. MOV ESP, EBP
  13013. POP EBP
  13014. JMP [_AccessCheckAndAuditAlarm]
  13015. end;
  13016. end;
  13017. var
  13018. _AccessCheckByTypeAndAuditAlarmA: Pointer;
  13019. function AccessCheckByTypeAndAuditAlarmA;
  13020. begin
  13021. GetProcedureAddress(_AccessCheckByTypeAndAuditAlarmA, advapi32, 'AccessCheckByTypeAndAuditAlarmA');
  13022. asm
  13023. MOV ESP, EBP
  13024. POP EBP
  13025. JMP [_AccessCheckByTypeAndAuditAlarmA]
  13026. end;
  13027. end;
  13028. var
  13029. _AccessCheckByTypeAndAuditAlarmW: Pointer;
  13030. function AccessCheckByTypeAndAuditAlarmW;
  13031. begin
  13032. GetProcedureAddress(_AccessCheckByTypeAndAuditAlarmW, advapi32, 'AccessCheckByTypeAndAuditAlarmW');
  13033. asm
  13034. MOV ESP, EBP
  13035. POP EBP
  13036. JMP [_AccessCheckByTypeAndAuditAlarmW]
  13037. end;
  13038. end;
  13039. var
  13040. _AccessCheckByTypeAndAuditAlarm: Pointer;
  13041. function AccessCheckByTypeAndAuditAlarm;
  13042. begin
  13043. GetProcedureAddress(_AccessCheckByTypeAndAuditAlarm, advapi32, 'AccessCheckByTypeAndAuditAlarm' + AWSuffix);
  13044. asm
  13045. MOV ESP, EBP
  13046. POP EBP
  13047. JMP [_AccessCheckByTypeAndAuditAlarm]
  13048. end;
  13049. end;
  13050. var
  13051. _AccessCheckByTypeResultListAndA: Pointer;
  13052. function AccessCheckByTypeResultListAndAuditAlarmA;
  13053. begin
  13054. GetProcedureAddress(_AccessCheckByTypeResultListAndA, advapi32, 'AccessCheckByTypeResultListAndAuditAlarmA');
  13055. asm
  13056. MOV ESP, EBP
  13057. POP EBP
  13058. JMP [_AccessCheckByTypeResultListAndA]
  13059. end;
  13060. end;
  13061. var
  13062. _AccessCheckByTypeResultListAndW: Pointer;
  13063. function AccessCheckByTypeResultListAndAuditAlarmW;
  13064. begin
  13065. GetProcedureAddress(_AccessCheckByTypeResultListAndW, advapi32, 'AccessCheckByTypeResultListAndAuditAlarmW');
  13066. asm
  13067. MOV ESP, EBP
  13068. POP EBP
  13069. JMP [_AccessCheckByTypeResultListAndW]
  13070. end;
  13071. end;
  13072. var
  13073. _AccessCheckByTypeResultListAnd: Pointer;
  13074. function AccessCheckByTypeResultListAndAuditAlarm;
  13075. begin
  13076. GetProcedureAddress(_AccessCheckByTypeResultListAnd, advapi32, 'AccessCheckByTypeResultListAndAuditAlarm' + AWSuffix);
  13077. asm
  13078. MOV ESP, EBP
  13079. POP EBP
  13080. JMP [_AccessCheckByTypeResultListAnd]
  13081. end;
  13082. end;
  13083. var
  13084. _AccessCheckByTRLAndAAByHA: Pointer;
  13085. function AccessCheckByTypeResultListAndAuditAlarmByHandleA;
  13086. begin
  13087. GetProcedureAddress(_AccessCheckByTRLAndAAByHA, advapi32, 'AccessCheckByTypeResultListAndAuditAlarmByHandleA');
  13088. asm
  13089. MOV ESP, EBP
  13090. POP EBP
  13091. JMP [_AccessCheckByTRLAndAAByHA]
  13092. end;
  13093. end;
  13094. var
  13095. _AccessCheckByTRLAndAAByHW: Pointer;
  13096. function AccessCheckByTypeResultListAndAuditAlarmByHandleW;
  13097. begin
  13098. GetProcedureAddress(_AccessCheckByTRLAndAAByHW, advapi32, 'AccessCheckByTypeResultListAndAuditAlarmByHandleW');
  13099. asm
  13100. MOV ESP, EBP
  13101. POP EBP
  13102. JMP [_AccessCheckByTRLAndAAByHW]
  13103. end;
  13104. end;
  13105. var
  13106. _AccessCheckByTRLAndAAByH: Pointer;
  13107. function AccessCheckByTypeResultListAndAuditAlarmByHandle;
  13108. begin
  13109. GetProcedureAddress(_AccessCheckByTRLAndAAByH, advapi32, 'AccessCheckByTypeResultListAndAuditAlarmByHandle' + AWSuffix);
  13110. asm
  13111. MOV ESP, EBP
  13112. POP EBP
  13113. JMP [_AccessCheckByTRLAndAAByH]
  13114. end;
  13115. end;
  13116. var
  13117. _ObjectOpenAuditAlarmA: Pointer;
  13118. function ObjectOpenAuditAlarmA;
  13119. begin
  13120. GetProcedureAddress(_ObjectOpenAuditAlarmA, advapi32, 'ObjectOpenAuditAlarmA');
  13121. asm
  13122. MOV ESP, EBP
  13123. POP EBP
  13124. JMP [_ObjectOpenAuditAlarmA]
  13125. end;
  13126. end;
  13127. var
  13128. _ObjectOpenAuditAlarmW: Pointer;
  13129. function ObjectOpenAuditAlarmW;
  13130. begin
  13131. GetProcedureAddress(_ObjectOpenAuditAlarmW, advapi32, 'ObjectOpenAuditAlarmW');
  13132. asm
  13133. MOV ESP, EBP
  13134. POP EBP
  13135. JMP [_ObjectOpenAuditAlarmW]
  13136. end;
  13137. end;
  13138. var
  13139. _ObjectOpenAuditAlarm: Pointer;
  13140. function ObjectOpenAuditAlarm;
  13141. begin
  13142. GetProcedureAddress(_ObjectOpenAuditAlarm, advapi32, 'ObjectOpenAuditAlarm' + AWSuffix);
  13143. asm
  13144. MOV ESP, EBP
  13145. POP EBP
  13146. JMP [_ObjectOpenAuditAlarm]
  13147. end;
  13148. end;
  13149. var
  13150. _ObjectPrivilegeAuditAlarmA: Pointer;
  13151. function ObjectPrivilegeAuditAlarmA;
  13152. begin
  13153. GetProcedureAddress(_ObjectPrivilegeAuditAlarmA, advapi32, 'ObjectPrivilegeAuditAlarmA');
  13154. asm
  13155. MOV ESP, EBP
  13156. POP EBP
  13157. JMP [_ObjectPrivilegeAuditAlarmA]
  13158. end;
  13159. end;
  13160. var
  13161. _ObjectPrivilegeAuditAlarmW: Pointer;
  13162. function ObjectPrivilegeAuditAlarmW;
  13163. begin
  13164. GetProcedureAddress(_ObjectPrivilegeAuditAlarmW, advapi32, 'ObjectPrivilegeAuditAlarmW');
  13165. asm
  13166. MOV ESP, EBP
  13167. POP EBP
  13168. JMP [_ObjectPrivilegeAuditAlarmW]
  13169. end;
  13170. end;
  13171. var
  13172. _ObjectPrivilegeAuditAlarm: Pointer;
  13173. function ObjectPrivilegeAuditAlarm;
  13174. begin
  13175. GetProcedureAddress(_ObjectPrivilegeAuditAlarm, advapi32, 'ObjectPrivilegeAuditAlarm' + AWSuffix);
  13176. asm
  13177. MOV ESP, EBP
  13178. POP EBP
  13179. JMP [_ObjectPrivilegeAuditAlarm]
  13180. end;
  13181. end;
  13182. var
  13183. _ObjectCloseAuditAlarmA: Pointer;
  13184. function ObjectCloseAuditAlarmA;
  13185. begin
  13186. GetProcedureAddress(_ObjectCloseAuditAlarmA, advapi32, 'ObjectCloseAuditAlarmA');
  13187. asm
  13188. MOV ESP, EBP
  13189. POP EBP
  13190. JMP [_ObjectCloseAuditAlarmA]
  13191. end;
  13192. end;
  13193. var
  13194. _ObjectCloseAuditAlarmW: Pointer;
  13195. function ObjectCloseAuditAlarmW;
  13196. begin
  13197. GetProcedureAddress(_ObjectCloseAuditAlarmW, advapi32, 'ObjectCloseAuditAlarmW');
  13198. asm
  13199. MOV ESP, EBP
  13200. POP EBP
  13201. JMP [_ObjectCloseAuditAlarmW]
  13202. end;
  13203. end;
  13204. var
  13205. _ObjectCloseAuditAlarm: Pointer;
  13206. function ObjectCloseAuditAlarm;
  13207. begin
  13208. GetProcedureAddress(_ObjectCloseAuditAlarm, advapi32, 'ObjectCloseAuditAlarm' + AWSuffix);
  13209. asm
  13210. MOV ESP, EBP
  13211. POP EBP
  13212. JMP [_ObjectCloseAuditAlarm]
  13213. end;
  13214. end;
  13215. var
  13216. _ObjectDeleteAuditAlarmA: Pointer;
  13217. function ObjectDeleteAuditAlarmA;
  13218. begin
  13219. GetProcedureAddress(_ObjectDeleteAuditAlarmA, advapi32, 'ObjectDeleteAuditAlarmA');
  13220. asm
  13221. MOV ESP, EBP
  13222. POP EBP
  13223. JMP [_ObjectDeleteAuditAlarmA]
  13224. end;
  13225. end;
  13226. var
  13227. _ObjectDeleteAuditAlarmW: Pointer;
  13228. function ObjectDeleteAuditAlarmW;
  13229. begin
  13230. GetProcedureAddress(_ObjectDeleteAuditAlarmW, advapi32, 'ObjectDeleteAuditAlarmW');
  13231. asm
  13232. MOV ESP, EBP
  13233. POP EBP
  13234. JMP [_ObjectDeleteAuditAlarmW]
  13235. end;
  13236. end;
  13237. var
  13238. _ObjectDeleteAuditAlarm: Pointer;
  13239. function ObjectDeleteAuditAlarm;
  13240. begin
  13241. GetProcedureAddress(_ObjectDeleteAuditAlarm, advapi32, 'ObjectDeleteAuditAlarm' + AWSuffix);
  13242. asm
  13243. MOV ESP, EBP
  13244. POP EBP
  13245. JMP [_ObjectDeleteAuditAlarm]
  13246. end;
  13247. end;
  13248. var
  13249. _PrivilegedServiceAuditAlarmA: Pointer;
  13250. function PrivilegedServiceAuditAlarmA;
  13251. begin
  13252. GetProcedureAddress(_PrivilegedServiceAuditAlarmA, advapi32, 'PrivilegedServiceAuditAlarmA');
  13253. asm
  13254. MOV ESP, EBP
  13255. POP EBP
  13256. JMP [_PrivilegedServiceAuditAlarmA]
  13257. end;
  13258. end;
  13259. var
  13260. _PrivilegedServiceAuditAlarmW: Pointer;
  13261. function PrivilegedServiceAuditAlarmW;
  13262. begin
  13263. GetProcedureAddress(_PrivilegedServiceAuditAlarmW, advapi32, 'PrivilegedServiceAuditAlarmW');
  13264. asm
  13265. MOV ESP, EBP
  13266. POP EBP
  13267. JMP [_PrivilegedServiceAuditAlarmW]
  13268. end;
  13269. end;
  13270. var
  13271. _PrivilegedServiceAuditAlarm: Pointer;
  13272. function PrivilegedServiceAuditAlarm;
  13273. begin
  13274. GetProcedureAddress(_PrivilegedServiceAuditAlarm, advapi32, 'PrivilegedServiceAuditAlarm' + AWSuffix);
  13275. asm
  13276. MOV ESP, EBP
  13277. POP EBP
  13278. JMP [_PrivilegedServiceAuditAlarm]
  13279. end;
  13280. end;
  13281. var
  13282. _IsWellKnownSid: Pointer;
  13283. function IsWellKnownSid;
  13284. begin
  13285. GetProcedureAddress(_IsWellKnownSid, advapi32, 'IsWellKnownSid');
  13286. asm
  13287. MOV ESP, EBP
  13288. POP EBP
  13289. JMP [_IsWellKnownSid]
  13290. end;
  13291. end;
  13292. var
  13293. _CreateWellKnownSid: Pointer;
  13294. function CreateWellKnownSid;
  13295. begin
  13296. GetProcedureAddress(_CreateWellKnownSid, advapi32, 'CreateWellKnownSid');
  13297. asm
  13298. MOV ESP, EBP
  13299. POP EBP
  13300. JMP [_CreateWellKnownSid]
  13301. end;
  13302. end;
  13303. var
  13304. _EqualDomainSid: Pointer;
  13305. function EqualDomainSid;
  13306. begin
  13307. GetProcedureAddress(_EqualDomainSid, advapi32, 'EqualDomainSid');
  13308. asm
  13309. MOV ESP, EBP
  13310. POP EBP
  13311. JMP [_EqualDomainSid]
  13312. end;
  13313. end;
  13314. var
  13315. _GetWindowsAccountDomainSid: Pointer;
  13316. function GetWindowsAccountDomainSid;
  13317. begin
  13318. GetProcedureAddress(_GetWindowsAccountDomainSid, advapi32, 'GetWindowsAccountDomainSid');
  13319. asm
  13320. MOV ESP, EBP
  13321. POP EBP
  13322. JMP [_GetWindowsAccountDomainSid]
  13323. end;
  13324. end;
  13325. var
  13326. _IsValidSid: Pointer;
  13327. function IsValidSid;
  13328. begin
  13329. GetProcedureAddress(_IsValidSid, advapi32, 'IsValidSid');
  13330. asm
  13331. MOV ESP, EBP
  13332. POP EBP
  13333. JMP [_IsValidSid]
  13334. end;
  13335. end;
  13336. var
  13337. _EqualSid: Pointer;
  13338. function EqualSid;
  13339. begin
  13340. GetProcedureAddress(_EqualSid, advapi32, 'EqualSid');
  13341. asm
  13342. MOV ESP, EBP
  13343. POP EBP
  13344. JMP [_EqualSid]
  13345. end;
  13346. end;
  13347. var
  13348. _EqualPrefixSid: Pointer;
  13349. function EqualPrefixSid;
  13350. begin
  13351. GetProcedureAddress(_EqualPrefixSid, advapi32, 'EqualPrefixSid');
  13352. asm
  13353. MOV ESP, EBP
  13354. POP EBP
  13355. JMP [_EqualPrefixSid]
  13356. end;
  13357. end;
  13358. var
  13359. _GetSidLengthRequired: Pointer;
  13360. function GetSidLengthRequired;
  13361. begin
  13362. GetProcedureAddress(_GetSidLengthRequired, advapi32, 'GetSidLengthRequired');
  13363. asm
  13364. MOV ESP, EBP
  13365. POP EBP
  13366. JMP [_GetSidLengthRequired]
  13367. end;
  13368. end;
  13369. var
  13370. _AllocateAndInitializeSid: Pointer;
  13371. function AllocateAndInitializeSid;
  13372. begin
  13373. GetProcedureAddress(_AllocateAndInitializeSid, advapi32, 'AllocateAndInitializeSid');
  13374. asm
  13375. MOV ESP, EBP
  13376. POP EBP
  13377. JMP [_AllocateAndInitializeSid]
  13378. end;
  13379. end;
  13380. var
  13381. _FreeSid: Pointer;
  13382. function FreeSid;
  13383. begin
  13384. GetProcedureAddress(_FreeSid, advapi32, 'FreeSid');
  13385. asm
  13386. MOV ESP, EBP
  13387. POP EBP
  13388. JMP [_FreeSid]
  13389. end;
  13390. end;
  13391. var
  13392. _InitializeSid: Pointer;
  13393. function InitializeSid;
  13394. begin
  13395. GetProcedureAddress(_InitializeSid, advapi32, 'InitializeSid');
  13396. asm
  13397. MOV ESP, EBP
  13398. POP EBP
  13399. JMP [_InitializeSid]
  13400. end;
  13401. end;
  13402. var
  13403. _GetSidIdentifierAuthority: Pointer;
  13404. function GetSidIdentifierAuthority;
  13405. begin
  13406. GetProcedureAddress(_GetSidIdentifierAuthority, advapi32, 'GetSidIdentifierAuthority');
  13407. asm
  13408. MOV ESP, EBP
  13409. POP EBP
  13410. JMP [_GetSidIdentifierAuthority]
  13411. end;
  13412. end;
  13413. var
  13414. _GetSidSubAuthority: Pointer;
  13415. function GetSidSubAuthority;
  13416. begin
  13417. GetProcedureAddress(_GetSidSubAuthority, advapi32, 'GetSidSubAuthority');
  13418. asm
  13419. MOV ESP, EBP
  13420. POP EBP
  13421. JMP [_GetSidSubAuthority]
  13422. end;
  13423. end;
  13424. var
  13425. _GetSidSubAuthorityCount: Pointer;
  13426. function GetSidSubAuthorityCount;
  13427. begin
  13428. GetProcedureAddress(_GetSidSubAuthorityCount, advapi32, 'GetSidSubAuthorityCount');
  13429. asm
  13430. MOV ESP, EBP
  13431. POP EBP
  13432. JMP [_GetSidSubAuthorityCount]
  13433. end;
  13434. end;
  13435. var
  13436. _GetLengthSid: Pointer;
  13437. function GetLengthSid;
  13438. begin
  13439. GetProcedureAddress(_GetLengthSid, advapi32, 'GetLengthSid');
  13440. asm
  13441. MOV ESP, EBP
  13442. POP EBP
  13443. JMP [_GetLengthSid]
  13444. end;
  13445. end;
  13446. var
  13447. _CopySid: Pointer;
  13448. function CopySid;
  13449. begin
  13450. GetProcedureAddress(_CopySid, advapi32, 'CopySid');
  13451. asm
  13452. MOV ESP, EBP
  13453. POP EBP
  13454. JMP [_CopySid]
  13455. end;
  13456. end;
  13457. var
  13458. _AreAllAccessesGranted: Pointer;
  13459. function AreAllAccessesGranted;
  13460. begin
  13461. GetProcedureAddress(_AreAllAccessesGranted, advapi32, 'AreAllAccessesGranted');
  13462. asm
  13463. MOV ESP, EBP
  13464. POP EBP
  13465. JMP [_AreAllAccessesGranted]
  13466. end;
  13467. end;
  13468. var
  13469. _AreAnyAccessesGranted: Pointer;
  13470. function AreAnyAccessesGranted;
  13471. begin
  13472. GetProcedureAddress(_AreAnyAccessesGranted, advapi32, 'AreAnyAccessesGranted');
  13473. asm
  13474. MOV ESP, EBP
  13475. POP EBP
  13476. JMP [_AreAnyAccessesGranted]
  13477. end;
  13478. end;
  13479. var
  13480. _MapGenericMask: Pointer;
  13481. procedure MapGenericMask;
  13482. begin
  13483. GetProcedureAddress(_MapGenericMask, advapi32, 'MapGenericMask');
  13484. asm
  13485. MOV ESP, EBP
  13486. POP EBP
  13487. JMP [_MapGenericMask]
  13488. end;
  13489. end;
  13490. var
  13491. _IsValidAcl: Pointer;
  13492. function IsValidAcl;
  13493. begin
  13494. GetProcedureAddress(_IsValidAcl, advapi32, 'IsValidAcl');
  13495. asm
  13496. MOV ESP, EBP
  13497. POP EBP
  13498. JMP [_IsValidAcl]
  13499. end;
  13500. end;
  13501. var
  13502. _InitializeAcl: Pointer;
  13503. function InitializeAcl;
  13504. begin
  13505. GetProcedureAddress(_InitializeAcl, advapi32, 'InitializeAcl');
  13506. asm
  13507. MOV ESP, EBP
  13508. POP EBP
  13509. JMP [_InitializeAcl]
  13510. end;
  13511. end;
  13512. var
  13513. _GetAclInformation: Pointer;
  13514. function GetAclInformation;
  13515. begin
  13516. GetProcedureAddress(_GetAclInformation, advapi32, 'GetAclInformation');
  13517. asm
  13518. MOV ESP, EBP
  13519. POP EBP
  13520. JMP [_GetAclInformation]
  13521. end;
  13522. end;
  13523. var
  13524. _SetAclInformation: Pointer;
  13525. function SetAclInformation;
  13526. begin
  13527. GetProcedureAddress(_SetAclInformation, advapi32, 'SetAclInformation');
  13528. asm
  13529. MOV ESP, EBP
  13530. POP EBP
  13531. JMP [_SetAclInformation]
  13532. end;
  13533. end;
  13534. var
  13535. _AddAce: Pointer;
  13536. function AddAce;
  13537. begin
  13538. GetProcedureAddress(_AddAce, advapi32, 'AddAce');
  13539. asm
  13540. MOV ESP, EBP
  13541. POP EBP
  13542. JMP [_AddAce]
  13543. end;
  13544. end;
  13545. var
  13546. _DeleteAce: Pointer;
  13547. function DeleteAce;
  13548. begin
  13549. GetProcedureAddress(_DeleteAce, advapi32, 'DeleteAce');
  13550. asm
  13551. MOV ESP, EBP
  13552. POP EBP
  13553. JMP [_DeleteAce]
  13554. end;
  13555. end;
  13556. var
  13557. _GetAce: Pointer;
  13558. function GetAce;
  13559. begin
  13560. GetProcedureAddress(_GetAce, advapi32, 'GetAce');
  13561. asm
  13562. MOV ESP, EBP
  13563. POP EBP
  13564. JMP [_GetAce]
  13565. end;
  13566. end;
  13567. var
  13568. _AddAccessAllowedAce: Pointer;
  13569. function AddAccessAllowedAce;
  13570. begin
  13571. GetProcedureAddress(_AddAccessAllowedAce, advapi32, 'AddAccessAllowedAce');
  13572. asm
  13573. MOV ESP, EBP
  13574. POP EBP
  13575. JMP [_AddAccessAllowedAce]
  13576. end;
  13577. end;
  13578. var
  13579. _AddAccessAllowedAceEx: Pointer;
  13580. function AddAccessAllowedAceEx;
  13581. begin
  13582. GetProcedureAddress(_AddAccessAllowedAceEx, advapi32, 'AddAccessAllowedAceEx');
  13583. asm
  13584. MOV ESP, EBP
  13585. POP EBP
  13586. JMP [_AddAccessAllowedAceEx]
  13587. end;
  13588. end;
  13589. var
  13590. _AddAccessDeniedAce: Pointer;
  13591. function AddAccessDeniedAce;
  13592. begin
  13593. GetProcedureAddress(_AddAccessDeniedAce, advapi32, 'AddAccessDeniedAce');
  13594. asm
  13595. MOV ESP, EBP
  13596. POP EBP
  13597. JMP [_AddAccessDeniedAce]
  13598. end;
  13599. end;
  13600. var
  13601. _AddAccessDeniedAceEx: Pointer;
  13602. function AddAccessDeniedAceEx;
  13603. begin
  13604. GetProcedureAddress(_AddAccessDeniedAceEx, advapi32, 'AddAccessDeniedAceEx');
  13605. asm
  13606. MOV ESP, EBP
  13607. POP EBP
  13608. JMP [_AddAccessDeniedAceEx]
  13609. end;
  13610. end;
  13611. var
  13612. _AddAuditAccessAce: Pointer;
  13613. function AddAuditAccessAce;
  13614. begin
  13615. GetProcedureAddress(_AddAuditAccessAce, advapi32, 'AddAuditAccessAce');
  13616. asm
  13617. MOV ESP, EBP
  13618. POP EBP
  13619. JMP [_AddAuditAccessAce]
  13620. end;
  13621. end;
  13622. var
  13623. _AddAuditAccessAceEx: Pointer;
  13624. function AddAuditAccessAceEx;
  13625. begin
  13626. GetProcedureAddress(_AddAuditAccessAceEx, advapi32, 'AddAuditAccessAceEx');
  13627. asm
  13628. MOV ESP, EBP
  13629. POP EBP
  13630. JMP [_AddAuditAccessAceEx]
  13631. end;
  13632. end;
  13633. var
  13634. _AddAccessAllowedObjectAce: Pointer;
  13635. function AddAccessAllowedObjectAce;
  13636. begin
  13637. GetProcedureAddress(_AddAccessAllowedObjectAce, advapi32, 'AddAccessAllowedObjectAce');
  13638. asm
  13639. MOV ESP, EBP
  13640. POP EBP
  13641. JMP [_AddAccessAllowedObjectAce]
  13642. end;
  13643. end;
  13644. var
  13645. _AddAccessDeniedObjectAce: Pointer;
  13646. function AddAccessDeniedObjectAce;
  13647. begin
  13648. GetProcedureAddress(_AddAccessDeniedObjectAce, advapi32, 'AddAccessDeniedObjectAce');
  13649. asm
  13650. MOV ESP, EBP
  13651. POP EBP
  13652. JMP [_AddAccessDeniedObjectAce]
  13653. end;
  13654. end;
  13655. var
  13656. _AddAuditAccessObjectAce: Pointer;
  13657. function AddAuditAccessObjectAce;
  13658. begin
  13659. GetProcedureAddress(_AddAuditAccessObjectAce, advapi32, 'AddAuditAccessObjectAce');
  13660. asm
  13661. MOV ESP, EBP
  13662. POP EBP
  13663. JMP [_AddAuditAccessObjectAce]
  13664. end;
  13665. end;
  13666. var
  13667. _FindFirstFreeAce: Pointer;
  13668. function FindFirstFreeAce;
  13669. begin
  13670. GetProcedureAddress(_FindFirstFreeAce, advapi32, 'FindFirstFreeAce');
  13671. asm
  13672. MOV ESP, EBP
  13673. POP EBP
  13674. JMP [_FindFirstFreeAce]
  13675. end;
  13676. end;
  13677. var
  13678. _InitializeSecurityDescriptor: Pointer;
  13679. function InitializeSecurityDescriptor;
  13680. begin
  13681. GetProcedureAddress(_InitializeSecurityDescriptor, advapi32, 'InitializeSecurityDescriptor');
  13682. asm
  13683. MOV ESP, EBP
  13684. POP EBP
  13685. JMP [_InitializeSecurityDescriptor]
  13686. end;
  13687. end;
  13688. var
  13689. _IsValidSecurityDescriptor: Pointer;
  13690. function IsValidSecurityDescriptor;
  13691. begin
  13692. GetProcedureAddress(_IsValidSecurityDescriptor, advapi32, 'IsValidSecurityDescriptor');
  13693. asm
  13694. MOV ESP, EBP
  13695. POP EBP
  13696. JMP [_IsValidSecurityDescriptor]
  13697. end;
  13698. end;
  13699. var
  13700. _GetSecurityDescriptorLength: Pointer;
  13701. function GetSecurityDescriptorLength;
  13702. begin
  13703. GetProcedureAddress(_GetSecurityDescriptorLength, advapi32, 'GetSecurityDescriptorLength');
  13704. asm
  13705. MOV ESP, EBP
  13706. POP EBP
  13707. JMP [_GetSecurityDescriptorLength]
  13708. end;
  13709. end;
  13710. var
  13711. _GetSecurityDescriptorControl: Pointer;
  13712. function GetSecurityDescriptorControl;
  13713. begin
  13714. GetProcedureAddress(_GetSecurityDescriptorControl, advapi32, 'GetSecurityDescriptorControl');
  13715. asm
  13716. MOV ESP, EBP
  13717. POP EBP
  13718. JMP [_GetSecurityDescriptorControl]
  13719. end;
  13720. end;
  13721. var
  13722. _SetSecurityDescriptorControl: Pointer;
  13723. function SetSecurityDescriptorControl;
  13724. begin
  13725. GetProcedureAddress(_SetSecurityDescriptorControl, advapi32, 'SetSecurityDescriptorControl');
  13726. asm
  13727. MOV ESP, EBP
  13728. POP EBP
  13729. JMP [_SetSecurityDescriptorControl]
  13730. end;
  13731. end;
  13732. var
  13733. _SetSecurityDescriptorDacl: Pointer;
  13734. function SetSecurityDescriptorDacl;
  13735. begin
  13736. GetProcedureAddress(_SetSecurityDescriptorDacl, advapi32, 'SetSecurityDescriptorDacl');
  13737. asm
  13738. MOV ESP, EBP
  13739. POP EBP
  13740. JMP [_SetSecurityDescriptorDacl]
  13741. end;
  13742. end;
  13743. var
  13744. _GetSecurityDescriptorDacl: Pointer;
  13745. function GetSecurityDescriptorDacl;
  13746. begin
  13747. GetProcedureAddress(_GetSecurityDescriptorDacl, advapi32, 'GetSecurityDescriptorDacl');
  13748. asm
  13749. MOV ESP, EBP
  13750. POP EBP
  13751. JMP [_GetSecurityDescriptorDacl]
  13752. end;
  13753. end;
  13754. var
  13755. _SetSecurityDescriptorSacl: Pointer;
  13756. function SetSecurityDescriptorSacl;
  13757. begin
  13758. GetProcedureAddress(_SetSecurityDescriptorSacl, advapi32, 'SetSecurityDescriptorSacl');
  13759. asm
  13760. MOV ESP, EBP
  13761. POP EBP
  13762. JMP [_SetSecurityDescriptorSacl]
  13763. end;
  13764. end;
  13765. var
  13766. _GetSecurityDescriptorSacl: Pointer;
  13767. function GetSecurityDescriptorSacl;
  13768. begin
  13769. GetProcedureAddress(_GetSecurityDescriptorSacl, advapi32, 'GetSecurityDescriptorSacl');
  13770. asm
  13771. MOV ESP, EBP
  13772. POP EBP
  13773. JMP [_GetSecurityDescriptorSacl]
  13774. end;
  13775. end;
  13776. var
  13777. _SetSecurityDescriptorOwner: Pointer;
  13778. function SetSecurityDescriptorOwner;
  13779. begin
  13780. GetProcedureAddress(_SetSecurityDescriptorOwner, advapi32, 'SetSecurityDescriptorOwner');
  13781. asm
  13782. MOV ESP, EBP
  13783. POP EBP
  13784. JMP [_SetSecurityDescriptorOwner]
  13785. end;
  13786. end;
  13787. var
  13788. _GetSecurityDescriptorOwner: Pointer;
  13789. function GetSecurityDescriptorOwner;
  13790. begin
  13791. GetProcedureAddress(_GetSecurityDescriptorOwner, advapi32, 'GetSecurityDescriptorOwner');
  13792. asm
  13793. MOV ESP, EBP
  13794. POP EBP
  13795. JMP [_GetSecurityDescriptorOwner]
  13796. end;
  13797. end;
  13798. var
  13799. _SetSecurityDescriptorGroup: Pointer;
  13800. function SetSecurityDescriptorGroup;
  13801. begin
  13802. GetProcedureAddress(_SetSecurityDescriptorGroup, advapi32, 'SetSecurityDescriptorGroup');
  13803. asm
  13804. MOV ESP, EBP
  13805. POP EBP
  13806. JMP [_SetSecurityDescriptorGroup]
  13807. end;
  13808. end;
  13809. var
  13810. _GetSecurityDescriptorGroup: Pointer;
  13811. function GetSecurityDescriptorGroup;
  13812. begin
  13813. GetProcedureAddress(_GetSecurityDescriptorGroup, advapi32, 'GetSecurityDescriptorGroup');
  13814. asm
  13815. MOV ESP, EBP
  13816. POP EBP
  13817. JMP [_GetSecurityDescriptorGroup]
  13818. end;
  13819. end;
  13820. var
  13821. _SetSecurityDescriptorRMControl: Pointer;
  13822. function SetSecurityDescriptorRMControl;
  13823. begin
  13824. GetProcedureAddress(_SetSecurityDescriptorRMControl, advapi32, 'SetSecurityDescriptorRMControl');
  13825. asm
  13826. MOV ESP, EBP
  13827. POP EBP
  13828. JMP [_SetSecurityDescriptorRMControl]
  13829. end;
  13830. end;
  13831. var
  13832. _GetSecurityDescriptorRMControl: Pointer;
  13833. function GetSecurityDescriptorRMControl;
  13834. begin
  13835. GetProcedureAddress(_GetSecurityDescriptorRMControl, advapi32, 'GetSecurityDescriptorRMControl');
  13836. asm
  13837. MOV ESP, EBP
  13838. POP EBP
  13839. JMP [_GetSecurityDescriptorRMControl]
  13840. end;
  13841. end;
  13842. var
  13843. _CreatePrivateObjectSecurity: Pointer;
  13844. function CreatePrivateObjectSecurity;
  13845. begin
  13846. GetProcedureAddress(_CreatePrivateObjectSecurity, advapi32, 'CreatePrivateObjectSecurity');
  13847. asm
  13848. MOV ESP, EBP
  13849. POP EBP
  13850. JMP [_CreatePrivateObjectSecurity]
  13851. end;
  13852. end;
  13853. var
  13854. _ConvertToAutoInheritPrObjSec: Pointer;
  13855. function ConvertToAutoInheritPrivateObjectSecurity;
  13856. begin
  13857. GetProcedureAddress(_ConvertToAutoInheritPrObjSec, advapi32, 'ConvertToAutoInheritPrivateObjectSecurity');
  13858. asm
  13859. MOV ESP, EBP
  13860. POP EBP
  13861. JMP [_ConvertToAutoInheritPrObjSec]
  13862. end;
  13863. end;
  13864. var
  13865. _CreatePrivateObjectSecurityEx: Pointer;
  13866. function CreatePrivateObjectSecurityEx;
  13867. begin
  13868. GetProcedureAddress(_CreatePrivateObjectSecurityEx, advapi32, 'CreatePrivateObjectSecurityEx');
  13869. asm
  13870. MOV ESP, EBP
  13871. POP EBP
  13872. JMP [_CreatePrivateObjectSecurityEx]
  13873. end;
  13874. end;
  13875. var
  13876. _SetPrivateObjectSecurity: Pointer;
  13877. function SetPrivateObjectSecurity;
  13878. begin
  13879. GetProcedureAddress(_SetPrivateObjectSecurity, advapi32, 'SetPrivateObjectSecurity');
  13880. asm
  13881. MOV ESP, EBP
  13882. POP EBP
  13883. JMP [_SetPrivateObjectSecurity]
  13884. end;
  13885. end;
  13886. var
  13887. _SetPrivateObjectSecurityEx: Pointer;
  13888. function SetPrivateObjectSecurityEx;
  13889. begin
  13890. GetProcedureAddress(_SetPrivateObjectSecurityEx, advapi32, 'SetPrivateObjectSecurityEx');
  13891. asm
  13892. MOV ESP, EBP
  13893. POP EBP
  13894. JMP [_SetPrivateObjectSecurityEx]
  13895. end;
  13896. end;
  13897. var
  13898. _GetPrivateObjectSecurity: Pointer;
  13899. function GetPrivateObjectSecurity;
  13900. begin
  13901. GetProcedureAddress(_GetPrivateObjectSecurity, advapi32, 'GetPrivateObjectSecurity');
  13902. asm
  13903. MOV ESP, EBP
  13904. POP EBP
  13905. JMP [_GetPrivateObjectSecurity]
  13906. end;
  13907. end;
  13908. var
  13909. _DestroyPrivateObjectSecurity: Pointer;
  13910. function DestroyPrivateObjectSecurity;
  13911. begin
  13912. GetProcedureAddress(_DestroyPrivateObjectSecurity, advapi32, 'DestroyPrivateObjectSecurity');
  13913. asm
  13914. MOV ESP, EBP
  13915. POP EBP
  13916. JMP [_DestroyPrivateObjectSecurity]
  13917. end;
  13918. end;
  13919. var
  13920. _MakeSelfRelativeSD: Pointer;
  13921. function MakeSelfRelativeSD;
  13922. begin
  13923. GetProcedureAddress(_MakeSelfRelativeSD, advapi32, 'MakeSelfRelativeSD');
  13924. asm
  13925. MOV ESP, EBP
  13926. POP EBP
  13927. JMP [_MakeSelfRelativeSD]
  13928. end;
  13929. end;
  13930. var
  13931. _MakeAbsoluteSD: Pointer;
  13932. function MakeAbsoluteSD;
  13933. begin
  13934. GetProcedureAddress(_MakeAbsoluteSD, advapi32, 'MakeAbsoluteSD');
  13935. asm
  13936. MOV ESP, EBP
  13937. POP EBP
  13938. JMP [_MakeAbsoluteSD]
  13939. end;
  13940. end;
  13941. var
  13942. _MakeAbsoluteSD2: Pointer;
  13943. function MakeAbsoluteSD2;
  13944. begin
  13945. GetProcedureAddress(_MakeAbsoluteSD2, advapi32, 'MakeAbsoluteSD2');
  13946. asm
  13947. MOV ESP, EBP
  13948. POP EBP
  13949. JMP [_MakeAbsoluteSD2]
  13950. end;
  13951. end;
  13952. var
  13953. _SetFileSecurityA: Pointer;
  13954. function SetFileSecurityA;
  13955. begin
  13956. GetProcedureAddress(_SetFileSecurityA, advapi32, 'SetFileSecurityA');
  13957. asm
  13958. MOV ESP, EBP
  13959. POP EBP
  13960. JMP [_SetFileSecurityA]
  13961. end;
  13962. end;
  13963. var
  13964. _SetFileSecurityW: Pointer;
  13965. function SetFileSecurityW;
  13966. begin
  13967. GetProcedureAddress(_SetFileSecurityW, advapi32, 'SetFileSecurityW');
  13968. asm
  13969. MOV ESP, EBP
  13970. POP EBP
  13971. JMP [_SetFileSecurityW]
  13972. end;
  13973. end;
  13974. var
  13975. _SetFileSecurity: Pointer;
  13976. function SetFileSecurity;
  13977. begin
  13978. GetProcedureAddress(_SetFileSecurity, advapi32, 'SetFileSecurity' + AWSuffix);
  13979. asm
  13980. MOV ESP, EBP
  13981. POP EBP
  13982. JMP [_SetFileSecurity]
  13983. end;
  13984. end;
  13985. var
  13986. _GetFileSecurityA: Pointer;
  13987. function GetFileSecurityA;
  13988. begin
  13989. GetProcedureAddress(_GetFileSecurityA, advapi32, 'GetFileSecurityA');
  13990. asm
  13991. MOV ESP, EBP
  13992. POP EBP
  13993. JMP [_GetFileSecurityA]
  13994. end;
  13995. end;
  13996. var
  13997. _GetFileSecurityW: Pointer;
  13998. function GetFileSecurityW;
  13999. begin
  14000. GetProcedureAddress(_GetFileSecurityW, advapi32, 'GetFileSecurityW');
  14001. asm
  14002. MOV ESP, EBP
  14003. POP EBP
  14004. JMP [_GetFileSecurityW]
  14005. end;
  14006. end;
  14007. var
  14008. _GetFileSecurity: Pointer;
  14009. function GetFileSecurity;
  14010. begin
  14011. GetProcedureAddress(_GetFileSecurity, advapi32, 'GetFileSecurity' + AWSuffix);
  14012. asm
  14013. MOV ESP, EBP
  14014. POP EBP
  14015. JMP [_GetFileSecurity]
  14016. end;
  14017. end;
  14018. var
  14019. _SetKernelObjectSecurity: Pointer;
  14020. function SetKernelObjectSecurity;
  14021. begin
  14022. GetProcedureAddress(_SetKernelObjectSecurity, advapi32, 'SetKernelObjectSecurity');
  14023. asm
  14024. MOV ESP, EBP
  14025. POP EBP
  14026. JMP [_SetKernelObjectSecurity]
  14027. end;
  14028. end;
  14029. var
  14030. _FindFirstChangeNotificationA: Pointer;
  14031. function FindFirstChangeNotificationA;
  14032. begin
  14033. GetProcedureAddress(_FindFirstChangeNotificationA, kernel32, 'FindFirstChangeNotificationA');
  14034. asm
  14035. MOV ESP, EBP
  14036. POP EBP
  14037. JMP [_FindFirstChangeNotificationA]
  14038. end;
  14039. end;
  14040. var
  14041. _FindFirstChangeNotificationW: Pointer;
  14042. function FindFirstChangeNotificationW;
  14043. begin
  14044. GetProcedureAddress(_FindFirstChangeNotificationW, kernel32, 'FindFirstChangeNotificationW');
  14045. asm
  14046. MOV ESP, EBP
  14047. POP EBP
  14048. JMP [_FindFirstChangeNotificationW]
  14049. end;
  14050. end;
  14051. var
  14052. _FindFirstChangeNotification: Pointer;
  14053. function FindFirstChangeNotification;
  14054. begin
  14055. GetProcedureAddress(_FindFirstChangeNotification, kernel32, 'FindFirstChangeNotification' + AWSuffix);
  14056. asm
  14057. MOV ESP, EBP
  14058. POP EBP
  14059. JMP [_FindFirstChangeNotification]
  14060. end;
  14061. end;
  14062. var
  14063. _FindNextChangeNotification: Pointer;
  14064. function FindNextChangeNotification;
  14065. begin
  14066. GetProcedureAddress(_FindNextChangeNotification, kernel32, 'FindNextChangeNotification');
  14067. asm
  14068. MOV ESP, EBP
  14069. POP EBP
  14070. JMP [_FindNextChangeNotification]
  14071. end;
  14072. end;
  14073. var
  14074. _FindCloseChangeNotification: Pointer;
  14075. function FindCloseChangeNotification;
  14076. begin
  14077. GetProcedureAddress(_FindCloseChangeNotification, kernel32, 'FindCloseChangeNotification');
  14078. asm
  14079. MOV ESP, EBP
  14080. POP EBP
  14081. JMP [_FindCloseChangeNotification]
  14082. end;
  14083. end;
  14084. var
  14085. _ReadDirectoryChangesW: Pointer;
  14086. function ReadDirectoryChangesW;
  14087. begin
  14088. GetProcedureAddress(_ReadDirectoryChangesW, kernel32, 'ReadDirectoryChangesW');
  14089. asm
  14090. MOV ESP, EBP
  14091. POP EBP
  14092. JMP [_ReadDirectoryChangesW]
  14093. end;
  14094. end;
  14095. var
  14096. _VirtualLock: Pointer;
  14097. function VirtualLock;
  14098. begin
  14099. GetProcedureAddress(_VirtualLock, kernel32, 'VirtualLock');
  14100. asm
  14101. MOV ESP, EBP
  14102. POP EBP
  14103. JMP [_VirtualLock]
  14104. end;
  14105. end;
  14106. var
  14107. _VirtualUnlock: Pointer;
  14108. function VirtualUnlock;
  14109. begin
  14110. GetProcedureAddress(_VirtualUnlock, kernel32, 'VirtualUnlock');
  14111. asm
  14112. MOV ESP, EBP
  14113. POP EBP
  14114. JMP [_VirtualUnlock]
  14115. end;
  14116. end;
  14117. var
  14118. _MapViewOfFileEx: Pointer;
  14119. function MapViewOfFileEx;
  14120. begin
  14121. GetProcedureAddress(_MapViewOfFileEx, kernel32, 'MapViewOfFileEx');
  14122. asm
  14123. MOV ESP, EBP
  14124. POP EBP
  14125. JMP [_MapViewOfFileEx]
  14126. end;
  14127. end;
  14128. var
  14129. _SetPriorityClass: Pointer;
  14130. function SetPriorityClass;
  14131. begin
  14132. GetProcedureAddress(_SetPriorityClass, kernel32, 'SetPriorityClass');
  14133. asm
  14134. MOV ESP, EBP
  14135. POP EBP
  14136. JMP [_SetPriorityClass]
  14137. end;
  14138. end;
  14139. var
  14140. _GetPriorityClass: Pointer;
  14141. function GetPriorityClass;
  14142. begin
  14143. GetProcedureAddress(_GetPriorityClass, kernel32, 'GetPriorityClass');
  14144. asm
  14145. MOV ESP, EBP
  14146. POP EBP
  14147. JMP [_GetPriorityClass]
  14148. end;
  14149. end;
  14150. var
  14151. _IsBadReadPtr: Pointer;
  14152. function IsBadReadPtr;
  14153. begin
  14154. GetProcedureAddress(_IsBadReadPtr, kernel32, 'IsBadReadPtr');
  14155. asm
  14156. MOV ESP, EBP
  14157. POP EBP
  14158. JMP [_IsBadReadPtr]
  14159. end;
  14160. end;
  14161. var
  14162. _IsBadWritePtr: Pointer;
  14163. function IsBadWritePtr;
  14164. begin
  14165. GetProcedureAddress(_IsBadWritePtr, kernel32, 'IsBadWritePtr');
  14166. asm
  14167. MOV ESP, EBP
  14168. POP EBP
  14169. JMP [_IsBadWritePtr]
  14170. end;
  14171. end;
  14172. var
  14173. _IsBadHugeReadPtr: Pointer;
  14174. function IsBadHugeReadPtr;
  14175. begin
  14176. GetProcedureAddress(_IsBadHugeReadPtr, kernel32, 'IsBadHugeReadPtr');
  14177. asm
  14178. MOV ESP, EBP
  14179. POP EBP
  14180. JMP [_IsBadHugeReadPtr]
  14181. end;
  14182. end;
  14183. var
  14184. _IsBadHugeWritePtr: Pointer;
  14185. function IsBadHugeWritePtr;
  14186. begin
  14187. GetProcedureAddress(_IsBadHugeWritePtr, kernel32, 'IsBadHugeWritePtr');
  14188. asm
  14189. MOV ESP, EBP
  14190. POP EBP
  14191. JMP [_IsBadHugeWritePtr]
  14192. end;
  14193. end;
  14194. var
  14195. _IsBadCodePtr: Pointer;
  14196. function IsBadCodePtr;
  14197. begin
  14198. GetProcedureAddress(_IsBadCodePtr, kernel32, 'IsBadCodePtr');
  14199. asm
  14200. MOV ESP, EBP
  14201. POP EBP
  14202. JMP [_IsBadCodePtr]
  14203. end;
  14204. end;
  14205. var
  14206. _IsBadStringPtrA: Pointer;
  14207. function IsBadStringPtrA;
  14208. begin
  14209. GetProcedureAddress(_IsBadStringPtrA, kernel32, 'IsBadStringPtrA');
  14210. asm
  14211. MOV ESP, EBP
  14212. POP EBP
  14213. JMP [_IsBadStringPtrA]
  14214. end;
  14215. end;
  14216. var
  14217. _IsBadStringPtrW: Pointer;
  14218. function IsBadStringPtrW;
  14219. begin
  14220. GetProcedureAddress(_IsBadStringPtrW, kernel32, 'IsBadStringPtrW');
  14221. asm
  14222. MOV ESP, EBP
  14223. POP EBP
  14224. JMP [_IsBadStringPtrW]
  14225. end;
  14226. end;
  14227. var
  14228. _IsBadStringPtr: Pointer;
  14229. function IsBadStringPtr;
  14230. begin
  14231. GetProcedureAddress(_IsBadStringPtr, kernel32, 'IsBadStringPtr' + AWSuffix);
  14232. asm
  14233. MOV ESP, EBP
  14234. POP EBP
  14235. JMP [_IsBadStringPtr]
  14236. end;
  14237. end;
  14238. var
  14239. _LookupAccountSidA: Pointer;
  14240. function LookupAccountSidA;
  14241. begin
  14242. GetProcedureAddress(_LookupAccountSidA, advapi32, 'LookupAccountSidA');
  14243. asm
  14244. MOV ESP, EBP
  14245. POP EBP
  14246. JMP [_LookupAccountSidA]
  14247. end;
  14248. end;
  14249. var
  14250. _LookupAccountSidW: Pointer;
  14251. function LookupAccountSidW;
  14252. begin
  14253. GetProcedureAddress(_LookupAccountSidW, advapi32, 'LookupAccountSidW');
  14254. asm
  14255. MOV ESP, EBP
  14256. POP EBP
  14257. JMP [_LookupAccountSidW]
  14258. end;
  14259. end;
  14260. var
  14261. _LookupAccountSid: Pointer;
  14262. function LookupAccountSid;
  14263. begin
  14264. GetProcedureAddress(_LookupAccountSid, advapi32, 'LookupAccountSid' + AWSuffix);
  14265. asm
  14266. MOV ESP, EBP
  14267. POP EBP
  14268. JMP [_LookupAccountSid]
  14269. end;
  14270. end;
  14271. var
  14272. _LookupAccountNameA: Pointer;
  14273. function LookupAccountNameA;
  14274. begin
  14275. GetProcedureAddress(_LookupAccountNameA, advapi32, 'LookupAccountNameA');
  14276. asm
  14277. MOV ESP, EBP
  14278. POP EBP
  14279. JMP [_LookupAccountNameA]
  14280. end;
  14281. end;
  14282. var
  14283. _LookupAccountNameW: Pointer;
  14284. function LookupAccountNameW;
  14285. begin
  14286. GetProcedureAddress(_LookupAccountNameW, advapi32, 'LookupAccountNameW');
  14287. asm
  14288. MOV ESP, EBP
  14289. POP EBP
  14290. JMP [_LookupAccountNameW]
  14291. end;
  14292. end;
  14293. var
  14294. _LookupAccountName: Pointer;
  14295. function LookupAccountName;
  14296. begin
  14297. GetProcedureAddress(_LookupAccountName, advapi32, 'LookupAccountName' + AWSuffix);
  14298. asm
  14299. MOV ESP, EBP
  14300. POP EBP
  14301. JMP [_LookupAccountName]
  14302. end;
  14303. end;
  14304. var
  14305. _LookupPrivilegeValueA: Pointer;
  14306. function LookupPrivilegeValueA;
  14307. begin
  14308. GetProcedureAddress(_LookupPrivilegeValueA, advapi32, 'LookupPrivilegeValueA');
  14309. asm
  14310. MOV ESP, EBP
  14311. POP EBP
  14312. JMP [_LookupPrivilegeValueA]
  14313. end;
  14314. end;
  14315. var
  14316. _LookupPrivilegeValueW: Pointer;
  14317. function LookupPrivilegeValueW;
  14318. begin
  14319. GetProcedureAddress(_LookupPrivilegeValueW, advapi32, 'LookupPrivilegeValueW');
  14320. asm
  14321. MOV ESP, EBP
  14322. POP EBP
  14323. JMP [_LookupPrivilegeValueW]
  14324. end;
  14325. end;
  14326. var
  14327. _LookupPrivilegeValue: Pointer;
  14328. function LookupPrivilegeValue;
  14329. begin
  14330. GetProcedureAddress(_LookupPrivilegeValue, advapi32, 'LookupPrivilegeValue' + AWSuffix);
  14331. asm
  14332. MOV ESP, EBP
  14333. POP EBP
  14334. JMP [_LookupPrivilegeValue]
  14335. end;
  14336. end;
  14337. var
  14338. _LookupPrivilegeNameA: Pointer;
  14339. function LookupPrivilegeNameA;
  14340. begin
  14341. GetProcedureAddress(_LookupPrivilegeNameA, advapi32, 'LookupPrivilegeNameA');
  14342. asm
  14343. MOV ESP, EBP
  14344. POP EBP
  14345. JMP [_LookupPrivilegeNameA]
  14346. end;
  14347. end;
  14348. var
  14349. _LookupPrivilegeNameW: Pointer;
  14350. function LookupPrivilegeNameW;
  14351. begin
  14352. GetProcedureAddress(_LookupPrivilegeNameW, advapi32, 'LookupPrivilegeNameW');
  14353. asm
  14354. MOV ESP, EBP
  14355. POP EBP
  14356. JMP [_LookupPrivilegeNameW]
  14357. end;
  14358. end;
  14359. var
  14360. _LookupPrivilegeName: Pointer;
  14361. function LookupPrivilegeName;
  14362. begin
  14363. GetProcedureAddress(_LookupPrivilegeName, advapi32, 'LookupPrivilegeName' + AWSuffix);
  14364. asm
  14365. MOV ESP, EBP
  14366. POP EBP
  14367. JMP [_LookupPrivilegeName]
  14368. end;
  14369. end;
  14370. var
  14371. _LookupPrivilegeDisplayNameA: Pointer;
  14372. function LookupPrivilegeDisplayNameA;
  14373. begin
  14374. GetProcedureAddress(_LookupPrivilegeDisplayNameA, advapi32, 'LookupPrivilegeDisplayNameA');
  14375. asm
  14376. MOV ESP, EBP
  14377. POP EBP
  14378. JMP [_LookupPrivilegeDisplayNameA]
  14379. end;
  14380. end;
  14381. var
  14382. _LookupPrivilegeDisplayNameW: Pointer;
  14383. function LookupPrivilegeDisplayNameW;
  14384. begin
  14385. GetProcedureAddress(_LookupPrivilegeDisplayNameW, advapi32, 'LookupPrivilegeDisplayNameW');
  14386. asm
  14387. MOV ESP, EBP
  14388. POP EBP
  14389. JMP [_LookupPrivilegeDisplayNameW]
  14390. end;
  14391. end;
  14392. var
  14393. _LookupPrivilegeDisplayName: Pointer;
  14394. function LookupPrivilegeDisplayName;
  14395. begin
  14396. GetProcedureAddress(_LookupPrivilegeDisplayName, advapi32, 'LookupPrivilegeDisplayName' + AWSuffix);
  14397. asm
  14398. MOV ESP, EBP
  14399. POP EBP
  14400. JMP [_LookupPrivilegeDisplayName]
  14401. end;
  14402. end;
  14403. var
  14404. _AllocateLocallyUniqueId: Pointer;
  14405. function AllocateLocallyUniqueId;
  14406. begin
  14407. GetProcedureAddress(_AllocateLocallyUniqueId, advapi32, 'AllocateLocallyUniqueId');
  14408. asm
  14409. MOV ESP, EBP
  14410. POP EBP
  14411. JMP [_AllocateLocallyUniqueId]
  14412. end;
  14413. end;
  14414. var
  14415. _BuildCommDCBA: Pointer;
  14416. function BuildCommDCBA;
  14417. begin
  14418. GetProcedureAddress(_BuildCommDCBA, kernel32, 'BuildCommDCBA');
  14419. asm
  14420. MOV ESP, EBP
  14421. POP EBP
  14422. JMP [_BuildCommDCBA]
  14423. end;
  14424. end;
  14425. var
  14426. _BuildCommDCBW: Pointer;
  14427. function BuildCommDCBW;
  14428. begin
  14429. GetProcedureAddress(_BuildCommDCBW, kernel32, 'BuildCommDCBW');
  14430. asm
  14431. MOV ESP, EBP
  14432. POP EBP
  14433. JMP [_BuildCommDCBW]
  14434. end;
  14435. end;
  14436. var
  14437. _BuildCommDCB: Pointer;
  14438. function BuildCommDCB;
  14439. begin
  14440. GetProcedureAddress(_BuildCommDCB, kernel32, 'BuildCommDCB' + AWSuffix);
  14441. asm
  14442. MOV ESP, EBP
  14443. POP EBP
  14444. JMP [_BuildCommDCB]
  14445. end;
  14446. end;
  14447. var
  14448. _BuildCommDCBAndTimeoutsA: Pointer;
  14449. function BuildCommDCBAndTimeoutsA;
  14450. begin
  14451. GetProcedureAddress(_BuildCommDCBAndTimeoutsA, kernel32, 'BuildCommDCBAndTimeoutsA');
  14452. asm
  14453. MOV ESP, EBP
  14454. POP EBP
  14455. JMP [_BuildCommDCBAndTimeoutsA]
  14456. end;
  14457. end;
  14458. var
  14459. _BuildCommDCBAndTimeoutsW: Pointer;
  14460. function BuildCommDCBAndTimeoutsW;
  14461. begin
  14462. GetProcedureAddress(_BuildCommDCBAndTimeoutsW, kernel32, 'BuildCommDCBAndTimeoutsW');
  14463. asm
  14464. MOV ESP, EBP
  14465. POP EBP
  14466. JMP [_BuildCommDCBAndTimeoutsW]
  14467. end;
  14468. end;
  14469. var
  14470. _BuildCommDCBAndTimeouts: Pointer;
  14471. function BuildCommDCBAndTimeouts;
  14472. begin
  14473. GetProcedureAddress(_BuildCommDCBAndTimeouts, kernel32, 'BuildCommDCBAndTimeouts' + AWSuffix);
  14474. asm
  14475. MOV ESP, EBP
  14476. POP EBP
  14477. JMP [_BuildCommDCBAndTimeouts]
  14478. end;
  14479. end;
  14480. var
  14481. _CommConfigDialogA: Pointer;
  14482. function CommConfigDialogA;
  14483. begin
  14484. GetProcedureAddress(_CommConfigDialogA, kernel32, 'CommConfigDialogA');
  14485. asm
  14486. MOV ESP, EBP
  14487. POP EBP
  14488. JMP [_CommConfigDialogA]
  14489. end;
  14490. end;
  14491. var
  14492. _CommConfigDialogW: Pointer;
  14493. function CommConfigDialogW;
  14494. begin
  14495. GetProcedureAddress(_CommConfigDialogW, kernel32, 'CommConfigDialogW');
  14496. asm
  14497. MOV ESP, EBP
  14498. POP EBP
  14499. JMP [_CommConfigDialogW]
  14500. end;
  14501. end;
  14502. var
  14503. _CommConfigDialog: Pointer;
  14504. function CommConfigDialog;
  14505. begin
  14506. GetProcedureAddress(_CommConfigDialog, kernel32, 'CommConfigDialog' + AWSuffix);
  14507. asm
  14508. MOV ESP, EBP
  14509. POP EBP
  14510. JMP [_CommConfigDialog]
  14511. end;
  14512. end;
  14513. var
  14514. _GetDefaultCommConfigA: Pointer;
  14515. function GetDefaultCommConfigA;
  14516. begin
  14517. GetProcedureAddress(_GetDefaultCommConfigA, kernel32, 'GetDefaultCommConfigA');
  14518. asm
  14519. MOV ESP, EBP
  14520. POP EBP
  14521. JMP [_GetDefaultCommConfigA]
  14522. end;
  14523. end;
  14524. var
  14525. _GetDefaultCommConfigW: Pointer;
  14526. function GetDefaultCommConfigW;
  14527. begin
  14528. GetProcedureAddress(_GetDefaultCommConfigW, kernel32, 'GetDefaultCommConfigW');
  14529. asm
  14530. MOV ESP, EBP
  14531. POP EBP
  14532. JMP [_GetDefaultCommConfigW]
  14533. end;
  14534. end;
  14535. var
  14536. _GetDefaultCommConfig: Pointer;
  14537. function GetDefaultCommConfig;
  14538. begin
  14539. GetProcedureAddress(_GetDefaultCommConfig, kernel32, 'GetDefaultCommConfig' + AWSuffix);
  14540. asm
  14541. MOV ESP, EBP
  14542. POP EBP
  14543. JMP [_GetDefaultCommConfig]
  14544. end;
  14545. end;
  14546. var
  14547. _SetDefaultCommConfigA: Pointer;
  14548. function SetDefaultCommConfigA;
  14549. begin
  14550. GetProcedureAddress(_SetDefaultCommConfigA, kernel32, 'SetDefaultCommConfigA');
  14551. asm
  14552. MOV ESP, EBP
  14553. POP EBP
  14554. JMP [_SetDefaultCommConfigA]
  14555. end;
  14556. end;
  14557. var
  14558. _SetDefaultCommConfigW: Pointer;
  14559. function SetDefaultCommConfigW;
  14560. begin
  14561. GetProcedureAddress(_SetDefaultCommConfigW, kernel32, 'SetDefaultCommConfigW');
  14562. asm
  14563. MOV ESP, EBP
  14564. POP EBP
  14565. JMP [_SetDefaultCommConfigW]
  14566. end;
  14567. end;
  14568. var
  14569. _SetDefaultCommConfig: Pointer;
  14570. function SetDefaultCommConfig;
  14571. begin
  14572. GetProcedureAddress(_SetDefaultCommConfig, kernel32, 'SetDefaultCommConfig' + AWSuffix);
  14573. asm
  14574. MOV ESP, EBP
  14575. POP EBP
  14576. JMP [_SetDefaultCommConfig]
  14577. end;
  14578. end;
  14579. var
  14580. _GetComputerNameA: Pointer;
  14581. function GetComputerNameA;
  14582. begin
  14583. GetProcedureAddress(_GetComputerNameA, kernel32, 'GetComputerNameA');
  14584. asm
  14585. MOV ESP, EBP
  14586. POP EBP
  14587. JMP [_GetComputerNameA]
  14588. end;
  14589. end;
  14590. var
  14591. _GetComputerNameW: Pointer;
  14592. function GetComputerNameW;
  14593. begin
  14594. GetProcedureAddress(_GetComputerNameW, kernel32, 'GetComputerNameW');
  14595. asm
  14596. MOV ESP, EBP
  14597. POP EBP
  14598. JMP [_GetComputerNameW]
  14599. end;
  14600. end;
  14601. var
  14602. _GetComputerName: Pointer;
  14603. function GetComputerName;
  14604. begin
  14605. GetProcedureAddress(_GetComputerName, kernel32, 'GetComputerName' + AWSuffix);
  14606. asm
  14607. MOV ESP, EBP
  14608. POP EBP
  14609. JMP [_GetComputerName]
  14610. end;
  14611. end;
  14612. var
  14613. _SetComputerNameA: Pointer;
  14614. function SetComputerNameA;
  14615. begin
  14616. GetProcedureAddress(_SetComputerNameA, kernel32, 'SetComputerNameA');
  14617. asm
  14618. MOV ESP, EBP
  14619. POP EBP
  14620. JMP [_SetComputerNameA]
  14621. end;
  14622. end;
  14623. var
  14624. _SetComputerNameW: Pointer;
  14625. function SetComputerNameW;
  14626. begin
  14627. GetProcedureAddress(_SetComputerNameW, kernel32, 'SetComputerNameW');
  14628. asm
  14629. MOV ESP, EBP
  14630. POP EBP
  14631. JMP [_SetComputerNameW]
  14632. end;
  14633. end;
  14634. var
  14635. _SetComputerName: Pointer;
  14636. function SetComputerName;
  14637. begin
  14638. GetProcedureAddress(_SetComputerName, kernel32, 'SetComputerName' + AWSuffix);
  14639. asm
  14640. MOV ESP, EBP
  14641. POP EBP
  14642. JMP [_SetComputerName]
  14643. end;
  14644. end;
  14645. var
  14646. _GetComputerNameExA: Pointer;
  14647. function GetComputerNameExA;
  14648. begin
  14649. GetProcedureAddress(_GetComputerNameExA, kernel32, 'GetComputerNameExA');
  14650. asm
  14651. MOV ESP, EBP
  14652. POP EBP
  14653. JMP [_GetComputerNameExA]
  14654. end;
  14655. end;
  14656. var
  14657. _GetComputerNameExW: Pointer;
  14658. function GetComputerNameExW;
  14659. begin
  14660. GetProcedureAddress(_GetComputerNameExW, kernel32, 'GetComputerNameExW');
  14661. asm
  14662. MOV ESP, EBP
  14663. POP EBP
  14664. JMP [_GetComputerNameExW]
  14665. end;
  14666. end;
  14667. var
  14668. _GetComputerNameEx: Pointer;
  14669. function GetComputerNameEx;
  14670. begin
  14671. GetProcedureAddress(_GetComputerNameEx, kernel32, 'GetComputerNameEx' + AWSuffix);
  14672. asm
  14673. MOV ESP, EBP
  14674. POP EBP
  14675. JMP [_GetComputerNameEx]
  14676. end;
  14677. end;
  14678. var
  14679. _SetComputerNameExA: Pointer;
  14680. function SetComputerNameExA;
  14681. begin
  14682. GetProcedureAddress(_SetComputerNameExA, kernel32, 'SetComputerNameExA');
  14683. asm
  14684. MOV ESP, EBP
  14685. POP EBP
  14686. JMP [_SetComputerNameExA]
  14687. end;
  14688. end;
  14689. var
  14690. _SetComputerNameExW: Pointer;
  14691. function SetComputerNameExW;
  14692. begin
  14693. GetProcedureAddress(_SetComputerNameExW, kernel32, 'SetComputerNameExW');
  14694. asm
  14695. MOV ESP, EBP
  14696. POP EBP
  14697. JMP [_SetComputerNameExW]
  14698. end;
  14699. end;
  14700. var
  14701. _SetComputerNameEx: Pointer;
  14702. function SetComputerNameEx;
  14703. begin
  14704. GetProcedureAddress(_SetComputerNameEx, kernel32, 'SetComputerNameEx' + AWSuffix);
  14705. asm
  14706. MOV ESP, EBP
  14707. POP EBP
  14708. JMP [_SetComputerNameEx]
  14709. end;
  14710. end;
  14711. var
  14712. _DnsHostnameToComputerNameA: Pointer;
  14713. function DnsHostnameToComputerNameA;
  14714. begin
  14715. GetProcedureAddress(_DnsHostnameToComputerNameA, kernel32, 'DnsHostnameToComputerNameA');
  14716. asm
  14717. MOV ESP, EBP
  14718. POP EBP
  14719. JMP [_DnsHostnameToComputerNameA]
  14720. end;
  14721. end;
  14722. var
  14723. _DnsHostnameToComputerNameW: Pointer;
  14724. function DnsHostnameToComputerNameW;
  14725. begin
  14726. GetProcedureAddress(_DnsHostnameToComputerNameW, kernel32, 'DnsHostnameToComputerNameW');
  14727. asm
  14728. MOV ESP, EBP
  14729. POP EBP
  14730. JMP [_DnsHostnameToComputerNameW]
  14731. end;
  14732. end;
  14733. var
  14734. _DnsHostnameToComputerName: Pointer;
  14735. function DnsHostnameToComputerName;
  14736. begin
  14737. GetProcedureAddress(_DnsHostnameToComputerName, kernel32, 'DnsHostnameToComputerName' + AWSuffix);
  14738. asm
  14739. MOV ESP, EBP
  14740. POP EBP
  14741. JMP [_DnsHostnameToComputerName]
  14742. end;
  14743. end;
  14744. var
  14745. _GetUserNameA: Pointer;
  14746. function GetUserNameA;
  14747. begin
  14748. GetProcedureAddress(_GetUserNameA, advapi32, 'GetUserNameA');
  14749. asm
  14750. MOV ESP, EBP
  14751. POP EBP
  14752. JMP [_GetUserNameA]
  14753. end;
  14754. end;
  14755. var
  14756. _GetUserNameW: Pointer;
  14757. function GetUserNameW;
  14758. begin
  14759. GetProcedureAddress(_GetUserNameW, advapi32, 'GetUserNameW');
  14760. asm
  14761. MOV ESP, EBP
  14762. POP EBP
  14763. JMP [_GetUserNameW]
  14764. end;
  14765. end;
  14766. var
  14767. _GetUserName: Pointer;
  14768. function GetUserName;
  14769. begin
  14770. GetProcedureAddress(_GetUserName, advapi32, 'GetUserName' + AWSuffix);
  14771. asm
  14772. MOV ESP, EBP
  14773. POP EBP
  14774. JMP [_GetUserName]
  14775. end;
  14776. end;
  14777. var
  14778. _LogonUserA: Pointer;
  14779. function LogonUserA;
  14780. begin
  14781. GetProcedureAddress(_LogonUserA, advapi32, 'LogonUserA');
  14782. asm
  14783. MOV ESP, EBP
  14784. POP EBP
  14785. JMP [_LogonUserA]
  14786. end;
  14787. end;
  14788. var
  14789. _LogonUserW: Pointer;
  14790. function LogonUserW;
  14791. begin
  14792. GetProcedureAddress(_LogonUserW, advapi32, 'LogonUserW');
  14793. asm
  14794. MOV ESP, EBP
  14795. POP EBP
  14796. JMP [_LogonUserW]
  14797. end;
  14798. end;
  14799. var
  14800. _LogonUser: Pointer;
  14801. function LogonUser;
  14802. begin
  14803. GetProcedureAddress(_LogonUser, advapi32, 'LogonUser' + AWSuffix);
  14804. asm
  14805. MOV ESP, EBP
  14806. POP EBP
  14807. JMP [_LogonUser]
  14808. end;
  14809. end;
  14810. var
  14811. _LogonUserExA: Pointer;
  14812. function LogonUserExA;
  14813. begin
  14814. GetProcedureAddress(_LogonUserExA, advapi32, 'LogonUserExA');
  14815. asm
  14816. MOV ESP, EBP
  14817. POP EBP
  14818. JMP [_LogonUserExA]
  14819. end;
  14820. end;
  14821. var
  14822. _LogonUserExW: Pointer;
  14823. function LogonUserExW;
  14824. begin
  14825. GetProcedureAddress(_LogonUserExW, advapi32, 'LogonUserExW');
  14826. asm
  14827. MOV ESP, EBP
  14828. POP EBP
  14829. JMP [_LogonUserExW]
  14830. end;
  14831. end;
  14832. var
  14833. _LogonUserEx: Pointer;
  14834. function LogonUserEx;
  14835. begin
  14836. GetProcedureAddress(_LogonUserEx, advapi32, 'LogonUserEx' + AWSuffix);
  14837. asm
  14838. MOV ESP, EBP
  14839. POP EBP
  14840. JMP [_LogonUserEx]
  14841. end;
  14842. end;
  14843. var
  14844. _ImpersonateLoggedOnUser: Pointer;
  14845. function ImpersonateLoggedOnUser;
  14846. begin
  14847. GetProcedureAddress(_ImpersonateLoggedOnUser, advapi32, 'ImpersonateLoggedOnUser');
  14848. asm
  14849. MOV ESP, EBP
  14850. POP EBP
  14851. JMP [_ImpersonateLoggedOnUser]
  14852. end;
  14853. end;
  14854. var
  14855. _CreateProcessAsUserA: Pointer;
  14856. function CreateProcessAsUserA;
  14857. begin
  14858. GetProcedureAddress(_CreateProcessAsUserA, advapi32, 'CreateProcessAsUserA');
  14859. asm
  14860. MOV ESP, EBP
  14861. POP EBP
  14862. JMP [_CreateProcessAsUserA]
  14863. end;
  14864. end;
  14865. var
  14866. _CreateProcessAsUserW: Pointer;
  14867. function CreateProcessAsUserW;
  14868. begin
  14869. GetProcedureAddress(_CreateProcessAsUserW, advapi32, 'CreateProcessAsUserW');
  14870. asm
  14871. MOV ESP, EBP
  14872. POP EBP
  14873. JMP [_CreateProcessAsUserW]
  14874. end;
  14875. end;
  14876. var
  14877. _CreateProcessAsUser: Pointer;
  14878. function CreateProcessAsUser;
  14879. begin
  14880. GetProcedureAddress(_CreateProcessAsUser, advapi32, 'CreateProcessAsUser' + AWSuffix);
  14881. asm
  14882. MOV ESP, EBP
  14883. POP EBP
  14884. JMP [_CreateProcessAsUser]
  14885. end;
  14886. end;
  14887. var
  14888. _CreateProcessWithLogonW: Pointer;
  14889. function CreateProcessWithLogonW;
  14890. begin
  14891. GetProcedureAddress(_CreateProcessWithLogonW, advapi32, 'CreateProcessWithLogonW');
  14892. asm
  14893. MOV ESP, EBP
  14894. POP EBP
  14895. JMP [_CreateProcessWithLogonW]
  14896. end;
  14897. end;
  14898. var
  14899. _CreateProcessWithTokenW: Pointer;
  14900. function CreateProcessWithTokenW;
  14901. begin
  14902. GetProcedureAddress(_CreateProcessWithTokenW, advapi32, 'CreateProcessWithTokenW');
  14903. asm
  14904. MOV ESP, EBP
  14905. POP EBP
  14906. JMP [_CreateProcessWithTokenW]
  14907. end;
  14908. end;
  14909. var
  14910. _ImpersonateAnonymousToken: Pointer;
  14911. function ImpersonateAnonymousToken;
  14912. begin
  14913. GetProcedureAddress(_ImpersonateAnonymousToken, advapi32, 'ImpersonateAnonymousToken');
  14914. asm
  14915. MOV ESP, EBP
  14916. POP EBP
  14917. JMP [_ImpersonateAnonymousToken]
  14918. end;
  14919. end;
  14920. var
  14921. _DuplicateTokenEx: Pointer;
  14922. function DuplicateTokenEx;
  14923. begin
  14924. GetProcedureAddress(_DuplicateTokenEx, advapi32, 'DuplicateTokenEx');
  14925. asm
  14926. MOV ESP, EBP
  14927. POP EBP
  14928. JMP [_DuplicateTokenEx]
  14929. end;
  14930. end;
  14931. var
  14932. _CreateRestrictedToken: Pointer;
  14933. function CreateRestrictedToken;
  14934. begin
  14935. GetProcedureAddress(_CreateRestrictedToken, advapi32, 'CreateRestrictedToken');
  14936. asm
  14937. MOV ESP, EBP
  14938. POP EBP
  14939. JMP [_CreateRestrictedToken]
  14940. end;
  14941. end;
  14942. var
  14943. _IsTokenRestricted: Pointer;
  14944. function IsTokenRestricted;
  14945. begin
  14946. GetProcedureAddress(_IsTokenRestricted, advapi32, 'IsTokenRestricted');
  14947. asm
  14948. MOV ESP, EBP
  14949. POP EBP
  14950. JMP [_IsTokenRestricted]
  14951. end;
  14952. end;
  14953. var
  14954. _CheckTokenMembership: Pointer;
  14955. function CheckTokenMembership;
  14956. begin
  14957. GetProcedureAddress(_CheckTokenMembership, advapi32, 'CheckTokenMembership');
  14958. asm
  14959. MOV ESP, EBP
  14960. POP EBP
  14961. JMP [_CheckTokenMembership]
  14962. end;
  14963. end;
  14964. var
  14965. _IsTokenUntrusted: Pointer;
  14966. function IsTokenUntrusted;
  14967. begin
  14968. GetProcedureAddress(_IsTokenUntrusted, advapi32, 'IsTokenUntrusted');
  14969. asm
  14970. MOV ESP, EBP
  14971. POP EBP
  14972. JMP [_IsTokenUntrusted]
  14973. end;
  14974. end;
  14975. var
  14976. _RegisterWaitForSingleObject: Pointer;
  14977. function RegisterWaitForSingleObject;
  14978. begin
  14979. GetProcedureAddress(_RegisterWaitForSingleObject, kernel32, 'RegisterWaitForSingleObject');
  14980. asm
  14981. MOV ESP, EBP
  14982. POP EBP
  14983. JMP [_RegisterWaitForSingleObject]
  14984. end;
  14985. end;
  14986. var
  14987. _RegisterWaitForSingleObjectEx: Pointer;
  14988. function RegisterWaitForSingleObjectEx;
  14989. begin
  14990. GetProcedureAddress(_RegisterWaitForSingleObjectEx, kernel32, 'RegisterWaitForSingleObjectEx');
  14991. asm
  14992. MOV ESP, EBP
  14993. POP EBP
  14994. JMP [_RegisterWaitForSingleObjectEx]
  14995. end;
  14996. end;
  14997. var
  14998. _UnregisterWait: Pointer;
  14999. function UnregisterWait;
  15000. begin
  15001. GetProcedureAddress(_UnregisterWait, kernel32, 'UnregisterWait');
  15002. asm
  15003. MOV ESP, EBP
  15004. POP EBP
  15005. JMP [_UnregisterWait]
  15006. end;
  15007. end;
  15008. var
  15009. _UnregisterWaitEx: Pointer;
  15010. function UnregisterWaitEx;
  15011. begin
  15012. GetProcedureAddress(_UnregisterWaitEx, kernel32, 'UnregisterWaitEx');
  15013. asm
  15014. MOV ESP, EBP
  15015. POP EBP
  15016. JMP [_UnregisterWaitEx]
  15017. end;
  15018. end;
  15019. var
  15020. _QueueUserWorkItem: Pointer;
  15021. function QueueUserWorkItem;
  15022. begin
  15023. GetProcedureAddress(_QueueUserWorkItem, kernel32, 'QueueUserWorkItem');
  15024. asm
  15025. MOV ESP, EBP
  15026. POP EBP
  15027. JMP [_QueueUserWorkItem]
  15028. end;
  15029. end;
  15030. var
  15031. _BindIoCompletionCallback: Pointer;
  15032. function BindIoCompletionCallback;
  15033. begin
  15034. GetProcedureAddress(_BindIoCompletionCallback, kernel32, 'BindIoCompletionCallback');
  15035. asm
  15036. MOV ESP, EBP
  15037. POP EBP
  15038. JMP [_BindIoCompletionCallback]
  15039. end;
  15040. end;
  15041. var
  15042. _CreateTimerQueue: Pointer;
  15043. function CreateTimerQueue;
  15044. begin
  15045. GetProcedureAddress(_CreateTimerQueue, kernel32, 'CreateTimerQueue');
  15046. asm
  15047. MOV ESP, EBP
  15048. POP EBP
  15049. JMP [_CreateTimerQueue]
  15050. end;
  15051. end;
  15052. var
  15053. _CreateTimerQueueTimer: Pointer;
  15054. function CreateTimerQueueTimer;
  15055. begin
  15056. GetProcedureAddress(_CreateTimerQueueTimer, kernel32, 'CreateTimerQueueTimer');
  15057. asm
  15058. MOV ESP, EBP
  15059. POP EBP
  15060. JMP [_CreateTimerQueueTimer]
  15061. end;
  15062. end;
  15063. var
  15064. _ChangeTimerQueueTimer: Pointer;
  15065. function ChangeTimerQueueTimer;
  15066. begin
  15067. GetProcedureAddress(_ChangeTimerQueueTimer, kernel32, 'ChangeTimerQueueTimer');
  15068. asm
  15069. MOV ESP, EBP
  15070. POP EBP
  15071. JMP [_ChangeTimerQueueTimer]
  15072. end;
  15073. end;
  15074. var
  15075. _DeleteTimerQueueTimer: Pointer;
  15076. function DeleteTimerQueueTimer;
  15077. begin
  15078. GetProcedureAddress(_DeleteTimerQueueTimer, kernel32, 'DeleteTimerQueueTimer');
  15079. asm
  15080. MOV ESP, EBP
  15081. POP EBP
  15082. JMP [_DeleteTimerQueueTimer]
  15083. end;
  15084. end;
  15085. var
  15086. _DeleteTimerQueueEx: Pointer;
  15087. function DeleteTimerQueueEx;
  15088. begin
  15089. GetProcedureAddress(_DeleteTimerQueueEx, kernel32, 'DeleteTimerQueueEx');
  15090. asm
  15091. MOV ESP, EBP
  15092. POP EBP
  15093. JMP [_DeleteTimerQueueEx]
  15094. end;
  15095. end;
  15096. var
  15097. _SetTimerQueueTimer: Pointer;
  15098. function SetTimerQueueTimer;
  15099. begin
  15100. GetProcedureAddress(_SetTimerQueueTimer, kernel32, 'SetTimerQueueTimer');
  15101. asm
  15102. MOV ESP, EBP
  15103. POP EBP
  15104. JMP [_SetTimerQueueTimer]
  15105. end;
  15106. end;
  15107. var
  15108. _CancelTimerQueueTimer: Pointer;
  15109. function CancelTimerQueueTimer;
  15110. begin
  15111. GetProcedureAddress(_CancelTimerQueueTimer, kernel32, 'CancelTimerQueueTimer');
  15112. asm
  15113. MOV ESP, EBP
  15114. POP EBP
  15115. JMP [_CancelTimerQueueTimer]
  15116. end;
  15117. end;
  15118. var
  15119. _DeleteTimerQueue: Pointer;
  15120. function DeleteTimerQueue;
  15121. begin
  15122. GetProcedureAddress(_DeleteTimerQueue, kernel32, 'DeleteTimerQueue');
  15123. asm
  15124. MOV ESP, EBP
  15125. POP EBP
  15126. JMP [_DeleteTimerQueue]
  15127. end;
  15128. end;
  15129. var
  15130. _GetCurrentHwProfileA: Pointer;
  15131. function GetCurrentHwProfileA;
  15132. begin
  15133. GetProcedureAddress(_GetCurrentHwProfileA, advapi32, 'GetCurrentHwProfileA');
  15134. asm
  15135. MOV ESP, EBP
  15136. POP EBP
  15137. JMP [_GetCurrentHwProfileA]
  15138. end;
  15139. end;
  15140. var
  15141. _GetCurrentHwProfileW: Pointer;
  15142. function GetCurrentHwProfileW;
  15143. begin
  15144. GetProcedureAddress(_GetCurrentHwProfileW, advapi32, 'GetCurrentHwProfileW');
  15145. asm
  15146. MOV ESP, EBP
  15147. POP EBP
  15148. JMP [_GetCurrentHwProfileW]
  15149. end;
  15150. end;
  15151. var
  15152. _GetCurrentHwProfile: Pointer;
  15153. function GetCurrentHwProfile;
  15154. begin
  15155. GetProcedureAddress(_GetCurrentHwProfile, advapi32, 'GetCurrentHwProfile' + AWSuffix);
  15156. asm
  15157. MOV ESP, EBP
  15158. POP EBP
  15159. JMP [_GetCurrentHwProfile]
  15160. end;
  15161. end;
  15162. var
  15163. _QueryPerformanceCounter: Pointer;
  15164. function QueryPerformanceCounter;
  15165. begin
  15166. GetProcedureAddress(_QueryPerformanceCounter, kernel32, 'QueryPerformanceCounter');
  15167. asm
  15168. MOV ESP, EBP
  15169. POP EBP
  15170. JMP [_QueryPerformanceCounter]
  15171. end;
  15172. end;
  15173. var
  15174. _QueryPerformanceFrequency: Pointer;
  15175. function QueryPerformanceFrequency;
  15176. begin
  15177. GetProcedureAddress(_QueryPerformanceFrequency, kernel32, 'QueryPerformanceFrequency');
  15178. asm
  15179. MOV ESP, EBP
  15180. POP EBP
  15181. JMP [_QueryPerformanceFrequency]
  15182. end;
  15183. end;
  15184. var
  15185. _GetVersionExA: Pointer;
  15186. function GetVersionExA;
  15187. begin
  15188. GetProcedureAddress(_GetVersionExA, kernel32, 'GetVersionExA');
  15189. asm
  15190. MOV ESP, EBP
  15191. POP EBP
  15192. JMP [_GetVersionExA]
  15193. end;
  15194. end;
  15195. var
  15196. _GetVersionExW: Pointer;
  15197. function GetVersionExW;
  15198. begin
  15199. GetProcedureAddress(_GetVersionExW, kernel32, 'GetVersionExW');
  15200. asm
  15201. MOV ESP, EBP
  15202. POP EBP
  15203. JMP [_GetVersionExW]
  15204. end;
  15205. end;
  15206. var
  15207. _GetVersionEx: Pointer;
  15208. function GetVersionEx;
  15209. begin
  15210. GetProcedureAddress(_GetVersionEx, kernel32, 'GetVersionEx' + AWSuffix);
  15211. asm
  15212. MOV ESP, EBP
  15213. POP EBP
  15214. JMP [_GetVersionEx]
  15215. end;
  15216. end;
  15217. var
  15218. _VerifyVersionInfoA: Pointer;
  15219. function VerifyVersionInfoA;
  15220. begin
  15221. GetProcedureAddress(_VerifyVersionInfoA, kernel32, 'VerifyVersionInfoA');
  15222. asm
  15223. MOV ESP, EBP
  15224. POP EBP
  15225. JMP [_VerifyVersionInfoA]
  15226. end;
  15227. end;
  15228. var
  15229. _VerifyVersionInfoW: Pointer;
  15230. function VerifyVersionInfoW;
  15231. begin
  15232. GetProcedureAddress(_VerifyVersionInfoW, kernel32, 'VerifyVersionInfoW');
  15233. asm
  15234. MOV ESP, EBP
  15235. POP EBP
  15236. JMP [_VerifyVersionInfoW]
  15237. end;
  15238. end;
  15239. var
  15240. _VerifyVersionInfo: Pointer;
  15241. function VerifyVersionInfo;
  15242. begin
  15243. GetProcedureAddress(_VerifyVersionInfo, kernel32, 'VerifyVersionInfo' + AWSuffix);
  15244. asm
  15245. MOV ESP, EBP
  15246. POP EBP
  15247. JMP [_VerifyVersionInfo]
  15248. end;
  15249. end;
  15250. var
  15251. _GetSystemPowerStatus: Pointer;
  15252. function GetSystemPowerStatus;
  15253. begin
  15254. GetProcedureAddress(_GetSystemPowerStatus, kernel32, 'GetSystemPowerStatus');
  15255. asm
  15256. MOV ESP, EBP
  15257. POP EBP
  15258. JMP [_GetSystemPowerStatus]
  15259. end;
  15260. end;
  15261. var
  15262. _SetSystemPowerState: Pointer;
  15263. function SetSystemPowerState;
  15264. begin
  15265. GetProcedureAddress(_SetSystemPowerState, kernel32, 'SetSystemPowerState');
  15266. asm
  15267. MOV ESP, EBP
  15268. POP EBP
  15269. JMP [_SetSystemPowerState]
  15270. end;
  15271. end;
  15272. var
  15273. _AllocateUserPhysicalPages: Pointer;
  15274. function AllocateUserPhysicalPages;
  15275. begin
  15276. GetProcedureAddress(_AllocateUserPhysicalPages, kernel32, 'AllocateUserPhysicalPages');
  15277. asm
  15278. MOV ESP, EBP
  15279. POP EBP
  15280. JMP [_AllocateUserPhysicalPages]
  15281. end;
  15282. end;
  15283. var
  15284. _FreeUserPhysicalPages: Pointer;
  15285. function FreeUserPhysicalPages;
  15286. begin
  15287. GetProcedureAddress(_FreeUserPhysicalPages, kernel32, 'FreeUserPhysicalPages');
  15288. asm
  15289. MOV ESP, EBP
  15290. POP EBP
  15291. JMP [_FreeUserPhysicalPages]
  15292. end;
  15293. end;
  15294. var
  15295. _MapUserPhysicalPages: Pointer;
  15296. function MapUserPhysicalPages;
  15297. begin
  15298. GetProcedureAddress(_MapUserPhysicalPages, kernel32, 'MapUserPhysicalPages');
  15299. asm
  15300. MOV ESP, EBP
  15301. POP EBP
  15302. JMP [_MapUserPhysicalPages]
  15303. end;
  15304. end;
  15305. var
  15306. _MapUserPhysicalPagesScatter: Pointer;
  15307. function MapUserPhysicalPagesScatter;
  15308. begin
  15309. GetProcedureAddress(_MapUserPhysicalPagesScatter, kernel32, 'MapUserPhysicalPagesScatter');
  15310. asm
  15311. MOV ESP, EBP
  15312. POP EBP
  15313. JMP [_MapUserPhysicalPagesScatter]
  15314. end;
  15315. end;
  15316. var
  15317. _CreateJobObjectA: Pointer;
  15318. function CreateJobObjectA;
  15319. begin
  15320. GetProcedureAddress(_CreateJobObjectA, kernel32, 'CreateJobObjectA');
  15321. asm
  15322. MOV ESP, EBP
  15323. POP EBP
  15324. JMP [_CreateJobObjectA]
  15325. end;
  15326. end;
  15327. var
  15328. _CreateJobObjectW: Pointer;
  15329. function CreateJobObjectW;
  15330. begin
  15331. GetProcedureAddress(_CreateJobObjectW, kernel32, 'CreateJobObjectW');
  15332. asm
  15333. MOV ESP, EBP
  15334. POP EBP
  15335. JMP [_CreateJobObjectW]
  15336. end;
  15337. end;
  15338. var
  15339. _CreateJobObject: Pointer;
  15340. function CreateJobObject;
  15341. begin
  15342. GetProcedureAddress(_CreateJobObject, kernel32, 'CreateJobObject' + AWSuffix);
  15343. asm
  15344. MOV ESP, EBP
  15345. POP EBP
  15346. JMP [_CreateJobObject]
  15347. end;
  15348. end;
  15349. var
  15350. _OpenJobObjectA: Pointer;
  15351. function OpenJobObjectA;
  15352. begin
  15353. GetProcedureAddress(_OpenJobObjectA, kernel32, 'OpenJobObjectA');
  15354. asm
  15355. MOV ESP, EBP
  15356. POP EBP
  15357. JMP [_OpenJobObjectA]
  15358. end;
  15359. end;
  15360. var
  15361. _OpenJobObjectW: Pointer;
  15362. function OpenJobObjectW;
  15363. begin
  15364. GetProcedureAddress(_OpenJobObjectW, kernel32, 'OpenJobObjectW');
  15365. asm
  15366. MOV ESP, EBP
  15367. POP EBP
  15368. JMP [_OpenJobObjectW]
  15369. end;
  15370. end;
  15371. var
  15372. _OpenJobObject: Pointer;
  15373. function OpenJobObject;
  15374. begin
  15375. GetProcedureAddress(_OpenJobObject, kernel32, 'OpenJobObject' + AWSuffix);
  15376. asm
  15377. MOV ESP, EBP
  15378. POP EBP
  15379. JMP [_OpenJobObject]
  15380. end;
  15381. end;
  15382. var
  15383. _AssignProcessToJobObject: Pointer;
  15384. function AssignProcessToJobObject;
  15385. begin
  15386. GetProcedureAddress(_AssignProcessToJobObject, kernel32, 'AssignProcessToJobObject');
  15387. asm
  15388. MOV ESP, EBP
  15389. POP EBP
  15390. JMP [_AssignProcessToJobObject]
  15391. end;
  15392. end;
  15393. var
  15394. _TerminateJobObject: Pointer;
  15395. function TerminateJobObject;
  15396. begin
  15397. GetProcedureAddress(_TerminateJobObject, kernel32, 'TerminateJobObject');
  15398. asm
  15399. MOV ESP, EBP
  15400. POP EBP
  15401. JMP [_TerminateJobObject]
  15402. end;
  15403. end;
  15404. var
  15405. _QueryInformationJobObject: Pointer;
  15406. function QueryInformationJobObject;
  15407. begin
  15408. GetProcedureAddress(_QueryInformationJobObject, kernel32, 'QueryInformationJobObject');
  15409. asm
  15410. MOV ESP, EBP
  15411. POP EBP
  15412. JMP [_QueryInformationJobObject]
  15413. end;
  15414. end;
  15415. var
  15416. _SetInformationJobObject: Pointer;
  15417. function SetInformationJobObject;
  15418. begin
  15419. GetProcedureAddress(_SetInformationJobObject, kernel32, 'SetInformationJobObject');
  15420. asm
  15421. MOV ESP, EBP
  15422. POP EBP
  15423. JMP [_SetInformationJobObject]
  15424. end;
  15425. end;
  15426. var
  15427. _IsProcessInJob: Pointer;
  15428. function IsProcessInJob;
  15429. begin
  15430. GetProcedureAddress(_IsProcessInJob, kernel32, 'IsProcessInJob');
  15431. asm
  15432. MOV ESP, EBP
  15433. POP EBP
  15434. JMP [_IsProcessInJob]
  15435. end;
  15436. end;
  15437. var
  15438. _CreateJobSet: Pointer;
  15439. function CreateJobSet;
  15440. begin
  15441. GetProcedureAddress(_CreateJobSet, kernel32, 'CreateJobSet');
  15442. asm
  15443. MOV ESP, EBP
  15444. POP EBP
  15445. JMP [_CreateJobSet]
  15446. end;
  15447. end;
  15448. var
  15449. _AddVectoredExceptionHandler: Pointer;
  15450. function AddVectoredExceptionHandler;
  15451. begin
  15452. GetProcedureAddress(_AddVectoredExceptionHandler, kernel32, 'AddVectoredExceptionHandler');
  15453. asm
  15454. MOV ESP, EBP
  15455. POP EBP
  15456. JMP [_AddVectoredExceptionHandler]
  15457. end;
  15458. end;
  15459. var
  15460. _RemoveVectoredExceptionHandler: Pointer;
  15461. function RemoveVectoredExceptionHandler;
  15462. begin
  15463. GetProcedureAddress(_RemoveVectoredExceptionHandler, kernel32, 'RemoveVectoredExceptionHandler');
  15464. asm
  15465. MOV ESP, EBP
  15466. POP EBP
  15467. JMP [_RemoveVectoredExceptionHandler]
  15468. end;
  15469. end;
  15470. var
  15471. _FindFirstVolumeA: Pointer;
  15472. function FindFirstVolumeA;
  15473. begin
  15474. GetProcedureAddress(_FindFirstVolumeA, kernel32, 'FindFirstVolumeA');
  15475. asm
  15476. MOV ESP, EBP
  15477. POP EBP
  15478. JMP [_FindFirstVolumeA]
  15479. end;
  15480. end;
  15481. var
  15482. _FindFirstVolumeW: Pointer;
  15483. function FindFirstVolumeW;
  15484. begin
  15485. GetProcedureAddress(_FindFirstVolumeW, kernel32, 'FindFirstVolumeW');
  15486. asm
  15487. MOV ESP, EBP
  15488. POP EBP
  15489. JMP [_FindFirstVolumeW]
  15490. end;
  15491. end;
  15492. var
  15493. _FindFirstVolume: Pointer;
  15494. function FindFirstVolume;
  15495. begin
  15496. GetProcedureAddress(_FindFirstVolume, kernel32, 'FindFirstVolume' + AWSuffix);
  15497. asm
  15498. MOV ESP, EBP
  15499. POP EBP
  15500. JMP [_FindFirstVolume]
  15501. end;
  15502. end;
  15503. var
  15504. _FindNextVolumeA: Pointer;
  15505. function FindNextVolumeA;
  15506. begin
  15507. GetProcedureAddress(_FindNextVolumeA, kernel32, 'FindNextVolumeA');
  15508. asm
  15509. MOV ESP, EBP
  15510. POP EBP
  15511. JMP [_FindNextVolumeA]
  15512. end;
  15513. end;
  15514. var
  15515. _FindNextVolumeW: Pointer;
  15516. function FindNextVolumeW;
  15517. begin
  15518. GetProcedureAddress(_FindNextVolumeW, kernel32, 'FindNextVolumeW');
  15519. asm
  15520. MOV ESP, EBP
  15521. POP EBP
  15522. JMP [_FindNextVolumeW]
  15523. end;
  15524. end;
  15525. var
  15526. _FindNextVolume: Pointer;
  15527. function FindNextVolume;
  15528. begin
  15529. GetProcedureAddress(_FindNextVolume, kernel32, 'FindNextVolume' + AWSuffix);
  15530. asm
  15531. MOV ESP, EBP
  15532. POP EBP
  15533. JMP [_FindNextVolume]
  15534. end;
  15535. end;
  15536. var
  15537. _FindVolumeClose: Pointer;
  15538. function FindVolumeClose;
  15539. begin
  15540. GetProcedureAddress(_FindVolumeClose, kernel32, 'FindVolumeClose');
  15541. asm
  15542. MOV ESP, EBP
  15543. POP EBP
  15544. JMP [_FindVolumeClose]
  15545. end;
  15546. end;
  15547. var
  15548. _FindFirstVolumeMountPointA: Pointer;
  15549. function FindFirstVolumeMountPointA;
  15550. begin
  15551. GetProcedureAddress(_FindFirstVolumeMountPointA, kernel32, 'FindFirstVolumeMountPointA');
  15552. asm
  15553. MOV ESP, EBP
  15554. POP EBP
  15555. JMP [_FindFirstVolumeMountPointA]
  15556. end;
  15557. end;
  15558. var
  15559. _FindFirstVolumeMountPointW: Pointer;
  15560. function FindFirstVolumeMountPointW;
  15561. begin
  15562. GetProcedureAddress(_FindFirstVolumeMountPointW, kernel32, 'FindFirstVolumeMountPointW');
  15563. asm
  15564. MOV ESP, EBP
  15565. POP EBP
  15566. JMP [_FindFirstVolumeMountPointW]
  15567. end;
  15568. end;
  15569. var
  15570. _FindFirstVolumeMountPoint: Pointer;
  15571. function FindFirstVolumeMountPoint;
  15572. begin
  15573. GetProcedureAddress(_FindFirstVolumeMountPoint, kernel32, 'FindFirstVolumeMountPoint' + AWSuffix);
  15574. asm
  15575. MOV ESP, EBP
  15576. POP EBP
  15577. JMP [_FindFirstVolumeMountPoint]
  15578. end;
  15579. end;
  15580. var
  15581. _FindNextVolumeMountPointA: Pointer;
  15582. function FindNextVolumeMountPointA;
  15583. begin
  15584. GetProcedureAddress(_FindNextVolumeMountPointA, kernel32, 'FindNextVolumeMountPointA');
  15585. asm
  15586. MOV ESP, EBP
  15587. POP EBP
  15588. JMP [_FindNextVolumeMountPointA]
  15589. end;
  15590. end;
  15591. var
  15592. _FindNextVolumeMountPointW: Pointer;
  15593. function FindNextVolumeMountPointW;
  15594. begin
  15595. GetProcedureAddress(_FindNextVolumeMountPointW, kernel32, 'FindNextVolumeMountPointW');
  15596. asm
  15597. MOV ESP, EBP
  15598. POP EBP
  15599. JMP [_FindNextVolumeMountPointW]
  15600. end;
  15601. end;
  15602. var
  15603. _FindNextVolumeMountPoint: Pointer;
  15604. function FindNextVolumeMountPoint;
  15605. begin
  15606. GetProcedureAddress(_FindNextVolumeMountPoint, kernel32, 'FindNextVolumeMountPoint' + AWSuffix);
  15607. asm
  15608. MOV ESP, EBP
  15609. POP EBP
  15610. JMP [_FindNextVolumeMountPoint]
  15611. end;
  15612. end;
  15613. var
  15614. _FindVolumeMountPointClose: Pointer;
  15615. function FindVolumeMountPointClose;
  15616. begin
  15617. GetProcedureAddress(_FindVolumeMountPointClose, kernel32, 'FindVolumeMountPointClose');
  15618. asm
  15619. MOV ESP, EBP
  15620. POP EBP
  15621. JMP [_FindVolumeMountPointClose]
  15622. end;
  15623. end;
  15624. var
  15625. _SetVolumeMountPointA: Pointer;
  15626. function SetVolumeMountPointA;
  15627. begin
  15628. GetProcedureAddress(_SetVolumeMountPointA, kernel32, 'SetVolumeMountPointA');
  15629. asm
  15630. MOV ESP, EBP
  15631. POP EBP
  15632. JMP [_SetVolumeMountPointA]
  15633. end;
  15634. end;
  15635. var
  15636. _SetVolumeMountPointW: Pointer;
  15637. function SetVolumeMountPointW;
  15638. begin
  15639. GetProcedureAddress(_SetVolumeMountPointW, kernel32, 'SetVolumeMountPointW');
  15640. asm
  15641. MOV ESP, EBP
  15642. POP EBP
  15643. JMP [_SetVolumeMountPointW]
  15644. end;
  15645. end;
  15646. var
  15647. _SetVolumeMountPoint: Pointer;
  15648. function SetVolumeMountPoint;
  15649. begin
  15650. GetProcedureAddress(_SetVolumeMountPoint, kernel32, 'SetVolumeMountPoint' + AWSuffix);
  15651. asm
  15652. MOV ESP, EBP
  15653. POP EBP
  15654. JMP [_SetVolumeMountPoint]
  15655. end;
  15656. end;
  15657. var
  15658. _DeleteVolumeMountPointA: Pointer;
  15659. function DeleteVolumeMountPointA;
  15660. begin
  15661. GetProcedureAddress(_DeleteVolumeMountPointA, kernel32, 'DeleteVolumeMountPointA');
  15662. asm
  15663. MOV ESP, EBP
  15664. POP EBP
  15665. JMP [_DeleteVolumeMountPointA]
  15666. end;
  15667. end;
  15668. var
  15669. _DeleteVolumeMountPointW: Pointer;
  15670. function DeleteVolumeMountPointW;
  15671. begin
  15672. GetProcedureAddress(_DeleteVolumeMountPointW, kernel32, 'DeleteVolumeMountPointW');
  15673. asm
  15674. MOV ESP, EBP
  15675. POP EBP
  15676. JMP [_DeleteVolumeMountPointW]
  15677. end;
  15678. end;
  15679. var
  15680. _DeleteVolumeMountPoint: Pointer;
  15681. function DeleteVolumeMountPoint;
  15682. begin
  15683. GetProcedureAddress(_DeleteVolumeMountPoint, kernel32, 'DeleteVolumeMountPoint' + AWSuffix);
  15684. asm
  15685. MOV ESP, EBP
  15686. POP EBP
  15687. JMP [_DeleteVolumeMountPoint]
  15688. end;
  15689. end;
  15690. var
  15691. _GetVolumeNameForVolMountPointA: Pointer;
  15692. function GetVolumeNameForVolumeMountPointA;
  15693. begin
  15694. GetProcedureAddress(_GetVolumeNameForVolMountPointA, kernel32, 'GetVolumeNameForVolumeMountPointA');
  15695. asm
  15696. MOV ESP, EBP
  15697. POP EBP
  15698. JMP [_GetVolumeNameForVolMountPointA]
  15699. end;
  15700. end;
  15701. var
  15702. _GetVolumeNameForVolMountPointW: Pointer;
  15703. function GetVolumeNameForVolumeMountPointW;
  15704. begin
  15705. GetProcedureAddress(_GetVolumeNameForVolMountPointW, kernel32, 'GetVolumeNameForVolumeMountPointW');
  15706. asm
  15707. MOV ESP, EBP
  15708. POP EBP
  15709. JMP [_GetVolumeNameForVolMountPointW]
  15710. end;
  15711. end;
  15712. var
  15713. _GetVolumeNameForVolMountPoint: Pointer;
  15714. function GetVolumeNameForVolumeMountPoint;
  15715. begin
  15716. GetProcedureAddress(_GetVolumeNameForVolMountPoint, kernel32, 'GetVolumeNameForVolumeMountPoint' + AWSuffix);
  15717. asm
  15718. MOV ESP, EBP
  15719. POP EBP
  15720. JMP [_GetVolumeNameForVolMountPoint]
  15721. end;
  15722. end;
  15723. var
  15724. _GetVolumePathNameA: Pointer;
  15725. function GetVolumePathNameA;
  15726. begin
  15727. GetProcedureAddress(_GetVolumePathNameA, kernel32, 'GetVolumePathNameA');
  15728. asm
  15729. MOV ESP, EBP
  15730. POP EBP
  15731. JMP [_GetVolumePathNameA]
  15732. end;
  15733. end;
  15734. var
  15735. _GetVolumePathNameW: Pointer;
  15736. function GetVolumePathNameW;
  15737. begin
  15738. GetProcedureAddress(_GetVolumePathNameW, kernel32, 'GetVolumePathNameW');
  15739. asm
  15740. MOV ESP, EBP
  15741. POP EBP
  15742. JMP [_GetVolumePathNameW]
  15743. end;
  15744. end;
  15745. var
  15746. _GetVolumePathName: Pointer;
  15747. function GetVolumePathName;
  15748. begin
  15749. GetProcedureAddress(_GetVolumePathName, kernel32, 'GetVolumePathName' + AWSuffix);
  15750. asm
  15751. MOV ESP, EBP
  15752. POP EBP
  15753. JMP [_GetVolumePathName]
  15754. end;
  15755. end;
  15756. var
  15757. _GetVolumePathNamesForVolNameA: Pointer;
  15758. function GetVolumePathNamesForVolumeNameA;
  15759. begin
  15760. GetProcedureAddress(_GetVolumePathNamesForVolNameA, kernel32, 'GetVolumePathNamesForVolumeNameA');
  15761. asm
  15762. MOV ESP, EBP
  15763. POP EBP
  15764. JMP [_GetVolumePathNamesForVolNameA]
  15765. end;
  15766. end;
  15767. var
  15768. _GetVolumePathNamesForVolNameW: Pointer;
  15769. function GetVolumePathNamesForVolumeNameW;
  15770. begin
  15771. GetProcedureAddress(_GetVolumePathNamesForVolNameW, kernel32, 'GetVolumePathNamesForVolumeNameW');
  15772. asm
  15773. MOV ESP, EBP
  15774. POP EBP
  15775. JMP [_GetVolumePathNamesForVolNameW]
  15776. end;
  15777. end;
  15778. var
  15779. _GetVolumePathNamesForVolName: Pointer;
  15780. function GetVolumePathNamesForVolumeName;
  15781. begin
  15782. GetProcedureAddress(_GetVolumePathNamesForVolName, kernel32, 'GetVolumePathNamesForVolumeName' + AWSuffix);
  15783. asm
  15784. MOV ESP, EBP
  15785. POP EBP
  15786. JMP [_GetVolumePathNamesForVolName]
  15787. end;
  15788. end;
  15789. var
  15790. _CreateActCtxA: Pointer;
  15791. function CreateActCtxA;
  15792. begin
  15793. GetProcedureAddress(_CreateActCtxA, kernel32, 'CreateActCtxA');
  15794. asm
  15795. MOV ESP, EBP
  15796. POP EBP
  15797. JMP [_CreateActCtxA]
  15798. end;
  15799. end;
  15800. var
  15801. _CreateActCtxW: Pointer;
  15802. function CreateActCtxW;
  15803. begin
  15804. GetProcedureAddress(_CreateActCtxW, kernel32, 'CreateActCtxW');
  15805. asm
  15806. MOV ESP, EBP
  15807. POP EBP
  15808. JMP [_CreateActCtxW]
  15809. end;
  15810. end;
  15811. var
  15812. _CreateActCtx: Pointer;
  15813. function CreateActCtx;
  15814. begin
  15815. GetProcedureAddress(_CreateActCtx, kernel32, 'CreateActCtx' + AWSuffix);
  15816. asm
  15817. MOV ESP, EBP
  15818. POP EBP
  15819. JMP [_CreateActCtx]
  15820. end;
  15821. end;
  15822. var
  15823. _AddRefActCtx: Pointer;
  15824. procedure AddRefActCtx;
  15825. begin
  15826. GetProcedureAddress(_AddRefActCtx, kernel32, 'AddRefActCtx');
  15827. asm
  15828. MOV ESP, EBP
  15829. POP EBP
  15830. JMP [_AddRefActCtx]
  15831. end;
  15832. end;
  15833. var
  15834. _ReleaseActCtx: Pointer;
  15835. procedure ReleaseActCtx;
  15836. begin
  15837. GetProcedureAddress(_ReleaseActCtx, kernel32, 'ReleaseActCtx');
  15838. asm
  15839. MOV ESP, EBP
  15840. POP EBP
  15841. JMP [_ReleaseActCtx]
  15842. end;
  15843. end;
  15844. var
  15845. _ZombifyActCtx: Pointer;
  15846. function ZombifyActCtx;
  15847. begin
  15848. GetProcedureAddress(_ZombifyActCtx, kernel32, 'ZombifyActCtx');
  15849. asm
  15850. MOV ESP, EBP
  15851. POP EBP
  15852. JMP [_ZombifyActCtx]
  15853. end;
  15854. end;
  15855. var
  15856. _ActivateActCtx: Pointer;
  15857. function ActivateActCtx;
  15858. begin
  15859. GetProcedureAddress(_ActivateActCtx, kernel32, 'ActivateActCtx');
  15860. asm
  15861. MOV ESP, EBP
  15862. POP EBP
  15863. JMP [_ActivateActCtx]
  15864. end;
  15865. end;
  15866. var
  15867. _DeactivateActCtx: Pointer;
  15868. function DeactivateActCtx;
  15869. begin
  15870. GetProcedureAddress(_DeactivateActCtx, kernel32, 'DeactivateActCtx');
  15871. asm
  15872. MOV ESP, EBP
  15873. POP EBP
  15874. JMP [_DeactivateActCtx]
  15875. end;
  15876. end;
  15877. var
  15878. _GetCurrentActCtx: Pointer;
  15879. function GetCurrentActCtx;
  15880. begin
  15881. GetProcedureAddress(_GetCurrentActCtx, kernel32, 'GetCurrentActCtx');
  15882. asm
  15883. MOV ESP, EBP
  15884. POP EBP
  15885. JMP [_GetCurrentActCtx]
  15886. end;
  15887. end;
  15888. var
  15889. _FindActCtxSectionStringA: Pointer;
  15890. function FindActCtxSectionStringA;
  15891. begin
  15892. GetProcedureAddress(_FindActCtxSectionStringA, kernel32, 'FindActCtxSectionStringA');
  15893. asm
  15894. MOV ESP, EBP
  15895. POP EBP
  15896. JMP [_FindActCtxSectionStringA]
  15897. end;
  15898. end;
  15899. var
  15900. _FindActCtxSectionStringW: Pointer;
  15901. function FindActCtxSectionStringW;
  15902. begin
  15903. GetProcedureAddress(_FindActCtxSectionStringW, kernel32, 'FindActCtxSectionStringW');
  15904. asm
  15905. MOV ESP, EBP
  15906. POP EBP
  15907. JMP [_FindActCtxSectionStringW]
  15908. end;
  15909. end;
  15910. var
  15911. _FindActCtxSectionString: Pointer;
  15912. function FindActCtxSectionString;
  15913. begin
  15914. GetProcedureAddress(_FindActCtxSectionString, kernel32, 'FindActCtxSectionString' + AWSuffix);
  15915. asm
  15916. MOV ESP, EBP
  15917. POP EBP
  15918. JMP [_FindActCtxSectionString]
  15919. end;
  15920. end;
  15921. var
  15922. _FindActCtxSectionGuid: Pointer;
  15923. function FindActCtxSectionGuid;
  15924. begin
  15925. GetProcedureAddress(_FindActCtxSectionGuid, kernel32, 'FindActCtxSectionGuid');
  15926. asm
  15927. MOV ESP, EBP
  15928. POP EBP
  15929. JMP [_FindActCtxSectionGuid]
  15930. end;
  15931. end;
  15932. var
  15933. _QueryActCtxW: Pointer;
  15934. function QueryActCtxW;
  15935. begin
  15936. GetProcedureAddress(_QueryActCtxW, kernel32, 'QueryActCtxW');
  15937. asm
  15938. MOV ESP, EBP
  15939. POP EBP
  15940. JMP [_QueryActCtxW]
  15941. end;
  15942. end;
  15943. var
  15944. _ProcessIdToSessionId: Pointer;
  15945. function ProcessIdToSessionId;
  15946. begin
  15947. GetProcedureAddress(_ProcessIdToSessionId, kernel32, 'ProcessIdToSessionId');
  15948. asm
  15949. MOV ESP, EBP
  15950. POP EBP
  15951. JMP [_ProcessIdToSessionId]
  15952. end;
  15953. end;
  15954. var
  15955. _WTSGetActiveConsoleSessionId: Pointer;
  15956. function WTSGetActiveConsoleSessionId;
  15957. begin
  15958. GetProcedureAddress(_WTSGetActiveConsoleSessionId, kernel32, 'WTSGetActiveConsoleSessionId');
  15959. asm
  15960. MOV ESP, EBP
  15961. POP EBP
  15962. JMP [_WTSGetActiveConsoleSessionId]
  15963. end;
  15964. end;
  15965. var
  15966. _IsWow64Process: Pointer;
  15967. function IsWow64Process;
  15968. begin
  15969. GetProcedureAddress(_IsWow64Process, kernel32, 'IsWow64Process');
  15970. asm
  15971. MOV ESP, EBP
  15972. POP EBP
  15973. JMP [_IsWow64Process]
  15974. end;
  15975. end;
  15976. var
  15977. _GetLogicalProcessorInformation: Pointer;
  15978. function GetLogicalProcessorInformation;
  15979. begin
  15980. GetProcedureAddress(_GetLogicalProcessorInformation, kernel32, 'GetLogicalProcessorInformation');
  15981. asm
  15982. MOV ESP, EBP
  15983. POP EBP
  15984. JMP [_GetLogicalProcessorInformation]
  15985. end;
  15986. end;
  15987. var
  15988. _GetNumaHighestNodeNumber: Pointer;
  15989. function GetNumaHighestNodeNumber;
  15990. begin
  15991. GetProcedureAddress(_GetNumaHighestNodeNumber, kernel32, 'GetNumaHighestNodeNumber');
  15992. asm
  15993. MOV ESP, EBP
  15994. POP EBP
  15995. JMP [_GetNumaHighestNodeNumber]
  15996. end;
  15997. end;
  15998. var
  15999. _GetNumaProcessorNode: Pointer;
  16000. function GetNumaProcessorNode;
  16001. begin
  16002. GetProcedureAddress(_GetNumaProcessorNode, kernel32, 'GetNumaProcessorNode');
  16003. asm
  16004. MOV ESP, EBP
  16005. POP EBP
  16006. JMP [_GetNumaProcessorNode]
  16007. end;
  16008. end;
  16009. var
  16010. _GetNumaNodeProcessorMask: Pointer;
  16011. function GetNumaNodeProcessorMask;
  16012. begin
  16013. GetProcedureAddress(_GetNumaNodeProcessorMask, kernel32, 'GetNumaNodeProcessorMask');
  16014. asm
  16015. MOV ESP, EBP
  16016. POP EBP
  16017. JMP [_GetNumaNodeProcessorMask]
  16018. end;
  16019. end;
  16020. var
  16021. _GetNumaAvailableMemoryNode: Pointer;
  16022. function GetNumaAvailableMemoryNode;
  16023. begin
  16024. GetProcedureAddress(_GetNumaAvailableMemoryNode, kernel32, 'GetNumaAvailableMemoryNode');
  16025. asm
  16026. MOV ESP, EBP
  16027. POP EBP
  16028. JMP [_GetNumaAvailableMemoryNode]
  16029. end;
  16030. end;
  16031. {$ELSE}
  16032. function InterlockedCompareExchange64; external kernel32 name 'InterlockedCompareExchange64';
  16033. function InterlockedIncrement; external kernel32 name 'InterlockedIncrement';
  16034. function InterlockedDecrement; external kernel32 name 'InterlockedDecrement';
  16035. function InterlockedExchange; external kernel32 name 'InterlockedExchange';
  16036. function InterlockedExchangeAdd; external kernel32 name 'InterlockedExchangeAdd';
  16037. function InterlockedCompareExchange; external kernel32 name 'InterlockedCompareExchange';
  16038. procedure InitializeSListHead; external kernel32 name 'InitializeSListHead';
  16039. function InterlockedPopEntrySList; external kernel32 name 'InterlockedPopEntrySList';
  16040. function InterlockedPushEntrySList; external kernel32 name 'InterlockedPushEntrySList';
  16041. function InterlockedFlushSList; external kernel32 name 'InterlockedFlushSList';
  16042. function QueryDepthSList; external kernel32 name 'QueryDepthSList';
  16043. function FreeResource; external kernel32 name 'FreeResource';
  16044. function LockResource; external kernel32 name 'LockResource';
  16045. function FreeLibrary; external kernel32 name 'FreeLibrary';
  16046. procedure FreeLibraryAndExitThread; external kernel32 name 'FreeLibraryAndExitThread';
  16047. function DisableThreadLibraryCalls; external kernel32 name 'DisableThreadLibraryCalls';
  16048. {$IFNDEF JWA_INCLUDEMODE}
  16049. function GetProcAddress; external kernel32 name 'GetProcAddress';
  16050. {$ENDIF !JWA_INCLUDEMODE}
  16051. function GetVersion; external kernel32 name 'GetVersion';
  16052. function GlobalAlloc; external kernel32 name 'GlobalAlloc';
  16053. function GlobalReAlloc; external kernel32 name 'GlobalReAlloc';
  16054. function GlobalSize; external kernel32 name 'GlobalSize';
  16055. function GlobalFlags; external kernel32 name 'GlobalFlags';
  16056. function GlobalLock; external kernel32 name 'GlobalLock';
  16057. function GlobalHandle; external kernel32 name 'GlobalHandle';
  16058. function GlobalUnlock; external kernel32 name 'GlobalUnlock';
  16059. function GlobalFree; external kernel32 name 'GlobalFree';
  16060. function GlobalCompact; external kernel32 name 'GlobalCompact';
  16061. procedure GlobalFix; external kernel32 name 'GlobalFix';
  16062. procedure GlobalUnfix; external kernel32 name 'GlobalUnfix';
  16063. function GlobalWire; external kernel32 name 'GlobalWire';
  16064. function GlobalUnWire; external kernel32 name 'GlobalUnWire';
  16065. procedure GlobalMemoryStatus; external kernel32 name 'GlobalMemoryStatus';
  16066. function GlobalMemoryStatusEx; external kernel32 name 'GlobalMemoryStatusEx';
  16067. function LocalAlloc; external kernel32 name 'LocalAlloc';
  16068. function LocalReAlloc; external kernel32 name 'LocalReAlloc';
  16069. function LocalLock; external kernel32 name 'LocalLock';
  16070. function LocalHandle; external kernel32 name 'LocalHandle';
  16071. function LocalUnlock; external kernel32 name 'LocalUnlock';
  16072. function LocalSize; external kernel32 name 'LocalSize';
  16073. function LocalFlags; external kernel32 name 'LocalFlags';
  16074. function LocalFree; external kernel32 name 'LocalFree';
  16075. function LocalShrink; external kernel32 name 'LocalShrink';
  16076. function LocalCompact; external kernel32 name 'LocalCompact';
  16077. function FlushInstructionCache; external kernel32 name 'FlushInstructionCache';
  16078. function VirtualAlloc; external kernel32 name 'VirtualAlloc';
  16079. function VirtualFree; external kernel32 name 'VirtualFree';
  16080. function VirtualProtect; external kernel32 name 'VirtualProtect';
  16081. function VirtualQuery; external kernel32 name 'VirtualQuery';
  16082. function VirtualAllocEx; external kernel32 name 'VirtualAllocEx';
  16083. function GetWriteWatch; external kernel32 name 'GetWriteWatch';
  16084. function ResetWriteWatch; external kernel32 name 'ResetWriteWatch';
  16085. function GetLargePageMinimum; external kernel32 name 'GetLargePageMinimum';
  16086. function VirtualFreeEx; external kernel32 name 'VirtualFreeEx';
  16087. function VirtualProtectEx; external kernel32 name 'VirtualProtectEx';
  16088. function VirtualQueryEx; external kernel32 name 'VirtualQueryEx';
  16089. function HeapCreate; external kernel32 name 'HeapCreate';
  16090. function HeapDestroy; external kernel32 name 'HeapDestroy';
  16091. function HeapAlloc; external kernel32 name 'HeapAlloc';
  16092. function HeapReAlloc; external kernel32 name 'HeapReAlloc';
  16093. function HeapFree; external kernel32 name 'HeapFree';
  16094. function HeapSize; external kernel32 name 'HeapSize';
  16095. function HeapValidate; external kernel32 name 'HeapValidate';
  16096. function HeapCompact; external kernel32 name 'HeapCompact';
  16097. function GetProcessHeap; external kernel32 name 'GetProcessHeap';
  16098. function GetProcessHeaps; external kernel32 name 'GetProcessHeaps';
  16099. function HeapLock; external kernel32 name 'HeapLock';
  16100. function HeapUnlock; external kernel32 name 'HeapUnlock';
  16101. function HeapWalk; external kernel32 name 'HeapWalk';
  16102. function HeapSetInformation; external kernel32 name 'HeapSetInformation';
  16103. function HeapQueryInformation; external kernel32 name 'HeapQueryInformation';
  16104. function GetBinaryTypeA; external kernel32 name 'GetBinaryTypeA';
  16105. function GetBinaryTypeW; external kernel32 name 'GetBinaryTypeW';
  16106. function GetBinaryType; external kernel32 name 'GetBinaryType' + AWSuffix;
  16107. function GetShortPathNameA; external kernel32 name 'GetShortPathNameA';
  16108. function GetShortPathNameW; external kernel32 name 'GetShortPathNameW';
  16109. function GetShortPathName; external kernel32 name 'GetShortPathName' + AWSuffix;
  16110. function GetLongPathNameA; external kernel32 name 'GetLongPathNameA';
  16111. function GetLongPathNameW; external kernel32 name 'GetLongPathNameW';
  16112. function GetLongPathName; external kernel32 name 'GetLongPathName' + AWSuffix;
  16113. function GetProcessAffinityMask; external kernel32 name 'GetProcessAffinityMask';
  16114. function SetProcessAffinityMask; external kernel32 name 'SetProcessAffinityMask';
  16115. function GetProcessHandleCount; external kernel32 name 'GetProcessHandleCount';
  16116. function GetProcessTimes; external kernel32 name 'GetProcessTimes';
  16117. function GetProcessIoCounters; external kernel32 name 'GetProcessIoCounters';
  16118. function GetProcessWorkingSetSize; external kernel32 name 'GetProcessWorkingSetSize';
  16119. function GetProcessWorkingSetSizeEx; external kernel32 name 'GetProcessWorkingSetSizeEx';
  16120. function SetProcessWorkingSetSize; external kernel32 name 'SetProcessWorkingSetSize';
  16121. function SetProcessWorkingSetSizeEx; external kernel32 name 'SetProcessWorkingSetSizeEx';
  16122. function OpenProcess; external kernel32 name 'OpenProcess';
  16123. function GetCurrentProcess; external kernel32 name 'GetCurrentProcess';
  16124. function GetCurrentProcessId; external kernel32 name 'GetCurrentProcessId';
  16125. procedure ExitProcess; external kernel32 name 'ExitProcess';
  16126. function TerminateProcess; external kernel32 name 'TerminateProcess';
  16127. function GetExitCodeProcess; external kernel32 name 'GetExitCodeProcess';
  16128. procedure FatalExit; external kernel32 name 'FatalExit';
  16129. function GetEnvironmentStringsW; external kernel32 name 'GetEnvironmentStringsW';
  16130. function GetEnvironmentStrings; external kernel32 name 'GetEnvironmentStrings' + AWSuffix;
  16131. {$IFNDEF UNICODE}
  16132. function GetEnvironmentStringsA; external kernel32 name 'GetEnvironmentStringsA';
  16133. {$ENDIF !UNICODE}
  16134. function SetEnvironmentStringsA; external kernel32 name 'SetEnvironmentStringsA';
  16135. function SetEnvironmentStringsW; external kernel32 name 'SetEnvironmentStringsW';
  16136. function SetEnvironmentStrings; external kernel32 name 'SetEnvironmentStrings' + AWSuffix;
  16137. function FreeEnvironmentStringsA; external kernel32 name 'FreeEnvironmentStringsA';
  16138. function FreeEnvironmentStringsW; external kernel32 name 'FreeEnvironmentStringsW';
  16139. function FreeEnvironmentStrings; external kernel32 name 'FreeEnvironmentStrings' + AWSuffix;
  16140. procedure RaiseException; external kernel32 name 'RaiseException';
  16141. function UnhandledExceptionFilter; external kernel32 name 'UnhandledExceptionFilter';
  16142. function SetUnhandledExceptionFilter; external kernel32 name 'SetUnhandledExceptionFilter';
  16143. function CreateFiber; external kernel32 name 'CreateFiber';
  16144. function CreateFiberEx; external kernel32 name 'CreateFiberEx';
  16145. procedure DeleteFiber; external kernel32 name 'DeleteFiber';
  16146. function ConvertThreadToFiber; external kernel32 name 'ConvertThreadToFiber';
  16147. function ConvertThreadToFiberEx; external kernel32 name 'ConvertThreadToFiberEx';
  16148. function ConvertFiberToThread; external kernel32 name 'ConvertFiberToThread';
  16149. procedure SwitchToFiber; external kernel32 name 'SwitchToFiber';
  16150. function SwitchToThread; external kernel32 name 'SwitchToThread';
  16151. function CreateThread; external kernel32 name 'CreateThread';
  16152. function CreateRemoteThread; external kernel32 name 'CreateRemoteThread';
  16153. function GetCurrentThread; external kernel32 name 'GetCurrentThread';
  16154. function GetCurrentThreadId; external kernel32 name 'GetCurrentThreadId';
  16155. function GetProcessIdOfThread; external kernel32 name 'GetProcessIdOfThread';
  16156. function GetThreadId; external kernel32 name 'GetThreadId';
  16157. function GetProcessId; external kernel32 name 'GetProcessId';
  16158. function GetCurrentProcessorNumber; external kernel32 name 'GetCurrentProcessorNumber';
  16159. function SetThreadAffinityMask; external kernel32 name 'SetThreadAffinityMask';
  16160. function SetThreadIdealProcessor; external kernel32 name 'SetThreadIdealProcessor';
  16161. function SetProcessPriorityBoost; external kernel32 name 'SetProcessPriorityBoost';
  16162. function GetProcessPriorityBoost; external kernel32 name 'GetProcessPriorityBoost';
  16163. function RequestWakeupLatency; external kernel32 name 'RequestWakeupLatency';
  16164. function IsSystemResumeAutomatic; external kernel32 name 'IsSystemResumeAutomatic';
  16165. function OpenThread; external kernel32 name 'OpenThread';
  16166. function SetThreadPriority; external kernel32 name 'SetThreadPriority';
  16167. function SetThreadPriorityBoost; external kernel32 name 'SetThreadPriorityBoost';
  16168. function GetThreadPriorityBoost; external kernel32 name 'GetThreadPriorityBoost';
  16169. function GetThreadPriority; external kernel32 name 'GetThreadPriority';
  16170. function GetThreadTimes; external kernel32 name 'GetThreadTimes';
  16171. function GetThreadIOPendingFlag; external kernel32 name 'GetThreadIOPendingFlag';
  16172. procedure ExitThread; external kernel32 name 'ExitThread';
  16173. function TerminateThread; external kernel32 name 'TerminateThread';
  16174. function GetExitCodeThread; external kernel32 name 'GetExitCodeThread';
  16175. function GetThreadSelectorEntry; external kernel32 name 'GetThreadSelectorEntry';
  16176. function SetThreadExecutionState; external kernel32 name 'SetThreadExecutionState';
  16177. function GetLastError; external kernel32 name 'GetLastError';
  16178. procedure SetLastError; external kernel32 name 'SetLastError';
  16179. procedure RestoreLastError; external kernel32 name 'RestoreLastError';
  16180. function GetOverlappedResult; external kernel32 name 'GetOverlappedResult';
  16181. function CreateIoCompletionPort; external kernel32 name 'CreateIoCompletionPort';
  16182. function GetQueuedCompletionStatus; external kernel32 name 'GetQueuedCompletionStatus';
  16183. function PostQueuedCompletionStatus; external kernel32 name 'PostQueuedCompletionStatus';
  16184. function SetErrorMode; external kernel32 name 'SetErrorMode';
  16185. function ReadProcessMemory; external kernel32 name 'ReadProcessMemory';
  16186. function WriteProcessMemory; external kernel32 name 'WriteProcessMemory';
  16187. function GetThreadContext; external kernel32 name 'GetThreadContext';
  16188. function SetThreadContext; external kernel32 name 'SetThreadContext';
  16189. function SuspendThread; external kernel32 name 'SuspendThread';
  16190. function ResumeThread; external kernel32 name 'ResumeThread';
  16191. function QueueUserAPC; external kernel32 name 'QueueUserAPC';
  16192. function IsDebuggerPresent; external kernel32 name 'IsDebuggerPresent';
  16193. function CheckRemoteDebuggerPresent; external kernel32 name 'CheckRemoteDebuggerPresent';
  16194. procedure DebugBreak; external kernel32 name 'DebugBreak';
  16195. function WaitForDebugEvent; external kernel32 name 'WaitForDebugEvent';
  16196. function ContinueDebugEvent; external kernel32 name 'ContinueDebugEvent';
  16197. function DebugActiveProcess; external kernel32 name 'DebugActiveProcess';
  16198. function DebugActiveProcessStop; external kernel32 name 'DebugActiveProcessStop';
  16199. function DebugSetProcessKillOnExit; external kernel32 name 'DebugSetProcessKillOnExit';
  16200. function DebugBreakProcess; external kernel32 name 'DebugBreakProcess';
  16201. procedure InitializeCriticalSection; external kernel32 name 'InitializeCriticalSection';
  16202. procedure EnterCriticalSection; external kernel32 name 'EnterCriticalSection';
  16203. procedure LeaveCriticalSection; external kernel32 name 'LeaveCriticalSection';
  16204. function InitializeCriticalSectionAndSpinCount; external kernel32 name 'InitializeCriticalSectionAndSpinCount';
  16205. function SetCriticalSectionSpinCount; external kernel32 name 'SetCriticalSectionSpinCount';
  16206. function TryEnterCriticalSection; external kernel32 name 'TryEnterCriticalSection';
  16207. procedure DeleteCriticalSection; external kernel32 name 'DeleteCriticalSection';
  16208. function SetEvent; external kernel32 name 'SetEvent';
  16209. function ResetEvent; external kernel32 name 'ResetEvent';
  16210. function PulseEvent; external kernel32 name 'PulseEvent';
  16211. function ReleaseSemaphore; external kernel32 name 'ReleaseSemaphore';
  16212. function ReleaseMutex; external kernel32 name 'ReleaseMutex';
  16213. function WaitForSingleObject; external kernel32 name 'WaitForSingleObject';
  16214. function WaitForMultipleObjects; external kernel32 name 'WaitForMultipleObjects';
  16215. procedure Sleep; external kernel32 name 'Sleep';
  16216. function LoadResource; external kernel32 name 'LoadResource';
  16217. function SizeofResource; external kernel32 name 'SizeofResource';
  16218. function GlobalDeleteAtom; external kernel32 name 'GlobalDeleteAtom';
  16219. function InitAtomTable; external kernel32 name 'InitAtomTable';
  16220. function DeleteAtom; external kernel32 name 'DeleteAtom';
  16221. function SetHandleCount; external kernel32 name 'SetHandleCount';
  16222. function GetLogicalDrives; external kernel32 name 'GetLogicalDrives';
  16223. function LockFile; external kernel32 name 'LockFile';
  16224. function UnlockFile; external kernel32 name 'UnlockFile';
  16225. function LockFileEx; external kernel32 name 'LockFileEx';
  16226. function UnlockFileEx; external kernel32 name 'UnlockFileEx';
  16227. function GetFileInformationByHandle; external kernel32 name 'GetFileInformationByHandle';
  16228. function GetFileType; external kernel32 name 'GetFileType';
  16229. function GetFileSize; external kernel32 name 'GetFileSize';
  16230. function GetFileSizeEx; external kernel32 name 'GetFileSizeEx';
  16231. function GetStdHandle; external kernel32 name 'GetStdHandle';
  16232. function SetStdHandle; external kernel32 name 'SetStdHandle';
  16233. function WriteFile; external kernel32 name 'WriteFile';
  16234. function ReadFile; external kernel32 name 'ReadFile';
  16235. function FlushFileBuffers; external kernel32 name 'FlushFileBuffers';
  16236. function DeviceIoControl; external kernel32 name 'DeviceIoControl';
  16237. function RequestDeviceWakeup; external kernel32 name 'RequestDeviceWakeup';
  16238. function CancelDeviceWakeupRequest; external kernel32 name 'CancelDeviceWakeupRequest';
  16239. function GetDevicePowerState; external kernel32 name 'GetDevicePowerState';
  16240. function SetMessageWaitingIndicator; external kernel32 name 'SetMessageWaitingIndicator';
  16241. function SetEndOfFile; external kernel32 name 'SetEndOfFile';
  16242. function SetFilePointer; external kernel32 name 'SetFilePointer';
  16243. function SetFilePointerEx; external kernel32 name 'SetFilePointerEx';
  16244. function FindClose; external kernel32 name 'FindClose';
  16245. function GetFileTime; external kernel32 name 'GetFileTime';
  16246. function SetFileTime; external kernel32 name 'SetFileTime';
  16247. function SetFileValidData; external kernel32 name 'SetFileValidData';
  16248. function SetFileShortNameA; external kernel32 name 'SetFileShortNameA';
  16249. function SetFileShortNameW; external kernel32 name 'SetFileShortNameW';
  16250. function SetFileShortName; external kernel32 name 'SetFileShortName' + AWSuffix;
  16251. function CloseHandle; external kernel32 name 'CloseHandle';
  16252. function DuplicateHandle; external kernel32 name 'DuplicateHandle';
  16253. function GetHandleInformation; external kernel32 name 'GetHandleInformation';
  16254. function SetHandleInformation; external kernel32 name 'SetHandleInformation';
  16255. function LoadModule; external kernel32 name 'LoadModule';
  16256. function WinExec; external kernel32 name 'WinExec';
  16257. function ClearCommBreak; external kernel32 name 'ClearCommBreak';
  16258. function ClearCommError; external kernel32 name 'ClearCommError';
  16259. function SetupComm; external kernel32 name 'SetupComm';
  16260. function EscapeCommFunction; external kernel32 name 'EscapeCommFunction';
  16261. function GetCommConfig; external kernel32 name 'GetCommConfig';
  16262. function GetCommMask; external kernel32 name 'GetCommMask';
  16263. function GetCommProperties; external kernel32 name 'GetCommProperties';
  16264. function GetCommModemStatus; external kernel32 name 'GetCommModemStatus';
  16265. function GetCommState; external kernel32 name 'GetCommState';
  16266. function GetCommTimeouts; external kernel32 name 'GetCommTimeouts';
  16267. function PurgeComm; external kernel32 name 'PurgeComm';
  16268. function SetCommBreak; external kernel32 name 'SetCommBreak';
  16269. function SetCommConfig; external kernel32 name 'SetCommConfig';
  16270. function SetCommMask; external kernel32 name 'SetCommMask';
  16271. function SetCommState; external kernel32 name 'SetCommState';
  16272. function SetCommTimeouts; external kernel32 name 'SetCommTimeouts';
  16273. function TransmitCommChar; external kernel32 name 'TransmitCommChar';
  16274. function WaitCommEvent; external kernel32 name 'WaitCommEvent';
  16275. function SetTapePosition; external kernel32 name 'SetTapePosition';
  16276. function GetTapePosition; external kernel32 name 'GetTapePosition';
  16277. function PrepareTape; external kernel32 name 'PrepareTape';
  16278. function EraseTape; external kernel32 name 'EraseTape';
  16279. function CreateTapePartition; external kernel32 name 'CreateTapePartition';
  16280. function WriteTapemark; external kernel32 name 'WriteTapemark';
  16281. function GetTapeStatus; external kernel32 name 'GetTapeStatus';
  16282. function GetTapeParameters; external kernel32 name 'GetTapeParameters';
  16283. function SetTapeParameters; external kernel32 name 'SetTapeParameters';
  16284. function Beep; external kernel32 name 'Beep';
  16285. function MulDiv; external kernel32 name 'MulDiv';
  16286. procedure GetSystemTime; external kernel32 name 'GetSystemTime';
  16287. procedure GetSystemTimeAsFileTime; external kernel32 name 'GetSystemTimeAsFileTime';
  16288. function SetSystemTime; external kernel32 name 'SetSystemTime';
  16289. procedure GetLocalTime; external kernel32 name 'GetLocalTime';
  16290. function SetLocalTime; external kernel32 name 'SetLocalTime';
  16291. procedure GetSystemInfo; external kernel32 name 'GetSystemInfo';
  16292. function GetSystemRegistryQuota; external kernel32 name 'GetSystemRegistryQuota';
  16293. function GetSystemTimes; external kernel32 name 'GetSystemTimes';
  16294. procedure GetNativeSystemInfo; external kernel32 name 'GetNativeSystemInfo';
  16295. function IsProcessorFeaturePresent; external kernel32 name 'IsProcessorFeaturePresent';
  16296. function SystemTimeToTzSpecificLocalTime; external kernel32 name 'SystemTimeToTzSpecificLocalTime';
  16297. function TzSpecificLocalTimeToSystemTime; external kernel32 name 'TzSpecificLocalTimeToSystemTime';
  16298. function GetTimeZoneInformation; external kernel32 name 'GetTimeZoneInformation';
  16299. function SetTimeZoneInformation; external kernel32 name 'SetTimeZoneInformation';
  16300. function SystemTimeToFileTime; external kernel32 name 'SystemTimeToFileTime';
  16301. function FileTimeToLocalFileTime; external kernel32 name 'FileTimeToLocalFileTime';
  16302. function LocalFileTimeToFileTime; external kernel32 name 'LocalFileTimeToFileTime';
  16303. function FileTimeToSystemTime; external kernel32 name 'FileTimeToSystemTime';
  16304. function CompareFileTime; external kernel32 name 'CompareFileTime';
  16305. function FileTimeToDosDateTime; external kernel32 name 'FileTimeToDosDateTime';
  16306. function DosDateTimeToFileTime; external kernel32 name 'DosDateTimeToFileTime';
  16307. function GetTickCount; external kernel32 name 'GetTickCount';
  16308. function SetSystemTimeAdjustment; external kernel32 name 'SetSystemTimeAdjustment';
  16309. function GetSystemTimeAdjustment; external kernel32 name 'GetSystemTimeAdjustment';
  16310. function FormatMessageA; external kernel32 name 'FormatMessageA';
  16311. function FormatMessageW; external kernel32 name 'FormatMessageW';
  16312. function FormatMessage; external kernel32 name 'FormatMessage' + AWSuffix;
  16313. function CreatePipe; external kernel32 name 'CreatePipe';
  16314. function ConnectNamedPipe; external kernel32 name 'ConnectNamedPipe';
  16315. function DisconnectNamedPipe; external kernel32 name 'DisconnectNamedPipe';
  16316. function SetNamedPipeHandleState; external kernel32 name 'SetNamedPipeHandleState';
  16317. function GetNamedPipeInfo; external kernel32 name 'GetNamedPipeInfo';
  16318. function PeekNamedPipe; external kernel32 name 'PeekNamedPipe';
  16319. function TransactNamedPipe; external kernel32 name 'TransactNamedPipe';
  16320. function CreateMailslotA; external kernel32 name 'CreateMailslotA';
  16321. function CreateMailslotW; external kernel32 name 'CreateMailslotW';
  16322. function CreateMailslot; external kernel32 name 'CreateMailslot' + AWSuffix;
  16323. function GetMailslotInfo; external kernel32 name 'GetMailslotInfo';
  16324. function SetMailslotInfo; external kernel32 name 'SetMailslotInfo';
  16325. function MapViewOfFile; external kernel32 name 'MapViewOfFile';
  16326. function FlushViewOfFile; external kernel32 name 'FlushViewOfFile';
  16327. function UnmapViewOfFile; external kernel32 name 'UnmapViewOfFile';
  16328. function EncryptFileA; external advapi32 name 'EncryptFileA';
  16329. function EncryptFileW; external advapi32 name 'EncryptFileW';
  16330. function EncryptFile; external advapi32 name 'EncryptFile' + AWSuffix;
  16331. function DecryptFileA; external advapi32 name 'DecryptFileA';
  16332. function DecryptFileW; external advapi32 name 'DecryptFileW';
  16333. function DecryptFile; external advapi32 name 'DecryptFile' + AWSuffix;
  16334. function FileEncryptionStatusA; external advapi32 name 'FileEncryptionStatusA';
  16335. function FileEncryptionStatusW; external advapi32 name 'FileEncryptionStatusW';
  16336. function FileEncryptionStatus; external advapi32 name 'FileEncryptionStatus' + AWSuffix;
  16337. function OpenEncryptedFileRawA; external advapi32 name 'OpenEncryptedFileRawA';
  16338. function OpenEncryptedFileRawW; external advapi32 name 'OpenEncryptedFileRawW';
  16339. function OpenEncryptedFileRaw; external advapi32 name 'OpenEncryptedFileRaw' + AWSuffix;
  16340. function ReadEncryptedFileRaw; external advapi32 name 'ReadEncryptedFileRaw';
  16341. function WriteEncryptedFileRaw; external advapi32 name 'WriteEncryptedFileRaw';
  16342. procedure CloseEncryptedFileRaw; external advapi32 name 'CloseEncryptedFileRaw';
  16343. function lstrcmpA; external kernel32 name 'lstrcmpA';
  16344. function lstrcmpW; external kernel32 name 'lstrcmpW';
  16345. function lstrcmp; external kernel32 name 'lstrcmp' + AWSuffix;
  16346. function lstrcmpiA; external kernel32 name 'lstrcmpiA';
  16347. function lstrcmpiW; external kernel32 name 'lstrcmpiW';
  16348. function lstrcmpi; external kernel32 name 'lstrcmpi' + AWSuffix;
  16349. function lstrcpynA; external kernel32 name 'lstrcpynA';
  16350. function lstrcpynW; external kernel32 name 'lstrcpynW';
  16351. function lstrcpyn; external kernel32 name 'lstrcpyn' + AWSuffix;
  16352. function lstrcpyA; external kernel32 name 'lstrcpyA';
  16353. function lstrcpyW; external kernel32 name 'lstrcpyW';
  16354. function lstrcpy; external kernel32 name 'lstrcpy' + AWSuffix;
  16355. function lstrcatA; external kernel32 name 'lstrcatA';
  16356. function lstrcatW; external kernel32 name 'lstrcatW';
  16357. function lstrcat; external kernel32 name 'lstrcat' + AWSuffix;
  16358. function lstrlenA; external kernel32 name 'lstrlenA';
  16359. function lstrlenW; external kernel32 name 'lstrlenW';
  16360. function lstrlen; external kernel32 name 'lstrlen' + AWSuffix;
  16361. function OpenFile; external kernel32 name 'OpenFile';
  16362. function _lopen; external kernel32 name '_lopen';
  16363. function _lcreat; external kernel32 name '_lcreat';
  16364. function _lread; external kernel32 name '_lread';
  16365. function _lwrite; external kernel32 name '_lwrite';
  16366. function _hread; external kernel32 name '_hread';
  16367. function _hwrite; external kernel32 name '_hwrite';
  16368. function _lclose; external kernel32 name '_lclose';
  16369. function _llseek; external kernel32 name '_llseek';
  16370. function IsTextUnicode; external advapi32 name 'IsTextUnicode';
  16371. function FlsAlloc; external kernel32 name 'FlsAlloc';
  16372. function FlsGetValue; external kernel32 name 'FlsGetValue';
  16373. function FlsSetValue; external kernel32 name 'FlsSetValue';
  16374. function FlsFree; external kernel32 name 'FlsFree';
  16375. function TlsAlloc; external kernel32 name 'TlsAlloc';
  16376. function TlsGetValue; external kernel32 name 'TlsGetValue';
  16377. function TlsSetValue; external kernel32 name 'TlsSetValue';
  16378. function TlsFree; external kernel32 name 'TlsFree';
  16379. function SleepEx; external kernel32 name 'SleepEx';
  16380. function WaitForSingleObjectEx; external kernel32 name 'WaitForSingleObjectEx';
  16381. function WaitForMultipleObjectsEx; external kernel32 name 'WaitForMultipleObjectsEx';
  16382. function SignalObjectAndWait; external kernel32 name 'SignalObjectAndWait';
  16383. function ReadFileEx; external kernel32 name 'ReadFileEx';
  16384. function WriteFileEx; external kernel32 name 'WriteFileEx';
  16385. function BackupRead; external kernel32 name 'BackupRead';
  16386. function BackupSeek; external kernel32 name 'BackupSeek';
  16387. function BackupWrite; external kernel32 name 'BackupWrite';
  16388. function ReadFileScatter; external kernel32 name 'ReadFileScatter';
  16389. function WriteFileGather; external kernel32 name 'WriteFileGather';
  16390. function OpenMutexA; external kernel32 name 'OpenMutexA';
  16391. function OpenMutexW; external kernel32 name 'OpenMutexW';
  16392. function OpenMutex; external kernel32 name 'OpenMutex' + AWSuffix;
  16393. function CreateEventA; external kernel32 name 'CreateEventA';
  16394. function CreateEventW; external kernel32 name 'CreateEventW';
  16395. function CreateEvent; external kernel32 name 'CreateEvent' + AWSuffix;
  16396. function OpenEventA; external kernel32 name 'OpenEventA';
  16397. function OpenEventW; external kernel32 name 'OpenEventW';
  16398. function OpenEvent; external kernel32 name 'OpenEvent' + AWSuffix;
  16399. function CreateSemaphoreA; external kernel32 name 'CreateSemaphoreA';
  16400. function CreateSemaphoreW; external kernel32 name 'CreateSemaphoreW';
  16401. function CreateSemaphore; external kernel32 name 'CreateSemaphore' + AWSuffix;
  16402. function OpenSemaphoreA; external kernel32 name 'OpenSemaphoreA';
  16403. function OpenSemaphoreW; external kernel32 name 'OpenSemaphoreW';
  16404. function OpenSemaphore; external kernel32 name 'OpenSemaphore' + AWSuffix;
  16405. function CreateWaitableTimerA; external kernel32 name 'CreateWaitableTimerA';
  16406. function CreateWaitableTimerW; external kernel32 name 'CreateWaitableTimerW';
  16407. function CreateWaitableTimer; external kernel32 name 'CreateWaitableTimer' + AWSuffix;
  16408. function OpenWaitableTimerA; external kernel32 name 'OpenWaitableTimerA';
  16409. function OpenWaitableTimerW; external kernel32 name 'OpenWaitableTimerW';
  16410. function OpenWaitableTimer; external kernel32 name 'OpenWaitableTimer' + AWSuffix;
  16411. function SetWaitableTimer; external kernel32 name 'SetWaitableTimer';
  16412. function CancelWaitableTimer; external kernel32 name 'CancelWaitableTimer';
  16413. function CreateFileMappingA; external kernel32 name 'CreateFileMappingA';
  16414. function CreateFileMappingW; external kernel32 name 'CreateFileMappingW';
  16415. function CreateFileMapping; external kernel32 name 'CreateFileMapping' + AWSuffix;
  16416. function OpenFileMappingA; external kernel32 name 'OpenFileMappingA';
  16417. function OpenFileMappingW; external kernel32 name 'OpenFileMappingW';
  16418. function OpenFileMapping; external kernel32 name 'OpenFileMapping' + AWSuffix;
  16419. function GetLogicalDriveStringsA; external kernel32 name 'GetLogicalDriveStringsA';
  16420. function GetLogicalDriveStringsW; external kernel32 name 'GetLogicalDriveStringsW';
  16421. function GetLogicalDriveStrings; external kernel32 name 'GetLogicalDriveStrings' + AWSuffix;
  16422. function CreateMemoryResourceNotification; external kernel32 name 'CreateMemoryResourceNotification';
  16423. function QueryMemoryResourceNotification; external kernel32 name 'QueryMemoryResourceNotification';
  16424. function LoadLibraryA; external kernel32 name 'LoadLibraryA';
  16425. function LoadLibraryW; external kernel32 name 'LoadLibraryW';
  16426. {$IFNDEF JWA_INCLUDEMODE}
  16427. function LoadLibrary; external kernel32 name 'LoadLibrary' + AWSuffix;
  16428. {$ENDIF !JWA_INCLUDEMODE}
  16429. function LoadLibraryExA; external kernel32 name 'LoadLibraryExA';
  16430. function LoadLibraryExW; external kernel32 name 'LoadLibraryExW';
  16431. function LoadLibraryEx; external kernel32 name 'LoadLibraryEx' + AWSuffix;
  16432. function GetModuleFileNameA; external kernel32 name 'GetModuleFileNameA';
  16433. function GetModuleFileNameW; external kernel32 name 'GetModuleFileNameW';
  16434. function GetModuleFileName; external kernel32 name 'GetModuleFileName' + AWSuffix;
  16435. function GetModuleHandleA; external kernel32 name 'GetModuleHandleA';
  16436. function GetModuleHandleW; external kernel32 name 'GetModuleHandleW';
  16437. {$IFNDEF JWA_INCLUDEMODE}
  16438. function GetModuleHandle; external kernel32 name 'GetModuleHandle' + AWSuffix;
  16439. {$ENDIF !JWA_INCLUDEMODE}
  16440. function CreateProcessA; external kernel32 name 'CreateProcessA';
  16441. function CreateProcessW; external kernel32 name 'CreateProcessW';
  16442. function CreateProcess; external kernel32 name 'CreateProcess' + AWSuffix;
  16443. function GetModuleHandleExA; external kernel32 name 'GetModuleHandleExA';
  16444. function GetModuleHandleExW; external kernel32 name 'GetModuleHandleExW';
  16445. function GetModuleHandleEx; external kernel32 name 'GetModuleHandleEx' + AWSuffix;
  16446. function NeedCurrentDirectoryForExePathA; external kernel32 name 'NeedCurrentDirectoryForExePathA';
  16447. function NeedCurrentDirectoryForExePathW; external kernel32 name 'NeedCurrentDirectoryForExePathW';
  16448. function NeedCurrentDirectoryForExePath; external kernel32 name 'NeedCurrentDirectoryForExePath' + AWSuffix;
  16449. function SetProcessShutdownParameters; external kernel32 name 'SetProcessShutdownParameters';
  16450. function GetProcessShutdownParameters; external kernel32 name 'GetProcessShutdownParameters';
  16451. function GetProcessVersion; external kernel32 name 'GetProcessVersion';
  16452. procedure FatalAppExitA; external kernel32 name 'FatalAppExitA';
  16453. procedure FatalAppExitW; external kernel32 name 'FatalAppExitW';
  16454. procedure FatalAppExit; external kernel32 name 'FatalAppExit' + AWSuffix;
  16455. procedure GetStartupInfoA; external kernel32 name 'GetStartupInfoA';
  16456. procedure GetStartupInfoW; external kernel32 name 'GetStartupInfoW';
  16457. procedure GetStartupInfo; external kernel32 name 'GetStartupInfo' + AWSuffix;
  16458. function GetCommandLineA; external kernel32 name 'GetCommandLineA';
  16459. function GetCommandLineW; external kernel32 name 'GetCommandLineW';
  16460. function GetCommandLine; external kernel32 name 'GetCommandLine' + AWSuffix;
  16461. function GetEnvironmentVariableA; external kernel32 name 'GetEnvironmentVariableA';
  16462. function GetEnvironmentVariableW; external kernel32 name 'GetEnvironmentVariableW';
  16463. function GetEnvironmentVariable; external kernel32 name 'GetEnvironmentVariable' + AWSuffix;
  16464. function SetEnvironmentVariableA; external kernel32 name 'SetEnvironmentVariableA';
  16465. function SetEnvironmentVariableW; external kernel32 name 'SetEnvironmentVariableW';
  16466. function SetEnvironmentVariable; external kernel32 name 'SetEnvironmentVariable' + AWSuffix;
  16467. function ExpandEnvironmentStringsA; external kernel32 name 'ExpandEnvironmentStringsA';
  16468. function ExpandEnvironmentStringsW; external kernel32 name 'ExpandEnvironmentStringsW';
  16469. function ExpandEnvironmentStrings; external kernel32 name 'ExpandEnvironmentStrings' + AWSuffix;
  16470. function GetFirmwareEnvironmentVariableA; external kernel32 name 'GetFirmwareEnvironmentVariableA';
  16471. function GetFirmwareEnvironmentVariableW; external kernel32 name 'GetFirmwareEnvironmentVariableW';
  16472. function GetFirmwareEnvironmentVariable; external kernel32 name 'GetFirmwareEnvironmentVariable' + AWSuffix;
  16473. function SetFirmwareEnvironmentVariableA; external kernel32 name 'SetFirmwareEnvironmentVariableA';
  16474. function SetFirmwareEnvironmentVariableW; external kernel32 name 'SetFirmwareEnvironmentVariableW';
  16475. function SetFirmwareEnvironmentVariable; external kernel32 name 'SetFirmwareEnvironmentVariable' + AWSuffix;
  16476. procedure OutputDebugStringA; external kernel32 name 'OutputDebugStringA';
  16477. procedure OutputDebugStringW; external kernel32 name 'OutputDebugStringW';
  16478. procedure OutputDebugString; external kernel32 name 'OutputDebugString' + AWSuffix;
  16479. function FindResourceA; external kernel32 name 'FindResourceA';
  16480. function FindResourceW; external kernel32 name 'FindResourceW';
  16481. function FindResource; external kernel32 name 'FindResource' + AWSuffix;
  16482. function FindResourceExA; external kernel32 name 'FindResourceExA';
  16483. function FindResourceExW; external kernel32 name 'FindResourceExW';
  16484. function FindResourceEx; external kernel32 name 'FindResourceEx' + AWSuffix;
  16485. function EnumResourceTypesA; external kernel32 name 'EnumResourceTypesA';
  16486. function EnumResourceTypesW; external kernel32 name 'EnumResourceTypesW';
  16487. function EnumResourceTypes; external kernel32 name 'EnumResourceTypes' + AWSuffix;
  16488. function EnumResourceNamesA; external kernel32 name 'EnumResourceNamesA';
  16489. function EnumResourceNamesW; external kernel32 name 'EnumResourceNamesW';
  16490. function EnumResourceNames; external kernel32 name 'EnumResourceNames' + AWSuffix;
  16491. function EnumResourceLanguagesA; external kernel32 name 'EnumResourceLanguagesA';
  16492. function EnumResourceLanguagesW; external kernel32 name 'EnumResourceLanguagesW';
  16493. function EnumResourceLanguages; external kernel32 name 'EnumResourceLanguages' + AWSuffix;
  16494. function BeginUpdateResourceA; external kernel32 name 'BeginUpdateResourceA';
  16495. function BeginUpdateResourceW; external kernel32 name 'BeginUpdateResourceW';
  16496. function BeginUpdateResource; external kernel32 name 'BeginUpdateResource' + AWSuffix;
  16497. function UpdateResourceA; external kernel32 name 'UpdateResourceA';
  16498. function UpdateResourceW; external kernel32 name 'UpdateResourceW';
  16499. function UpdateResource; external kernel32 name 'UpdateResource' + AWSuffix;
  16500. function EndUpdateResourceA; external kernel32 name 'EndUpdateResourceA';
  16501. function EndUpdateResourceW; external kernel32 name 'EndUpdateResourceW';
  16502. function EndUpdateResource; external kernel32 name 'EndUpdateResource' + AWSuffix;
  16503. function GlobalAddAtomA; external kernel32 name 'GlobalAddAtomA';
  16504. function GlobalAddAtomW; external kernel32 name 'GlobalAddAtomW';
  16505. function GlobalAddAtom; external kernel32 name 'GlobalAddAtom' + AWSuffix;
  16506. function GlobalFindAtomA; external kernel32 name 'GlobalFindAtomA';
  16507. function GlobalFindAtomW; external kernel32 name 'GlobalFindAtomW';
  16508. function GlobalFindAtom; external kernel32 name 'GlobalFindAtom' + AWSuffix;
  16509. function GlobalGetAtomNameA; external kernel32 name 'GlobalGetAtomNameA';
  16510. function GlobalGetAtomNameW; external kernel32 name 'GlobalGetAtomNameW';
  16511. function GlobalGetAtomName; external kernel32 name 'GlobalGetAtomName' + AWSuffix;
  16512. function AddAtomA; external kernel32 name 'AddAtomA';
  16513. function AddAtomW; external kernel32 name 'AddAtomW';
  16514. function AddAtom; external kernel32 name 'AddAtom' + AWSuffix;
  16515. function FindAtomA; external kernel32 name 'FindAtomA';
  16516. function FindAtomW; external kernel32 name 'FindAtomW';
  16517. function FindAtom; external kernel32 name 'FindAtom' + AWSuffix;
  16518. function GetAtomNameA; external kernel32 name 'GetAtomNameA';
  16519. function GetAtomNameW; external kernel32 name 'GetAtomNameW';
  16520. function GetAtomName; external kernel32 name 'GetAtomName' + AWSuffix;
  16521. function GetProfileIntA; external kernel32 name 'GetProfileIntA';
  16522. function GetProfileIntW; external kernel32 name 'GetProfileIntW';
  16523. function GetProfileInt; external kernel32 name 'GetProfileInt' + AWSuffix;
  16524. function GetProfileStringA; external kernel32 name 'GetProfileStringA';
  16525. function GetProfileStringW; external kernel32 name 'GetProfileStringW';
  16526. function GetProfileString; external kernel32 name 'GetProfileString' + AWSuffix;
  16527. function WriteProfileStringA; external kernel32 name 'WriteProfileStringA';
  16528. function WriteProfileStringW; external kernel32 name 'WriteProfileStringW';
  16529. function WriteProfileString; external kernel32 name 'WriteProfileString' + AWSuffix;
  16530. function GetProfileSectionA; external kernel32 name 'GetProfileSectionA';
  16531. function GetProfileSectionW; external kernel32 name 'GetProfileSectionW';
  16532. function GetProfileSection; external kernel32 name 'GetProfileSection' + AWSuffix;
  16533. function WriteProfileSectionA; external kernel32 name 'WriteProfileSectionA';
  16534. function WriteProfileSectionW; external kernel32 name 'WriteProfileSectionW';
  16535. function WriteProfileSection; external kernel32 name 'WriteProfileSection' + AWSuffix;
  16536. function GetPrivateProfileIntA; external kernel32 name 'GetPrivateProfileIntA';
  16537. function GetPrivateProfileIntW; external kernel32 name 'GetPrivateProfileIntW';
  16538. function GetPrivateProfileInt; external kernel32 name 'GetPrivateProfileInt' + AWSuffix;
  16539. function GetPrivateProfileStringA; external kernel32 name 'GetPrivateProfileStringA';
  16540. function GetPrivateProfileStringW; external kernel32 name 'GetPrivateProfileStringW';
  16541. function GetPrivateProfileString; external kernel32 name 'GetPrivateProfileString' + AWSuffix;
  16542. function WritePrivateProfileStringA; external kernel32 name 'WritePrivateProfileStringA';
  16543. function WritePrivateProfileStringW; external kernel32 name 'WritePrivateProfileStringW';
  16544. function WritePrivateProfileString; external kernel32 name 'WritePrivateProfileString' + AWSuffix;
  16545. function GetPrivateProfileSectionA; external kernel32 name 'GetPrivateProfileSectionA';
  16546. function GetPrivateProfileSectionW; external kernel32 name 'GetPrivateProfileSectionW';
  16547. function GetPrivateProfileSection; external kernel32 name 'GetPrivateProfileSection' + AWSuffix;
  16548. function WritePrivateProfileSectionA; external kernel32 name 'WritePrivateProfileSectionA';
  16549. function WritePrivateProfileSectionW; external kernel32 name 'WritePrivateProfileSectionW';
  16550. function WritePrivateProfileSection; external kernel32 name 'WritePrivateProfileSection' + AWSuffix;
  16551. function GetPrivateProfileSectionNamesA; external kernel32 name 'GetPrivateProfileSectionNamesA';
  16552. function GetPrivateProfileSectionNamesW; external kernel32 name 'GetPrivateProfileSectionNamesW';
  16553. function GetPrivateProfileSectionNames; external kernel32 name 'GetPrivateProfileSectionNames' + AWSuffix;
  16554. function GetPrivateProfileStructA; external kernel32 name 'GetPrivateProfileStructA';
  16555. function GetPrivateProfileStructW; external kernel32 name 'GetPrivateProfileStructW';
  16556. function GetPrivateProfileStruct; external kernel32 name 'GetPrivateProfileStruct' + AWSuffix;
  16557. function WritePrivateProfileStructA; external kernel32 name 'WritePrivateProfileStructA';
  16558. function WritePrivateProfileStructW; external kernel32 name 'WritePrivateProfileStructW';
  16559. function WritePrivateProfileStruct; external kernel32 name 'WritePrivateProfileStruct' + AWSuffix;
  16560. function GetDriveTypeA; external kernel32 name 'GetDriveTypeA';
  16561. function GetDriveTypeW; external kernel32 name 'GetDriveTypeW';
  16562. function GetDriveType; external kernel32 name 'GetDriveType' + AWSuffix;
  16563. function GetSystemDirectoryA; external kernel32 name 'GetSystemDirectoryA';
  16564. function GetSystemDirectoryW; external kernel32 name 'GetSystemDirectoryW';
  16565. function GetSystemDirectory; external kernel32 name 'GetSystemDirectory' + AWSuffix;
  16566. function GetTempPathA; external kernel32 name 'GetTempPathA';
  16567. function GetTempPathW; external kernel32 name 'GetTempPathW';
  16568. function GetTempPath; external kernel32 name 'GetTempPath' + AWSuffix;
  16569. function GetTempFileNameA; external kernel32 name 'GetTempFileNameA';
  16570. function GetTempFileNameW; external kernel32 name 'GetTempFileNameW';
  16571. function GetTempFileName; external kernel32 name 'GetTempFileName' + AWSuffix;
  16572. function GetWindowsDirectoryA; external kernel32 name 'GetWindowsDirectoryA';
  16573. function GetWindowsDirectoryW; external kernel32 name 'GetWindowsDirectoryW';
  16574. function GetWindowsDirectory; external kernel32 name 'GetWindowsDirectory' + AWSuffix;
  16575. function GetSystemWindowsDirectoryA; external kernel32 name 'GetSystemWindowsDirectoryA';
  16576. function GetSystemWindowsDirectoryW; external kernel32 name 'GetSystemWindowsDirectoryW';
  16577. function GetSystemWindowsDirectory; external kernel32 name 'GetSystemWindowsDirectory' + AWSuffix;
  16578. function GetSystemWow64DirectoryA; external kernel32 name 'GetSystemWow64DirectoryA';
  16579. function GetSystemWow64DirectoryW; external kernel32 name 'GetSystemWow64DirectoryW';
  16580. function GetSystemWow64Directory; external kernel32 name 'GetSystemWow64Directory' + AWSuffix;
  16581. function Wow64EnableWow64FsRedirection; external kernel32 name 'Wow64EnableWow64FsRedirection';
  16582. function SetCurrentDirectoryA; external kernel32 name 'SetCurrentDirectoryA';
  16583. function SetCurrentDirectoryW; external kernel32 name 'SetCurrentDirectoryW';
  16584. function SetCurrentDirectory; external kernel32 name 'SetCurrentDirectory' + AWSuffix;
  16585. function GetCurrentDirectoryA; external kernel32 name 'GetCurrentDirectoryA';
  16586. function GetCurrentDirectoryW; external kernel32 name 'GetCurrentDirectoryW';
  16587. function GetCurrentDirectory; external kernel32 name 'GetCurrentDirectory' + AWSuffix;
  16588. function SetDllDirectoryA; external kernel32 name 'SetDllDirectoryA';
  16589. function SetDllDirectoryW; external kernel32 name 'SetDllDirectoryW';
  16590. function SetDllDirectory; external kernel32 name 'SetDllDirectory' + AWSuffix;
  16591. function GetDllDirectoryA; external kernel32 name 'GetDllDirectoryA';
  16592. function GetDllDirectoryW; external kernel32 name 'GetDllDirectoryW';
  16593. function GetDllDirectory; external kernel32 name 'GetDllDirectory' + AWSuffix;
  16594. function GetDiskFreeSpaceA; external kernel32 name 'GetDiskFreeSpaceA';
  16595. function GetDiskFreeSpaceW; external kernel32 name 'GetDiskFreeSpaceW';
  16596. function GetDiskFreeSpace; external kernel32 name 'GetDiskFreeSpace' + AWSuffix;
  16597. function GetDiskFreeSpaceExA; external kernel32 name 'GetDiskFreeSpaceExA';
  16598. function GetDiskFreeSpaceExW; external kernel32 name 'GetDiskFreeSpaceExW';
  16599. function GetDiskFreeSpaceEx; external kernel32 name 'GetDiskFreeSpaceEx' + AWSuffix;
  16600. function CreateDirectoryA; external kernel32 name 'CreateDirectoryA';
  16601. function CreateDirectoryW; external kernel32 name 'CreateDirectoryW';
  16602. function CreateDirectory; external kernel32 name 'CreateDirectory' + AWSuffix;
  16603. function CreateDirectoryExA; external kernel32 name 'CreateDirectoryExA';
  16604. function CreateDirectoryExW; external kernel32 name 'CreateDirectoryExW';
  16605. function CreateDirectoryEx; external kernel32 name 'CreateDirectoryEx' + AWSuffix;
  16606. function RemoveDirectoryA; external kernel32 name 'RemoveDirectoryA';
  16607. function RemoveDirectoryW; external kernel32 name 'RemoveDirectoryW';
  16608. function RemoveDirectory; external kernel32 name 'RemoveDirectory' + AWSuffix;
  16609. function GetFullPathNameA; external kernel32 name 'GetFullPathNameA';
  16610. function GetFullPathNameW; external kernel32 name 'GetFullPathNameW';
  16611. function GetFullPathName; external kernel32 name 'GetFullPathName' + AWSuffix;
  16612. function DefineDosDeviceA; external kernel32 name 'DefineDosDeviceA';
  16613. function DefineDosDeviceW; external kernel32 name 'DefineDosDeviceW';
  16614. function DefineDosDevice; external kernel32 name 'DefineDosDevice' + AWSuffix;
  16615. function QueryDosDeviceA; external kernel32 name 'QueryDosDeviceA';
  16616. function QueryDosDeviceW; external kernel32 name 'QueryDosDeviceW';
  16617. function QueryDosDevice; external kernel32 name 'QueryDosDevice' + AWSuffix;
  16618. function CreateFileA; external kernel32 name 'CreateFileA';
  16619. function CreateFileW; external kernel32 name 'CreateFileW';
  16620. function CreateFile; external kernel32 name 'CreateFile' + AWSuffix;
  16621. function ReOpenFile; external kernel32 name 'ReOpenFile';
  16622. function SetFileAttributesA; external kernel32 name 'SetFileAttributesA';
  16623. function SetFileAttributesW; external kernel32 name 'SetFileAttributesW';
  16624. function SetFileAttributes; external kernel32 name 'SetFileAttributes' + AWSuffix;
  16625. function GetFileAttributesA; external kernel32 name 'GetFileAttributesA';
  16626. function GetFileAttributesW; external kernel32 name 'GetFileAttributesW';
  16627. function GetFileAttributes; external kernel32 name 'GetFileAttributes' + AWSuffix;
  16628. function GetFileAttributesExA; external kernel32 name 'GetFileAttributesExA';
  16629. function GetFileAttributesExW; external kernel32 name 'GetFileAttributesExW';
  16630. function GetFileAttributesEx; external kernel32 name 'GetFileAttributesEx' + AWSuffix;
  16631. function GetCompressedFileSizeA; external kernel32 name 'GetCompressedFileSizeA';
  16632. function GetCompressedFileSizeW; external kernel32 name 'GetCompressedFileSizeW';
  16633. function GetCompressedFileSize; external kernel32 name 'GetCompressedFileSize' + AWSuffix;
  16634. function DeleteFileA; external kernel32 name 'DeleteFileA';
  16635. function DeleteFileW; external kernel32 name 'DeleteFileW';
  16636. function DeleteFile; external kernel32 name 'DeleteFile' + AWSuffix;
  16637. function FindFirstFileExA; external kernel32 name 'FindFirstFileExA';
  16638. function FindFirstFileExW; external kernel32 name 'FindFirstFileExW';
  16639. function FindFirstFileEx; external kernel32 name 'FindFirstFileEx' + AWSuffix;
  16640. function FindFirstFileA; external kernel32 name 'FindFirstFileA';
  16641. function FindFirstFileW; external kernel32 name 'FindFirstFileW';
  16642. function FindFirstFile; external kernel32 name 'FindFirstFile' + AWSuffix;
  16643. function FindNextFileA; external kernel32 name 'FindNextFileA';
  16644. function FindNextFileW; external kernel32 name 'FindNextFileW';
  16645. function FindNextFile; external kernel32 name 'FindNextFile' + AWSuffix;
  16646. function SearchPathA; external kernel32 name 'SearchPathA';
  16647. function SearchPathW; external kernel32 name 'SearchPathW';
  16648. function SearchPath; external kernel32 name 'SearchPath' + AWSuffix;
  16649. function CopyFileA; external kernel32 name 'CopyFileA';
  16650. function CopyFileW; external kernel32 name 'CopyFileW';
  16651. function CopyFile; external kernel32 name 'CopyFile' + AWSuffix;
  16652. function CopyFileExA; external kernel32 name 'CopyFileExA';
  16653. function CopyFileExW; external kernel32 name 'CopyFileExW';
  16654. function CopyFileEx; external kernel32 name 'CopyFileEx' + AWSuffix;
  16655. function MoveFileA; external kernel32 name 'MoveFileA';
  16656. function MoveFileW; external kernel32 name 'MoveFileW';
  16657. function MoveFile; external kernel32 name 'MoveFile' + AWSuffix;
  16658. function MoveFileExA; external kernel32 name 'MoveFileExA';
  16659. function MoveFileExW; external kernel32 name 'MoveFileExW';
  16660. function MoveFileEx; external kernel32 name 'MoveFileEx' + AWSuffix;
  16661. function MoveFileWithProgressA; external kernel32 name 'MoveFileWithProgressA';
  16662. function MoveFileWithProgressW; external kernel32 name 'MoveFileWithProgressW';
  16663. function MoveFileWithProgress; external kernel32 name 'MoveFileWithProgress' + AWSuffix;
  16664. function ReplaceFileA; external kernel32 name 'ReplaceFileA';
  16665. function ReplaceFileW; external kernel32 name 'ReplaceFileW';
  16666. function ReplaceFile; external kernel32 name 'ReplaceFile' + AWSuffix;
  16667. function CreateHardLinkA; external kernel32 name 'CreateHardLinkA';
  16668. function CreateHardLinkW; external kernel32 name 'CreateHardLinkW';
  16669. function CreateHardLink; external kernel32 name 'CreateHardLink' + AWSuffix;
  16670. function FindFirstStreamW; external kernel32 name 'FindFirstStreamW';
  16671. function FindNextStreamW; external kernel32 name 'FindNextStreamW';
  16672. function CreateNamedPipeA; external kernel32 name 'CreateNamedPipeA';
  16673. function CreateNamedPipeW; external kernel32 name 'CreateNamedPipeW';
  16674. function CreateNamedPipe; external kernel32 name 'CreateNamedPipe' + AWSuffix;
  16675. function GetNamedPipeHandleStateA; external kernel32 name 'GetNamedPipeHandleStateA';
  16676. function GetNamedPipeHandleStateW; external kernel32 name 'GetNamedPipeHandleStateW';
  16677. function GetNamedPipeHandleState; external kernel32 name 'GetNamedPipeHandleState' + AWSuffix;
  16678. function CallNamedPipeA; external kernel32 name 'CallNamedPipeA';
  16679. function CallNamedPipeW; external kernel32 name 'CallNamedPipeW';
  16680. function CallNamedPipe; external kernel32 name 'CallNamedPipe' + AWSuffix;
  16681. function WaitNamedPipeA; external kernel32 name 'WaitNamedPipeA';
  16682. function WaitNamedPipeW; external kernel32 name 'WaitNamedPipeW';
  16683. function WaitNamedPipe; external kernel32 name 'WaitNamedPipe' + AWSuffix;
  16684. function SetVolumeLabelA; external kernel32 name 'SetVolumeLabelA';
  16685. function SetVolumeLabelW; external kernel32 name 'SetVolumeLabelW';
  16686. function SetVolumeLabel; external kernel32 name 'SetVolumeLabel' + AWSuffix;
  16687. procedure SetFileApisToOEM; external kernel32 name 'SetFileApisToOEM';
  16688. procedure SetFileApisToANSI; external kernel32 name 'SetFileApisToANSI';
  16689. function AreFileApisANSI; external kernel32 name 'AreFileApisANSI';
  16690. function GetVolumeInformationA; external kernel32 name 'GetVolumeInformationA';
  16691. function GetVolumeInformationW; external kernel32 name 'GetVolumeInformationW';
  16692. function GetVolumeInformation; external kernel32 name 'GetVolumeInformation' + AWSuffix;
  16693. function CancelIo; external kernel32 name 'CancelIo';
  16694. function ClearEventLogA; external advapi32 name 'ClearEventLogA';
  16695. function ClearEventLogW; external advapi32 name 'ClearEventLogW';
  16696. function ClearEventLog; external advapi32 name 'ClearEventLog' + AWSuffix;
  16697. function BackupEventLogA; external advapi32 name 'BackupEventLogA';
  16698. function BackupEventLogW; external advapi32 name 'BackupEventLogW';
  16699. function BackupEventLog; external advapi32 name 'BackupEventLog' + AWSuffix;
  16700. function CloseEventLog; external advapi32 name 'CloseEventLog';
  16701. function DeregisterEventSource; external advapi32 name 'DeregisterEventSource';
  16702. function NotifyChangeEventLog; external advapi32 name 'NotifyChangeEventLog';
  16703. function GetNumberOfEventLogRecords; external advapi32 name 'GetNumberOfEventLogRecords';
  16704. function GetOldestEventLogRecord; external advapi32 name 'GetOldestEventLogRecord';
  16705. function OpenEventLogA; external advapi32 name 'OpenEventLogA';
  16706. function OpenEventLogW; external advapi32 name 'OpenEventLogW';
  16707. function OpenEventLog; external advapi32 name 'OpenEventLog' + AWSuffix;
  16708. function RegisterEventSourceA; external advapi32 name 'RegisterEventSourceA';
  16709. function RegisterEventSourceW; external advapi32 name 'RegisterEventSourceW';
  16710. function RegisterEventSource; external advapi32 name 'RegisterEventSource' + AWSuffix;
  16711. function OpenBackupEventLogA; external advapi32 name 'OpenBackupEventLogA';
  16712. function OpenBackupEventLogW; external advapi32 name 'OpenBackupEventLogW';
  16713. function OpenBackupEventLog; external advapi32 name 'OpenBackupEventLog' + AWSuffix;
  16714. function ReadEventLogA; external advapi32 name 'ReadEventLogA';
  16715. function ReadEventLogW; external advapi32 name 'ReadEventLogW';
  16716. function ReadEventLog; external advapi32 name 'ReadEventLog' + AWSuffix;
  16717. function ReportEventA; external advapi32 name 'ReportEventA';
  16718. function ReportEventW; external advapi32 name 'ReportEventW';
  16719. function ReportEvent; external advapi32 name 'ReportEvent' + AWSuffix;
  16720. function GetEventLogInformation; external advapi32 name 'GetEventLogInformation';
  16721. function DuplicateToken; external advapi32 name 'DuplicateToken';
  16722. function GetKernelObjectSecurity; external advapi32 name 'GetKernelObjectSecurity';
  16723. function ImpersonateNamedPipeClient; external advapi32 name 'ImpersonateNamedPipeClient';
  16724. function ImpersonateSelf; external advapi32 name 'ImpersonateSelf';
  16725. function RevertToSelf; external advapi32 name 'RevertToSelf';
  16726. function SetThreadToken; external advapi32 name 'SetThreadToken';
  16727. function AccessCheck; external advapi32 name 'AccessCheck';
  16728. function AccessCheckByType; external advapi32 name 'AccessCheckByType';
  16729. function AccessCheckByTypeResultList; external advapi32 name 'AccessCheckByTypeResultList';
  16730. function OpenProcessToken; external advapi32 name 'OpenProcessToken';
  16731. function OpenThreadToken; external advapi32 name 'OpenThreadToken';
  16732. function GetTokenInformation; external advapi32 name 'GetTokenInformation';
  16733. function SetTokenInformation; external advapi32 name 'SetTokenInformation';
  16734. function AdjustTokenPrivileges; external advapi32 name 'AdjustTokenPrivileges';
  16735. function AdjustTokenGroups; external advapi32 name 'AdjustTokenGroups';
  16736. function PrivilegeCheck; external advapi32 name 'PrivilegeCheck';
  16737. function AccessCheckAndAuditAlarmA; external advapi32 name 'AccessCheckAndAuditAlarmA';
  16738. function AccessCheckAndAuditAlarmW; external advapi32 name 'AccessCheckAndAuditAlarmW';
  16739. function AccessCheckAndAuditAlarm; external advapi32 name 'AccessCheckAndAuditAlarm' + AWSuffix;
  16740. function AccessCheckByTypeAndAuditAlarmA; external advapi32 name 'AccessCheckByTypeAndAuditAlarmA';
  16741. function AccessCheckByTypeAndAuditAlarmW; external advapi32 name 'AccessCheckByTypeAndAuditAlarmW';
  16742. function AccessCheckByTypeAndAuditAlarm; external advapi32 name 'AccessCheckByTypeAndAuditAlarm' + AWSuffix;
  16743. function AccessCheckByTypeResultListAndAuditAlarmA; external advapi32 name 'AccessCheckByTypeResultListAndAuditAlarmA';
  16744. function AccessCheckByTypeResultListAndAuditAlarmW; external advapi32 name 'AccessCheckByTypeResultListAndAuditAlarmW';
  16745. function AccessCheckByTypeResultListAndAuditAlarm; external advapi32 name 'AccessCheckByTypeResultListAndAuditAlarm' + AWSuffix;
  16746. function AccessCheckByTypeResultListAndAuditAlarmByHandleA; external advapi32 name 'AccessCheckByTypeResultListAndAuditAlarmByHandleA';
  16747. function AccessCheckByTypeResultListAndAuditAlarmByHandleW; external advapi32 name 'AccessCheckByTypeResultListAndAuditAlarmByHandleW';
  16748. function AccessCheckByTypeResultListAndAuditAlarmByHandle; external advapi32 name 'AccessCheckByTypeResultListAndAuditAlarmByHandle' + AWSuffix;
  16749. function ObjectOpenAuditAlarmA; external advapi32 name 'ObjectOpenAuditAlarmA';
  16750. function ObjectOpenAuditAlarmW; external advapi32 name 'ObjectOpenAuditAlarmW';
  16751. function ObjectOpenAuditAlarm; external advapi32 name 'ObjectOpenAuditAlarm' + AWSuffix;
  16752. function ObjectPrivilegeAuditAlarmA; external advapi32 name 'ObjectPrivilegeAuditAlarmA';
  16753. function ObjectPrivilegeAuditAlarmW; external advapi32 name 'ObjectPrivilegeAuditAlarmW';
  16754. function ObjectPrivilegeAuditAlarm; external advapi32 name 'ObjectPrivilegeAuditAlarm' + AWSuffix;
  16755. function ObjectCloseAuditAlarmA; external advapi32 name 'ObjectCloseAuditAlarmA';
  16756. function ObjectCloseAuditAlarmW; external advapi32 name 'ObjectCloseAuditAlarmW';
  16757. function ObjectCloseAuditAlarm; external advapi32 name 'ObjectCloseAuditAlarm' + AWSuffix;
  16758. function ObjectDeleteAuditAlarmA; external advapi32 name 'ObjectDeleteAuditAlarmA';
  16759. function ObjectDeleteAuditAlarmW; external advapi32 name 'ObjectDeleteAuditAlarmW';
  16760. function ObjectDeleteAuditAlarm; external advapi32 name 'ObjectDeleteAuditAlarm' + AWSuffix;
  16761. function PrivilegedServiceAuditAlarmA; external advapi32 name 'PrivilegedServiceAuditAlarmA';
  16762. function PrivilegedServiceAuditAlarmW; external advapi32 name 'PrivilegedServiceAuditAlarmW';
  16763. function PrivilegedServiceAuditAlarm; external advapi32 name 'PrivilegedServiceAuditAlarm' + AWSuffix;
  16764. function IsWellKnownSid; external advapi32 name 'IsWellKnownSid';
  16765. function CreateWellKnownSid; external advapi32 name 'CreateWellKnownSid';
  16766. function EqualDomainSid; external advapi32 name 'EqualDomainSid';
  16767. function GetWindowsAccountDomainSid; external advapi32 name 'GetWindowsAccountDomainSid';
  16768. function IsValidSid; external advapi32 name 'IsValidSid';
  16769. function EqualSid; external advapi32 name 'EqualSid';
  16770. function EqualPrefixSid; external advapi32 name 'EqualPrefixSid';
  16771. function GetSidLengthRequired; external advapi32 name 'GetSidLengthRequired';
  16772. function AllocateAndInitializeSid; external advapi32 name 'AllocateAndInitializeSid';
  16773. function FreeSid; external advapi32 name 'FreeSid';
  16774. function InitializeSid; external advapi32 name 'InitializeSid';
  16775. function GetSidIdentifierAuthority; external advapi32 name 'GetSidIdentifierAuthority';
  16776. function GetSidSubAuthority; external advapi32 name 'GetSidSubAuthority';
  16777. function GetSidSubAuthorityCount; external advapi32 name 'GetSidSubAuthorityCount';
  16778. function GetLengthSid; external advapi32 name 'GetLengthSid';
  16779. function CopySid; external advapi32 name 'CopySid';
  16780. function AreAllAccessesGranted; external advapi32 name 'AreAllAccessesGranted';
  16781. function AreAnyAccessesGranted; external advapi32 name 'AreAnyAccessesGranted';
  16782. procedure MapGenericMask; external advapi32 name 'MapGenericMask';
  16783. function IsValidAcl; external advapi32 name 'IsValidAcl';
  16784. function InitializeAcl; external advapi32 name 'InitializeAcl';
  16785. function GetAclInformation; external advapi32 name 'GetAclInformation';
  16786. function SetAclInformation; external advapi32 name 'SetAclInformation';
  16787. function AddAce; external advapi32 name 'AddAce';
  16788. function DeleteAce; external advapi32 name 'DeleteAce';
  16789. function GetAce; external advapi32 name 'GetAce';
  16790. function AddAccessAllowedAce; external advapi32 name 'AddAccessAllowedAce';
  16791. function AddAccessAllowedAceEx; external advapi32 name 'AddAccessAllowedAceEx';
  16792. function AddAccessDeniedAce; external advapi32 name 'AddAccessDeniedAce';
  16793. function AddAccessDeniedAceEx; external advapi32 name 'AddAccessDeniedAceEx';
  16794. function AddAuditAccessAce; external advapi32 name 'AddAuditAccessAce';
  16795. function AddAuditAccessAceEx; external advapi32 name 'AddAuditAccessAceEx';
  16796. function AddAccessAllowedObjectAce; external advapi32 name 'AddAccessAllowedObjectAce';
  16797. function AddAccessDeniedObjectAce; external advapi32 name 'AddAccessDeniedObjectAce';
  16798. function AddAuditAccessObjectAce; external advapi32 name 'AddAuditAccessObjectAce';
  16799. function FindFirstFreeAce; external advapi32 name 'FindFirstFreeAce';
  16800. function InitializeSecurityDescriptor; external advapi32 name 'InitializeSecurityDescriptor';
  16801. function IsValidSecurityDescriptor; external advapi32 name 'IsValidSecurityDescriptor';
  16802. function GetSecurityDescriptorLength; external advapi32 name 'GetSecurityDescriptorLength';
  16803. function GetSecurityDescriptorControl; external advapi32 name 'GetSecurityDescriptorControl';
  16804. function SetSecurityDescriptorControl; external advapi32 name 'SetSecurityDescriptorControl';
  16805. function SetSecurityDescriptorDacl; external advapi32 name 'SetSecurityDescriptorDacl';
  16806. function GetSecurityDescriptorDacl; external advapi32 name 'GetSecurityDescriptorDacl';
  16807. function SetSecurityDescriptorSacl; external advapi32 name 'SetSecurityDescriptorSacl';
  16808. function GetSecurityDescriptorSacl; external advapi32 name 'GetSecurityDescriptorSacl';
  16809. function SetSecurityDescriptorOwner; external advapi32 name 'SetSecurityDescriptorOwner';
  16810. function GetSecurityDescriptorOwner; external advapi32 name 'GetSecurityDescriptorOwner';
  16811. function SetSecurityDescriptorGroup; external advapi32 name 'SetSecurityDescriptorGroup';
  16812. function GetSecurityDescriptorGroup; external advapi32 name 'GetSecurityDescriptorGroup';
  16813. function SetSecurityDescriptorRMControl; external advapi32 name 'SetSecurityDescriptorRMControl';
  16814. function GetSecurityDescriptorRMControl; external advapi32 name 'GetSecurityDescriptorRMControl';
  16815. function CreatePrivateObjectSecurity; external advapi32 name 'CreatePrivateObjectSecurity';
  16816. function ConvertToAutoInheritPrivateObjectSecurity; external advapi32 name 'ConvertToAutoInheritPrivateObjectSecurity';
  16817. function CreatePrivateObjectSecurityEx; external advapi32 name 'CreatePrivateObjectSecurityEx';
  16818. function SetPrivateObjectSecurity; external advapi32 name 'SetPrivateObjectSecurity';
  16819. function SetPrivateObjectSecurityEx; external advapi32 name 'SetPrivateObjectSecurityEx';
  16820. function GetPrivateObjectSecurity; external advapi32 name 'GetPrivateObjectSecurity';
  16821. function DestroyPrivateObjectSecurity; external advapi32 name 'DestroyPrivateObjectSecurity';
  16822. function MakeSelfRelativeSD; external advapi32 name 'MakeSelfRelativeSD';
  16823. function MakeAbsoluteSD; external advapi32 name 'MakeAbsoluteSD';
  16824. function MakeAbsoluteSD2; external advapi32 name 'MakeAbsoluteSD2';
  16825. function SetFileSecurityA; external advapi32 name 'SetFileSecurityA';
  16826. function SetFileSecurityW; external advapi32 name 'SetFileSecurityW';
  16827. function SetFileSecurity; external advapi32 name 'SetFileSecurity' + AWSuffix;
  16828. function GetFileSecurityA; external advapi32 name 'GetFileSecurityA';
  16829. function GetFileSecurityW; external advapi32 name 'GetFileSecurityW';
  16830. function GetFileSecurity; external advapi32 name 'GetFileSecurity' + AWSuffix;
  16831. function SetKernelObjectSecurity; external advapi32 name 'SetKernelObjectSecurity';
  16832. function FindFirstChangeNotificationA; external kernel32 name 'FindFirstChangeNotificationA';
  16833. function FindFirstChangeNotificationW; external kernel32 name 'FindFirstChangeNotificationW';
  16834. function FindFirstChangeNotification; external kernel32 name 'FindFirstChangeNotification' + AWSuffix;
  16835. function FindNextChangeNotification; external kernel32 name 'FindNextChangeNotification';
  16836. function FindCloseChangeNotification; external kernel32 name 'FindCloseChangeNotification';
  16837. function ReadDirectoryChangesW; external kernel32 name 'ReadDirectoryChangesW';
  16838. function VirtualLock; external kernel32 name 'VirtualLock';
  16839. function VirtualUnlock; external kernel32 name 'VirtualUnlock';
  16840. function MapViewOfFileEx; external kernel32 name 'MapViewOfFileEx';
  16841. function SetPriorityClass; external kernel32 name 'SetPriorityClass';
  16842. function GetPriorityClass; external kernel32 name 'GetPriorityClass';
  16843. function IsBadReadPtr; external kernel32 name 'IsBadReadPtr';
  16844. function IsBadWritePtr; external kernel32 name 'IsBadWritePtr';
  16845. function IsBadHugeReadPtr; external kernel32 name 'IsBadHugeReadPtr';
  16846. function IsBadHugeWritePtr; external kernel32 name 'IsBadHugeWritePtr';
  16847. function IsBadCodePtr; external kernel32 name 'IsBadCodePtr';
  16848. function IsBadStringPtrA; external kernel32 name 'IsBadStringPtrA';
  16849. function IsBadStringPtrW; external kernel32 name 'IsBadStringPtrW';
  16850. function IsBadStringPtr; external kernel32 name 'IsBadStringPtr' + AWSuffix;
  16851. function LookupAccountSidA; external advapi32 name 'LookupAccountSidA';
  16852. function LookupAccountSidW; external advapi32 name 'LookupAccountSidW';
  16853. function LookupAccountSid; external advapi32 name 'LookupAccountSid' + AWSuffix;
  16854. function LookupAccountNameA; external advapi32 name 'LookupAccountNameA';
  16855. function LookupAccountNameW; external advapi32 name 'LookupAccountNameW';
  16856. function LookupAccountName; external advapi32 name 'LookupAccountName' + AWSuffix;
  16857. function LookupPrivilegeValueA; external advapi32 name 'LookupPrivilegeValueA';
  16858. function LookupPrivilegeValueW; external advapi32 name 'LookupPrivilegeValueW';
  16859. function LookupPrivilegeValue; external advapi32 name 'LookupPrivilegeValue' + AWSuffix;
  16860. function LookupPrivilegeNameA; external advapi32 name 'LookupPrivilegeNameA';
  16861. function LookupPrivilegeNameW; external advapi32 name 'LookupPrivilegeNameW';
  16862. function LookupPrivilegeName; external advapi32 name 'LookupPrivilegeName' + AWSuffix;
  16863. function LookupPrivilegeDisplayNameA; external advapi32 name 'LookupPrivilegeDisplayNameA';
  16864. function LookupPrivilegeDisplayNameW; external advapi32 name 'LookupPrivilegeDisplayNameW';
  16865. function LookupPrivilegeDisplayName; external advapi32 name 'LookupPrivilegeDisplayName' + AWSuffix;
  16866. function AllocateLocallyUniqueId; external advapi32 name 'AllocateLocallyUniqueId';
  16867. function BuildCommDCBA; external kernel32 name 'BuildCommDCBA';
  16868. function BuildCommDCBW; external kernel32 name 'BuildCommDCBW';
  16869. function BuildCommDCB; external kernel32 name 'BuildCommDCB' + AWSuffix;
  16870. function BuildCommDCBAndTimeoutsA; external kernel32 name 'BuildCommDCBAndTimeoutsA';
  16871. function BuildCommDCBAndTimeoutsW; external kernel32 name 'BuildCommDCBAndTimeoutsW';
  16872. function BuildCommDCBAndTimeouts; external kernel32 name 'BuildCommDCBAndTimeouts' + AWSuffix;
  16873. function CommConfigDialogA; external kernel32 name 'CommConfigDialogA';
  16874. function CommConfigDialogW; external kernel32 name 'CommConfigDialogW';
  16875. function CommConfigDialog; external kernel32 name 'CommConfigDialog' + AWSuffix;
  16876. function GetDefaultCommConfigA; external kernel32 name 'GetDefaultCommConfigA';
  16877. function GetDefaultCommConfigW; external kernel32 name 'GetDefaultCommConfigW';
  16878. function GetDefaultCommConfig; external kernel32 name 'GetDefaultCommConfig' + AWSuffix;
  16879. function SetDefaultCommConfigA; external kernel32 name 'SetDefaultCommConfigA';
  16880. function SetDefaultCommConfigW; external kernel32 name 'SetDefaultCommConfigW';
  16881. function SetDefaultCommConfig; external kernel32 name 'SetDefaultCommConfig' + AWSuffix;
  16882. function GetComputerNameA; external kernel32 name 'GetComputerNameA';
  16883. function GetComputerNameW; external kernel32 name 'GetComputerNameW';
  16884. function GetComputerName; external kernel32 name 'GetComputerName' + AWSuffix;
  16885. function SetComputerNameA; external kernel32 name 'SetComputerNameA';
  16886. function SetComputerNameW; external kernel32 name 'SetComputerNameW';
  16887. function SetComputerName; external kernel32 name 'SetComputerName' + AWSuffix;
  16888. function GetComputerNameExA; external kernel32 name 'GetComputerNameExA';
  16889. function GetComputerNameExW; external kernel32 name 'GetComputerNameExW';
  16890. function GetComputerNameEx; external kernel32 name 'GetComputerNameEx' + AWSuffix;
  16891. function SetComputerNameExA; external kernel32 name 'SetComputerNameExA';
  16892. function SetComputerNameExW; external kernel32 name 'SetComputerNameExW';
  16893. function SetComputerNameEx; external kernel32 name 'SetComputerNameEx' + AWSuffix;
  16894. function DnsHostnameToComputerNameA; external kernel32 name 'DnsHostnameToComputerNameA';
  16895. function DnsHostnameToComputerNameW; external kernel32 name 'DnsHostnameToComputerNameW';
  16896. function DnsHostnameToComputerName; external kernel32 name 'DnsHostnameToComputerName' + AWSuffix;
  16897. function GetUserNameA; external advapi32 name 'GetUserNameA';
  16898. function GetUserNameW; external advapi32 name 'GetUserNameW';
  16899. function GetUserName; external advapi32 name 'GetUserName' + AWSuffix;
  16900. function LogonUserA; external advapi32 name 'LogonUserA';
  16901. function LogonUserW; external advapi32 name 'LogonUserW';
  16902. function LogonUser; external advapi32 name 'LogonUser' + AWSuffix;
  16903. function LogonUserExA; external advapi32 name 'LogonUserExA';
  16904. function LogonUserExW; external advapi32 name 'LogonUserExW';
  16905. function LogonUserEx; external advapi32 name 'LogonUserEx' + AWSuffix;
  16906. function ImpersonateLoggedOnUser; external advapi32 name 'ImpersonateLoggedOnUser';
  16907. function CreateProcessAsUserA; external advapi32 name 'CreateProcessAsUserA';
  16908. function CreateProcessAsUserW; external advapi32 name 'CreateProcessAsUserW';
  16909. function CreateProcessAsUser; external advapi32 name 'CreateProcessAsUser' + AWSuffix;
  16910. function CreateProcessWithLogonW; external advapi32 name 'CreateProcessWithLogonW';
  16911. function CreateProcessWithTokenW; external advapi32 name 'CreateProcessWithTokenW';
  16912. function ImpersonateAnonymousToken; external advapi32 name 'ImpersonateAnonymousToken';
  16913. function DuplicateTokenEx; external advapi32 name 'DuplicateTokenEx';
  16914. function CreateRestrictedToken; external advapi32 name 'CreateRestrictedToken';
  16915. function IsTokenRestricted; external advapi32 name 'IsTokenRestricted';
  16916. function CheckTokenMembership; external advapi32 name 'CheckTokenMembership';
  16917. function IsTokenUntrusted; external advapi32 name 'IsTokenUntrusted';
  16918. function RegisterWaitForSingleObject; external kernel32 name 'RegisterWaitForSingleObject';
  16919. function RegisterWaitForSingleObjectEx; external kernel32 name 'RegisterWaitForSingleObjectEx';
  16920. function UnregisterWait; external kernel32 name 'UnregisterWait';
  16921. function UnregisterWaitEx; external kernel32 name 'UnregisterWaitEx';
  16922. function QueueUserWorkItem; external kernel32 name 'QueueUserWorkItem';
  16923. function BindIoCompletionCallback; external kernel32 name 'BindIoCompletionCallback';
  16924. function CreateTimerQueue; external kernel32 name 'CreateTimerQueue';
  16925. function CreateTimerQueueTimer; external kernel32 name 'CreateTimerQueueTimer';
  16926. function ChangeTimerQueueTimer; external kernel32 name 'ChangeTimerQueueTimer';
  16927. function DeleteTimerQueueTimer; external kernel32 name 'DeleteTimerQueueTimer';
  16928. function DeleteTimerQueueEx; external kernel32 name 'DeleteTimerQueueEx';
  16929. function SetTimerQueueTimer; external kernel32 name 'SetTimerQueueTimer';
  16930. function CancelTimerQueueTimer; external kernel32 name 'CancelTimerQueueTimer';
  16931. function DeleteTimerQueue; external kernel32 name 'DeleteTimerQueue';
  16932. function GetCurrentHwProfileA; external advapi32 name 'GetCurrentHwProfileA';
  16933. function GetCurrentHwProfileW; external advapi32 name 'GetCurrentHwProfileW';
  16934. function GetCurrentHwProfile; external advapi32 name 'GetCurrentHwProfile' + AWSuffix;
  16935. function QueryPerformanceCounter; external kernel32 name 'QueryPerformanceCounter';
  16936. function QueryPerformanceFrequency; external kernel32 name 'QueryPerformanceFrequency';
  16937. function GetVersionExA; external kernel32 name 'GetVersionExA';
  16938. function GetVersionExW; external kernel32 name 'GetVersionExW';
  16939. function GetVersionEx; external kernel32 name 'GetVersionEx' + AWSuffix;
  16940. function VerifyVersionInfoA; external kernel32 name 'VerifyVersionInfoA';
  16941. function VerifyVersionInfoW; external kernel32 name 'VerifyVersionInfoW';
  16942. function VerifyVersionInfo; external kernel32 name 'VerifyVersionInfo' + AWSuffix;
  16943. function GetSystemPowerStatus; external kernel32 name 'GetSystemPowerStatus';
  16944. function SetSystemPowerState; external kernel32 name 'SetSystemPowerState';
  16945. function AllocateUserPhysicalPages; external kernel32 name 'AllocateUserPhysicalPages';
  16946. function FreeUserPhysicalPages; external kernel32 name 'FreeUserPhysicalPages';
  16947. function MapUserPhysicalPages; external kernel32 name 'MapUserPhysicalPages';
  16948. function MapUserPhysicalPagesScatter; external kernel32 name 'MapUserPhysicalPagesScatter';
  16949. function CreateJobObjectA; external kernel32 name 'CreateJobObjectA';
  16950. function CreateJobObjectW; external kernel32 name 'CreateJobObjectW';
  16951. function CreateJobObject; external kernel32 name 'CreateJobObject' + AWSuffix;
  16952. function OpenJobObjectA; external kernel32 name 'OpenJobObjectA';
  16953. function OpenJobObjectW; external kernel32 name 'OpenJobObjectW';
  16954. function OpenJobObject; external kernel32 name 'OpenJobObject' + AWSuffix;
  16955. function AssignProcessToJobObject; external kernel32 name 'AssignProcessToJobObject';
  16956. function TerminateJobObject; external kernel32 name 'TerminateJobObject';
  16957. function QueryInformationJobObject; external kernel32 name 'QueryInformationJobObject';
  16958. function SetInformationJobObject; external kernel32 name 'SetInformationJobObject';
  16959. function IsProcessInJob; external kernel32 name 'IsProcessInJob';
  16960. function CreateJobSet; external kernel32 name 'CreateJobSet';
  16961. function AddVectoredExceptionHandler; external kernel32 name 'AddVectoredExceptionHandler';
  16962. function RemoveVectoredExceptionHandler; external kernel32 name 'RemoveVectoredExceptionHandler';
  16963. function FindFirstVolumeA; external kernel32 name 'FindFirstVolumeA';
  16964. function FindFirstVolumeW; external kernel32 name 'FindFirstVolumeW';
  16965. function FindFirstVolume; external kernel32 name 'FindFirstVolume' + AWSuffix;
  16966. function FindNextVolumeA; external kernel32 name 'FindNextVolumeA';
  16967. function FindNextVolumeW; external kernel32 name 'FindNextVolumeW';
  16968. function FindNextVolume; external kernel32 name 'FindNextVolume' + AWSuffix;
  16969. function FindVolumeClose; external kernel32 name 'FindVolumeClose';
  16970. function FindFirstVolumeMountPointA; external kernel32 name 'FindFirstVolumeMountPointA';
  16971. function FindFirstVolumeMountPointW; external kernel32 name 'FindFirstVolumeMountPointW';
  16972. function FindFirstVolumeMountPoint; external kernel32 name 'FindFirstVolumeMountPoint' + AWSuffix;
  16973. function FindNextVolumeMountPointA; external kernel32 name 'FindNextVolumeMountPointA';
  16974. function FindNextVolumeMountPointW; external kernel32 name 'FindNextVolumeMountPointW';
  16975. function FindNextVolumeMountPoint; external kernel32 name 'FindNextVolumeMountPoint' + AWSuffix;
  16976. function FindVolumeMountPointClose; external kernel32 name 'FindVolumeMountPointClose';
  16977. function SetVolumeMountPointA; external kernel32 name 'SetVolumeMountPointA';
  16978. function SetVolumeMountPointW; external kernel32 name 'SetVolumeMountPointW';
  16979. function SetVolumeMountPoint; external kernel32 name 'SetVolumeMountPoint' + AWSuffix;
  16980. function DeleteVolumeMountPointA; external kernel32 name 'DeleteVolumeMountPointA';
  16981. function DeleteVolumeMountPointW; external kernel32 name 'DeleteVolumeMountPointW';
  16982. function DeleteVolumeMountPoint; external kernel32 name 'DeleteVolumeMountPoint' + AWSuffix;
  16983. function GetVolumeNameForVolumeMountPointA; external kernel32 name 'GetVolumeNameForVolumeMountPointA';
  16984. function GetVolumeNameForVolumeMountPointW; external kernel32 name 'GetVolumeNameForVolumeMountPointW';
  16985. function GetVolumeNameForVolumeMountPoint; external kernel32 name 'GetVolumeNameForVolumeMountPoint' + AWSuffix;
  16986. function GetVolumePathNameA; external kernel32 name 'GetVolumePathNameA';
  16987. function GetVolumePathNameW; external kernel32 name 'GetVolumePathNameW';
  16988. function GetVolumePathName; external kernel32 name 'GetVolumePathName' + AWSuffix;
  16989. function GetVolumePathNamesForVolumeNameA; external kernel32 name 'GetVolumePathNamesForVolumeNameA';
  16990. function GetVolumePathNamesForVolumeNameW; external kernel32 name 'GetVolumePathNamesForVolumeNameW';
  16991. function GetVolumePathNamesForVolumeName; external kernel32 name 'GetVolumePathNamesForVolumeName' + AWSuffix;
  16992. function CreateActCtxA; external kernel32 name 'CreateActCtxA';
  16993. function CreateActCtxW; external kernel32 name 'CreateActCtxW';
  16994. function CreateActCtx; external kernel32 name 'CreateActCtx' + AWSuffix;
  16995. procedure AddRefActCtx; external kernel32 name 'AddRefActCtx';
  16996. procedure ReleaseActCtx; external kernel32 name 'ReleaseActCtx';
  16997. function ZombifyActCtx; external kernel32 name 'ZombifyActCtx';
  16998. function ActivateActCtx; external kernel32 name 'ActivateActCtx';
  16999. function DeactivateActCtx; external kernel32 name 'DeactivateActCtx';
  17000. function GetCurrentActCtx; external kernel32 name 'GetCurrentActCtx';
  17001. function FindActCtxSectionStringA; external kernel32 name 'FindActCtxSectionStringA';
  17002. function FindActCtxSectionStringW; external kernel32 name 'FindActCtxSectionStringW';
  17003. function FindActCtxSectionString; external kernel32 name 'FindActCtxSectionString' + AWSuffix;
  17004. function FindActCtxSectionGuid; external kernel32 name 'FindActCtxSectionGuid';
  17005. function QueryActCtxW; external kernel32 name 'QueryActCtxW';
  17006. function ProcessIdToSessionId; external kernel32 name 'ProcessIdToSessionId';
  17007. function WTSGetActiveConsoleSessionId; external kernel32 name 'WTSGetActiveConsoleSessionId';
  17008. function IsWow64Process; external kernel32 name 'IsWow64Process';
  17009. function GetLogicalProcessorInformation; external kernel32 name 'GetLogicalProcessorInformation';
  17010. function GetNumaHighestNodeNumber; external kernel32 name 'GetNumaHighestNodeNumber';
  17011. function GetNumaProcessorNode; external kernel32 name 'GetNumaProcessorNode';
  17012. function GetNumaNodeProcessorMask; external kernel32 name 'GetNumaNodeProcessorMask';
  17013. function GetNumaAvailableMemoryNode; external kernel32 name 'GetNumaAvailableMemoryNode';
  17014. {$ENDIF DYNAMIC_LINK}
  17015. {$ENDIF JWA_IMPLEMENTATIONSECTION}
  17016. {$IFNDEF JWA_INCLUDEMODE}
  17017. end.
  17018. {$ENDIF !JWA_INCLUDEMODE}