12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305 |
- {******************************************************************************}
- { }
- { Windows Types API interface Unit for Object Pascal }
- { }
- { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
- { Corporation. All Rights Reserved. }
- { }
- { The original file is: winnt.h, released August 2001. The original Pascal }
- { code is: WinNT.pas, released December 2000. The initial developer of the }
- { Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
- { }
- { Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
- { Marcel van Brakel. All Rights Reserved. }
- { }
- { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
- { }
- { You may retrieve the latest version of this file at the Project JEDI }
- { APILIB home page, located at http://jedi-apilib.sourceforge.net }
- { }
- { The contents of this file are used with permission, subject to the Mozilla }
- { Public License Version 1.1 (the "License"); you may not use this file except }
- { in compliance with the License. You may obtain a copy of the License at }
- { http://www.mozilla.org/MPL/MPL-1.1.html }
- { }
- { Software distributed under the License is distributed on an "AS IS" basis, }
- { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
- { the specific language governing rights and limitations under the License. }
- { }
- { Alternatively, the contents of this file may be used under the terms of the }
- { GNU Lesser General Public License (the "LGPL License"), in which case the }
- { provisions of the LGPL License are applicable instead of those above. }
- { If you wish to allow use of your version of this file only under the terms }
- { of the LGPL License and not to allow others to use your version of this file }
- { under the MPL, indicate your decision by deleting the provisions above and }
- { replace them with the notice and other provisions required by the LGPL }
- { License. If you do not delete the provisions above, a recipient may use }
- { your version of this file under either the MPL or the LGPL License. }
- { }
- { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
- { }
- {******************************************************************************}
- unit JwaWinNT;
- {$WEAKPACKAGEUNIT}
- {$HPPEMIT ''}
- {$HPPEMIT '#include "winnt.h"'}
- {$HPPEMIT ''}
- {$HPPEMIT 'typedef PACL *PPACL'}
- {$HPPEMIT 'typedef PSID *PPSID'}
- {$HPPEMIT 'typedef PSECURITY_DESCRIPTOR *PPSECURITY_DESCRIPTOR'}
- {$HPPEMIT ''}
- {$I jediapilib.inc}
- interface
- uses
- JwaWinType;
- const
- MAXBYTE = BYTE($ff);
- {$EXTERNALSYM MAXBYTE}
- MAXWORD = WORD($ffff);
- {$EXTERNALSYM MAXWORD}
- MAXDWORD = DWORD($ffffffff);
- {$EXTERNALSYM MAXDWORD}
- const
- VER_SERVER_NT = DWORD($80000000);
- {$EXTERNALSYM VER_SERVER_NT}
- VER_WORKSTATION_NT = $40000000;
- {$EXTERNALSYM VER_WORKSTATION_NT}
- VER_SUITE_SMALLBUSINESS = $00000001;
- {$EXTERNALSYM VER_SUITE_SMALLBUSINESS}
- VER_SUITE_ENTERPRISE = $00000002;
- {$EXTERNALSYM VER_SUITE_ENTERPRISE}
- VER_SUITE_BACKOFFICE = $00000004;
- {$EXTERNALSYM VER_SUITE_BACKOFFICE}
- VER_SUITE_COMMUNICATIONS = $00000008;
- {$EXTERNALSYM VER_SUITE_COMMUNICATIONS}
- VER_SUITE_TERMINAL = $00000010;
- {$EXTERNALSYM VER_SUITE_TERMINAL}
- VER_SUITE_SMALLBUSINESS_RESTRICTED = $00000020;
- {$EXTERNALSYM VER_SUITE_SMALLBUSINESS_RESTRICTED}
- VER_SUITE_EMBEDDEDNT = $00000040;
- {$EXTERNALSYM VER_SUITE_EMBEDDEDNT}
- VER_SUITE_DATACENTER = $00000080;
- {$EXTERNALSYM VER_SUITE_DATACENTER}
- VER_SUITE_SINGLEUSERTS = $00000100;
- {$EXTERNALSYM VER_SUITE_SINGLEUSERTS}
- VER_SUITE_PERSONAL = $00000200;
- {$EXTERNALSYM VER_SUITE_PERSONAL}
- VER_SUITE_BLADE = $00000400;
- {$EXTERNALSYM VER_SUITE_BLADE}
- VER_SUITE_EMBEDDED_RESTRICTED = $00000800;
- {$EXTERNALSYM VER_SUITE_EMBEDDED_RESTRICTED}
- VER_SUITE_SECURITY_APPLIANCE = $00001000;
- {$EXTERNALSYM VER_SUITE_SECURITY_APPLIANCE}
- //
- // Language IDs.
- //
- // The following two combinations of primary language ID and
- // sublanguage ID have special semantics:
- //
- // Primary Language ID Sublanguage ID Result
- // ------------------- --------------- ------------------------
- // LANG_NEUTRAL SUBLANG_NEUTRAL Language neutral
- // LANG_NEUTRAL SUBLANG_DEFAULT User default language
- // LANG_NEUTRAL SUBLANG_SYS_DEFAULT System default language
- // LANG_INVARIANT SUBLANG_NEUTRAL Invariant locale
- //
- //
- // Primary language IDs.
- //
- const
- LANG_NEUTRAL = $00;
- {$EXTERNALSYM LANG_NEUTRAL}
- LANG_INVARIANT = $7f;
- {$EXTERNALSYM LANG_INVARIANT}
- LANG_AFRIKAANS = $36;
- {$EXTERNALSYM LANG_AFRIKAANS}
- LANG_ALBANIAN = $1c;
- {$EXTERNALSYM LANG_ALBANIAN}
- LANG_ARABIC = $01;
- {$EXTERNALSYM LANG_ARABIC}
- LANG_ARMENIAN = $2b;
- {$EXTERNALSYM LANG_ARMENIAN}
- LANG_ASSAMESE = $4d;
- {$EXTERNALSYM LANG_ASSAMESE}
- LANG_AZERI = $2c;
- {$EXTERNALSYM LANG_AZERI}
- LANG_BASQUE = $2d;
- {$EXTERNALSYM LANG_BASQUE}
- LANG_BELARUSIAN = $23;
- {$EXTERNALSYM LANG_BELARUSIAN}
- LANG_BENGALI = $45;
- {$EXTERNALSYM LANG_BENGALI}
- LANG_BULGARIAN = $02;
- {$EXTERNALSYM LANG_BULGARIAN}
- LANG_CATALAN = $03;
- {$EXTERNALSYM LANG_CATALAN}
- LANG_CHINESE = $04;
- {$EXTERNALSYM LANG_CHINESE}
- LANG_CROATIAN = $1a;
- {$EXTERNALSYM LANG_CROATIAN}
- LANG_CZECH = $05;
- {$EXTERNALSYM LANG_CZECH}
- LANG_DANISH = $06;
- {$EXTERNALSYM LANG_DANISH}
- LANG_DIVEHI = $65;
- {$EXTERNALSYM LANG_DIVEHI}
- LANG_DUTCH = $13;
- {$EXTERNALSYM LANG_DUTCH}
- LANG_ENGLISH = $09;
- {$EXTERNALSYM LANG_ENGLISH}
- LANG_ESTONIAN = $25;
- {$EXTERNALSYM LANG_ESTONIAN}
- LANG_FAEROESE = $38;
- {$EXTERNALSYM LANG_FAEROESE}
- LANG_FARSI = $29;
- {$EXTERNALSYM LANG_FARSI}
- LANG_FINNISH = $0b;
- {$EXTERNALSYM LANG_FINNISH}
- LANG_FRENCH = $0c;
- {$EXTERNALSYM LANG_FRENCH}
- LANG_GALICIAN = $56;
- {$EXTERNALSYM LANG_GALICIAN}
- LANG_GEORGIAN = $37;
- {$EXTERNALSYM LANG_GEORGIAN}
- LANG_GERMAN = $07;
- {$EXTERNALSYM LANG_GERMAN}
- LANG_GREEK = $08;
- {$EXTERNALSYM LANG_GREEK}
- LANG_GUJARATI = $47;
- {$EXTERNALSYM LANG_GUJARATI}
- LANG_HEBREW = $0d;
- {$EXTERNALSYM LANG_HEBREW}
- LANG_HINDI = $39;
- {$EXTERNALSYM LANG_HINDI}
- LANG_HUNGARIAN = $0e;
- {$EXTERNALSYM LANG_HUNGARIAN}
- LANG_ICELANDIC = $0f;
- {$EXTERNALSYM LANG_ICELANDIC}
- LANG_INDONESIAN = $21;
- {$EXTERNALSYM LANG_INDONESIAN}
- LANG_ITALIAN = $10;
- {$EXTERNALSYM LANG_ITALIAN}
- LANG_JAPANESE = $11;
- {$EXTERNALSYM LANG_JAPANESE}
- LANG_KANNADA = $4b;
- {$EXTERNALSYM LANG_KANNADA}
- LANG_KASHMIRI = $60;
- {$EXTERNALSYM LANG_KASHMIRI}
- LANG_KAZAK = $3f;
- {$EXTERNALSYM LANG_KAZAK}
- LANG_KONKANI = $57;
- {$EXTERNALSYM LANG_KONKANI}
- LANG_KOREAN = $12;
- {$EXTERNALSYM LANG_KOREAN}
- LANG_KYRGYZ = $40;
- {$EXTERNALSYM LANG_KYRGYZ}
- LANG_LATVIAN = $26;
- {$EXTERNALSYM LANG_LATVIAN}
- LANG_LITHUANIAN = $27;
- {$EXTERNALSYM LANG_LITHUANIAN}
- LANG_MACEDONIAN = $2f; // the Former Yugoslav Republic of Macedonia
- {$EXTERNALSYM LANG_MACEDONIAN}
- LANG_MALAY = $3e;
- {$EXTERNALSYM LANG_MALAY}
- LANG_MALAYALAM = $4c;
- {$EXTERNALSYM LANG_MALAYALAM}
- LANG_MANIPURI = $58;
- {$EXTERNALSYM LANG_MANIPURI}
- LANG_MARATHI = $4e;
- {$EXTERNALSYM LANG_MARATHI}
- LANG_MONGOLIAN = $50;
- {$EXTERNALSYM LANG_MONGOLIAN}
- LANG_NEPALI = $61;
- {$EXTERNALSYM LANG_NEPALI}
- LANG_NORWEGIAN = $14;
- {$EXTERNALSYM LANG_NORWEGIAN}
- LANG_ORIYA = $48;
- {$EXTERNALSYM LANG_ORIYA}
- LANG_POLISH = $15;
- {$EXTERNALSYM LANG_POLISH}
- LANG_PORTUGUESE = $16;
- {$EXTERNALSYM LANG_PORTUGUESE}
- LANG_PUNJABI = $46;
- {$EXTERNALSYM LANG_PUNJABI}
- LANG_ROMANIAN = $18;
- {$EXTERNALSYM LANG_ROMANIAN}
- LANG_RUSSIAN = $19;
- {$EXTERNALSYM LANG_RUSSIAN}
- LANG_SANSKRIT = $4f;
- {$EXTERNALSYM LANG_SANSKRIT}
- LANG_SERBIAN = $1a;
- {$EXTERNALSYM LANG_SERBIAN}
- LANG_SINDHI = $59;
- {$EXTERNALSYM LANG_SINDHI}
- LANG_SLOVAK = $1b;
- {$EXTERNALSYM LANG_SLOVAK}
- LANG_SLOVENIAN = $24;
- {$EXTERNALSYM LANG_SLOVENIAN}
- LANG_SPANISH = $0a;
- {$EXTERNALSYM LANG_SPANISH}
- LANG_SWAHILI = $41;
- {$EXTERNALSYM LANG_SWAHILI}
- LANG_SWEDISH = $1d;
- {$EXTERNALSYM LANG_SWEDISH}
- LANG_SYRIAC = $5a;
- {$EXTERNALSYM LANG_SYRIAC}
- LANG_TAMIL = $49;
- {$EXTERNALSYM LANG_TAMIL}
- LANG_TATAR = $44;
- {$EXTERNALSYM LANG_TATAR}
- LANG_TELUGU = $4a;
- {$EXTERNALSYM LANG_TELUGU}
- LANG_THAI = $1e;
- {$EXTERNALSYM LANG_THAI}
- LANG_TURKISH = $1f;
- {$EXTERNALSYM LANG_TURKISH}
- LANG_UKRAINIAN = $22;
- {$EXTERNALSYM LANG_UKRAINIAN}
- LANG_URDU = $20;
- {$EXTERNALSYM LANG_URDU}
- LANG_UZBEK = $43;
- {$EXTERNALSYM LANG_UZBEK}
- LANG_VIETNAMESE = $2a;
- {$EXTERNALSYM LANG_VIETNAMESE}
- //
- // Sublanguage IDs.
- //
- // The name immediately following SUBLANG_ dictates which primary
- // language ID that sublanguage ID can be combined with to form a
- // valid language ID.
- //
- SUBLANG_NEUTRAL = $00; // language neutral
- {$EXTERNALSYM SUBLANG_NEUTRAL}
- SUBLANG_DEFAULT = $01; // user default
- {$EXTERNALSYM SUBLANG_DEFAULT}
- SUBLANG_SYS_DEFAULT = $02; // system default
- {$EXTERNALSYM SUBLANG_SYS_DEFAULT}
- SUBLANG_ARABIC_SAUDI_ARABIA = $01; // Arabic (Saudi Arabia)
- {$EXTERNALSYM SUBLANG_ARABIC_SAUDI_ARABIA}
- SUBLANG_ARABIC_IRAQ = $02; // Arabic (Iraq)
- {$EXTERNALSYM SUBLANG_ARABIC_IRAQ}
- SUBLANG_ARABIC_EGYPT = $03; // Arabic (Egypt)
- {$EXTERNALSYM SUBLANG_ARABIC_EGYPT}
- SUBLANG_ARABIC_LIBYA = $04; // Arabic (Libya)
- {$EXTERNALSYM SUBLANG_ARABIC_LIBYA}
- SUBLANG_ARABIC_ALGERIA = $05; // Arabic (Algeria)
- {$EXTERNALSYM SUBLANG_ARABIC_ALGERIA}
- SUBLANG_ARABIC_MOROCCO = $06; // Arabic (Morocco)
- {$EXTERNALSYM SUBLANG_ARABIC_MOROCCO}
- SUBLANG_ARABIC_TUNISIA = $07; // Arabic (Tunisia)
- {$EXTERNALSYM SUBLANG_ARABIC_TUNISIA}
- SUBLANG_ARABIC_OMAN = $08; // Arabic (Oman)
- {$EXTERNALSYM SUBLANG_ARABIC_OMAN}
- SUBLANG_ARABIC_YEMEN = $09; // Arabic (Yemen)
- {$EXTERNALSYM SUBLANG_ARABIC_YEMEN}
- SUBLANG_ARABIC_SYRIA = $0a; // Arabic (Syria)
- {$EXTERNALSYM SUBLANG_ARABIC_SYRIA}
- SUBLANG_ARABIC_JORDAN = $0b; // Arabic (Jordan)
- {$EXTERNALSYM SUBLANG_ARABIC_JORDAN}
- SUBLANG_ARABIC_LEBANON = $0c; // Arabic (Lebanon)
- {$EXTERNALSYM SUBLANG_ARABIC_LEBANON}
- SUBLANG_ARABIC_KUWAIT = $0d; // Arabic (Kuwait)
- {$EXTERNALSYM SUBLANG_ARABIC_KUWAIT}
- SUBLANG_ARABIC_UAE = $0e; // Arabic (U.A.E)
- {$EXTERNALSYM SUBLANG_ARABIC_UAE}
- SUBLANG_ARABIC_BAHRAIN = $0f; // Arabic (Bahrain)
- {$EXTERNALSYM SUBLANG_ARABIC_BAHRAIN}
- SUBLANG_ARABIC_QATAR = $10; // Arabic (Qatar)
- {$EXTERNALSYM SUBLANG_ARABIC_QATAR}
- SUBLANG_AZERI_LATIN = $01; // Azeri (Latin)
- {$EXTERNALSYM SUBLANG_AZERI_LATIN}
- SUBLANG_AZERI_CYRILLIC = $02; // Azeri (Cyrillic)
- {$EXTERNALSYM SUBLANG_AZERI_CYRILLIC}
- SUBLANG_CHINESE_TRADITIONAL = $01; // Chinese (Taiwan)
- {$EXTERNALSYM SUBLANG_CHINESE_TRADITIONAL}
- SUBLANG_CHINESE_SIMPLIFIED = $02; // Chinese (PR China)
- {$EXTERNALSYM SUBLANG_CHINESE_SIMPLIFIED}
- SUBLANG_CHINESE_HONGKONG = $03; // Chinese (Hong Kong S.A.R., P.R.C.)
- {$EXTERNALSYM SUBLANG_CHINESE_HONGKONG}
- SUBLANG_CHINESE_SINGAPORE = $04; // Chinese (Singapore)
- {$EXTERNALSYM SUBLANG_CHINESE_SINGAPORE}
- SUBLANG_CHINESE_MACAU = $05; // Chinese (Macau S.A.R.)
- {$EXTERNALSYM SUBLANG_CHINESE_MACAU}
- SUBLANG_DUTCH = $01; // Dutch
- {$EXTERNALSYM SUBLANG_DUTCH}
- SUBLANG_DUTCH_BELGIAN = $02; // Dutch (Belgian)
- {$EXTERNALSYM SUBLANG_DUTCH_BELGIAN}
- SUBLANG_ENGLISH_US = $01; // English (USA)
- {$EXTERNALSYM SUBLANG_ENGLISH_US}
- SUBLANG_ENGLISH_UK = $02; // English (UK)
- {$EXTERNALSYM SUBLANG_ENGLISH_UK}
- SUBLANG_ENGLISH_AUS = $03; // English (Australian)
- {$EXTERNALSYM SUBLANG_ENGLISH_AUS}
- SUBLANG_ENGLISH_CAN = $04; // English (Canadian)
- {$EXTERNALSYM SUBLANG_ENGLISH_CAN}
- SUBLANG_ENGLISH_NZ = $05; // English (New Zealand)
- {$EXTERNALSYM SUBLANG_ENGLISH_NZ}
- SUBLANG_ENGLISH_EIRE = $06; // English (Irish)
- {$EXTERNALSYM SUBLANG_ENGLISH_EIRE}
- SUBLANG_ENGLISH_SOUTH_AFRICA = $07; // English (South Africa)
- {$EXTERNALSYM SUBLANG_ENGLISH_SOUTH_AFRICA}
- SUBLANG_ENGLISH_JAMAICA = $08; // English (Jamaica)
- {$EXTERNALSYM SUBLANG_ENGLISH_JAMAICA}
- SUBLANG_ENGLISH_CARIBBEAN = $09; // English (Caribbean)
- {$EXTERNALSYM SUBLANG_ENGLISH_CARIBBEAN}
- SUBLANG_ENGLISH_BELIZE = $0a; // English (Belize)
- {$EXTERNALSYM SUBLANG_ENGLISH_BELIZE}
- SUBLANG_ENGLISH_TRINIDAD = $0b; // English (Trinidad)
- {$EXTERNALSYM SUBLANG_ENGLISH_TRINIDAD}
- SUBLANG_ENGLISH_ZIMBABWE = $0c; // English (Zimbabwe)
- {$EXTERNALSYM SUBLANG_ENGLISH_ZIMBABWE}
- SUBLANG_ENGLISH_PHILIPPINES = $0d; // English (Philippines)
- {$EXTERNALSYM SUBLANG_ENGLISH_PHILIPPINES}
- SUBLANG_FRENCH = $01; // French
- {$EXTERNALSYM SUBLANG_FRENCH}
- SUBLANG_FRENCH_BELGIAN = $02; // French (Belgian)
- {$EXTERNALSYM SUBLANG_FRENCH_BELGIAN}
- SUBLANG_FRENCH_CANADIAN = $03; // French (Canadian)
- {$EXTERNALSYM SUBLANG_FRENCH_CANADIAN}
- SUBLANG_FRENCH_SWISS = $04; // French (Swiss)
- {$EXTERNALSYM SUBLANG_FRENCH_SWISS}
- SUBLANG_FRENCH_LUXEMBOURG = $05; // French (Luxembourg)
- {$EXTERNALSYM SUBLANG_FRENCH_LUXEMBOURG}
- SUBLANG_FRENCH_MONACO = $06; // French (Monaco)
- {$EXTERNALSYM SUBLANG_FRENCH_MONACO}
- SUBLANG_GERMAN = $01; // German
- {$EXTERNALSYM SUBLANG_GERMAN}
- SUBLANG_GERMAN_SWISS = $02; // German (Swiss)
- {$EXTERNALSYM SUBLANG_GERMAN_SWISS}
- SUBLANG_GERMAN_AUSTRIAN = $03; // German (Austrian)
- {$EXTERNALSYM SUBLANG_GERMAN_AUSTRIAN}
- SUBLANG_GERMAN_LUXEMBOURG = $04; // German (Luxembourg)
- {$EXTERNALSYM SUBLANG_GERMAN_LUXEMBOURG}
- SUBLANG_GERMAN_LIECHTENSTEIN = $05; // German (Liechtenstein)
- {$EXTERNALSYM SUBLANG_GERMAN_LIECHTENSTEIN}
- SUBLANG_ITALIAN = $01; // Italian
- {$EXTERNALSYM SUBLANG_ITALIAN}
- SUBLANG_ITALIAN_SWISS = $02; // Italian (Swiss)
- {$EXTERNALSYM SUBLANG_ITALIAN_SWISS}
- SUBLANG_KASHMIRI_SASIA = $02; // Kashmiri (South Asia)
- {$EXTERNALSYM SUBLANG_KASHMIRI_SASIA}
- SUBLANG_KASHMIRI_INDIA = $02; // For app compatibility only
- {$EXTERNALSYM SUBLANG_KASHMIRI_INDIA}
- SUBLANG_KOREAN = $01; // Korean (Extended Wansung)
- {$EXTERNALSYM SUBLANG_KOREAN}
- SUBLANG_LITHUANIAN = $01; // Lithuanian
- {$EXTERNALSYM SUBLANG_LITHUANIAN}
- SUBLANG_MALAY_MALAYSIA = $01; // Malay (Malaysia)
- {$EXTERNALSYM SUBLANG_MALAY_MALAYSIA}
- SUBLANG_MALAY_BRUNEI_DARUSSALAM = $02; // Malay (Brunei Darussalam)
- {$EXTERNALSYM SUBLANG_MALAY_BRUNEI_DARUSSALAM}
- SUBLANG_NEPALI_INDIA = $02; // Nepali (India)
- {$EXTERNALSYM SUBLANG_NEPALI_INDIA}
- SUBLANG_NORWEGIAN_BOKMAL = $01; // Norwegian (Bokmal)
- {$EXTERNALSYM SUBLANG_NORWEGIAN_BOKMAL}
- SUBLANG_NORWEGIAN_NYNORSK = $02; // Norwegian (Nynorsk)
- {$EXTERNALSYM SUBLANG_NORWEGIAN_NYNORSK}
- SUBLANG_PORTUGUESE = $02; // Portuguese
- {$EXTERNALSYM SUBLANG_PORTUGUESE}
- SUBLANG_PORTUGUESE_BRAZILIAN = $01; // Portuguese (Brazilian)
- {$EXTERNALSYM SUBLANG_PORTUGUESE_BRAZILIAN}
- SUBLANG_SERBIAN_LATIN = $02; // Serbian (Latin)
- {$EXTERNALSYM SUBLANG_SERBIAN_LATIN}
- SUBLANG_SERBIAN_CYRILLIC = $03; // Serbian (Cyrillic)
- {$EXTERNALSYM SUBLANG_SERBIAN_CYRILLIC}
- SUBLANG_SPANISH = $01; // Spanish (Castilian)
- {$EXTERNALSYM SUBLANG_SPANISH}
- SUBLANG_SPANISH_MEXICAN = $02; // Spanish (Mexican)
- {$EXTERNALSYM SUBLANG_SPANISH_MEXICAN}
- SUBLANG_SPANISH_MODERN = $03; // Spanish (Spain)
- {$EXTERNALSYM SUBLANG_SPANISH_MODERN}
- SUBLANG_SPANISH_GUATEMALA = $04; // Spanish (Guatemala)
- {$EXTERNALSYM SUBLANG_SPANISH_GUATEMALA}
- SUBLANG_SPANISH_COSTA_RICA = $05; // Spanish (Costa Rica)
- {$EXTERNALSYM SUBLANG_SPANISH_COSTA_RICA}
- SUBLANG_SPANISH_PANAMA = $06; // Spanish (Panama)
- {$EXTERNALSYM SUBLANG_SPANISH_PANAMA}
- SUBLANG_SPANISH_DOMINICAN_REPUBLIC = $07; // Spanish (Dominican Republic)
- {$EXTERNALSYM SUBLANG_SPANISH_DOMINICAN_REPUBLIC}
- SUBLANG_SPANISH_VENEZUELA = $08; // Spanish (Venezuela)
- {$EXTERNALSYM SUBLANG_SPANISH_VENEZUELA}
- SUBLANG_SPANISH_COLOMBIA = $09; // Spanish (Colombia)
- {$EXTERNALSYM SUBLANG_SPANISH_COLOMBIA}
- SUBLANG_SPANISH_PERU = $0a; // Spanish (Peru)
- {$EXTERNALSYM SUBLANG_SPANISH_PERU}
- SUBLANG_SPANISH_ARGENTINA = $0b; // Spanish (Argentina)
- {$EXTERNALSYM SUBLANG_SPANISH_ARGENTINA}
- SUBLANG_SPANISH_ECUADOR = $0c; // Spanish (Ecuador)
- {$EXTERNALSYM SUBLANG_SPANISH_ECUADOR}
- SUBLANG_SPANISH_CHILE = $0d; // Spanish (Chile)
- {$EXTERNALSYM SUBLANG_SPANISH_CHILE}
- SUBLANG_SPANISH_URUGUAY = $0e; // Spanish (Uruguay)
- {$EXTERNALSYM SUBLANG_SPANISH_URUGUAY}
- SUBLANG_SPANISH_PARAGUAY = $0f; // Spanish (Paraguay)
- {$EXTERNALSYM SUBLANG_SPANISH_PARAGUAY}
- SUBLANG_SPANISH_BOLIVIA = $10; // Spanish (Bolivia)
- {$EXTERNALSYM SUBLANG_SPANISH_BOLIVIA}
- SUBLANG_SPANISH_EL_SALVADOR = $11; // Spanish (El Salvador)
- {$EXTERNALSYM SUBLANG_SPANISH_EL_SALVADOR}
- SUBLANG_SPANISH_HONDURAS = $12; // Spanish (Honduras)
- {$EXTERNALSYM SUBLANG_SPANISH_HONDURAS}
- SUBLANG_SPANISH_NICARAGUA = $13; // Spanish (Nicaragua)
- {$EXTERNALSYM SUBLANG_SPANISH_NICARAGUA}
- SUBLANG_SPANISH_PUERTO_RICO = $14; // Spanish (Puerto Rico)
- {$EXTERNALSYM SUBLANG_SPANISH_PUERTO_RICO}
- SUBLANG_SWEDISH = $01; // Swedish
- {$EXTERNALSYM SUBLANG_SWEDISH}
- SUBLANG_SWEDISH_FINLAND = $02; // Swedish (Finland)
- {$EXTERNALSYM SUBLANG_SWEDISH_FINLAND}
- SUBLANG_URDU_PAKISTAN = $01; // Urdu (Pakistan)
- {$EXTERNALSYM SUBLANG_URDU_PAKISTAN}
- SUBLANG_URDU_INDIA = $02; // Urdu (India)
- {$EXTERNALSYM SUBLANG_URDU_INDIA}
- SUBLANG_UZBEK_LATIN = $01; // Uzbek (Latin)
- {$EXTERNALSYM SUBLANG_UZBEK_LATIN}
- SUBLANG_UZBEK_CYRILLIC = $02; // Uzbek (Cyrillic)
- {$EXTERNALSYM SUBLANG_UZBEK_CYRILLIC}
- //
- // Sorting IDs.
- //
- SORT_DEFAULT = $0; // sorting default
- {$EXTERNALSYM SORT_DEFAULT}
- SORT_JAPANESE_XJIS = $0; // Japanese XJIS order
- {$EXTERNALSYM SORT_JAPANESE_XJIS}
- SORT_JAPANESE_UNICODE = $1; // Japanese Unicode order
- {$EXTERNALSYM SORT_JAPANESE_UNICODE}
- SORT_CHINESE_BIG5 = $0; // Chinese BIG5 order
- {$EXTERNALSYM SORT_CHINESE_BIG5}
- SORT_CHINESE_PRCP = $0; // PRC Chinese Phonetic order
- {$EXTERNALSYM SORT_CHINESE_PRCP}
- SORT_CHINESE_UNICODE = $1; // Chinese Unicode order
- {$EXTERNALSYM SORT_CHINESE_UNICODE}
- SORT_CHINESE_PRC = $2; // PRC Chinese Stroke Count order
- {$EXTERNALSYM SORT_CHINESE_PRC}
- SORT_CHINESE_BOPOMOFO = $3; // Traditional Chinese Bopomofo order
- {$EXTERNALSYM SORT_CHINESE_BOPOMOFO}
- SORT_KOREAN_KSC = $0; // Korean KSC order
- {$EXTERNALSYM SORT_KOREAN_KSC}
- SORT_KOREAN_UNICODE = $1; // Korean Unicode order
- {$EXTERNALSYM SORT_KOREAN_UNICODE}
- SORT_GERMAN_PHONE_BOOK = $1; // German Phone Book order
- {$EXTERNALSYM SORT_GERMAN_PHONE_BOOK}
- SORT_HUNGARIAN_DEFAULT = $0; // Hungarian Default order
- {$EXTERNALSYM SORT_HUNGARIAN_DEFAULT}
- SORT_HUNGARIAN_TECHNICAL = $1; // Hungarian Technical order
- {$EXTERNALSYM SORT_HUNGARIAN_TECHNICAL}
- SORT_GEORGIAN_TRADITIONAL = $0; // Georgian Traditional order
- {$EXTERNALSYM SORT_GEORGIAN_TRADITIONAL}
- SORT_GEORGIAN_MODERN = $1; // Georgian Modern order
- {$EXTERNALSYM SORT_GEORGIAN_MODERN}
- //
- // A language ID is a 16 bit value which is the combination of a
- // primary language ID and a secondary language ID. The bits are
- // allocated as follows:
- //
- // +-----------------------+-------------------------+
- // | Sublanguage ID | Primary Language ID |
- // +-----------------------+-------------------------+
- // 15 10 9 0 bit
- //
- //
- // Language ID creation/extraction macros:
- //
- // MAKELANGID - construct language id from a primary language id and
- // a sublanguage id.
- // PRIMARYLANGID - extract primary language id from a language id.
- // SUBLANGID - extract sublanguage id from a language id.
- //
- function MAKELANGID(PrimaryLang, SubLang: USHORT): WORD;
- {$EXTERNALSYM MAKELANGID}
- function PRIMARYLANGID(LangId: WORD): WORD;
- {$EXTERNALSYM PRIMARYLANGID}
- function SUBLANGID(LangId: WORD): WORD;
- {$EXTERNALSYM SUBLANGID}
- //
- // A locale ID is a 32 bit value which is the combination of a
- // language ID, a sort ID, and a reserved area. The bits are
- // allocated as follows:
- //
- // +-------------+---------+-------------------------+
- // | Reserved | Sort ID | Language ID |
- // +-------------+---------+-------------------------+
- // 31 20 19 16 15 0 bit
- //
- //
- // Locale ID creation/extraction macros:
- //
- // MAKELCID - construct the locale id from a language id and a sort id.
- // MAKESORTLCID - construct the locale id from a language id, sort id, and sort version.
- // LANGIDFROMLCID - extract the language id from a locale id.
- // SORTIDFROMLCID - extract the sort id from a locale id.
- // SORTVERSIONFROMLCID - extract the sort version from a locale id.
- //
- const
- NLS_VALID_LOCALE_MASK = $000fffff;
- {$EXTERNALSYM NLS_VALID_LOCALE_MASK}
- function MAKELCID(LangId, SortId: WORD): DWORD;
- {$EXTERNALSYM MAKELCID}
- function MAKESORTLCID(LangId, SortId, SortVersion: WORD): DWORD;
- {$EXTERNALSYM MAKESORTLCID}
- function LANGIDFROMLCID(LocaleId: LCID): WORD;
- {$EXTERNALSYM LANGIDFROMLCID}
- function SORTIDFROMLCID(LocaleId: LCID): WORD;
- {$EXTERNALSYM SORTIDFROMLCID}
- function SORTVERSIONFROMLCID(LocaleId: LCID): WORD;
- {$EXTERNALSYM SORTVERSIONFROMLCID}
- //
- // Default System and User IDs for language and locale.
- //
- function LANG_SYSTEM_DEFAULT: WORD;
- {$EXTERNALSYM LANG_SYSTEM_DEFAULT}
- function LANG_USER_DEFAULT: WORD;
- {$EXTERNALSYM LANG_USER_DEFAULT}
- function LOCALE_SYSTEM_DEFAULT: DWORD;
- {$EXTERNALSYM LOCALE_SYSTEM_DEFAULT}
- function LOCALE_USER_DEFAULT: DWORD;
- {$EXTERNALSYM LOCALE_USER_DEFAULT}
- function LOCALE_NEUTRAL: DWORD;
- {$EXTERNALSYM LOCALE_NEUTRAL}
- function LOCALE_INVARIANT: DWORD;
- {$EXTERNALSYM LOCALE_NEUTRAL}
- const
- // (rom) deleted status codes already in JwaWinStatus.pas
- DBG_COMMAND_EXCEPTION = DWORD($40010009);
- {$EXTERNALSYM DBG_COMMAND_EXCEPTION}
- STATUS_SXS_EARLY_DEACTIVATION = DWORD($C015000F);
- {$EXTERNALSYM STATUS_SXS_EARLY_DEACTIVATION}
- STATUS_SXS_INVALID_DEACTIVATION = DWORD($C0150010);
- {$EXTERNALSYM STATUS_SXS_INVALID_DEACTIVATION}
- const
- MAXIMUM_WAIT_OBJECTS = 64; // Maximum number of wait objects
- {$EXTERNALSYM MAXIMUM_WAIT_OBJECTS}
- MAXIMUM_SUSPEND_COUNT = MAXCHAR; // Maximum times thread can be suspended
- {$EXTERNALSYM MAXIMUM_SUSPEND_COUNT}
- type
- KSPIN_LOCK = ULONG_PTR;
- {$EXTERNALSYM KSPIN_LOCK}
- PKSPIN_LOCK = ^KSPIN_LOCK;
- {$EXTERNALSYM PKSPIN_LOCK}
- //
- // Define functions to get the address of the current fiber and the
- // current fiber data.
- //
- //
- // Disable these two pramas that evaluate to "sti" "cli" on x86 so that driver
- // writers to not leave them inadvertantly in their code.
- //
- function GetFiberData: PVOID;
- {$EXTERNALSYM GetFiberData}
- function GetCurrentFiber: PVOID;
- {$EXTERNALSYM GetCurrentFiber}
- //
- // Define the size of the 80387 save area, which is in the context frame.
- //
- const
- SIZE_OF_80387_REGISTERS = 80;
- {$EXTERNALSYM SIZE_OF_80387_REGISTERS}
- //
- // The following flags control the contents of the CONTEXT structure.
- //
- const
- CONTEXT_i386 = $00010000; // this assumes that i386 and
- {$EXTERNALSYM CONTEXT_i386}
- CONTEXT_i486 = $00010000; // i486 have identical context records
- {$EXTERNALSYM CONTEXT_i486}
- const
- CONTEXT_CONTROL = CONTEXT_i386 or $00000001; // SS:SP, CS:IP, FLAGS, BP
- {$EXTERNALSYM CONTEXT_CONTROL}
- CONTEXT_INTEGER = CONTEXT_i386 or $00000002; // AX, BX, CX, DX, SI, DI
- {$EXTERNALSYM CONTEXT_INTEGER}
- CONTEXT_SEGMENTS = CONTEXT_i386 or $00000004; // DS, ES, FS, GS
- {$EXTERNALSYM CONTEXT_SEGMENTS}
- CONTEXT_FLOATING_POINT = CONTEXT_i386 or $00000008; // 387 state
- {$EXTERNALSYM CONTEXT_FLOATING_POINT}
- CONTEXT_DEBUG_REGISTERS = CONTEXT_i386 or $00000010; // DB 0-3,6,7
- {$EXTERNALSYM CONTEXT_DEBUG_REGISTERS}
- CONTEXT_EXTENDED_REGISTERS = CONTEXT_i386 or $00000020; // cpu specific extensions
- {$EXTERNALSYM CONTEXT_EXTENDED_REGISTERS}
- CONTEXT_FULL = CONTEXT_CONTROL or CONTEXT_INTEGER or CONTEXT_SEGMENTS;
- {$EXTERNALSYM CONTEXT_FULL}
- CONTEXT_ALL = CONTEXT_CONTROL or CONTEXT_INTEGER or CONTEXT_SEGMENTS or CONTEXT_FLOATING_POINT or CONTEXT_DEBUG_REGISTERS;
- {$EXTERNALSYM CONTEXT_ALL}
- //
- // Define initial MxCsr control.
- //
- INITIAL_MXCSR = $1f80; // initial MXCSR value
- {$EXTERNALSYM INITIAL_MXCSR}
- MAXIMUM_SUPPORTED_EXTENSION = 512;
- {$EXTERNALSYM MAXIMUM_SUPPORTED_EXTENSION}
- type
- PFLOATING_SAVE_AREA = ^FLOATING_SAVE_AREA;
- {$EXTERNALSYM PFLOATING_SAVE_AREA}
- _FLOATING_SAVE_AREA = record
- ControlWord: DWORD;
- StatusWord: DWORD;
- TagWord: DWORD;
- ErrorOffset: DWORD;
- ErrorSelector: DWORD;
- DataOffset: DWORD;
- DataSelector: DWORD;
- RegisterArea: array [0..SIZE_OF_80387_REGISTERS - 1] of BYTE;
- Cr0NpxState: DWORD;
- end;
- {$EXTERNALSYM _FLOATING_SAVE_AREA}
- FLOATING_SAVE_AREA = _FLOATING_SAVE_AREA;
- {$EXTERNALSYM FLOATING_SAVE_AREA}
- TFloatingSaveArea = FLOATING_SAVE_AREA;
- PFloatingSaveArea = PFLOATING_SAVE_AREA;
- //
- // Context Frame
- //
- // This frame has a several purposes: 1) it is used as an argument to
- // NtContinue, 2) is is used to constuct a call frame for APC delivery,
- // and 3) it is used in the user level thread creation routines.
- //
- // The layout of the record conforms to a standard call frame.
- //
- type
- PContext = ^CONTEXT;
- _CONTEXT = record
- //
- // The flags values within this flag control the contents of
- // a CONTEXT record.
- //
- // If the context record is used as an input parameter, then
- // for each portion of the context record controlled by a flag
- // whose value is set, it is assumed that that portion of the
- // context record contains valid context. If the context record
- // is being used to modify a threads context, then only that
- // portion of the threads context will be modified.
- //
- // If the context record is used as an IN OUT parameter to capture
- // the context of a thread, then only those portions of the thread's
- // context corresponding to set flags will be returned.
- //
- // The context record is never used as an OUT only parameter.
- //
- ContextFlags: DWORD;
- //
- // This section is specified/returned if CONTEXT_DEBUG_REGISTERS is
- // set in ContextFlags. Note that CONTEXT_DEBUG_REGISTERS is NOT
- // included in CONTEXT_FULL.
- //
- Dr0: DWORD;
- Dr1: DWORD;
- Dr2: DWORD;
- Dr3: DWORD;
- Dr6: DWORD;
- Dr7: DWORD;
- //
- // This section is specified/returned if the
- // ContextFlags word contians the flag CONTEXT_FLOATING_POINT.
- //
- FloatSave: FLOATING_SAVE_AREA;
- //
- // This section is specified/returned if the
- // ContextFlags word contians the flag CONTEXT_SEGMENTS.
- //
- SegGs: DWORD;
- SegFs: DWORD;
- SegEs: DWORD;
- SegDs: DWORD;
- //
- // This section is specified/returned if the
- // ContextFlags word contians the flag CONTEXT_INTEGER.
- //
- Edi: DWORD;
- Esi: DWORD;
- Ebx: DWORD;
- Edx: DWORD;
- Ecx: DWORD;
- Eax: DWORD;
- //
- // This section is specified/returned if the
- // ContextFlags word contians the flag CONTEXT_CONTROL.
- //
- Ebp: DWORD;
- Eip: DWORD;
- SegCs: DWORD; // MUST BE SANITIZED
- EFlags: DWORD; // MUST BE SANITIZED
- Esp: DWORD;
- SegSs: DWORD;
- //
- // This section is specified/returned if the ContextFlags word
- // contains the flag CONTEXT_EXTENDED_REGISTERS.
- // The format and contexts are processor specific
- //
- ExtendedRegisters: array [0..MAXIMUM_SUPPORTED_EXTENSION - 1] of BYTE;
- end;
- {$EXTERNALSYM _CONTEXT}
- CONTEXT = _CONTEXT;
- {$EXTERNALSYM CONTEXT}
- TContext = CONTEXT;
- const
- LDTENTRY_FLAGS1_TYPE = $1F;
- LDTENTRY_FLAGS1_DPL = $60;
- LDTENTRY_FLAGS1_PRES = $80;
- LDTENTRY_FLAGS2_LIMITHI = $0F;
- LDTENTRY_FLAGS2_SYS = $10;
- LDTENTRY_FLAGS2_RESERVED_0 = $20;
- LDTENTRY_FLAGS2_DEFAULT_BIG = $40;
- LDTENTRY_FLAGS2_GRANULARITY = $80;
- type
- PLDT_ENTRY = ^LDT_ENTRY;
- {$EXTERNALSYM PLDT_ENTRY}
- _LDT_ENTRY = record
- LimitLow: WORD;
- BaseLow: WORD;
- BaseMid: BYTE;
- Flags1: BYTE; // Declare as bytes to avoid alignment
- Flags2: BYTE; // Problems.
- BaseHi: BYTE;
- end;
- {$EXTERNALSYM _LDT_ENTRY}
- LDT_ENTRY = _LDT_ENTRY;
- {$EXTERNALSYM LDT_ENTRY}
- TLdtEntry = LDT_ENTRY;
- PLdtEntry = PLDT_ENTRY;
- // Please contact INTEL to get IA64-specific information
- const
- EXCEPTION_NONCONTINUABLE = $1; // Noncontinuable exception
- {$EXTERNALSYM EXCEPTION_NONCONTINUABLE}
- EXCEPTION_MAXIMUM_PARAMETERS = 15; // maximum number of exception parameters
- {$EXTERNALSYM EXCEPTION_MAXIMUM_PARAMETERS}
- //
- // Exception record definition.
- //
- type
- PEXCEPTION_RECORD = ^EXCEPTION_RECORD;
- {$EXTERNALSYM PEXCEPTION_RECORD}
- _EXCEPTION_RECORD = record
- ExceptionCode: DWORD;
- ExceptionFlags: DWORD;
- ExceptionRecord: PEXCEPTION_RECORD;
- ExceptionAddress: Pointer;
- NumberParameters: DWORD;
- ExceptionInformation: array [0..EXCEPTION_MAXIMUM_PARAMETERS - 1] of ULONG_PTR;
- end;
- {$EXTERNALSYM _EXCEPTION_RECORD}
- EXCEPTION_RECORD = _EXCEPTION_RECORD;
- {$EXTERNALSYM EXCEPTION_RECORD}
- TExceptionRecord = EXCEPTION_RECORD;
- PExceptionRecord = PEXCEPTION_RECORD;
- PEXCEPTION_RECORD32 = ^EXCEPTION_RECORD32;
- {$EXTERNALSYM PEXCEPTION_RECORD32}
- _EXCEPTION_RECORD32 = record
- ExceptionCode: DWORD;
- ExceptionFlags: DWORD;
- ExceptionRecord: DWORD;
- ExceptionAddress: DWORD;
- NumberParameters: DWORD;
- ExceptionInformation: array [0..EXCEPTION_MAXIMUM_PARAMETERS - 1] of DWORD;
- end;
- {$EXTERNALSYM _EXCEPTION_RECORD32}
- EXCEPTION_RECORD32 = _EXCEPTION_RECORD32;
- {$EXTERNALSYM EXCEPTION_RECORD32}
- TExceptionRecord32 = EXCEPTION_RECORD32;
- PExceptionRecord32 = PEXCEPTION_RECORD32;
- PEXCEPTION_RECORD64 = ^EXCEPTION_RECORD64;
- {$EXTERNALSYM PEXCEPTION_RECORD64}
- _EXCEPTION_RECORD64 = record
- ExceptionCode: DWORD;
- ExceptionFlags: DWORD;
- ExceptionRecord: DWORD64;
- ExceptionAddress: DWORD64;
- NumberParameters: DWORD;
- __unusedAlignment: DWORD;
- ExceptionInformation: array [0..EXCEPTION_MAXIMUM_PARAMETERS - 1] of DWORD64;
- end;
- {$EXTERNALSYM _EXCEPTION_RECORD64}
- EXCEPTION_RECORD64 = _EXCEPTION_RECORD64;
- {$EXTERNALSYM EXCEPTION_RECORD64}
- TExceptionRecord64 = EXCEPTION_RECORD64;
- PExceptionRecord64 = PEXCEPTION_RECORD64;
- //
- // Typedef for pointer returned by exception_info()
- //
- PEXCEPTION_POINTERS = ^EXCEPTION_POINTERS;
- {$EXTERNALSYM PEXCEPTION_POINTERS}
- _EXCEPTION_POINTERS = record
- ExceptionRecord: PEXCEPTION_RECORD;
- ContextRecord: PCONTEXT;
- end;
- {$EXTERNALSYM _EXCEPTION_POINTERS}
- EXCEPTION_POINTERS = _EXCEPTION_POINTERS;
- {$EXTERNALSYM EXCEPTION_POINTERS}
- TExceptionPointers = EXCEPTION_POINTERS;
- PExceptionPointers = ^TExceptionPointers;
- PACCESS_TOKEN = Pointer;
- {$EXTERNALSYM PACCESS_TOKEN}
- ////////////////////////////////////////////////////////////////////////
- // //
- // ACCESS MASK //
- // //
- ////////////////////////////////////////////////////////////////////////
- //
- // Define the access mask as a longword sized structure divided up as
- // follows:
- //
- // 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
- // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
- // +---------------+---------------+-------------------------------+
- // |G|G|G|G|Res'd|A| StandardRights| SpecificRights |
- // |R|W|E|A| |S| | |
- // +-+-------------+---------------+-------------------------------+
- //
- // typedef struct _ACCESS_MASK {
- // WORD SpecificRights;
- // BYTE StandardRights;
- // BYTE AccessSystemAcl : 1;
- // BYTE Reserved : 3;
- // BYTE GenericAll : 1;
- // BYTE GenericExecute : 1;
- // BYTE GenericWrite : 1;
- // BYTE GenericRead : 1;
- // } ACCESS_MASK;
- // typedef ACCESS_MASK *PACCESS_MASK;
- //
- // but to make life simple for programmer's we'll allow them to specify
- // a desired access mask by simply OR'ing together mulitple single rights
- // and treat an access mask as a DWORD. For example
- //
- // DesiredAccess = DELETE | READ_CONTROL
- //
- // So we'll declare ACCESS_MASK as DWORD
- //
- type
- ACCESS_MASK = DWORD;
- {$EXTERNALSYM ACCESS_MASK}
- PACCESS_MASK = ^ACCESS_MASK;
- {$EXTERNALSYM PACCESS_MASK}
- TAccessMask = ACCESS_MASK;
- PAccessMask = PACCESS_MASK;
- ////////////////////////////////////////////////////////////////////////
- // //
- // ACCESS TYPES //
- // //
- ////////////////////////////////////////////////////////////////////////
- //
- // The following are masks for the predefined standard access types
- //
- const
- DELETE = $00010000;
- {$EXTERNALSYM DELETE}
- READ_CONTROL = $00020000;
- {$EXTERNALSYM READ_CONTROL}
- WRITE_DAC = $00040000;
- {$EXTERNALSYM WRITE_DAC}
- WRITE_OWNER = $00080000;
- {$EXTERNALSYM WRITE_OWNER}
- SYNCHRONIZE = $00100000;
- {$EXTERNALSYM SYNCHRONIZE}
- STANDARD_RIGHTS_REQUIRED = $000F0000;
- {$EXTERNALSYM STANDARD_RIGHTS_REQUIRED}
- STANDARD_RIGHTS_READ = READ_CONTROL;
- {$EXTERNALSYM STANDARD_RIGHTS_READ}
- STANDARD_RIGHTS_WRITE = READ_CONTROL;
- {$EXTERNALSYM STANDARD_RIGHTS_WRITE}
- STANDARD_RIGHTS_EXECUTE = READ_CONTROL;
- {$EXTERNALSYM STANDARD_RIGHTS_EXECUTE}
- STANDARD_RIGHTS_ALL = $001F0000;
- {$EXTERNALSYM STANDARD_RIGHTS_ALL}
- SPECIFIC_RIGHTS_ALL = $0000FFFF;
- {$EXTERNALSYM SPECIFIC_RIGHTS_ALL}
- //
- // AccessSystemAcl access type
- //
- ACCESS_SYSTEM_SECURITY = $01000000;
- {$EXTERNALSYM ACCESS_SYSTEM_SECURITY}
- //
- // MaximumAllowed access type
- //
- MAXIMUM_ALLOWED = $02000000;
- {$EXTERNALSYM MAXIMUM_ALLOWED}
- //
- // These are the generic rights.
- //
- GENERIC_READ = DWORD($80000000);
- {$EXTERNALSYM GENERIC_READ}
- GENERIC_WRITE = $40000000;
- {$EXTERNALSYM GENERIC_WRITE}
- GENERIC_EXECUTE = $20000000;
- {$EXTERNALSYM GENERIC_EXECUTE}
- GENERIC_ALL = $10000000;
- {$EXTERNALSYM GENERIC_ALL}
- //
- // Define the generic mapping array. This is used to denote the
- // mapping of each generic access right to a specific access mask.
- //
- type
- PGENERIC_MAPPING = ^GENERIC_MAPPING;
- {$EXTERNALSYM PGENERIC_MAPPING}
- _GENERIC_MAPPING = record
- GenericRead: ACCESS_MASK;
- GenericWrite: ACCESS_MASK;
- GenericExecute: ACCESS_MASK;
- GenericAll: ACCESS_MASK;
- end;
- {$EXTERNALSYM _GENERIC_MAPPING}
- GENERIC_MAPPING = _GENERIC_MAPPING;
- {$EXTERNALSYM GENERIC_MAPPING}
- TGenericMapping = GENERIC_MAPPING;
- PGenericMapping = PGENERIC_MAPPING;
- ////////////////////////////////////////////////////////////////////////
- // //
- // LUID_AND_ATTRIBUTES //
- // //
- ////////////////////////////////////////////////////////////////////////
- //
- //
- //#include <pshpack4.h>
- PLUID_AND_ATTRIBUTES = ^LUID_AND_ATTRIBUTES;
- {$EXTERNALSYM PLUID_AND_ATTRIBUTES}
- _LUID_AND_ATTRIBUTES = record
- Luid: LUID;
- Attributes: DWORD;
- end;
- {$EXTERNALSYM _LUID_AND_ATTRIBUTES}
- LUID_AND_ATTRIBUTES = _LUID_AND_ATTRIBUTES;
- {$EXTERNALSYM LUID_AND_ATTRIBUTES}
- TLuidAndAttributes = LUID_AND_ATTRIBUTES;
- PLuidAndAttributes = PLUID_AND_ATTRIBUTES;
- LUID_AND_ATTRIBUTES_ARRAY = array [0..ANYSIZE_ARRAY - 1] of LUID_AND_ATTRIBUTES;
- {$EXTERNALSYM LUID_AND_ATTRIBUTES_ARRAY}
- PLUID_AND_ATTRIBUTES_ARRAY = ^LUID_AND_ATTRIBUTES_ARRAY;
- {$EXTERNALSYM PLUID_AND_ATTRIBUTES_ARRAY}
- TLuidAndAttributesArray = LUID_AND_ATTRIBUTES_ARRAY;
- PLuidAndAttributesArray = ^TLuidAndAttributesArray;
- //#include <poppack.h>
- ////////////////////////////////////////////////////////////////////////
- // //
- // Security Id (SID) //
- // //
- ////////////////////////////////////////////////////////////////////////
- //
- //
- // Pictorially the structure of an SID is as follows:
- //
- // 1 1 1 1 1 1
- // 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
- // +---------------------------------------------------------------+
- // | SubAuthorityCount |Reserved1 (SBZ)| Revision |
- // +---------------------------------------------------------------+
- // | IdentifierAuthority[0] |
- // +---------------------------------------------------------------+
- // | IdentifierAuthority[1] |
- // +---------------------------------------------------------------+
- // | IdentifierAuthority[2] |
- // +---------------------------------------------------------------+
- // | |
- // +- - - - - - - - SubAuthority[] - - - - - - - - -+
- // | |
- // +---------------------------------------------------------------+
- //
- //
- type
- PSID_IDENTIFIER_AUTHORITY = ^SID_IDENTIFIER_AUTHORITY;
- {$EXTERNALSYM PSID_IDENTIFIER_AUTHORITY}
- _SID_IDENTIFIER_AUTHORITY = record
- Value: array [0..5] of Byte;
- end;
- {$EXTERNALSYM _SID_IDENTIFIER_AUTHORITY}
- SID_IDENTIFIER_AUTHORITY = _SID_IDENTIFIER_AUTHORITY;
- {$EXTERNALSYM SID_IDENTIFIER_AUTHORITY}
- TSidIdentifierAuthority = SID_IDENTIFIER_AUTHORITY;
- PSidIdentifierAuthority = PSID_IDENTIFIER_AUTHORITY;
- PSid = ^SID;
- _SID = record
- Revision: Byte;
- SubAuthorityCount: Byte;
- IdentifierAuthority: SID_IDENTIFIER_AUTHORITY;
- SubAuthority: array [0..ANYSIZE_ARRAY - 1] of DWORD;
- end;
- {$EXTERNALSYM _SID}
- SID = _SID;
- {$EXTERNALSYM SID}
- PPSID = ^PSID;
- {$NODEFINE PPSID}
- TSid = SID;
- const
- SID_REVISION = 1; // Current revision level
- {$EXTERNALSYM SID_REVISION}
- SID_MAX_SUB_AUTHORITIES = 15;
- {$EXTERNALSYM SID_MAX_SUB_AUTHORITIES}
- SID_RECOMMENDED_SUB_AUTHORITIES = 1; // Will change to around 6 in a future release.
- {$EXTERNALSYM SID_RECOMMENDED_SUB_AUTHORITIES}
- SECURITY_MAX_SID_SIZE = SizeOf(SID) - SizeOf(DWORD) + (SID_MAX_SUB_AUTHORITIES * SizeOf(DWORD));
- {$EXTERNALSYM SECURITY_MAX_SID_SIZE}
- SidTypeUser = 1;
- {$EXTERNALSYM SidTypeUser}
- SidTypeGroup = 2;
- {$EXTERNALSYM SidTypeGroup}
- SidTypeDomain = 3;
- {$EXTERNALSYM SidTypeDomain}
- SidTypeAlias = 4;
- {$EXTERNALSYM SidTypeAlias}
- SidTypeWellKnownGroup = 5;
- {$EXTERNALSYM SidTypeWellKnownGroup}
- SidTypeDeletedAccount = 6;
- {$EXTERNALSYM SidTypeDeletedAccount}
- SidTypeInvalid = 7;
- {$EXTERNALSYM SidTypeInvalid}
- SidTypeUnknown = 8;
- {$EXTERNALSYM SidTypeUnknown}
- SidTypeComputer = 9;
- {$EXTERNALSYM SidTypeComputer}
- type
- _SID_NAME_USE = DWORD;
- {$EXTERNALSYM _SID_NAME_USE}
- SID_NAME_USE = _SID_NAME_USE;
- {$EXTERNALSYM SID_NAME_USE}
- PSID_NAME_USE = ^SID_NAME_USE;
- {$EXTERNALSYM PSID_NAME_USE}
- TSidNameUse = SID_NAME_USE;
- PSidNameUSe = PSID_NAME_USE;
- PSID_AND_ATTRIBUTES = ^SID_AND_ATTRIBUTES;
- {$EXTERNALSYM PSID_AND_ATTRIBUTES}
- _SID_AND_ATTRIBUTES = record
- Sid: PSID;
- Attributes: DWORD;
- end;
- {$EXTERNALSYM _SID_AND_ATTRIBUTES}
- SID_AND_ATTRIBUTES = _SID_AND_ATTRIBUTES;
- {$EXTERNALSYM SID_AND_ATTRIBUTES}
- TSidAndAttributes = SID_AND_ATTRIBUTES;
- PSidAndAttributes = PSID_AND_ATTRIBUTES;
- SID_AND_ATTRIBUTES_ARRAY = array [0..ANYSIZE_ARRAY - 1] of SID_AND_ATTRIBUTES;
- {$EXTERNALSYM SID_AND_ATTRIBUTES_ARRAY}
- PSID_AND_ATTRIBUTES_ARRAY = ^SID_AND_ATTRIBUTES_ARRAY;
- {$EXTERNALSYM PSID_AND_ATTRIBUTES_ARRAY}
- PSidAndAttributesArray = ^TSidAndAttributesArray;
- TSidAndAttributesArray = SID_AND_ATTRIBUTES_ARRAY;
- /////////////////////////////////////////////////////////////////////////////
- // //
- // Universal well-known SIDs //
- // //
- // Null SID S-1-0-0 //
- // World S-1-1-0 //
- // Local S-1-2-0 //
- // Creator Owner ID S-1-3-0 //
- // Creator Group ID S-1-3-1 //
- // Creator Owner Server ID S-1-3-2 //
- // Creator Group Server ID S-1-3-3 //
- // //
- // (Non-unique IDs) S-1-4 //
- // //
- /////////////////////////////////////////////////////////////////////////////
- const
- SECURITY_NULL_SID_AUTHORITY: TSidIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 0));
- {$EXTERNALSYM SECURITY_NULL_SID_AUTHORITY}
- SECURITY_WORLD_SID_AUTHORITY: TSidIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 1));
- {$EXTERNALSYM SECURITY_WORLD_SID_AUTHORITY}
- SECURITY_LOCAL_SID_AUTHORITY: TSidIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 2));
- {$EXTERNALSYM SECURITY_LOCAL_SID_AUTHORITY}
- SECURITY_CREATOR_SID_AUTHORITY: TSidIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 3));
- {$EXTERNALSYM SECURITY_CREATOR_SID_AUTHORITY}
- SECURITY_NON_UNIQUE_AUTHORITY: TSidIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 4));
- {$EXTERNALSYM SECURITY_NON_UNIQUE_AUTHORITY}
- SECURITY_RESOURCE_MANAGER_AUTHORITY: TSidIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 9));
- {$EXTERNALSYM SECURITY_RESOURCE_MANAGER_AUTHORITY}
- SECURITY_NULL_RID = $00000000;
- {$EXTERNALSYM SECURITY_NULL_RID}
- SECURITY_WORLD_RID = $00000000;
- {$EXTERNALSYM SECURITY_WORLD_RID}
- SECURITY_LOCAL_RID = $00000000;
- {$EXTERNALSYM SECURITY_LOCAL_RID}
- SECURITY_CREATOR_OWNER_RID = $00000000;
- {$EXTERNALSYM SECURITY_CREATOR_OWNER_RID}
- SECURITY_CREATOR_GROUP_RID = $00000001;
- {$EXTERNALSYM SECURITY_CREATOR_GROUP_RID}
- SECURITY_CREATOR_OWNER_SERVER_RID = $00000002;
- {$EXTERNALSYM SECURITY_CREATOR_OWNER_SERVER_RID}
- SECURITY_CREATOR_GROUP_SERVER_RID = $00000003;
- {$EXTERNALSYM SECURITY_CREATOR_GROUP_SERVER_RID}
- /////////////////////////////////////////////////////////////////////////////
- // //
- // NT well-known SIDs //
- // //
- // NT Authority S-1-5 //
- // Dialup S-1-5-1 //
- // //
- // Network S-1-5-2 //
- // Batch S-1-5-3 //
- // Interactive S-1-5-4 //
- // (Logon IDs) S-1-5-5-X-Y //
- // Service S-1-5-6 //
- // AnonymousLogon S-1-5-7 (aka null logon session) //
- // Proxy S-1-5-8 //
- // Enterprise DC (EDC) S-1-5-9 (aka domain controller account) //
- // Self S-1-5-10 (self RID) //
- // Authenticated User S-1-5-11 (Authenticated user somewhere) //
- // Restricted Code S-1-5-12 (Running restricted code) //
- // Terminal Server S-1-5-13 (Running on Terminal Server) //
- // Remote Logon S-1-5-14 (Remote Interactive Logon) //
- // This Organization S-1-5-15 //
- // //
- // Local System S-1-5-18 //
- // Local Service S-1-5-19 //
- // Network Service S-1-5-20 //
- // //
- // (NT non-unique IDs) S-1-5-0x15-... (NT Domain Sids) //
- // //
- // (Built-in domain) S-1-5-0x20 //
- // //
- // (Security Package IDs) S-1-5-0x40 //
- // NTLM Authentication S-1-5-0x40-10 //
- // SChannel Authentication S-1-5-0x40-14 //
- // Digest Authentication S-1-5-0x40-21 //
- // //
- // Other Organization S-1-5-1000 (>=1000 can not be filtered) //
- // //
- // //
- // NOTE: the relative identifier values (RIDs) determine which security //
- // boundaries the SID is allowed to cross. Before adding new RIDs, //
- // a determination needs to be made regarding which range they should //
- // be added to in order to ensure proper "SID filtering" //
- // //
- ///////////////////////////////////////////////////////////////////////////////
- const
- SECURITY_NT_AUTHORITY: TSidIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 5));
- {$EXTERNALSYM SECURITY_NT_AUTHORITY}
- SECURITY_DIALUP_RID = $00000001;
- {$EXTERNALSYM SECURITY_DIALUP_RID}
- SECURITY_NETWORK_RID = $00000002;
- {$EXTERNALSYM SECURITY_NETWORK_RID}
- SECURITY_BATCH_RID = $00000003;
- {$EXTERNALSYM SECURITY_BATCH_RID}
- SECURITY_INTERACTIVE_RID = $00000004;
- {$EXTERNALSYM SECURITY_INTERACTIVE_RID}
- SECURITY_LOGON_IDS_RID = $00000005;
- {$EXTERNALSYM SECURITY_LOGON_IDS_RID}
- SECURITY_LOGON_IDS_RID_COUNT = 3;
- {$EXTERNALSYM SECURITY_LOGON_IDS_RID_COUNT}
- SECURITY_SERVICE_RID = $00000006;
- {$EXTERNALSYM SECURITY_SERVICE_RID}
- SECURITY_ANONYMOUS_LOGON_RID = $00000007;
- {$EXTERNALSYM SECURITY_ANONYMOUS_LOGON_RID}
- SECURITY_PROXY_RID = $00000008;
- {$EXTERNALSYM SECURITY_PROXY_RID}
- SECURITY_ENTERPRISE_CONTROLLERS_RID = $00000009;
- {$EXTERNALSYM SECURITY_ENTERPRISE_CONTROLLERS_RID}
- SECURITY_SERVER_LOGON_RID = SECURITY_ENTERPRISE_CONTROLLERS_RID;
- {$EXTERNALSYM SECURITY_SERVER_LOGON_RID}
- SECURITY_PRINCIPAL_SELF_RID = $0000000A;
- {$EXTERNALSYM SECURITY_PRINCIPAL_SELF_RID}
- SECURITY_AUTHENTICATED_USER_RID = $0000000B;
- {$EXTERNALSYM SECURITY_AUTHENTICATED_USER_RID}
- SECURITY_RESTRICTED_CODE_RID = $0000000C;
- {$EXTERNALSYM SECURITY_RESTRICTED_CODE_RID}
- SECURITY_TERMINAL_SERVER_RID = $0000000D;
- {$EXTERNALSYM SECURITY_TERMINAL_SERVER_RID}
- SECURITY_REMOTE_LOGON_RID = $0000000E;
- {$EXTERNALSYM SECURITY_REMOTE_LOGON_RID}
- SECURITY_THIS_ORGANIZATION_RID = $0000000F;
- {$EXTERNALSYM SECURITY_THIS_ORGANIZATION_RID}
- SECURITY_LOCAL_SYSTEM_RID = $00000012;
- {$EXTERNALSYM SECURITY_LOCAL_SYSTEM_RID}
- SECURITY_LOCAL_SERVICE_RID = $00000013;
- {$EXTERNALSYM SECURITY_LOCAL_SERVICE_RID}
- SECURITY_NETWORK_SERVICE_RID = $00000014;
- {$EXTERNALSYM SECURITY_NETWORK_SERVICE_RID}
- SECURITY_NT_NON_UNIQUE = $00000015;
- {$EXTERNALSYM SECURITY_NT_NON_UNIQUE}
- SECURITY_NT_NON_UNIQUE_SUB_AUTH_COUNT = 3;
- {$EXTERNALSYM SECURITY_NT_NON_UNIQUE_SUB_AUTH_COUNT}
- SECURITY_BUILTIN_DOMAIN_RID = $00000020;
- {$EXTERNALSYM SECURITY_BUILTIN_DOMAIN_RID}
- SECURITY_PACKAGE_BASE_RID = $00000040;
- {$EXTERNALSYM SECURITY_PACKAGE_BASE_RID}
- SECURITY_PACKAGE_RID_COUNT = 2;
- {$EXTERNALSYM SECURITY_PACKAGE_RID_COUNT}
- SECURITY_PACKAGE_NTLM_RID = $0000000A;
- {$EXTERNALSYM SECURITY_PACKAGE_NTLM_RID}
- SECURITY_PACKAGE_SCHANNEL_RID = $0000000E;
- {$EXTERNALSYM SECURITY_PACKAGE_SCHANNEL_RID}
- SECURITY_PACKAGE_DIGEST_RID = $00000015;
- {$EXTERNALSYM SECURITY_PACKAGE_DIGEST_RID}
- SECURITY_MAX_ALWAYS_FILTERED = $000003E7;
- {$EXTERNALSYM SECURITY_MAX_ALWAYS_FILTERED}
- SECURITY_MIN_NEVER_FILTERED = $000003E8;
- {$EXTERNALSYM SECURITY_MIN_NEVER_FILTERED}
- SECURITY_OTHER_ORGANIZATION_RID = $000003E8;
- {$EXTERNALSYM SECURITY_OTHER_ORGANIZATION_RID}
- /////////////////////////////////////////////////////////////////////////////
- // //
- // well-known domain relative sub-authority values (RIDs)... //
- // //
- /////////////////////////////////////////////////////////////////////////////
- // Well-known users ...
- FOREST_USER_RID_MAX = $000001F3;
- {$EXTERNALSYM FOREST_USER_RID_MAX}
- DOMAIN_USER_RID_ADMIN = $000001F4;
- {$EXTERNALSYM DOMAIN_USER_RID_ADMIN}
- DOMAIN_USER_RID_GUEST = $000001F5;
- {$EXTERNALSYM DOMAIN_USER_RID_GUEST}
- DOMAIN_USER_RID_KRBTGT = $000001F6;
- {$EXTERNALSYM DOMAIN_USER_RID_KRBTGT}
- DOMAIN_USER_RID_MAX = $000003E7;
- {$EXTERNALSYM DOMAIN_USER_RID_MAX}
- // well-known groups ...
- DOMAIN_GROUP_RID_ADMINS = $00000200;
- {$EXTERNALSYM DOMAIN_GROUP_RID_ADMINS}
- DOMAIN_GROUP_RID_USERS = $00000201;
- {$EXTERNALSYM DOMAIN_GROUP_RID_USERS}
- DOMAIN_GROUP_RID_GUESTS = $00000202;
- {$EXTERNALSYM DOMAIN_GROUP_RID_GUESTS}
- DOMAIN_GROUP_RID_COMPUTERS = $00000203;
- {$EXTERNALSYM DOMAIN_GROUP_RID_COMPUTERS}
- DOMAIN_GROUP_RID_CONTROLLERS = $00000204;
- {$EXTERNALSYM DOMAIN_GROUP_RID_CONTROLLERS}
- DOMAIN_GROUP_RID_CERT_ADMINS = $00000205;
- {$EXTERNALSYM DOMAIN_GROUP_RID_CERT_ADMINS}
- DOMAIN_GROUP_RID_SCHEMA_ADMINS = $00000206;
- {$EXTERNALSYM DOMAIN_GROUP_RID_SCHEMA_ADMINS}
- DOMAIN_GROUP_RID_ENTERPRISE_ADMINS = $00000207;
- {$EXTERNALSYM DOMAIN_GROUP_RID_ENTERPRISE_ADMINS}
- DOMAIN_GROUP_RID_POLICY_ADMINS = $00000208;
- {$EXTERNALSYM DOMAIN_GROUP_RID_POLICY_ADMINS}
- // well-known aliases ...
- DOMAIN_ALIAS_RID_ADMINS = $00000220;
- {$EXTERNALSYM DOMAIN_ALIAS_RID_ADMINS}
- DOMAIN_ALIAS_RID_USERS = $00000221;
- {$EXTERNALSYM DOMAIN_ALIAS_RID_USERS}
- DOMAIN_ALIAS_RID_GUESTS = $00000222;
- {$EXTERNALSYM DOMAIN_ALIAS_RID_GUESTS}
- DOMAIN_ALIAS_RID_POWER_USERS = $00000223;
- {$EXTERNALSYM DOMAIN_ALIAS_RID_POWER_USERS}
- DOMAIN_ALIAS_RID_ACCOUNT_OPS = $00000224;
- {$EXTERNALSYM DOMAIN_ALIAS_RID_ACCOUNT_OPS}
- DOMAIN_ALIAS_RID_SYSTEM_OPS = $00000225;
- {$EXTERNALSYM DOMAIN_ALIAS_RID_SYSTEM_OPS}
- DOMAIN_ALIAS_RID_PRINT_OPS = $00000226;
- {$EXTERNALSYM DOMAIN_ALIAS_RID_PRINT_OPS}
- DOMAIN_ALIAS_RID_BACKUP_OPS = $00000227;
- {$EXTERNALSYM DOMAIN_ALIAS_RID_BACKUP_OPS}
- DOMAIN_ALIAS_RID_REPLICATOR = $00000228;
- {$EXTERNALSYM DOMAIN_ALIAS_RID_REPLICATOR}
- DOMAIN_ALIAS_RID_RAS_SERVERS = $00000229;
- {$EXTERNALSYM DOMAIN_ALIAS_RID_RAS_SERVERS}
- DOMAIN_ALIAS_RID_PREW2KCOMPACCESS = $0000022A;
- {$EXTERNALSYM DOMAIN_ALIAS_RID_PREW2KCOMPACCESS}
- DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS = $0000022B;
- {$EXTERNALSYM DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS}
- DOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS = $0000022C;
- {$EXTERNALSYM DOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS}
- DOMAIN_ALIAS_RID_INCOMING_FOREST_TRUST_BUILDERS = $0000022D;
- {$EXTERNALSYM DOMAIN_ALIAS_RID_INCOMING_FOREST_TRUST_BUILDERS}
- DOMAIN_ALIAS_RID_MONITORING_USERS = $0000022E;
- {$EXTERNALSYM DOMAIN_ALIAS_RID_MONITORING_USERS}
- DOMAIN_ALIAS_RID_LOGGING_USERS = $0000022F;
- {$EXTERNALSYM DOMAIN_ALIAS_RID_LOGGING_USERS}
- DOMAIN_ALIAS_RID_AUTHORIZATIONACCESS = $00000230;
- {$EXTERNALSYM DOMAIN_ALIAS_RID_AUTHORIZATIONACCESS}
- DOMAIN_ALIAS_RID_TS_LICENSE_SERVERS = $00000231;
- {$EXTERNALSYM DOMAIN_ALIAS_RID_TS_LICENSE_SERVERS}
- type
- WELL_KNOWN_SID_TYPE = (
- WinNullSid,
- WinWorldSid,
- WinLocalSid,
- WinCreatorOwnerSid,
- WinCreatorGroupSid,
- WinCreatorOwnerServerSid,
- WinCreatorGroupServerSid,
- WinNtAuthoritySid,
- WinDialupSid,
- WinNetworkSid,
- WinBatchSid,
- WinInteractiveSid,
- WinServiceSid,
- WinAnonymousSid,
- WinProxySid,
- WinEnterpriseControllersSid,
- WinSelfSid,
- WinAuthenticatedUserSid,
- WinRestrictedCodeSid,
- WinTerminalServerSid,
- WinRemoteLogonIdSid,
- WinLogonIdsSid,
- WinLocalSystemSid,
- WinLocalServiceSid,
- WinNetworkServiceSid,
- WinBuiltinDomainSid,
- WinBuiltinAdministratorsSid,
- WinBuiltinUsersSid,
- WinBuiltinGuestsSid,
- WinBuiltinPowerUsersSid,
- WinBuiltinAccountOperatorsSid,
- WinBuiltinSystemOperatorsSid,
- WinBuiltinPrintOperatorsSid,
- WinBuiltinBackupOperatorsSid,
- WinBuiltinReplicatorSid,
- WinBuiltinPreWindows2000CompatibleAccessSid,
- WinBuiltinRemoteDesktopUsersSid,
- WinBuiltinNetworkConfigurationOperatorsSid,
- WinAccountAdministratorSid,
- WinAccountGuestSid,
- WinAccountKrbtgtSid,
- WinAccountDomainAdminsSid,
- WinAccountDomainUsersSid,
- WinAccountDomainGuestsSid,
- WinAccountComputersSid,
- WinAccountControllersSid,
- WinAccountCertAdminsSid,
- WinAccountSchemaAdminsSid,
- WinAccountEnterpriseAdminsSid,
- WinAccountPolicyAdminsSid,
- WinAccountRasAndIasServersSid,
- WinNTLMAuthenticationSid,
- WinDigestAuthenticationSid,
- WinSChannelAuthenticationSid,
- WinThisOrganizationSid,
- WinOtherOrganizationSid,
- WinBuiltinIncomingForestTrustBuildersSid,
- WinBuiltinPerfMonitoringUsersSid,
- WinBuiltinPerfLoggingUsersSid,
- WinBuiltinAuthorizationAccessSid,
- WinBuiltinTerminalServerLicenseServersSid);
- {$EXTERNALSYM WELL_KNOWN_SID_TYPE}
- TWellKnownSidType = WELL_KNOWN_SID_TYPE;
- //
- // Allocate the System Luid. The first 1000 LUIDs are reserved.
- // Use #999 here (0x3E7 = 999)
- //
- const
- SYSTEM_LUID: LUID = (LowPart: $3E7; HighPart: $0);
- {$EXTERNALSYM SYSTEM_LUID}
- ANONYMOUS_LOGON_LUID: LUID = (LowPart: $3E6; HighPart: $0);
- {$EXTERNALSYM ANONYMOUS_LOGON_LUID}
- LOCALSERVICE_LUID: LUID = (LowPart: $3E5; HighPart: $0);
- {$EXTERNALSYM LOCALSERVICE_LUID}
- NETWORKSERVICE_LUID: LUID = (LowPart: $3E4; HighPart: $0);
- {$EXTERNALSYM NETWORKSERVICE_LUID}
- ////////////////////////////////////////////////////////////////////////
- // //
- // User and Group related SID attributes //
- // //
- ////////////////////////////////////////////////////////////////////////
- //
- // Group attributes
- //
- SE_GROUP_MANDATORY = $00000001;
- {$EXTERNALSYM SE_GROUP_MANDATORY}
- SE_GROUP_ENABLED_BY_DEFAULT = $00000002;
- {$EXTERNALSYM SE_GROUP_ENABLED_BY_DEFAULT}
- SE_GROUP_ENABLED = $00000004;
- {$EXTERNALSYM SE_GROUP_ENABLED}
- SE_GROUP_OWNER = $00000008;
- {$EXTERNALSYM SE_GROUP_OWNER}
- SE_GROUP_USE_FOR_DENY_ONLY = $00000010;
- {$EXTERNALSYM SE_GROUP_USE_FOR_DENY_ONLY}
- SE_GROUP_LOGON_ID = $C0000000;
- {$EXTERNALSYM SE_GROUP_LOGON_ID}
- SE_GROUP_RESOURCE = $20000000;
- {$EXTERNALSYM SE_GROUP_RESOURCE}
- //
- // User attributes
- //
- // (None yet defined.)
- ////////////////////////////////////////////////////////////////////////
- // //
- // ACL and ACE //
- // //
- ////////////////////////////////////////////////////////////////////////
- //
- // Define an ACL and the ACE format. The structure of an ACL header
- // followed by one or more ACEs. Pictorally the structure of an ACL header
- // is as follows:
- //
- // 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
- // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
- // +-------------------------------+---------------+---------------+
- // | AclSize | Sbz1 | AclRevision |
- // +-------------------------------+---------------+---------------+
- // | Sbz2 | AceCount |
- // +-------------------------------+-------------------------------+
- //
- // The current AclRevision is defined to be ACL_REVISION.
- //
- // AclSize is the size, in bytes, allocated for the ACL. This includes
- // the ACL header, ACES, and remaining free space in the buffer.
- //
- // AceCount is the number of ACES in the ACL.
- //
- // This is the *current* ACL revision
- ACL_REVISION = 2;
- {$EXTERNALSYM ACL_REVISION}
- ACL_REVISION_DS = 4;
- {$EXTERNALSYM ACL_REVISION_DS}
- // This is the history of ACL revisions. Add a new one whenever
- // ACL_REVISION is updated
- ACL_REVISION1 = 1;
- {$EXTERNALSYM ACL_REVISION1}
- ACL_REVISION2 = 2;
- {$EXTERNALSYM ACL_REVISION2}
- MIN_ACL_REVISION = ACL_REVISION2;
- {$EXTERNALSYM MIN_ACL_REVISION}
- ACL_REVISION3 = 3;
- {$EXTERNALSYM ACL_REVISION3}
- ACL_REVISION4 = 4;
- {$EXTERNALSYM ACL_REVISION4}
- MAX_ACL_REVISION = ACL_REVISION4;
- {$EXTERNALSYM MAX_ACL_REVISION}
- type
- PACL = ^ACL;
- {$EXTERNALSYM PACL}
- _ACL = record
- AclRevision: Byte;
- Sbz1: Byte;
- AclSize: Word;
- AceCount: Word;
- Sbz2: Word;
- end;
- {$EXTERNALSYM _ACL}
- ACL = _ACL;
- {$EXTERNALSYM ACL}
- TAcl = ACL;
- PPACL = ^PAcl;
- {$NODEFINE PPACL}
- //
- // The structure of an ACE is a common ace header followed by ace type
- // specific data. Pictorally the structure of the common ace header is
- // as follows:
- //
- // 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
- // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
- // +---------------+-------+-------+---------------+---------------+
- // | AceSize | AceFlags | AceType |
- // +---------------+-------+-------+---------------+---------------+
- //
- // AceType denotes the type of the ace, there are some predefined ace
- // types
- //
- // AceSize is the size, in bytes, of ace.
- //
- // AceFlags are the Ace flags for audit and inheritance, defined shortly.
- type
- PACE_HEADER = ^ACE_HEADER;
- {$EXTERNALSYM PACE_HEADER}
- _ACE_HEADER = record
- AceType: Byte;
- AceFlags: Byte;
- AceSize: Word;
- end;
- {$EXTERNALSYM _ACE_HEADER}
- ACE_HEADER = _ACE_HEADER;
- {$EXTERNALSYM ACE_HEADER}
- TAceHeader = ACE_HEADER;
- PAceHeader = PACE_HEADER;
- //
- // The following are the predefined ace types that go into the AceType
- // field of an Ace header.
- //
- const
- ACCESS_MIN_MS_ACE_TYPE = $0;
- {$EXTERNALSYM ACCESS_MIN_MS_ACE_TYPE}
- ACCESS_ALLOWED_ACE_TYPE = $0;
- {$EXTERNALSYM ACCESS_ALLOWED_ACE_TYPE}
- ACCESS_DENIED_ACE_TYPE = $1;
- {$EXTERNALSYM ACCESS_DENIED_ACE_TYPE}
- SYSTEM_AUDIT_ACE_TYPE = $2;
- {$EXTERNALSYM SYSTEM_AUDIT_ACE_TYPE}
- SYSTEM_ALARM_ACE_TYPE = $3;
- {$EXTERNALSYM SYSTEM_ALARM_ACE_TYPE}
- ACCESS_MAX_MS_V2_ACE_TYPE = $3;
- {$EXTERNALSYM ACCESS_MAX_MS_V2_ACE_TYPE}
- ACCESS_ALLOWED_COMPOUND_ACE_TYPE = $4;
- {$EXTERNALSYM ACCESS_ALLOWED_COMPOUND_ACE_TYPE}
- ACCESS_MAX_MS_V3_ACE_TYPE = $4;
- {$EXTERNALSYM ACCESS_MAX_MS_V3_ACE_TYPE}
- ACCESS_MIN_MS_OBJECT_ACE_TYPE = $5;
- {$EXTERNALSYM ACCESS_MIN_MS_OBJECT_ACE_TYPE}
- ACCESS_ALLOWED_OBJECT_ACE_TYPE = $5;
- {$EXTERNALSYM ACCESS_ALLOWED_OBJECT_ACE_TYPE}
- ACCESS_DENIED_OBJECT_ACE_TYPE = $6;
- {$EXTERNALSYM ACCESS_DENIED_OBJECT_ACE_TYPE}
- SYSTEM_AUDIT_OBJECT_ACE_TYPE = $7;
- {$EXTERNALSYM SYSTEM_AUDIT_OBJECT_ACE_TYPE}
- SYSTEM_ALARM_OBJECT_ACE_TYPE = $8;
- {$EXTERNALSYM SYSTEM_ALARM_OBJECT_ACE_TYPE}
- ACCESS_MAX_MS_OBJECT_ACE_TYPE = $8;
- {$EXTERNALSYM ACCESS_MAX_MS_OBJECT_ACE_TYPE}
- ACCESS_MAX_MS_V4_ACE_TYPE = $8;
- {$EXTERNALSYM ACCESS_MAX_MS_V4_ACE_TYPE}
- ACCESS_MAX_MS_ACE_TYPE = $8;
- {$EXTERNALSYM ACCESS_MAX_MS_ACE_TYPE}
- ACCESS_ALLOWED_CALLBACK_ACE_TYPE = $9;
- {$EXTERNALSYM ACCESS_ALLOWED_CALLBACK_ACE_TYPE}
- ACCESS_DENIED_CALLBACK_ACE_TYPE = $A;
- {$EXTERNALSYM ACCESS_DENIED_CALLBACK_ACE_TYPE}
- ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_TYPE = $B;
- {$EXTERNALSYM ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_TYPE}
- ACCESS_DENIED_CALLBACK_OBJECT_ACE_TYPE = $C;
- {$EXTERNALSYM ACCESS_DENIED_CALLBACK_OBJECT_ACE_TYPE}
- SYSTEM_AUDIT_CALLBACK_ACE_TYPE = $D;
- {$EXTERNALSYM SYSTEM_AUDIT_CALLBACK_ACE_TYPE}
- SYSTEM_ALARM_CALLBACK_ACE_TYPE = $E;
- {$EXTERNALSYM SYSTEM_ALARM_CALLBACK_ACE_TYPE}
- SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_TYPE = $F;
- {$EXTERNALSYM SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_TYPE}
- SYSTEM_ALARM_CALLBACK_OBJECT_ACE_TYPE = $10;
- {$EXTERNALSYM SYSTEM_ALARM_CALLBACK_OBJECT_ACE_TYPE}
- ACCESS_MAX_MS_V5_ACE_TYPE = $10;
- {$EXTERNALSYM ACCESS_MAX_MS_V5_ACE_TYPE}
- //
- // The following are the inherit flags that go into the AceFlags field
- // of an Ace header.
- //
- OBJECT_INHERIT_ACE = $1;
- {$EXTERNALSYM OBJECT_INHERIT_ACE}
- CONTAINER_INHERIT_ACE = $2;
- {$EXTERNALSYM CONTAINER_INHERIT_ACE}
- NO_PROPAGATE_INHERIT_ACE = $4;
- {$EXTERNALSYM NO_PROPAGATE_INHERIT_ACE}
- INHERIT_ONLY_ACE = $8;
- {$EXTERNALSYM INHERIT_ONLY_ACE}
- INHERITED_ACE = $10;
- {$EXTERNALSYM INHERITED_ACE}
- VALID_INHERIT_FLAGS = $1F;
- {$EXTERNALSYM VALID_INHERIT_FLAGS}
- // The following are the currently defined ACE flags that go into the
- // AceFlags field of an ACE header. Each ACE type has its own set of
- // AceFlags.
- //
- // SUCCESSFUL_ACCESS_ACE_FLAG - used only with system audit and alarm ACE
- // types to indicate that a message is generated for successful accesses.
- //
- // FAILED_ACCESS_ACE_FLAG - used only with system audit and alarm ACE types
- // to indicate that a message is generated for failed accesses.
- //
- //
- // SYSTEM_AUDIT and SYSTEM_ALARM AceFlags
- //
- // These control the signaling of audit and alarms for success or failure.
- //
- SUCCESSFUL_ACCESS_ACE_FLAG = $40;
- {$EXTERNALSYM SUCCESSFUL_ACCESS_ACE_FLAG}
- FAILED_ACCESS_ACE_FLAG = $80;
- {$EXTERNALSYM FAILED_ACCESS_ACE_FLAG}
- //
- // We'll define the structure of the predefined ACE types. Pictorally
- // the structure of the predefined ACE's is as follows:
- //
- // 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
- // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
- // +---------------+-------+-------+---------------+---------------+
- // | AceFlags | Resd |Inherit| AceSize | AceType |
- // +---------------+-------+-------+---------------+---------------+
- // | Mask |
- // +---------------------------------------------------------------+
- // | |
- // + +
- // | |
- // + Sid +
- // | |
- // + +
- // | |
- // +---------------------------------------------------------------+
- //
- // Mask is the access mask associated with the ACE. This is either the
- // access allowed, access denied, audit, or alarm mask.
- //
- // Sid is the Sid associated with the ACE.
- //
- // The following are the four predefined ACE types.
- // Examine the AceType field in the Header to determine
- // which structure is appropriate to use for casting.
- type
- PACCESS_ALLOWED_ACE = ^ACCESS_ALLOWED_ACE;
- {$EXTERNALSYM PACCESS_ALLOWED_ACE}
- _ACCESS_ALLOWED_ACE = record
- Header: ACE_HEADER;
- Mask: ACCESS_MASK;
- SidStart: DWORD;
- end;
- {$EXTERNALSYM _ACCESS_ALLOWED_ACE}
- ACCESS_ALLOWED_ACE = _ACCESS_ALLOWED_ACE;
- {$EXTERNALSYM ACCESS_ALLOWED_ACE}
- TAccessAllowedAce = ACCESS_ALLOWED_ACE;
- PAccessAllowedAce = PACCESS_ALLOWED_ACE;
- PACCESS_DENIED_ACE = ^ACCESS_DENIED_ACE;
- {$EXTERNALSYM PACCESS_DENIED_ACE}
- _ACCESS_DENIED_ACE = record
- Header: ACE_HEADER;
- Mask: ACCESS_MASK;
- SidStart: DWORD;
- end;
- {$EXTERNALSYM _ACCESS_DENIED_ACE}
- ACCESS_DENIED_ACE = _ACCESS_DENIED_ACE;
- {$EXTERNALSYM ACCESS_DENIED_ACE}
- TAccessDeniedAce = ACCESS_DENIED_ACE;
- PAccessDeniedAce = PACCESS_DENIED_ACE;
- PSYSTEM_AUDIT_ACE = ^SYSTEM_AUDIT_ACE;
- {$EXTERNALSYM PSYSTEM_AUDIT_ACE}
- _SYSTEM_AUDIT_ACE = record
- Header: ACE_HEADER;
- Mask: ACCESS_MASK;
- SidStart: DWORD;
- end;
- {$EXTERNALSYM _SYSTEM_AUDIT_ACE}
- SYSTEM_AUDIT_ACE = _SYSTEM_AUDIT_ACE;
- {$EXTERNALSYM SYSTEM_AUDIT_ACE}
- TSystemAuditAce = SYSTEM_AUDIT_ACE;
- PSystemAuditAce = PSYSTEM_AUDIT_ACE;
- PSYSTEM_ALARM_ACE = ^SYSTEM_ALARM_ACE;
- {$EXTERNALSYM PSYSTEM_ALARM_ACE}
- _SYSTEM_ALARM_ACE = record
- Header: ACE_HEADER;
- Mask: ACCESS_MASK;
- SidStart: DWORD;
- end;
- {$EXTERNALSYM _SYSTEM_ALARM_ACE}
- SYSTEM_ALARM_ACE = _SYSTEM_ALARM_ACE;
- {$EXTERNALSYM SYSTEM_ALARM_ACE}
- TSystemAlarmAce = SYSTEM_ALARM_ACE;
- PSystemAlarmAce = PSYSTEM_ALARM_ACE;
- PACCESS_ALLOWED_OBJECT_ACE = ^ACCESS_ALLOWED_OBJECT_ACE;
- {$EXTERNALSYM PACCESS_ALLOWED_OBJECT_ACE}
- _ACCESS_ALLOWED_OBJECT_ACE = record
- Header: ACE_HEADER;
- Mask: ACCESS_MASK;
- Flags: DWORD;
- ObjectType: GUID;
- InheritedObjectType: GUID;
- SidStart: DWORD;
- end;
- {$EXTERNALSYM _ACCESS_ALLOWED_OBJECT_ACE}
- ACCESS_ALLOWED_OBJECT_ACE = _ACCESS_ALLOWED_OBJECT_ACE;
- {$EXTERNALSYM ACCESS_ALLOWED_OBJECT_ACE}
- TAccessAllowedObjectAce = ACCESS_ALLOWED_OBJECT_ACE;
- PAccessAllowedObjectAce = PACCESS_ALLOWED_OBJECT_ACE;
- PACCESS_DENIED_OBJECT_ACE = ^ACCESS_DENIED_OBJECT_ACE;
- {$EXTERNALSYM PACCESS_DENIED_OBJECT_ACE}
- _ACCESS_DENIED_OBJECT_ACE = record
- Header: ACE_HEADER;
- Mask: ACCESS_MASK;
- Flags: DWORD;
- ObjectType: GUID;
- InheritedObjectType: GUID;
- SidStart: DWORD;
- end;
- {$EXTERNALSYM _ACCESS_DENIED_OBJECT_ACE}
- ACCESS_DENIED_OBJECT_ACE = _ACCESS_DENIED_OBJECT_ACE;
- {$EXTERNALSYM ACCESS_DENIED_OBJECT_ACE}
- TAccessDeniedObjectAce = ACCESS_DENIED_OBJECT_ACE;
- PAccessDeniedObjectAce = PACCESS_DENIED_OBJECT_ACE;
- PSYSTEM_AUDIT_OBJECT_ACE = ^SYSTEM_AUDIT_OBJECT_ACE;
- {$EXTERNALSYM PSYSTEM_AUDIT_OBJECT_ACE}
- _SYSTEM_AUDIT_OBJECT_ACE = record
- Header: ACE_HEADER;
- Mask: ACCESS_MASK;
- Flags: DWORD;
- ObjectType: GUID;
- InheritedObjectType: GUID;
- SidStart: DWORD;
- end;
- {$EXTERNALSYM _SYSTEM_AUDIT_OBJECT_ACE}
- SYSTEM_AUDIT_OBJECT_ACE = _SYSTEM_AUDIT_OBJECT_ACE;
- {$EXTERNALSYM SYSTEM_AUDIT_OBJECT_ACE}
- TSystemAuditObjectAce = SYSTEM_AUDIT_OBJECT_ACE;
- PSystemAuditObjectAce = PSYSTEM_AUDIT_OBJECT_ACE;
- PSYSTEM_ALARM_OBJECT_ACE = ^SYSTEM_ALARM_OBJECT_ACE;
- {$EXTERNALSYM PSYSTEM_ALARM_OBJECT_ACE}
- _SYSTEM_ALARM_OBJECT_ACE = record
- Header: ACE_HEADER;
- Mask: ACCESS_MASK;
- Flags: DWORD;
- ObjectType: GUID;
- InheritedObjectType: GUID;
- SidStart: DWORD;
- end;
- {$EXTERNALSYM _SYSTEM_ALARM_OBJECT_ACE}
- SYSTEM_ALARM_OBJECT_ACE = _SYSTEM_ALARM_OBJECT_ACE;
- {$EXTERNALSYM SYSTEM_ALARM_OBJECT_ACE}
- TSystemAlarmObjectAce = SYSTEM_ALARM_OBJECT_ACE;
- PSystemAlarmObjectAce = PSYSTEM_ALARM_OBJECT_ACE;
- //
- // Callback ace support in post Win2000.
- // Resource managers can put their own data after Sidstart + Length of the sid
- //
- _ACCESS_ALLOWED_CALLBACK_ACE = record
- Header: ACE_HEADER;
- Mask: ACCESS_MASK;
- SidStart: DWORD;
- // Opaque resouce manager specific data
- end;
- {$EXTERNALSYM _ACCESS_ALLOWED_CALLBACK_ACE}
- ACCESS_ALLOWED_CALLBACK_ACE = _ACCESS_ALLOWED_CALLBACK_ACE;
- {$EXTERNALSYM ACCESS_ALLOWED_CALLBACK_ACE}
- PACCESS_ALLOWED_CALLBACK_ACE = ^ACCESS_ALLOWED_CALLBACK_ACE;
- {$EXTERNALSYM PACCESS_ALLOWED_CALLBACK_ACE}
- TAccessAllowedCallBackAce = ACCESS_ALLOWED_CALLBACK_ACE;
- PAccessAllowedCallBackAce = PACCESS_ALLOWED_CALLBACK_ACE;
- _ACCESS_DENIED_CALLBACK_ACE = record
- Header: ACE_HEADER;
- Mask: ACCESS_MASK;
- SidStart: DWORD;
- // Opaque resouce manager specific data
- end;
- {$EXTERNALSYM _ACCESS_DENIED_CALLBACK_ACE}
- ACCESS_DENIED_CALLBACK_ACE = _ACCESS_DENIED_CALLBACK_ACE;
- {$EXTERNALSYM ACCESS_DENIED_CALLBACK_ACE}
- PACCESS_DENIED_CALLBACK_ACE = ^ACCESS_DENIED_CALLBACK_ACE;
- {$EXTERNALSYM PACCESS_DENIED_CALLBACK_ACE}
- TAccessDeniedCallBackAce = ACCESS_DENIED_CALLBACK_ACE;
- PAccessDeniedCallBackAce = PACCESS_DENIED_CALLBACK_ACE;
- _SYSTEM_AUDIT_CALLBACK_ACE = record
- Header: ACE_HEADER;
- Mask: ACCESS_MASK;
- SidStart: DWORD;
- // Opaque resouce manager specific data
- end;
- {$EXTERNALSYM _SYSTEM_AUDIT_CALLBACK_ACE}
- SYSTEM_AUDIT_CALLBACK_ACE = _SYSTEM_AUDIT_CALLBACK_ACE;
- {$EXTERNALSYM SYSTEM_AUDIT_CALLBACK_ACE}
- PSYSTEM_AUDIT_CALLBACK_ACE = ^SYSTEM_AUDIT_CALLBACK_ACE;
- {$EXTERNALSYM PSYSTEM_AUDIT_CALLBACK_ACE}
- TSystemAuditCallBackAce = SYSTEM_AUDIT_CALLBACK_ACE;
- PSystemAuditCallBackAce = PSYSTEM_AUDIT_CALLBACK_ACE;
- _SYSTEM_ALARM_CALLBACK_ACE = record
- Header: ACE_HEADER;
- Mask: ACCESS_MASK;
- SidStart: DWORD;
- // Opaque resouce manager specific data
- end;
- {$EXTERNALSYM _SYSTEM_ALARM_CALLBACK_ACE}
- SYSTEM_ALARM_CALLBACK_ACE = _SYSTEM_ALARM_CALLBACK_ACE;
- {$EXTERNALSYM SYSTEM_ALARM_CALLBACK_ACE}
- PSYSTEM_ALARM_CALLBACK_ACE = ^SYSTEM_ALARM_CALLBACK_ACE;
- {$EXTERNALSYM PSYSTEM_ALARM_CALLBACK_ACE}
- TSystemAlarmCallBackAce = SYSTEM_ALARM_CALLBACK_ACE;
- PSystemAlarmCallBackAce = PSYSTEM_ALARM_CALLBACK_ACE;
- _ACCESS_ALLOWED_CALLBACK_OBJECT_ACE = record
- Header: ACE_HEADER;
- Mask: ACCESS_MASK;
- Flags: DWORD;
- ObjectType: GUID;
- InheritedObjectType: GUID;
- SidStart: DWORD;
- // Opaque resouce manager specific data
- end;
- {$EXTERNALSYM _ACCESS_ALLOWED_CALLBACK_OBJECT_ACE}
- ACCESS_ALLOWED_CALLBACK_OBJECT_ACE = _ACCESS_ALLOWED_CALLBACK_OBJECT_ACE;
- {$EXTERNALSYM ACCESS_ALLOWED_CALLBACK_OBJECT_ACE}
- PACCESS_ALLOWED_CALLBACK_OBJECT_ACE = ^ACCESS_ALLOWED_CALLBACK_OBJECT_ACE;
- {$EXTERNALSYM PACCESS_ALLOWED_CALLBACK_OBJECT_ACE}
- TAccessAllowedCallBackObjectAce = ACCESS_ALLOWED_CALLBACK_OBJECT_ACE;
- PAccessAllowedCallBackObjectAce = PACCESS_ALLOWED_CALLBACK_OBJECT_ACE;
- _ACCESS_DENIED_CALLBACK_OBJECT_ACE = record
- Header: ACE_HEADER;
- Mask: ACCESS_MASK;
- Flags: DWORD;
- ObjectType: GUID;
- InheritedObjectType: GUID;
- SidStart: DWORD;
- // Opaque resouce manager specific data
- end;
- {$EXTERNALSYM _ACCESS_DENIED_CALLBACK_OBJECT_ACE}
- ACCESS_DENIED_CALLBACK_OBJECT_ACE = _ACCESS_DENIED_CALLBACK_OBJECT_ACE;
- {$EXTERNALSYM ACCESS_DENIED_CALLBACK_OBJECT_ACE}
- PACCESS_DENIED_CALLBACK_OBJECT_ACE = ^ACCESS_DENIED_CALLBACK_OBJECT_ACE;
- {$EXTERNALSYM PACCESS_DENIED_CALLBACK_OBJECT_ACE}
- TAccessDeniedCallBackObjectAce = ACCESS_DENIED_CALLBACK_OBJECT_ACE;
- PAccessDeniedCallBackObjectAce = PACCESS_DENIED_CALLBACK_OBJECT_ACE;
- _SYSTEM_AUDIT_CALLBACK_OBJECT_ACE = record
- Header: ACE_HEADER;
- Mask: ACCESS_MASK;
- Flags: DWORD;
- ObjectType: GUID;
- InheritedObjectType: GUID;
- SidStart: DWORD;
- // Opaque resouce manager specific data
- end;
- {$EXTERNALSYM _SYSTEM_AUDIT_CALLBACK_OBJECT_ACE}
- SYSTEM_AUDIT_CALLBACK_OBJECT_ACE = _SYSTEM_AUDIT_CALLBACK_OBJECT_ACE;
- {$EXTERNALSYM SYSTEM_AUDIT_CALLBACK_OBJECT_ACE}
- PSYSTEM_AUDIT_CALLBACK_OBJECT_ACE = ^SYSTEM_AUDIT_CALLBACK_OBJECT_ACE;
- {$EXTERNALSYM PSYSTEM_AUDIT_CALLBACK_OBJECT_ACE}
- TSystemAuditCallBackObjectAce = SYSTEM_AUDIT_CALLBACK_OBJECT_ACE;
- PSystemAuditCallBackObjectAce = PSYSTEM_AUDIT_CALLBACK_OBJECT_ACE;
- _SYSTEM_ALARM_CALLBACK_OBJECT_ACE = record
- Header: ACE_HEADER;
- Mask: ACCESS_MASK;
- Flags: DWORD;
- ObjectType: GUID;
- InheritedObjectType: GUID;
- SidStart: DWORD;
- // Opaque resouce manager specific data
- end;
- {$EXTERNALSYM _SYSTEM_ALARM_CALLBACK_OBJECT_ACE}
- SYSTEM_ALARM_CALLBACK_OBJECT_ACE = _SYSTEM_ALARM_CALLBACK_OBJECT_ACE;
- {$EXTERNALSYM SYSTEM_ALARM_CALLBACK_OBJECT_ACE}
- PSYSTEM_ALARM_CALLBACK_OBJECT_ACE = ^SYSTEM_ALARM_CALLBACK_OBJECT_ACE;
- {$EXTERNALSYM PSYSTEM_ALARM_CALLBACK_OBJECT_ACE}
- TSystemAlarmCallBackObjectAce = SYSTEM_ALARM_CALLBACK_OBJECT_ACE;
- PSystemAlarmCallBackObjectAce = PSYSTEM_ALARM_CALLBACK_OBJECT_ACE;
- //
- // Currently define Flags for "OBJECT" ACE types.
- //
- const
- ACE_OBJECT_TYPE_PRESENT = $1;
- {$EXTERNALSYM ACE_OBJECT_TYPE_PRESENT}
- ACE_INHERITED_OBJECT_TYPE_PRESENT = $2;
- {$EXTERNALSYM ACE_INHERITED_OBJECT_TYPE_PRESENT}
- //
- // The following declarations are used for setting and querying information
- // about and ACL. First are the various information classes available to
- // the user.
- //
- AclRevisionInformation = 1;
- {$EXTERNALSYM AclRevisionInformation}
- AclSizeInformation = 2;
- {$EXTERNALSYM AclSizeInformation}
- type
- _ACL_INFORMATION_CLASS = DWORD;
- {$EXTERNALSYM _ACL_INFORMATION_CLASS}
- ACL_INFORMATION_CLASS = _ACL_INFORMATION_CLASS;
- {$EXTERNALSYM ACL_INFORMATION_CLASS}
- TAclInformationClass = ACL_INFORMATION_CLASS;
- //
- // This record is returned/sent if the user is requesting/setting the
- // AclRevisionInformation
- //
- PACL_REVISION_INFORMATION = ^ACL_REVISION_INFORMATION;
- {$EXTERNALSYM PACL_REVISION_INFORMATION}
- _ACL_REVISION_INFORMATION = record
- AclRevision: DWORD;
- end;
- {$EXTERNALSYM _ACL_REVISION_INFORMATION}
- ACL_REVISION_INFORMATION = _ACL_REVISION_INFORMATION;
- {$EXTERNALSYM ACL_REVISION_INFORMATION}
- TAclRevisionInformation = ACL_REVISION_INFORMATION;
- PAclRevisionInformation = PACL_REVISION_INFORMATION;
- //
- // This record is returned if the user is requesting AclSizeInformation
- //
- PACL_SIZE_INFORMATION = ^ACL_SIZE_INFORMATION;
- {$EXTERNALSYM PACL_SIZE_INFORMATION}
- _ACL_SIZE_INFORMATION = record
- AceCount: DWORD;
- AclBytesInUse: DWORD;
- AclBytesFree: DWORD;
- end;
- {$EXTERNALSYM _ACL_SIZE_INFORMATION}
- ACL_SIZE_INFORMATION = _ACL_SIZE_INFORMATION;
- {$EXTERNALSYM ACL_SIZE_INFORMATION}
- TAclSizeInformation = ACL_SIZE_INFORMATION;
- PAclSizeInformation = PACL_SIZE_INFORMATION;
- ////////////////////////////////////////////////////////////////////////
- // //
- // SECURITY_DESCRIPTOR //
- // //
- ////////////////////////////////////////////////////////////////////////
- //
- // Define the Security Descriptor and related data types.
- // This is an opaque data structure.
- //
- //
- // Current security descriptor revision value
- //
- const
- SECURITY_DESCRIPTOR_REVISION = 1;
- {$EXTERNALSYM SECURITY_DESCRIPTOR_REVISION}
- SECURITY_DESCRIPTOR_REVISION1 = 1;
- {$EXTERNALSYM SECURITY_DESCRIPTOR_REVISION1}
- type
- SECURITY_DESCRIPTOR_CONTROL = WORD;
- {$EXTERNALSYM SECURITY_DESCRIPTOR_CONTROL}
- PSECURITY_DESCRIPTOR_CONTROL = ^SECURITY_DESCRIPTOR_CONTROL;
- {$EXTERNALSYM PSECURITY_DESCRIPTOR_CONTROL}
- TSecurityDescriptorControl = SECURITY_DESCRIPTOR_CONTROL;
- PSecurityDescriptorControl = PSECURITY_DESCRIPTOR_CONTROL;
- const
- SE_OWNER_DEFAULTED = $0001;
- {$EXTERNALSYM SE_OWNER_DEFAULTED}
- SE_GROUP_DEFAULTED = $0002;
- {$EXTERNALSYM SE_GROUP_DEFAULTED}
- SE_DACL_PRESENT = $0004;
- {$EXTERNALSYM SE_DACL_PRESENT}
- SE_DACL_DEFAULTED = $0008;
- {$EXTERNALSYM SE_DACL_DEFAULTED}
- SE_SACL_PRESENT = $0010;
- {$EXTERNALSYM SE_SACL_PRESENT}
- SE_SACL_DEFAULTED = $0020;
- {$EXTERNALSYM SE_SACL_DEFAULTED}
- SE_DACL_AUTO_INHERIT_REQ = $0100;
- {$EXTERNALSYM SE_DACL_AUTO_INHERIT_REQ}
- SE_SACL_AUTO_INHERIT_REQ = $0200;
- {$EXTERNALSYM SE_SACL_AUTO_INHERIT_REQ}
- SE_DACL_AUTO_INHERITED = $0400;
- {$EXTERNALSYM SE_DACL_AUTO_INHERITED}
- SE_SACL_AUTO_INHERITED = $0800;
- {$EXTERNALSYM SE_SACL_AUTO_INHERITED}
- SE_DACL_PROTECTED = $1000;
- {$EXTERNALSYM SE_DACL_PROTECTED}
- SE_SACL_PROTECTED = $2000;
- {$EXTERNALSYM SE_SACL_PROTECTED}
- SE_RM_CONTROL_VALID = $4000;
- {$EXTERNALSYM SE_RM_CONTROL_VALID}
- SE_SELF_RELATIVE = $8000;
- {$EXTERNALSYM SE_SELF_RELATIVE}
- //
- // Where:
- //
- // SE_OWNER_DEFAULTED - This boolean flag, when set, indicates that the
- // SID pointed to by the Owner field was provided by a
- // defaulting mechanism rather than explicitly provided by the
- // original provider of the security descriptor. This may
- // affect the treatment of the SID with respect to inheritence
- // of an owner.
- //
- // SE_GROUP_DEFAULTED - This boolean flag, when set, indicates that the
- // SID in the Group field was provided by a defaulting mechanism
- // rather than explicitly provided by the original provider of
- // the security descriptor. This may affect the treatment of
- // the SID with respect to inheritence of a primary group.
- //
- // SE_DACL_PRESENT - This boolean flag, when set, indicates that the
- // security descriptor contains a discretionary ACL. If this
- // flag is set and the Dacl field of the SECURITY_DESCRIPTOR is
- // null, then a null ACL is explicitly being specified.
- //
- // SE_DACL_DEFAULTED - This boolean flag, when set, indicates that the
- // ACL pointed to by the Dacl field was provided by a defaulting
- // mechanism rather than explicitly provided by the original
- // provider of the security descriptor. This may affect the
- // treatment of the ACL with respect to inheritence of an ACL.
- // This flag is ignored if the DaclPresent flag is not set.
- //
- // SE_SACL_PRESENT - This boolean flag, when set, indicates that the
- // security descriptor contains a system ACL pointed to by the
- // Sacl field. If this flag is set and the Sacl field of the
- // SECURITY_DESCRIPTOR is null, then an empty (but present)
- // ACL is being specified.
- //
- // SE_SACL_DEFAULTED - This boolean flag, when set, indicates that the
- // ACL pointed to by the Sacl field was provided by a defaulting
- // mechanism rather than explicitly provided by the original
- // provider of the security descriptor. This may affect the
- // treatment of the ACL with respect to inheritence of an ACL.
- // This flag is ignored if the SaclPresent flag is not set.
- //
- // SE_SELF_RELATIVE - This boolean flag, when set, indicates that the
- // security descriptor is in self-relative form. In this form,
- // all fields of the security descriptor are contiguous in memory
- // and all pointer fields are expressed as offsets from the
- // beginning of the security descriptor. This form is useful
- // for treating security descriptors as opaque data structures
- // for transmission in communication protocol or for storage on
- // secondary media.
- //
- //
- //
- // Pictorially the structure of a security descriptor is as follows:
- //
- // 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
- // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
- // +---------------------------------------------------------------+
- // | Control |Reserved1 (SBZ)| Revision |
- // +---------------------------------------------------------------+
- // | Owner |
- // +---------------------------------------------------------------+
- // | Group |
- // +---------------------------------------------------------------+
- // | Sacl |
- // +---------------------------------------------------------------+
- // | Dacl |
- // +---------------------------------------------------------------+
- //
- // In general, this data structure should be treated opaquely to ensure future
- // compatibility.
- //
- //
- type
- PSECURITY_DESCRIPTOR_RELATIVE = ^SECURITY_DESCRIPTOR_RELATIVE;
- {$EXTERNALSYM PSECURITY_DESCRIPTOR_RELATIVE}
- _SECURITY_DESCRIPTOR_RELATIVE = record
- Revision: Byte;
- Sbz1: Byte;
- Control: SECURITY_DESCRIPTOR_CONTROL;
- Owner: DWORD;
- Group: DWORD;
- Sacl: DWORD;
- Dacl: DWORD;
- end;
- {$EXTERNALSYM _SECURITY_DESCRIPTOR_RELATIVE}
- SECURITY_DESCRIPTOR_RELATIVE = _SECURITY_DESCRIPTOR_RELATIVE;
- {$EXTERNALSYM SECURITY_DESCRIPTOR_RELATIVE}
- TSecurityDescriptorRelative = SECURITY_DESCRIPTOR_RELATIVE;
- PSecurityDescriptorRelative = PSECURITY_DESCRIPTOR_RELATIVE;
- PSECURITY_DESCRIPTOR = ^SECURITY_DESCRIPTOR;
- {$EXTERNALSYM PSECURITY_DESCRIPTOR}
- _SECURITY_DESCRIPTOR = record
- Revision: Byte;
- Sbz1: Byte;
- Control: SECURITY_DESCRIPTOR_CONTROL;
- Owner: PSID;
- Group: PSID;
- Sacl: PACL;
- Dacl: PACL;
- end;
- {$EXTERNALSYM _SECURITY_DESCRIPTOR}
- SECURITY_DESCRIPTOR = _SECURITY_DESCRIPTOR;
- {$EXTERNALSYM SECURITY_DESCRIPTOR}
- TSecurityDescriptor = SECURITY_DESCRIPTOR;
- PSecurityDescriptor = PSECURITY_DESCRIPTOR;
- PPSECURITY_DESCRIPTOR = ^PSECURITY_DESCRIPTOR;
- {$NODEFINE PPSECURITY_DESCRIPTOR}
- const
- SECURITY_DESCRIPTOR_MIN_LENGTH = SizeOf(SECURITY_DESCRIPTOR);
- {$EXTERNALSYM SECURITY_DESCRIPTOR_MIN_LENGTH}
- // Where:
- //
- // Revision - Contains the revision level of the security
- // descriptor. This allows this structure to be passed between
- // systems or stored on disk even though it is expected to
- // change in the future.
- //
- // Control - A set of flags which qualify the meaning of the
- // security descriptor or individual fields of the security
- // descriptor.
- //
- // Owner - is a pointer to an SID representing an object's owner.
- // If this field is null, then no owner SID is present in the
- // security descriptor. If the security descriptor is in
- // self-relative form, then this field contains an offset to
- // the SID, rather than a pointer.
- //
- // Group - is a pointer to an SID representing an object's primary
- // group. If this field is null, then no primary group SID is
- // present in the security descriptor. If the security descriptor
- // is in self-relative form, then this field contains an offset to
- // the SID, rather than a pointer.
- //
- // Sacl - is a pointer to a system ACL. This field value is only
- // valid if the DaclPresent control flag is set. If the
- // SaclPresent flag is set and this field is null, then a null
- // ACL is specified. If the security descriptor is in
- // self-relative form, then this field contains an offset to
- // the ACL, rather than a pointer.
- //
- // Dacl - is a pointer to a discretionary ACL. This field value is
- // only valid if the DaclPresent control flag is set. If the
- // DaclPresent flag is set and this field is null, then a null
- // ACL (unconditionally granting access) is specified. If the
- // security descriptor is in self-relative form, then this field
- // contains an offset to the ACL, rather than a pointer.
- //
- ////////////////////////////////////////////////////////////////////////
- // //
- // Object Type list for AccessCheckByType //
- // //
- ////////////////////////////////////////////////////////////////////////
- type
- POBJECT_TYPE_LIST = ^OBJECT_TYPE_LIST;
- {$EXTERNALSYM POBJECT_TYPE_LIST}
- _OBJECT_TYPE_LIST = record
- Level: Word;
- Sbz: Word;
- ObjectType: PGUID;
- end;
- {$EXTERNALSYM _OBJECT_TYPE_LIST}
- OBJECT_TYPE_LIST = _OBJECT_TYPE_LIST;
- {$EXTERNALSYM OBJECT_TYPE_LIST}
- TObjectTypeList = OBJECT_TYPE_LIST;
- PObjectTypeList = POBJECT_TYPE_LIST;
- //
- // DS values for Level
- //
- const
- ACCESS_OBJECT_GUID = 0;
- {$EXTERNALSYM ACCESS_OBJECT_GUID}
- ACCESS_PROPERTY_SET_GUID = 1;
- {$EXTERNALSYM ACCESS_PROPERTY_SET_GUID}
- ACCESS_PROPERTY_GUID = 2;
- {$EXTERNALSYM ACCESS_PROPERTY_GUID}
- ACCESS_MAX_LEVEL = 4;
- {$EXTERNALSYM ACCESS_MAX_LEVEL}
- //
- // Parameters to NtAccessCheckByTypeAndAditAlarm
- //
- type
- _AUDIT_EVENT_TYPE = (AuditEventObjectAccess, AuditEventDirectoryServiceAccess);
- {$EXTERNALSYM _AUDIT_EVENT_TYPE}
- AUDIT_EVENT_TYPE = _AUDIT_EVENT_TYPE;
- {$EXTERNALSYM AUDIT_EVENT_TYPE}
- PAUDIT_EVENT_TYPE = ^AUDIT_EVENT_TYPE;
- {$EXTERNALSYM PAUDIT_EVENT_TYPE}
- TAuditEventType = AUDIT_EVENT_TYPE;
- PAuditEventType = PAUDIT_EVENT_TYPE;
- const
- AUDIT_ALLOW_NO_PRIVILEGE = $1;
- {$EXTERNALSYM AUDIT_ALLOW_NO_PRIVILEGE}
- //
- // DS values for Source and ObjectTypeName
- //
- ACCESS_DS_SOURCE_A = 'DS';
- {$EXTERNALSYM ACCESS_DS_SOURCE_A}
- ACCESS_DS_SOURCE_W = WideString('DS');
- {$EXTERNALSYM ACCESS_DS_SOURCE_W}
- ACCESS_DS_OBJECT_TYPE_NAME_A = 'Directory Service Object';
- {$EXTERNALSYM ACCESS_DS_OBJECT_TYPE_NAME_A}
- ACCESS_DS_OBJECT_TYPE_NAME_W = WideString('Directory Service Object');
- {$EXTERNALSYM ACCESS_DS_OBJECT_TYPE_NAME_W}
- ////////////////////////////////////////////////////////////////////////
- // //
- // Privilege Related Data Structures //
- // //
- ////////////////////////////////////////////////////////////////////////
- //
- // Privilege attributes
- //
- const
- SE_PRIVILEGE_ENABLED_BY_DEFAULT = $00000001;
- {$EXTERNALSYM SE_PRIVILEGE_ENABLED_BY_DEFAULT}
- SE_PRIVILEGE_ENABLED = $00000002;
- {$EXTERNALSYM SE_PRIVILEGE_ENABLED}
- SE_PRIVILEGE_REMOVED = $00000004;
- {$EXTERNALSYM SE_PRIVILEGE_REMOVED}
- SE_PRIVILEGE_USED_FOR_ACCESS = DWORD($80000000);
- {$EXTERNALSYM SE_PRIVILEGE_USED_FOR_ACCESS}
- //
- // Privilege Set Control flags
- //
- PRIVILEGE_SET_ALL_NECESSARY = 1;
- {$EXTERNALSYM PRIVILEGE_SET_ALL_NECESSARY}
- //
- // Privilege Set - This is defined for a privilege set of one.
- // If more than one privilege is needed, then this structure
- // will need to be allocated with more space.
- //
- // Note: don't change this structure without fixing the INITIAL_PRIVILEGE_SET
- // structure (defined in se.h)
- //
- type
- PPRIVILEGE_SET = ^PRIVILEGE_SET;
- {$EXTERNALSYM PPRIVILEGE_SET}
- _PRIVILEGE_SET = record
- PrivilegeCount: DWORD;
- Control: DWORD;
- Privilege: array [0..ANYSIZE_ARRAY - 1] of LUID_AND_ATTRIBUTES;
- //Privilege: LUID_AND_ATTRIBUTES;
- end;
- {$EXTERNALSYM _PRIVILEGE_SET}
- PRIVILEGE_SET = _PRIVILEGE_SET;
- {$EXTERNALSYM PRIVILEGE_SET}
- TPrivilegeSet = PRIVILEGE_SET;
- PPrivilegeSet = PPRIVILEGE_SET;
- ////////////////////////////////////////////////////////////////////////
- // //
- // NT Defined Privileges //
- // //
- ////////////////////////////////////////////////////////////////////////
- const
- SE_CREATE_TOKEN_NAME = 'SeCreateTokenPrivilege';
- {$EXTERNALSYM SE_CREATE_TOKEN_NAME}
- SE_ASSIGNPRIMARYTOKEN_NAME = 'SeAssignPrimaryTokenPrivilege';
- {$EXTERNALSYM SE_ASSIGNPRIMARYTOKEN_NAME}
- SE_LOCK_MEMORY_NAME = 'SeLockMemoryPrivilege';
- {$EXTERNALSYM SE_LOCK_MEMORY_NAME}
- SE_INCREASE_QUOTA_NAME = 'SeIncreaseQuotaPrivilege';
- {$EXTERNALSYM SE_INCREASE_QUOTA_NAME}
- SE_UNSOLICITED_INPUT_NAME = 'SeUnsolicitedInputPrivilege';
- {$EXTERNALSYM SE_UNSOLICITED_INPUT_NAME}
- SE_MACHINE_ACCOUNT_NAME = 'SeMachineAccountPrivilege';
- {$EXTERNALSYM SE_MACHINE_ACCOUNT_NAME}
- SE_TCB_NAME = 'SeTcbPrivilege';
- {$EXTERNALSYM SE_TCB_NAME}
- SE_SECURITY_NAME = 'SeSecurityPrivilege';
- {$EXTERNALSYM SE_SECURITY_NAME}
- SE_TAKE_OWNERSHIP_NAME = 'SeTakeOwnershipPrivilege';
- {$EXTERNALSYM SE_TAKE_OWNERSHIP_NAME}
- SE_LOAD_DRIVER_NAME = 'SeLoadDriverPrivilege';
- {$EXTERNALSYM SE_LOAD_DRIVER_NAME}
- SE_SYSTEM_PROFILE_NAME = 'SeSystemProfilePrivilege';
- {$EXTERNALSYM SE_SYSTEM_PROFILE_NAME}
- SE_SYSTEMTIME_NAME = 'SeSystemtimePrivilege';
- {$EXTERNALSYM SE_SYSTEMTIME_NAME}
- SE_PROF_SINGLE_PROCESS_NAME = 'SeProfileSingleProcessPrivilege';
- {$EXTERNALSYM SE_PROF_SINGLE_PROCESS_NAME}
- SE_INC_BASE_PRIORITY_NAME = 'SeIncreaseBasePriorityPrivilege';
- {$EXTERNALSYM SE_INC_BASE_PRIORITY_NAME}
- SE_CREATE_PAGEFILE_NAME = 'SeCreatePagefilePrivilege';
- {$EXTERNALSYM SE_CREATE_PAGEFILE_NAME}
- SE_CREATE_PERMANENT_NAME = 'SeCreatePermanentPrivilege';
- {$EXTERNALSYM SE_CREATE_PERMANENT_NAME}
- SE_BACKUP_NAME = 'SeBackupPrivilege';
- {$EXTERNALSYM SE_BACKUP_NAME}
- SE_RESTORE_NAME = 'SeRestorePrivilege';
- {$EXTERNALSYM SE_RESTORE_NAME}
- SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
- {$EXTERNALSYM SE_SHUTDOWN_NAME}
- SE_DEBUG_NAME = 'SeDebugPrivilege';
- {$EXTERNALSYM SE_DEBUG_NAME}
- SE_AUDIT_NAME = 'SeAuditPrivilege';
- {$EXTERNALSYM SE_AUDIT_NAME}
- SE_SYSTEM_ENVIRONMENT_NAME = 'SeSystemEnvironmentPrivilege';
- {$EXTERNALSYM SE_SYSTEM_ENVIRONMENT_NAME}
- SE_CHANGE_NOTIFY_NAME = 'SeChangeNotifyPrivilege';
- {$EXTERNALSYM SE_CHANGE_NOTIFY_NAME}
- SE_REMOTE_SHUTDOWN_NAME = 'SeRemoteShutdownPrivilege';
- {$EXTERNALSYM SE_REMOTE_SHUTDOWN_NAME}
- SE_UNDOCK_NAME = 'SeUndockPrivilege';
- {$EXTERNALSYM SE_UNDOCK_NAME}
- SE_SYNC_AGENT_NAME = 'SeSyncAgentPrivilege';
- {$EXTERNALSYM SE_SYNC_AGENT_NAME}
- SE_ENABLE_DELEGATION_NAME = 'SeEnableDelegationPrivilege';
- {$EXTERNALSYM SE_ENABLE_DELEGATION_NAME}
- SE_MANAGE_VOLUME_NAME = 'SeManageVolumePrivilege';
- {$EXTERNALSYM SE_MANAGE_VOLUME_NAME}
- SE_IMPERSONATE_NAME = 'SeImpersonatePrivilege';
- {$EXTERNALSYM SE_IMPERSONATE_NAME}
- SE_CREATE_GLOBAL_NAME = 'SeCreateGlobalPrivilege';
- {$EXTERNALSYM SE_CREATE_GLOBAL_NAME}
- ////////////////////////////////////////////////////////////////////
- // //
- // Security Quality Of Service //
- // //
- // //
- ////////////////////////////////////////////////////////////////////
- //
- // Impersonation Level
- //
- // Impersonation level is represented by a pair of bits in Windows.
- // If a new impersonation level is added or lowest value is changed from
- // 0 to something else, fix the Windows CreateFile call.
- //
- type
- _SECURITY_IMPERSONATION_LEVEL = (SecurityAnonymous, SecurityIdentification,
- SecurityImpersonation, SecurityDelegation);
- {$EXTERNALSYM _SECURITY_IMPERSONATION_LEVEL}
- SECURITY_IMPERSONATION_LEVEL = _SECURITY_IMPERSONATION_LEVEL;
- {$EXTERNALSYM SECURITY_IMPERSONATION_LEVEL}
- PSECURITY_IMPERSONATION_LEVEL = ^SECURITY_IMPERSONATION_LEVEL;
- {$EXTERNALSYM PSECURITY_IMPERSONATION_LEVEL}
- TSecurityImpersonationLevel = SECURITY_IMPERSONATION_LEVEL;
- PSecurityImpersonationLevel = PSECURITY_IMPERSONATION_LEVEL;
- const
- SECURITY_MAX_IMPERSONATION_LEVEL = SecurityDelegation;
- {$EXTERNALSYM SECURITY_MAX_IMPERSONATION_LEVEL}
- SECURITY_MIN_IMPERSONATION_LEVEL = SecurityAnonymous;
- {$EXTERNALSYM SECURITY_MIN_IMPERSONATION_LEVEL}
- DEFAULT_IMPERSONATION_LEVEL = SecurityImpersonation;
- {$EXTERNALSYM DEFAULT_IMPERSONATION_LEVEL}
- function VALID_IMPERSONATION_LEVEL(L: TSecurityImpersonationLevel): BOOL;
- {$EXTERNALSYM VALID_IMPERSONATION_LEVEL}
- ////////////////////////////////////////////////////////////////////
- // //
- // Token Object Definitions //
- // //
- // //
- ////////////////////////////////////////////////////////////////////
- //
- // Token Specific Access Rights.
- //
- const
- TOKEN_ASSIGN_PRIMARY = $0001;
- {$EXTERNALSYM TOKEN_ASSIGN_PRIMARY}
- TOKEN_DUPLICATE = $0002;
- {$EXTERNALSYM TOKEN_DUPLICATE}
- TOKEN_IMPERSONATE = $0004;
- {$EXTERNALSYM TOKEN_IMPERSONATE}
- TOKEN_QUERY = $0008;
- {$EXTERNALSYM TOKEN_QUERY}
- TOKEN_QUERY_SOURCE = $0010;
- {$EXTERNALSYM TOKEN_QUERY_SOURCE}
- TOKEN_ADJUST_PRIVILEGES = $0020;
- {$EXTERNALSYM TOKEN_ADJUST_PRIVILEGES}
- TOKEN_ADJUST_GROUPS = $0040;
- {$EXTERNALSYM TOKEN_ADJUST_GROUPS}
- TOKEN_ADJUST_DEFAULT = $0080;
- {$EXTERNALSYM TOKEN_ADJUST_DEFAULT}
- TOKEN_ADJUST_SESSIONID = $0100;
- {$EXTERNALSYM TOKEN_ADJUST_SESSIONID}
- TOKEN_ALL_ACCESS_P = STANDARD_RIGHTS_REQUIRED or TOKEN_ASSIGN_PRIMARY or
- TOKEN_DUPLICATE or TOKEN_IMPERSONATE or TOKEN_QUERY or TOKEN_QUERY_SOURCE or
- TOKEN_ADJUST_PRIVILEGES or TOKEN_ADJUST_GROUPS or TOKEN_ADJUST_DEFAULT;
- {$EXTERNALSYM TOKEN_ALL_ACCESS_P}
- TOKEN_ALL_ACCESS = TOKEN_ALL_ACCESS_P or TOKEN_ADJUST_SESSIONID;
- {$EXTERNALSYM TOKEN_ALL_ACCESS}
- TOKEN_READ = STANDARD_RIGHTS_READ or TOKEN_QUERY;
- {$EXTERNALSYM TOKEN_READ}
- TOKEN_WRITE = (STANDARD_RIGHTS_WRITE or TOKEN_ADJUST_PRIVILEGES or
- TOKEN_ADJUST_GROUPS or TOKEN_ADJUST_DEFAULT);
- {$EXTERNALSYM TOKEN_WRITE}
- TOKEN_EXECUTE = STANDARD_RIGHTS_EXECUTE;
- {$EXTERNALSYM TOKEN_EXECUTE}
- //
- // Token Types
- //
- type
- _TOKEN_TYPE = (TokenTypePad0, TokenPrimary, TokenImpersonation);
- {$EXTERNALSYM _TOKEN_TYPE}
- TOKEN_TYPE = _TOKEN_TYPE;
- {$EXTERNALSYM TOKEN_TYPE}
- PTOKEN_TYPE = ^TOKEN_TYPE;
- {$EXTERNALSYM PTOKEN_TYPE}
- TTokenType = TOKEN_TYPE;
- PTokenType = PTOKEN_TYPE;
- //
- // Token Information Classes.
- //
- type
- _TOKEN_INFORMATION_CLASS = (TokenInfoClassPad0, TokenUser, TokenGroups,
- TokenPrivileges, TokenOwner, TokenPrimaryGroup, TokenDefaultDacl, TokenSource,
- TokenType, TokenImpersonationLevel, TokenStatistics, TokenRestrictedSids,
- TokenSessionId, TokenGroupsAndPrivileges, TokenSessionReference,
- TokenSandBoxInert, TokenAuditPolicy, TokenOrigin,
- MaxTokenInfoClass); {MaxTokenInfoClass should always be the last enum}
- {$EXTERNALSYM _TOKEN_INFORMATION_CLASS}
- TOKEN_INFORMATION_CLASS = _TOKEN_INFORMATION_CLASS;
- {$EXTERNALSYM TOKEN_INFORMATION_CLASS}
- PTOKEN_INFORMATION_CLASS = ^TOKEN_INFORMATION_CLASS;
- {$EXTERNALSYM PTOKEN_INFORMATION_CLASS}
- TTokenInformationClass = TOKEN_INFORMATION_CLASS;
- PTokenInformationClass = PTOKEN_INFORMATION_CLASS;
- //
- // Token information class structures
- //
- type
- PTOKEN_USER = ^TOKEN_USER;
- {$EXTERNALSYM PTOKEN_USER}
- _TOKEN_USER = record
- User: SID_AND_ATTRIBUTES;
- end;
- {$EXTERNALSYM _TOKEN_USER}
- TOKEN_USER = _TOKEN_USER;
- {$EXTERNALSYM TOKEN_USER}
- TTokenUser = TOKEN_USER;
- PTokenUser = PTOKEN_USER;
- PTOKEN_GROUPS = ^TOKEN_GROUPS;
- {$EXTERNALSYM PTOKEN_GROUPS}
- _TOKEN_GROUPS = record
- GroupCount: DWORD;
- Groups: array [0..ANYSIZE_ARRAY - 1] of SID_AND_ATTRIBUTES;
- end;
- {$EXTERNALSYM _TOKEN_GROUPS}
- TOKEN_GROUPS = _TOKEN_GROUPS;
- {$EXTERNALSYM TOKEN_GROUPS}
- TTokenGroups = TOKEN_GROUPS;
- PTokenGroups = PTOKEN_GROUPS;
- PTOKEN_PRIVILEGES = ^TOKEN_PRIVILEGES;
- {$EXTERNALSYM PTOKEN_PRIVILEGES}
- _TOKEN_PRIVILEGES = record
- PrivilegeCount: DWORD;
- Privileges: array [0..ANYSIZE_ARRAY - 1] of LUID_AND_ATTRIBUTES;
- end;
- {$EXTERNALSYM _TOKEN_PRIVILEGES}
- TOKEN_PRIVILEGES = _TOKEN_PRIVILEGES;
- {$EXTERNALSYM TOKEN_PRIVILEGES}
- TTokenPrivileges = TOKEN_PRIVILEGES;
- PTokenPrivileges = PTOKEN_PRIVILEGES;
- PTOKEN_OWNER = ^TOKEN_OWNER;
- {$EXTERNALSYM PTOKEN_OWNER}
- _TOKEN_OWNER = record
- Owner: PSID;
- end;
- {$EXTERNALSYM _TOKEN_OWNER}
- TOKEN_OWNER = _TOKEN_OWNER;
- {$EXTERNALSYM TOKEN_OWNER}
- TTokenOwner = TOKEN_OWNER;
- PTokenOwner = PTOKEN_OWNER;
- PTOKEN_PRIMARY_GROUP = ^TOKEN_PRIMARY_GROUP;
- {$EXTERNALSYM PTOKEN_PRIMARY_GROUP}
- _TOKEN_PRIMARY_GROUP = record
- PrimaryGroup: PSID;
- end;
- {$EXTERNALSYM _TOKEN_PRIMARY_GROUP}
- TOKEN_PRIMARY_GROUP = _TOKEN_PRIMARY_GROUP;
- {$EXTERNALSYM TOKEN_PRIMARY_GROUP}
- TTokenPrimaryGroup = TOKEN_PRIMARY_GROUP;
- PTokenPrimaryGroup = PTOKEN_PRIMARY_GROUP;
- PTOKEN_DEFAULT_DACL = ^TOKEN_DEFAULT_DACL;
- {$EXTERNALSYM PTOKEN_DEFAULT_DACL}
- _TOKEN_DEFAULT_DACL = record
- DefaultDacl: PACL;
- end;
- {$EXTERNALSYM _TOKEN_DEFAULT_DACL}
- TOKEN_DEFAULT_DACL = _TOKEN_DEFAULT_DACL;
- {$EXTERNALSYM TOKEN_DEFAULT_DACL}
- TTokenDefaultDacl = TOKEN_DEFAULT_DACL;
- PTokenDefaultDacl = PTOKEN_DEFAULT_DACL;
- _TOKEN_GROUPS_AND_PRIVILEGES = record
- SidCount: DWORD;
- SidLength: DWORD;
- Sids: PSID_AND_ATTRIBUTES;
- RestrictedSidCount: DWORD;
- RestrictedSidLength: DWORD;
- RestrictedSids: PSID_AND_ATTRIBUTES;
- PrivilegeCount: DWORD;
- PrivilegeLength: DWORD;
- Privileges: PLUID_AND_ATTRIBUTES;
- AuthenticationId: LUID;
- end;
- {$EXTERNALSYM _TOKEN_GROUPS_AND_PRIVILEGES}
- TOKEN_GROUPS_AND_PRIVILEGES = _TOKEN_GROUPS_AND_PRIVILEGES;
- {$EXTERNALSYM TOKEN_GROUPS_AND_PRIVILEGES}
- PTOKEN_GROUPS_AND_PRIVILEGES = ^TOKEN_GROUPS_AND_PRIVILEGES;
- {$EXTERNALSYM PTOKEN_GROUPS_AND_PRIVILEGES}
- TTokenGroupsAndPrivileges = TOKEN_GROUPS_AND_PRIVILEGES;
- PTokenGroupsAndPrivileges = PTOKEN_GROUPS_AND_PRIVILEGES;
- //
- // Valid bits for each TOKEN_AUDIT_POLICY policy mask field.
- //
- const
- TOKEN_AUDIT_SUCCESS_INCLUDE = $1;
- {$EXTERNALSYM TOKEN_AUDIT_SUCCESS_INCLUDE}
- TOKEN_AUDIT_SUCCESS_EXCLUDE = $2;
- {$EXTERNALSYM TOKEN_AUDIT_SUCCESS_EXCLUDE}
- TOKEN_AUDIT_FAILURE_INCLUDE = $4;
- {$EXTERNALSYM TOKEN_AUDIT_FAILURE_INCLUDE}
- TOKEN_AUDIT_FAILURE_EXCLUDE = $8;
- {$EXTERNALSYM TOKEN_AUDIT_FAILURE_EXCLUDE}
- VALID_AUDIT_POLICY_BITS = (TOKEN_AUDIT_SUCCESS_INCLUDE or
- TOKEN_AUDIT_SUCCESS_EXCLUDE or
- TOKEN_AUDIT_FAILURE_INCLUDE or
- TOKEN_AUDIT_FAILURE_EXCLUDE);
- {$EXTERNALSYM VALID_AUDIT_POLICY_BITS}
- type
- _TOKEN_AUDIT_POLICY_ELEMENT = record
- Category: DWORD;
- PolicyMask: DWORD;
- end;
- {$EXTERNALSYM _TOKEN_AUDIT_POLICY_ELEMENT}
- TOKEN_AUDIT_POLICY_ELEMENT = _TOKEN_AUDIT_POLICY_ELEMENT;
- {$EXTERNALSYM TOKEN_AUDIT_POLICY_ELEMENT}
- PTOKEN_AUDIT_POLICY_ELEMENT = ^TOKEN_AUDIT_POLICY_ELEMENT;
- {$EXTERNALSYM PTOKEN_AUDIT_POLICY_ELEMENT}
- TTokenAuditPolicyElement = TOKEN_AUDIT_POLICY_ELEMENT;
- PTokenAuditPolicyElement = PTOKEN_AUDIT_POLICY_ELEMENT;
- // TODO Implementation references AuditEventMaxType, which isn't defined anywhere
- //function VALID_TOKEN_AUDIT_POLICY_ELEMENT(P: TOKEN_AUDIT_POLICY_ELEMENT): BOOL;
- //{$EXTERNALSYM VALID_TOKEN_AUDIT_POLICY_ELEMENT}
- type
- _TOKEN_AUDIT_POLICY = record
- PolicyCount: DWORD;
- Policy: array [0..ANYSIZE_ARRAY - 1] of TOKEN_AUDIT_POLICY_ELEMENT;
- end;
- {$EXTERNALSYM _TOKEN_AUDIT_POLICY}
- TOKEN_AUDIT_POLICY = _TOKEN_AUDIT_POLICY;
- {$EXTERNALSYM TOKEN_AUDIT_POLICY}
- PTOKEN_AUDIT_POLICY = ^TOKEN_AUDIT_POLICY;
- {$EXTERNALSYM PTOKEN_AUDIT_POLICY}
- TTokenAuditPolicy = TOKEN_AUDIT_POLICY;
- PTokenAuditPolicy = PTOKEN_AUDIT_POLICY;
- function PER_USER_AUDITING_POLICY_SIZE(p: PTOKEN_AUDIT_POLICY): DWORD;
- {$EXTERNALSYM PER_USER_AUDITING_POLICY_SIZE}
- function PER_USER_AUDITING_POLICY_SIZE_BY_COUNT(C: DWORD): DWORD;
- {$EXTERNALSYM PER_USER_AUDITING_POLICY_SIZE_BY_COUNT}
- const
- TOKEN_SOURCE_LENGTH = 8;
- {$EXTERNALSYM TOKEN_SOURCE_LENGTH}
- type
- PTOKEN_SOURCE = ^TOKEN_SOURCE;
- {$EXTERNALSYM PTOKEN_SOURCE}
- _TOKEN_SOURCE = record
- SourceName: array [0..TOKEN_SOURCE_LENGTH - 1] of CHAR;
- SourceIdentifier: LUID;
- end;
- {$EXTERNALSYM _TOKEN_SOURCE}
- TOKEN_SOURCE = _TOKEN_SOURCE;
- {$EXTERNALSYM TOKEN_SOURCE}
- TTokenSource = TOKEN_SOURCE;
- PTokenSource = PTOKEN_SOURCE;
- PTOKEN_STATISTICS = ^TOKEN_STATISTICS;
- {$EXTERNALSYM PTOKEN_STATISTICS}
- _TOKEN_STATISTICS = record
- TokenId: LUID;
- AuthenticationId: LUID;
- ExpirationTime: LARGE_INTEGER;
- TokenType: TOKEN_TYPE;
- ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL;
- DynamicCharged: DWORD;
- DynamicAvailable: DWORD;
- GroupCount: DWORD;
- PrivilegeCount: DWORD;
- ModifiedId: LUID;
- end;
- {$EXTERNALSYM _TOKEN_STATISTICS}
- TOKEN_STATISTICS = _TOKEN_STATISTICS;
- {$EXTERNALSYM TOKEN_STATISTICS}
- TTokenStatistics = TOKEN_STATISTICS;
- PTokenStatistics = PTOKEN_STATISTICS;
- PTOKEN_CONTROL = ^TOKEN_CONTROL;
- {$EXTERNALSYM PTOKEN_CONTROL}
- _TOKEN_CONTROL = record
- TokenId: LUID;
- AuthenticationId: LUID;
- ModifiedId: LUID;
- TokenSource: TOKEN_SOURCE;
- end;
- {$EXTERNALSYM _TOKEN_CONTROL}
- TOKEN_CONTROL = _TOKEN_CONTROL;
- {$EXTERNALSYM TOKEN_CONTROL}
- TTokenControl = TOKEN_CONTROL;
- PTokenControl = PTOKEN_CONTROL;
- _TOKEN_ORIGIN = record
- OriginatingLogonSession: LUID;
- end;
- {$EXTERNALSYM _TOKEN_ORIGIN}
- TOKEN_ORIGIN = _TOKEN_ORIGIN;
- {$EXTERNALSYM TOKEN_ORIGIN}
- PTOKEN_ORIGIN = ^TOKEN_ORIGIN;
- {$EXTERNALSYM PTOKEN_ORIGIN}
- TTokenOrigin = TOKEN_ORIGIN;
- PTokenOrigin = PTOKEN_ORIGIN;
- //
- // Security Tracking Mode
- //
- const
- SECURITY_DYNAMIC_TRACKING = True;
- {$EXTERNALSYM SECURITY_DYNAMIC_TRACKING}
- SECURITY_STATIC_TRACKING = False;
- {$EXTERNALSYM SECURITY_STATIC_TRACKING}
- type
- SECURITY_CONTEXT_TRACKING_MODE = ByteBool;
- {$EXTERNALSYM SECURITY_CONTEXT_TRACKING_MODE}
- PSECURITY_CONTEXT_TRACKING_MODE = ^SECURITY_CONTEXT_TRACKING_MODE;
- {$EXTERNALSYM PSECURITY_CONTEXT_TRACKING_MODE}
- //
- // Quality Of Service
- //
- PSECURITY_QUALITY_OF_SERVICE = ^SECURITY_QUALITY_OF_SERVICE;
- {$EXTERNALSYM PSECURITY_QUALITY_OF_SERVICE}
- _SECURITY_QUALITY_OF_SERVICE = record
- Length: DWORD;
- ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL;
- ContextTrackingMode: SECURITY_CONTEXT_TRACKING_MODE;
- EffectiveOnly: ByteBool;
- end;
- {$EXTERNALSYM _SECURITY_QUALITY_OF_SERVICE}
- SECURITY_QUALITY_OF_SERVICE = _SECURITY_QUALITY_OF_SERVICE;
- {$EXTERNALSYM SECURITY_QUALITY_OF_SERVICE}
- TSecurityQualityOfService = SECURITY_QUALITY_OF_SERVICE;
- PSecurityQualityOfService = PSECURITY_QUALITY_OF_SERVICE;
- //
- // Used to represent information related to a thread impersonation
- //
- PSE_IMPERSONATION_STATE = ^SE_IMPERSONATION_STATE;
- {$EXTERNALSYM PSE_IMPERSONATION_STATE}
- _SE_IMPERSONATION_STATE = record
- Token: PACCESS_TOKEN;
- CopyOnOpen: ByteBool;
- EffectiveOnly: ByteBool;
- Level: SECURITY_IMPERSONATION_LEVEL;
- end;
- {$EXTERNALSYM _SE_IMPERSONATION_STATE}
- SE_IMPERSONATION_STATE = _SE_IMPERSONATION_STATE;
- {$EXTERNALSYM SE_IMPERSONATION_STATE}
- TSeImpersonationState = SE_IMPERSONATION_STATE;
- PSeImpersonationState = PSE_IMPERSONATION_STATE;
- const
- DISABLE_MAX_PRIVILEGE = $1;
- {$EXTERNALSYM DISABLE_MAX_PRIVILEGE}
- SANDBOX_INERT = $2;
- {$EXTERNALSYM SANDBOX_INERT}
- type
- SECURITY_INFORMATION = DWORD;
- {$EXTERNALSYM SECURITY_INFORMATION}
- PSECURITY_INFORMATION = ^SECURITY_INFORMATION;
- {$EXTERNALSYM PSECURITY_INFORMATION}
- TSecurityInformation = SECURITY_INFORMATION;
- PSecurityInformation = PSECURITY_INFORMATION;
- const
- OWNER_SECURITY_INFORMATION = $00000001;
- {$EXTERNALSYM OWNER_SECURITY_INFORMATION}
- GROUP_SECURITY_INFORMATION = $00000002;
- {$EXTERNALSYM GROUP_SECURITY_INFORMATION}
- DACL_SECURITY_INFORMATION = $00000004;
- {$EXTERNALSYM DACL_SECURITY_INFORMATION}
- SACL_SECURITY_INFORMATION = $00000008;
- {$EXTERNALSYM SACL_SECURITY_INFORMATION}
- PROTECTED_DACL_SECURITY_INFORMATION = $80000000;
- {$EXTERNALSYM PROTECTED_DACL_SECURITY_INFORMATION}
- PROTECTED_SACL_SECURITY_INFORMATION = $40000000;
- {$EXTERNALSYM PROTECTED_SACL_SECURITY_INFORMATION}
- UNPROTECTED_DACL_SECURITY_INFORMATION = $20000000;
- {$EXTERNALSYM UNPROTECTED_DACL_SECURITY_INFORMATION}
- UNPROTECTED_SACL_SECURITY_INFORMATION = $10000000;
- {$EXTERNALSYM UNPROTECTED_SACL_SECURITY_INFORMATION}
- PROCESS_TERMINATE = $0001;
- {$EXTERNALSYM PROCESS_TERMINATE}
- PROCESS_CREATE_THREAD = $0002;
- {$EXTERNALSYM PROCESS_CREATE_THREAD}
- PROCESS_SET_SESSIONID = $0004;
- {$EXTERNALSYM PROCESS_SET_SESSIONID}
- PROCESS_VM_OPERATION = $0008;
- {$EXTERNALSYM PROCESS_VM_OPERATION}
- PROCESS_VM_READ = $0010;
- {$EXTERNALSYM PROCESS_VM_READ}
- PROCESS_VM_WRITE = $0020;
- {$EXTERNALSYM PROCESS_VM_WRITE}
- PROCESS_DUP_HANDLE = $0040;
- {$EXTERNALSYM PROCESS_DUP_HANDLE}
- PROCESS_CREATE_PROCESS = $0080;
- {$EXTERNALSYM PROCESS_CREATE_PROCESS}
- PROCESS_SET_QUOTA = $0100;
- {$EXTERNALSYM PROCESS_SET_QUOTA}
- PROCESS_SET_INFORMATION = $0200;
- {$EXTERNALSYM PROCESS_SET_INFORMATION}
- PROCESS_QUERY_INFORMATION = $0400;
- {$EXTERNALSYM PROCESS_QUERY_INFORMATION}
- PROCESS_SUSPEND_RESUME = $0800;
- {$EXTERNALSYM PROCESS_SUSPEND_RESUME}
- PROCESS_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or $FFF;
- {$EXTERNALSYM PROCESS_ALL_ACCESS}
- MAXIMUM_PROCESSORS = 32;
- {$EXTERNALSYM MAXIMUM_PROCESSORS}
- THREAD_TERMINATE = $0001;
- {$EXTERNALSYM THREAD_TERMINATE}
- THREAD_SUSPEND_RESUME = $0002;
- {$EXTERNALSYM THREAD_SUSPEND_RESUME}
- THREAD_GET_CONTEXT = $0008;
- {$EXTERNALSYM THREAD_GET_CONTEXT}
- THREAD_SET_CONTEXT = $0010;
- {$EXTERNALSYM THREAD_SET_CONTEXT}
- THREAD_SET_INFORMATION = $0020;
- {$EXTERNALSYM THREAD_SET_INFORMATION}
- THREAD_QUERY_INFORMATION = $0040;
- {$EXTERNALSYM THREAD_QUERY_INFORMATION}
- THREAD_SET_THREAD_TOKEN = $0080;
- {$EXTERNALSYM THREAD_SET_THREAD_TOKEN}
- THREAD_IMPERSONATE = $0100;
- {$EXTERNALSYM THREAD_IMPERSONATE}
- THREAD_DIRECT_IMPERSONATION = $0200;
- {$EXTERNALSYM THREAD_DIRECT_IMPERSONATION}
- THREAD_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or $3FF;
- {$EXTERNALSYM THREAD_ALL_ACCESS}
- JOB_OBJECT_ASSIGN_PROCESS = $0001;
- {$EXTERNALSYM JOB_OBJECT_ASSIGN_PROCESS}
- JOB_OBJECT_SET_ATTRIBUTES = $0002;
- {$EXTERNALSYM JOB_OBJECT_SET_ATTRIBUTES}
- JOB_OBJECT_QUERY = $0004;
- {$EXTERNALSYM JOB_OBJECT_QUERY}
- JOB_OBJECT_TERMINATE = $0008;
- {$EXTERNALSYM JOB_OBJECT_TERMINATE}
- JOB_OBJECT_SET_SECURITY_ATTRIBUTES = $0010;
- {$EXTERNALSYM JOB_OBJECT_SET_SECURITY_ATTRIBUTES}
- JOB_OBJECT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or $1F ;
- {$EXTERNALSYM JOB_OBJECT_ALL_ACCESS}
- type
- _JOB_SET_ARRAY = record
- JobHandle: HANDLE; // Handle to job object to insert
- MemberLevel: DWORD; // Level of this job in the set. Must be > 0. Can be sparse.
- Flags: DWORD; // Unused. Must be zero
- end;
- {$EXTERNALSYM _JOB_SET_ARRAY}
- JOB_SET_ARRAY = _JOB_SET_ARRAY;
- {$EXTERNALSYM JOB_SET_ARRAY}
- PJOB_SET_ARRAY = ^JOB_SET_ARRAY;
- {$EXTERNALSYM PJOB_SET_ARRAY}
- TJobSetArray = JOB_SET_ARRAY;
- PJobSetArray = PJOB_SET_ARRAY;
- const
- FLS_MAXIMUM_AVAILABLE = 128;
- {$EXTERNALSYM FLS_MAXIMUM_AVAILABLE}
- TLS_MINIMUM_AVAILABLE = 64;
- {$EXTERNALSYM TLS_MINIMUM_AVAILABLE}
- type
- PEXCEPTION_REGISTRATION_RECORD = ^EXCEPTION_REGISTRATION_RECORD;
- _EXCEPTION_REGISTRATION_RECORD = packed record
- pNext: PEXCEPTION_REGISTRATION_RECORD;
- pfnHandler: FARPROC;
- end;
- EXCEPTION_REGISTRATION_RECORD = _EXCEPTION_REGISTRATION_RECORD;
- TExceptionRegistrationRecord = EXCEPTION_REGISTRATION_RECORD;
- PExceptionRegistrationRecord = PEXCEPTION_REGISTRATION_RECORD;
- PNT_TIB = ^NT_TIB;
- {$EXTERNALSYM PNT_TIB}
- _NT_TIB = record
- ExceptionList: PEXCEPTION_REGISTRATION_RECORD; // 00h Head of exception record list
- StackBase: PVOID; // 04h Top of user stack
- StackLimit: PVOID; // 08h Base of user stack
- //union // 0Ch (NT/Win95 differences)
- //{
- // struct // Win95 fields
- // {
- // WORD pvTDB; // 0Ch TDB
- // WORD pvThunkSS; // 0Eh SS selector used for thunking to 16 bits
- // DWORD unknown1; // 10h
- // } WIN95;
- //
- // struct // WinNT fields
- // {
- SubSystemTib: PVOID; // 0Ch
- Union: record // 10H
- case Integer of
- 0: (FiberData: PVOID);
- 1: (Version: DWORD);
- end;
- // } WINNT;
- //} TIB_UNION1;
- ArbitraryUserPointer: PVOID; // 14h Available for application use
- Self: PNT_TIB; // 18h Linear address of TIB structure
- //union // 1Ch (NT/Win95 differences)
- //{
- // struct // Win95 fields
- // {
- // WORD TIBFlags; // 1Ch
- // WORD Win16MutexCount; // 1Eh
- // DWORD DebugContext; // 20h
- // DWORD pCurrentPriority; // 24h
- // DWORD pvQueue; // 28h Message Queue selector
- // } WIN95;
- //
- // struct // WinNT fields
- // {
- unknown1: DWORD; // 1Ch
- processID: DWORD; // 20h
- threadID: DWORD; // 24h
- unknown2: DWORD; // 28h
- // } WINNT;
- //} TIB_UNION2;
- pvTLSArray: PVOID; // (PPVOID!) 2Ch Thread Local Storage array
- //union // 30h (NT/Win95 differences)
- //{
- // struct // Win95 fields
- // {
- // PVOID* pProcess; // 30h Pointer to owning process database
- // } WIN95;
- //} TIB_UNION3;
- end;
- {$EXTERNALSYM _NT_TIB}
- NT_TIB = _NT_TIB;
- {$EXTERNALSYM NT_TIB}
- TNtTib = NT_TIB;
- PNtTib = ^TNtTib;
- //
- // 32 and 64 bit specific version for wow64 and the debugger
- //
- PNT_TIB32 = ^NT_TIB32;
- {$EXTERNALSYM PNT_TIB32}
- _NT_TIB32 = record
- ExceptionList: DWORD;
- StackBase: DWORD;
- StackLimit: DWORD;
- SubSystemTib: DWORD;
- Union: record
- case Integer of
- 0: (FiberData: DWORD);
- 1: (Version: DWORD);
- end;
- ArbitraryUserPointer: DWORD;
- Self: DWORD;
- end;
- {$EXTERNALSYM _NT_TIB32}
- NT_TIB32 = _NT_TIB32;
- {$EXTERNALSYM NT_TIB32}
- TNtTib32 = NT_TIB32;
- PNtTib32 = ^TNtTib32;
- PNT_TIB64 = ^NT_TIB64;
- {$EXTERNALSYM PNT_TIB64}
- _NT_TIB64 = record
- ExceptionList: DWORD64;
- StackBase: DWORD64;
- StackLimit: DWORD64;
- SubSystemTib: DWORD64;
- Union: record
- case Integer of
- 0: (FiberData: DWORD64);
- 1: (Version: DWORD);
- end;
- ArbitraryUserPointer: DWORD64;
- Self: DWORD64;
- end;
- {$EXTERNALSYM _NT_TIB64}
- NT_TIB64 = _NT_TIB64;
- {$EXTERNALSYM NT_TIB64}
- TNtTib64 = NT_TIB64;
- PNtTib64 = ^TNtTib64;
- //
- // Define function to return the current Thread Environment Block
- //
- function NtCurrentTeb: PNT_TIB;
- {$EXTERNALSYM NtCurrentTeb}
- const
- THREAD_BASE_PRIORITY_LOWRT = 15; // value that gets a thread to LowRealtime-1
- {$EXTERNALSYM THREAD_BASE_PRIORITY_LOWRT}
- THREAD_BASE_PRIORITY_MAX = 2; // maximum thread base priority boost
- {$EXTERNALSYM THREAD_BASE_PRIORITY_MAX}
- THREAD_BASE_PRIORITY_MIN = DWORD(-2); // minimum thread base priority boost
- {$EXTERNALSYM THREAD_BASE_PRIORITY_MIN}
- THREAD_BASE_PRIORITY_IDLE = DWORD(-15); // value that gets a thread to idle
- {$EXTERNALSYM THREAD_BASE_PRIORITY_IDLE}
- type
- PQUOTA_LIMITS = ^QUOTA_LIMITS;
- {$EXTERNALSYM PQUOTA_LIMITS}
- _QUOTA_LIMITS = record
- PagedPoolLimit: SIZE_T;
- NonPagedPoolLimit: SIZE_T;
- MinimumWorkingSetSize: SIZE_T;
- MaximumWorkingSetSize: SIZE_T;
- PagefileLimit: SIZE_T;
- TimeLimit: LARGE_INTEGER;
- end;
- {$EXTERNALSYM _QUOTA_LIMITS}
- QUOTA_LIMITS = _QUOTA_LIMITS;
- {$EXTERNALSYM QUOTA_LIMITS}
- TQuotaLimits = QUOTA_LIMITS;
- PQuotaLimits = PQUOTA_LIMITS;
- const
- QUOTA_LIMITS_HARDWS_MIN_ENABLE = $00000001;
- {$EXTERNALSYM QUOTA_LIMITS_HARDWS_MIN_ENABLE}
- QUOTA_LIMITS_HARDWS_MIN_DISABLE = $00000002;
- {$EXTERNALSYM QUOTA_LIMITS_HARDWS_MIN_DISABLE}
- QUOTA_LIMITS_HARDWS_MAX_ENABLE = $00000004;
- {$EXTERNALSYM QUOTA_LIMITS_HARDWS_MAX_ENABLE}
- QUOTA_LIMITS_HARDWS_MAX_DISABLE = $00000008;
- {$EXTERNALSYM QUOTA_LIMITS_HARDWS_MAX_DISABLE}
- type
- _QUOTA_LIMITS_EX = record
- PagedPoolLimit: SIZE_T;
- NonPagedPoolLimit: SIZE_T;
- MinimumWorkingSetSize: SIZE_T;
- MaximumWorkingSetSize: SIZE_T;
- PagefileLimit: SIZE_T;
- TimeLimit: LARGE_INTEGER;
- Reserved1: SIZE_T;
- Reserved2: SIZE_T;
- Reserved3: SIZE_T;
- Reserved4: SIZE_T;
- Flags: DWORD;
- Reserved5: DWORD;
- end;
- {$EXTERNALSYM _QUOTA_LIMITS_EX}
- QUOTA_LIMITS_EX = _QUOTA_LIMITS_EX;
- {$EXTERNALSYM QUOTA_LIMITS_EX}
- PQUOTA_LIMITS_EX = ^QUOTA_LIMITS_EX;
- {$EXTERNALSYM PQUOTA_LIMITS_EX}
- TQuotaLimitsEx = QUOTA_LIMITS_EX;
- PQuotaLimitsEx = PQUOTA_LIMITS_EX;
- PIO_COUNTERS = ^IO_COUNTERS;
- {$EXTERNALSYM PIO_COUNTERS}
- _IO_COUNTERS = record
- ReadOperationCount: Int64;
- WriteOperationCount: Int64;
- OtherOperationCount: Int64;
- ReadTransferCount: Int64;
- WriteTransferCount: Int64;
- OtherTransferCount: Int64;
- end;
- {$EXTERNALSYM _IO_COUNTERS}
- IO_COUNTERS = _IO_COUNTERS;
- {$EXTERNALSYM IO_COUNTERS}
- TIoCounters = IO_COUNTERS;
- PIoCounters = PIO_COUNTERS;
- PJOBOBJECT_BASIC_ACCOUNTING_INFORMATION = ^JOBOBJECT_BASIC_ACCOUNTING_INFORMATION;
- {$EXTERNALSYM PJOBOBJECT_BASIC_ACCOUNTING_INFORMATION}
- _JOBOBJECT_BASIC_ACCOUNTING_INFORMATION = record
- TotalUserTime: LARGE_INTEGER;
- TotalKernelTime: LARGE_INTEGER;
- ThisPeriodTotalUserTime: LARGE_INTEGER;
- ThisPeriodTotalKernelTime: LARGE_INTEGER;
- TotalPageFaultCount: DWORD;
- TotalProcesses: DWORD;
- ActiveProcesses: DWORD;
- TotalTerminatedProcesses: DWORD;
- end;
- {$EXTERNALSYM _JOBOBJECT_BASIC_ACCOUNTING_INFORMATION}
- JOBOBJECT_BASIC_ACCOUNTING_INFORMATION = _JOBOBJECT_BASIC_ACCOUNTING_INFORMATION;
- {$EXTERNALSYM JOBOBJECT_BASIC_ACCOUNTING_INFORMATION}
- TJobObjectBasicAccountingInformation = JOBOBJECT_BASIC_ACCOUNTING_INFORMATION;
- PJobObjectBasicAccountingInformation = PJOBOBJECT_BASIC_ACCOUNTING_INFORMATION;
- PJOBOBJECT_BASIC_LIMIT_INFORMATION = ^JOBOBJECT_BASIC_LIMIT_INFORMATION;
- {$EXTERNALSYM PJOBOBJECT_BASIC_LIMIT_INFORMATION}
- _JOBOBJECT_BASIC_LIMIT_INFORMATION = record
- PerProcessUserTimeLimit: LARGE_INTEGER;
- PerJobUserTimeLimit: LARGE_INTEGER;
- LimitFlags: DWORD;
- MinimumWorkingSetSize: SIZE_T;
- MaximumWorkingSetSize: SIZE_T;
- ActiveProcessLimit: DWORD;
- Affinity: ULONG_PTR;
- PriorityClass: DWORD;
- SchedulingClass: DWORD;
- end;
- {$EXTERNALSYM _JOBOBJECT_BASIC_LIMIT_INFORMATION}
- JOBOBJECT_BASIC_LIMIT_INFORMATION = _JOBOBJECT_BASIC_LIMIT_INFORMATION;
- {$EXTERNALSYM JOBOBJECT_BASIC_LIMIT_INFORMATION}
- TJobObjectBasicLimitInformation = JOBOBJECT_BASIC_LIMIT_INFORMATION;
- PJobObjectBasicLimitInformation = PJOBOBJECT_BASIC_LIMIT_INFORMATION;
- PJOBOBJECT_EXTENDED_LIMIT_INFORMATION = ^JOBOBJECT_EXTENDED_LIMIT_INFORMATION;
- {$EXTERNALSYM PJOBOBJECT_EXTENDED_LIMIT_INFORMATION}
- _JOBOBJECT_EXTENDED_LIMIT_INFORMATION = record
- BasicLimitInformation: JOBOBJECT_BASIC_LIMIT_INFORMATION;
- IoInfo: IO_COUNTERS;
- ProcessMemoryLimit: SIZE_T;
- JobMemoryLimit: SIZE_T;
- PeakProcessMemoryUsed: SIZE_T;
- PeakJobMemoryUsed: SIZE_T;
- end;
- {$EXTERNALSYM _JOBOBJECT_EXTENDED_LIMIT_INFORMATION}
- JOBOBJECT_EXTENDED_LIMIT_INFORMATION = _JOBOBJECT_EXTENDED_LIMIT_INFORMATION;
- {$EXTERNALSYM JOBOBJECT_EXTENDED_LIMIT_INFORMATION}
- TJobObjectExtendedLimitInformation = JOBOBJECT_EXTENDED_LIMIT_INFORMATION;
- PJobObjectExtendedLimitInformation = PJOBOBJECT_EXTENDED_LIMIT_INFORMATION;
- PJOBOBJECT_BASIC_PROCESS_ID_LIST = ^JOBOBJECT_BASIC_PROCESS_ID_LIST;
- {$EXTERNALSYM PJOBOBJECT_BASIC_PROCESS_ID_LIST}
- _JOBOBJECT_BASIC_PROCESS_ID_LIST = record
- NumberOfAssignedProcesses: DWORD;
- NumberOfProcessIdsInList: DWORD;
- ProcessIdList: array [0..0] of ULONG_PTR;
- end;
- {$EXTERNALSYM _JOBOBJECT_BASIC_PROCESS_ID_LIST}
- JOBOBJECT_BASIC_PROCESS_ID_LIST = _JOBOBJECT_BASIC_PROCESS_ID_LIST;
- {$EXTERNALSYM JOBOBJECT_BASIC_PROCESS_ID_LIST}
- TJobObjectBasicProcessIdList = JOBOBJECT_BASIC_PROCESS_ID_LIST;
- PJobObjectBasicProcessIdList = PJOBOBJECT_BASIC_PROCESS_ID_LIST;
- PJOBOBJECT_BASIC_UI_RESTRICTIONS = ^JOBOBJECT_BASIC_UI_RESTRICTIONS;
- {$EXTERNALSYM PJOBOBJECT_BASIC_UI_RESTRICTIONS}
- _JOBOBJECT_BASIC_UI_RESTRICTIONS = record
- UIRestrictionsClass: DWORD;
- end;
- {$EXTERNALSYM _JOBOBJECT_BASIC_UI_RESTRICTIONS}
- JOBOBJECT_BASIC_UI_RESTRICTIONS = _JOBOBJECT_BASIC_UI_RESTRICTIONS;
- {$EXTERNALSYM JOBOBJECT_BASIC_UI_RESTRICTIONS}
- TJobObjectBasicUiRestrictions = JOBOBJECT_BASIC_UI_RESTRICTIONS;
- PJobObjectBasicUiRestrictions = PJOBOBJECT_BASIC_UI_RESTRICTIONS;
- PJOBOBJECT_SECURITY_LIMIT_INFORMATION = ^JOBOBJECT_SECURITY_LIMIT_INFORMATION;
- {$EXTERNALSYM PJOBOBJECT_SECURITY_LIMIT_INFORMATION}
- _JOBOBJECT_SECURITY_LIMIT_INFORMATION = record
- SecurityLimitFlags : DWORD;
- JobToken : THandle;
- SidsToDisable : PTOKEN_GROUPS;
- PrivilegesToDelete : PTOKEN_PRIVILEGES;
- RestrictedSids : PTOKEN_GROUPS;
- end;
- {$EXTERNALSYM _JOBOBJECT_SECURITY_LIMIT_INFORMATION}
- JOBOBJECT_SECURITY_LIMIT_INFORMATION = _JOBOBJECT_SECURITY_LIMIT_INFORMATION;
- {$EXTERNALSYM JOBOBJECT_SECURITY_LIMIT_INFORMATION}
- TJobObjectSecurityLimitInformation = JOBOBJECT_SECURITY_LIMIT_INFORMATION;
- PJobObjectSecurityLimitInformation = PJOBOBJECT_SECURITY_LIMIT_INFORMATION;
- PJOBOBJECT_END_OF_JOB_TIME_INFORMATION = ^JOBOBJECT_END_OF_JOB_TIME_INFORMATION;
- {$EXTERNALSYM PJOBOBJECT_END_OF_JOB_TIME_INFORMATION}
- _JOBOBJECT_END_OF_JOB_TIME_INFORMATION = record
- EndOfJobTimeAction: DWORD;
- end;
- {$EXTERNALSYM _JOBOBJECT_END_OF_JOB_TIME_INFORMATION}
- JOBOBJECT_END_OF_JOB_TIME_INFORMATION = _JOBOBJECT_END_OF_JOB_TIME_INFORMATION;
- {$EXTERNALSYM JOBOBJECT_END_OF_JOB_TIME_INFORMATION}
- TJobObjectEndOfJobTimeInformation = JOBOBJECT_END_OF_JOB_TIME_INFORMATION;
- PJobObjectEndOfJobTimeInformation = PJOBOBJECT_END_OF_JOB_TIME_INFORMATION;
- PJOBOBJECT_ASSOCIATE_COMPLETION_PORT = ^JOBOBJECT_ASSOCIATE_COMPLETION_PORT;
- {$EXTERNALSYM PJOBOBJECT_ASSOCIATE_COMPLETION_PORT}
- _JOBOBJECT_ASSOCIATE_COMPLETION_PORT = record
- CompletionKey: Pointer;
- CompletionPort: THandle;
- end;
- {$EXTERNALSYM _JOBOBJECT_ASSOCIATE_COMPLETION_PORT}
- JOBOBJECT_ASSOCIATE_COMPLETION_PORT = _JOBOBJECT_ASSOCIATE_COMPLETION_PORT;
- {$EXTERNALSYM JOBOBJECT_ASSOCIATE_COMPLETION_PORT}
- TJobObjectAssociateCompletionPort = JOBOBJECT_ASSOCIATE_COMPLETION_PORT;
- PJobObjectAssociateCompletionPort = PJOBOBJECT_ASSOCIATE_COMPLETION_PORT;
- PJOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION = ^JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION;
- {$EXTERNALSYM PJOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION}
- _JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION = record
- BasicInfo: JOBOBJECT_BASIC_ACCOUNTING_INFORMATION;
- IoInfo: IO_COUNTERS;
- end;
- {$EXTERNALSYM _JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION}
- JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION = _JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION;
- {$EXTERNALSYM JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION}
- TJobObjectBasicAndIoAccountingInformation = JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION;
- PJobObjectBasicAndIoAccountingInformation = PJOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION;
- _JOBOBJECT_JOBSET_INFORMATION = record
- MemberLevel: DWORD;
- end;
- {$EXTERNALSYM _JOBOBJECT_JOBSET_INFORMATION}
- JOBOBJECT_JOBSET_INFORMATION = _JOBOBJECT_JOBSET_INFORMATION;
- {$EXTERNALSYM JOBOBJECT_JOBSET_INFORMATION}
- PJOBOBJECT_JOBSET_INFORMATION = ^JOBOBJECT_JOBSET_INFORMATION;
- {$EXTERNALSYM PJOBOBJECT_JOBSET_INFORMATION}
- TJobObjectSetInformation = JOBOBJECT_JOBSET_INFORMATION;
- PJobObjectSetInformation = PJOBOBJECT_JOBSET_INFORMATION;
- const
- JOB_OBJECT_TERMINATE_AT_END_OF_JOB = 0;
- {$EXTERNALSYM JOB_OBJECT_TERMINATE_AT_END_OF_JOB}
- JOB_OBJECT_POST_AT_END_OF_JOB = 1;
- {$EXTERNALSYM JOB_OBJECT_POST_AT_END_OF_JOB}
- //
- // Completion Port Messages for job objects
- //
- // These values are returned via the lpNumberOfBytesTransferred parameter
- //
- JOB_OBJECT_MSG_END_OF_JOB_TIME = 1;
- {$EXTERNALSYM JOB_OBJECT_MSG_END_OF_JOB_TIME}
- JOB_OBJECT_MSG_END_OF_PROCESS_TIME = 2;
- {$EXTERNALSYM JOB_OBJECT_MSG_END_OF_PROCESS_TIME}
- JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT = 3;
- {$EXTERNALSYM JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT}
- JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO = 4;
- {$EXTERNALSYM JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO}
- JOB_OBJECT_MSG_NEW_PROCESS = 6;
- {$EXTERNALSYM JOB_OBJECT_MSG_NEW_PROCESS}
- JOB_OBJECT_MSG_EXIT_PROCESS = 7;
- {$EXTERNALSYM JOB_OBJECT_MSG_EXIT_PROCESS}
- JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS = 8;
- {$EXTERNALSYM JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS}
- JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT = 9;
- {$EXTERNALSYM JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT}
- JOB_OBJECT_MSG_JOB_MEMORY_LIMIT = 10;
- {$EXTERNALSYM JOB_OBJECT_MSG_JOB_MEMORY_LIMIT}
- //
- // Basic Limits
- //
- JOB_OBJECT_LIMIT_WORKINGSET = $00000001;
- {$EXTERNALSYM JOB_OBJECT_LIMIT_WORKINGSET}
- JOB_OBJECT_LIMIT_PROCESS_TIME = $00000002;
- {$EXTERNALSYM JOB_OBJECT_LIMIT_PROCESS_TIME}
- JOB_OBJECT_LIMIT_JOB_TIME = $00000004;
- {$EXTERNALSYM JOB_OBJECT_LIMIT_JOB_TIME}
- JOB_OBJECT_LIMIT_ACTIVE_PROCESS = $00000008;
- {$EXTERNALSYM JOB_OBJECT_LIMIT_ACTIVE_PROCESS}
- JOB_OBJECT_LIMIT_AFFINITY = $00000010;
- {$EXTERNALSYM JOB_OBJECT_LIMIT_AFFINITY}
- JOB_OBJECT_LIMIT_PRIORITY_CLASS = $00000020;
- {$EXTERNALSYM JOB_OBJECT_LIMIT_PRIORITY_CLASS}
- JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME = $00000040;
- {$EXTERNALSYM JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME}
- JOB_OBJECT_LIMIT_SCHEDULING_CLASS = $00000080;
- {$EXTERNALSYM JOB_OBJECT_LIMIT_SCHEDULING_CLASS}
- //
- // Extended Limits
- //
- JOB_OBJECT_LIMIT_PROCESS_MEMORY = $00000100;
- {$EXTERNALSYM JOB_OBJECT_LIMIT_PROCESS_MEMORY}
- JOB_OBJECT_LIMIT_JOB_MEMORY = $00000200;
- {$EXTERNALSYM JOB_OBJECT_LIMIT_JOB_MEMORY}
- JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = $00000400;
- {$EXTERNALSYM JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION}
- JOB_OBJECT_LIMIT_BREAKAWAY_OK = $00000800;
- {$EXTERNALSYM JOB_OBJECT_LIMIT_BREAKAWAY_OK}
- JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK = $00001000;
- {$EXTERNALSYM JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK}
- JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE = $00002000;
- {$EXTERNALSYM JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE}
- JOB_OBJECT_LIMIT_RESERVED2 = $00004000;
- {$EXTERNALSYM JOB_OBJECT_LIMIT_RESERVED2}
- JOB_OBJECT_LIMIT_RESERVED3 = $00008000;
- {$EXTERNALSYM JOB_OBJECT_LIMIT_RESERVED3}
- JOB_OBJECT_LIMIT_RESERVED4 = $00010000;
- {$EXTERNALSYM JOB_OBJECT_LIMIT_RESERVED4}
- JOB_OBJECT_LIMIT_RESERVED5 = $00020000;
- {$EXTERNALSYM JOB_OBJECT_LIMIT_RESERVED5}
- JOB_OBJECT_LIMIT_RESERVED6 = $00040000;
- {$EXTERNALSYM JOB_OBJECT_LIMIT_RESERVED6}
- JOB_OBJECT_LIMIT_VALID_FLAGS = $0007ffff;
- {$EXTERNALSYM JOB_OBJECT_LIMIT_VALID_FLAGS}
- JOB_OBJECT_BASIC_LIMIT_VALID_FLAGS = $000000ff;
- {$EXTERNALSYM JOB_OBJECT_BASIC_LIMIT_VALID_FLAGS}
- JOB_OBJECT_EXTENDED_LIMIT_VALID_FLAGS = $00003fff;
- {$EXTERNALSYM JOB_OBJECT_EXTENDED_LIMIT_VALID_FLAGS}
- JOB_OBJECT_RESERVED_LIMIT_VALID_FLAGS = $0007ffff;
- {$EXTERNALSYM JOB_OBJECT_RESERVED_LIMIT_VALID_FLAGS}
- //
- // UI restrictions for jobs
- //
- JOB_OBJECT_UILIMIT_NONE = $00000000;
- {$EXTERNALSYM JOB_OBJECT_UILIMIT_NONE}
- JOB_OBJECT_UILIMIT_HANDLES = $00000001;
- {$EXTERNALSYM JOB_OBJECT_UILIMIT_HANDLES}
- JOB_OBJECT_UILIMIT_READCLIPBOARD = $00000002;
- {$EXTERNALSYM JOB_OBJECT_UILIMIT_READCLIPBOARD}
- JOB_OBJECT_UILIMIT_WRITECLIPBOARD = $00000004;
- {$EXTERNALSYM JOB_OBJECT_UILIMIT_WRITECLIPBOARD}
- JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS = $00000008;
- {$EXTERNALSYM JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS}
- JOB_OBJECT_UILIMIT_DISPLAYSETTINGS = $00000010;
- {$EXTERNALSYM JOB_OBJECT_UILIMIT_DISPLAYSETTINGS}
- JOB_OBJECT_UILIMIT_GLOBALATOMS = $00000020;
- {$EXTERNALSYM JOB_OBJECT_UILIMIT_GLOBALATOMS}
- JOB_OBJECT_UILIMIT_DESKTOP = $00000040;
- {$EXTERNALSYM JOB_OBJECT_UILIMIT_DESKTOP}
- JOB_OBJECT_UILIMIT_EXITWINDOWS = $00000080;
- {$EXTERNALSYM JOB_OBJECT_UILIMIT_EXITWINDOWS}
- JOB_OBJECT_UILIMIT_ALL = $000000FF;
- {$EXTERNALSYM JOB_OBJECT_UILIMIT_ALL}
- JOB_OBJECT_UI_VALID_FLAGS = $000000FF;
- {$EXTERNALSYM JOB_OBJECT_UI_VALID_FLAGS}
- JOB_OBJECT_SECURITY_NO_ADMIN = $00000001;
- {$EXTERNALSYM JOB_OBJECT_SECURITY_NO_ADMIN}
- JOB_OBJECT_SECURITY_RESTRICTED_TOKEN = $00000002;
- {$EXTERNALSYM JOB_OBJECT_SECURITY_RESTRICTED_TOKEN}
- JOB_OBJECT_SECURITY_ONLY_TOKEN = $00000004;
- {$EXTERNALSYM JOB_OBJECT_SECURITY_ONLY_TOKEN}
- JOB_OBJECT_SECURITY_FILTER_TOKENS = $00000008;
- {$EXTERNALSYM JOB_OBJECT_SECURITY_FILTER_TOKENS}
- JOB_OBJECT_SECURITY_VALID_FLAGS = $0000000f;
- {$EXTERNALSYM JOB_OBJECT_SECURITY_VALID_FLAGS}
- type
- _JOBOBJECTINFOCLASS = (
- JobObjectInfoClassPadding0,
- JobObjectBasicAccountingInformation,
- JobObjectBasicLimitInformation,
- JobObjectBasicProcessIdList,
- JobObjectBasicUIRestrictions,
- JobObjectSecurityLimitInformation,
- JobObjectEndOfJobTimeInformation,
- JobObjectAssociateCompletionPortInformation,
- JobObjectBasicAndIoAccountingInformation,
- JobObjectExtendedLimitInformation,
- JobObjectJobSetInformation,
- MaxJobObjectInfoClass);
- {$EXTERNALSYM _JOBOBJECTINFOCLASS}
- JOBOBJECTINFOCLASS = _JOBOBJECTINFOCLASS;
- {$EXTERNALSYM JOBOBJECTINFOCLASS}
- TJobObjectInfoClass = JOBOBJECTINFOCLASS;
- const
- EVENT_MODIFY_STATE = $0002;
- {$EXTERNALSYM EVENT_MODIFY_STATE}
- EVENT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or $3;
- {$EXTERNALSYM EVENT_ALL_ACCESS}
- MUTANT_QUERY_STATE = $0001;
- {$EXTERNALSYM MUTANT_QUERY_STATE}
- MUTANT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or MUTANT_QUERY_STATE;
- {$EXTERNALSYM MUTANT_ALL_ACCESS}
- SEMAPHORE_MODIFY_STATE = $0002;
- {$EXTERNALSYM SEMAPHORE_MODIFY_STATE}
- SEMAPHORE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or $3;
- {$EXTERNALSYM SEMAPHORE_ALL_ACCESS}
- //
- // Timer Specific Access Rights.
- //
- TIMER_QUERY_STATE = $0001;
- {$EXTERNALSYM TIMER_QUERY_STATE}
- TIMER_MODIFY_STATE = $0002;
- {$EXTERNALSYM TIMER_MODIFY_STATE}
- TIMER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or TIMER_QUERY_STATE or TIMER_MODIFY_STATE;
- {$EXTERNALSYM TIMER_ALL_ACCESS}
- TIME_ZONE_ID_UNKNOWN = 0;
- {$EXTERNALSYM TIME_ZONE_ID_UNKNOWN}
- TIME_ZONE_ID_STANDARD = 1;
- {$EXTERNALSYM TIME_ZONE_ID_STANDARD}
- TIME_ZONE_ID_DAYLIGHT = 2;
- {$EXTERNALSYM TIME_ZONE_ID_DAYLIGHT}
- type
- _LOGICAL_PROCESSOR_RELATIONSHIP = (RelationProcessorCore, RelationNumaNode);
- {$EXTERNALSYM _LOGICAL_PROCESSOR_RELATIONSHIP}
- LOGICAL_PROCESSOR_RELATIONSHIP = _LOGICAL_PROCESSOR_RELATIONSHIP;
- {$EXTERNALSYM LOGICAL_PROCESSOR_RELATIONSHIP}
- TLogicalProcessorRelationship = LOGICAL_PROCESSOR_RELATIONSHIP;
- const
- LTP_PC_SMT = $1;
- {$EXTERNALSYM LTP_PC_SMT}
- type
- _SYSTEM_LOGICAL_PROCESSOR_INFORMATION = record
- ProcessorMask: ULONG_PTR;
- Relationship: LOGICAL_PROCESSOR_RELATIONSHIP;
- case Integer of
- 0: (Flags: BYTE); // ProcessorCore
- 1: (NodeNumber: DWORD); // NumaNode
- 2: (Reserved: array [0..1] of ULONGLONG);
- end;
- {$EXTERNALSYM _SYSTEM_LOGICAL_PROCESSOR_INFORMATION}
- SYSTEM_LOGICAL_PROCESSOR_INFORMATION = _SYSTEM_LOGICAL_PROCESSOR_INFORMATION;
- {$EXTERNALSYM SYSTEM_LOGICAL_PROCESSOR_INFORMATION}
- PSYSTEM_LOGICAL_PROCESSOR_INFORMATION = ^SYSTEM_LOGICAL_PROCESSOR_INFORMATION;
- TSystemLogicalProcessorInformation = SYSTEM_LOGICAL_PROCESSOR_INFORMATION;
- PSystemLogicalProcessorInformation = PSYSTEM_LOGICAL_PROCESSOR_INFORMATION;
- const
- PROCESSOR_INTEL_386 = 386;
- {$EXTERNALSYM PROCESSOR_INTEL_386}
- PROCESSOR_INTEL_486 = 486;
- {$EXTERNALSYM PROCESSOR_INTEL_486}
- PROCESSOR_INTEL_PENTIUM = 586;
- {$EXTERNALSYM PROCESSOR_INTEL_PENTIUM}
- PROCESSOR_INTEL_IA64 = 2200;
- {$EXTERNALSYM PROCESSOR_INTEL_IA64}
- PROCESSOR_AMD_X8664 = 8664;
- {$EXTERNALSYM PROCESSOR_AMD_X8664}
- PROCESSOR_MIPS_R4000 = 4000; // incl R4101 & R3910 for Windows CE
- {$EXTERNALSYM PROCESSOR_MIPS_R4000}
- PROCESSOR_ALPHA_21064 = 21064;
- {$EXTERNALSYM PROCESSOR_ALPHA_21064}
- PROCESSOR_PPC_601 = 601;
- {$EXTERNALSYM PROCESSOR_PPC_601}
- PROCESSOR_PPC_603 = 603;
- {$EXTERNALSYM PROCESSOR_PPC_603}
- PROCESSOR_PPC_604 = 604;
- {$EXTERNALSYM PROCESSOR_PPC_604}
- PROCESSOR_PPC_620 = 620;
- {$EXTERNALSYM PROCESSOR_PPC_620}
- PROCESSOR_HITACHI_SH3 = 10003; // Windows CE
- {$EXTERNALSYM PROCESSOR_HITACHI_SH3}
- PROCESSOR_HITACHI_SH3E = 10004; // Windows CE
- {$EXTERNALSYM PROCESSOR_HITACHI_SH3E}
- PROCESSOR_HITACHI_SH4 = 10005; // Windows CE
- {$EXTERNALSYM PROCESSOR_HITACHI_SH4}
- PROCESSOR_MOTOROLA_821 = 821; // Windows CE
- {$EXTERNALSYM PROCESSOR_MOTOROLA_821}
- PROCESSOR_SHx_SH3 = 103; // Windows CE
- {$EXTERNALSYM PROCESSOR_SHx_SH3}
- PROCESSOR_SHx_SH4 = 104; // Windows CE
- {$EXTERNALSYM PROCESSOR_SHx_SH4}
- PROCESSOR_STRONGARM = 2577; // Windows CE - 0xA11
- {$EXTERNALSYM PROCESSOR_STRONGARM}
- PROCESSOR_ARM720 = 1824; // Windows CE - 0x720
- {$EXTERNALSYM PROCESSOR_ARM720}
- PROCESSOR_ARM820 = 2080; // Windows CE - 0x820
- {$EXTERNALSYM PROCESSOR_ARM820}
- PROCESSOR_ARM920 = 2336; // Windows CE - 0x920
- {$EXTERNALSYM PROCESSOR_ARM920}
- PROCESSOR_ARM_7TDMI = 70001; // Windows CE
- {$EXTERNALSYM PROCESSOR_ARM_7TDMI}
- PROCESSOR_OPTIL = $494f; // MSIL
- {$EXTERNALSYM PROCESSOR_OPTIL}
- PROCESSOR_ARCHITECTURE_INTEL = 0;
- {$EXTERNALSYM PROCESSOR_ARCHITECTURE_INTEL}
- PROCESSOR_ARCHITECTURE_MIPS = 1;
- {$EXTERNALSYM PROCESSOR_ARCHITECTURE_MIPS}
- PROCESSOR_ARCHITECTURE_ALPHA = 2;
- {$EXTERNALSYM PROCESSOR_ARCHITECTURE_ALPHA}
- PROCESSOR_ARCHITECTURE_PPC = 3;
- {$EXTERNALSYM PROCESSOR_ARCHITECTURE_PPC}
- PROCESSOR_ARCHITECTURE_SHX = 4;
- {$EXTERNALSYM PROCESSOR_ARCHITECTURE_SHX}
- PROCESSOR_ARCHITECTURE_ARM = 5;
- {$EXTERNALSYM PROCESSOR_ARCHITECTURE_ARM}
- PROCESSOR_ARCHITECTURE_IA64 = 6;
- {$EXTERNALSYM PROCESSOR_ARCHITECTURE_IA64}
- PROCESSOR_ARCHITECTURE_ALPHA64 = 7;
- {$EXTERNALSYM PROCESSOR_ARCHITECTURE_ALPHA64}
- PROCESSOR_ARCHITECTURE_MSIL = 8;
- {$EXTERNALSYM PROCESSOR_ARCHITECTURE_MSIL}
- PROCESSOR_ARCHITECTURE_AMD64 = 9;
- {$EXTERNALSYM PROCESSOR_ARCHITECTURE_AMD64}
- PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 = 10;
- {$EXTERNALSYM PROCESSOR_ARCHITECTURE_IA32_ON_WIN64}
- PROCESSOR_ARCHITECTURE_UNKNOWN = $FFFF;
- {$EXTERNALSYM PROCESSOR_ARCHITECTURE_UNKNOWN}
- PF_FLOATING_POINT_PRECISION_ERRATA = 0;
- {$EXTERNALSYM PF_FLOATING_POINT_PRECISION_ERRATA}
- PF_FLOATING_POINT_EMULATED = 1;
- {$EXTERNALSYM PF_FLOATING_POINT_EMULATED}
- PF_COMPARE_EXCHANGE_DOUBLE = 2;
- {$EXTERNALSYM PF_COMPARE_EXCHANGE_DOUBLE}
- PF_MMX_INSTRUCTIONS_AVAILABLE = 3;
- {$EXTERNALSYM PF_MMX_INSTRUCTIONS_AVAILABLE}
- PF_PPC_MOVEMEM_64BIT_OK = 4;
- {$EXTERNALSYM PF_PPC_MOVEMEM_64BIT_OK}
- PF_ALPHA_BYTE_INSTRUCTIONS = 5;
- {$EXTERNALSYM PF_ALPHA_BYTE_INSTRUCTIONS}
- PF_XMMI_INSTRUCTIONS_AVAILABLE = 6;
- {$EXTERNALSYM PF_XMMI_INSTRUCTIONS_AVAILABLE}
- PF_3DNOW_INSTRUCTIONS_AVAILABLE = 7;
- {$EXTERNALSYM PF_3DNOW_INSTRUCTIONS_AVAILABLE}
- PF_RDTSC_INSTRUCTION_AVAILABLE = 8;
- {$EXTERNALSYM PF_RDTSC_INSTRUCTION_AVAILABLE}
- PF_PAE_ENABLED = 9;
- {$EXTERNALSYM PF_PAE_ENABLED}
- PF_XMMI64_INSTRUCTIONS_AVAILABLE = 10;
- {$EXTERNALSYM PF_XMMI64_INSTRUCTIONS_AVAILABLE}
- type
- PMEMORY_BASIC_INFORMATION = ^MEMORY_BASIC_INFORMATION;
- {$EXTERNALSYM PMEMORY_BASIC_INFORMATION}
- _MEMORY_BASIC_INFORMATION = record
- BaseAddress: Pointer;
- AllocationBase: Pointer;
- AllocationProtect: DWORD;
- RegionSize: SIZE_T;
- State: DWORD;
- Protect: DWORD;
- Type_: DWORD;
- end;
- {$EXTERNALSYM _MEMORY_BASIC_INFORMATION}
- MEMORY_BASIC_INFORMATION = _MEMORY_BASIC_INFORMATION;
- {$EXTERNALSYM MEMORY_BASIC_INFORMATION}
- TMemoryBasicInformation = MEMORY_BASIC_INFORMATION;
- PMemoryBasicInformation = PMEMORY_BASIC_INFORMATION;
- PMEMORY_BASIC_INFORMATION32 = ^MEMORY_BASIC_INFORMATION32;
- {$EXTERNALSYM PMEMORY_BASIC_INFORMATION32}
- _MEMORY_BASIC_INFORMATION32 = record
- BaseAddress: DWORD;
- AllocationBase: DWORD;
- AllocationProtect: DWORD;
- RegionSize: DWORD;
- State: DWORD;
- Protect: DWORD;
- Type_: DWORD;
- end;
- {$EXTERNALSYM _MEMORY_BASIC_INFORMATION32}
- MEMORY_BASIC_INFORMATION32 = _MEMORY_BASIC_INFORMATION32;
- {$EXTERNALSYM MEMORY_BASIC_INFORMATION32}
- TMemoryBasicInformation32 = MEMORY_BASIC_INFORMATION32;
- PMemoryBasicInformation32 = PMEMORY_BASIC_INFORMATION32;
- PMEMORY_BASIC_INFORMATION64 = ^MEMORY_BASIC_INFORMATION64;
- {$EXTERNALSYM PMEMORY_BASIC_INFORMATION64}
- _MEMORY_BASIC_INFORMATION64 = record
- BaseAddress: ULONGLONG;
- AllocationBase: ULONGLONG;
- AllocationProtect: DWORD;
- __alignment1: DWORD;
- RegionSize: ULONGLONG;
- State: DWORD;
- Protect: DWORD;
- Type_: DWORD;
- __alignment2: DWORD;
- end;
- {$EXTERNALSYM _MEMORY_BASIC_INFORMATION64}
- MEMORY_BASIC_INFORMATION64 = _MEMORY_BASIC_INFORMATION64;
- {$EXTERNALSYM MEMORY_BASIC_INFORMATION64}
- TMemoryBasicInformation64 = MEMORY_BASIC_INFORMATION64;
- PMemoryBasicInformation64 = PMEMORY_BASIC_INFORMATION64;
- const
- SECTION_QUERY = $0001;
- {$EXTERNALSYM SECTION_QUERY}
- SECTION_MAP_WRITE = $0002;
- {$EXTERNALSYM SECTION_MAP_WRITE}
- SECTION_MAP_READ = $0004;
- {$EXTERNALSYM SECTION_MAP_READ}
- SECTION_MAP_EXECUTE = $0008;
- {$EXTERNALSYM SECTION_MAP_EXECUTE}
- SECTION_EXTEND_SIZE = $0010;
- {$EXTERNALSYM SECTION_EXTEND_SIZE}
- SECTION_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED or SECTION_QUERY or
- SECTION_MAP_WRITE or SECTION_MAP_READ or SECTION_MAP_EXECUTE or
- SECTION_EXTEND_SIZE);
- {$EXTERNALSYM SECTION_ALL_ACCESS}
- PAGE_NOACCESS = $01;
- {$EXTERNALSYM PAGE_NOACCESS}
- PAGE_READONLY = $02;
- {$EXTERNALSYM PAGE_READONLY}
- PAGE_READWRITE = $04;
- {$EXTERNALSYM PAGE_READWRITE}
- PAGE_WRITECOPY = $08;
- {$EXTERNALSYM PAGE_WRITECOPY}
- PAGE_EXECUTE = $10;
- {$EXTERNALSYM PAGE_EXECUTE}
- PAGE_EXECUTE_READ = $20;
- {$EXTERNALSYM PAGE_EXECUTE_READ}
- PAGE_EXECUTE_READWRITE = $40;
- {$EXTERNALSYM PAGE_EXECUTE_READWRITE}
- PAGE_EXECUTE_WRITECOPY = $80;
- {$EXTERNALSYM PAGE_EXECUTE_WRITECOPY}
- PAGE_GUARD = $100;
- {$EXTERNALSYM PAGE_GUARD}
- PAGE_NOCACHE = $200;
- {$EXTERNALSYM PAGE_NOCACHE}
- PAGE_WRITECOMBINE = $400;
- {$EXTERNALSYM PAGE_WRITECOMBINE}
- MEM_COMMIT = $1000;
- {$EXTERNALSYM MEM_COMMIT}
- MEM_RESERVE = $2000;
- {$EXTERNALSYM MEM_RESERVE}
- MEM_DECOMMIT = $4000;
- {$EXTERNALSYM MEM_DECOMMIT}
- MEM_RELEASE = $8000;
- {$EXTERNALSYM MEM_RELEASE}
- MEM_FREE = $10000;
- {$EXTERNALSYM MEM_FREE}
- MEM_PRIVATE = $20000;
- {$EXTERNALSYM MEM_PRIVATE}
- MEM_MAPPED = $40000;
- {$EXTERNALSYM MEM_MAPPED}
- MEM_RESET = $80000;
- {$EXTERNALSYM MEM_RESET}
- MEM_TOP_DOWN = $100000;
- {$EXTERNALSYM MEM_TOP_DOWN}
- MEM_WRITE_WATCH = $200000;
- {$EXTERNALSYM MEM_WRITE_WATCH}
- MEM_PHYSICAL = $400000;
- {$EXTERNALSYM MEM_PHYSICAL}
- MEM_LARGE_PAGES = $20000000;
- {$EXTERNALSYM MEM_LARGE_PAGES}
- MEM_4MB_PAGES = DWORD($80000000);
- {$EXTERNALSYM MEM_4MB_PAGES}
- SEC_FILE = $800000;
- {$EXTERNALSYM SEC_FILE}
- SEC_IMAGE = $1000000;
- {$EXTERNALSYM SEC_IMAGE}
- SEC_RESERVE = $4000000;
- {$EXTERNALSYM SEC_RESERVE}
- SEC_COMMIT = DWORD($8000000);
- {$EXTERNALSYM SEC_COMMIT}
- SEC_NOCACHE = $10000000;
- {$EXTERNALSYM SEC_NOCACHE}
- MEM_IMAGE = SEC_IMAGE;
- {$EXTERNALSYM MEM_IMAGE}
- WRITE_WATCH_FLAG_RESET = $01;
- {$EXTERNALSYM WRITE_WATCH_FLAG_RESET}
- //
- // Define access rights to files and directories
- //
- //
- // The FILE_READ_DATA and FILE_WRITE_DATA constants are also defined in
- // devioctl.h as FILE_READ_ACCESS and FILE_WRITE_ACCESS. The values for these
- // constants *MUST* always be in sync.
- // The values are redefined in devioctl.h because they must be available to
- // both DOS and NT.
- //
- FILE_READ_DATA = $0001; // file & pipe
- {$EXTERNALSYM FILE_READ_DATA}
- FILE_LIST_DIRECTORY = $0001; // directory
- {$EXTERNALSYM FILE_LIST_DIRECTORY}
- FILE_WRITE_DATA = $0002; // file & pipe
- {$EXTERNALSYM FILE_WRITE_DATA}
- FILE_ADD_FILE = $0002; // directory
- {$EXTERNALSYM FILE_ADD_FILE}
- FILE_APPEND_DATA = $0004; // file
- {$EXTERNALSYM FILE_APPEND_DATA}
- FILE_ADD_SUBDIRECTORY = $0004; // directory
- {$EXTERNALSYM FILE_ADD_SUBDIRECTORY}
- FILE_CREATE_PIPE_INSTANCE = $0004; // named pipe
- {$EXTERNALSYM FILE_CREATE_PIPE_INSTANCE}
- FILE_READ_EA = $0008; // file & directory
- {$EXTERNALSYM FILE_READ_EA}
- FILE_WRITE_EA = $0010; // file & directory
- {$EXTERNALSYM FILE_WRITE_EA}
- FILE_EXECUTE = $0020; // file
- {$EXTERNALSYM FILE_EXECUTE}
- FILE_TRAVERSE = $0020; // directory
- {$EXTERNALSYM FILE_TRAVERSE}
- FILE_DELETE_CHILD = $0040; // directory
- {$EXTERNALSYM FILE_DELETE_CHILD}
- FILE_READ_ATTRIBUTES = $0080; // all
- {$EXTERNALSYM FILE_READ_ATTRIBUTES}
- FILE_WRITE_ATTRIBUTES = $0100; // all
- {$EXTERNALSYM FILE_WRITE_ATTRIBUTES}
- FILE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or $1FF;
- {$EXTERNALSYM FILE_ALL_ACCESS}
- FILE_GENERIC_READ = (STANDARD_RIGHTS_READ or FILE_READ_DATA or
- FILE_READ_ATTRIBUTES or FILE_READ_EA or SYNCHRONIZE);
- {$EXTERNALSYM FILE_GENERIC_READ}
- FILE_GENERIC_WRITE = (STANDARD_RIGHTS_WRITE or FILE_WRITE_DATA or
- FILE_WRITE_ATTRIBUTES or FILE_WRITE_EA or FILE_APPEND_DATA or SYNCHRONIZE);
- {$EXTERNALSYM FILE_GENERIC_WRITE}
- FILE_GENERIC_EXECUTE = (STANDARD_RIGHTS_EXECUTE or FILE_READ_ATTRIBUTES or
- FILE_EXECUTE or SYNCHRONIZE);
- {$EXTERNALSYM FILE_GENERIC_EXECUTE}
- FILE_SHARE_READ = $00000001;
- {$EXTERNALSYM FILE_SHARE_READ}
- FILE_SHARE_WRITE = $00000002;
- {$EXTERNALSYM FILE_SHARE_WRITE}
- FILE_SHARE_DELETE = $00000004;
- {$EXTERNALSYM FILE_SHARE_DELETE}
- FILE_ATTRIBUTE_READONLY = $00000001;
- {$EXTERNALSYM FILE_ATTRIBUTE_READONLY}
- FILE_ATTRIBUTE_HIDDEN = $00000002;
- {$EXTERNALSYM FILE_ATTRIBUTE_HIDDEN}
- FILE_ATTRIBUTE_SYSTEM = $00000004;
- {$EXTERNALSYM FILE_ATTRIBUTE_SYSTEM}
- FILE_ATTRIBUTE_DIRECTORY = $00000010;
- {$EXTERNALSYM FILE_ATTRIBUTE_DIRECTORY}
- FILE_ATTRIBUTE_ARCHIVE = $00000020;
- {$EXTERNALSYM FILE_ATTRIBUTE_ARCHIVE}
- FILE_ATTRIBUTE_DEVICE = $00000040;
- {$EXTERNALSYM FILE_ATTRIBUTE_DEVICE}
- FILE_ATTRIBUTE_NORMAL = $00000080;
- {$EXTERNALSYM FILE_ATTRIBUTE_NORMAL}
- FILE_ATTRIBUTE_TEMPORARY = $00000100;
- {$EXTERNALSYM FILE_ATTRIBUTE_TEMPORARY}
- FILE_ATTRIBUTE_SPARSE_FILE = $00000200;
- {$EXTERNALSYM FILE_ATTRIBUTE_SPARSE_FILE}
- FILE_ATTRIBUTE_REPARSE_POINT = $00000400;
- {$EXTERNALSYM FILE_ATTRIBUTE_REPARSE_POINT}
- FILE_ATTRIBUTE_COMPRESSED = $00000800;
- {$EXTERNALSYM FILE_ATTRIBUTE_COMPRESSED}
- FILE_ATTRIBUTE_OFFLINE = $00001000;
- {$EXTERNALSYM FILE_ATTRIBUTE_OFFLINE}
- FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = $00002000;
- {$EXTERNALSYM FILE_ATTRIBUTE_NOT_CONTENT_INDEXED}
- FILE_ATTRIBUTE_ENCRYPTED = $00004000;
- {$EXTERNALSYM FILE_ATTRIBUTE_ENCRYPTED}
- FILE_NOTIFY_CHANGE_FILE_NAME = $00000001;
- {$EXTERNALSYM FILE_NOTIFY_CHANGE_FILE_NAME}
- FILE_NOTIFY_CHANGE_DIR_NAME = $00000002;
- {$EXTERNALSYM FILE_NOTIFY_CHANGE_DIR_NAME}
- FILE_NOTIFY_CHANGE_ATTRIBUTES = $00000004;
- {$EXTERNALSYM FILE_NOTIFY_CHANGE_ATTRIBUTES}
- FILE_NOTIFY_CHANGE_SIZE = $00000008;
- {$EXTERNALSYM FILE_NOTIFY_CHANGE_SIZE}
- FILE_NOTIFY_CHANGE_LAST_WRITE = $00000010;
- {$EXTERNALSYM FILE_NOTIFY_CHANGE_LAST_WRITE}
- FILE_NOTIFY_CHANGE_LAST_ACCESS = $00000020;
- {$EXTERNALSYM FILE_NOTIFY_CHANGE_LAST_ACCESS}
- FILE_NOTIFY_CHANGE_CREATION = $00000040;
- {$EXTERNALSYM FILE_NOTIFY_CHANGE_CREATION}
- FILE_NOTIFY_CHANGE_SECURITY = $00000100;
- {$EXTERNALSYM FILE_NOTIFY_CHANGE_SECURITY}
- FILE_ACTION_ADDED = $00000001;
- {$EXTERNALSYM FILE_ACTION_ADDED}
- FILE_ACTION_REMOVED = $00000002;
- {$EXTERNALSYM FILE_ACTION_REMOVED}
- FILE_ACTION_MODIFIED = $00000003;
- {$EXTERNALSYM FILE_ACTION_MODIFIED}
- FILE_ACTION_RENAMED_OLD_NAME = $00000004;
- {$EXTERNALSYM FILE_ACTION_RENAMED_OLD_NAME}
- FILE_ACTION_RENAMED_NEW_NAME = $00000005;
- {$EXTERNALSYM FILE_ACTION_RENAMED_NEW_NAME}
- MAILSLOT_NO_MESSAGE = DWORD(-1);
- {$EXTERNALSYM MAILSLOT_NO_MESSAGE}
- MAILSLOT_WAIT_FOREVER = DWORD(-1);
- {$EXTERNALSYM MAILSLOT_WAIT_FOREVER}
- FILE_CASE_SENSITIVE_SEARCH = $00000001;
- {$EXTERNALSYM FILE_CASE_SENSITIVE_SEARCH}
- FILE_CASE_PRESERVED_NAMES = $00000002;
- {$EXTERNALSYM FILE_CASE_PRESERVED_NAMES}
- FILE_UNICODE_ON_DISK = $00000004;
- {$EXTERNALSYM FILE_UNICODE_ON_DISK}
- FILE_PERSISTENT_ACLS = $00000008;
- {$EXTERNALSYM FILE_PERSISTENT_ACLS}
- FILE_FILE_COMPRESSION = $00000010;
- {$EXTERNALSYM FILE_FILE_COMPRESSION}
- FILE_VOLUME_QUOTAS = $00000020;
- {$EXTERNALSYM FILE_VOLUME_QUOTAS}
- FILE_SUPPORTS_SPARSE_FILES = $00000040;
- {$EXTERNALSYM FILE_SUPPORTS_SPARSE_FILES}
- FILE_SUPPORTS_REPARSE_POINTS = $00000080;
- {$EXTERNALSYM FILE_SUPPORTS_REPARSE_POINTS}
- FILE_SUPPORTS_REMOTE_STORAGE = $00000100;
- {$EXTERNALSYM FILE_SUPPORTS_REMOTE_STORAGE}
- FILE_VOLUME_IS_COMPRESSED = $00008000;
- {$EXTERNALSYM FILE_VOLUME_IS_COMPRESSED}
- FILE_SUPPORTS_OBJECT_IDS = $00010000;
- {$EXTERNALSYM FILE_SUPPORTS_OBJECT_IDS}
- FILE_SUPPORTS_ENCRYPTION = $00020000;
- {$EXTERNALSYM FILE_SUPPORTS_ENCRYPTION}
- FILE_NAMED_STREAMS = $00040000;
- {$EXTERNALSYM FILE_NAMED_STREAMS}
- FILE_READ_ONLY_VOLUME = $00080000;
- {$EXTERNALSYM FILE_READ_ONLY_VOLUME}
- //
- // Define the file notification information structure
- //
- type
- PFILE_NOTIFY_INFORMATION = ^FILE_NOTIFY_INFORMATION;
- {$EXTERNALSYM PFILE_NOTIFY_INFORMATION}
- _FILE_NOTIFY_INFORMATION = record
- NextEntryOffset: DWORD;
- Action: DWORD;
- FileNameLength: DWORD;
- FileName: array [0..0] of WCHAR;
- end;
- {$EXTERNALSYM _FILE_NOTIFY_INFORMATION}
- FILE_NOTIFY_INFORMATION = _FILE_NOTIFY_INFORMATION;
- {$EXTERNALSYM FILE_NOTIFY_INFORMATION}
- TFileNotifyInformation = FILE_NOTIFY_INFORMATION;
- PFileNotifyInformation = PFILE_NOTIFY_INFORMATION;
- //
- // Define segement buffer structure for scatter/gather read/write.
- //
- type
- PFILE_SEGMENT_ELEMENT = ^FILE_SEGMENT_ELEMENT;
- {$EXTERNALSYM PFILE_SEGMENT_ELEMENT}
- _FILE_SEGMENT_ELEMENT = record
- case Integer of
- 0: (Buffer: PVOID64);
- 1: (Alignment: ULONGLONG);
- end;
- {$EXTERNALSYM _FILE_SEGMENT_ELEMENT}
- FILE_SEGMENT_ELEMENT = _FILE_SEGMENT_ELEMENT;
- {$EXTERNALSYM FILE_SEGMENT_ELEMENT}
- TFileSegmentElement = FILE_SEGMENT_ELEMENT;
- PFileSegmentElement = PFILE_SEGMENT_ELEMENT;
- //
- // The reparse GUID structure is used by all 3rd party layered drivers to
- // store data in a reparse point. For non-Microsoft tags, The GUID field
- // cannot be GUID_NULL.
- // The constraints on reparse tags are defined below.
- // Microsoft tags can also be used with this format of the reparse point buffer.
- //
- TGenericReparseBuffer = record
- DataBuffer: array [0..0] of BYTE;
- end;
- PREPARSE_GUID_DATA_BUFFER = ^REPARSE_GUID_DATA_BUFFER;
- {$EXTERNALSYM PREPARSE_GUID_DATA_BUFFER}
- _REPARSE_GUID_DATA_BUFFER = record
- ReparseTag: DWORD;
- ReparseDataLength: WORD;
- Reserved: WORD;
- ReparseGuid: GUID;
- GenericReparseBuffer: TGenericReparseBuffer;
- end;
- {$EXTERNALSYM _REPARSE_GUID_DATA_BUFFER}
- REPARSE_GUID_DATA_BUFFER = _REPARSE_GUID_DATA_BUFFER;
- {$EXTERNALSYM REPARSE_GUID_DATA_BUFFER}
- TReparseGuidDataBuffer = REPARSE_GUID_DATA_BUFFER;
- PReparseGuidDataBuffer = PREPARSE_GUID_DATA_BUFFER;
- const
- REPARSE_GUID_DATA_BUFFER_HEADER_SIZE = 24;
- {$EXTERNALSYM REPARSE_GUID_DATA_BUFFER_HEADER_SIZE}
- //
- // Maximum allowed size of the reparse data.
- //
- const
- MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024;
- {$EXTERNALSYM MAXIMUM_REPARSE_DATA_BUFFER_SIZE}
- //
- // Predefined reparse tags.
- // These tags need to avoid conflicting with IO_REMOUNT defined in ntos\inc\io.h
- //
- IO_REPARSE_TAG_RESERVED_ZERO = 0;
- {$EXTERNALSYM IO_REPARSE_TAG_RESERVED_ZERO}
- IO_REPARSE_TAG_RESERVED_ONE = 1;
- {$EXTERNALSYM IO_REPARSE_TAG_RESERVED_ONE}
- //
- // The value of the following constant needs to satisfy the following conditions:
- // (1) Be at least as large as the largest of the reserved tags.
- // (2) Be strictly smaller than all the tags in use.
- //
- IO_REPARSE_TAG_RESERVED_RANGE = IO_REPARSE_TAG_RESERVED_ONE;
- {$EXTERNALSYM IO_REPARSE_TAG_RESERVED_RANGE}
- //
- // The reparse tags are a DWORD. The 32 bits are laid out as follows:
- //
- // 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
- // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
- // +-+-+-+-+-----------------------+-------------------------------+
- // |M|R|N|R| Reserved bits | Reparse Tag Value |
- // +-+-+-+-+-----------------------+-------------------------------+
- //
- // M is the Microsoft bit. When set to 1, it denotes a tag owned by Microsoft.
- // All ISVs must use a tag with a 0 in this position.
- // Note: If a Microsoft tag is used by non-Microsoft software, the
- // behavior is not defined.
- //
- // R is reserved. Must be zero for non-Microsoft tags.
- //
- // N is name surrogate. When set to 1, the file represents another named
- // entity in the system.
- //
- // The M and N bits are OR-able.
- // The following macros check for the M and N bit values:
- //
- //
- // Macro to determine whether a reparse point tag corresponds to a tag
- // owned by Microsoft.
- //
- function IsReparseTagMicrosoft(Tag: ULONG): Boolean;
- {$EXTERNALSYM IsReparseTagMicrosoft}
- //
- // Macro to determine whether a reparse point tag corresponds to a file
- // that is to be displayed with the slow icon overlay.
- //
- function IsReparseTagHighLatency(Tag: ULONG): Boolean;
- {$EXTERNALSYM IsReparseTagHighLatency}
- //
- // Macro to determine whether a reparse point tag is a name surrogate
- //
- function IsReparseTagNameSurrogate(Tag: ULONG): Boolean;
- {$EXTERNALSYM IsReparseTagNameSurrogate}
- const
- IO_REPARSE_TAG_MOUNT_POINT = DWORD($A0000003);
- {$EXTERNALSYM IO_REPARSE_TAG_MOUNT_POINT}
- IO_REPARSE_TAG_HSM = DWORD($C0000004);
- {$EXTERNALSYM IO_REPARSE_TAG_HSM}
- IO_REPARSE_TAG_SIS = DWORD($80000007);
- {$EXTERNALSYM IO_REPARSE_TAG_SIS}
- IO_REPARSE_TAG_DFS = DWORD($8000000A);
- {$EXTERNALSYM IO_REPARSE_TAG_DFS}
- IO_REPARSE_TAG_FILTER_MANAGER = DWORD($8000000B);
- {$EXTERNALSYM IO_REPARSE_TAG_FILTER_MANAGER}
- IO_COMPLETION_MODIFY_STATE = $0002;
- {$EXTERNALSYM IO_COMPLETION_MODIFY_STATE}
- IO_COMPLETION_ALL_ACCESS = DWORD(STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or $3);
- {$EXTERNALSYM IO_COMPLETION_ALL_ACCESS}
- DUPLICATE_CLOSE_SOURCE = $00000001;
- {$EXTERNALSYM DUPLICATE_CLOSE_SOURCE}
- DUPLICATE_SAME_ACCESS = $00000002;
- {$EXTERNALSYM DUPLICATE_SAME_ACCESS}
- type
- _SYSTEM_POWER_STATE = (
- PowerSystemUnspecified,
- PowerSystemWorking,
- PowerSystemSleeping1,
- PowerSystemSleeping2,
- PowerSystemSleeping3,
- PowerSystemHibernate,
- PowerSystemShutdown,
- PowerSystemMaximum);
- {$EXTERNALSYM _SYSTEM_POWER_STATE}
- SYSTEM_POWER_STATE = _SYSTEM_POWER_STATE;
- {$EXTERNALSYM SYSTEM_POWER_STATE}
- PSYSTEM_POWER_STATE = ^SYSTEM_POWER_STATE;
- {$EXTERNALSYM PSYSTEM_POWER_STATE}
- TSystemPowerState = SYSTEM_POWER_STATE;
- PSystemPowerState = PSYSTEM_POWER_STATE;
- const
- POWER_SYSTEM_MAXIMUM = 7;
- {$EXTERNALSYM POWER_SYSTEM_MAXIMUM}
- type
- POWER_ACTION = (
- PowerActionNone,
- PowerActionReserved,
- PowerActionSleep,
- PowerActionHibernate,
- PowerActionShutdown,
- PowerActionShutdownReset,
- PowerActionShutdownOff,
- PowerActionWarmEject);
- {$EXTERNALSYM POWER_ACTION}
- PPOWER_ACTION = ^POWER_ACTION;
- {$EXTERNALSYM PPOWER_ACTION}
- TPowerAction = POWER_ACTION;
- PPowerAction = PPOWER_ACTION;
- _DEVICE_POWER_STATE = (
- PowerDeviceUnspecified,
- PowerDeviceD0,
- PowerDeviceD1,
- PowerDeviceD2,
- PowerDeviceD3,
- PowerDeviceMaximum);
- {$EXTERNALSYM _DEVICE_POWER_STATE}
- DEVICE_POWER_STATE = _DEVICE_POWER_STATE;
- {$EXTERNALSYM DEVICE_POWER_STATE}
- PDEVICE_POWER_STATE = ^DEVICE_POWER_STATE;
- {$EXTERNALSYM PDEVICE_POWER_STATE}
- TDevicePowerState = DEVICE_POWER_STATE;
- PDevicePowerState = PDEVICE_POWER_STATE;
- const
- ES_SYSTEM_REQUIRED = DWORD($00000001);
- {$EXTERNALSYM ES_SYSTEM_REQUIRED}
- ES_DISPLAY_REQUIRED = DWORD($00000002);
- {$EXTERNALSYM ES_DISPLAY_REQUIRED}
- ES_USER_PRESENT = DWORD($00000004);
- {$EXTERNALSYM ES_USER_PRESENT}
- ES_CONTINUOUS = DWORD($80000000);
- {$EXTERNALSYM ES_CONTINUOUS}
- type
- EXECUTION_STATE = DWORD;
- {$EXTERNALSYM EXECUTION_STATE}
- LATENCY_TIME = (LT_DONT_CARE, LT_LOWEST_LATENCY);
- {$EXTERNALSYM LATENCY_TIME}
- TLatencyTime = LATENCY_TIME;
- //-----------------------------------------------------------------------------
- // Device Power Information
- // Accessable via CM_Get_DevInst_Registry_Property_Ex(CM_DRP_DEVICE_POWER_DATA)
- //-----------------------------------------------------------------------------
- const
- PDCAP_D0_SUPPORTED = $00000001;
- {$EXTERNALSYM PDCAP_D0_SUPPORTED}
- PDCAP_D1_SUPPORTED = $00000002;
- {$EXTERNALSYM PDCAP_D1_SUPPORTED}
- PDCAP_D2_SUPPORTED = $00000004;
- {$EXTERNALSYM PDCAP_D2_SUPPORTED}
- PDCAP_D3_SUPPORTED = $00000008;
- {$EXTERNALSYM PDCAP_D3_SUPPORTED}
- PDCAP_WAKE_FROM_D0_SUPPORTED = $00000010;
- {$EXTERNALSYM PDCAP_WAKE_FROM_D0_SUPPORTED}
- PDCAP_WAKE_FROM_D1_SUPPORTED = $00000020;
- {$EXTERNALSYM PDCAP_WAKE_FROM_D1_SUPPORTED}
- PDCAP_WAKE_FROM_D2_SUPPORTED = $00000040;
- {$EXTERNALSYM PDCAP_WAKE_FROM_D2_SUPPORTED}
- PDCAP_WAKE_FROM_D3_SUPPORTED = $00000080;
- {$EXTERNALSYM PDCAP_WAKE_FROM_D3_SUPPORTED}
- PDCAP_WARM_EJECT_SUPPORTED = $00000100;
- {$EXTERNALSYM PDCAP_WARM_EJECT_SUPPORTED}
- type
- CM_Power_Data_s = record
- PD_Size: DWORD;
- PD_MostRecentPowerState: DEVICE_POWER_STATE;
- PD_Capabilities: DWORD;
- PD_D1Latency: DWORD;
- PD_D2Latency: DWORD;
- PD_D3Latency: DWORD;
- PD_PowerStateMapping: array [0..POWER_SYSTEM_MAXIMUM - 1] of DEVICE_POWER_STATE;
- PD_DeepestSystemWake: SYSTEM_POWER_STATE;
- end;
- {$EXTERNALSYM CM_Power_Data_s}
- CM_POWER_DATA = CM_Power_Data_s;
- {$EXTERNALSYM CM_POWER_DATA}
- PCM_POWER_DATA = ^CM_POWER_DATA;
- {$EXTERNALSYM PCM_POWER_DATA}
- TCmPowerData = CM_POWER_DATA;
- PCmPowerData = PCM_POWER_DATA;
- POWER_INFORMATION_LEVEL = (
- SystemPowerPolicyAc,
- SystemPowerPolicyDc,
- VerifySystemPolicyAc,
- VerifySystemPolicyDc,
- SystemPowerCapabilities,
- SystemBatteryState,
- SystemPowerStateHandler,
- ProcessorStateHandler,
- SystemPowerPolicyCurrent,
- AdministratorPowerPolicy,
- SystemReserveHiberFile,
- ProcessorInformation,
- SystemPowerInformation,
- ProcessorStateHandler2,
- LastWakeTime, // Compare with KeQueryInterruptTime()
- LastSleepTime, // Compare with KeQueryInterruptTime()
- SystemExecutionState,
- SystemPowerStateNotifyHandler,
- ProcessorPowerPolicyAc,
- ProcessorPowerPolicyDc,
- VerifyProcessorPowerPolicyAc,
- VerifyProcessorPowerPolicyDc,
- ProcessorPowerPolicyCurrent,
- SystemPowerStateLogging,
- SystemPowerLoggingEntry);
- {$EXTERNALSYM POWER_INFORMATION_LEVEL}
- TPowerInformationLevel = POWER_INFORMATION_LEVEL;
- //
- // System power manager capabilities
- //
- BATTERY_REPORTING_SCALE = record
- Granularity: DWORD;
- Capacity: DWORD;
- end;
- {$EXTERNALSYM BATTERY_REPORTING_SCALE}
- PBATTERY_REPORTING_SCALE = ^BATTERY_REPORTING_SCALE;
- {$EXTERNALSYM PBATTERY_REPORTING_SCALE}
- TBatteryReportingScale = BATTERY_REPORTING_SCALE;
- PBatteryReportingScale = PBATTERY_REPORTING_SCALE;
- // Power Policy Management interfaces
- //
- PPOWER_ACTION_POLICY = ^POWER_ACTION_POLICY;
- {$EXTERNALSYM PPOWER_ACTION_POLICY}
- POWER_ACTION_POLICY = record
- Action: POWER_ACTION;
- Flags: DWORD;
- EventCode: DWORD;
- end;
- {$EXTERNALSYM POWER_ACTION_POLICY}
- TPowerActionPolicy = POWER_ACTION_POLICY;
- PPowerActionPolicy = PPOWER_ACTION_POLICY;
- // POWER_ACTION_POLICY->Flags:
- const
- POWER_ACTION_QUERY_ALLOWED = $00000001;
- {$EXTERNALSYM POWER_ACTION_QUERY_ALLOWED}
- POWER_ACTION_UI_ALLOWED = $00000002;
- {$EXTERNALSYM POWER_ACTION_UI_ALLOWED}
- POWER_ACTION_OVERRIDE_APPS = $00000004;
- {$EXTERNALSYM POWER_ACTION_OVERRIDE_APPS}
- POWER_ACTION_LIGHTEST_FIRST = $10000000;
- {$EXTERNALSYM POWER_ACTION_LIGHTEST_FIRST}
- POWER_ACTION_LOCK_CONSOLE = $20000000;
- {$EXTERNALSYM POWER_ACTION_LOCK_CONSOLE}
- POWER_ACTION_DISABLE_WAKES = $40000000;
- {$EXTERNALSYM POWER_ACTION_DISABLE_WAKES}
- POWER_ACTION_CRITICAL = DWORD($80000000);
- {$EXTERNALSYM POWER_ACTION_CRITICAL}
- // POWER_ACTION_POLICY->EventCode flags
- POWER_LEVEL_USER_NOTIFY_TEXT = $00000001;
- {$EXTERNALSYM POWER_LEVEL_USER_NOTIFY_TEXT}
- POWER_LEVEL_USER_NOTIFY_SOUND = $00000002;
- {$EXTERNALSYM POWER_LEVEL_USER_NOTIFY_SOUND}
- POWER_LEVEL_USER_NOTIFY_EXEC = $00000004;
- {$EXTERNALSYM POWER_LEVEL_USER_NOTIFY_EXEC}
- POWER_USER_NOTIFY_BUTTON = $00000008;
- {$EXTERNALSYM POWER_USER_NOTIFY_BUTTON}
- POWER_USER_NOTIFY_SHUTDOWN = $00000010;
- {$EXTERNALSYM POWER_USER_NOTIFY_SHUTDOWN}
- POWER_FORCE_TRIGGER_RESET = DWORD($80000000);
- {$EXTERNALSYM POWER_FORCE_TRIGGER_RESET}
- // system battery drain policies
- type
- PSYSTEM_POWER_LEVEL = ^SYSTEM_POWER_LEVEL;
- {$EXTERNALSYM PSYSTEM_POWER_LEVEL}
- SYSTEM_POWER_LEVEL = record
- Enable: BOOLEAN;
- Spare: array [0..3 - 1] of BYTE;
- BatteryLevel: DWORD;
- PowerPolicy: POWER_ACTION_POLICY;
- MinSystemState: SYSTEM_POWER_STATE;
- end;
- {$EXTERNALSYM SYSTEM_POWER_LEVEL}
- TSystemPowerLevel = SYSTEM_POWER_LEVEL;
- PSystemPowerLevel = PSYSTEM_POWER_LEVEL;
- // Discharge policy constants
- const
- NUM_DISCHARGE_POLICIES = 4;
- {$EXTERNALSYM NUM_DISCHARGE_POLICIES}
- DISCHARGE_POLICY_CRITICAL = 0;
- {$EXTERNALSYM DISCHARGE_POLICY_CRITICAL}
- DISCHARGE_POLICY_LOW = 1;
- {$EXTERNALSYM DISCHARGE_POLICY_LOW}
- //
- // Throttling policies
- //
- PO_THROTTLE_NONE = 0;
- {$EXTERNALSYM PO_THROTTLE_NONE}
- PO_THROTTLE_CONSTANT = 1;
- {$EXTERNALSYM PO_THROTTLE_CONSTANT}
- PO_THROTTLE_DEGRADE = 2;
- {$EXTERNALSYM PO_THROTTLE_DEGRADE}
- PO_THROTTLE_ADAPTIVE = 3;
- {$EXTERNALSYM PO_THROTTLE_ADAPTIVE}
- PO_THROTTLE_MAXIMUM = 4; // not a policy, just a limit
- {$EXTERNALSYM PO_THROTTLE_MAXIMUM}
- // system power policies
- type
- PSYSTEM_POWER_POLICY = ^SYSTEM_POWER_POLICY;
- {$EXTERNALSYM PSYSTEM_POWER_POLICY}
- _SYSTEM_POWER_POLICY = record
- Revision: DWORD; // 1
- // events
- PowerButton: POWER_ACTION_POLICY;
- SleepButton: POWER_ACTION_POLICY;
- LidClose: POWER_ACTION_POLICY;
- LidOpenWake: SYSTEM_POWER_STATE;
- Reserved: DWORD;
- // "system idle" detection
- Idle: POWER_ACTION_POLICY;
- IdleTimeout: DWORD;
- IdleSensitivity: BYTE;
- // dynamic throttling policy
- // PO_THROTTLE_NONE, PO_THROTTLE_CONSTANT, PO_THROTTLE_DEGRADE, or PO_THROTTLE_ADAPTIVE
- DynamicThrottle: BYTE;
- Spare2: array [0..1] of BYTE;
- // meaning of power action "sleep"
- MinSleep: SYSTEM_POWER_STATE;
- MaxSleep: SYSTEM_POWER_STATE;
- ReducedLatencySleep: SYSTEM_POWER_STATE;
- WinLogonFlags: DWORD;
- // parameters for dozing
- Spare3: DWORD;
- DozeS4Timeout: DWORD;
- // battery policies
- BroadcastCapacityResolution: DWORD;
- DischargePolicy: array [0..NUM_DISCHARGE_POLICIES - 1] of SYSTEM_POWER_LEVEL;
- // video policies
- VideoTimeout: DWORD;
- VideoDimDisplay: BOOLEAN;
- VideoReserved: array [0..2] of DWORD;
- // hard disk policies
- SpindownTimeout: DWORD;
- // processor policies
- OptimizeForPower: LongBool;
- FanThrottleTolerance: BYTE;
- ForcedThrottle: BYTE;
- MinThrottle: BYTE;
- OverThrottled: POWER_ACTION_POLICY;
- end;
- {$EXTERNALSYM _SYSTEM_POWER_POLICY}
- SYSTEM_POWER_POLICY = _SYSTEM_POWER_POLICY;
- {$EXTERNALSYM SYSTEM_POWER_POLICY}
- TSystemPowerPolicy = SYSTEM_POWER_POLICY;
- PSystemPowerPolicy = PSYSTEM_POWER_POLICY;
- // processor power policy state
- PPROCESSOR_POWER_POLICY_INFO = ^PROCESSOR_POWER_POLICY_INFO;
- {$EXTERNALSYM PPROCESSOR_POWER_POLICY_INFO}
- _PROCESSOR_POWER_POLICY_INFO = record
- // Time based information (will be converted to kernel units)
- TimeCheck: DWORD; // in US
- DemoteLimit: DWORD; // in US
- PromoteLimit: DWORD; // in US
- // Percentage based information
- DemotePercent: BYTE;
- PromotePercent: BYTE;
- Spare: array [0..1] of BYTE;
- // Flags
- Flags: DWORD;
- //DWORD AllowDemotion:1;
- //DWORD AllowPromotion:1;
- //DWORD Reserved:30;
- end;
- {$EXTERNALSYM _PROCESSOR_POWER_POLICY_INFO}
- PROCESSOR_POWER_POLICY_INFO = _PROCESSOR_POWER_POLICY_INFO;
- {$EXTERNALSYM PROCESSOR_POWER_POLICY_INFO}
- TProcessorPowerPolicyInfo = PROCESSOR_POWER_POLICY_INFO;
- PProcessorPowerPolicyInfo = PPROCESSOR_POWER_POLICY_INFO;
- // processor power policy
- PPROCESSOR_POWER_POLICY = ^PROCESSOR_POWER_POLICY;
- {$EXTERNALSYM PPROCESSOR_POWER_POLICY}
- _PROCESSOR_POWER_POLICY = record
- Revision: DWORD; // 1
- // Dynamic Throttling Policy
- DynamicThrottle: BYTE;
- Spare: array [0..2] of BYTE;
- // Flags
- Reserved: DWORD;
- //DWORD DisableCStates:1;
- //DWORD Reserved:31;
- // System policy information
- // The Array is last, in case it needs to be grown and the structure
- // revision incremented.
- PolicyCount: DWORD;
- Policy: array [0..2] of PROCESSOR_POWER_POLICY_INFO;
- end;
- {$EXTERNALSYM _PROCESSOR_POWER_POLICY}
- PROCESSOR_POWER_POLICY = _PROCESSOR_POWER_POLICY;
- {$EXTERNALSYM PROCESSOR_POWER_POLICY}
- TProcessorPowerPolicy = PROCESSOR_POWER_POLICY;
- PProcessorPowerPolicy = PPROCESSOR_POWER_POLICY;
- // administrator power policy overrides
- PADMINISTRATOR_POWER_POLICY = ^ADMINISTRATOR_POWER_POLICY;
- {$EXTERNALSYM PADMINISTRATOR_POWER_POLICY}
- _ADMINISTRATOR_POWER_POLICY = record
- // meaning of power action "sleep"
- MinSleep: SYSTEM_POWER_STATE;
- MaxSleep: SYSTEM_POWER_STATE;
- // video policies
- MinVideoTimeout: DWORD;
- MaxVideoTimeout: DWORD;
- // disk policies
- MinSpindownTimeout: DWORD;
- MaxSpindownTimeout: DWORD;
- end;
- {$EXTERNALSYM _ADMINISTRATOR_POWER_POLICY}
- ADMINISTRATOR_POWER_POLICY = _ADMINISTRATOR_POWER_POLICY;
- {$EXTERNALSYM ADMINISTRATOR_POWER_POLICY}
- TAdministratorPowerPolicy = ADMINISTRATOR_POWER_POLICY;
- PAdministratorPowerPolicy = PADMINISTRATOR_POWER_POLICY;
- PSYSTEM_POWER_CAPABILITIES = ^SYSTEM_POWER_CAPABILITIES;
- {$EXTERNALSYM PSYSTEM_POWER_CAPABILITIES}
- SYSTEM_POWER_CAPABILITIES = record
- // Misc supported system features
- PowerButtonPresent: BOOLEAN;
- SleepButtonPresent: BOOLEAN;
- LidPresent: BOOLEAN;
- SystemS1: BOOLEAN;
- SystemS2: BOOLEAN;
- SystemS3: BOOLEAN;
- SystemS4: BOOLEAN; // hibernate
- SystemS5: BOOLEAN; // off
- HiberFilePresent: BOOLEAN;
- FullWake: BOOLEAN;
- VideoDimPresent: BOOLEAN;
- ApmPresent: BOOLEAN;
- UpsPresent: BOOLEAN;
- // Processors
- ThermalControl: BOOLEAN;
- ProcessorThrottle: BOOLEAN;
- ProcessorMinThrottle: BYTE;
- ProcessorMaxThrottle: BYTE;
- spare2: array [0..4 - 1] of BYTE;
- // Disk
- DiskSpinDown: BOOLEAN;
- spare3: array [0..8 - 1] of BYTE;
- // System Battery
- SystemBatteriesPresent: BOOLEAN;
- BatteriesAreShortTerm: BOOLEAN;
- BatteryScale: array [0..3 - 1] of BATTERY_REPORTING_SCALE;
- // Wake
- AcOnLineWake: SYSTEM_POWER_STATE;
- SoftLidWake: SYSTEM_POWER_STATE;
- RtcWake: SYSTEM_POWER_STATE;
- MinDeviceWakeState: SYSTEM_POWER_STATE; // note this may change on driver load
- DefaultLowLatencyWake: SYSTEM_POWER_STATE;
- end;
- {$EXTERNALSYM SYSTEM_POWER_CAPABILITIES}
- TSystemPowerCapabilities = SYSTEM_POWER_CAPABILITIES;
- PSystemPowerCapabilities = PSYSTEM_POWER_CAPABILITIES;
- PSYSTEM_BATTERY_STATE = ^SYSTEM_BATTERY_STATE;
- {$EXTERNALSYM PSYSTEM_BATTERY_STATE}
- SYSTEM_BATTERY_STATE = record
- AcOnLine: BOOLEAN;
- BatteryPresent: BOOLEAN;
- Charging: BOOLEAN;
- Discharging: BOOLEAN;
- Spare1: array [0..3] of BOOLEAN;
- MaxCapacity: DWORD;
- RemainingCapacity: DWORD;
- Rate: DWORD;
- EstimatedTime: DWORD;
- DefaultAlert1: DWORD;
- DefaultAlert2: DWORD;
- end;
- {$EXTERNALSYM SYSTEM_BATTERY_STATE}
- TSystemBatteryState = SYSTEM_BATTERY_STATE;
- PSystemBatteryState = PSYSTEM_BATTERY_STATE;
- //
- // Image Format
- //
- // #include "pshpack4.h" // 4 byte packing is the default
- const
- IMAGE_DOS_SIGNATURE = $5A4D; // MZ
- {$EXTERNALSYM IMAGE_DOS_SIGNATURE}
- IMAGE_OS2_SIGNATURE = $454E; // NE
- {$EXTERNALSYM IMAGE_OS2_SIGNATURE}
- IMAGE_OS2_SIGNATURE_LE = $454C; // LE
- {$EXTERNALSYM IMAGE_OS2_SIGNATURE_LE}
- IMAGE_VXD_SIGNATURE = $454C; // LE
- {$EXTERNALSYM IMAGE_VXD_SIGNATURE}
- IMAGE_NT_SIGNATURE = $00004550; // PE00
- {$EXTERNALSYM IMAGE_NT_SIGNATURE}
- // #include "pshpack2.h" // 16 bit headers are 2 byte packed
- type
- // DOS .EXE header
- PIMAGE_DOS_HEADER = ^IMAGE_DOS_HEADER;
- {$EXTERNALSYM PIMAGE_DOS_HEADER}
- _IMAGE_DOS_HEADER = record
- e_magic: Word; // Magic number
- e_cblp: Word; // Bytes on last page of file
- e_cp: Word; // Pages in file
- e_crlc: Word; // Relocations
- e_cparhdr: Word; // Size of header in paragraphs
- e_minalloc: Word; // Minimum extra paragraphs needed
- e_maxalloc: Word; // Maximum extra paragraphs needed
- e_ss: Word; // Initial (relative) SS value
- e_sp: Word; // Initial SP value
- e_csum: Word; // Checksum
- e_ip: Word; // Initial IP value
- e_cs: Word; // Initial (relative) CS value
- e_lfarlc: Word; // File address of relocation table
- e_ovno: Word; // Overlay number
- e_res: array [0..3] of Word; // Reserved words
- e_oemid: Word; // OEM identifier (for e_oeminfo)
- e_oeminfo: Word; // OEM information; e_oemid specific
- e_res2: array [0..9] of Word; // Reserved words
- e_lfanew: Longint; // File address of new exe header
- end;
- {$EXTERNALSYM _IMAGE_DOS_HEADER}
- IMAGE_DOS_HEADER = _IMAGE_DOS_HEADER;
- {$EXTERNALSYM IMAGE_DOS_HEADER}
- TImageDosHeader = IMAGE_DOS_HEADER;
- PImageDosHeader = PIMAGE_DOS_HEADER;
- // OS/2 .EXE header
- PIMAGE_OS2_HEADER = ^IMAGE_OS2_HEADER;
- {$EXTERNALSYM PIMAGE_OS2_HEADER}
- _IMAGE_OS2_HEADER = record
- ne_magic: Word; // Magic number
- ne_ver: CHAR; // Version number
- ne_rev: CHAR; // Revision number
- ne_enttab: Word; // Offset of Entry Table
- ne_cbenttab: Word; // Number of bytes in Entry Table
- ne_crc: Longint; // Checksum of whole file
- ne_flags: Word; // Flag word
- ne_autodata: Word; // Automatic data segment number
- ne_heap: Word; // Initial heap allocation
- ne_stack: Word; // Initial stack allocation
- ne_csip: Longint; // Initial CS:IP setting
- ne_sssp: Longint; // Initial SS:SP setting
- ne_cseg: Word; // Count of file segments
- ne_cmod: Word; // Entries in Module Reference Table
- ne_cbnrestab: Word; // Size of non-resident name table
- ne_segtab: Word; // Offset of Segment Table
- ne_rsrctab: Word; // Offset of Resource Table
- ne_restab: Word; // Offset of resident name table
- ne_modtab: Word; // Offset of Module Reference Table
- ne_imptab: Word; // Offset of Imported Names Table
- ne_nrestab: Longint; // Offset of Non-resident Names Table
- ne_cmovent: Word; // Count of movable entries
- ne_align: Word; // Segment alignment shift count
- ne_cres: Word; // Count of resource segments
- ne_exetyp: Byte; // Target Operating system
- ne_flagsothers: Byte; // Other .EXE flags
- ne_pretthunks: Word; // offset to return thunks
- ne_psegrefbytes: Word; // offset to segment ref. bytes
- ne_swaparea: Word; // Minimum code swap area size
- ne_expver: Word; // Expected Windows version number
- end;
- {$EXTERNALSYM _IMAGE_OS2_HEADER}
- IMAGE_OS2_HEADER = _IMAGE_OS2_HEADER;
- {$EXTERNALSYM IMAGE_OS2_HEADER}
- TImageOs2Header = IMAGE_OS2_HEADER;
- PImageOs2Header = PIMAGE_OS2_HEADER;
- // Windows VXD header
- PIMAGE_VXD_HEADER = ^IMAGE_VXD_HEADER;
- {$EXTERNALSYM PIMAGE_VXD_HEADER}
- _IMAGE_VXD_HEADER = record
- e32_magic: Word; // Magic number
- e32_border: Byte; // The byte ordering for the VXD
- e32_worder: Byte; // The word ordering for the VXD
- e32_level: DWORD; // The EXE format level for now = 0
- e32_cpu: Word; // The CPU type
- e32_os: Word; // The OS type
- e32_ver: DWORD; // Module version
- e32_mflags: DWORD; // Module flags
- e32_mpages: DWORD; // Module # pages
- e32_startobj: DWORD; // Object # for instruction pointer
- e32_eip: DWORD; // Extended instruction pointer
- e32_stackobj: DWORD; // Object # for stack pointer
- e32_esp: DWORD; // Extended stack pointer
- e32_pagesize: DWORD; // VXD page size
- e32_lastpagesize: DWORD; // Last page size in VXD
- e32_fixupsize: DWORD; // Fixup section size
- e32_fixupsum: DWORD; // Fixup section checksum
- e32_ldrsize: DWORD; // Loader section size
- e32_ldrsum: DWORD; // Loader section checksum
- e32_objtab: DWORD; // Object table offset
- e32_objcnt: DWORD; // Number of objects in module
- e32_objmap: DWORD; // Object page map offset
- e32_itermap: DWORD; // Object iterated data map offset
- e32_rsrctab: DWORD; // Offset of Resource Table
- e32_rsrccnt: DWORD; // Number of resource entries
- e32_restab: DWORD; // Offset of resident name table
- e32_enttab: DWORD; // Offset of Entry Table
- e32_dirtab: DWORD; // Offset of Module Directive Table
- e32_dircnt: DWORD; // Number of module directives
- e32_fpagetab: DWORD; // Offset of Fixup Page Table
- e32_frectab: DWORD; // Offset of Fixup Record Table
- e32_impmod: DWORD; // Offset of Import Module Name Table
- e32_impmodcnt: DWORD; // Number of entries in Import Module Name Table
- e32_impproc: DWORD; // Offset of Import Procedure Name Table
- e32_pagesum: DWORD; // Offset of Per-Page Checksum Table
- e32_datapage: DWORD; // Offset of Enumerated Data Pages
- e32_preload: DWORD; // Number of preload pages
- e32_nrestab: DWORD; // Offset of Non-resident Names Table
- e32_cbnrestab: DWORD; // Size of Non-resident Name Table
- e32_nressum: DWORD; // Non-resident Name Table Checksum
- e32_autodata: DWORD; // Object # for automatic data object
- e32_debuginfo: DWORD; // Offset of the debugging information
- e32_debuglen: DWORD; // The length of the debugging info. in bytes
- e32_instpreload: DWORD; // Number of instance pages in preload section of VXD file
- e32_instdemand: DWORD; // Number of instance pages in demand load section of VXD file
- e32_heapsize: DWORD; // Size of heap - for 16-bit apps
- e32_res3: array [0..11] of Byte; // Reserved words
- e32_winresoff: DWORD;
- e32_winreslen: DWORD;
- e32_devid: Word; // Device ID for VxD
- e32_ddkver: Word; // DDK version for VxD
- end;
- {$EXTERNALSYM _IMAGE_VXD_HEADER}
- IMAGE_VXD_HEADER = _IMAGE_VXD_HEADER;
- {$EXTERNALSYM IMAGE_VXD_HEADER}
- TImageVxdHeader = IMAGE_VXD_HEADER;
- PImageVxdHeader = PIMAGE_VXD_HEADER;
- // #include "poppack.h" // Back to 4 byte packing
- //
- // File header format.
- //
- PIMAGE_FILE_HEADER = ^IMAGE_FILE_HEADER;
- {$EXTERNALSYM PIMAGE_FILE_HEADER}
- _IMAGE_FILE_HEADER = record
- Machine: WORD;
- NumberOfSections: WORD;
- TimeDateStamp: DWORD;
- PointerToSymbolTable: DWORD;
- NumberOfSymbols: DWORD;
- SizeOfOptionalHeader: WORD;
- Characteristics: WORD;
- end;
- {$EXTERNALSYM _IMAGE_FILE_HEADER}
- IMAGE_FILE_HEADER = _IMAGE_FILE_HEADER;
- {$EXTERNALSYM IMAGE_FILE_HEADER}
- TImageFileHeader = IMAGE_FILE_HEADER;
- PImageFileHeader = PIMAGE_FILE_HEADER;
- const
- IMAGE_SIZEOF_FILE_HEADER = 20;
- {$EXTERNALSYM IMAGE_SIZEOF_FILE_HEADER}
- IMAGE_FILE_RELOCS_STRIPPED = $0001; // Relocation info stripped from file.
- {$EXTERNALSYM IMAGE_FILE_RELOCS_STRIPPED}
- IMAGE_FILE_EXECUTABLE_IMAGE = $0002; // File is executable (i.e. no unresolved externel references).
- {$EXTERNALSYM IMAGE_FILE_EXECUTABLE_IMAGE}
- IMAGE_FILE_LINE_NUMS_STRIPPED = $0004; // Line nunbers stripped from file.
- {$EXTERNALSYM IMAGE_FILE_LINE_NUMS_STRIPPED}
- IMAGE_FILE_LOCAL_SYMS_STRIPPED = $0008; // Local symbols stripped from file.
- {$EXTERNALSYM IMAGE_FILE_LOCAL_SYMS_STRIPPED}
- IMAGE_FILE_AGGRESIVE_WS_TRIM = $0010; // Agressively trim working set
- {$EXTERNALSYM IMAGE_FILE_AGGRESIVE_WS_TRIM}
- IMAGE_FILE_LARGE_ADDRESS_AWARE = $0020; // App can handle >2gb addresses
- {$EXTERNALSYM IMAGE_FILE_LARGE_ADDRESS_AWARE}
- IMAGE_FILE_BYTES_REVERSED_LO = $0080; // Bytes of machine word are reversed.
- {$EXTERNALSYM IMAGE_FILE_BYTES_REVERSED_LO}
- IMAGE_FILE_32BIT_MACHINE = $0100; // 32 bit word machine.
- {$EXTERNALSYM IMAGE_FILE_32BIT_MACHINE}
- IMAGE_FILE_DEBUG_STRIPPED = $0200; // Debugging info stripped from file in .DBG file
- {$EXTERNALSYM IMAGE_FILE_DEBUG_STRIPPED}
- IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP = $0400; // If Image is on removable media, copy and run from the swap file.
- {$EXTERNALSYM IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP}
- IMAGE_FILE_NET_RUN_FROM_SWAP = $0800; // If Image is on Net, copy and run from the swap file.
- {$EXTERNALSYM IMAGE_FILE_NET_RUN_FROM_SWAP}
- IMAGE_FILE_SYSTEM = $1000; // System File.
- {$EXTERNALSYM IMAGE_FILE_SYSTEM}
- IMAGE_FILE_DLL = $2000; // File is a DLL.
- {$EXTERNALSYM IMAGE_FILE_DLL}
- IMAGE_FILE_UP_SYSTEM_ONLY = $4000; // File should only be run on a UP machine
- {$EXTERNALSYM IMAGE_FILE_UP_SYSTEM_ONLY}
- IMAGE_FILE_BYTES_REVERSED_HI = $8000; // Bytes of machine word are reversed.
- {$EXTERNALSYM IMAGE_FILE_BYTES_REVERSED_HI}
- IMAGE_FILE_MACHINE_UNKNOWN = 0;
- {$EXTERNALSYM IMAGE_FILE_MACHINE_UNKNOWN}
- IMAGE_FILE_MACHINE_I386 = $014c; // Intel 386.
- {$EXTERNALSYM IMAGE_FILE_MACHINE_I386}
- IMAGE_FILE_MACHINE_R3000 = $0162; // MIPS little-endian, 0x160 big-endian
- {$EXTERNALSYM IMAGE_FILE_MACHINE_R3000}
- IMAGE_FILE_MACHINE_R4000 = $0166; // MIPS little-endian
- {$EXTERNALSYM IMAGE_FILE_MACHINE_R4000}
- IMAGE_FILE_MACHINE_R10000 = $0168; // MIPS little-endian
- {$EXTERNALSYM IMAGE_FILE_MACHINE_R10000}
- IMAGE_FILE_MACHINE_WCEMIPSV2 = $0169; // MIPS little-endian WCE v2
- {$EXTERNALSYM IMAGE_FILE_MACHINE_WCEMIPSV2}
- IMAGE_FILE_MACHINE_ALPHA = $0184; // Alpha_AXP
- {$EXTERNALSYM IMAGE_FILE_MACHINE_ALPHA}
- IMAGE_FILE_MACHINE_SH3 = $01a2; // SH3 little-endian
- {$EXTERNALSYM IMAGE_FILE_MACHINE_SH3}
- IMAGE_FILE_MACHINE_SH3DSP = $01a3;
- {$EXTERNALSYM IMAGE_FILE_MACHINE_SH3DSP}
- IMAGE_FILE_MACHINE_SH3E = $01a4; // SH3E little-endian
- {$EXTERNALSYM IMAGE_FILE_MACHINE_SH3E}
- IMAGE_FILE_MACHINE_SH4 = $01a6; // SH4 little-endian
- {$EXTERNALSYM IMAGE_FILE_MACHINE_SH4}
- IMAGE_FILE_MACHINE_SH5 = $01a8; // SH5
- {$EXTERNALSYM IMAGE_FILE_MACHINE_SH5}
- IMAGE_FILE_MACHINE_ARM = $01c0; // ARM Little-Endian
- {$EXTERNALSYM IMAGE_FILE_MACHINE_ARM}
- IMAGE_FILE_MACHINE_THUMB = $01c2;
- {$EXTERNALSYM IMAGE_FILE_MACHINE_THUMB}
- IMAGE_FILE_MACHINE_AM33 = $01d3;
- {$EXTERNALSYM IMAGE_FILE_MACHINE_AM33}
- IMAGE_FILE_MACHINE_POWERPC = $01F0; // IBM PowerPC Little-Endian
- {$EXTERNALSYM IMAGE_FILE_MACHINE_POWERPC}
- IMAGE_FILE_MACHINE_POWERPCFP = $01f1;
- {$EXTERNALSYM IMAGE_FILE_MACHINE_POWERPCFP}
- IMAGE_FILE_MACHINE_IA64 = $0200; // Intel 64
- {$EXTERNALSYM IMAGE_FILE_MACHINE_IA64}
- IMAGE_FILE_MACHINE_MIPS16 = $0266; // MIPS
- {$EXTERNALSYM IMAGE_FILE_MACHINE_MIPS16}
- IMAGE_FILE_MACHINE_ALPHA64 = $0284; // ALPHA64
- {$EXTERNALSYM IMAGE_FILE_MACHINE_ALPHA64}
- IMAGE_FILE_MACHINE_MIPSFPU = $0366; // MIPS
- {$EXTERNALSYM IMAGE_FILE_MACHINE_MIPSFPU}
- IMAGE_FILE_MACHINE_MIPSFPU16 = $0466; // MIPS
- {$EXTERNALSYM IMAGE_FILE_MACHINE_MIPSFPU16}
- IMAGE_FILE_MACHINE_AXP64 = IMAGE_FILE_MACHINE_ALPHA64;
- {$EXTERNALSYM IMAGE_FILE_MACHINE_AXP64}
- IMAGE_FILE_MACHINE_TRICORE = $0520; // Infineon
- {$EXTERNALSYM IMAGE_FILE_MACHINE_TRICORE}
- IMAGE_FILE_MACHINE_CEF = $0CEF;
- {$EXTERNALSYM IMAGE_FILE_MACHINE_CEF}
- IMAGE_FILE_MACHINE_EBC = $0EBC; // EFI Byte Code
- {$EXTERNALSYM IMAGE_FILE_MACHINE_EBC}
- IMAGE_FILE_MACHINE_AMD64 = $8664; // AMD64 (K8)
- {$EXTERNALSYM IMAGE_FILE_MACHINE_AMD64}
- IMAGE_FILE_MACHINE_M32R = $9041; // M32R little-endian
- {$EXTERNALSYM IMAGE_FILE_MACHINE_M32R}
- IMAGE_FILE_MACHINE_CEE = $C0EE;
- {$EXTERNALSYM IMAGE_FILE_MACHINE_CEE}
- //
- // Directory format.
- //
- type
- PIMAGE_DATA_DIRECTORY = ^IMAGE_DATA_DIRECTORY;
- {$EXTERNALSYM PIMAGE_DATA_DIRECTORY}
- _IMAGE_DATA_DIRECTORY = record
- VirtualAddress: DWORD;
- Size: DWORD;
- end;
- {$EXTERNALSYM _IMAGE_DATA_DIRECTORY}
- IMAGE_DATA_DIRECTORY = _IMAGE_DATA_DIRECTORY;
- {$EXTERNALSYM IMAGE_DATA_DIRECTORY}
- TImageDataDirectory = IMAGE_DATA_DIRECTORY;
- PImageDataDirectory = PIMAGE_DATA_DIRECTORY;
- const
- IMAGE_NUMBEROF_DIRECTORY_ENTRIES = 16;
- {$EXTERNALSYM IMAGE_NUMBEROF_DIRECTORY_ENTRIES}
- //
- // Optional header format.
- //
- type
- PIMAGE_OPTIONAL_HEADER32 = ^IMAGE_OPTIONAL_HEADER32;
- {$EXTERNALSYM PIMAGE_OPTIONAL_HEADER32}
- _IMAGE_OPTIONAL_HEADER = record
- //
- // Standard fields.
- //
- Magic: Word;
- MajorLinkerVersion: Byte;
- MinorLinkerVersion: Byte;
- SizeOfCode: DWORD;
- SizeOfInitializedData: DWORD;
- SizeOfUninitializedData: DWORD;
- AddressOfEntryPoint: DWORD;
- BaseOfCode: DWORD;
- BaseOfData: DWORD;
- //
- // NT additional fields.
- //
- ImageBase: DWORD;
- SectionAlignment: DWORD;
- FileAlignment: DWORD;
- MajorOperatingSystemVersion: Word;
- MinorOperatingSystemVersion: Word;
- MajorImageVersion: Word;
- MinorImageVersion: Word;
- MajorSubsystemVersion: Word;
- MinorSubsystemVersion: Word;
- Win32VersionValue: DWORD;
- SizeOfImage: DWORD;
- SizeOfHeaders: DWORD;
- CheckSum: DWORD;
- Subsystem: Word;
- DllCharacteristics: Word;
- SizeOfStackReserve: DWORD;
- SizeOfStackCommit: DWORD;
- SizeOfHeapReserve: DWORD;
- SizeOfHeapCommit: DWORD;
- LoaderFlags: DWORD;
- NumberOfRvaAndSizes: DWORD;
- DataDirectory: array [0..IMAGE_NUMBEROF_DIRECTORY_ENTRIES - 1] of IMAGE_DATA_DIRECTORY;
- end;
- {$EXTERNALSYM _IMAGE_OPTIONAL_HEADER}
- IMAGE_OPTIONAL_HEADER32 = _IMAGE_OPTIONAL_HEADER;
- {$EXTERNALSYM IMAGE_OPTIONAL_HEADER32}
- TImageOptionalHeader32 = IMAGE_OPTIONAL_HEADER32;
- PImageOptionalHeader32 = PIMAGE_OPTIONAL_HEADER32;
- PIMAGE_ROM_OPTIONAL_HEADER = ^IMAGE_ROM_OPTIONAL_HEADER;
- {$EXTERNALSYM PIMAGE_ROM_OPTIONAL_HEADER}
- _IMAGE_ROM_OPTIONAL_HEADER = record
- Magic: Word;
- MajorLinkerVersion: Byte;
- MinorLinkerVersion: Byte;
- SizeOfCode: DWORD;
- SizeOfInitializedData: DWORD;
- SizeOfUninitializedData: DWORD;
- AddressOfEntryPoint: DWORD;
- BaseOfCode: DWORD;
- BaseOfData: DWORD;
- BaseOfBss: DWORD;
- GprMask: DWORD;
- CprMask: array [0..3] of DWORD;
- GpValue: DWORD;
- end;
- {$EXTERNALSYM _IMAGE_ROM_OPTIONAL_HEADER}
- IMAGE_ROM_OPTIONAL_HEADER = _IMAGE_ROM_OPTIONAL_HEADER;
- {$EXTERNALSYM IMAGE_ROM_OPTIONAL_HEADER}
- TImageRomOptionalHeader = IMAGE_ROM_OPTIONAL_HEADER;
- PImageRomOptionalHeader = PIMAGE_ROM_OPTIONAL_HEADER;
- PIMAGE_OPTIONAL_HEADER64 = ^IMAGE_OPTIONAL_HEADER64;
- {$EXTERNALSYM PIMAGE_OPTIONAL_HEADER64}
- _IMAGE_OPTIONAL_HEADER64 = record
- Magic: Word;
- MajorLinkerVersion: Byte;
- MinorLinkerVersion: Byte;
- SizeOfCode: DWORD;
- SizeOfInitializedData: DWORD;
- SizeOfUninitializedData: DWORD;
- AddressOfEntryPoint: DWORD;
- BaseOfCode: DWORD;
- ImageBase: Int64;
- SectionAlignment: DWORD;
- FileAlignment: DWORD;
- MajorOperatingSystemVersion: Word;
- MinorOperatingSystemVersion: Word;
- MajorImageVersion: Word;
- MinorImageVersion: Word;
- MajorSubsystemVersion: Word;
- MinorSubsystemVersion: Word;
- Win32VersionValue: DWORD;
- SizeOfImage: DWORD;
- SizeOfHeaders: DWORD;
- CheckSum: DWORD;
- Subsystem: Word;
- DllCharacteristics: Word;
- SizeOfStackReserve: Int64;
- SizeOfStackCommit: Int64;
- SizeOfHeapReserve: Int64;
- SizeOfHeapCommit: Int64;
- LoaderFlags: DWORD;
- NumberOfRvaAndSizes: DWORD;
- DataDirectory: array [0..IMAGE_NUMBEROF_DIRECTORY_ENTRIES - 1] of IMAGE_DATA_DIRECTORY;
- end;
- {$EXTERNALSYM _IMAGE_OPTIONAL_HEADER64}
- IMAGE_OPTIONAL_HEADER64 = _IMAGE_OPTIONAL_HEADER64;
- {$EXTERNALSYM IMAGE_OPTIONAL_HEADER64}
- TImageOptionalHeader64 = IMAGE_OPTIONAL_HEADER64;
- PImageOptionalHeader64 = PIMAGE_OPTIONAL_HEADER64;
- const
- IMAGE_SIZEOF_ROM_OPTIONAL_HEADER = 56;
- {$EXTERNALSYM IMAGE_SIZEOF_ROM_OPTIONAL_HEADER}
- IMAGE_SIZEOF_STD_OPTIONAL_HEADER = 28;
- {$EXTERNALSYM IMAGE_SIZEOF_STD_OPTIONAL_HEADER}
- IMAGE_SIZEOF_NT_OPTIONAL32_HEADER = 224;
- {$EXTERNALSYM IMAGE_SIZEOF_NT_OPTIONAL32_HEADER}
- IMAGE_SIZEOF_NT_OPTIONAL64_HEADER = 240;
- {$EXTERNALSYM IMAGE_SIZEOF_NT_OPTIONAL64_HEADER}
- IMAGE_NT_OPTIONAL_HDR32_MAGIC = $10b;
- {$EXTERNALSYM IMAGE_NT_OPTIONAL_HDR32_MAGIC}
- IMAGE_NT_OPTIONAL_HDR64_MAGIC = $20b;
- {$EXTERNALSYM IMAGE_NT_OPTIONAL_HDR64_MAGIC}
- IMAGE_ROM_OPTIONAL_HDR_MAGIC = $107;
- {$EXTERNALSYM IMAGE_ROM_OPTIONAL_HDR_MAGIC}
- type
- IMAGE_OPTIONAL_HEADER = IMAGE_OPTIONAL_HEADER32;
- {$EXTERNALSYM IMAGE_OPTIONAL_HEADER}
- PIMAGE_OPTIONAL_HEADER = PIMAGE_OPTIONAL_HEADER32;
- {$EXTERNALSYM PIMAGE_OPTIONAL_HEADER}
- const
- IMAGE_SIZEOF_NT_OPTIONAL_HEADER = IMAGE_SIZEOF_NT_OPTIONAL32_HEADER;
- {$EXTERNALSYM IMAGE_SIZEOF_NT_OPTIONAL_HEADER}
- IMAGE_NT_OPTIONAL_HDR_MAGIC = IMAGE_NT_OPTIONAL_HDR32_MAGIC;
- {$EXTERNALSYM IMAGE_NT_OPTIONAL_HDR_MAGIC}
- type
- PIMAGE_NT_HEADERS64 = ^IMAGE_NT_HEADERS64;
- {$EXTERNALSYM PIMAGE_NT_HEADERS64}
- _IMAGE_NT_HEADERS64 = record
- Signature: DWORD;
- FileHeader: IMAGE_FILE_HEADER;
- OptionalHeader: IMAGE_OPTIONAL_HEADER64;
- end;
- {$EXTERNALSYM _IMAGE_NT_HEADERS64}
- IMAGE_NT_HEADERS64 = _IMAGE_NT_HEADERS64;
- {$EXTERNALSYM IMAGE_NT_HEADERS64}
- TImageNtHeaders64 = IMAGE_NT_HEADERS64;
- PImageNtHeaders64 = PIMAGE_NT_HEADERS64;
- PIMAGE_NT_HEADERS32 = ^IMAGE_NT_HEADERS32;
- {$EXTERNALSYM PIMAGE_NT_HEADERS32}
- _IMAGE_NT_HEADERS = record
- Signature: DWORD;
- FileHeader: IMAGE_FILE_HEADER;
- OptionalHeader: IMAGE_OPTIONAL_HEADER32;
- end;
- {$EXTERNALSYM _IMAGE_NT_HEADERS}
- IMAGE_NT_HEADERS32 = _IMAGE_NT_HEADERS;
- {$EXTERNALSYM IMAGE_NT_HEADERS32}
- TImageNtHeaders32 = IMAGE_NT_HEADERS32;
- PImageNtHeaders32 = PIMAGE_NT_HEADERS32;
- PIMAGE_ROM_HEADERS = ^IMAGE_ROM_HEADERS;
- {$EXTERNALSYM PIMAGE_ROM_HEADERS}
- _IMAGE_ROM_HEADERS = record
- FileHeader: IMAGE_FILE_HEADER;
- OptionalHeader: IMAGE_ROM_OPTIONAL_HEADER;
- end;
- {$EXTERNALSYM _IMAGE_ROM_HEADERS}
- IMAGE_ROM_HEADERS = _IMAGE_ROM_HEADERS;
- {$EXTERNALSYM IMAGE_ROM_HEADERS}
- TImageRomHeaders = IMAGE_ROM_HEADERS;
- PImageRomHeaders = PIMAGE_ROM_HEADERS;
- IMAGE_NT_HEADERS = IMAGE_NT_HEADERS32;
- {$EXTERNALSYM IMAGE_NT_HEADERS}
- PIMAGE_NT_HEADERS = PIMAGE_NT_HEADERS32;
- {$EXTERNALSYM PIMAGE_NT_HEADERS}
- PImageNtHeaders = PIMAGE_NT_HEADERS;
- // Subsystem Values
- const
- IMAGE_SUBSYSTEM_UNKNOWN = 0; // Unknown subsystem.
- {$EXTERNALSYM IMAGE_SUBSYSTEM_UNKNOWN}
- IMAGE_SUBSYSTEM_NATIVE = 1; // Image doesn't require a subsystem.
- {$EXTERNALSYM IMAGE_SUBSYSTEM_NATIVE}
- IMAGE_SUBSYSTEM_WINDOWS_GUI = 2; // Image runs in the Windows GUI subsystem.
- {$EXTERNALSYM IMAGE_SUBSYSTEM_WINDOWS_GUI}
- IMAGE_SUBSYSTEM_WINDOWS_CUI = 3; // Image runs in the Windows character subsystem.
- {$EXTERNALSYM IMAGE_SUBSYSTEM_WINDOWS_CUI}
- IMAGE_SUBSYSTEM_OS2_CUI = 5; // image runs in the OS/2 character subsystem.
- {$EXTERNALSYM IMAGE_SUBSYSTEM_OS2_CUI}
- IMAGE_SUBSYSTEM_POSIX_CUI = 7; // image runs in the Posix character subsystem.
- {$EXTERNALSYM IMAGE_SUBSYSTEM_POSIX_CUI}
- IMAGE_SUBSYSTEM_NATIVE_WINDOWS = 8; // image is a native Win9x driver.
- {$EXTERNALSYM IMAGE_SUBSYSTEM_NATIVE_WINDOWS}
- IMAGE_SUBSYSTEM_WINDOWS_CE_GUI = 9; // Image runs in the Windows CE subsystem.
- {$EXTERNALSYM IMAGE_SUBSYSTEM_WINDOWS_CE_GUI}
- IMAGE_SUBSYSTEM_EFI_APPLICATION = 10;
- {$EXTERNALSYM IMAGE_SUBSYSTEM_EFI_APPLICATION}
- IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER = 11;
- {$EXTERNALSYM IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER}
- IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER = 12;
- {$EXTERNALSYM IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER}
- IMAGE_SUBSYSTEM_EFI_ROM = 13;
- {$EXTERNALSYM IMAGE_SUBSYSTEM_EFI_ROM}
- IMAGE_SUBSYSTEM_XBOX = 14;
- {$EXTERNALSYM IMAGE_SUBSYSTEM_XBOX}
- // DllCharacteristics Entries
- // IMAGE_LIBRARY_PROCESS_INIT 0x0001 // Reserved.
- // IMAGE_LIBRARY_PROCESS_TERM 0x0002 // Reserved.
- // IMAGE_LIBRARY_THREAD_INIT 0x0004 // Reserved.
- // IMAGE_LIBRARY_THREAD_TERM 0x0008 // Reserved.
- IMAGE_DLLCHARACTERISTICS_NO_ISOLATION = $0200; // Image understands isolation and doesn't want it
- {$EXTERNALSYM IMAGE_DLLCHARACTERISTICS_NO_ISOLATION}
- IMAGE_DLLCHARACTERISTICS_NO_SEH = $0400; // Image does not use SEH. No SE handler may reside in this image
- {$EXTERNALSYM IMAGE_DLLCHARACTERISTICS_NO_SEH}
- IMAGE_DLLCHARACTERISTICS_NO_BIND = $0800; // Do not bind this image.
- {$EXTERNALSYM IMAGE_DLLCHARACTERISTICS_NO_BIND}
- // 0x1000 // Reserved.
- IMAGE_DLLCHARACTERISTICS_WDM_DRIVER = $2000; // Driver uses WDM model
- {$EXTERNALSYM IMAGE_DLLCHARACTERISTICS_WDM_DRIVER}
- // 0x4000 // Reserved.
- IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = $8000;
- {$EXTERNALSYM IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE}
- // Directory Entries
- IMAGE_DIRECTORY_ENTRY_EXPORT = 0; // Export Directory
- {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_EXPORT}
- IMAGE_DIRECTORY_ENTRY_IMPORT = 1; // Import Directory
- {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_IMPORT}
- IMAGE_DIRECTORY_ENTRY_RESOURCE = 2; // Resource Directory
- {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_RESOURCE}
- IMAGE_DIRECTORY_ENTRY_EXCEPTION = 3; // Exception Directory
- {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_EXCEPTION}
- IMAGE_DIRECTORY_ENTRY_SECURITY = 4; // Security Directory
- {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_SECURITY}
- IMAGE_DIRECTORY_ENTRY_BASERELOC = 5; // Base Relocation Table
- {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_BASERELOC}
- IMAGE_DIRECTORY_ENTRY_DEBUG = 6; // Debug Directory
- {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_DEBUG}
- // IMAGE_DIRECTORY_ENTRY_COPYRIGHT 7 // (X86 usage)
- IMAGE_DIRECTORY_ENTRY_ARCHITECTURE = 7; // Architecture Specific Data
- {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_ARCHITECTURE}
- IMAGE_DIRECTORY_ENTRY_GLOBALPTR = 8; // RVA of GP
- {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_GLOBALPTR}
- IMAGE_DIRECTORY_ENTRY_TLS = 9; // TLS Directory
- {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_TLS}
- IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG = 10; // Load Configuration Directory
- {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG}
- IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT = 11; // Bound Import Directory in headers
- {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT}
- IMAGE_DIRECTORY_ENTRY_IAT = 12; // Import Address Table
- {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_IAT}
- IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT = 13; // Delay Load Import Descriptors
- {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT}
- IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR = 14; // COM Runtime descriptor
- {$EXTERNALSYM IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR}
- //
- // Non-COFF Object file header
- //
- type
- PAnonObjectHeader = ^ANON_OBJECT_HEADER;
- ANON_OBJECT_HEADER = record
- Sig1: Word; // Must be IMAGE_FILE_MACHINE_UNKNOWN
- Sig2: Word; // Must be 0xffff
- Version: Word; // >= 1 (implies the CLSID field is present)
- Machine: Word;
- TimeDateStamp: DWORD;
- ClassID: CLSID; // Used to invoke CoCreateInstance
- SizeOfData: DWORD; // Size of data that follows the header
- end;
- {$EXTERNALSYM ANON_OBJECT_HEADER}
- TAnonObjectHeader = ANON_OBJECT_HEADER;
- //
- // Section header format.
- //
- const
- IMAGE_SIZEOF_SHORT_NAME = 8;
- {$EXTERNALSYM IMAGE_SIZEOF_SHORT_NAME}
- type
- TImgSecHdrMisc = record
- case Integer of
- 0: (PhysicalAddress: DWORD);
- 1: (VirtualSize: DWORD);
- end;
- PIMAGE_SECTION_HEADER = ^IMAGE_SECTION_HEADER;
- {$EXTERNALSYM PIMAGE_SECTION_HEADER}
- _IMAGE_SECTION_HEADER = record
- Name: array [0..IMAGE_SIZEOF_SHORT_NAME - 1] of BYTE;
- Misc: TImgSecHdrMisc;
- VirtualAddress: DWORD;
- SizeOfRawData: DWORD;
- PointerToRawData: DWORD;
- PointerToRelocations: DWORD;
- PointerToLinenumbers: DWORD;
- NumberOfRelocations: WORD;
- NumberOfLinenumbers: WORD;
- Characteristics: DWORD;
- end;
- {$EXTERNALSYM _IMAGE_SECTION_HEADER}
- IMAGE_SECTION_HEADER = _IMAGE_SECTION_HEADER;
- {$EXTERNALSYM IMAGE_SECTION_HEADER}
- TImageSectionHeader = IMAGE_SECTION_HEADER;
- PImageSectionHeader = PIMAGE_SECTION_HEADER;
- // IMAGE_FIRST_SECTION doesn't need 32/64 versions since the file header is the same either way.
- function IMAGE_FIRST_SECTION(NtHeader: PImageNtHeaders): PImageSectionHeader;
- {$EXTERNALSYM IMAGE_FIRST_SECTION}
-
- const
- IMAGE_SIZEOF_SECTION_HEADER = 40;
- {$EXTERNALSYM IMAGE_SIZEOF_SECTION_HEADER}
- //
- // Section characteristics.
- //
- // IMAGE_SCN_TYPE_REG 0x00000000 // Reserved.
- // IMAGE_SCN_TYPE_DSECT 0x00000001 // Reserved.
- // IMAGE_SCN_TYPE_NOLOAD 0x00000002 // Reserved.
- // IMAGE_SCN_TYPE_GROUP 0x00000004 // Reserved.
- IMAGE_SCN_TYPE_NO_PAD = $00000008; // Reserved.
- {$EXTERNALSYM IMAGE_SCN_TYPE_NO_PAD}
- // IMAGE_SCN_TYPE_COPY 0x00000010 // Reserved.
- IMAGE_SCN_CNT_CODE = $00000020; // Section contains code.
- {$EXTERNALSYM IMAGE_SCN_CNT_CODE}
- IMAGE_SCN_CNT_INITIALIZED_DATA = $00000040; // Section contains initialized data.
- {$EXTERNALSYM IMAGE_SCN_CNT_INITIALIZED_DATA}
- IMAGE_SCN_CNT_UNINITIALIZED_DATA = $00000080; // Section contains uninitialized data.
- {$EXTERNALSYM IMAGE_SCN_CNT_UNINITIALIZED_DATA}
- IMAGE_SCN_LNK_OTHER = $00000100; // Reserved.
- {$EXTERNALSYM IMAGE_SCN_LNK_OTHER}
- IMAGE_SCN_LNK_INFO = $00000200; // Section contains comments or some other type of information.
- {$EXTERNALSYM IMAGE_SCN_LNK_INFO}
- // IMAGE_SCN_TYPE_OVER 0x00000400 // Reserved.
- IMAGE_SCN_LNK_REMOVE = $00000800; // Section contents will not become part of image.
- {$EXTERNALSYM IMAGE_SCN_LNK_REMOVE}
- IMAGE_SCN_LNK_COMDAT = $00001000; // Section contents comdat.
- {$EXTERNALSYM IMAGE_SCN_LNK_COMDAT}
- // 0x00002000 // Reserved.
- // IMAGE_SCN_MEM_PROTECTED - Obsolete 0x00004000
- IMAGE_SCN_NO_DEFER_SPEC_EXC = $00004000; // Reset speculative exceptions handling bits in the TLB entries for this section.
- {$EXTERNALSYM IMAGE_SCN_NO_DEFER_SPEC_EXC}
- IMAGE_SCN_GPREL = $00008000; // Section content can be accessed relative to GP
- {$EXTERNALSYM IMAGE_SCN_GPREL}
- IMAGE_SCN_MEM_FARDATA = $00008000;
- {$EXTERNALSYM IMAGE_SCN_MEM_FARDATA}
- // IMAGE_SCN_MEM_SYSHEAP - Obsolete 0x00010000
- IMAGE_SCN_MEM_PURGEABLE = $00020000;
- {$EXTERNALSYM IMAGE_SCN_MEM_PURGEABLE}
- IMAGE_SCN_MEM_16BIT = $00020000;
- {$EXTERNALSYM IMAGE_SCN_MEM_16BIT}
- IMAGE_SCN_MEM_LOCKED = $00040000;
- {$EXTERNALSYM IMAGE_SCN_MEM_LOCKED}
- IMAGE_SCN_MEM_PRELOAD = $00080000;
- {$EXTERNALSYM IMAGE_SCN_MEM_PRELOAD}
- IMAGE_SCN_ALIGN_1BYTES = $00100000;
- {$EXTERNALSYM IMAGE_SCN_ALIGN_1BYTES}
- IMAGE_SCN_ALIGN_2BYTES = $00200000;
- {$EXTERNALSYM IMAGE_SCN_ALIGN_2BYTES}
- IMAGE_SCN_ALIGN_4BYTES = $00300000;
- {$EXTERNALSYM IMAGE_SCN_ALIGN_4BYTES}
- IMAGE_SCN_ALIGN_8BYTES = $00400000;
- {$EXTERNALSYM IMAGE_SCN_ALIGN_8BYTES}
- IMAGE_SCN_ALIGN_16BYTES = $00500000; // Default alignment if no others are specified.
- {$EXTERNALSYM IMAGE_SCN_ALIGN_16BYTES}
- IMAGE_SCN_ALIGN_32BYTES = $00600000;
- {$EXTERNALSYM IMAGE_SCN_ALIGN_32BYTES}
- IMAGE_SCN_ALIGN_64BYTES = $00700000;
- {$EXTERNALSYM IMAGE_SCN_ALIGN_64BYTES}
- IMAGE_SCN_ALIGN_128BYTES = $00800000;
- {$EXTERNALSYM IMAGE_SCN_ALIGN_128BYTES}
- IMAGE_SCN_ALIGN_256BYTES = $00900000;
- {$EXTERNALSYM IMAGE_SCN_ALIGN_256BYTES}
- IMAGE_SCN_ALIGN_512BYTES = $00A00000;
- {$EXTERNALSYM IMAGE_SCN_ALIGN_512BYTES}
- IMAGE_SCN_ALIGN_1024BYTES = $00B00000;
- {$EXTERNALSYM IMAGE_SCN_ALIGN_1024BYTES}
- IMAGE_SCN_ALIGN_2048BYTES = $00C00000;
- {$EXTERNALSYM IMAGE_SCN_ALIGN_2048BYTES}
- IMAGE_SCN_ALIGN_4096BYTES = $00D00000;
- {$EXTERNALSYM IMAGE_SCN_ALIGN_4096BYTES}
- IMAGE_SCN_ALIGN_8192BYTES = $00E00000;
- {$EXTERNALSYM IMAGE_SCN_ALIGN_8192BYTES}
- // Unused 0x00F00000
- IMAGE_SCN_ALIGN_MASK = $00F00000;
- {$EXTERNALSYM IMAGE_SCN_ALIGN_MASK}
- IMAGE_SCN_LNK_NRELOC_OVFL = $01000000; // Section contains extended relocations.
- {$EXTERNALSYM IMAGE_SCN_LNK_NRELOC_OVFL}
- IMAGE_SCN_MEM_DISCARDABLE = $02000000; // Section can be discarded.
- {$EXTERNALSYM IMAGE_SCN_MEM_DISCARDABLE}
- IMAGE_SCN_MEM_NOT_CACHED = $04000000; // Section is not cachable.
- {$EXTERNALSYM IMAGE_SCN_MEM_NOT_CACHED}
- IMAGE_SCN_MEM_NOT_PAGED = $08000000; // Section is not pageable.
- {$EXTERNALSYM IMAGE_SCN_MEM_NOT_PAGED}
- IMAGE_SCN_MEM_SHARED = $10000000; // Section is shareable.
- {$EXTERNALSYM IMAGE_SCN_MEM_SHARED}
- IMAGE_SCN_MEM_EXECUTE = $20000000; // Section is executable.
- {$EXTERNALSYM IMAGE_SCN_MEM_EXECUTE}
- IMAGE_SCN_MEM_READ = $40000000; // Section is readable.
- {$EXTERNALSYM IMAGE_SCN_MEM_READ}
- IMAGE_SCN_MEM_WRITE = DWORD($80000000); // Section is writeable.
- {$EXTERNALSYM IMAGE_SCN_MEM_WRITE}
- //
- // TLS Chaacteristic Flags
- //
- IMAGE_SCN_SCALE_INDEX = $00000001; // Tls index is scaled
- {$EXTERNALSYM IMAGE_SCN_SCALE_INDEX}
- // #include "pshpack2.h" // Symbols, relocs, and linenumbers are 2 byte packed
- //
- // Symbol format.
- //
- type
- TImageSymbolN = record
- case Integer of
- 0: (
- ShortName: array [0..7] of BYTE);
- 1: (
- Short: DWORD; // if 0, use LongName
- Long: DWORD); // offset into string table
- 2: (
- LongName: array [0..1] of DWORD);
- end;
- PIMAGE_SYMBOL = ^IMAGE_SYMBOL;
- {$EXTERNALSYM PIMAGE_SYMBOL}
- _IMAGE_SYMBOL = record
- N: TImageSymbolN;
- Value: DWORD;
- SectionNumber: SHORT;
- Type_: WORD;
- StorageClass: BYTE;
- NumberOfAuxSymbols: BYTE;
- end;
- {$EXTERNALSYM _IMAGE_SYMBOL}
- IMAGE_SYMBOL = _IMAGE_SYMBOL;
- {$EXTERNALSYM IMAGE_SYMBOL}
- TImageSymbol = IMAGE_SYMBOL;
- PImageSymbol = PIMAGE_SYMBOL;
- const
- IMAGE_SIZEOF_SYMBOL = 18;
- {$EXTERNALSYM IMAGE_SIZEOF_SYMBOL}
- //
- // Section values.
- //
- // Symbols have a section number of the section in which they are
- // defined. Otherwise, section numbers have the following meanings:
- //
- IMAGE_SYM_UNDEFINED = SHORT(0); // Symbol is undefined or is common.
- {$EXTERNALSYM IMAGE_SYM_UNDEFINED}
- IMAGE_SYM_ABSOLUTE = SHORT(-1); // Symbol is an absolute value.
- {$EXTERNALSYM IMAGE_SYM_ABSOLUTE}
- IMAGE_SYM_DEBUG = SHORT(-2); // Symbol is a special debug item.
- {$EXTERNALSYM IMAGE_SYM_DEBUG}
- IMAGE_SYM_SECTION_MAX = SHORT($FEFF ); // Values 0xFF00-0xFFFF are special
- {$EXTERNALSYM IMAGE_SYM_SECTION_MAX}
- //
- // Type (fundamental) values.
- //
- IMAGE_SYM_TYPE_NULL = $0000; // no type.
- {$EXTERNALSYM IMAGE_SYM_TYPE_NULL}
- IMAGE_SYM_TYPE_VOID = $0001;
- {$EXTERNALSYM IMAGE_SYM_TYPE_VOID}
- IMAGE_SYM_TYPE_CHAR = $0002; // type character.
- {$EXTERNALSYM IMAGE_SYM_TYPE_CHAR}
- IMAGE_SYM_TYPE_SHORT = $0003; // type short integer.
- {$EXTERNALSYM IMAGE_SYM_TYPE_SHORT}
- IMAGE_SYM_TYPE_INT = $0004;
- {$EXTERNALSYM IMAGE_SYM_TYPE_INT}
- IMAGE_SYM_TYPE_LONG = $0005;
- {$EXTERNALSYM IMAGE_SYM_TYPE_LONG}
- IMAGE_SYM_TYPE_FLOAT = $0006;
- {$EXTERNALSYM IMAGE_SYM_TYPE_FLOAT}
- IMAGE_SYM_TYPE_DOUBLE = $0007;
- {$EXTERNALSYM IMAGE_SYM_TYPE_DOUBLE}
- IMAGE_SYM_TYPE_STRUCT = $0008;
- {$EXTERNALSYM IMAGE_SYM_TYPE_STRUCT}
- IMAGE_SYM_TYPE_UNION = $0009;
- {$EXTERNALSYM IMAGE_SYM_TYPE_UNION}
- IMAGE_SYM_TYPE_ENUM = $000A; // enumeration.
- {$EXTERNALSYM IMAGE_SYM_TYPE_ENUM}
- IMAGE_SYM_TYPE_MOE = $000B; // member of enumeration.
- {$EXTERNALSYM IMAGE_SYM_TYPE_MOE}
- IMAGE_SYM_TYPE_BYTE = $000C;
- {$EXTERNALSYM IMAGE_SYM_TYPE_BYTE}
- IMAGE_SYM_TYPE_WORD = $000D;
- {$EXTERNALSYM IMAGE_SYM_TYPE_WORD}
- IMAGE_SYM_TYPE_UINT = $000E;
- {$EXTERNALSYM IMAGE_SYM_TYPE_UINT}
- IMAGE_SYM_TYPE_DWORD = $000F;
- {$EXTERNALSYM IMAGE_SYM_TYPE_DWORD}
- IMAGE_SYM_TYPE_PCODE = $8000;
- {$EXTERNALSYM IMAGE_SYM_TYPE_PCODE}
- //
- // Type (derived) values.
- //
- IMAGE_SYM_DTYPE_NULL = 0; // no derived type.
- {$EXTERNALSYM IMAGE_SYM_DTYPE_NULL}
- IMAGE_SYM_DTYPE_POINTER = 1; // pointer.
- {$EXTERNALSYM IMAGE_SYM_DTYPE_POINTER}
- IMAGE_SYM_DTYPE_FUNCTION = 2; // function.
- {$EXTERNALSYM IMAGE_SYM_DTYPE_FUNCTION}
- IMAGE_SYM_DTYPE_ARRAY = 3; // array.
- {$EXTERNALSYM IMAGE_SYM_DTYPE_ARRAY}
- //
- // Storage classes.
- //
- IMAGE_SYM_CLASS_END_OF_FUNCTION = BYTE(-1);
- {$EXTERNALSYM IMAGE_SYM_CLASS_END_OF_FUNCTION}
- IMAGE_SYM_CLASS_NULL = $0000;
- {$EXTERNALSYM IMAGE_SYM_CLASS_NULL}
- IMAGE_SYM_CLASS_AUTOMATIC = $0001;
- {$EXTERNALSYM IMAGE_SYM_CLASS_AUTOMATIC}
- IMAGE_SYM_CLASS_EXTERNAL = $0002;
- {$EXTERNALSYM IMAGE_SYM_CLASS_EXTERNAL}
- IMAGE_SYM_CLASS_STATIC = $0003;
- {$EXTERNALSYM IMAGE_SYM_CLASS_STATIC}
- IMAGE_SYM_CLASS_REGISTER = $0004;
- {$EXTERNALSYM IMAGE_SYM_CLASS_REGISTER}
- IMAGE_SYM_CLASS_EXTERNAL_DEF = $0005;
- {$EXTERNALSYM IMAGE_SYM_CLASS_EXTERNAL_DEF}
- IMAGE_SYM_CLASS_LABEL = $0006;
- {$EXTERNALSYM IMAGE_SYM_CLASS_LABEL}
- IMAGE_SYM_CLASS_UNDEFINED_LABEL = $0007;
- {$EXTERNALSYM IMAGE_SYM_CLASS_UNDEFINED_LABEL}
- IMAGE_SYM_CLASS_MEMBER_OF_STRUCT = $0008;
- {$EXTERNALSYM IMAGE_SYM_CLASS_MEMBER_OF_STRUCT}
- IMAGE_SYM_CLASS_ARGUMENT = $0009;
- {$EXTERNALSYM IMAGE_SYM_CLASS_ARGUMENT}
- IMAGE_SYM_CLASS_STRUCT_TAG = $000A;
- {$EXTERNALSYM IMAGE_SYM_CLASS_STRUCT_TAG}
- IMAGE_SYM_CLASS_MEMBER_OF_UNION = $000B;
- {$EXTERNALSYM IMAGE_SYM_CLASS_MEMBER_OF_UNION}
- IMAGE_SYM_CLASS_UNION_TAG = $000C;
- {$EXTERNALSYM IMAGE_SYM_CLASS_UNION_TAG}
- IMAGE_SYM_CLASS_TYPE_DEFINITION = $000D;
- {$EXTERNALSYM IMAGE_SYM_CLASS_TYPE_DEFINITION}
- IMAGE_SYM_CLASS_UNDEFINED_STATIC = $000E;
- {$EXTERNALSYM IMAGE_SYM_CLASS_UNDEFINED_STATIC}
- IMAGE_SYM_CLASS_ENUM_TAG = $000F;
- {$EXTERNALSYM IMAGE_SYM_CLASS_ENUM_TAG}
- IMAGE_SYM_CLASS_MEMBER_OF_ENUM = $0010;
- {$EXTERNALSYM IMAGE_SYM_CLASS_MEMBER_OF_ENUM}
- IMAGE_SYM_CLASS_REGISTER_PARAM = $0011;
- {$EXTERNALSYM IMAGE_SYM_CLASS_REGISTER_PARAM}
- IMAGE_SYM_CLASS_BIT_FIELD = $0012;
- {$EXTERNALSYM IMAGE_SYM_CLASS_BIT_FIELD}
- IMAGE_SYM_CLASS_FAR_EXTERNAL = $0044;
- {$EXTERNALSYM IMAGE_SYM_CLASS_FAR_EXTERNAL}
- IMAGE_SYM_CLASS_BLOCK = $0064;
- {$EXTERNALSYM IMAGE_SYM_CLASS_BLOCK}
- IMAGE_SYM_CLASS_FUNCTION = $0065;
- {$EXTERNALSYM IMAGE_SYM_CLASS_FUNCTION}
- IMAGE_SYM_CLASS_END_OF_STRUCT = $0066;
- {$EXTERNALSYM IMAGE_SYM_CLASS_END_OF_STRUCT}
- IMAGE_SYM_CLASS_FILE = $0067;
- {$EXTERNALSYM IMAGE_SYM_CLASS_FILE}
- // new
- IMAGE_SYM_CLASS_SECTION = $0068;
- {$EXTERNALSYM IMAGE_SYM_CLASS_SECTION}
- IMAGE_SYM_CLASS_WEAK_EXTERNAL = $0069;
- {$EXTERNALSYM IMAGE_SYM_CLASS_WEAK_EXTERNAL}
- IMAGE_SYM_CLASS_CLR_TOKEN = $006B;
- {$EXTERNALSYM IMAGE_SYM_CLASS_CLR_TOKEN}
- // type packing constants
- N_BTMASK = $000F;
- {$EXTERNALSYM N_BTMASK}
- N_TMASK = $0030;
- {$EXTERNALSYM N_TMASK}
- N_TMASK1 = $00C0;
- {$EXTERNALSYM N_TMASK1}
- N_TMASK2 = $00F0;
- {$EXTERNALSYM N_TMASK2}
- N_BTSHFT = 4;
- {$EXTERNALSYM N_BTSHFT}
- N_TSHIFT = 2;
- {$EXTERNALSYM N_TSHIFT}
- // MACROS
- // Basic Type of x
- function BTYPE(x: DWORD): DWORD;
- {$EXTERNALSYM BTYPE}
- // Is x a pointer?
- function ISPTR(x: DWORD): Boolean;
- {$EXTERNALSYM ISPTR}
- // Is x a function?
- function ISFCN(x: DWORD): Boolean;
- {$EXTERNALSYM ISFCN}
- // Is x an array?
- function ISARY(x: DWORD): Boolean;
- {$EXTERNALSYM ISARY}
- // Is x a structure, union, or enumeration TAG?
- function ISTAG(x: DWORD): Boolean;
- {$EXTERNALSYM ISTAG}
- //
- // Auxiliary entry format.
- //
- type
- TImgAuzSymSymMisc = record
- case Integer of
- 0: (
- Linenumber: WORD; // declaration line number
- Size: WORD); // size of struct, union, or enum
- 1: (
- TotalSize: DWORD);
- end;
- TImgAuzSymSymFcnAry = record
- case Integer of
- 0: ( // if ISFCN, tag, or .bb
- PointerToLinenumber: DWORD;
- PointerToNextFunction: DWORD);
- 1: ( // if ISARY, up to 4 dimen.
- Dimension: array [0..3] of WORD);
- end;
- TImgAuxSymSym = record
- TagIndex: DWORD; // struct, union, or enum tag index
- Misc: TImgAuzSymSymMisc;
- FcnAry: TImgAuzSymSymFcnAry;
- TvIndex: WORD; // tv index
- end;
- TImgAuxSymFile = record
- Name: array [0..IMAGE_SIZEOF_SYMBOL - 1] of BYTE;
- end;
- TImgAuxSymSection = record
- Length: DWORD; // section length
- NumberOfRelocations: WORD; // number of relocation entries
- NumberOfLinenumbers: WORD; // number of line numbers
- CheckSum: DWORD; // checksum for communal
- Number: SHORT; // section number to associate with
- Selection: BYTE; // communal selection type
- end;
- PIMAGE_AUX_SYMBOL = ^IMAGE_AUX_SYMBOL;
- {$EXTERNALSYM PIMAGE_AUX_SYMBOL}
- _IMAGE_AUX_SYMBOL = record
- case Integer of
- 0: (Sym: TImgAuxSymSym);
- 1: (File_: TImgAuxSymFile);
- 2: (Section: TImgAuxSymSection);
- end;
- {$EXTERNALSYM _IMAGE_AUX_SYMBOL}
- IMAGE_AUX_SYMBOL = _IMAGE_AUX_SYMBOL;
- {$EXTERNALSYM IMAGE_AUX_SYMBOL}
- TImageAuxSymbol = IMAGE_AUX_SYMBOL;
- PImageAuxSymbol = PIMAGE_AUX_SYMBOL;
- const
- IMAGE_SIZEOF_AUX_SYMBOL = 18;
- {$EXTERNALSYM IMAGE_SIZEOF_AUX_SYMBOL}
- IMAGE_AUX_SYMBOL_TYPE_TOKEN_DEF = 1;
- {$EXTERNALSYM IMAGE_AUX_SYMBOL_TYPE_TOKEN_DEF}
- type
- IMAGE_AUX_SYMBOL_TYPE = DWORD;
- {$EXTERNALSYM IMAGE_AUX_SYMBOL_TYPE}
- TImageAuxSymbolType = IMAGE_AUX_SYMBOL_TYPE;
- IMAGE_AUX_SYMBOL_TOKEN_DEF = packed record
- bAuxType: BYTE; // IMAGE_AUX_SYMBOL_TYPE
- bReserved: BYTE; // Must be 0
- SymbolTableIndex: DWORD;
- rgbReserved: array [0..11] of BYTE; // Must be 0
- end;
- {$EXTERNALSYM IMAGE_AUX_SYMBOL_TOKEN_DEF}
- PIMAGE_AUX_SYMBOL_TOKEN_DEF = ^IMAGE_AUX_SYMBOL_TOKEN_DEF;
- {$EXTERNALSYM PIMAGE_AUX_SYMBOL_TOKEN_DEF}
- TImageAuxSymbolTokenDef = IMAGE_AUX_SYMBOL_TOKEN_DEF;
- PImageAuxSymbolTokenDef = PIMAGE_AUX_SYMBOL_TOKEN_DEF;
- //
- // Communal selection types.
- //
- const
- IMAGE_COMDAT_SELECT_NODUPLICATES = 1;
- {$EXTERNALSYM IMAGE_COMDAT_SELECT_NODUPLICATES}
- IMAGE_COMDAT_SELECT_ANY = 2;
- {$EXTERNALSYM IMAGE_COMDAT_SELECT_ANY}
- IMAGE_COMDAT_SELECT_SAME_SIZE = 3;
- {$EXTERNALSYM IMAGE_COMDAT_SELECT_SAME_SIZE}
- IMAGE_COMDAT_SELECT_EXACT_MATCH = 4;
- {$EXTERNALSYM IMAGE_COMDAT_SELECT_EXACT_MATCH}
- IMAGE_COMDAT_SELECT_ASSOCIATIVE = 5;
- {$EXTERNALSYM IMAGE_COMDAT_SELECT_ASSOCIATIVE}
- IMAGE_COMDAT_SELECT_LARGEST = 6;
- {$EXTERNALSYM IMAGE_COMDAT_SELECT_LARGEST}
- IMAGE_COMDAT_SELECT_NEWEST = 7;
- {$EXTERNALSYM IMAGE_COMDAT_SELECT_NEWEST}
- IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY = 1;
- {$EXTERNALSYM IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY}
- IMAGE_WEAK_EXTERN_SEARCH_LIBRARY = 2;
- {$EXTERNALSYM IMAGE_WEAK_EXTERN_SEARCH_LIBRARY}
- IMAGE_WEAK_EXTERN_SEARCH_ALIAS = 3;
- {$EXTERNALSYM IMAGE_WEAK_EXTERN_SEARCH_ALIAS}
- //
- // Relocation format.
- //
- type
- TImgRelocUnion = record
- case Integer of
- 0: (VirtualAddress: DWORD);
- 1: (RelocCount: DWORD); // Set to the real count when IMAGE_SCN_LNK_NRELOC_OVFL is set
- end;
- PIMAGE_RELOCATION = ^IMAGE_RELOCATION;
- {$EXTERNALSYM PIMAGE_RELOCATION}
- _IMAGE_RELOCATION = record
- Union: TImgRelocUnion;
- SymbolTableIndex: DWORD;
- Type_: WORD;
- end;
- {$EXTERNALSYM _IMAGE_RELOCATION}
- IMAGE_RELOCATION = _IMAGE_RELOCATION;
- {$EXTERNALSYM IMAGE_RELOCATION}
- TImageRelocation = IMAGE_RELOCATION;
- PImageRelocation = PIMAGE_RELOCATION;
- const
- IMAGE_SIZEOF_RELOCATION = 10;
- {$EXTERNALSYM IMAGE_SIZEOF_RELOCATION}
- //
- // I386 relocation types.
- //
- IMAGE_REL_I386_ABSOLUTE = $0000; // Reference is absolute, no relocation is necessary
- {$EXTERNALSYM IMAGE_REL_I386_ABSOLUTE}
- IMAGE_REL_I386_DIR16 = $0001; // Direct 16-bit reference to the symbols virtual address
- {$EXTERNALSYM IMAGE_REL_I386_DIR16}
- IMAGE_REL_I386_REL16 = $0002; // PC-relative 16-bit reference to the symbols virtual address
- {$EXTERNALSYM IMAGE_REL_I386_REL16}
- IMAGE_REL_I386_DIR32 = $0006; // Direct 32-bit reference to the symbols virtual address
- {$EXTERNALSYM IMAGE_REL_I386_DIR32}
- IMAGE_REL_I386_DIR32NB = $0007; // Direct 32-bit reference to the symbols virtual address, base not included
- {$EXTERNALSYM IMAGE_REL_I386_DIR32NB}
- IMAGE_REL_I386_SEG12 = $0009; // Direct 16-bit reference to the segment-selector bits of a 32-bit virtual address
- {$EXTERNALSYM IMAGE_REL_I386_SEG12}
- IMAGE_REL_I386_SECTION = $000A;
- {$EXTERNALSYM IMAGE_REL_I386_SECTION}
- IMAGE_REL_I386_SECREL = $000B;
- {$EXTERNALSYM IMAGE_REL_I386_SECREL}
- IMAGE_REL_MIPS_SECRELLO = $000C; // Low 16-bit section relative referemce (used for >32k TLS)
- {$EXTERNALSYM IMAGE_REL_MIPS_SECRELLO}
- IMAGE_REL_MIPS_SECRELHI = $000D; // High 16-bit section relative reference (used for >32k TLS)
- {$EXTERNALSYM IMAGE_REL_MIPS_SECRELHI}
- IMAGE_REL_I386_REL32 = $0014; // PC-relative 32-bit reference to the symbols virtual address
- {$EXTERNALSYM IMAGE_REL_I386_REL32}
- //
- // MIPS relocation types.
- //
- IMAGE_REL_MIPS_ABSOLUTE = $0000; // Reference is absolute, no relocation is necessary
- {$EXTERNALSYM IMAGE_REL_MIPS_ABSOLUTE}
- IMAGE_REL_MIPS_REFHALF = $0001;
- {$EXTERNALSYM IMAGE_REL_MIPS_REFHALF}
- IMAGE_REL_MIPS_REFWORD = $0002;
- {$EXTERNALSYM IMAGE_REL_MIPS_REFWORD}
- IMAGE_REL_MIPS_JMPADDR = $0003;
- {$EXTERNALSYM IMAGE_REL_MIPS_JMPADDR}
- IMAGE_REL_MIPS_REFHI = $0004;
- {$EXTERNALSYM IMAGE_REL_MIPS_REFHI}
- IMAGE_REL_MIPS_REFLO = $0005;
- {$EXTERNALSYM IMAGE_REL_MIPS_REFLO}
- IMAGE_REL_MIPS_GPREL = $0006;
- {$EXTERNALSYM IMAGE_REL_MIPS_GPREL}
- IMAGE_REL_MIPS_LITERAL = $0007;
- {$EXTERNALSYM IMAGE_REL_MIPS_LITERAL}
- IMAGE_REL_MIPS_SECTION = $000A;
- {$EXTERNALSYM IMAGE_REL_MIPS_SECTION}
- IMAGE_REL_MIPS_SECREL = $000B;
- {$EXTERNALSYM IMAGE_REL_MIPS_SECREL}
- //IMAGE_REL_MIPS_SECRELLO = $000C; // Low 16-bit section relative referemce (used for >32k TLS)
- //{$EXTERNALSYM IMAGE_REL_MIPS_SECRELLO}
- //IMAGE_REL_MIPS_SECRELHI = $000D; // High 16-bit section relative reference (used for >32k TLS)
- //{$EXTERNALSYM IMAGE_REL_MIPS_SECRELHI}
- IMAGE_REL_MIPS_TOKEN = $000E; // clr token
- {$EXTERNALSYM IMAGE_REL_MIPS_TOKEN}
- IMAGE_REL_MIPS_JMPADDR16 = $0010;
- {$EXTERNALSYM IMAGE_REL_MIPS_JMPADDR16}
- IMAGE_REL_MIPS_REFWORDNB = $0022;
- {$EXTERNALSYM IMAGE_REL_MIPS_REFWORDNB}
- IMAGE_REL_MIPS_PAIR = $0025;
- {$EXTERNALSYM IMAGE_REL_MIPS_PAIR}
- //
- // Alpha Relocation types.
- //
- IMAGE_REL_ALPHA_ABSOLUTE = $0000;
- {$EXTERNALSYM IMAGE_REL_ALPHA_ABSOLUTE}
- IMAGE_REL_ALPHA_REFLONG = $0001;
- {$EXTERNALSYM IMAGE_REL_ALPHA_REFLONG}
- IMAGE_REL_ALPHA_REFQUAD = $0002;
- {$EXTERNALSYM IMAGE_REL_ALPHA_REFQUAD}
- IMAGE_REL_ALPHA_GPREL32 = $0003;
- {$EXTERNALSYM IMAGE_REL_ALPHA_GPREL32}
- IMAGE_REL_ALPHA_LITERAL = $0004;
- {$EXTERNALSYM IMAGE_REL_ALPHA_LITERAL}
- IMAGE_REL_ALPHA_LITUSE = $0005;
- {$EXTERNALSYM IMAGE_REL_ALPHA_LITUSE}
- IMAGE_REL_ALPHA_GPDISP = $0006;
- {$EXTERNALSYM IMAGE_REL_ALPHA_GPDISP}
- IMAGE_REL_ALPHA_BRADDR = $0007;
- {$EXTERNALSYM IMAGE_REL_ALPHA_BRADDR}
- IMAGE_REL_ALPHA_HINT = $0008;
- {$EXTERNALSYM IMAGE_REL_ALPHA_HINT}
- IMAGE_REL_ALPHA_INLINE_REFLONG = $0009;
- {$EXTERNALSYM IMAGE_REL_ALPHA_INLINE_REFLONG}
- IMAGE_REL_ALPHA_REFHI = $000A;
- {$EXTERNALSYM IMAGE_REL_ALPHA_REFHI}
- IMAGE_REL_ALPHA_REFLO = $000B;
- {$EXTERNALSYM IMAGE_REL_ALPHA_REFLO}
- IMAGE_REL_ALPHA_PAIR = $000C;
- {$EXTERNALSYM IMAGE_REL_ALPHA_PAIR}
- IMAGE_REL_ALPHA_MATCH = $000D;
- {$EXTERNALSYM IMAGE_REL_ALPHA_MATCH}
- IMAGE_REL_ALPHA_SECTION = $000E;
- {$EXTERNALSYM IMAGE_REL_ALPHA_SECTION}
- IMAGE_REL_ALPHA_SECREL = $000F;
- {$EXTERNALSYM IMAGE_REL_ALPHA_SECREL}
- IMAGE_REL_ALPHA_REFLONGNB = $0010;
- {$EXTERNALSYM IMAGE_REL_ALPHA_REFLONGNB}
- IMAGE_REL_ALPHA_SECRELLO = $0011; // Low 16-bit section relative reference
- {$EXTERNALSYM IMAGE_REL_ALPHA_SECRELLO}
- IMAGE_REL_ALPHA_SECRELHI = $0012; // High 16-bit section relative reference
- {$EXTERNALSYM IMAGE_REL_ALPHA_SECRELHI}
- IMAGE_REL_ALPHA_REFQ3 = $0013; // High 16 bits of 48 bit reference
- {$EXTERNALSYM IMAGE_REL_ALPHA_REFQ3}
- IMAGE_REL_ALPHA_REFQ2 = $0014; // Middle 16 bits of 48 bit reference
- {$EXTERNALSYM IMAGE_REL_ALPHA_REFQ2}
- IMAGE_REL_ALPHA_REFQ1 = $0015; // Low 16 bits of 48 bit reference
- {$EXTERNALSYM IMAGE_REL_ALPHA_REFQ1}
- IMAGE_REL_ALPHA_GPRELLO = $0016; // Low 16-bit GP relative reference
- {$EXTERNALSYM IMAGE_REL_ALPHA_GPRELLO}
- IMAGE_REL_ALPHA_GPRELHI = $0017; // High 16-bit GP relative reference
- {$EXTERNALSYM IMAGE_REL_ALPHA_GPRELHI}
- //
- // IBM PowerPC relocation types.
- //
- IMAGE_REL_PPC_ABSOLUTE = $0000; // NOP
- {$EXTERNALSYM IMAGE_REL_PPC_ABSOLUTE}
- IMAGE_REL_PPC_ADDR64 = $0001; // 64-bit address
- {$EXTERNALSYM IMAGE_REL_PPC_ADDR64}
- IMAGE_REL_PPC_ADDR32 = $0002; // 32-bit address
- {$EXTERNALSYM IMAGE_REL_PPC_ADDR32}
- IMAGE_REL_PPC_ADDR24 = $0003; // 26-bit address, shifted left 2 (branch absolute)
- {$EXTERNALSYM IMAGE_REL_PPC_ADDR24}
- IMAGE_REL_PPC_ADDR16 = $0004; // 16-bit address
- {$EXTERNALSYM IMAGE_REL_PPC_ADDR16}
- IMAGE_REL_PPC_ADDR14 = $0005; // 16-bit address, shifted left 2 (load doubleword)
- {$EXTERNALSYM IMAGE_REL_PPC_ADDR14}
- IMAGE_REL_PPC_REL24 = $0006; // 26-bit PC-relative offset, shifted left 2 (branch relative)
- {$EXTERNALSYM IMAGE_REL_PPC_REL24}
- IMAGE_REL_PPC_REL14 = $0007; // 16-bit PC-relative offset, shifted left 2 (br cond relative)
- {$EXTERNALSYM IMAGE_REL_PPC_REL14}
- IMAGE_REL_PPC_TOCREL16 = $0008; // 16-bit offset from TOC base
- {$EXTERNALSYM IMAGE_REL_PPC_TOCREL16}
- IMAGE_REL_PPC_TOCREL14 = $0009; // 16-bit offset from TOC base, shifted left 2 (load doubleword)
- {$EXTERNALSYM IMAGE_REL_PPC_TOCREL14}
- IMAGE_REL_PPC_ADDR32NB = $000A; // 32-bit addr w/o image base
- {$EXTERNALSYM IMAGE_REL_PPC_ADDR32NB}
- IMAGE_REL_PPC_SECREL = $000B; // va of containing section (as in an image sectionhdr)
- {$EXTERNALSYM IMAGE_REL_PPC_SECREL}
- IMAGE_REL_PPC_SECTION = $000C; // sectionheader number
- {$EXTERNALSYM IMAGE_REL_PPC_SECTION}
- IMAGE_REL_PPC_IFGLUE = $000D; // substitute TOC restore instruction iff symbol is glue code
- {$EXTERNALSYM IMAGE_REL_PPC_IFGLUE}
- IMAGE_REL_PPC_IMGLUE = $000E; // symbol is glue code; virtual address is TOC restore instruction
- {$EXTERNALSYM IMAGE_REL_PPC_IMGLUE}
- IMAGE_REL_PPC_SECREL16 = $000F; // va of containing section (limited to 16 bits)
- {$EXTERNALSYM IMAGE_REL_PPC_SECREL16}
- IMAGE_REL_PPC_REFHI = $0010;
- {$EXTERNALSYM IMAGE_REL_PPC_REFHI}
- IMAGE_REL_PPC_REFLO = $0011;
- {$EXTERNALSYM IMAGE_REL_PPC_REFLO}
- IMAGE_REL_PPC_PAIR = $0012;
- {$EXTERNALSYM IMAGE_REL_PPC_PAIR}
- IMAGE_REL_PPC_SECRELLO = $0013; // Low 16-bit section relative reference (used for >32k TLS)
- {$EXTERNALSYM IMAGE_REL_PPC_SECRELLO}
- IMAGE_REL_PPC_SECRELHI = $0014; // High 16-bit section relative reference (used for >32k TLS)
- {$EXTERNALSYM IMAGE_REL_PPC_SECRELHI}
- IMAGE_REL_PPC_GPREL = $0015;
- {$EXTERNALSYM IMAGE_REL_PPC_GPREL}
- IMAGE_REL_PPC_TOKEN = $0016; // clr token
- {$EXTERNALSYM IMAGE_REL_PPC_TOKEN}
- IMAGE_REL_PPC_TYPEMASK = $00FF; // mask to isolate above values in IMAGE_RELOCATION.Type
- {$EXTERNALSYM IMAGE_REL_PPC_TYPEMASK}
- // Flag bits in IMAGE_RELOCATION.TYPE
- IMAGE_REL_PPC_NEG = $0100; // subtract reloc value rather than adding it
- {$EXTERNALSYM IMAGE_REL_PPC_NEG}
- IMAGE_REL_PPC_BRTAKEN = $0200; // fix branch prediction bit to predict branch taken
- {$EXTERNALSYM IMAGE_REL_PPC_BRTAKEN}
- IMAGE_REL_PPC_BRNTAKEN = $0400; // fix branch prediction bit to predict branch not taken
- {$EXTERNALSYM IMAGE_REL_PPC_BRNTAKEN}
- IMAGE_REL_PPC_TOCDEFN = $0800; // toc slot defined in file (or, data in toc)
- {$EXTERNALSYM IMAGE_REL_PPC_TOCDEFN}
- //
- // Hitachi SH3 relocation types.
- //
- IMAGE_REL_SH3_ABSOLUTE = $0000; // No relocation
- {$EXTERNALSYM IMAGE_REL_SH3_ABSOLUTE}
- IMAGE_REL_SH3_DIRECT16 = $0001; // 16 bit direct
- {$EXTERNALSYM IMAGE_REL_SH3_DIRECT16}
- IMAGE_REL_SH3_DIRECT32 = $0002; // 32 bit direct
- {$EXTERNALSYM IMAGE_REL_SH3_DIRECT32}
- IMAGE_REL_SH3_DIRECT8 = $0003; // 8 bit direct, -128..255
- {$EXTERNALSYM IMAGE_REL_SH3_DIRECT8}
- IMAGE_REL_SH3_DIRECT8_WORD = $0004; // 8 bit direct .W (0 ext.)
- {$EXTERNALSYM IMAGE_REL_SH3_DIRECT8_WORD}
- IMAGE_REL_SH3_DIRECT8_LONG = $0005; // 8 bit direct .L (0 ext.)
- {$EXTERNALSYM IMAGE_REL_SH3_DIRECT8_LONG}
- IMAGE_REL_SH3_DIRECT4 = $0006; // 4 bit direct (0 ext.)
- {$EXTERNALSYM IMAGE_REL_SH3_DIRECT4}
- IMAGE_REL_SH3_DIRECT4_WORD = $0007; // 4 bit direct .W (0 ext.)
- {$EXTERNALSYM IMAGE_REL_SH3_DIRECT4_WORD}
- IMAGE_REL_SH3_DIRECT4_LONG = $0008; // 4 bit direct .L (0 ext.)
- {$EXTERNALSYM IMAGE_REL_SH3_DIRECT4_LONG}
- IMAGE_REL_SH3_PCREL8_WORD = $0009; // 8 bit PC relative .W
- {$EXTERNALSYM IMAGE_REL_SH3_PCREL8_WORD}
- IMAGE_REL_SH3_PCREL8_LONG = $000A; // 8 bit PC relative .L
- {$EXTERNALSYM IMAGE_REL_SH3_PCREL8_LONG}
- IMAGE_REL_SH3_PCREL12_WORD = $000B; // 12 LSB PC relative .W
- {$EXTERNALSYM IMAGE_REL_SH3_PCREL12_WORD}
- IMAGE_REL_SH3_STARTOF_SECTION = $000C; // Start of EXE section
- {$EXTERNALSYM IMAGE_REL_SH3_STARTOF_SECTION}
- IMAGE_REL_SH3_SIZEOF_SECTION = $000D; // Size of EXE section
- {$EXTERNALSYM IMAGE_REL_SH3_SIZEOF_SECTION}
- IMAGE_REL_SH3_SECTION = $000E; // Section table index
- {$EXTERNALSYM IMAGE_REL_SH3_SECTION}
- IMAGE_REL_SH3_SECREL = $000F; // Offset within section
- {$EXTERNALSYM IMAGE_REL_SH3_SECREL}
- IMAGE_REL_SH3_DIRECT32_NB = $0010; // 32 bit direct not based
- {$EXTERNALSYM IMAGE_REL_SH3_DIRECT32_NB}
- IMAGE_REL_SH3_GPREL4_LONG = $0011; // GP-relative addressing
- {$EXTERNALSYM IMAGE_REL_SH3_GPREL4_LONG}
- IMAGE_REL_SH3_TOKEN = $0012; // clr token
- {$EXTERNALSYM IMAGE_REL_SH3_TOKEN}
- IMAGE_REL_ARM_ABSOLUTE = $0000; // No relocation required
- {$EXTERNALSYM IMAGE_REL_ARM_ABSOLUTE}
- IMAGE_REL_ARM_ADDR32 = $0001; // 32 bit address
- {$EXTERNALSYM IMAGE_REL_ARM_ADDR32}
- IMAGE_REL_ARM_ADDR32NB = $0002; // 32 bit address w/o image base
- {$EXTERNALSYM IMAGE_REL_ARM_ADDR32NB}
- IMAGE_REL_ARM_BRANCH24 = $0003; // 24 bit offset << 2 & sign ext.
- {$EXTERNALSYM IMAGE_REL_ARM_BRANCH24}
- IMAGE_REL_ARM_BRANCH11 = $0004; // Thumb: 2 11 bit offsets
- {$EXTERNALSYM IMAGE_REL_ARM_BRANCH11}
- IMAGE_REL_ARM_TOKEN = $0005; // clr token
- {$EXTERNALSYM IMAGE_REL_ARM_TOKEN}
- IMAGE_REL_ARM_GPREL12 = $0006; // GP-relative addressing (ARM)
- {$EXTERNALSYM IMAGE_REL_ARM_GPREL12}
- IMAGE_REL_ARM_GPREL7 = $0007; // GP-relative addressing (Thumb)
- {$EXTERNALSYM IMAGE_REL_ARM_GPREL7}
- IMAGE_REL_ARM_BLX24 = $0008;
- {$EXTERNALSYM IMAGE_REL_ARM_BLX24}
- IMAGE_REL_ARM_BLX11 = $0009;
- {$EXTERNALSYM IMAGE_REL_ARM_BLX11}
- IMAGE_REL_ARM_SECTION = $000E; // Section table index
- {$EXTERNALSYM IMAGE_REL_ARM_SECTION}
- IMAGE_REL_ARM_SECREL = $000F; // Offset within section
- {$EXTERNALSYM IMAGE_REL_ARM_SECREL}
- IMAGE_REL_AM_ABSOLUTE = $0000;
- {$EXTERNALSYM IMAGE_REL_AM_ABSOLUTE}
- IMAGE_REL_AM_ADDR32 = $0001;
- {$EXTERNALSYM IMAGE_REL_AM_ADDR32}
- IMAGE_REL_AM_ADDR32NB = $0002;
- {$EXTERNALSYM IMAGE_REL_AM_ADDR32NB}
- IMAGE_REL_AM_CALL32 = $0003;
- {$EXTERNALSYM IMAGE_REL_AM_CALL32}
- IMAGE_REL_AM_FUNCINFO = $0004;
- {$EXTERNALSYM IMAGE_REL_AM_FUNCINFO}
- IMAGE_REL_AM_REL32_1 = $0005;
- {$EXTERNALSYM IMAGE_REL_AM_REL32_1}
- IMAGE_REL_AM_REL32_2 = $0006;
- {$EXTERNALSYM IMAGE_REL_AM_REL32_2}
- IMAGE_REL_AM_SECREL = $0007;
- {$EXTERNALSYM IMAGE_REL_AM_SECREL}
- IMAGE_REL_AM_SECTION = $0008;
- {$EXTERNALSYM IMAGE_REL_AM_SECTION}
- IMAGE_REL_AM_TOKEN = $0009;
- {$EXTERNALSYM IMAGE_REL_AM_TOKEN}
- //
- // X86-64 relocations
- //
- IMAGE_REL_AMD64_ABSOLUTE = $0000; // Reference is absolute, no relocation is necessary
- {$EXTERNALSYM IMAGE_REL_AMD64_ABSOLUTE}
- IMAGE_REL_AMD64_ADDR64 = $0001; // 64-bit address (VA).
- {$EXTERNALSYM IMAGE_REL_AMD64_ADDR64}
- IMAGE_REL_AMD64_ADDR32 = $0002; // 32-bit address (VA).
- {$EXTERNALSYM IMAGE_REL_AMD64_ADDR32}
- IMAGE_REL_AMD64_ADDR32NB = $0003; // 32-bit address w/o image base (RVA).
- {$EXTERNALSYM IMAGE_REL_AMD64_ADDR32NB}
- IMAGE_REL_AMD64_REL32 = $0004; // 32-bit relative address from byte following reloc
- {$EXTERNALSYM IMAGE_REL_AMD64_REL32}
- IMAGE_REL_AMD64_REL32_1 = $0005; // 32-bit relative address from byte distance 1 from reloc
- {$EXTERNALSYM IMAGE_REL_AMD64_REL32_1}
- IMAGE_REL_AMD64_REL32_2 = $0006; // 32-bit relative address from byte distance 2 from reloc
- {$EXTERNALSYM IMAGE_REL_AMD64_REL32_2}
- IMAGE_REL_AMD64_REL32_3 = $0007; // 32-bit relative address from byte distance 3 from reloc
- {$EXTERNALSYM IMAGE_REL_AMD64_REL32_3}
- IMAGE_REL_AMD64_REL32_4 = $0008; // 32-bit relative address from byte distance 4 from reloc
- {$EXTERNALSYM IMAGE_REL_AMD64_REL32_4}
- IMAGE_REL_AMD64_REL32_5 = $0009; // 32-bit relative address from byte distance 5 from reloc
- {$EXTERNALSYM IMAGE_REL_AMD64_REL32_5}
- IMAGE_REL_AMD64_SECTION = $000A; // Section index
- {$EXTERNALSYM IMAGE_REL_AMD64_SECTION}
- IMAGE_REL_AMD64_SECREL = $000B; // 32 bit offset from base of section containing target
- {$EXTERNALSYM IMAGE_REL_AMD64_SECREL}
- IMAGE_REL_AMD64_SECREL7 = $000C; // 7 bit unsigned offset from base of section containing target
- {$EXTERNALSYM IMAGE_REL_AMD64_SECREL7}
- IMAGE_REL_AMD64_TOKEN = $000D; // 32 bit metadata token
- {$EXTERNALSYM IMAGE_REL_AMD64_TOKEN}
- IMAGE_REL_AMD64_SREL32 = $000E; // 32 bit signed span-dependent value emitted into object
- {$EXTERNALSYM IMAGE_REL_AMD64_SREL32}
- IMAGE_REL_AMD64_PAIR = $000F;
- {$EXTERNALSYM IMAGE_REL_AMD64_PAIR}
- IMAGE_REL_AMD64_SSPAN32 = $0010; // 32 bit signed span-dependent value applied at link time
- {$EXTERNALSYM IMAGE_REL_AMD64_SSPAN32}
- //
- // IA64 relocation types.
- //
- IMAGE_REL_IA64_ABSOLUTE = $0000;
- {$EXTERNALSYM IMAGE_REL_IA64_ABSOLUTE}
- IMAGE_REL_IA64_IMM14 = $0001;
- {$EXTERNALSYM IMAGE_REL_IA64_IMM14}
- IMAGE_REL_IA64_IMM22 = $0002;
- {$EXTERNALSYM IMAGE_REL_IA64_IMM22}
- IMAGE_REL_IA64_IMM64 = $0003;
- {$EXTERNALSYM IMAGE_REL_IA64_IMM64}
- IMAGE_REL_IA64_DIR32 = $0004;
- {$EXTERNALSYM IMAGE_REL_IA64_DIR32}
- IMAGE_REL_IA64_DIR64 = $0005;
- {$EXTERNALSYM IMAGE_REL_IA64_DIR64}
- IMAGE_REL_IA64_PCREL21B = $0006;
- {$EXTERNALSYM IMAGE_REL_IA64_PCREL21B}
- IMAGE_REL_IA64_PCREL21M = $0007;
- {$EXTERNALSYM IMAGE_REL_IA64_PCREL21M}
- IMAGE_REL_IA64_PCREL21F = $0008;
- {$EXTERNALSYM IMAGE_REL_IA64_PCREL21F}
- IMAGE_REL_IA64_GPREL22 = $0009;
- {$EXTERNALSYM IMAGE_REL_IA64_GPREL22}
- IMAGE_REL_IA64_LTOFF22 = $000A;
- {$EXTERNALSYM IMAGE_REL_IA64_LTOFF22}
- IMAGE_REL_IA64_SECTION = $000B;
- {$EXTERNALSYM IMAGE_REL_IA64_SECTION}
- IMAGE_REL_IA64_SECREL22 = $000C;
- {$EXTERNALSYM IMAGE_REL_IA64_SECREL22}
- IMAGE_REL_IA64_SECREL64I = $000D;
- {$EXTERNALSYM IMAGE_REL_IA64_SECREL64I}
- IMAGE_REL_IA64_SECREL32 = $000E;
- {$EXTERNALSYM IMAGE_REL_IA64_SECREL32}
- //
- IMAGE_REL_IA64_DIR32NB = $0010;
- {$EXTERNALSYM IMAGE_REL_IA64_DIR32NB}
- IMAGE_REL_IA64_SREL14 = $0011;
- {$EXTERNALSYM IMAGE_REL_IA64_SREL14}
- IMAGE_REL_IA64_SREL22 = $0012;
- {$EXTERNALSYM IMAGE_REL_IA64_SREL22}
- IMAGE_REL_IA64_SREL32 = $0013;
- {$EXTERNALSYM IMAGE_REL_IA64_SREL32}
- IMAGE_REL_IA64_UREL32 = $0014;
- {$EXTERNALSYM IMAGE_REL_IA64_UREL32}
- IMAGE_REL_IA64_PCREL60X = $0015; // This is always a BRL and never converted
- {$EXTERNALSYM IMAGE_REL_IA64_PCREL60X}
- IMAGE_REL_IA64_PCREL60B = $0016; // If possible, convert to MBB bundle with NOP.B in slot 1
- {$EXTERNALSYM IMAGE_REL_IA64_PCREL60B}
- IMAGE_REL_IA64_PCREL60F = $0017; // If possible, convert to MFB bundle with NOP.F in slot 1
- {$EXTERNALSYM IMAGE_REL_IA64_PCREL60F}
- IMAGE_REL_IA64_PCREL60I = $0018; // If possible, convert to MIB bundle with NOP.I in slot 1
- {$EXTERNALSYM IMAGE_REL_IA64_PCREL60I}
- IMAGE_REL_IA64_PCREL60M = $0019; // If possible, convert to MMB bundle with NOP.M in slot 1
- {$EXTERNALSYM IMAGE_REL_IA64_PCREL60M}
- IMAGE_REL_IA64_IMMGPREL64 = $001A;
- {$EXTERNALSYM IMAGE_REL_IA64_IMMGPREL64}
- IMAGE_REL_IA64_TOKEN = $001B; // clr token
- {$EXTERNALSYM IMAGE_REL_IA64_TOKEN}
- IMAGE_REL_IA64_GPREL32 = $001C;
- {$EXTERNALSYM IMAGE_REL_IA64_GPREL32}
- IMAGE_REL_IA64_ADDEND = $001F;
- {$EXTERNALSYM IMAGE_REL_IA64_ADDEND}
- //
- // CEF relocation types.
- //
- IMAGE_REL_CEF_ABSOLUTE = $0000; // Reference is absolute, no relocation is necessary
- {$EXTERNALSYM IMAGE_REL_CEF_ABSOLUTE}
- IMAGE_REL_CEF_ADDR32 = $0001; // 32-bit address (VA).
- {$EXTERNALSYM IMAGE_REL_CEF_ADDR32}
- IMAGE_REL_CEF_ADDR64 = $0002; // 64-bit address (VA).
- {$EXTERNALSYM IMAGE_REL_CEF_ADDR64}
- IMAGE_REL_CEF_ADDR32NB = $0003; // 32-bit address w/o image base (RVA).
- {$EXTERNALSYM IMAGE_REL_CEF_ADDR32NB}
- IMAGE_REL_CEF_SECTION = $0004; // Section index
- {$EXTERNALSYM IMAGE_REL_CEF_SECTION}
- IMAGE_REL_CEF_SECREL = $0005; // 32 bit offset from base of section containing target
- {$EXTERNALSYM IMAGE_REL_CEF_SECREL}
- IMAGE_REL_CEF_TOKEN = $0006; // 32 bit metadata token
- {$EXTERNALSYM IMAGE_REL_CEF_TOKEN}
- //
- // clr relocation types.
- //
- IMAGE_REL_CEE_ABSOLUTE = $0000; // Reference is absolute, no relocation is necessary
- {$EXTERNALSYM IMAGE_REL_CEE_ABSOLUTE}
- IMAGE_REL_CEE_ADDR32 = $0001; // 32-bit address (VA).
- {$EXTERNALSYM IMAGE_REL_CEE_ADDR32}
- IMAGE_REL_CEE_ADDR64 = $0002; // 64-bit address (VA).
- {$EXTERNALSYM IMAGE_REL_CEE_ADDR64}
- IMAGE_REL_CEE_ADDR32NB = $0003; // 32-bit address w/o image base (RVA).
- {$EXTERNALSYM IMAGE_REL_CEE_ADDR32NB}
- IMAGE_REL_CEE_SECTION = $0004; // Section index
- {$EXTERNALSYM IMAGE_REL_CEE_SECTION}
- IMAGE_REL_CEE_SECREL = $0005; // 32 bit offset from base of section containing target
- {$EXTERNALSYM IMAGE_REL_CEE_SECREL}
- IMAGE_REL_CEE_TOKEN = $0006; // 32 bit metadata token
- {$EXTERNALSYM IMAGE_REL_CEE_TOKEN}
- IMAGE_REL_M32R_ABSOLUTE = $0000; // No relocation required
- {$EXTERNALSYM IMAGE_REL_M32R_ABSOLUTE}
- IMAGE_REL_M32R_ADDR32 = $0001; // 32 bit address
- {$EXTERNALSYM IMAGE_REL_M32R_ADDR32}
- IMAGE_REL_M32R_ADDR32NB = $0002; // 32 bit address w/o image base
- {$EXTERNALSYM IMAGE_REL_M32R_ADDR32NB}
- IMAGE_REL_M32R_ADDR24 = $0003; // 24 bit address
- {$EXTERNALSYM IMAGE_REL_M32R_ADDR24}
- IMAGE_REL_M32R_GPREL16 = $0004; // GP relative addressing
- {$EXTERNALSYM IMAGE_REL_M32R_GPREL16}
- IMAGE_REL_M32R_PCREL24 = $0005; // 24 bit offset << 2 & sign ext.
- {$EXTERNALSYM IMAGE_REL_M32R_PCREL24}
- IMAGE_REL_M32R_PCREL16 = $0006; // 16 bit offset << 2 & sign ext.
- {$EXTERNALSYM IMAGE_REL_M32R_PCREL16}
- IMAGE_REL_M32R_PCREL8 = $0007; // 8 bit offset << 2 & sign ext.
- {$EXTERNALSYM IMAGE_REL_M32R_PCREL8}
- IMAGE_REL_M32R_REFHALF = $0008; // 16 MSBs
- {$EXTERNALSYM IMAGE_REL_M32R_REFHALF}
- IMAGE_REL_M32R_REFHI = $0009; // 16 MSBs; adj for LSB sign ext.
- {$EXTERNALSYM IMAGE_REL_M32R_REFHI}
- IMAGE_REL_M32R_REFLO = $000A; // 16 LSBs
- {$EXTERNALSYM IMAGE_REL_M32R_REFLO}
- IMAGE_REL_M32R_PAIR = $000B; // Link HI and LO
- {$EXTERNALSYM IMAGE_REL_M32R_PAIR}
- IMAGE_REL_M32R_SECTION = $000C; // Section table index
- {$EXTERNALSYM IMAGE_REL_M32R_SECTION}
- IMAGE_REL_M32R_SECREL32 = $000D; // 32 bit section relative reference
- {$EXTERNALSYM IMAGE_REL_M32R_SECREL32}
- IMAGE_REL_M32R_TOKEN = $000E; // clr token
- {$EXTERNALSYM IMAGE_REL_M32R_TOKEN}
- // Please contact INTEL to get IA64-specific information
- (* TODO
- #define EXT_IMM64(Value, Address, Size, InstPos, ValPos)
- Value |= (((ULONGLONG)((*(Address) >> InstPos) & (((ULONGLONG)1 << Size) - 1))) << ValPos) // Intel-IA64-Filler
- #define INS_IMM64(Value, Address, Size, InstPos, ValPos) /* Intel-IA64-Filler */\
- *(PDWORD)Address = (*(PDWORD)Address & ~(((1 << Size) - 1) << InstPos)) | /* Intel-IA64-Filler */\
- ((DWORD)((((ULONGLONG)Value >> ValPos) & (((ULONGLONG)1 << Size) - 1))) << InstPos) // Intel-IA64-Filler
- *)
- const
- EMARCH_ENC_I17_IMM7B_INST_WORD_X = 3; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_IMM7B_INST_WORD_X}
- EMARCH_ENC_I17_IMM7B_SIZE_X = 7; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_IMM7B_SIZE_X}
- EMARCH_ENC_I17_IMM7B_INST_WORD_POS_X = 4; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_IMM7B_INST_WORD_POS_X}
- EMARCH_ENC_I17_IMM7B_VAL_POS_X = 0; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_IMM7B_VAL_POS_X}
- EMARCH_ENC_I17_IMM9D_INST_WORD_X = 3; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_IMM9D_INST_WORD_X}
- EMARCH_ENC_I17_IMM9D_SIZE_X = 9; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_IMM9D_SIZE_X}
- EMARCH_ENC_I17_IMM9D_INST_WORD_POS_X = 18; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_IMM9D_INST_WORD_POS_X}
- EMARCH_ENC_I17_IMM9D_VAL_POS_X = 7; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_IMM9D_VAL_POS_X}
- EMARCH_ENC_I17_IMM5C_INST_WORD_X = 3; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_IMM5C_INST_WORD_X}
- EMARCH_ENC_I17_IMM5C_SIZE_X = 5; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_IMM5C_SIZE_X}
- EMARCH_ENC_I17_IMM5C_INST_WORD_POS_X = 13; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_IMM5C_INST_WORD_POS_X}
- EMARCH_ENC_I17_IMM5C_VAL_POS_X = 16; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_IMM5C_VAL_POS_X}
- EMARCH_ENC_I17_IC_INST_WORD_X = 3; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_IC_INST_WORD_X}
- EMARCH_ENC_I17_IC_SIZE_X = 1; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_IC_SIZE_X}
- EMARCH_ENC_I17_IC_INST_WORD_POS_X = 12; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_IC_INST_WORD_POS_X}
- EMARCH_ENC_I17_IC_VAL_POS_X = 21; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_IC_VAL_POS_X}
- EMARCH_ENC_I17_IMM41a_INST_WORD_X = 1; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_IMM41a_INST_WORD_X}
- EMARCH_ENC_I17_IMM41a_SIZE_X = 10; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_IMM41a_SIZE_X}
- EMARCH_ENC_I17_IMM41a_INST_WORD_POS_X = 14; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_IMM41a_INST_WORD_POS_X}
- EMARCH_ENC_I17_IMM41a_VAL_POS_X = 22; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_IMM41a_VAL_POS_X}
- EMARCH_ENC_I17_IMM41b_INST_WORD_X = 1; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_IMM41b_INST_WORD_X}
- EMARCH_ENC_I17_IMM41b_SIZE_X = 8; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_IMM41b_SIZE_X}
- EMARCH_ENC_I17_IMM41b_INST_WORD_POS_X = 24; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_IMM41b_INST_WORD_POS_X}
- EMARCH_ENC_I17_IMM41b_VAL_POS_X = 32; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_IMM41b_VAL_POS_X}
- EMARCH_ENC_I17_IMM41c_INST_WORD_X = 2; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_IMM41c_INST_WORD_X}
- EMARCH_ENC_I17_IMM41c_SIZE_X = 23; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_IMM41c_SIZE_X}
- EMARCH_ENC_I17_IMM41c_INST_WORD_POS_X = 0; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_IMM41c_INST_WORD_POS_X}
- EMARCH_ENC_I17_IMM41c_VAL_POS_X = 40; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_IMM41c_VAL_POS_X}
- EMARCH_ENC_I17_SIGN_INST_WORD_X = 3; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_SIGN_INST_WORD_X}
- EMARCH_ENC_I17_SIGN_SIZE_X = 1; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_SIGN_SIZE_X}
- EMARCH_ENC_I17_SIGN_INST_WORD_POS_X = 27; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_SIGN_INST_WORD_POS_X}
- EMARCH_ENC_I17_SIGN_VAL_POS_X = 63; // Intel-IA64-Filler
- {$EXTERNALSYM EMARCH_ENC_I17_SIGN_VAL_POS_X}
- //
- // Line number format.
- //
- type
- TImgLineNoType = record
- case Integer of
- 0: (SymbolTableIndex: DWORD); // Symbol table index of function name if Linenumber is 0.
- 1: (VirtualAddress: DWORD); // Virtual address of line number.
- end;
- PIMAGE_LINENUMBER = ^IMAGE_LINENUMBER;
- {$EXTERNALSYM PIMAGE_LINENUMBER}
- _IMAGE_LINENUMBER = record
- Type_: TImgLineNoType;
- Linenumber: WORD; // Line number.
- end;
- {$EXTERNALSYM _IMAGE_LINENUMBER}
- IMAGE_LINENUMBER = _IMAGE_LINENUMBER;
- {$EXTERNALSYM IMAGE_LINENUMBER}
- TImageLineNumber = IMAGE_LINENUMBER;
- PImageLineNumber = PIMAGE_LINENUMBER;
- const
- IMAGE_SIZEOF_LINENUMBER = 6;
- {$EXTERNALSYM IMAGE_SIZEOF_LINENUMBER}
- // #include "poppack.h" // Back to 4 byte packing
- //
- // Based relocation format.
- //
- type
- PIMAGE_BASE_RELOCATION = ^IMAGE_BASE_RELOCATION;
- {$EXTERNALSYM PIMAGE_BASE_RELOCATION}
- _IMAGE_BASE_RELOCATION = record
- VirtualAddress: DWORD;
- SizeOfBlock: DWORD;
- // WORD TypeOffset[1];
- end;
- {$EXTERNALSYM _IMAGE_BASE_RELOCATION}
- IMAGE_BASE_RELOCATION = _IMAGE_BASE_RELOCATION;
- {$EXTERNALSYM IMAGE_BASE_RELOCATION}
- TImageBaseRelocation = IMAGE_BASE_RELOCATION;
- PImageBaseRelocation = PIMAGE_BASE_RELOCATION;
- const
- IMAGE_SIZEOF_BASE_RELOCATION = 8;
- {$EXTERNALSYM IMAGE_SIZEOF_BASE_RELOCATION}
- //
- // Based relocation types.
- //
- IMAGE_REL_BASED_ABSOLUTE = 0;
- {$EXTERNALSYM IMAGE_REL_BASED_ABSOLUTE}
- IMAGE_REL_BASED_HIGH = 1;
- {$EXTERNALSYM IMAGE_REL_BASED_HIGH}
- IMAGE_REL_BASED_LOW = 2;
- {$EXTERNALSYM IMAGE_REL_BASED_LOW}
- IMAGE_REL_BASED_HIGHLOW = 3;
- {$EXTERNALSYM IMAGE_REL_BASED_HIGHLOW}
- IMAGE_REL_BASED_HIGHADJ = 4;
- {$EXTERNALSYM IMAGE_REL_BASED_HIGHADJ}
- IMAGE_REL_BASED_MIPS_JMPADDR = 5;
- {$EXTERNALSYM IMAGE_REL_BASED_MIPS_JMPADDR}
- IMAGE_REL_BASED_MIPS_JMPADDR16 = 9;
- {$EXTERNALSYM IMAGE_REL_BASED_MIPS_JMPADDR16}
- IMAGE_REL_BASED_IA64_IMM64 = 9;
- {$EXTERNALSYM IMAGE_REL_BASED_IA64_IMM64}
- IMAGE_REL_BASED_DIR64 = 10;
- {$EXTERNALSYM IMAGE_REL_BASED_DIR64}
- //
- // Archive format.
- //
- IMAGE_ARCHIVE_START_SIZE = 8;
- {$EXTERNALSYM IMAGE_ARCHIVE_START_SIZE}
- IMAGE_ARCHIVE_START = '!<arch>'#10;
- {$EXTERNALSYM IMAGE_ARCHIVE_START}
- IMAGE_ARCHIVE_END = '`'#10;
- {$EXTERNALSYM IMAGE_ARCHIVE_END}
- IMAGE_ARCHIVE_PAD = #10;
- {$EXTERNALSYM IMAGE_ARCHIVE_PAD}
- IMAGE_ARCHIVE_LINKER_MEMBER = '/ ';
- {$EXTERNALSYM IMAGE_ARCHIVE_LINKER_MEMBER}
- IMAGE_ARCHIVE_LONGNAMES_MEMBER = '// ';
- {$EXTERNALSYM IMAGE_ARCHIVE_LONGNAMES_MEMBER}
- type
- PIMAGE_ARCHIVE_MEMBER_HEADER = ^IMAGE_ARCHIVE_MEMBER_HEADER;
- {$EXTERNALSYM PIMAGE_ARCHIVE_MEMBER_HEADER}
- _IMAGE_ARCHIVE_MEMBER_HEADER = record
- Name: array [0..15] of Byte; // File member name - `/' terminated.
- Date: array [0..11] of Byte; // File member date - decimal.
- UserID: array [0..5] of Byte; // File member user id - decimal.
- GroupID: array [0..5] of Byte; // File member group id - decimal.
- Mode: array [0..7] of Byte; // File member mode - octal.
- Size: array [0..9] of Byte; // File member size - decimal.
- EndHeader: array [0..1] of Byte; // String to end header.
- end;
- {$EXTERNALSYM _IMAGE_ARCHIVE_MEMBER_HEADER}
- IMAGE_ARCHIVE_MEMBER_HEADER = _IMAGE_ARCHIVE_MEMBER_HEADER;
- {$EXTERNALSYM IMAGE_ARCHIVE_MEMBER_HEADER}
- TImageArchiveMemberHeader = IMAGE_ARCHIVE_MEMBER_HEADER;
- PImageArchiveMemberHeader = PIMAGE_ARCHIVE_MEMBER_HEADER;
- const
- IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR = 60;
- {$EXTERNALSYM IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR}
- //
- // DLL support.
- //
- //
- // Export Format
- //
- type
- PIMAGE_EXPORT_DIRECTORY = ^IMAGE_EXPORT_DIRECTORY;
- {$EXTERNALSYM PIMAGE_EXPORT_DIRECTORY}
- _IMAGE_EXPORT_DIRECTORY = record
- Characteristics: DWORD;
- TimeDateStamp: DWORD;
- MajorVersion: Word;
- MinorVersion: Word;
- Name: DWORD;
- Base: DWORD;
- NumberOfFunctions: DWORD;
- NumberOfNames: DWORD;
- AddressOfFunctions: DWORD; // RVA from base of image
- AddressOfNames: DWORD; // RVA from base of image
- AddressOfNameOrdinals: DWORD; // RVA from base of image
- end;
- {$EXTERNALSYM _IMAGE_EXPORT_DIRECTORY}
- IMAGE_EXPORT_DIRECTORY = _IMAGE_EXPORT_DIRECTORY;
- {$EXTERNALSYM IMAGE_EXPORT_DIRECTORY}
- TImageExportDirectory = IMAGE_EXPORT_DIRECTORY;
- PImageExportDirectory = PIMAGE_EXPORT_DIRECTORY;
- //
- // Import Format
- //
- PIMAGE_IMPORT_BY_NAME = ^IMAGE_IMPORT_BY_NAME;
- {$EXTERNALSYM PIMAGE_IMPORT_BY_NAME}
- _IMAGE_IMPORT_BY_NAME = record
- Hint: Word;
- Name: array [0..0] of Byte;
- end;
- {$EXTERNALSYM _IMAGE_IMPORT_BY_NAME}
- IMAGE_IMPORT_BY_NAME = _IMAGE_IMPORT_BY_NAME;
- {$EXTERNALSYM IMAGE_IMPORT_BY_NAME}
- TImageImportByName = IMAGE_IMPORT_BY_NAME;
- PImageImportByName = PIMAGE_IMPORT_BY_NAME;
- // #include "pshpack8.h" // Use align 8 for the 64-bit IAT.
- PIMAGE_THUNK_DATA64 = ^IMAGE_THUNK_DATA64;
- {$EXTERNALSYM PIMAGE_THUNK_DATA64}
- _IMAGE_THUNK_DATA64 = record
- case Integer of
- 0: (ForwarderString: ULONGLONG); // PBYTE
- 1: (Function_: ULONGLONG); // PDWORD
- 2: (Ordinal: ULONGLONG);
- 3: (AddressOfData: ULONGLONG); // PIMAGE_IMPORT_BY_NAME
- end;
- {$EXTERNALSYM _IMAGE_THUNK_DATA64}
- IMAGE_THUNK_DATA64 = _IMAGE_THUNK_DATA64;
- {$EXTERNALSYM IMAGE_THUNK_DATA64}
- TImageThunkData64 = IMAGE_THUNK_DATA64;
- PImageThunkData64 = PIMAGE_THUNK_DATA64;
- // #include "poppack.h" // Back to 4 byte packing
- PIMAGE_THUNK_DATA32 = ^IMAGE_THUNK_DATA32;
- {$EXTERNALSYM PIMAGE_THUNK_DATA32}
- _IMAGE_THUNK_DATA32 = record
- case Integer of
- 0: (ForwarderString: DWORD); // PBYTE
- 1: (Function_: DWORD); // PDWORD
- 2: (Ordinal: DWORD);
- 3: (AddressOfData: DWORD); // PIMAGE_IMPORT_BY_NAME
- end;
- {$EXTERNALSYM _IMAGE_THUNK_DATA32}
- IMAGE_THUNK_DATA32 = _IMAGE_THUNK_DATA32;
- {$EXTERNALSYM IMAGE_THUNK_DATA32}
- TImageThunkData32 = IMAGE_THUNK_DATA32;
- PImageThunkData32 = PIMAGE_THUNK_DATA32;
- const
- IMAGE_ORDINAL_FLAG64 = ULONGLONG($8000000000000000);
- {$EXTERNALSYM IMAGE_ORDINAL_FLAG64}
- IMAGE_ORDINAL_FLAG32 = DWORD($80000000);
- {$EXTERNALSYM IMAGE_ORDINAL_FLAG32}
- function IMAGE_ORDINAL64(Ordinal: ULONGLONG): ULONGLONG;
- {$EXTERNALSYM IMAGE_ORDINAL64}
- function IMAGE_ORDINAL32(Ordinal: DWORD): DWORD;
- {$EXTERNALSYM IMAGE_ORDINAL32}
- function IMAGE_SNAP_BY_ORDINAL64(Ordinal: ULONGLONG): Boolean;
- {$EXTERNALSYM IMAGE_SNAP_BY_ORDINAL64}
- function IMAGE_SNAP_BY_ORDINAL32(Ordinal: DWORD): Boolean;
- {$EXTERNALSYM IMAGE_SNAP_BY_ORDINAL32}
- //
- // Thread Local Storage
- //
- type
- PIMAGE_TLS_CALLBACK = procedure(DllHandle: Pointer; Reason: DWORD; Reserved: Pointer); stdcall;
- {$EXTERNALSYM PIMAGE_TLS_CALLBACK}
- TImageTlsCallback = PIMAGE_TLS_CALLBACK;
- PIMAGE_TLS_DIRECTORY64 = ^IMAGE_TLS_DIRECTORY64;
- {$EXTERNALSYM PIMAGE_TLS_DIRECTORY64}
- _IMAGE_TLS_DIRECTORY64 = record
- StartAddressOfRawData: ULONGLONG;
- EndAddressOfRawData: ULONGLONG;
- AddressOfIndex: ULONGLONG; // PDWORD
- AddressOfCallBacks: ULONGLONG; // PIMAGE_TLS_CALLBACK *;
- SizeOfZeroFill: DWORD;
- Characteristics: DWORD;
- end;
- {$EXTERNALSYM _IMAGE_TLS_DIRECTORY64}
- IMAGE_TLS_DIRECTORY64 = _IMAGE_TLS_DIRECTORY64;
- {$EXTERNALSYM IMAGE_TLS_DIRECTORY64}
- TImageTlsDirectory64 = IMAGE_TLS_DIRECTORY64;
- PImageTlsDirectory64 = PIMAGE_TLS_DIRECTORY64;
- PIMAGE_TLS_DIRECTORY32 = ^IMAGE_TLS_DIRECTORY32;
- {$EXTERNALSYM PIMAGE_TLS_DIRECTORY32}
- _IMAGE_TLS_DIRECTORY32 = record
- StartAddressOfRawData: DWORD;
- EndAddressOfRawData: DWORD;
- AddressOfIndex: DWORD; // PDWORD
- AddressOfCallBacks: DWORD; // PIMAGE_TLS_CALLBACK *
- SizeOfZeroFill: DWORD;
- Characteristics: DWORD;
- end;
- {$EXTERNALSYM _IMAGE_TLS_DIRECTORY32}
- IMAGE_TLS_DIRECTORY32 = _IMAGE_TLS_DIRECTORY32;
- {$EXTERNALSYM IMAGE_TLS_DIRECTORY32}
- TImageTlsDirectory32 = IMAGE_TLS_DIRECTORY32;
- PImageTlsDirectory32 = PIMAGE_TLS_DIRECTORY32;
- const
- IMAGE_ORDINAL_FLAG = IMAGE_ORDINAL_FLAG32;
- {$EXTERNALSYM IMAGE_ORDINAL_FLAG}
- function IMAGE_ORDINAL(Ordinal: DWORD): DWORD;
- type
- IMAGE_THUNK_DATA = IMAGE_THUNK_DATA32;
- {$EXTERNALSYM IMAGE_THUNK_DATA}
- PIMAGE_THUNK_DATA = PIMAGE_THUNK_DATA32;
- {$EXTERNALSYM PIMAGE_THUNK_DATA}
- TImageThunkData = TImageThunkData32;
- PImageThunkData = PImageThunkData32;
- function IMAGE_SNAP_BY_ORDINAL(Ordinal: DWORD): Boolean;
- {$EXTERNALSYM IMAGE_SNAP_BY_ORDINAL}
- type
- IMAGE_TLS_DIRECTORY = IMAGE_TLS_DIRECTORY32;
- {$EXTERNALSYM IMAGE_TLS_DIRECTORY}
- PIMAGE_TLS_DIRECTORY = PIMAGE_TLS_DIRECTORY32;
- {$EXTERNALSYM PIMAGE_TLS_DIRECTORY}
- TImageTlsDirectory = TImageTlsDirectory32;
- PImageTlsDirectory = PImageTlsDirectory32;
- TIIDUnion = record
- case Integer of
- 0: (Characteristics: DWORD); // 0 for terminating null import descriptor
- 1: (OriginalFirstThunk: DWORD); // RVA to original unbound IAT (PIMAGE_THUNK_DATA)
- end;
- PIMAGE_IMPORT_DESCRIPTOR = ^IMAGE_IMPORT_DESCRIPTOR;
- {$EXTERNALSYM PIMAGE_IMPORT_DESCRIPTOR}
- _IMAGE_IMPORT_DESCRIPTOR = record
- Union: TIIDUnion;
- TimeDateStamp: DWORD; // 0 if not bound,
- // -1 if bound, and real date\time stamp
- // in IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT (new BIND)
- // O.W. date/time stamp of DLL bound to (Old BIND)
- ForwarderChain: DWORD; // -1 if no forwarders
- Name: DWORD;
- FirstThunk: DWORD; // RVA to IAT (if bound this IAT has actual addresses)
- end;
- {$EXTERNALSYM _IMAGE_IMPORT_DESCRIPTOR}
- IMAGE_IMPORT_DESCRIPTOR = _IMAGE_IMPORT_DESCRIPTOR;
- {$EXTERNALSYM IMAGE_IMPORT_DESCRIPTOR}
- TImageImportDecriptor = IMAGE_IMPORT_DESCRIPTOR;
- PImageImportDecriptor = PIMAGE_IMPORT_DESCRIPTOR;
- //
- // New format import descriptors pointed to by DataDirectory[ IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT ]
- //
- type
- PIMAGE_BOUND_IMPORT_DESCRIPTOR = ^IMAGE_BOUND_IMPORT_DESCRIPTOR;
- {$EXTERNALSYM PIMAGE_BOUND_IMPORT_DESCRIPTOR}
- _IMAGE_BOUND_IMPORT_DESCRIPTOR = record
- TimeDateStamp: DWORD;
- OffsetModuleName: Word;
- NumberOfModuleForwarderRefs: Word;
- // Array of zero or more IMAGE_BOUND_FORWARDER_REF follows
- end;
- {$EXTERNALSYM _IMAGE_BOUND_IMPORT_DESCRIPTOR}
- IMAGE_BOUND_IMPORT_DESCRIPTOR = _IMAGE_BOUND_IMPORT_DESCRIPTOR;
- {$EXTERNALSYM IMAGE_BOUND_IMPORT_DESCRIPTOR}
- TImageBoundImportDescriptor = IMAGE_BOUND_IMPORT_DESCRIPTOR;
- PImageBoundImportDescriptor = PIMAGE_BOUND_IMPORT_DESCRIPTOR;
- PIMAGE_BOUND_FORWARDER_REF = ^IMAGE_BOUND_FORWARDER_REF;
- {$EXTERNALSYM PIMAGE_BOUND_FORWARDER_REF}
- _IMAGE_BOUND_FORWARDER_REF = record
- TimeDateStamp: DWORD;
- OffsetModuleName: Word;
- Reserved: Word;
- end;
- {$EXTERNALSYM _IMAGE_BOUND_FORWARDER_REF}
- IMAGE_BOUND_FORWARDER_REF = _IMAGE_BOUND_FORWARDER_REF;
- {$EXTERNALSYM IMAGE_BOUND_FORWARDER_REF}
- TImageBoundForwarderRef = IMAGE_BOUND_FORWARDER_REF;
- PImageBoundForwarderRef = PIMAGE_BOUND_FORWARDER_REF;
- //
- // Resource Format.
- //
- //
- // Resource directory consists of two counts, following by a variable length
- // array of directory entries. The first count is the number of entries at
- // beginning of the array that have actual names associated with each entry.
- // The entries are in ascending order, case insensitive strings. The second
- // count is the number of entries that immediately follow the named entries.
- // This second count identifies the number of entries that have 16-bit integer
- // Ids as their name. These entries are also sorted in ascending order.
- //
- // This structure allows fast lookup by either name or number, but for any
- // given resource entry only one form of lookup is supported, not both.
- // This is consistant with the syntax of the .RC file and the .RES file.
- //
- PIMAGE_RESOURCE_DIRECTORY = ^IMAGE_RESOURCE_DIRECTORY;
- {$EXTERNALSYM PIMAGE_RESOURCE_DIRECTORY}
- _IMAGE_RESOURCE_DIRECTORY = record
- Characteristics: DWORD;
- TimeDateStamp: DWORD;
- MajorVersion: Word;
- MinorVersion: Word;
- NumberOfNamedEntries: Word;
- NumberOfIdEntries: Word;
- // IMAGE_RESOURCE_DIRECTORY_ENTRY DirectoryEntries[];
- end;
- {$EXTERNALSYM _IMAGE_RESOURCE_DIRECTORY}
- IMAGE_RESOURCE_DIRECTORY = _IMAGE_RESOURCE_DIRECTORY;
- {$EXTERNALSYM IMAGE_RESOURCE_DIRECTORY}
- TImageResourceDirectory = IMAGE_RESOURCE_DIRECTORY;
- PImageResourceDirectory = PIMAGE_RESOURCE_DIRECTORY;
- const
- IMAGE_RESOURCE_NAME_IS_STRING = DWORD($80000000);
- {$EXTERNALSYM IMAGE_RESOURCE_NAME_IS_STRING}
- IMAGE_RESOURCE_DATA_IS_DIRECTORY = DWORD($80000000);
- {$EXTERNALSYM IMAGE_RESOURCE_DATA_IS_DIRECTORY}
- //
- // Each directory contains the 32-bit Name of the entry and an offset,
- // relative to the beginning of the resource directory of the data associated
- // with this directory entry. If the name of the entry is an actual text
- // string instead of an integer Id, then the high order bit of the name field
- // is set to one and the low order 31-bits are an offset, relative to the
- // beginning of the resource directory of the string, which is of type
- // IMAGE_RESOURCE_DIRECTORY_STRING. Otherwise the high bit is clear and the
- // low-order 16-bits are the integer Id that identify this resource directory
- // entry. If the directory entry is yet another resource directory (i.e. a
- // subdirectory), then the high order bit of the offset field will be
- // set to indicate this. Otherwise the high bit is clear and the offset
- // field points to a resource data entry.
- //
- type
- TIRDEName = record
- case Integer of
- 0: (
- NameOffset: DWORD); // 0..30: NameOffset; 31: NameIsString
- 1: (
- Name: DWORD);
- 2: (
- Id: WORD);
- end;
- TIRDEDirectory = record
- case Integer of
- 0: (
- OffsetToData: DWORD);
- 1: (
- OffsetToDirectory: DWORD); // 0..30: OffsetToDirectory; 31: DataIsDirectory
- end;
- PIMAGE_RESOURCE_DIRECTORY_ENTRY = ^IMAGE_RESOURCE_DIRECTORY_ENTRY;
- {$EXTERNALSYM PIMAGE_RESOURCE_DIRECTORY_ENTRY}
- _IMAGE_RESOURCE_DIRECTORY_ENTRY = record
- Name: TIRDEName;
- Directory: TIRDEDirectory;
- end;
- {$EXTERNALSYM _IMAGE_RESOURCE_DIRECTORY_ENTRY}
- IMAGE_RESOURCE_DIRECTORY_ENTRY = _IMAGE_RESOURCE_DIRECTORY_ENTRY;
- {$EXTERNALSYM IMAGE_RESOURCE_DIRECTORY_ENTRY}
- TImageResourceDirectoryEntry = IMAGE_RESOURCE_DIRECTORY_ENTRY;
- PImageResourceDirectoryEntry = PIMAGE_RESOURCE_DIRECTORY_ENTRY;
- //
- // For resource directory entries that have actual string names, the Name
- // field of the directory entry points to an object of the following type.
- // All of these string objects are stored together after the last resource
- // directory entry and before the first resource data object. This minimizes
- // the impact of these variable length objects on the alignment of the fixed
- // size directory entry objects.
- //
- type
- PIMAGE_RESOURCE_DIRECTORY_STRING = ^IMAGE_RESOURCE_DIRECTORY_STRING;
- {$EXTERNALSYM PIMAGE_RESOURCE_DIRECTORY_STRING}
- _IMAGE_RESOURCE_DIRECTORY_STRING = record
- Length: Word;
- NameString: array [0..0] of CHAR;
- end;
- {$EXTERNALSYM _IMAGE_RESOURCE_DIRECTORY_STRING}
- IMAGE_RESOURCE_DIRECTORY_STRING = _IMAGE_RESOURCE_DIRECTORY_STRING;
- {$EXTERNALSYM IMAGE_RESOURCE_DIRECTORY_STRING}
- TImageResourceDirectoryString = IMAGE_RESOURCE_DIRECTORY_STRING;
- PImageResourceDirectoryString = PIMAGE_RESOURCE_DIRECTORY_STRING;
- PIMAGE_RESOURCE_DIR_STRING_U = ^IMAGE_RESOURCE_DIR_STRING_U;
- {$EXTERNALSYM PIMAGE_RESOURCE_DIR_STRING_U}
- _IMAGE_RESOURCE_DIR_STRING_U = record
- Length: Word;
- NameString: array [0..0] of WCHAR;
- end;
- {$EXTERNALSYM _IMAGE_RESOURCE_DIR_STRING_U}
- IMAGE_RESOURCE_DIR_STRING_U = _IMAGE_RESOURCE_DIR_STRING_U;
- {$EXTERNALSYM IMAGE_RESOURCE_DIR_STRING_U}
- TImageResourceDirStringU = IMAGE_RESOURCE_DIR_STRING_U;
- PImageResourceDirStringU = PIMAGE_RESOURCE_DIR_STRING_U;
- //
- // Each resource data entry describes a leaf node in the resource directory
- // tree. It contains an offset, relative to the beginning of the resource
- // directory of the data for the resource, a size field that gives the number
- // of bytes of data at that offset, a CodePage that should be used when
- // decoding code point values within the resource data. Typically for new
- // applications the code page would be the unicode code page.
- //
- PIMAGE_RESOURCE_DATA_ENTRY = ^IMAGE_RESOURCE_DATA_ENTRY;
- {$EXTERNALSYM PIMAGE_RESOURCE_DATA_ENTRY}
- _IMAGE_RESOURCE_DATA_ENTRY = record
- OffsetToData: DWORD;
- Size: DWORD;
- CodePage: DWORD;
- Reserved: DWORD;
- end;
- {$EXTERNALSYM _IMAGE_RESOURCE_DATA_ENTRY}
- IMAGE_RESOURCE_DATA_ENTRY = _IMAGE_RESOURCE_DATA_ENTRY;
- {$EXTERNALSYM IMAGE_RESOURCE_DATA_ENTRY}
- TImageResourceDataEntry = IMAGE_RESOURCE_DATA_ENTRY;
- PImageResourceDataEntry = PIMAGE_RESOURCE_DATA_ENTRY;
- //
- // Load Configuration Directory Entry
- //
- type
- PIMAGE_LOAD_CONFIG_DIRECTORY32 = ^IMAGE_LOAD_CONFIG_DIRECTORY32;
- {$EXTERNALSYM PIMAGE_LOAD_CONFIG_DIRECTORY32}
- IMAGE_LOAD_CONFIG_DIRECTORY32 = record
- Size: DWORD;
- TimeDateStamp: DWORD;
- MajorVersion: WORD;
- MinorVersion: WORD;
- GlobalFlagsClear: DWORD;
- GlobalFlagsSet: DWORD;
- CriticalSectionDefaultTimeout: DWORD;
- DeCommitFreeBlockThreshold: DWORD;
- DeCommitTotalFreeThreshold: DWORD;
- LockPrefixTable: DWORD; // VA
- MaximumAllocationSize: DWORD;
- VirtualMemoryThreshold: DWORD;
- ProcessHeapFlags: DWORD;
- ProcessAffinityMask: DWORD;
- CSDVersion: WORD;
- Reserved1: WORD;
- EditList: DWORD; // VA
- SecurityCookie: DWORD; // VA
- SEHandlerTable: DWORD; // VA
- SEHandlerCount: DWORD;
- end;
- {$EXTERNALSYM IMAGE_LOAD_CONFIG_DIRECTORY32}
- TImageLoadConfigDirectory32 = IMAGE_LOAD_CONFIG_DIRECTORY32;
- PImageLoadConfigDirectory32 = PIMAGE_LOAD_CONFIG_DIRECTORY32;
- PIMAGE_LOAD_CONFIG_DIRECTORY64 = ^IMAGE_LOAD_CONFIG_DIRECTORY64;
- {$EXTERNALSYM PIMAGE_LOAD_CONFIG_DIRECTORY64}
- IMAGE_LOAD_CONFIG_DIRECTORY64 = record
- Size: DWORD;
- TimeDateStamp: DWORD;
- MajorVersion: WORD;
- MinorVersion: WORD;
- GlobalFlagsClear: DWORD;
- GlobalFlagsSet: DWORD;
- CriticalSectionDefaultTimeout: DWORD;
- DeCommitFreeBlockThreshold: ULONGLONG;
- DeCommitTotalFreeThreshold: ULONGLONG;
- LockPrefixTable: ULONGLONG; // VA
- MaximumAllocationSize: ULONGLONG;
- VirtualMemoryThreshold: ULONGLONG;
- ProcessAffinityMask: ULONGLONG;
- ProcessHeapFlags: DWORD;
- CSDVersion: WORD;
- Reserved1: WORD;
- EditList: ULONGLONG; // VA
- SecurityCookie: ULONGLONG; // VA
- SEHandlerTable: ULONGLONG; // VA
- SEHandlerCount: ULONGLONG;
- end;
- {$EXTERNALSYM IMAGE_LOAD_CONFIG_DIRECTORY64}
- TImageLoadConfigDirectory64 = IMAGE_LOAD_CONFIG_DIRECTORY64;
- PImageLoadConfigDirectory64 = PIMAGE_LOAD_CONFIG_DIRECTORY64;
- IMAGE_LOAD_CONFIG_DIRECTORY = IMAGE_LOAD_CONFIG_DIRECTORY32;
- {$EXTERNALSYM IMAGE_LOAD_CONFIG_DIRECTORY}
- PIMAGE_LOAD_CONFIG_DIRECTORY = PIMAGE_LOAD_CONFIG_DIRECTORY32;
- {$EXTERNALSYM PIMAGE_LOAD_CONFIG_DIRECTORY}
- TImageLoadConfigDirectory = TImageLoadConfigDirectory32;
- PImageLoadConfigDirectory = PImageLoadConfigDirectory32;
- //
- // WIN CE Exception table format
- //
- //
- // Function table entry format. Function table is pointed to by the
- // IMAGE_DIRECTORY_ENTRY_EXCEPTION directory entry.
- //
- type
- PIMAGE_CE_RUNTIME_FUNCTION_ENTRY = ^IMAGE_CE_RUNTIME_FUNCTION_ENTRY;
- {$EXTERNALSYM PIMAGE_CE_RUNTIME_FUNCTION_ENTRY}
- _IMAGE_CE_RUNTIME_FUNCTION_ENTRY = record
- FuncStart: DWORD;
- Flags: DWORD;
- //DWORD PrologLen : 8;
- //DWORD FuncLen : 22;
- //DWORD ThirtyTwoBit : 1;
- //DWORD ExceptionFlag : 1;
- end;
- {$EXTERNALSYM _IMAGE_CE_RUNTIME_FUNCTION_ENTRY}
- IMAGE_CE_RUNTIME_FUNCTION_ENTRY = _IMAGE_CE_RUNTIME_FUNCTION_ENTRY;
- {$EXTERNALSYM IMAGE_CE_RUNTIME_FUNCTION_ENTRY}
- TImageCERuntimeFunctionEntry = IMAGE_CE_RUNTIME_FUNCTION_ENTRY;
- PImageCERuntimeFunctionEntry = PIMAGE_CE_RUNTIME_FUNCTION_ENTRY;
- //
- // Debug Format
- //
- type
- PIMAGE_DEBUG_DIRECTORY = ^IMAGE_DEBUG_DIRECTORY;
- {$EXTERNALSYM PIMAGE_DEBUG_DIRECTORY}
- _IMAGE_DEBUG_DIRECTORY = record
- Characteristics: DWORD;
- TimeDateStamp: DWORD;
- MajorVersion: Word;
- MinorVersion: Word;
- Type_: DWORD;
- SizeOfData: DWORD;
- AddressOfRawData: DWORD;
- PointerToRawData: DWORD;
- end;
- {$EXTERNALSYM _IMAGE_DEBUG_DIRECTORY}
- IMAGE_DEBUG_DIRECTORY = _IMAGE_DEBUG_DIRECTORY;
- {$EXTERNALSYM IMAGE_DEBUG_DIRECTORY}
- TImageDebugDirectory = IMAGE_DEBUG_DIRECTORY;
- PImageDebugDirectory = PIMAGE_DEBUG_DIRECTORY;
- const
- IMAGE_DEBUG_TYPE_UNKNOWN = 0;
- {$EXTERNALSYM IMAGE_DEBUG_TYPE_UNKNOWN}
- IMAGE_DEBUG_TYPE_COFF = 1;
- {$EXTERNALSYM IMAGE_DEBUG_TYPE_COFF}
- IMAGE_DEBUG_TYPE_CODEVIEW = 2;
- {$EXTERNALSYM IMAGE_DEBUG_TYPE_CODEVIEW}
- IMAGE_DEBUG_TYPE_FPO = 3;
- {$EXTERNALSYM IMAGE_DEBUG_TYPE_FPO}
- IMAGE_DEBUG_TYPE_MISC = 4;
- {$EXTERNALSYM IMAGE_DEBUG_TYPE_MISC}
- IMAGE_DEBUG_TYPE_EXCEPTION = 5;
- {$EXTERNALSYM IMAGE_DEBUG_TYPE_EXCEPTION}
- IMAGE_DEBUG_TYPE_FIXUP = 6;
- {$EXTERNALSYM IMAGE_DEBUG_TYPE_FIXUP}
- IMAGE_DEBUG_TYPE_OMAP_TO_SRC = 7;
- {$EXTERNALSYM IMAGE_DEBUG_TYPE_OMAP_TO_SRC}
- IMAGE_DEBUG_TYPE_OMAP_FROM_SRC = 8;
- {$EXTERNALSYM IMAGE_DEBUG_TYPE_OMAP_FROM_SRC}
- IMAGE_DEBUG_TYPE_BORLAND = 9;
- {$EXTERNALSYM IMAGE_DEBUG_TYPE_BORLAND}
- IMAGE_DEBUG_TYPE_RESERVED10 = 10;
- {$EXTERNALSYM IMAGE_DEBUG_TYPE_RESERVED10}
- IMAGE_DEBUG_TYPE_CLSID = 11;
- {$EXTERNALSYM IMAGE_DEBUG_TYPE_CLSID}
- type
- PIMAGE_COFF_SYMBOLS_HEADER = ^IMAGE_COFF_SYMBOLS_HEADER;
- {$EXTERNALSYM PIMAGE_COFF_SYMBOLS_HEADER}
- _IMAGE_COFF_SYMBOLS_HEADER = record
- NumberOfSymbols: DWORD;
- LvaToFirstSymbol: DWORD;
- NumberOfLinenumbers: DWORD;
- LvaToFirstLinenumber: DWORD;
- RvaToFirstByteOfCode: DWORD;
- RvaToLastByteOfCode: DWORD;
- RvaToFirstByteOfData: DWORD;
- RvaToLastByteOfData: DWORD;
- end;
- {$EXTERNALSYM _IMAGE_COFF_SYMBOLS_HEADER}
- IMAGE_COFF_SYMBOLS_HEADER = _IMAGE_COFF_SYMBOLS_HEADER;
- {$EXTERNALSYM IMAGE_COFF_SYMBOLS_HEADER}
- TImageCoffSymbolsHeader = IMAGE_COFF_SYMBOLS_HEADER;
- PImageCoffSymbolsHeader = PIMAGE_COFF_SYMBOLS_HEADER;
- const
- FRAME_FPO = 0;
- {$EXTERNALSYM FRAME_FPO}
- FRAME_TRAP = 1;
- {$EXTERNALSYM FRAME_TRAP}
- FRAME_TSS = 2;
- {$EXTERNALSYM FRAME_TSS}
- FRAME_NONFPO = 3;
- {$EXTERNALSYM FRAME_NONFPO}
- FPOFLAGS_PROLOG = $00FF; // # bytes in prolog
- FPOFLAGS_REGS = $0700; // # regs saved
- FPOFLAGS_HAS_SEH = $0800; // TRUE if SEH in func
- FPOFLAGS_USE_BP = $1000; // TRUE if EBP has been allocated
- FPOFLAGS_RESERVED = $2000; // reserved for future use
- FPOFLAGS_FRAME = $C000; // frame type
- type
- PFPO_DATA = ^FPO_DATA;
- {$EXTERNALSYM PFPO_DATA}
- _FPO_DATA = record
- ulOffStart: DWORD; // offset 1st byte of function code
- cbProcSize: DWORD; // # bytes in function
- cdwLocals: DWORD; // # bytes in locals/4
- cdwParams: WORD; // # bytes in params/4
- Flags: WORD;
- end;
- {$EXTERNALSYM _FPO_DATA}
- FPO_DATA = _FPO_DATA;
- {$EXTERNALSYM FPO_DATA}
- TFpoData = FPO_DATA;
- PFpoData = PFPO_DATA;
- const
- SIZEOF_RFPO_DATA = 16;
- {$EXTERNALSYM SIZEOF_RFPO_DATA}
- IMAGE_DEBUG_MISC_EXENAME = 1;
- {$EXTERNALSYM IMAGE_DEBUG_MISC_EXENAME}
- type
- PIMAGE_DEBUG_MISC = ^IMAGE_DEBUG_MISC;
- {$EXTERNALSYM PIMAGE_DEBUG_MISC}
- _IMAGE_DEBUG_MISC = record
- DataType: DWORD; // type of misc data, see defines
- Length: DWORD; // total length of record, rounded to four byte multiple.
- Unicode: ByteBool; // TRUE if data is unicode string
- Reserved: array [0..2] of Byte;
- Data: array [0..0] of Byte; // Actual data
- end;
- {$EXTERNALSYM _IMAGE_DEBUG_MISC}
- IMAGE_DEBUG_MISC = _IMAGE_DEBUG_MISC;
- {$EXTERNALSYM IMAGE_DEBUG_MISC}
- TImageDebugMisc = IMAGE_DEBUG_MISC;
- PImageDebugMisc = PIMAGE_DEBUG_MISC;
- //
- // Function table extracted from MIPS/ALPHA/IA64 images. Does not contain
- // information needed only for runtime support. Just those fields for
- // each entry needed by a debugger.
- //
- PIMAGE_FUNCTION_ENTRY = ^IMAGE_FUNCTION_ENTRY;
- {$EXTERNALSYM PIMAGE_FUNCTION_ENTRY}
- _IMAGE_FUNCTION_ENTRY = record
- StartingAddress: DWORD;
- EndingAddress: DWORD;
- EndOfPrologue: DWORD;
- end;
- {$EXTERNALSYM _IMAGE_FUNCTION_ENTRY}
- IMAGE_FUNCTION_ENTRY = _IMAGE_FUNCTION_ENTRY;
- {$EXTERNALSYM IMAGE_FUNCTION_ENTRY}
- TImageFunctionEntry = IMAGE_FUNCTION_ENTRY;
- PImageFunctionEntry = PIMAGE_FUNCTION_ENTRY;
- PIMAGE_FUNCTION_ENTRY64 = ^IMAGE_FUNCTION_ENTRY64;
- {$EXTERNALSYM PIMAGE_FUNCTION_ENTRY64}
- _IMAGE_FUNCTION_ENTRY64 = record
- StartingAddress: ULONGLONG;
- EndingAddress: ULONGLONG;
- case Integer of
- 0: (EndOfPrologue: ULONGLONG);
- 1: (UnwindInfoAddress: ULONGLONG);
- end;
- {$EXTERNALSYM _IMAGE_FUNCTION_ENTRY64}
- IMAGE_FUNCTION_ENTRY64 = _IMAGE_FUNCTION_ENTRY64;
- {$EXTERNALSYM IMAGE_FUNCTION_ENTRY64}
- TImageFunctionEntry64 = IMAGE_FUNCTION_ENTRY64;
- PImageFunctionEntry64 = PIMAGE_FUNCTION_ENTRY64;
- //
- // Debugging information can be stripped from an image file and placed
- // in a separate .DBG file, whose file name part is the same as the
- // image file name part (e.g. symbols for CMD.EXE could be stripped
- // and placed in CMD.DBG). This is indicated by the IMAGE_FILE_DEBUG_STRIPPED
- // flag in the Characteristics field of the file header. The beginning of
- // the .DBG file contains the following structure which captures certain
- // information from the image file. This allows a debug to proceed even if
- // the original image file is not accessable. This header is followed by
- // zero of more IMAGE_SECTION_HEADER structures, followed by zero or more
- // IMAGE_DEBUG_DIRECTORY structures. The latter structures and those in
- // the image file contain file offsets relative to the beginning of the
- // .DBG file.
- //
- // If symbols have been stripped from an image, the IMAGE_DEBUG_MISC structure
- // is left in the image file, but not mapped. This allows a debugger to
- // compute the name of the .DBG file, from the name of the image in the
- // IMAGE_DEBUG_MISC structure.
- //
- PIMAGE_SEPARATE_DEBUG_HEADER = ^IMAGE_SEPARATE_DEBUG_HEADER;
- {$EXTERNALSYM PIMAGE_SEPARATE_DEBUG_HEADER}
- _IMAGE_SEPARATE_DEBUG_HEADER = record
- Signature: Word;
- Flags: Word;
- Machine: Word;
- Characteristics: Word;
- TimeDateStamp: DWORD;
- CheckSum: DWORD;
- ImageBase: DWORD;
- SizeOfImage: DWORD;
- NumberOfSections: DWORD;
- ExportedNamesSize: DWORD;
- DebugDirectorySize: DWORD;
- SectionAlignment: DWORD;
- Reserved: array [0..1] of DWORD;
- end;
- {$EXTERNALSYM _IMAGE_SEPARATE_DEBUG_HEADER}
- IMAGE_SEPARATE_DEBUG_HEADER = _IMAGE_SEPARATE_DEBUG_HEADER;
- {$EXTERNALSYM IMAGE_SEPARATE_DEBUG_HEADER}
- TImageSeparateDebugHeader = IMAGE_SEPARATE_DEBUG_HEADER;
- PImageSeparateDebugHeader = PIMAGE_SEPARATE_DEBUG_HEADER;
- _NON_PAGED_DEBUG_INFO = record
- Signature: WORD;
- Flags: WORD;
- Size: DWORD;
- Machine: WORD;
- Characteristics: WORD;
- TimeDateStamp: DWORD;
- CheckSum: DWORD;
- SizeOfImage: DWORD;
- ImageBase: ULONGLONG;
- //DebugDirectorySize
- //IMAGE_DEBUG_DIRECTORY
- end;
- {$EXTERNALSYM _NON_PAGED_DEBUG_INFO}
- NON_PAGED_DEBUG_INFO = _NON_PAGED_DEBUG_INFO;
- {$EXTERNALSYM NON_PAGED_DEBUG_INFO}
- PNON_PAGED_DEBUG_INFO = ^NON_PAGED_DEBUG_INFO;
- {$EXTERNALSYM PNON_PAGED_DEBUG_INFO}
- const
- IMAGE_SEPARATE_DEBUG_SIGNATURE = $4944;
- {$EXTERNALSYM IMAGE_SEPARATE_DEBUG_SIGNATURE}
- NON_PAGED_DEBUG_SIGNATURE = $494E;
- {$EXTERNALSYM NON_PAGED_DEBUG_SIGNATURE}
- IMAGE_SEPARATE_DEBUG_FLAGS_MASK = $8000;
- {$EXTERNALSYM IMAGE_SEPARATE_DEBUG_FLAGS_MASK}
- IMAGE_SEPARATE_DEBUG_MISMATCH = $8000; // when DBG was updated, the old checksum didn't match.
- {$EXTERNALSYM IMAGE_SEPARATE_DEBUG_MISMATCH}
- //
- // The .arch section is made up of headers, each describing an amask position/value
- // pointing to an array of IMAGE_ARCHITECTURE_ENTRY's. Each "array" (both the header
- // and entry arrays) are terminiated by a quadword of 0xffffffffL.
- //
- // NOTE: There may be quadwords of 0 sprinkled around and must be skipped.
- //
- const
- IAHMASK_VALUE = $00000001; // 1 -> code section depends on mask bit
- // 0 -> new instruction depends on mask bit
- IAHMASK_MBZ7 = $000000FE; // MBZ
- IAHMASK_SHIFT = $0000FF00; // Amask bit in question for this fixup
- IAHMASK_MBZ16 = DWORD($FFFF0000); // MBZ
- type
- PIMAGE_ARCHITECTURE_HEADER = ^IMAGE_ARCHITECTURE_HEADER;
- {$EXTERNALSYM PIMAGE_ARCHITECTURE_HEADER}
- _ImageArchitectureHeader = record
- Mask: DWORD;
- FirstEntryRVA: DWORD; // RVA into .arch section to array of ARCHITECTURE_ENTRY's
- end;
- {$EXTERNALSYM _ImageArchitectureHeader}
- IMAGE_ARCHITECTURE_HEADER = _ImageArchitectureHeader;
- {$EXTERNALSYM IMAGE_ARCHITECTURE_HEADER}
- TImageArchitectureHeader = IMAGE_ARCHITECTURE_HEADER;
- PImageArchitectureHeader = PIMAGE_ARCHITECTURE_HEADER;
- PIMAGE_ARCHITECTURE_ENTRY = ^IMAGE_ARCHITECTURE_ENTRY;
- {$EXTERNALSYM PIMAGE_ARCHITECTURE_ENTRY}
- _ImageArchitectureEntry = record
- FixupInstRVA: DWORD; // RVA of instruction to fixup
- NewInst: DWORD; // fixup instruction (see alphaops.h)
- end;
- {$EXTERNALSYM _ImageArchitectureEntry}
- IMAGE_ARCHITECTURE_ENTRY = _ImageArchitectureEntry;
- {$EXTERNALSYM IMAGE_ARCHITECTURE_ENTRY}
- TImageArchitectureEntry = IMAGE_ARCHITECTURE_ENTRY;
- PImageArchitectureEntry = PIMAGE_ARCHITECTURE_ENTRY;
- // #include "poppack.h" // Back to the initial value
- // The following structure defines the new import object. Note the values of the first two fields,
- // which must be set as stated in order to differentiate old and new import members.
- // Following this structure, the linker emits two null-terminated strings used to recreate the
- // import at the time of use. The first string is the import's name, the second is the dll's name.
- const
- IMPORT_OBJECT_HDR_SIG2 = $ffff;
- {$EXTERNALSYM IMPORT_OBJECT_HDR_SIG2}
- const
- IOHFLAGS_TYPE = $0003; // IMPORT_TYPE
- IAHFLAGS_NAMETYPE = $001C; // IMPORT_NAME_TYPE
- IAHFLAGS_RESERVED = $FFE0; // Reserved. Must be zero.
- type
- PImportObjectHeader = ^IMPORT_OBJECT_HEADER;
- IMPORT_OBJECT_HEADER = record
- Sig1: WORD; // Must be IMAGE_FILE_MACHINE_UNKNOWN
- Sig2: WORD; // Must be IMPORT_OBJECT_HDR_SIG2.
- Version: WORD;
- Machine: WORD;
- TimeDateStamp: DWORD; // Time/date stamp
- SizeOfData: DWORD; // particularly useful for incremental links
- OrdinalOrHint: record
- case Integer of
- 0: (Ordinal: WORD); // if grf & IMPORT_OBJECT_ORDINAL
- 1: (Flags: DWORD);
- end;
- Flags: WORD;
- //WORD Type : 2; // IMPORT_TYPE
- //WORD NameType : 3; // IMPORT_NAME_TYPE
- //WORD Reserved : 11; // Reserved. Must be zero.
- end;
- {$EXTERNALSYM IMPORT_OBJECT_HEADER}
- TImportObjectHeader = IMPORT_OBJECT_HEADER;
- IMPORT_OBJECT_TYPE = (IMPORT_OBJECT_CODE, IMPORT_OBJECT_DATA, IMPORT_OBJECT_CONST);
- {$EXTERNALSYM IMPORT_OBJECT_TYPE}
- TImportObjectType = IMPORT_OBJECT_TYPE;
- IMPORT_OBJECT_NAME_TYPE = (
- IMPORT_OBJECT_ORDINAL, // Import by ordinal
- IMPORT_OBJECT_NAME, // Import name == public symbol name.
- IMPORT_OBJECT_NAME_NO_PREFIX, // Import name == public symbol name skipping leading ?, @, or optionally _.
- IMPORT_OBJECT_NAME_UNDECORATE); // Import name == public symbol name skipping leading ?, @, or optionally _
- // and truncating at first @
- {$EXTERNALSYM IMPORT_OBJECT_NAME_TYPE}
- TImportObjectNameType = IMPORT_OBJECT_NAME_TYPE;
- ReplacesCorHdrNumericDefines = DWORD;
- {$EXTERNALSYM ReplacesCorHdrNumericDefines}
- const
- // COM+ Header entry point flags.
- COMIMAGE_FLAGS_ILONLY = $00000001;
- {$EXTERNALSYM COMIMAGE_FLAGS_ILONLY}
- COMIMAGE_FLAGS_32BITREQUIRED = $00000002;
- {$EXTERNALSYM COMIMAGE_FLAGS_32BITREQUIRED}
- COMIMAGE_FLAGS_IL_LIBRARY = $00000004;
- {$EXTERNALSYM COMIMAGE_FLAGS_IL_LIBRARY}
- COMIMAGE_FLAGS_STRONGNAMESIGNED = $00000008;
- {$EXTERNALSYM COMIMAGE_FLAGS_STRONGNAMESIGNED}
- COMIMAGE_FLAGS_TRACKDEBUGDATA = $00010000;
- {$EXTERNALSYM COMIMAGE_FLAGS_TRACKDEBUGDATA}
- // Version flags for image.
- COR_VERSION_MAJOR_V2 = 2;
- {$EXTERNALSYM COR_VERSION_MAJOR_V2}
- COR_VERSION_MAJOR = COR_VERSION_MAJOR_V2;
- {$EXTERNALSYM COR_VERSION_MAJOR}
- COR_VERSION_MINOR = 0;
- {$EXTERNALSYM COR_VERSION_MINOR}
- COR_DELETED_NAME_LENGTH = 8;
- {$EXTERNALSYM COR_DELETED_NAME_LENGTH}
- COR_VTABLEGAP_NAME_LENGTH = 8;
- {$EXTERNALSYM COR_VTABLEGAP_NAME_LENGTH}
- // Maximum size of a NativeType descriptor.
- NATIVE_TYPE_MAX_CB = 1;
- {$EXTERNALSYM NATIVE_TYPE_MAX_CB}
- COR_ILMETHOD_SECT_SMALL_MAX_DATASIZE= $FF;
- {$EXTERNALSYM COR_ILMETHOD_SECT_SMALL_MAX_DATASIZE}
- // #defines for the MIH FLAGS
- IMAGE_COR_MIH_METHODRVA = $01;
- {$EXTERNALSYM IMAGE_COR_MIH_METHODRVA}
- IMAGE_COR_MIH_EHRVA = $02;
- {$EXTERNALSYM IMAGE_COR_MIH_EHRVA}
- IMAGE_COR_MIH_BASICBLOCK = $08;
- {$EXTERNALSYM IMAGE_COR_MIH_BASICBLOCK}
- // V-table constants
- COR_VTABLE_32BIT = $01; // V-table slots are 32-bits in size.
- {$EXTERNALSYM COR_VTABLE_32BIT}
- COR_VTABLE_64BIT = $02; // V-table slots are 64-bits in size.
- {$EXTERNALSYM COR_VTABLE_64BIT}
- COR_VTABLE_FROM_UNMANAGED = $04; // If set, transition from unmanaged.
- {$EXTERNALSYM COR_VTABLE_FROM_UNMANAGED}
- COR_VTABLE_CALL_MOST_DERIVED = $10; // Call most derived method described by
- {$EXTERNALSYM COR_VTABLE_CALL_MOST_DERIVED}
- // EATJ constants
- IMAGE_COR_EATJ_THUNK_SIZE = 32; // Size of a jump thunk reserved range.
- {$EXTERNALSYM IMAGE_COR_EATJ_THUNK_SIZE}
- // Max name lengths
- // Change to unlimited name lengths.
- MAX_CLASS_NAME = 1024;
- {$EXTERNALSYM MAX_CLASS_NAME}
- MAX_PACKAGE_NAME = 1024;
- {$EXTERNALSYM MAX_PACKAGE_NAME}
- // COM+ 2.0 header structure.
- type
- IMAGE_COR20_HEADER = record
- // Header versioning
- cb: DWORD;
- MajorRuntimeVersion: WORD;
- MinorRuntimeVersion: WORD;
- // Symbol table and startup information
- MetaData: IMAGE_DATA_DIRECTORY;
- Flags: DWORD;
- EntryPointToken: DWORD;
- // Binding information
- Resources: IMAGE_DATA_DIRECTORY;
- StrongNameSignature: IMAGE_DATA_DIRECTORY;
- // Regular fixup and binding information
- CodeManagerTable: IMAGE_DATA_DIRECTORY;
- VTableFixups: IMAGE_DATA_DIRECTORY;
- ExportAddressTableJumps: IMAGE_DATA_DIRECTORY;
- // Precompiled image info (internal use only - set to zero)
- ManagedNativeHeader: IMAGE_DATA_DIRECTORY;
- end;
- {$EXTERNALSYM IMAGE_COR20_HEADER}
- PIMAGE_COR20_HEADER = ^IMAGE_COR20_HEADER;
- {$EXTERNALSYM PIMAGE_COR20_HEADER}
- TImageCor20Header = IMAGE_COR20_HEADER;
- PImageCor20Header = PIMAGE_COR20_HEADER;
- //
- // End Image Format
- //
- type
- SLIST_ENTRY = SINGLE_LIST_ENTRY;
- {$EXTERNALSYM SLIST_ENTRY}
- _SLIST_ENTRY = _SINGLE_LIST_ENTRY;
- {$EXTERNALSYM _SLIST_ENTRY}
- PSLIST_ENTRY = PSINGLE_LIST_ENTRY;
- {$EXTERNALSYM PSLIST_ENTRY}
- TSListEntry = SLIST_ENTRY;
- PSListEntry = PSLIST_ENTRY;
- type
- _SLIST_HEADER = record
- case Integer of
- 0: (
- Alignment: ULONGLONG);
- 1: (
- Next: SLIST_ENTRY;
- Depth: WORD;
- Sequence: WORD);
- end;
- {$EXTERNALSYM _SLIST_HEADER}
- SLIST_HEADER = _SLIST_HEADER;
- {$EXTERNALSYM SLIST_HEADER}
- PSLIST_HEADER = ^SLIST_HEADER;
- {$EXTERNALSYM PSLIST_HEADER}
- TSListHeader = SLIST_HEADER;
- PSListHeader = PSLIST_HEADER;
- procedure RtlInitializeSListHead(ListHead: PSLIST_HEADER); stdcall;
- {$EXTERNALSYM RtlInitializeSListHead}
- function RtlFirstEntrySList(ListHead: PSLIST_HEADER): PSLIST_ENTRY; stdcall;
- {$EXTERNALSYM RtlFirstEntrySList}
- function RtlInterlockedPopEntrySList(ListHead: PSLIST_HEADER): PSLIST_ENTRY; stdcall;
- {$EXTERNALSYM RtlInterlockedPopEntrySList}
- function RtlInterlockedPushEntrySList(ListHead, ListEntry: PSLIST_HEADER): PSLIST_ENTRY; stdcall;
- {$EXTERNALSYM RtlInterlockedPushEntrySList}
- function RtlInterlockedFlushSList(ListHead: PSLIST_HEADER): PSLIST_ENTRY; stdcall;
- {$EXTERNALSYM RtlInterlockedFlushSList}
- function RtlQueryDepthSList(ListHead: PSLIST_HEADER): WORD; stdcall;
- {$EXTERNALSYM RtlQueryDepthSList}
- const
- HEAP_NO_SERIALIZE = $00000001;
- {$EXTERNALSYM HEAP_NO_SERIALIZE}
- HEAP_GROWABLE = $00000002;
- {$EXTERNALSYM HEAP_GROWABLE}
- HEAP_GENERATE_EXCEPTIONS = $00000004;
- {$EXTERNALSYM HEAP_GENERATE_EXCEPTIONS}
- HEAP_ZERO_MEMORY = $00000008;
- {$EXTERNALSYM HEAP_ZERO_MEMORY}
- HEAP_REALLOC_IN_PLACE_ONLY = $00000010;
- {$EXTERNALSYM HEAP_REALLOC_IN_PLACE_ONLY}
- HEAP_TAIL_CHECKING_ENABLED = $00000020;
- {$EXTERNALSYM HEAP_TAIL_CHECKING_ENABLED}
- HEAP_FREE_CHECKING_ENABLED = $00000040;
- {$EXTERNALSYM HEAP_FREE_CHECKING_ENABLED}
- HEAP_DISABLE_COALESCE_ON_FREE = $00000080;
- {$EXTERNALSYM HEAP_DISABLE_COALESCE_ON_FREE}
- HEAP_CREATE_ALIGN_16 = $00010000;
- {$EXTERNALSYM HEAP_CREATE_ALIGN_16}
- HEAP_CREATE_ENABLE_TRACING = $00020000;
- {$EXTERNALSYM HEAP_CREATE_ENABLE_TRACING}
- HEAP_MAXIMUM_TAG = $0FFF;
- {$EXTERNALSYM HEAP_MAXIMUM_TAG}
- HEAP_PSEUDO_TAG_FLAG = $8000;
- {$EXTERNALSYM HEAP_PSEUDO_TAG_FLAG}
- HEAP_TAG_SHIFT = 18;
- {$EXTERNALSYM HEAP_TAG_SHIFT}
- function HEAP_MAKE_TAG_FLAGS(b, o: DWORD): DWORD;
- {$EXTERNALSYM HEAP_MAKE_TAG_FLAGS}
- procedure RtlCaptureContext(ContextRecord: PCONTEXT); stdcall;
- {$EXTERNALSYM RtlCaptureContext}
- const
- IS_TEXT_UNICODE_ASCII16 = $0001;
- {$EXTERNALSYM IS_TEXT_UNICODE_ASCII16}
- IS_TEXT_UNICODE_REVERSE_ASCII16 = $0010;
- {$EXTERNALSYM IS_TEXT_UNICODE_REVERSE_ASCII16}
- IS_TEXT_UNICODE_STATISTICS = $0002;
- {$EXTERNALSYM IS_TEXT_UNICODE_STATISTICS}
- IS_TEXT_UNICODE_REVERSE_STATISTICS = $0020;
- {$EXTERNALSYM IS_TEXT_UNICODE_REVERSE_STATISTICS}
- IS_TEXT_UNICODE_CONTROLS = $0004;
- {$EXTERNALSYM IS_TEXT_UNICODE_CONTROLS}
- IS_TEXT_UNICODE_REVERSE_CONTROLS = $0040;
- {$EXTERNALSYM IS_TEXT_UNICODE_REVERSE_CONTROLS}
- IS_TEXT_UNICODE_SIGNATURE = $0008;
- {$EXTERNALSYM IS_TEXT_UNICODE_SIGNATURE}
- IS_TEXT_UNICODE_REVERSE_SIGNATURE = $0080;
- {$EXTERNALSYM IS_TEXT_UNICODE_REVERSE_SIGNATURE}
- IS_TEXT_UNICODE_ILLEGAL_CHARS = $0100;
- {$EXTERNALSYM IS_TEXT_UNICODE_ILLEGAL_CHARS}
- IS_TEXT_UNICODE_ODD_LENGTH = $0200;
- {$EXTERNALSYM IS_TEXT_UNICODE_ODD_LENGTH}
- IS_TEXT_UNICODE_DBCS_LEADBYTE = $0400;
- {$EXTERNALSYM IS_TEXT_UNICODE_DBCS_LEADBYTE}
- IS_TEXT_UNICODE_NULL_BYTES = $1000;
- {$EXTERNALSYM IS_TEXT_UNICODE_NULL_BYTES}
- IS_TEXT_UNICODE_UNICODE_MASK = $000F;
- {$EXTERNALSYM IS_TEXT_UNICODE_UNICODE_MASK}
- IS_TEXT_UNICODE_REVERSE_MASK = $00F0;
- {$EXTERNALSYM IS_TEXT_UNICODE_REVERSE_MASK}
- IS_TEXT_UNICODE_NOT_UNICODE_MASK = $0F00;
- {$EXTERNALSYM IS_TEXT_UNICODE_NOT_UNICODE_MASK}
- IS_TEXT_UNICODE_NOT_ASCII_MASK = $F000;
- {$EXTERNALSYM IS_TEXT_UNICODE_NOT_ASCII_MASK}
- COMPRESSION_FORMAT_NONE = $0000;
- {$EXTERNALSYM COMPRESSION_FORMAT_NONE}
- COMPRESSION_FORMAT_DEFAULT = $0001;
- {$EXTERNALSYM COMPRESSION_FORMAT_DEFAULT}
- COMPRESSION_FORMAT_LZNT1 = $0002;
- {$EXTERNALSYM COMPRESSION_FORMAT_LZNT1}
- COMPRESSION_ENGINE_STANDARD = $0000;
- {$EXTERNALSYM COMPRESSION_ENGINE_STANDARD}
- COMPRESSION_ENGINE_MAXIMUM = $0100;
- {$EXTERNALSYM COMPRESSION_ENGINE_MAXIMUM}
- COMPRESSION_ENGINE_HIBER = $0200;
- {$EXTERNALSYM COMPRESSION_ENGINE_HIBER}
- function RtlCompareMemory(const Source1, Source2: Pointer; Length: SIZE_T): SIZE_T; stdcall;
- {$EXTERNALSYM RtlCompareMemory}
- type
- PMESSAGE_RESOURCE_ENTRY = ^MESSAGE_RESOURCE_ENTRY;
- {$EXTERNALSYM PMESSAGE_RESOURCE_ENTRY}
- _MESSAGE_RESOURCE_ENTRY = record
- Length: Word;
- Flags: Word;
- Text: array [0..0] of Byte;
- end;
- {$EXTERNALSYM _MESSAGE_RESOURCE_ENTRY}
- MESSAGE_RESOURCE_ENTRY = _MESSAGE_RESOURCE_ENTRY;
- {$EXTERNALSYM MESSAGE_RESOURCE_ENTRY}
- TMessageResourceEntry = MESSAGE_RESOURCE_ENTRY;
- PMessageResourceEntry = PMESSAGE_RESOURCE_ENTRY;
- const
- MESSAGE_RESOURCE_UNICODE = $0001;
- {$EXTERNALSYM MESSAGE_RESOURCE_UNICODE}
- type
- PMESSAGE_RESOURCE_BLOCK = ^MESSAGE_RESOURCE_BLOCK;
- {$EXTERNALSYM PMESSAGE_RESOURCE_BLOCK}
- _MESSAGE_RESOURCE_BLOCK = record
- LowId: DWORD;
- HighId: DWORD;
- OffsetToEntries: DWORD;
- end;
- {$EXTERNALSYM _MESSAGE_RESOURCE_BLOCK}
- MESSAGE_RESOURCE_BLOCK = _MESSAGE_RESOURCE_BLOCK;
- {$EXTERNALSYM MESSAGE_RESOURCE_BLOCK}
- TMessageResourceBlock = MESSAGE_RESOURCE_BLOCK;
- PMessageResourceBlock = PMESSAGE_RESOURCE_BLOCK;
- PMESSAGE_RESOURCE_DATA = ^MESSAGE_RESOURCE_DATA;
- {$EXTERNALSYM PMESSAGE_RESOURCE_DATA}
- _MESSAGE_RESOURCE_DATA = record
- NumberOfBlocks: DWORD;
- Blocks: array [0..0] of MESSAGE_RESOURCE_BLOCK;
- end;
- {$EXTERNALSYM _MESSAGE_RESOURCE_DATA}
- MESSAGE_RESOURCE_DATA = _MESSAGE_RESOURCE_DATA;
- {$EXTERNALSYM MESSAGE_RESOURCE_DATA}
- TMessageResourceData = MESSAGE_RESOURCE_DATA;
- PMessageResourceData = PMESSAGE_RESOURCE_DATA;
- LPOSVERSIONINFOA = ^OSVERSIONINFOA;
- {$EXTERNALSYM LPOSVERSIONINFOA}
- _OSVERSIONINFOA = record
- dwOSVersionInfoSize: DWORD;
- dwMajorVersion: DWORD;
- dwMinorVersion: DWORD;
- dwBuildNumber: DWORD;
- dwPlatformId: DWORD;
- szCSDVersion: array [0..127] of CHAR; // Maintenance string for PSS usage
- end;
- {$EXTERNALSYM _OSVERSIONINFOA}
- OSVERSIONINFOA = _OSVERSIONINFOA;
- {$EXTERNALSYM OSVERSIONINFOA}
- TOsVersionInfoA = OSVERSIONINFOA;
- POsVersionInfoA = LPOSVERSIONINFOA;
- LPOSVERSIONINFOW = ^OSVERSIONINFOW;
- {$EXTERNALSYM LPOSVERSIONINFOW}
- _OSVERSIONINFOW = record
- dwOSVersionInfoSize: DWORD;
- dwMajorVersion: DWORD;
- dwMinorVersion: DWORD;
- dwBuildNumber: DWORD;
- dwPlatformId: DWORD;
- szCSDVersion: array [0..127] of WCHAR; // Maintenance string for PSS usage
- end;
- {$EXTERNALSYM _OSVERSIONINFOW}
- OSVERSIONINFOW = _OSVERSIONINFOW;
- {$EXTERNALSYM OSVERSIONINFOW}
- TOsVersionInfoW = OSVERSIONINFOW;
- POsVersionInfoW = LPOSVERSIONINFOW;
- {$IFDEF UNICODE}
- OSVERSIONINFO = OSVERSIONINFOW;
- {$EXTERNALSYM OSVERSIONINFO}
- POSVERSIONINFO = POSVERSIONINFOW;
- {$EXTERNALSYM POSVERSIONINFO}
- LPOSVERSIONINFO = LPOSVERSIONINFOW;
- {$EXTERNALSYM LPOSVERSIONINFO}
- TOSVersionInfo = TOSVersionInfoW;
- {$ELSE}
- OSVERSIONINFO = OSVERSIONINFOA;
- {$EXTERNALSYM OSVERSIONINFO}
- POSVERSIONINFO = POSVERSIONINFOA;
- {$EXTERNALSYM POSVERSIONINFO}
- LPOSVERSIONINFO = LPOSVERSIONINFOA;
- {$EXTERNALSYM LPOSVERSIONINFO}
- TOSVersionInfo = TOSVersionInfoA;
- {$ENDIF UNICODE}
- type
- POSVERSIONINFOEXA = ^OSVERSIONINFOEXA;
- {$EXTERNALSYM POSVERSIONINFOEXA}
- _OSVERSIONINFOEXA = record
- dwOSVersionInfoSize: DWORD;
- dwMajorVersion: DWORD;
- dwMinorVersion: DWORD;
- dwBuildNumber: DWORD;
- dwPlatformId: DWORD;
- szCSDVersion: array [0..127] of CHAR; // Maintenance string for PSS usage
- wServicePackMajor: WORD;
- wServicePackMinor: WORD;
- wSuiteMask: WORD;
- wProductType: BYTE;
- wReserved: BYTE;
- end;
- {$EXTERNALSYM _OSVERSIONINFOEXA}
- OSVERSIONINFOEXA = _OSVERSIONINFOEXA;
- {$EXTERNALSYM OSVERSIONINFOEXA}
- LPOSVERSIONINFOEXA = ^OSVERSIONINFOEXA;
- {$EXTERNALSYM LPOSVERSIONINFOEXA}
- TOSVersionInfoExA = _OSVERSIONINFOEXA;
- POSVERSIONINFOEXW = ^OSVERSIONINFOEXW;
- {$EXTERNALSYM POSVERSIONINFOEXW}
- _OSVERSIONINFOEXW = record
- dwOSVersionInfoSize: DWORD;
- dwMajorVersion: DWORD;
- dwMinorVersion: DWORD;
- dwBuildNumber: DWORD;
- dwPlatformId: DWORD;
- szCSDVersion: array [0..127] of WCHAR; // Maintenance string for PSS usage
- wServicePackMajor: WORD;
- wServicePackMinor: WORD;
- wSuiteMask: WORD;
- wProductType: BYTE;
- wReserved: BYTE;
- end;
- {$EXTERNALSYM _OSVERSIONINFOEXW}
- OSVERSIONINFOEXW = _OSVERSIONINFOEXW;
- {$EXTERNALSYM OSVERSIONINFOEXW}
- LPOSVERSIONINFOEXW = ^OSVERSIONINFOEXW;
- {$EXTERNALSYM LPOSVERSIONINFOEXW}
- RTL_OSVERSIONINFOEXW = _OSVERSIONINFOEXW;
- {$EXTERNALSYM RTL_OSVERSIONINFOEXW}
- PRTL_OSVERSIONINFOEXW = ^RTL_OSVERSIONINFOEXW;
- {$EXTERNALSYM PRTL_OSVERSIONINFOEXW}
- TOSVersionInfoExW = _OSVERSIONINFOEXW;
- {$IFDEF UNICODE}
- OSVERSIONINFOEX = OSVERSIONINFOEXW;
- {$EXTERNALSYM OSVERSIONINFOEX}
- POSVERSIONINFOEX = POSVERSIONINFOEXW;
- {$EXTERNALSYM POSVERSIONINFOEX}
- LPOSVERSIONINFOEX = LPOSVERSIONINFOEXW;
- {$EXTERNALSYM LPOSVERSIONINFOEX}
- TOSVersionInfoEx = TOSVersionInfoExW;
- {$ELSE}
- OSVERSIONINFOEX = OSVERSIONINFOEXA;
- {$EXTERNALSYM OSVERSIONINFOEX}
- POSVERSIONINFOEX = POSVERSIONINFOEXA;
- {$EXTERNALSYM POSVERSIONINFOEX}
- LPOSVERSIONINFOEX = LPOSVERSIONINFOEXA;
- {$EXTERNALSYM LPOSVERSIONINFOEX}
- TOSVersionInfoEx = TOSVersionInfoExA;
- {$ENDIF UNICODE}
- //
- // RtlVerifyVersionInfo() conditions
- //
- const
- VER_EQUAL = 1;
- {$EXTERNALSYM VER_EQUAL}
- VER_GREATER = 2;
- {$EXTERNALSYM VER_GREATER}
- VER_GREATER_EQUAL = 3;
- {$EXTERNALSYM VER_GREATER_EQUAL}
- VER_LESS = 4;
- {$EXTERNALSYM VER_LESS}
- VER_LESS_EQUAL = 5;
- {$EXTERNALSYM VER_LESS_EQUAL}
- VER_AND = 6;
- {$EXTERNALSYM VER_AND}
- VER_OR = 7;
- {$EXTERNALSYM VER_OR}
- VER_CONDITION_MASK = 7;
- {$EXTERNALSYM VER_CONDITION_MASK}
- VER_NUM_BITS_PER_CONDITION_MASK = 3;
- {$EXTERNALSYM VER_NUM_BITS_PER_CONDITION_MASK}
- //
- // RtlVerifyVersionInfo() type mask bits
- //
- VER_MINORVERSION = $0000001;
- {$EXTERNALSYM VER_MINORVERSION}
- VER_MAJORVERSION = $0000002;
- {$EXTERNALSYM VER_MAJORVERSION}
- VER_BUILDNUMBER = $0000004;
- {$EXTERNALSYM VER_BUILDNUMBER}
- VER_PLATFORMID = $0000008;
- {$EXTERNALSYM VER_PLATFORMID}
- VER_SERVICEPACKMINOR = $0000010;
- {$EXTERNALSYM VER_SERVICEPACKMINOR}
- VER_SERVICEPACKMAJOR = $0000020;
- {$EXTERNALSYM VER_SERVICEPACKMAJOR}
- VER_SUITENAME = $0000040;
- {$EXTERNALSYM VER_SUITENAME}
- VER_PRODUCT_TYPE = $0000080;
- {$EXTERNALSYM VER_PRODUCT_TYPE}
- //
- // RtlVerifyVersionInfo() os product type values
- //
- VER_NT_WORKSTATION = $0000001;
- {$EXTERNALSYM VER_NT_WORKSTATION}
- VER_NT_DOMAIN_CONTROLLER = $0000002;
- {$EXTERNALSYM VER_NT_DOMAIN_CONTROLLER}
- VER_NT_SERVER = $0000003;
- {$EXTERNALSYM VER_NT_SERVER}
- //
- // dwPlatformId defines:
- //
- VER_PLATFORM_WIN32s = 0;
- {$EXTERNALSYM VER_PLATFORM_WIN32s}
- VER_PLATFORM_WIN32_WINDOWS = 1;
- {$EXTERNALSYM VER_PLATFORM_WIN32_WINDOWS}
- VER_PLATFORM_WIN32_NT = 2;
- {$EXTERNALSYM VER_PLATFORM_WIN32_NT}
- //
- //
- // VerifyVersionInfo() macro to set the condition mask
- //
- // For documentation sakes here's the old version of the macro that got
- // changed to call an API
- // #define VER_SET_CONDITION(_m_,_t_,_c_) _m_=(_m_|(_c_<<(1<<_t_)))
- //
- procedure VER_SET_CONDITION(var Mask: DWORDLONG; TypeBitmask, ConditionMask: ULONG);
- {$EXTERNALSYM VER_SET_CONDITION}
- function VerSetConditionMask(ConditionMask: ULONGLONG; TypeMask: DWORD;
- Condition: BYTE): ULONGLONG; stdcall;
- {$EXTERNALSYM VerSetConditionMask}
- type
- PRTL_CRITICAL_SECTION_DEBUG = ^RTL_CRITICAL_SECTION_DEBUG;
- {$EXTERNALSYM PRTL_CRITICAL_SECTION_DEBUG}
- _RTL_CRITICAL_SECTION_DEBUG = record
- _Type: WORD;
- CreatorBackTraceIndex: WORD;
- CriticalSection: PRTL_CRITICAL_SECTION_DEBUG;
- ProcessLocksList: LIST_ENTRY;
- EntryCount: DWORD;
- ContentionCount: DWORD;
- Spare: array [0..1] of DWORD;
- end;
- {$EXTERNALSYM _RTL_CRITICAL_SECTION_DEBUG}
- RTL_CRITICAL_SECTION_DEBUG = _RTL_CRITICAL_SECTION_DEBUG;
- {$EXTERNALSYM RTL_CRITICAL_SECTION_DEBUG}
- TRtlCriticalSectionDebug = RTL_CRITICAL_SECTION_DEBUG;
- PRtlCriticalSectionDebug = PRTL_CRITICAL_SECTION_DEBUG;
- RTL_RESOURCE_DEBUG = _RTL_CRITICAL_SECTION_DEBUG;
- {$EXTERNALSYM RTL_RESOURCE_DEBUG}
- PRTL_RESOURCE_DEBUG = RTL_RESOURCE_DEBUG;
- {$EXTERNALSYM PRTL_RESOURCE_DEBUG}
- TRtlResourceDebug = RTL_CRITICAL_SECTION_DEBUG;
- PRtlResourceDebug = PRTL_CRITICAL_SECTION_DEBUG;
- const
- RTL_CRITSECT_TYPE = 0;
- {$EXTERNALSYM RTL_CRITSECT_TYPE}
- RTL_RESOURCE_TYPE = 1;
- {$EXTERNALSYM RTL_RESOURCE_TYPE}
- type
- PRTL_CRITICAL_SECTION = ^RTL_CRITICAL_SECTION;
- {$EXTERNALSYM PRTL_CRITICAL_SECTION}
- _RTL_CRITICAL_SECTION = record
- DebugInfo: PRTL_CRITICAL_SECTION_DEBUG;
- //
- // The following three fields control entering and exiting the critical
- // section for the resource
- //
- LockCount: LONG;
- RecursionCount: LONG;
- OwningThread: HANDLE; // from the thread's ClientId->UniqueThread
- LockSemaphore: HANDLE;
- SpinCount: ULONG_PTR; // force size on 64-bit systems when packed
- end;
- {$EXTERNALSYM _RTL_CRITICAL_SECTION}
- RTL_CRITICAL_SECTION = _RTL_CRITICAL_SECTION;
- {$EXTERNALSYM RTL_CRITICAL_SECTION}
- TRtlCriticalSection = RTL_CRITICAL_SECTION;
- PRtlCriticalSection = PRTL_CRITICAL_SECTION;
- RTL_VERIFIER_DLL_LOAD_CALLBACK = procedure(DllName: PWSTR; DllBase: PVOID; DllSize: SIZE_T;
- Reserved: PVOID); stdcall;
- {$EXTERNALSYM RTL_VERIFIER_DLL_LOAD_CALLBACK}
- RTL_VERIFIER_DLL_UNLOAD_CALLBACK = procedure(DllName: PWSTR; DllBase: PVOID; DllSize: SIZE_T;
- Reserved: PVOID); stdcall;
- {$EXTERNALSYM RTL_VERIFIER_DLL_UNLOAD_CALLBACK}
- RTL_VERIFIER_NTDLLHEAPFREE_CALLBACK = procedure(AllocationBase: PVOID; AllocationSize: SIZE_T); stdcall;
- {$EXTERNALSYM RTL_VERIFIER_NTDLLHEAPFREE_CALLBACK}
- PRTL_VERIFIER_THUNK_DESCRIPTOR = ^RTL_VERIFIER_THUNK_DESCRIPTOR;
- {$EXTERNALSYM PRTL_VERIFIER_THUNK_DESCRIPTOR}
- _RTL_VERIFIER_THUNK_DESCRIPTOR = record
- ThunkName: PCHAR;
- ThunkOldAddress: PVOID;
- ThunkNewAddress: PVOID;
- end;
- {$EXTERNALSYM _RTL_VERIFIER_THUNK_DESCRIPTOR}
- RTL_VERIFIER_THUNK_DESCRIPTOR = _RTL_VERIFIER_THUNK_DESCRIPTOR;
- {$EXTERNALSYM RTL_VERIFIER_THUNK_DESCRIPTOR}
- TRtlVerifierThunkDescriptor = RTL_VERIFIER_THUNK_DESCRIPTOR;
- PRtlVerifierThunkDescriptor = PRTL_VERIFIER_THUNK_DESCRIPTOR;
- PRTL_VERIFIER_DLL_DESCRIPTOR = ^RTL_VERIFIER_DLL_DESCRIPTOR;
- {$EXTERNALSYM PRTL_VERIFIER_DLL_DESCRIPTOR}
- _RTL_VERIFIER_DLL_DESCRIPTOR = record
- DllName: PWCHAR;
- DllFlags: DWORD;
- DllAddress: PVOID;
- DllThunks: PRTL_VERIFIER_THUNK_DESCRIPTOR;
- end;
- {$EXTERNALSYM _RTL_VERIFIER_DLL_DESCRIPTOR}
- RTL_VERIFIER_DLL_DESCRIPTOR = _RTL_VERIFIER_DLL_DESCRIPTOR;
- {$EXTERNALSYM RTL_VERIFIER_DLL_DESCRIPTOR}
- TRtlVerifierDllDescriptor = RTL_VERIFIER_DLL_DESCRIPTOR;
- PRtlVerifierDllDescriptor = PRTL_VERIFIER_DLL_DESCRIPTOR;
- PRTL_VERIFIER_PROVIDER_DESCRIPTOR = ^RTL_VERIFIER_PROVIDER_DESCRIPTOR;
- {$EXTERNALSYM PRTL_VERIFIER_PROVIDER_DESCRIPTOR}
- _RTL_VERIFIER_PROVIDER_DESCRIPTOR = record
- //
- // Filled by verifier provider DLL
- //
- Length: DWORD;
- ProviderDlls: PRTL_VERIFIER_DLL_DESCRIPTOR;
- ProviderDllLoadCallback: RTL_VERIFIER_DLL_LOAD_CALLBACK;
- ProviderDllUnloadCallback: RTL_VERIFIER_DLL_UNLOAD_CALLBACK;
- //
- // Filled by verifier engine
- //
- VerifierImage: PWSTR;
- VerifierFlags: DWORD;
- VerifierDebug: DWORD;
- RtlpGetStackTraceAddress: PVOID;
- RtlpDebugPageHeapCreate: PVOID;
- RtlpDebugPageHeapDestroy: PVOID;
- //
- // Filled by verifier provider DLL
- //
-
- ProviderNtdllHeapFreeCallback: RTL_VERIFIER_NTDLLHEAPFREE_CALLBACK;
- end;
- {$EXTERNALSYM _RTL_VERIFIER_PROVIDER_DESCRIPTOR}
- RTL_VERIFIER_PROVIDER_DESCRIPTOR = _RTL_VERIFIER_PROVIDER_DESCRIPTOR;
- {$EXTERNALSYM RTL_VERIFIER_PROVIDER_DESCRIPTOR}
- TRtlVerifierProviderDescriptor = RTL_VERIFIER_PROVIDER_DESCRIPTOR;
- PRtlVerifierProviderDescriptor = PRTL_VERIFIER_PROVIDER_DESCRIPTOR;
- //
- // Application verifier standard flags
- //
- const
- RTL_VRF_FLG_FULL_PAGE_HEAP = $00000001;
- {$EXTERNALSYM RTL_VRF_FLG_FULL_PAGE_HEAP}
- RTL_VRF_FLG_RESERVED_DONOTUSE = $00000002; // old RTL_VRF_FLG_LOCK_CHECKS
- {$EXTERNALSYM RTL_VRF_FLG_RESERVED_DONOTUSE}
- RTL_VRF_FLG_HANDLE_CHECKS = $00000004;
- {$EXTERNALSYM RTL_VRF_FLG_HANDLE_CHECKS}
- RTL_VRF_FLG_STACK_CHECKS = $00000008;
- {$EXTERNALSYM RTL_VRF_FLG_STACK_CHECKS}
- RTL_VRF_FLG_APPCOMPAT_CHECKS = $00000010;
- {$EXTERNALSYM RTL_VRF_FLG_APPCOMPAT_CHECKS}
- RTL_VRF_FLG_TLS_CHECKS = $00000020;
- {$EXTERNALSYM RTL_VRF_FLG_TLS_CHECKS}
- RTL_VRF_FLG_DIRTY_STACKS = $00000040;
- {$EXTERNALSYM RTL_VRF_FLG_DIRTY_STACKS}
- RTL_VRF_FLG_RPC_CHECKS = $00000080;
- {$EXTERNALSYM RTL_VRF_FLG_RPC_CHECKS}
- RTL_VRF_FLG_COM_CHECKS = $00000100;
- {$EXTERNALSYM RTL_VRF_FLG_COM_CHECKS}
- RTL_VRF_FLG_DANGEROUS_APIS = $00000200;
- {$EXTERNALSYM RTL_VRF_FLG_DANGEROUS_APIS}
- RTL_VRF_FLG_RACE_CHECKS = $00000400;
- {$EXTERNALSYM RTL_VRF_FLG_RACE_CHECKS}
- RTL_VRF_FLG_DEADLOCK_CHECKS = $00000800;
- {$EXTERNALSYM RTL_VRF_FLG_DEADLOCK_CHECKS}
- RTL_VRF_FLG_FIRST_CHANCE_EXCEPTION_CHECKS = $00001000;
- {$EXTERNALSYM RTL_VRF_FLG_FIRST_CHANCE_EXCEPTION_CHECKS}
- RTL_VRF_FLG_VIRTUAL_MEM_CHECKS = $00002000;
- {$EXTERNALSYM RTL_VRF_FLG_VIRTUAL_MEM_CHECKS}
- RTL_VRF_FLG_ENABLE_LOGGING = $00004000;
- {$EXTERNALSYM RTL_VRF_FLG_ENABLE_LOGGING}
- RTL_VRF_FLG_FAST_FILL_HEAP = $00008000;
- {$EXTERNALSYM RTL_VRF_FLG_FAST_FILL_HEAP}
- RTL_VRF_FLG_VIRTUAL_SPACE_TRACKING = $00010000;
- {$EXTERNALSYM RTL_VRF_FLG_VIRTUAL_SPACE_TRACKING}
- RTL_VRF_FLG_ENABLED_SYSTEM_WIDE = $00020000;
- {$EXTERNALSYM RTL_VRF_FLG_ENABLED_SYSTEM_WIDE}
- RTL_VRF_FLG_MISCELLANEOUS_CHECKS = $00020000;
- {$EXTERNALSYM RTL_VRF_FLG_MISCELLANEOUS_CHECKS}
- RTL_VRF_FLG_LOCK_CHECKS = $00040000;
- {$EXTERNALSYM RTL_VRF_FLG_LOCK_CHECKS}
- //
- // Application verifier standard stop codes
- //
- APPLICATION_VERIFIER_INTERNAL_ERROR = DWORD($80000000);
- {$EXTERNALSYM APPLICATION_VERIFIER_INTERNAL_ERROR}
- APPLICATION_VERIFIER_INTERNAL_WARNING = $40000000;
- {$EXTERNALSYM APPLICATION_VERIFIER_INTERNAL_WARNING}
- APPLICATION_VERIFIER_NO_BREAK = $20000000;
- {$EXTERNALSYM APPLICATION_VERIFIER_NO_BREAK}
- APPLICATION_VERIFIER_CONTINUABLE_BREAK = $10000000;
- {$EXTERNALSYM APPLICATION_VERIFIER_CONTINUABLE_BREAK}
- APPLICATION_VERIFIER_UNKNOWN_ERROR = $0001;
- {$EXTERNALSYM APPLICATION_VERIFIER_UNKNOWN_ERROR}
- APPLICATION_VERIFIER_ACCESS_VIOLATION = $0002;
- {$EXTERNALSYM APPLICATION_VERIFIER_ACCESS_VIOLATION}
- APPLICATION_VERIFIER_UNSYNCHRONIZED_ACCESS = $0003;
- {$EXTERNALSYM APPLICATION_VERIFIER_UNSYNCHRONIZED_ACCESS}
- APPLICATION_VERIFIER_EXTREME_SIZE_REQUEST = $0004;
- {$EXTERNALSYM APPLICATION_VERIFIER_EXTREME_SIZE_REQUEST}
- APPLICATION_VERIFIER_BAD_HEAP_HANDLE = $0005;
- {$EXTERNALSYM APPLICATION_VERIFIER_BAD_HEAP_HANDLE}
- APPLICATION_VERIFIER_SWITCHED_HEAP_HANDLE = $0006;
- {$EXTERNALSYM APPLICATION_VERIFIER_SWITCHED_HEAP_HANDLE}
- APPLICATION_VERIFIER_DOUBLE_FREE = $0007;
- {$EXTERNALSYM APPLICATION_VERIFIER_DOUBLE_FREE}
- APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK = $0008;
- {$EXTERNALSYM APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK}
- APPLICATION_VERIFIER_DESTROY_PROCESS_HEAP = $0009;
- {$EXTERNALSYM APPLICATION_VERIFIER_DESTROY_PROCESS_HEAP}
- APPLICATION_VERIFIER_UNEXPECTED_EXCEPTION = $000A;
- {$EXTERNALSYM APPLICATION_VERIFIER_UNEXPECTED_EXCEPTION}
- APPLICATION_VERIFIER_STACK_OVERFLOW = $000B;
- {$EXTERNALSYM APPLICATION_VERIFIER_STACK_OVERFLOW}
- APPLICATION_VERIFIER_TERMINATE_THREAD_CALL = $0100;
- {$EXTERNALSYM APPLICATION_VERIFIER_TERMINATE_THREAD_CALL}
- APPLICATION_VERIFIER_INVALID_EXIT_PROCESS_CALL = $0101;
- {$EXTERNALSYM APPLICATION_VERIFIER_INVALID_EXIT_PROCESS_CALL}
- APPLICATION_VERIFIER_EXIT_THREAD_OWNS_LOCK = $0200;
- {$EXTERNALSYM APPLICATION_VERIFIER_EXIT_THREAD_OWNS_LOCK}
- APPLICATION_VERIFIER_LOCK_IN_UNLOADED_DLL = $0201;
- {$EXTERNALSYM APPLICATION_VERIFIER_LOCK_IN_UNLOADED_DLL}
- APPLICATION_VERIFIER_LOCK_IN_FREED_HEAP = $0202;
- {$EXTERNALSYM APPLICATION_VERIFIER_LOCK_IN_FREED_HEAP}
- APPLICATION_VERIFIER_LOCK_DOUBLE_INITIALIZE = $0203;
- {$EXTERNALSYM APPLICATION_VERIFIER_LOCK_DOUBLE_INITIALIZE}
- APPLICATION_VERIFIER_LOCK_IN_FREED_MEMORY = $0204;
- {$EXTERNALSYM APPLICATION_VERIFIER_LOCK_IN_FREED_MEMORY}
- APPLICATION_VERIFIER_LOCK_CORRUPTED = $0205;
- {$EXTERNALSYM APPLICATION_VERIFIER_LOCK_CORRUPTED}
- APPLICATION_VERIFIER_LOCK_INVALID_OWNER = $0206;
- {$EXTERNALSYM APPLICATION_VERIFIER_LOCK_INVALID_OWNER}
- APPLICATION_VERIFIER_LOCK_INVALID_RECURSION_COUNT = $0207;
- {$EXTERNALSYM APPLICATION_VERIFIER_LOCK_INVALID_RECURSION_COUNT}
- APPLICATION_VERIFIER_LOCK_INVALID_LOCK_COUNT = $0208;
- {$EXTERNALSYM APPLICATION_VERIFIER_LOCK_INVALID_LOCK_COUNT}
- APPLICATION_VERIFIER_LOCK_OVER_RELEASED = $0209;
- {$EXTERNALSYM APPLICATION_VERIFIER_LOCK_OVER_RELEASED}
- APPLICATION_VERIFIER_LOCK_NOT_INITIALIZED = $0210;
- {$EXTERNALSYM APPLICATION_VERIFIER_LOCK_NOT_INITIALIZED}
- APPLICATION_VERIFIER_LOCK_ALREADY_INITIALIZED = $0211;
- {$EXTERNALSYM APPLICATION_VERIFIER_LOCK_ALREADY_INITIALIZED}
- APPLICATION_VERIFIER_INVALID_HANDLE = $0300;
- {$EXTERNALSYM APPLICATION_VERIFIER_INVALID_HANDLE}
- APPLICATION_VERIFIER_INVALID_TLS_VALUE = $0301;
- {$EXTERNALSYM APPLICATION_VERIFIER_INVALID_TLS_VALUE}
- APPLICATION_VERIFIER_INCORRECT_WAIT_CALL = $0302;
- {$EXTERNALSYM APPLICATION_VERIFIER_INCORRECT_WAIT_CALL}
- APPLICATION_VERIFIER_NULL_HANDLE = $0303;
- {$EXTERNALSYM APPLICATION_VERIFIER_NULL_HANDLE}
- APPLICATION_VERIFIER_WAIT_IN_DLLMAIN = $0304;
- {$EXTERNALSYM APPLICATION_VERIFIER_WAIT_IN_DLLMAIN}
- APPLICATION_VERIFIER_COM_ERROR = $0400;
- {$EXTERNALSYM APPLICATION_VERIFIER_COM_ERROR}
- APPLICATION_VERIFIER_COM_API_IN_DLLMAIN = $0401;
- {$EXTERNALSYM APPLICATION_VERIFIER_COM_API_IN_DLLMAIN}
- APPLICATION_VERIFIER_COM_UNHANDLED_EXCEPTION = $0402;
- {$EXTERNALSYM APPLICATION_VERIFIER_COM_UNHANDLED_EXCEPTION}
- APPLICATION_VERIFIER_COM_UNBALANCED_COINIT = $0403;
- {$EXTERNALSYM APPLICATION_VERIFIER_COM_UNBALANCED_COINIT}
- APPLICATION_VERIFIER_COM_UNBALANCED_OLEINIT = $0404;
- {$EXTERNALSYM APPLICATION_VERIFIER_COM_UNBALANCED_OLEINIT}
- APPLICATION_VERIFIER_COM_UNBALANCED_SWC = $0405;
- {$EXTERNALSYM APPLICATION_VERIFIER_COM_UNBALANCED_SWC}
- APPLICATION_VERIFIER_COM_NULL_DACL = $0406;
- {$EXTERNALSYM APPLICATION_VERIFIER_COM_NULL_DACL}
- APPLICATION_VERIFIER_COM_UNSAFE_IMPERSONATION = $0407;
- {$EXTERNALSYM APPLICATION_VERIFIER_COM_UNSAFE_IMPERSONATION}
- APPLICATION_VERIFIER_COM_SMUGGLED_WRAPPER = $0408;
- {$EXTERNALSYM APPLICATION_VERIFIER_COM_SMUGGLED_WRAPPER}
- APPLICATION_VERIFIER_COM_SMUGGLED_PROXY = $0409;
- {$EXTERNALSYM APPLICATION_VERIFIER_COM_SMUGGLED_PROXY}
- APPLICATION_VERIFIER_COM_CF_SUCCESS_WITH_NULL = $040A;
- {$EXTERNALSYM APPLICATION_VERIFIER_COM_CF_SUCCESS_WITH_NULL}
- APPLICATION_VERIFIER_COM_GCO_SUCCESS_WITH_NULL = $040B;
- {$EXTERNALSYM APPLICATION_VERIFIER_COM_GCO_SUCCESS_WITH_NULL}
- APPLICATION_VERIFIER_COM_OBJECT_IN_FREED_MEMORY = $040C;
- {$EXTERNALSYM APPLICATION_VERIFIER_COM_OBJECT_IN_FREED_MEMORY}
- APPLICATION_VERIFIER_COM_OBJECT_IN_UNLOADED_DLL = $040D;
- {$EXTERNALSYM APPLICATION_VERIFIER_COM_OBJECT_IN_UNLOADED_DLL}
- APPLICATION_VERIFIER_COM_VTBL_IN_FREED_MEMORY = $040E;
- {$EXTERNALSYM APPLICATION_VERIFIER_COM_VTBL_IN_FREED_MEMORY}
- APPLICATION_VERIFIER_COM_VTBL_IN_UNLOADED_DLL = $040F;
- {$EXTERNALSYM APPLICATION_VERIFIER_COM_VTBL_IN_UNLOADED_DLL}
- APPLICATION_VERIFIER_COM_HOLDING_LOCKS_ON_CALL = $0410;
- {$EXTERNALSYM APPLICATION_VERIFIER_COM_HOLDING_LOCKS_ON_CALL}
- APPLICATION_VERIFIER_RPC_ERROR = $0500;
- {$EXTERNALSYM APPLICATION_VERIFIER_RPC_ERROR}
- APPLICATION_VERIFIER_INVALID_FREEMEM = $0600;
- {$EXTERNALSYM APPLICATION_VERIFIER_INVALID_FREEMEM}
- APPLICATION_VERIFIER_INVALID_ALLOCMEM = $0601;
- {$EXTERNALSYM APPLICATION_VERIFIER_INVALID_ALLOCMEM}
- APPLICATION_VERIFIER_INVALID_MAPVIEW = $0602;
- {$EXTERNALSYM APPLICATION_VERIFIER_INVALID_MAPVIEW}
- APPLICATION_VERIFIER_PROBE_INVALID_ADDRESS = $0603;
- {$EXTERNALSYM APPLICATION_VERIFIER_PROBE_INVALID_ADDRESS}
- APPLICATION_VERIFIER_PROBE_FREE_MEM = $0604;
- {$EXTERNALSYM APPLICATION_VERIFIER_PROBE_FREE_MEM}
- APPLICATION_VERIFIER_PROBE_GUARD_PAGE = $0605;
- {$EXTERNALSYM APPLICATION_VERIFIER_PROBE_GUARD_PAGE}
- APPLICATION_VERIFIER_PROBE_NULL = $0606;
- {$EXTERNALSYM APPLICATION_VERIFIER_PROBE_NULL}
- APPLICATION_VERIFIER_PROBE_INVALID_START_OR_SIZE = $0607;
- {$EXTERNALSYM APPLICATION_VERIFIER_PROBE_INVALID_START_OR_SIZE}
- (* TODO
- #define VERIFIER_STOP(Code, Msg, P1, S1, P2, S2, P3, S3, P4, S4) { \
- RtlApplicationVerifierStop ((Code), \
- (Msg), \
- (ULONG_PTR)(P1),(S1), \
- (ULONG_PTR)(P2),(S2), \
- (ULONG_PTR)(P3),(S3), \
- (ULONG_PTR)(P4),(S4)); \
- }
- VOID NTAPI
- RtlApplicationVerifierStop (
- ULONG_PTR Code,
- PCHAR Message,
- ULONG_PTR Param1, PCHAR Description1,
- ULONG_PTR Param2, PCHAR Description2,
- ULONG_PTR Param3, PCHAR Description3,
- ULONG_PTR Param4, PCHAR Description4
- );
- *)
- type
- PVECTORED_EXCEPTION_HANDLER = function(ExceptionInfo: PEXCEPTION_POINTERS): LONG; stdcall;
- {$EXTERNALSYM PVECTORED_EXCEPTION_HANDLER}
- PVectoredExceptionHandler = PVECTORED_EXCEPTION_HANDLER;
- const
- SEF_DACL_AUTO_INHERIT = $01;
- {$EXTERNALSYM SEF_DACL_AUTO_INHERIT}
- SEF_SACL_AUTO_INHERIT = $02;
- {$EXTERNALSYM SEF_SACL_AUTO_INHERIT}
- SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT = $04;
- {$EXTERNALSYM SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT}
- SEF_AVOID_PRIVILEGE_CHECK = $08;
- {$EXTERNALSYM SEF_AVOID_PRIVILEGE_CHECK}
- SEF_AVOID_OWNER_CHECK = $10;
- {$EXTERNALSYM SEF_AVOID_OWNER_CHECK}
- SEF_DEFAULT_OWNER_FROM_PARENT = $20;
- {$EXTERNALSYM SEF_DEFAULT_OWNER_FROM_PARENT}
- SEF_DEFAULT_GROUP_FROM_PARENT = $40;
- {$EXTERNALSYM SEF_DEFAULT_GROUP_FROM_PARENT}
- type
- _HEAP_INFORMATION_CLASS = (HeapCompatibilityInformation);
- {$EXTERNALSYM _HEAP_INFORMATION_CLASS}
- HEAP_INFORMATION_CLASS = _HEAP_INFORMATION_CLASS;
- {$EXTERNALSYM HEAP_INFORMATION_CLASS}
- THeapInformationClass = HEAP_INFORMATION_CLASS;
- { TODO
- DWORD NTAPI
- RtlSetHeapInformation (
- IN PVOID HeapHandle,
- IN HEAP_INFORMATION_CLASS HeapInformationClass,
- IN PVOID HeapInformation OPTIONAL,
- IN SIZE_T HeapInformationLength OPTIONAL
- );
- DWORD NTAPI
- RtlQueryHeapInformation (
- IN PVOID HeapHandle,
- IN HEAP_INFORMATION_CLASS HeapInformationClass,
- OUT PVOID HeapInformation OPTIONAL,
- IN SIZE_T HeapInformationLength OPTIONAL,
- OUT PSIZE_T ReturnLength OPTIONAL
- );
- //
- // Multiple alloc-free APIS
- //
- DWORD
- NTAPI
- RtlMultipleAllocateHeap (
- IN PVOID HeapHandle,
- IN DWORD Flags,
- IN SIZE_T Size,
- IN DWORD Count,
- OUT PVOID * Array
- );
- DWORD
- NTAPI
- RtlMultipleFreeHeap (
- IN PVOID HeapHandle,
- IN DWORD Flags,
- IN DWORD Count,
- OUT PVOID * Array
- );
- }
- const
- WT_EXECUTEDEFAULT = $00000000;
- {$EXTERNALSYM WT_EXECUTEDEFAULT}
- WT_EXECUTEINIOTHREAD = $00000001;
- {$EXTERNALSYM WT_EXECUTEINIOTHREAD}
- WT_EXECUTEINUITHREAD = $00000002;
- {$EXTERNALSYM WT_EXECUTEINUITHREAD}
- WT_EXECUTEINWAITTHREAD = $00000004;
- {$EXTERNALSYM WT_EXECUTEINWAITTHREAD}
- WT_EXECUTEONLYONCE = $00000008;
- {$EXTERNALSYM WT_EXECUTEONLYONCE}
- WT_EXECUTEINTIMERTHREAD = $00000020;
- {$EXTERNALSYM WT_EXECUTEINTIMERTHREAD}
- WT_EXECUTELONGFUNCTION = $00000010;
- {$EXTERNALSYM WT_EXECUTELONGFUNCTION}
- WT_EXECUTEINPERSISTENTIOTHREAD = $00000040;
- {$EXTERNALSYM WT_EXECUTEINPERSISTENTIOTHREAD}
- WT_EXECUTEINPERSISTENTTHREAD = $00000080;
- {$EXTERNALSYM WT_EXECUTEINPERSISTENTTHREAD}
- WT_TRANSFER_IMPERSONATION = $00000100;
- {$EXTERNALSYM WT_TRANSFER_IMPERSONATION}
- function WT_SET_MAX_THREADPOOL_THREADS(var Flags: DWORD; Limit: DWORD): DWORD;
- {$EXTERNALSYM WT_SET_MAX_THREADPOOL_THREADS}
- type
- WAITORTIMERCALLBACKFUNC = procedure(P: PVOID; B: ByteBool); stdcall;
- {$EXTERNALSYM WAITORTIMERCALLBACKFUNC}
- WORKERCALLBACKFUNC = procedure(P: PVOID); stdcall;
- {$EXTERNALSYM WORKERCALLBACKFUNC}
- APC_CALLBACK_FUNCTION = procedure(D: DWORD; P1, P2: PVOID); stdcall;
- {$EXTERNALSYM APC_CALLBACK_FUNCTION}
- const
- WT_EXECUTEINLONGTHREAD = $00000010;
- {$EXTERNALSYM WT_EXECUTEINLONGTHREAD}
- WT_EXECUTEDELETEWAIT = $00000008;
- {$EXTERNALSYM WT_EXECUTEDELETEWAIT}
- type
- _ACTIVATION_CONTEXT_INFO_CLASS = DWORD;
- {$EXTERNALSYM _ACTIVATION_CONTEXT_INFO_CLASS}
- ACTIVATION_CONTEXT_INFO_CLASS = _ACTIVATION_CONTEXT_INFO_CLASS;
- {$EXTERNALSYM ACTIVATION_CONTEXT_INFO_CLASS}
- TActivationContextInfoClass = ACTIVATION_CONTEXT_INFO_CLASS;
- const
- ActivationContextBasicInformation = 1;
- {$EXTERNALSYM ActivationContextBasicInformation}
- ActivationContextDetailedInformation = 2;
- {$EXTERNALSYM ActivationContextDetailedInformation}
- AssemblyDetailedInformationInActivationContxt = 3;
- {$EXTERNALSYM AssemblyDetailedInformationInActivationContxt}
- FileInformationInAssemblyOfAssemblyInActivationContxt = 4;
- {$EXTERNALSYM FileInformationInAssemblyOfAssemblyInActivationContxt}
- MaxActivationContextInfoClass = 5;
- {$EXTERNALSYM MaxActivationContextInfoClass}
- type
- PACTIVATION_CONTEXT_QUERY_INDEX = ^ACTIVATION_CONTEXT_QUERY_INDEX;
- {$EXTERNALSYM PACTIVATION_CONTEXT_QUERY_INDEX}
- _ACTIVATION_CONTEXT_QUERY_INDEX = record
- ulAssemblyIndex: DWORD;
- ulFileIndexInAssembly: DWORD;
- end;
- {$EXTERNALSYM _ACTIVATION_CONTEXT_QUERY_INDEX}
- ACTIVATION_CONTEXT_QUERY_INDEX = _ACTIVATION_CONTEXT_QUERY_INDEX;
- {$EXTERNALSYM ACTIVATION_CONTEXT_QUERY_INDEX}
- TActivationContextQueryIndex = ACTIVATION_CONTEXT_QUERY_INDEX;
- PActivationContextQueryIndex = PACTIVATION_CONTEXT_QUERY_INDEX;
- const
- ACTIVATION_CONTEXT_PATH_TYPE_NONE = 1;
- {$EXTERNALSYM ACTIVATION_CONTEXT_PATH_TYPE_NONE}
- ACTIVATION_CONTEXT_PATH_TYPE_WIN32_FILE = 2;
- {$EXTERNALSYM ACTIVATION_CONTEXT_PATH_TYPE_WIN32_FILE}
- ACTIVATION_CONTEXT_PATH_TYPE_URL = 3;
- {$EXTERNALSYM ACTIVATION_CONTEXT_PATH_TYPE_URL}
- ACTIVATION_CONTEXT_PATH_TYPE_ASSEMBLYREF = 4;
- {$EXTERNALSYM ACTIVATION_CONTEXT_PATH_TYPE_ASSEMBLYREF}
- type
- PASSEMBLY_FILE_DETAILED_INFORMATION = ^ASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION;
- {$EXTERNALSYM PASSEMBLY_FILE_DETAILED_INFORMATION}
- _ASSEMBLY_FILE_DETAILED_INFORMATION = record
- ulFlags: DWORD;
- ulFilenameLength: DWORD;
- ulPathLength: DWORD;
- lpFileName: LPCWSTR;
- lpFilePath: LPCWSTR;
- end;
- {$EXTERNALSYM _ASSEMBLY_FILE_DETAILED_INFORMATION}
- ASSEMBLY_FILE_DETAILED_INFORMATION = _ASSEMBLY_FILE_DETAILED_INFORMATION;
- {$EXTERNALSYM ASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION}
- PCASSEMBLY_FILE_DETAILED_INFORMATION = PASSEMBLY_FILE_DETAILED_INFORMATION;
- {$EXTERNALSYM PCASSEMBLY_FILE_DETAILED_INFORMATION}
- TAssemblyFileDetailedInformation = ASSEMBLY_FILE_DETAILED_INFORMATION;
- PAssemblyFileDetailedInformation = PASSEMBLY_FILE_DETAILED_INFORMATION;
- //
- // compatibility with old names
- // The new names use "file" consistently.
- //
- _ASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION = _ASSEMBLY_FILE_DETAILED_INFORMATION;
- {$EXTERNALSYM _ASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION}
- ASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION = ASSEMBLY_FILE_DETAILED_INFORMATION;
- {$EXTERNALSYM ASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION}
- PASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION = PASSEMBLY_FILE_DETAILED_INFORMATION;
- {$EXTERNALSYM PASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION}
- PCASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION = PCASSEMBLY_FILE_DETAILED_INFORMATION;
- {$EXTERNALSYM PCASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION}
- TAssemblyDllRedirectionDetailedInformation = TAssemblyFileDetailedInformation;
- PAssemblyDllRedirectionDetailedInformation = PAssemblyFileDetailedInformation;
- PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION = ^ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION;
- {$EXTERNALSYM PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION}
- _ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION = record
- ulFlags: DWORD;
- ulEncodedAssemblyIdentityLength: DWORD; // in bytes
- ulManifestPathType: DWORD; // ACTIVATION_CONTEXT_PATH_TYPE_*
- ulManifestPathLength: DWORD; // in bytes
- liManifestLastWriteTime: LARGE_INTEGER; // FILETIME
- ulPolicyPathType: DWORD; // ACTIVATION_CONTEXT_PATH_TYPE_*
- ulPolicyPathLength: DWORD; // in bytes
- liPolicyLastWriteTime: LARGE_INTEGER; // FILETIME
- ulMetadataSatelliteRosterIndex: DWORD;
- ulManifestVersionMajor: DWORD; // 1
- ulManifestVersionMinor: DWORD; // 0
- ulPolicyVersionMajor: DWORD; // 0
- ulPolicyVersionMinor: DWORD; // 0
- ulAssemblyDirectoryNameLength: DWORD; // in bytes
- lpAssemblyEncodedAssemblyIdentity: LPCWSTR;
- lpAssemblyManifestPath: LPCWSTR;
- lpAssemblyPolicyPath: LPCWSTR;
- lpAssemblyDirectoryName: LPCWSTR;
- ulFileCount: DWORD;
- end;
- {$EXTERNALSYM _ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION}
- ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION = _ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION;
- {$EXTERNALSYM ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION}
- TActivationContextAssemblyDetailedInformation = ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION;
- PActivationContextAssemblyDetailedInformation = PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION;
- PACTIVATION_CONTEXT_DETAILED_INFORMATION = ^ACTIVATION_CONTEXT_DETAILED_INFORMATION;
- {$EXTERNALSYM PACTIVATION_CONTEXT_DETAILED_INFORMATION}
- _ACTIVATION_CONTEXT_DETAILED_INFORMATION = record
- dwFlags: DWORD;
- ulFormatVersion: DWORD;
- ulAssemblyCount: DWORD;
- ulRootManifestPathType: DWORD;
- ulRootManifestPathChars: DWORD;
- ulRootConfigurationPathType: DWORD;
- ulRootConfigurationPathChars: DWORD;
- ulAppDirPathType: DWORD;
- ulAppDirPathChars: DWORD;
- lpRootManifestPath: LPCWSTR;
- lpRootConfigurationPath: LPCWSTR;
- lpAppDirPath: LPCWSTR;
- end;
- {$EXTERNALSYM _ACTIVATION_CONTEXT_DETAILED_INFORMATION}
- ACTIVATION_CONTEXT_DETAILED_INFORMATION = _ACTIVATION_CONTEXT_DETAILED_INFORMATION;
- {$EXTERNALSYM ACTIVATION_CONTEXT_DETAILED_INFORMATION}
- TActivationContextDetailedInformation = ACTIVATION_CONTEXT_DETAILED_INFORMATION;
- PActivationContextDetailedInformation = PACTIVATION_CONTEXT_DETAILED_INFORMATION;
- const
- DLL_PROCESS_ATTACH = 1;
- {$EXTERNALSYM DLL_PROCESS_ATTACH}
- DLL_THREAD_ATTACH = 2;
- {$EXTERNALSYM DLL_THREAD_ATTACH}
- DLL_THREAD_DETACH = 3;
- {$EXTERNALSYM DLL_THREAD_DETACH}
- DLL_PROCESS_DETACH = 0;
- {$EXTERNALSYM DLL_PROCESS_DETACH}
- DLL_PROCESS_VERIFIER = 4;
- {$EXTERNALSYM DLL_PROCESS_VERIFIER}
- //
- // Defines for the READ flags for Eventlogging
- //
- EVENTLOG_SEQUENTIAL_READ = $0001;
- {$EXTERNALSYM EVENTLOG_SEQUENTIAL_READ}
- EVENTLOG_SEEK_READ = $0002;
- {$EXTERNALSYM EVENTLOG_SEEK_READ}
- EVENTLOG_FORWARDS_READ = $0004;
- {$EXTERNALSYM EVENTLOG_FORWARDS_READ}
- EVENTLOG_BACKWARDS_READ = $0008;
- {$EXTERNALSYM EVENTLOG_BACKWARDS_READ}
- //
- // The types of events that can be logged.
- //
- EVENTLOG_SUCCESS = $0000;
- {$EXTERNALSYM EVENTLOG_SUCCESS}
- EVENTLOG_ERROR_TYPE = $0001;
- {$EXTERNALSYM EVENTLOG_ERROR_TYPE}
- EVENTLOG_WARNING_TYPE = $0002;
- {$EXTERNALSYM EVENTLOG_WARNING_TYPE}
- EVENTLOG_INFORMATION_TYPE = $0004;
- {$EXTERNALSYM EVENTLOG_INFORMATION_TYPE}
- EVENTLOG_AUDIT_SUCCESS = $0008;
- {$EXTERNALSYM EVENTLOG_AUDIT_SUCCESS}
- EVENTLOG_AUDIT_FAILURE = $0010;
- {$EXTERNALSYM EVENTLOG_AUDIT_FAILURE}
- //
- // Defines for the WRITE flags used by Auditing for paired events
- // These are not implemented in Product 1
- //
- EVENTLOG_START_PAIRED_EVENT = $0001;
- {$EXTERNALSYM EVENTLOG_START_PAIRED_EVENT}
- EVENTLOG_END_PAIRED_EVENT = $0002;
- {$EXTERNALSYM EVENTLOG_END_PAIRED_EVENT}
- EVENTLOG_END_ALL_PAIRED_EVENTS = $0004;
- {$EXTERNALSYM EVENTLOG_END_ALL_PAIRED_EVENTS}
- EVENTLOG_PAIRED_EVENT_ACTIVE = $0008;
- {$EXTERNALSYM EVENTLOG_PAIRED_EVENT_ACTIVE}
- EVENTLOG_PAIRED_EVENT_INACTIVE = $0010;
- {$EXTERNALSYM EVENTLOG_PAIRED_EVENT_INACTIVE}
- //
- // Structure that defines the header of the Eventlog record. This is the
- // fixed-sized portion before all the variable-length strings, binary
- // data and pad bytes.
- //
- // TimeGenerated is the time it was generated at the client.
- // TimeWritten is the time it was put into the log at the server end.
- //
- type
- PEventlogrecord = ^EVENTLOGRECORD;
- _EVENTLOGRECORD = record
- Length: DWORD; // Length of full record
- Reserved: DWORD; // Used by the service
- RecordNumber: DWORD; // Absolute record number
- TimeGenerated: DWORD; // Seconds since 1-1-1970
- TimeWritten: DWORD; // Seconds since 1-1-1970
- EventID: DWORD;
- EventType: Word;
- NumStrings: Word;
- EventCategory: Word;
- ReservedFlags: Word; // For use with paired events (auditing)
- ClosingRecordNumber: DWORD; // For use with paired events (auditing)
- StringOffset: DWORD; // Offset from beginning of record
- UserSidLength: DWORD;
- UserSidOffset: DWORD;
- DataLength: DWORD;
- DataOffset: DWORD; // Offset from beginning of record
- //
- // Then follow:
- //
- // WCHAR SourceName[]
- // WCHAR Computername[]
- // SID UserSid
- // WCHAR Strings[]
- // BYTE Data[]
- // CHAR Pad[]
- // DWORD Length;
- //
- end;
- {$EXTERNALSYM _EVENTLOGRECORD}
- EVENTLOGRECORD = _EVENTLOGRECORD;
- {$EXTERNALSYM EVENTLOGRECORD}
- TEventlogrecord = EVENTLOGRECORD;
- const
- MAXLOGICALLOGNAMESIZE = 256;
- {$EXTERNALSYM MAXLOGICALLOGNAMESIZE}
- type
- PEventsForLogFile = ^EVENTSFORLOGFILE;
- _EVENTSFORLOGFILE = record
- ulSize: DWORD;
- szLogicalLogFile: array [0..MAXLOGICALLOGNAMESIZE - 1] of WCHAR; // name of the logical file-security/application/system
- ulNumRecords: DWORD;
- pEventLogRecords: array [0..0] of EVENTLOGRECORD;
- end;
- {$EXTERNALSYM _EVENTSFORLOGFILE}
- EVENTSFORLOGFILE = _EVENTSFORLOGFILE;
- {$EXTERNALSYM EVENTSFORLOGFILE}
- TEventsForLogFile = EVENTSFORLOGFILE;
- PPackedEventInfo = ^PACKEDEVENTINFO;
- _PACKEDEVENTINFO = record
- ulSize: DWORD; // total size of the structure
- ulNumEventsForLogFile: DWORD; // number of EventsForLogFile structure that follow
- ulOffsets: array [0..0] of DWORD; // the offsets from the start of this structure to the EVENTSFORLOGFILE structure
- end;
- {$EXTERNALSYM _PACKEDEVENTINFO}
- PACKEDEVENTINFO = _PACKEDEVENTINFO;
- {$EXTERNALSYM PACKEDEVENTINFO}
- TPackedEventInfo = PACKEDEVENTINFO;
- //
- // Registry Specific Access Rights.
- //
- const
- KEY_QUERY_VALUE = $0001;
- {$EXTERNALSYM KEY_QUERY_VALUE}
- KEY_SET_VALUE = $0002;
- {$EXTERNALSYM KEY_SET_VALUE}
- KEY_CREATE_SUB_KEY = $0004;
- {$EXTERNALSYM KEY_CREATE_SUB_KEY}
- KEY_ENUMERATE_SUB_KEYS = $0008;
- {$EXTERNALSYM KEY_ENUMERATE_SUB_KEYS}
- KEY_NOTIFY = $0010;
- {$EXTERNALSYM KEY_NOTIFY}
- KEY_CREATE_LINK = $0020;
- {$EXTERNALSYM KEY_CREATE_LINK}
- KEY_WOW64_32KEY = $0200;
- {$EXTERNALSYM KEY_WOW64_32KEY}
- KEY_WOW64_64KEY = $0100;
- {$EXTERNALSYM KEY_WOW64_64KEY}
- KEY_WOW64_RES = $0300;
- {$EXTERNALSYM KEY_WOW64_RES}
- KEY_READ = STANDARD_RIGHTS_READ or KEY_QUERY_VALUE or KEY_ENUMERATE_SUB_KEYS or
- KEY_NOTIFY and (not SYNCHRONIZE);
- {$EXTERNALSYM KEY_READ}
- KEY_WRITE = STANDARD_RIGHTS_WRITE or KEY_SET_VALUE or KEY_CREATE_SUB_KEY and
- (not SYNCHRONIZE);
- {$EXTERNALSYM KEY_WRITE}
- KEY_EXECUTE = KEY_READ and (not SYNCHRONIZE);
- {$EXTERNALSYM KEY_EXECUTE}
- KEY_ALL_ACCESS = STANDARD_RIGHTS_ALL or KEY_QUERY_VALUE or KEY_SET_VALUE or
- KEY_CREATE_SUB_KEY or KEY_ENUMERATE_SUB_KEYS or KEY_NOTIFY or
- KEY_CREATE_LINK and (not SYNCHRONIZE);
- {$EXTERNALSYM KEY_ALL_ACCESS}
- //
- // Open/Create Options
- //
- REG_OPTION_RESERVED = $00000000; // Parameter is reserved
- {$EXTERNALSYM REG_OPTION_RESERVED}
- REG_OPTION_NON_VOLATILE = $00000000; // Key is preserved when system is rebooted
- {$EXTERNALSYM REG_OPTION_NON_VOLATILE}
- REG_OPTION_VOLATILE = $00000001; // Key is not preserved when system is rebooted
- {$EXTERNALSYM REG_OPTION_VOLATILE}
- REG_OPTION_CREATE_LINK = $00000002; // Created key is a symbolic link
- {$EXTERNALSYM REG_OPTION_CREATE_LINK}
- REG_OPTION_BACKUP_RESTORE = $00000004; // open for backup or restore
- {$EXTERNALSYM REG_OPTION_BACKUP_RESTORE}
- // special access rules
- // privilege required
- REG_OPTION_OPEN_LINK = $00000008; // Open symbolic link
- {$EXTERNALSYM REG_OPTION_OPEN_LINK}
- REG_LEGAL_OPTION = REG_OPTION_RESERVED or REG_OPTION_NON_VOLATILE or
- REG_OPTION_VOLATILE or REG_OPTION_CREATE_LINK or REG_OPTION_BACKUP_RESTORE or
- REG_OPTION_OPEN_LINK;
- {$EXTERNALSYM REG_LEGAL_OPTION}
- //
- // Key creation/open disposition
- //
- REG_CREATED_NEW_KEY = $00000001; // New Registry Key created
- {$EXTERNALSYM REG_CREATED_NEW_KEY}
- REG_OPENED_EXISTING_KEY = $00000002; // Existing Key opened
- {$EXTERNALSYM REG_OPENED_EXISTING_KEY}
- //
- // hive format to be used by Reg(Nt)SaveKeyEx
- //
- REG_STANDARD_FORMAT = 1;
- {$EXTERNALSYM REG_STANDARD_FORMAT}
- REG_LATEST_FORMAT = 2;
- {$EXTERNALSYM REG_LATEST_FORMAT}
- REG_NO_COMPRESSION = 4;
- {$EXTERNALSYM REG_NO_COMPRESSION}
- //
- // Key restore flags
- //
- REG_WHOLE_HIVE_VOLATILE = $00000001; // Restore whole hive volatile
- {$EXTERNALSYM REG_WHOLE_HIVE_VOLATILE}
- REG_REFRESH_HIVE = $00000002; // Unwind changes to last flush
- {$EXTERNALSYM REG_REFRESH_HIVE}
- REG_NO_LAZY_FLUSH = $00000004; // Never lazy flush this hive
- {$EXTERNALSYM REG_NO_LAZY_FLUSH}
- REG_FORCE_RESTORE = $00000008; // Force the restore process even when we have open handles on subkeys
- {$EXTERNALSYM REG_FORCE_RESTORE}
- //
- // Unload Flags
- //
- REG_FORCE_UNLOAD = 1;
- {$EXTERNALSYM REG_FORCE_UNLOAD}
- // end_ntddk end_wdm end_nthal
- //
- // Notify filter values
- //
- REG_NOTIFY_CHANGE_NAME = $00000001; // Create or delete (child)
- {$EXTERNALSYM REG_NOTIFY_CHANGE_NAME}
- REG_NOTIFY_CHANGE_ATTRIBUTES = $00000002;
- {$EXTERNALSYM REG_NOTIFY_CHANGE_ATTRIBUTES}
- REG_NOTIFY_CHANGE_LAST_SET = $00000004; // time stamp
- {$EXTERNALSYM REG_NOTIFY_CHANGE_LAST_SET}
- REG_NOTIFY_CHANGE_SECURITY = $00000008;
- {$EXTERNALSYM REG_NOTIFY_CHANGE_SECURITY}
- REG_LEGAL_CHANGE_FILTER = REG_NOTIFY_CHANGE_NAME or REG_NOTIFY_CHANGE_ATTRIBUTES or
- REG_NOTIFY_CHANGE_LAST_SET or REG_NOTIFY_CHANGE_SECURITY;
- {$EXTERNALSYM REG_LEGAL_CHANGE_FILTER}
- //
- //
- // Predefined Value Types.
- //
- REG_NONE = 0; // No value type
- {$EXTERNALSYM REG_NONE}
- REG_SZ = 1; // Unicode nul terminated string
- {$EXTERNALSYM REG_SZ}
- REG_EXPAND_SZ = 2; // Unicode nul terminated string
- {$EXTERNALSYM REG_EXPAND_SZ}
- // (with environment variable references)
- REG_BINARY = 3; // Free form binary
- {$EXTERNALSYM REG_BINARY}
- REG_DWORD = 4; // 32-bit number
- {$EXTERNALSYM REG_DWORD}
- REG_DWORD_LITTLE_ENDIAN = 4; // 32-bit number (same as REG_DWORD)
- {$EXTERNALSYM REG_DWORD_LITTLE_ENDIAN}
- REG_DWORD_BIG_ENDIAN = 5; // 32-bit number
- {$EXTERNALSYM REG_DWORD_BIG_ENDIAN}
- REG_LINK = 6; // Symbolic Link (unicode)
- {$EXTERNALSYM REG_LINK}
- REG_MULTI_SZ = 7; // Multiple Unicode strings
- {$EXTERNALSYM REG_MULTI_SZ}
- REG_RESOURCE_LIST = 8; // Resource list in the resource map
- {$EXTERNALSYM REG_RESOURCE_LIST}
- REG_FULL_RESOURCE_DESCRIPTOR = 9; // Resource list in the hardware description
- {$EXTERNALSYM REG_FULL_RESOURCE_DESCRIPTOR}
- REG_RESOURCE_REQUIREMENTS_LIST = 10;
- {$EXTERNALSYM REG_RESOURCE_REQUIREMENTS_LIST}
- REG_QWORD = 11; // 64-bit number
- {$EXTERNALSYM REG_QWORD}
- REG_QWORD_LITTLE_ENDIAN = 11; // 64-bit number (same as REG_QWORD)
- {$EXTERNALSYM REG_QWORD_LITTLE_ENDIAN}
- //
- // Service Types (Bit Mask)
- //
- SERVICE_KERNEL_DRIVER = $00000001;
- {$EXTERNALSYM SERVICE_KERNEL_DRIVER}
- SERVICE_FILE_SYSTEM_DRIVER = $00000002;
- {$EXTERNALSYM SERVICE_FILE_SYSTEM_DRIVER}
- SERVICE_ADAPTER = $00000004;
- {$EXTERNALSYM SERVICE_ADAPTER}
- SERVICE_RECOGNIZER_DRIVER = $00000008;
- {$EXTERNALSYM SERVICE_RECOGNIZER_DRIVER}
- SERVICE_DRIVER = SERVICE_KERNEL_DRIVER or SERVICE_FILE_SYSTEM_DRIVER or
- SERVICE_RECOGNIZER_DRIVER;
- {$EXTERNALSYM SERVICE_DRIVER}
- SERVICE_WIN32_OWN_PROCESS = $00000010;
- {$EXTERNALSYM SERVICE_WIN32_OWN_PROCESS}
- SERVICE_WIN32_SHARE_PROCESS = $00000020;
- {$EXTERNALSYM SERVICE_WIN32_SHARE_PROCESS}
- SERVICE_WIN32 = SERVICE_WIN32_OWN_PROCESS or SERVICE_WIN32_SHARE_PROCESS;
- {$EXTERNALSYM SERVICE_WIN32}
- SERVICE_INTERACTIVE_PROCESS = $00000100;
- {$EXTERNALSYM SERVICE_INTERACTIVE_PROCESS}
- SERVICE_TYPE_ALL = SERVICE_WIN32 or SERVICE_ADAPTER or SERVICE_DRIVER or
- SERVICE_INTERACTIVE_PROCESS;
- {$EXTERNALSYM SERVICE_TYPE_ALL}
- //
- // Start Type
- //
- SERVICE_BOOT_START = $00000000;
- {$EXTERNALSYM SERVICE_BOOT_START}
- SERVICE_SYSTEM_START = $00000001;
- {$EXTERNALSYM SERVICE_SYSTEM_START}
- SERVICE_AUTO_START = $00000002;
- {$EXTERNALSYM SERVICE_AUTO_START}
- SERVICE_DEMAND_START = $00000003;
- {$EXTERNALSYM SERVICE_DEMAND_START}
- SERVICE_DISABLED = $00000004;
- {$EXTERNALSYM SERVICE_DISABLED}
- //
- // Error control type
- //
- SERVICE_ERROR_IGNORE = $00000000;
- {$EXTERNALSYM SERVICE_ERROR_IGNORE}
- SERVICE_ERROR_NORMAL = $00000001;
- {$EXTERNALSYM SERVICE_ERROR_NORMAL}
- SERVICE_ERROR_SEVERE = $00000002;
- {$EXTERNALSYM SERVICE_ERROR_SEVERE}
- SERVICE_ERROR_CRITICAL = $00000003;
- {$EXTERNALSYM SERVICE_ERROR_CRITICAL}
- //
- // Define the registry driver node enumerations
- //
- const
- //SERVICE_NODE_TYPE
- DriverType = SERVICE_KERNEL_DRIVER;
- FileSystemType = SERVICE_FILE_SYSTEM_DRIVER;
- Win32ServiceOwnProcess = SERVICE_WIN32_OWN_PROCESS;
- Win32ServiceShareProcess = SERVICE_WIN32_SHARE_PROCESS;
- AdapterType = SERVICE_ADAPTER;
- RecognizerType = SERVICE_RECOGNIZER_DRIVER;
- //SERVICE_LOAD_TYPE
- BootLoad = SERVICE_BOOT_START;
- SystemLoad = SERVICE_SYSTEM_START;
- AutoLoad = SERVICE_AUTO_START;
- DemandLoad = SERVICE_DEMAND_START;
- DisableLoad = SERVICE_DISABLED;
- //SERVICE_ERROR_TYPE
- IgnoreError = SERVICE_ERROR_IGNORE;
- NormalError = SERVICE_ERROR_NORMAL;
- SevereError = SERVICE_ERROR_SEVERE;
- CriticalError = SERVICE_ERROR_CRITICAL;
- //
- // IOCTL_TAPE_ERASE definitions
- //
- type
- SERVICE_NODE_TYPE = DWORD;
- {$EXTERNALSYM SERVICE_NODE_TYPE}
- TServiceNodeType = SERVICE_NODE_TYPE;
- SERVICE_LOAD_TYPE = DWORD;
- {$EXTERNALSYM SERVICE_LOAD_TYPE}
- TServiceLoadType = SERVICE_LOAD_TYPE;
- SERVICE_ERROR_TYPE = DWORD;
- {$EXTERNALSYM SERVICE_ERROR_TYPE}
- TServiceErrorType = SERVICE_ERROR_TYPE;
- const
- TAPE_ERASE_SHORT = 0;
- {$EXTERNALSYM TAPE_ERASE_SHORT}
- TAPE_ERASE_LONG = 1;
- {$EXTERNALSYM TAPE_ERASE_LONG}
- type
- PTAPE_ERASE = ^TAPE_ERASE;
- {$EXTERNALSYM PTAPE_ERASE}
- _TAPE_ERASE = record
- Type_: DWORD;
- Immediate: ByteBool;
- end;
- {$EXTERNALSYM _TAPE_ERASE}
- TAPE_ERASE = _TAPE_ERASE;
- {$EXTERNALSYM TAPE_ERASE}
- TTapeErase = TAPE_ERASE;
- PTapeErase = PTAPE_ERASE;
- //
- // IOCTL_TAPE_PREPARE definitions
- //
- const
- TAPE_LOAD = 0;
- {$EXTERNALSYM TAPE_LOAD}
- TAPE_UNLOAD = 1;
- {$EXTERNALSYM TAPE_UNLOAD}
- TAPE_TENSION = 2;
- {$EXTERNALSYM TAPE_TENSION}
- TAPE_LOCK = 3;
- {$EXTERNALSYM TAPE_LOCK}
- TAPE_UNLOCK = 4;
- {$EXTERNALSYM TAPE_UNLOCK}
- TAPE_FORMAT = 5;
- {$EXTERNALSYM TAPE_FORMAT}
- type
- PTAPE_PREPARE = ^TAPE_PREPARE;
- {$EXTERNALSYM PTAPE_PREPARE}
- _TAPE_PREPARE = record
- Operation: DWORD;
- Immediate: ByteBool;
- end;
- {$EXTERNALSYM _TAPE_PREPARE}
- TAPE_PREPARE = _TAPE_PREPARE;
- {$EXTERNALSYM TAPE_PREPARE}
- TTapePrepare = TAPE_PREPARE;
- PTapePrepare = PTAPE_PREPARE;
- //
- // IOCTL_TAPE_WRITE_MARKS definitions
- //
- const
- TAPE_SETMARKS = 0;
- {$EXTERNALSYM TAPE_SETMARKS}
- TAPE_FILEMARKS = 1;
- {$EXTERNALSYM TAPE_FILEMARKS}
- TAPE_SHORT_FILEMARKS = 2;
- {$EXTERNALSYM TAPE_SHORT_FILEMARKS}
- TAPE_LONG_FILEMARKS = 3;
- {$EXTERNALSYM TAPE_LONG_FILEMARKS}
- type
- PTAPE_WRITE_MARKS = ^TAPE_WRITE_MARKS;
- {$EXTERNALSYM PTAPE_WRITE_MARKS}
- _TAPE_WRITE_MARKS = record
- Type_: DWORD;
- Count: DWORD;
- Immediate: ByteBool;
- end;
- {$EXTERNALSYM _TAPE_WRITE_MARKS}
- TAPE_WRITE_MARKS = _TAPE_WRITE_MARKS;
- {$EXTERNALSYM TAPE_WRITE_MARKS}
- TTapeWriteMarks = TAPE_WRITE_MARKS;
- PTapeWriteMarks = PTAPE_WRITE_MARKS;
- //
- // IOCTL_TAPE_GET_POSITION definitions
- //
- const
- TAPE_ABSOLUTE_POSITION = 0;
- {$EXTERNALSYM TAPE_ABSOLUTE_POSITION}
- TAPE_LOGICAL_POSITION = 1;
- {$EXTERNALSYM TAPE_LOGICAL_POSITION}
- TAPE_PSEUDO_LOGICAL_POSITION = 2;
- {$EXTERNALSYM TAPE_PSEUDO_LOGICAL_POSITION}
- type
- PTAPE_GET_POSITION = ^TAPE_GET_POSITION;
- {$EXTERNALSYM PTAPE_GET_POSITION}
- _TAPE_GET_POSITION = record
- Type_: DWORD;
- Partition: DWORD;
- Offset: LARGE_INTEGER;
- end;
- {$EXTERNALSYM _TAPE_GET_POSITION}
- TAPE_GET_POSITION = _TAPE_GET_POSITION;
- {$EXTERNALSYM TAPE_GET_POSITION}
- TTapeGetPosition = TAPE_GET_POSITION;
- PTapeGetPosition = PTAPE_GET_POSITION;
- //
- // IOCTL_TAPE_SET_POSITION definitions
- //
- const
- TAPE_REWIND = 0;
- {$EXTERNALSYM TAPE_REWIND}
- TAPE_ABSOLUTE_BLOCK = 1;
- {$EXTERNALSYM TAPE_ABSOLUTE_BLOCK}
- TAPE_LOGICAL_BLOCK = 2;
- {$EXTERNALSYM TAPE_LOGICAL_BLOCK}
- TAPE_PSEUDO_LOGICAL_BLOCK = 3;
- {$EXTERNALSYM TAPE_PSEUDO_LOGICAL_BLOCK}
- TAPE_SPACE_END_OF_DATA = 4;
- {$EXTERNALSYM TAPE_SPACE_END_OF_DATA}
- TAPE_SPACE_RELATIVE_BLOCKS = 5;
- {$EXTERNALSYM TAPE_SPACE_RELATIVE_BLOCKS}
- TAPE_SPACE_FILEMARKS = 6;
- {$EXTERNALSYM TAPE_SPACE_FILEMARKS}
- TAPE_SPACE_SEQUENTIAL_FMKS = 7;
- {$EXTERNALSYM TAPE_SPACE_SEQUENTIAL_FMKS}
- TAPE_SPACE_SETMARKS = 8;
- {$EXTERNALSYM TAPE_SPACE_SETMARKS}
- TAPE_SPACE_SEQUENTIAL_SMKS = 9;
- {$EXTERNALSYM TAPE_SPACE_SEQUENTIAL_SMKS}
- type
- PTAPE_SET_POSITION = ^TAPE_SET_POSITION;
- {$EXTERNALSYM PTAPE_SET_POSITION}
- _TAPE_SET_POSITION = record
- Method: DWORD;
- Partition: DWORD;
- Offset: LARGE_INTEGER;
- Immediate: ByteBool;
- end;
- {$EXTERNALSYM _TAPE_SET_POSITION}
- TAPE_SET_POSITION = _TAPE_SET_POSITION;
- {$EXTERNALSYM TAPE_SET_POSITION}
- TTapeSetPosition = TAPE_SET_POSITION;
- PTapeSetPosition = PTAPE_SET_POSITION;
- //
- // IOCTL_TAPE_GET_DRIVE_PARAMS definitions
- //
- //
- // Definitions for FeaturesLow parameter
- //
- const
- TAPE_DRIVE_FIXED = $00000001;
- {$EXTERNALSYM TAPE_DRIVE_FIXED}
- TAPE_DRIVE_SELECT = $00000002;
- {$EXTERNALSYM TAPE_DRIVE_SELECT}
- TAPE_DRIVE_INITIATOR = $00000004;
- {$EXTERNALSYM TAPE_DRIVE_INITIATOR}
- TAPE_DRIVE_ERASE_SHORT = $00000010;
- {$EXTERNALSYM TAPE_DRIVE_ERASE_SHORT}
- TAPE_DRIVE_ERASE_LONG = $00000020;
- {$EXTERNALSYM TAPE_DRIVE_ERASE_LONG}
- TAPE_DRIVE_ERASE_BOP_ONLY = $00000040;
- {$EXTERNALSYM TAPE_DRIVE_ERASE_BOP_ONLY}
- TAPE_DRIVE_ERASE_IMMEDIATE = $00000080;
- {$EXTERNALSYM TAPE_DRIVE_ERASE_IMMEDIATE}
- TAPE_DRIVE_TAPE_CAPACITY = $00000100;
- {$EXTERNALSYM TAPE_DRIVE_TAPE_CAPACITY}
- TAPE_DRIVE_TAPE_REMAINING = $00000200;
- {$EXTERNALSYM TAPE_DRIVE_TAPE_REMAINING}
- TAPE_DRIVE_FIXED_BLOCK = $00000400;
- {$EXTERNALSYM TAPE_DRIVE_FIXED_BLOCK}
- TAPE_DRIVE_VARIABLE_BLOCK = $00000800;
- {$EXTERNALSYM TAPE_DRIVE_VARIABLE_BLOCK}
- TAPE_DRIVE_WRITE_PROTECT = $00001000;
- {$EXTERNALSYM TAPE_DRIVE_WRITE_PROTECT}
- TAPE_DRIVE_EOT_WZ_SIZE = $00002000;
- {$EXTERNALSYM TAPE_DRIVE_EOT_WZ_SIZE}
- TAPE_DRIVE_ECC = $00010000;
- {$EXTERNALSYM TAPE_DRIVE_ECC}
- TAPE_DRIVE_COMPRESSION = $00020000;
- {$EXTERNALSYM TAPE_DRIVE_COMPRESSION}
- TAPE_DRIVE_PADDING = $00040000;
- {$EXTERNALSYM TAPE_DRIVE_PADDING}
- TAPE_DRIVE_REPORT_SMKS = $00080000;
- {$EXTERNALSYM TAPE_DRIVE_REPORT_SMKS}
- TAPE_DRIVE_GET_ABSOLUTE_BLK = $00100000;
- {$EXTERNALSYM TAPE_DRIVE_GET_ABSOLUTE_BLK}
- TAPE_DRIVE_GET_LOGICAL_BLK = $00200000;
- {$EXTERNALSYM TAPE_DRIVE_GET_LOGICAL_BLK}
- TAPE_DRIVE_SET_EOT_WZ_SIZE = $00400000;
- {$EXTERNALSYM TAPE_DRIVE_SET_EOT_WZ_SIZE}
- TAPE_DRIVE_EJECT_MEDIA = $01000000;
- {$EXTERNALSYM TAPE_DRIVE_EJECT_MEDIA}
- TAPE_DRIVE_CLEAN_REQUESTS = $02000000;
- {$EXTERNALSYM TAPE_DRIVE_CLEAN_REQUESTS}
- TAPE_DRIVE_SET_CMP_BOP_ONLY = $04000000;
- {$EXTERNALSYM TAPE_DRIVE_SET_CMP_BOP_ONLY}
- TAPE_DRIVE_RESERVED_BIT = DWORD($80000000); // don't use this bit!
- {$EXTERNALSYM TAPE_DRIVE_RESERVED_BIT}
- // //can't be a low features bit!
- // //reserved; high features only
- //
- // Definitions for FeaturesHigh parameter
- //
- TAPE_DRIVE_LOAD_UNLOAD = DWORD($80000001);
- {$EXTERNALSYM TAPE_DRIVE_LOAD_UNLOAD}
- TAPE_DRIVE_TENSION = DWORD($80000002);
- {$EXTERNALSYM TAPE_DRIVE_TENSION}
- TAPE_DRIVE_LOCK_UNLOCK = DWORD($80000004);
- {$EXTERNALSYM TAPE_DRIVE_LOCK_UNLOCK}
- TAPE_DRIVE_REWIND_IMMEDIATE = DWORD($80000008);
- {$EXTERNALSYM TAPE_DRIVE_REWIND_IMMEDIATE}
- TAPE_DRIVE_SET_BLOCK_SIZE = DWORD($80000010);
- {$EXTERNALSYM TAPE_DRIVE_SET_BLOCK_SIZE}
- TAPE_DRIVE_LOAD_UNLD_IMMED = DWORD($80000020);
- {$EXTERNALSYM TAPE_DRIVE_LOAD_UNLD_IMMED}
- TAPE_DRIVE_TENSION_IMMED = DWORD($80000040);
- {$EXTERNALSYM TAPE_DRIVE_TENSION_IMMED}
- TAPE_DRIVE_LOCK_UNLK_IMMED = DWORD($80000080);
- {$EXTERNALSYM TAPE_DRIVE_LOCK_UNLK_IMMED}
- TAPE_DRIVE_SET_ECC = DWORD($80000100);
- {$EXTERNALSYM TAPE_DRIVE_SET_ECC}
- TAPE_DRIVE_SET_COMPRESSION = DWORD($80000200);
- {$EXTERNALSYM TAPE_DRIVE_SET_COMPRESSION}
- TAPE_DRIVE_SET_PADDING = DWORD($80000400);
- {$EXTERNALSYM TAPE_DRIVE_SET_PADDING}
- TAPE_DRIVE_SET_REPORT_SMKS = DWORD($80000800);
- {$EXTERNALSYM TAPE_DRIVE_SET_REPORT_SMKS}
- TAPE_DRIVE_ABSOLUTE_BLK = DWORD($80001000);
- {$EXTERNALSYM TAPE_DRIVE_ABSOLUTE_BLK}
- TAPE_DRIVE_ABS_BLK_IMMED = DWORD($80002000);
- {$EXTERNALSYM TAPE_DRIVE_ABS_BLK_IMMED}
- TAPE_DRIVE_LOGICAL_BLK = DWORD($80004000);
- {$EXTERNALSYM TAPE_DRIVE_LOGICAL_BLK}
- TAPE_DRIVE_LOG_BLK_IMMED = DWORD($80008000);
- {$EXTERNALSYM TAPE_DRIVE_LOG_BLK_IMMED}
- TAPE_DRIVE_END_OF_DATA = DWORD($80010000);
- {$EXTERNALSYM TAPE_DRIVE_END_OF_DATA}
- TAPE_DRIVE_RELATIVE_BLKS = DWORD($80020000);
- {$EXTERNALSYM TAPE_DRIVE_RELATIVE_BLKS}
- TAPE_DRIVE_FILEMARKS = DWORD($80040000);
- {$EXTERNALSYM TAPE_DRIVE_FILEMARKS}
- TAPE_DRIVE_SEQUENTIAL_FMKS = DWORD($80080000);
- {$EXTERNALSYM TAPE_DRIVE_SEQUENTIAL_FMKS}
- TAPE_DRIVE_SETMARKS = DWORD($80100000);
- {$EXTERNALSYM TAPE_DRIVE_SETMARKS}
- TAPE_DRIVE_SEQUENTIAL_SMKS = DWORD($80200000);
- {$EXTERNALSYM TAPE_DRIVE_SEQUENTIAL_SMKS}
- TAPE_DRIVE_REVERSE_POSITION = DWORD($80400000);
- {$EXTERNALSYM TAPE_DRIVE_REVERSE_POSITION}
- TAPE_DRIVE_SPACE_IMMEDIATE = DWORD($80800000);
- {$EXTERNALSYM TAPE_DRIVE_SPACE_IMMEDIATE}
- TAPE_DRIVE_WRITE_SETMARKS = DWORD($81000000);
- {$EXTERNALSYM TAPE_DRIVE_WRITE_SETMARKS}
- TAPE_DRIVE_WRITE_FILEMARKS = DWORD($82000000);
- {$EXTERNALSYM TAPE_DRIVE_WRITE_FILEMARKS}
- TAPE_DRIVE_WRITE_SHORT_FMKS = DWORD($84000000);
- {$EXTERNALSYM TAPE_DRIVE_WRITE_SHORT_FMKS}
- TAPE_DRIVE_WRITE_LONG_FMKS = DWORD($88000000);
- {$EXTERNALSYM TAPE_DRIVE_WRITE_LONG_FMKS}
- TAPE_DRIVE_WRITE_MARK_IMMED = DWORD($90000000);
- {$EXTERNALSYM TAPE_DRIVE_WRITE_MARK_IMMED}
- TAPE_DRIVE_FORMAT = DWORD($A0000000);
- {$EXTERNALSYM TAPE_DRIVE_FORMAT}
- TAPE_DRIVE_FORMAT_IMMEDIATE = DWORD($C0000000);
- {$EXTERNALSYM TAPE_DRIVE_FORMAT_IMMEDIATE}
- TAPE_DRIVE_HIGH_FEATURES = DWORD($80000000); // mask for high features flag
- {$EXTERNALSYM TAPE_DRIVE_HIGH_FEATURES}
- type
- PTAPE_GET_DRIVE_PARAMETERS = ^TAPE_GET_DRIVE_PARAMETERS;
- {$EXTERNALSYM PTAPE_GET_DRIVE_PARAMETERS}
- _TAPE_GET_DRIVE_PARAMETERS = record
- ECC: ByteBool;
- Compression: ByteBool;
- DataPadding: ByteBool;
- ReportSetmarks: ByteBool;
- DefaultBlockSize: DWORD;
- MaximumBlockSize: DWORD;
- MinimumBlockSize: DWORD;
- MaximumPartitionCount: DWORD;
- FeaturesLow: DWORD;
- FeaturesHigh: DWORD;
- EOTWarningZoneSize: DWORD;
- end;
- {$EXTERNALSYM _TAPE_GET_DRIVE_PARAMETERS}
- TAPE_GET_DRIVE_PARAMETERS = _TAPE_GET_DRIVE_PARAMETERS;
- {$EXTERNALSYM TAPE_GET_DRIVE_PARAMETERS}
- TTapeGetDriveParameters = TAPE_GET_DRIVE_PARAMETERS;
- PTapeGetDriveParameters = PTAPE_GET_DRIVE_PARAMETERS;
- //
- // IOCTL_TAPE_SET_DRIVE_PARAMETERS definitions
- //
- PTAPE_SET_DRIVE_PARAMETERS = ^TAPE_SET_DRIVE_PARAMETERS;
- {$EXTERNALSYM PTAPE_SET_DRIVE_PARAMETERS}
- _TAPE_SET_DRIVE_PARAMETERS = record
- ECC: ByteBool;
- Compression: ByteBool;
- DataPadding: ByteBool;
- ReportSetmarks: ByteBool;
- EOTWarningZoneSize: DWORD;
- end;
- {$EXTERNALSYM _TAPE_SET_DRIVE_PARAMETERS}
- TAPE_SET_DRIVE_PARAMETERS = _TAPE_SET_DRIVE_PARAMETERS;
- {$EXTERNALSYM TAPE_SET_DRIVE_PARAMETERS}
- TTapeSetDriveParameters = TAPE_SET_DRIVE_PARAMETERS;
- PTapeSetDriveParameters = PTAPE_SET_DRIVE_PARAMETERS;
- //
- // IOCTL_TAPE_GET_MEDIA_PARAMETERS definitions
- //
- PTAPE_GET_MEDIA_PARAMETERS = ^TAPE_GET_MEDIA_PARAMETERS;
- {$EXTERNALSYM PTAPE_GET_MEDIA_PARAMETERS}
- _TAPE_GET_MEDIA_PARAMETERS = record
- Capacity: LARGE_INTEGER;
- Remaining: LARGE_INTEGER;
- BlockSize: DWORD;
- PartitionCount: DWORD;
- WriteProtected: ByteBool;
- end;
- {$EXTERNALSYM _TAPE_GET_MEDIA_PARAMETERS}
- TAPE_GET_MEDIA_PARAMETERS = _TAPE_GET_MEDIA_PARAMETERS;
- {$EXTERNALSYM TAPE_GET_MEDIA_PARAMETERS}
- TTapeGetMediaParameters = TAPE_GET_MEDIA_PARAMETERS;
- PTapeGetMediaParameters = PTAPE_GET_MEDIA_PARAMETERS;
- //
- // IOCTL_TAPE_SET_MEDIA_PARAMETERS definitions
- //
- PTAPE_SET_MEDIA_PARAMETERS = ^TAPE_SET_MEDIA_PARAMETERS;
- {$EXTERNALSYM PTAPE_SET_MEDIA_PARAMETERS}
- _TAPE_SET_MEDIA_PARAMETERS = record
- BlockSize: DWORD;
- end;
- {$EXTERNALSYM _TAPE_SET_MEDIA_PARAMETERS}
- TAPE_SET_MEDIA_PARAMETERS = _TAPE_SET_MEDIA_PARAMETERS;
- {$EXTERNALSYM TAPE_SET_MEDIA_PARAMETERS}
- TTapeSetMediaParameters = TAPE_SET_MEDIA_PARAMETERS;
- PTapeSetMediaParameters = PTAPE_SET_MEDIA_PARAMETERS;
- //
- // IOCTL_TAPE_CREATE_PARTITION definitions
- //
- const
- TAPE_FIXED_PARTITIONS = 0;
- {$EXTERNALSYM TAPE_FIXED_PARTITIONS}
- TAPE_SELECT_PARTITIONS = 1;
- {$EXTERNALSYM TAPE_SELECT_PARTITIONS}
- TAPE_INITIATOR_PARTITIONS = 2;
- {$EXTERNALSYM TAPE_INITIATOR_PARTITIONS}
- type
- PTAPE_CREATE_PARTITION = ^TAPE_CREATE_PARTITION;
- {$EXTERNALSYM PTAPE_CREATE_PARTITION}
- _TAPE_CREATE_PARTITION = record
- Method: DWORD;
- Count: DWORD;
- Size: DWORD;
- end;
- {$EXTERNALSYM _TAPE_CREATE_PARTITION}
- TAPE_CREATE_PARTITION = _TAPE_CREATE_PARTITION;
- {$EXTERNALSYM TAPE_CREATE_PARTITION}
- TTapeCreatePartition = TAPE_CREATE_PARTITION;
- PTapeCreatePartition = PTAPE_CREATE_PARTITION;
- //
- // WMI Methods
- //
- const
- TAPE_QUERY_DRIVE_PARAMETERS = 0;
- {$EXTERNALSYM TAPE_QUERY_DRIVE_PARAMETERS}
- TAPE_QUERY_MEDIA_CAPACITY = 1;
- {$EXTERNALSYM TAPE_QUERY_MEDIA_CAPACITY}
- TAPE_CHECK_FOR_DRIVE_PROBLEM = 2;
- {$EXTERNALSYM TAPE_CHECK_FOR_DRIVE_PROBLEM}
- TAPE_QUERY_IO_ERROR_DATA = 3;
- {$EXTERNALSYM TAPE_QUERY_IO_ERROR_DATA}
- TAPE_QUERY_DEVICE_ERROR_DATA = 4;
- {$EXTERNALSYM TAPE_QUERY_DEVICE_ERROR_DATA}
- type
- _TAPE_WMI_OPERATIONS = record
- Method: DWORD;
- DataBufferSize: DWORD;
- DataBuffer: PVOID;
- end;
- {$EXTERNALSYM _TAPE_WMI_OPERATIONS}
- TAPE_WMI_OPERATIONS = _TAPE_WMI_OPERATIONS;
- {$EXTERNALSYM TAPE_WMI_OPERATIONS}
- PTAPE_WMI_OPERATIONS = ^TAPE_WMI_OPERATIONS;
- {$EXTERNALSYM PTAPE_WMI_OPERATIONS}
- TTapeWMIOperations = TAPE_WMI_OPERATIONS;
- PTapeWMIOperations = PTAPE_WMI_OPERATIONS;
- //
- // Type of drive errors
- //
- _TAPE_DRIVE_PROBLEM_TYPE = (
- TapeDriveProblemNone, TapeDriveReadWriteWarning,
- TapeDriveReadWriteError, TapeDriveReadWarning,
- TapeDriveWriteWarning, TapeDriveReadError,
- TapeDriveWriteError, TapeDriveHardwareError,
- TapeDriveUnsupportedMedia, TapeDriveScsiConnectionError,
- TapeDriveTimetoClean, TapeDriveCleanDriveNow,
- TapeDriveMediaLifeExpired, TapeDriveSnappedTape);
- {$EXTERNALSYM _TAPE_DRIVE_PROBLEM_TYPE}
- TAPE_DRIVE_PROBLEM_TYPE = _TAPE_DRIVE_PROBLEM_TYPE;
- TTapeDriveProblemType = TAPE_DRIVE_PROBLEM_TYPE;
- const
- ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION = 1;
- {$EXTERNALSYM ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION}
- ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION = 2;
- {$EXTERNALSYM ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION}
- ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION = 3;
- {$EXTERNALSYM ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION}
- ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION = 4;
- {$EXTERNALSYM ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION}
- ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION = 5;
- {$EXTERNALSYM ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION}
- ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION = 6;
- {$EXTERNALSYM ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION}
- ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION = 7;
- {$EXTERNALSYM ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION}
- ACTIVATION_CONTEXT_SECTION_GLOBAL_OBJECT_RENAME_TABLE = 8;
- {$EXTERNALSYM ACTIVATION_CONTEXT_SECTION_GLOBAL_OBJECT_RENAME_TABLE}
- ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES = 9;
- {$EXTERNALSYM ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES}
- implementation
- const
- ntdll = 'ntdll.dll';
- kernel32 = 'kernel32.dll';
- function WT_SET_MAX_THREADPOOL_THREADS(var Flags: DWORD; Limit: DWORD): DWORD;
- begin
- Flags := Flags or (Limit shl 16);
- Result := Flags;
- end;
- function VALID_IMPERSONATION_LEVEL(L: TSecurityImpersonationLevel): BOOL;
- begin
- Result := (L >= SECURITY_MIN_IMPERSONATION_LEVEL) and (L <= SECURITY_MAX_IMPERSONATION_LEVEL);
- end;
- {
- function VALID_TOKEN_AUDIT_POLICY_ELEMENT(P: TOKEN_AUDIT_POLICY_ELEMENT): BOOL;
- begin
- Result := ((P.PolicyMask and (not VALID_AUDIT_POLICY_BITS) = 0) and (P.Category <= AuditEventMaxType);
- // ((((P).PolicyMask & ~VALID_AUDIT_POLICY_BITS) == 0) && \
- // ((P).Category <= AuditEventMaxType))
- end;
- }
- function PER_USER_AUDITING_POLICY_SIZE(p: PTOKEN_AUDIT_POLICY): DWORD;
- begin
- Result := SizeOf(TOKEN_AUDIT_POLICY);
- if p^.PolicyCount > ANYSIZE_ARRAY then
- Result := Result + SizeOf(TOKEN_AUDIT_POLICY_ELEMENT) * (P^.PolicyCount - ANYSIZE_ARRAY);
- // ( sizeof(TOKEN_AUDIT_POLICY) + (((p)->PolicyCount > ANYSIZE_ARRAY) ? (sizeof(TOKEN_AUDIT_POLICY_ELEMENT) * ((p)->PolicyCount - ANYSIZE_ARRAY)) : 0) )
- end;
- function PER_USER_AUDITING_POLICY_SIZE_BY_COUNT(C: DWORD): DWORD;
- begin
- Result := SizeOf(TOKEN_AUDIT_POLICY);
- if C > ANYSIZE_ARRAY then
- Result := Result + SizeOf(TOKEN_AUDIT_POLICY_ELEMENT) * (C - ANYSIZE_ARRAY);
- // ( sizeof(TOKEN_AUDIT_POLICY) + (((C) > ANYSIZE_ARRAY) ? (sizeof(TOKEN_AUDIT_POLICY_ELEMENT) * ((C) - ANYSIZE_ARRAY)) : 0) )
- end;
- function NtCurrentTeb: PNT_TIB;
- asm
- MOV EAX, FS:[0]
- end;
- function GetFiberData: PVOID;
- asm
- MOV EAX, FS:[$10]
- MOV EAX, [EAX]
- end;
- function GetCurrentFiber: PVOID;
- asm
- MOV EAX, FS:[$10]
- end;
- function Int32x32To64(a, b: LONG): LONGLONG;
- begin
- Result := a * b;
- end;
- function UInt32x32To64(a, b: DWORD): ULONGLONG;
- begin
- Result := a * b;
- end;
- function MAKELANGID(PrimaryLang, SubLang: USHORT): WORD;
- begin
- Result := (SubLang shl 10) or PrimaryLang;
- end;
- function PRIMARYLANGID(LangId: WORD): WORD;
- begin
- Result := LangId and $3FF;
- end;
- function SUBLANGID(LangId: WORD): WORD;
- begin
- Result := LangId shr 10;
- end;
- function MAKELCID(LangId, SortId: WORD): DWORD;
- begin
- Result := (DWORD(SortId) shl 16) or DWORD(LangId);
- end;
- function MAKESORTLCID(LangId, SortId, SortVersion: WORD): DWORD;
- begin
- Result := MAKELCID(LangId, SortId) or (SortVersion shl 20);
- end;
- function LANGIDFROMLCID(LocaleId: LCID): WORD;
- begin
- Result := WORD(LocaleId);
- end;
- function SORTIDFROMLCID(LocaleId: LCID): WORD;
- begin
- Result := WORD((DWORD(LocaleId) shr 16) and $F);
- end;
- function SORTVERSIONFROMLCID(LocaleId: LCID): WORD;
- begin
- Result := WORD((DWORD(LocaleId) shr 20) and $F);
- end;
- function LANG_SYSTEM_DEFAULT: WORD;
- begin
- Result := MAKELANGID(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT);
- end;
- function LANG_USER_DEFAULT: WORD;
- begin
- Result := MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT);
- end;
- function LOCALE_SYSTEM_DEFAULT: DWORD;
- begin
- Result := MAKELCID(LANG_SYSTEM_DEFAULT, SORT_DEFAULT);
- end;
- function LOCALE_USER_DEFAULT: DWORD;
- begin
- Result := MAKELCID(LANG_USER_DEFAULT, SORT_DEFAULT);
- end;
- function LOCALE_NEUTRAL: DWORD;
- begin
- Result := MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), SORT_DEFAULT);
- end;
- function LOCALE_INVARIANT: DWORD;
- begin
- Result := MAKELCID(MAKELANGID(LANG_INVARIANT, SUBLANG_NEUTRAL), SORT_DEFAULT);
- end;
- function IsReparseTagMicrosoft(Tag: ULONG): Boolean;
- begin
- Result := (Tag and ULONG($80000000)) <> 0;
- end;
- function IsReparseTagHighLatency(Tag: ULONG): Boolean;
- begin
- Result := (Tag and ULONG($40000000)) <> 0;
- end;
- function IsReparseTagNameSurrogate(Tag: ULONG): Boolean;
- begin
- Result := (Tag and ULONG($20000000)) <> 0;
- end;
- // IMAGE_FIRST_SECTION by Nico Bendlin - supplied by Markus Fuchs
- function FieldOffset(const Struc; const Field): Cardinal;
- begin
- Result := Cardinal(@Field) - Cardinal(@Struc);
- end;
- function IMAGE_FIRST_SECTION(NtHeader: PImageNtHeaders): PImageSectionHeader;
- begin
- Result := PImageSectionHeader(Cardinal(NtHeader) +
- FieldOffset(NtHeader^, NtHeader^.OptionalHeader) +
- NtHeader^.FileHeader.SizeOfOptionalHeader);
- end;
- function BTYPE(x: DWORD): DWORD;
- begin
- Result := x and N_BTMASK;
- end;
- function ISPTR(x: DWORD): Boolean;
- begin
- Result := (x and N_TMASK) = (IMAGE_SYM_DTYPE_POINTER shl N_BTSHFT);
- end;
- function ISFCN(x: DWORD): Boolean;
- begin
- Result := (x and N_TMASK) = (IMAGE_SYM_DTYPE_FUNCTION shl N_BTSHFT);
- end;
- function ISARY(x: DWORD): Boolean;
- begin
- Result := (x and N_TMASK) = (IMAGE_SYM_DTYPE_ARRAY shl N_BTSHFT);
- end;
- function ISTAG(x: DWORD): Boolean;
- begin
- Result := (x = IMAGE_SYM_CLASS_STRUCT_TAG) or (x = IMAGE_SYM_CLASS_UNION_TAG) or
- (x = IMAGE_SYM_CLASS_ENUM_TAG);
- end;
- function IMAGE_ORDINAL64(Ordinal: ULONGLONG): ULONGLONG;
- begin
- Result := (Ordinal and $ffff);
- end;
- function IMAGE_ORDINAL32(Ordinal: DWORD): DWORD;
- begin
- Result := (Ordinal and $ffff);
- end;
- function IMAGE_ORDINAL(Ordinal: DWORD): DWORD;
- begin
- Result := (Ordinal and $ffff);
- end;
- function IMAGE_SNAP_BY_ORDINAL64(Ordinal: ULONGLONG): Boolean;
- begin
- Result := ((Ordinal and IMAGE_ORDINAL_FLAG64) <> 0);
- end;
- function IMAGE_SNAP_BY_ORDINAL32(Ordinal: DWORD): Boolean;
- begin
- Result := ((Ordinal and IMAGE_ORDINAL_FLAG32) <> 0);
- end;
- function IMAGE_SNAP_BY_ORDINAL(Ordinal: DWORD): Boolean;
- begin
- Result := ((Ordinal and IMAGE_ORDINAL_FLAG32) <> 0);
- end;
- function HEAP_MAKE_TAG_FLAGS(b, o: DWORD): DWORD;
- begin
- Result := b + (o shl 18);
- end;
- procedure VER_SET_CONDITION(var Mask: DWORDLONG; TypeBitmask, ConditionMask: ULONG);
- begin
- Mask := VerSetConditionMask(Mask, TypeBitmask, ConditionMask);
- end;
- {$IFDEF DYNAMIC_LINK}
- var
- _RtlCaptureContext: Pointer;
- procedure RtlCaptureContext;
- begin
- GetProcedureAddress(_RtlCaptureContext, ntdll, 'RtlCaptureContext');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_RtlCaptureContext]
- end;
- end;
- var
- _RtlCompareMemory: Pointer;
- function RtlCompareMemory;
- begin
- GetProcedureAddress(_RtlCompareMemory, ntdll, 'RtlCompareMemory');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_RtlCompareMemory]
- end;
- end;
- var
- _VerSetConditionMask: Pointer;
- function VerSetConditionMask;
- begin
- GetProcedureAddress(_VerSetConditionMask, kernel32, 'VerSetConditionMask');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_VerSetConditionMask]
- end;
- end;
- var
- _RtlInitializeSListHead: Pointer;
- procedure RtlInitializeSListHead;
- begin
- GetProcedureAddress(_RtlInitializeSListHead, 'ntdll.dll', 'RtlInitializeSListHead');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_RtlInitializeSListHead]
- end;
- end;
- var
- _RtlFirstEntrySList: Pointer;
- function RtlFirstEntrySList;
- begin
- GetProcedureAddress(_RtlFirstEntrySList, 'ntdll.dll', 'RtlFirstEntrySList');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_RtlFirstEntrySList]
- end;
- end;
- var
- _RtlInterlockedPopEntrySList: Pointer;
- function RtlInterlockedPopEntrySList;
- begin
- GetProcedureAddress(_RtlInterlockedPopEntrySList, 'ntdll.dll', 'RtlInterlockedPopEntrySList');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_RtlInterlockedPopEntrySList]
- end;
- end;
- var
- _RtlInterlockedPushEntrySList: Pointer;
- function RtlInterlockedPushEntrySList;
- begin
- GetProcedureAddress(_RtlInterlockedPushEntrySList, 'ntdll.dll', 'RtlInterlockedPushEntrySList');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_RtlInterlockedPushEntrySList]
- end;
- end;
- var
- _RtlInterlockedFlushSList: Pointer;
- function RtlInterlockedFlushSList;
- begin
- GetProcedureAddress(_RtlInterlockedFlushSList, 'ntdll.dll', 'RtlInterlockedFlushSList');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_RtlInterlockedFlushSList]
- end;
- end;
- var
- _RtlQueryDepthSList: Pointer;
- function RtlQueryDepthSList;
- begin
- GetProcedureAddress(_RtlQueryDepthSList, 'ntdll.dll', 'RtlQueryDepthSList');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_RtlQueryDepthSList]
- end;
- end;
- {$ELSE}
- procedure RtlCaptureContext; external ntdll name 'RtlCaptureContext';
- function RtlCompareMemory; external ntdll name 'RtlCompareMemory';
- function VerSetConditionMask; external kernel32 name 'VerSetConditionMask';
- procedure RtlInitializeSListHead; external 'ntdll.dll' name 'RtlInitializeSListHead';
- function RtlFirstEntrySList; external 'ntdll.dll' name 'RtlFirstEntrySList';
- function RtlInterlockedPopEntrySList; external 'ntdll.dll' name 'RtlInterlockedPopEntrySList';
- function RtlInterlockedPushEntrySList; external 'ntdll.dll' name 'RtlInterlockedPushEntrySList';
- function RtlInterlockedFlushSList; external 'ntdll.dll' name 'RtlInterlockedFlushSList';
- function RtlQueryDepthSList; external 'ntdll.dll' name 'RtlQueryDepthSList';
- {$ENDIF DYNAMIC_LINK}
- end.
|