winnt.h 377 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355
  1. /**
  2. * This file is part of the mingw-w64 runtime package.
  3. * No warranty is given; refer to the file DISCLAIMER within this package.
  4. */
  5. #ifndef _WINNT_
  6. #define _WINNT_
  7. #include <_mingw_unicode.h>
  8. #ifdef __cplusplus
  9. extern "C" {
  10. #endif
  11. #include <_mingw.h>
  12. #include <ctype.h>
  13. #include <excpt.h>
  14. #include <winapifamily.h>
  15. #include <apiset.h>
  16. #define ANYSIZE_ARRAY 1
  17. #include <specstrings.h>
  18. #ifndef __WIDL__
  19. #define __INTRINSIC_GROUP_WINNT /* only define the intrinsics in this file */
  20. #include <psdk_inc/intrin-impl.h>
  21. #endif
  22. #if defined(__x86_64) && \
  23. !(defined(_X86_) || defined(__i386__) || defined(_IA64_) || defined (__arm__) || defined(__aarch64__))
  24. #if !defined(_AMD64_)
  25. #define _AMD64_
  26. #endif
  27. #endif /* _AMD64_ */
  28. #if defined(__arm__) && \
  29. !(defined(_X86_) || defined(__x86_64) || defined(_AMD64_) || defined (__ia64__) || defined(__aarch64__))
  30. #if !defined(_ARM_)
  31. #define _ARM_
  32. #endif
  33. #endif /* _ARM_ */
  34. #if defined(__aarch64__) && \
  35. !(defined(_X86_) || defined(__x86_64) || defined(_AMD64_) || defined (__ia64__) || defined(__arm__))
  36. #if !defined(_ARM64_)
  37. #define _ARM64_
  38. #endif
  39. #endif /* _ARM64_ */
  40. #if defined(__ia64__) && \
  41. !(defined(_X86_) || defined(__x86_64) || defined(_AMD64_) || defined (__arm__) || defined(__aarch64__))
  42. #if !defined(_IA64_)
  43. #define _IA64_
  44. #endif
  45. #endif /* _IA64_ */
  46. #include <sdkddkver.h>
  47. #ifndef DUMMYUNIONNAME
  48. #if defined (NONAMELESSUNION)
  49. #define DUMMYUNIONNAME u
  50. #define DUMMYUNIONNAME2 u2
  51. #define DUMMYUNIONNAME3 u3
  52. #define DUMMYUNIONNAME4 u4
  53. #define DUMMYUNIONNAME5 u5
  54. #define DUMMYUNIONNAME6 u6
  55. #define DUMMYUNIONNAME7 u7
  56. #define DUMMYUNIONNAME8 u8
  57. #define DUMMYUNIONNAME9 u9
  58. #else
  59. #define DUMMYUNIONNAME
  60. #define DUMMYUNIONNAME2
  61. #define DUMMYUNIONNAME3
  62. #define DUMMYUNIONNAME4
  63. #define DUMMYUNIONNAME5
  64. #define DUMMYUNIONNAME6
  65. #define DUMMYUNIONNAME7
  66. #define DUMMYUNIONNAME8
  67. #define DUMMYUNIONNAME9
  68. #endif
  69. #endif
  70. #ifndef DUMMYSTRUCTNAME
  71. #if defined (NONAMELESSUNION)
  72. #define DUMMYSTRUCTNAME s
  73. #define DUMMYSTRUCTNAME2 s2
  74. #define DUMMYSTRUCTNAME3 s3
  75. #define DUMMYSTRUCTNAME4 s4
  76. #define DUMMYSTRUCTNAME5 s5
  77. #else
  78. #define DUMMYSTRUCTNAME
  79. #define DUMMYSTRUCTNAME2
  80. #define DUMMYSTRUCTNAME3
  81. #define DUMMYSTRUCTNAME4
  82. #define DUMMYSTRUCTNAME5
  83. #endif
  84. #endif
  85. #define RESTRICTED_POINTER
  86. #undef UNALIGNED /* avoid redefinition warnings vs _mingw.h */
  87. #undef UNALIGNED64
  88. #if defined (__ia64__) || defined (__x86_64__) || defined (__arm__) || defined(__aarch64__)
  89. #define ALIGNMENT_MACHINE
  90. #define UNALIGNED __unaligned
  91. #if defined (_WIN64)
  92. #define UNALIGNED64 __unaligned
  93. #else
  94. #define UNALIGNED64
  95. #endif
  96. #else
  97. #undef ALIGNMENT_MACHINE
  98. #define UNALIGNED
  99. #define UNALIGNED64
  100. #endif
  101. #ifdef _WIN64
  102. #define MAX_NATURAL_ALIGNMENT sizeof(ULONGLONG)
  103. #define MEMORY_ALLOCATION_ALIGNMENT 16
  104. #else
  105. #define MAX_NATURAL_ALIGNMENT sizeof(DWORD)
  106. #define MEMORY_ALLOCATION_ALIGNMENT 8
  107. #endif
  108. #ifdef __cplusplus
  109. #define TYPE_ALIGNMENT(t) __alignof__ (t)
  110. #else
  111. #define TYPE_ALIGNMENT(t) FIELD_OFFSET(struct { char x; t test; }, test)
  112. #endif
  113. #if defined (__x86_64__) || defined (__i386__)
  114. #define PROBE_ALIGNMENT(_s) TYPE_ALIGNMENT (DWORD)
  115. #elif defined (__ia64__) || defined (__arm__) || defined(__aarch64__)
  116. #define PROBE_ALIGNMENT(_s) (TYPE_ALIGNMENT (_s) > TYPE_ALIGNMENT (DWORD) ? TYPE_ALIGNMENT (_s) : TYPE_ALIGNMENT (DWORD))
  117. #elif !defined (RC_INVOKED) && !defined (__WIDL__)
  118. #error No supported target architecture.
  119. #endif
  120. #ifdef _WIN64
  121. #define PROBE_ALIGNMENT32(_s) TYPE_ALIGNMENT (DWORD)
  122. #endif
  123. #if defined(_MSC_VER)
  124. # define C_ASSERT(e) typedef char __C_ASSERT__[(e)?1:-1]
  125. #else
  126. # define C_ASSERT(e) extern void __C_ASSERT__(int [(e)?1:-1])
  127. #endif
  128. #include <basetsd.h>
  129. #ifndef DECLSPEC_IMPORT
  130. #if (defined (__i386__) || defined (__ia64__) || defined (__x86_64__) || defined (__arm__) || defined(__aarch64__)) && !defined (__WIDL__)
  131. #define DECLSPEC_IMPORT __declspec (dllimport)
  132. #else
  133. #define DECLSPEC_IMPORT
  134. #endif
  135. #endif
  136. #ifndef DECLSPEC_NORETURN
  137. #ifndef __WIDL__
  138. #define DECLSPEC_NORETURN __declspec (noreturn)
  139. #else
  140. #define DECLSPEC_NORETURN
  141. #endif
  142. #endif
  143. #ifndef DECLSPEC_NOTHROW
  144. #ifndef __WIDL__
  145. #define DECLSPEC_NOTHROW __declspec (nothrow)
  146. #else
  147. #define DECLSPEC_NOTHROW
  148. #endif
  149. #endif
  150. #ifndef DECLSPEC_ALIGN
  151. #ifndef __WIDL__
  152. #if defined(_MSC_VER) && (_MSC_VER >= 1300) && !defined(MIDL_PASS)
  153. #define DECLSPEC_ALIGN(x) __declspec(align(x))
  154. #elif defined(__GNUC__)
  155. #define DECLSPEC_ALIGN(x) __attribute__ ((__aligned__ (x)))
  156. #else
  157. #define DECLSPEC_ALIGN(x) /*__declspec (align (x))*/
  158. #endif
  159. #else
  160. #define DECLSPEC_ALIGN(x)
  161. #endif
  162. #endif /* DECLSPEC_ALIGN */
  163. #ifndef X86_CACHE_ALIGNMENT_SIZE
  164. #define X86_CACHE_ALIGNMENT_SIZE 64
  165. #endif
  166. #ifndef ARM_CACHE_ALIGNMENT_SIZE
  167. #define ARM_CACHE_ALIGNMENT_SIZE 128
  168. #endif
  169. #ifndef SYSTEM_CACHE_ALIGNMENT_SIZE
  170. #if defined(__x86_64__) || defined(__i386__)
  171. #define SYSTEM_CACHE_ALIGNMENT_SIZE X86_CACHE_ALIGNMENT_SIZE
  172. #elif defined(__aarch64__) || defined(__arm__)
  173. #define SYSTEM_CACHE_ALIGNMENT_SIZE ARM_CACHE_ALIGNMENT_SIZE
  174. #else
  175. #error Must define a target architecture.
  176. #endif
  177. #endif
  178. #ifndef DECLSPEC_CACHEALIGN
  179. #define DECLSPEC_CACHEALIGN DECLSPEC_ALIGN(SYSTEM_CACHE_ALIGNMENT_SIZE)
  180. #endif
  181. #ifndef DECLSPEC_UUID
  182. #define DECLSPEC_UUID(x)
  183. #endif
  184. #ifndef DECLSPEC_NOVTABLE
  185. #define DECLSPEC_NOVTABLE
  186. #endif
  187. #ifndef DECLSPEC_SELECTANY
  188. #define DECLSPEC_SELECTANY __declspec(selectany)
  189. #endif
  190. #ifndef NOP_FUNCTION
  191. #if (_MSC_VER >= 1210)
  192. #define NOP_FUNCTION __noop
  193. #else
  194. #define NOP_FUNCTION (void)0
  195. #endif
  196. #endif
  197. #ifndef DECLSPEC_ADDRSAFE
  198. #define DECLSPEC_ADDRSAFE
  199. #endif
  200. #ifndef DECLSPEC_NOINLINE
  201. #if (_MSC_VER >= 1300)
  202. #define DECLSPEC_NOINLINE __declspec(noinline)
  203. #elif defined(__GNUC__)
  204. #define DECLSPEC_NOINLINE __attribute__((noinline))
  205. #else
  206. #define DECLSPEC_NOINLINE
  207. #endif
  208. #endif /* DECLSPEC_NOINLINE */
  209. #ifndef FORCEINLINE
  210. #if !defined(_MSC_VER) || (_MSC_VER >=1200)
  211. #define FORCEINLINE __forceinline
  212. #else
  213. #define FORCEINLINE __inline
  214. #endif
  215. #endif /* FORCEINLINE */
  216. #ifndef DECLSPEC_DEPRECATED
  217. #if !defined (__WIDL__)
  218. #define DECLSPEC_DEPRECATED __declspec(deprecated)
  219. #define DEPRECATE_SUPPORTED
  220. #else
  221. #define DECLSPEC_DEPRECATED
  222. #undef DEPRECATE_SUPPORTED
  223. #endif
  224. #endif
  225. #define DECLSPEC_DEPRECATED_DDK
  226. #define PRAGMA_DEPRECATED_DDK 0
  227. typedef void *PVOID;
  228. typedef void *PVOID64;
  229. #ifndef FASTCALL
  230. #if defined (__i386__) && !defined (__WIDL__)
  231. #define FASTCALL __fastcall
  232. #else
  233. #define FASTCALL
  234. #endif
  235. #endif /* FASTCALL */
  236. #if defined(_ARM_) || defined(_ARM64_)
  237. #define NTAPI
  238. #else
  239. #define NTAPI __stdcall
  240. #endif
  241. #define NTAPI_INLINE NTAPI
  242. #if !defined(_NTSYSTEM_)
  243. #define NTSYSAPI DECLSPEC_IMPORT
  244. #define NTSYSCALLAPI DECLSPEC_IMPORT
  245. #else
  246. #define NTSYSAPI
  247. #define NTSYSCALLAPI DECLSPEC_ADDRSAFE
  248. #endif
  249. #ifndef VOID
  250. #define VOID void
  251. typedef char CHAR;
  252. typedef short SHORT;
  253. typedef __LONG32 LONG;
  254. #if !defined (__WIDL__)
  255. typedef int INT;
  256. #endif
  257. #endif
  258. #ifndef __WCHAR_DEFINED
  259. #define __WCHAR_DEFINED
  260. typedef wchar_t WCHAR;
  261. #endif
  262. typedef WCHAR *PWCHAR,*LPWCH,*PWCH;
  263. typedef CONST WCHAR *LPCWCH,*PCWCH;
  264. typedef WCHAR *NWPSTR,*LPWSTR,*PWSTR;
  265. typedef PWSTR *PZPWSTR;
  266. typedef CONST PWSTR *PCZPWSTR;
  267. typedef WCHAR UNALIGNED *LPUWSTR,*PUWSTR;
  268. typedef CONST WCHAR *LPCWSTR,*PCWSTR;
  269. typedef PCWSTR *PZPCWSTR;
  270. typedef CONST WCHAR UNALIGNED *LPCUWSTR,*PCUWSTR;
  271. typedef WCHAR *PZZWSTR;
  272. typedef CONST WCHAR *PCZZWSTR;
  273. typedef WCHAR UNALIGNED *PUZZWSTR;
  274. typedef CONST WCHAR UNALIGNED *PCUZZWSTR;
  275. typedef WCHAR *PNZWCH;
  276. typedef CONST WCHAR *PCNZWCH;
  277. typedef WCHAR UNALIGNED *PUNZWCH;
  278. typedef CONST WCHAR UNALIGNED *PCUNZWCH;
  279. #if _WIN32_WINNT >= 0x0600 || (defined (__cplusplus) && defined (WINDOWS_ENABLE_CPLUSPLUS))
  280. typedef CONST WCHAR *LPCWCHAR,*PCWCHAR;
  281. typedef CONST WCHAR UNALIGNED *LPCUWCHAR,*PCUWCHAR;
  282. typedef unsigned long UCSCHAR;
  283. #define UCSCHAR_INVALID_CHARACTER (0xffffffff)
  284. #define MIN_UCSCHAR (0)
  285. #define MAX_UCSCHAR (0x0010ffff)
  286. typedef UCSCHAR *PUCSCHAR;
  287. typedef const UCSCHAR *PCUCSCHAR;
  288. typedef UCSCHAR *PUCSSTR;
  289. typedef UCSCHAR UNALIGNED *PUUCSSTR;
  290. typedef const UCSCHAR *PCUCSSTR;
  291. typedef const UCSCHAR UNALIGNED *PCUUCSSTR;
  292. typedef UCSCHAR UNALIGNED *PUUCSCHAR;
  293. typedef const UCSCHAR UNALIGNED *PCUUCSCHAR;
  294. #endif
  295. typedef CHAR *PCHAR,*LPCH,*PCH;
  296. typedef CONST CHAR *LPCCH,*PCCH;
  297. typedef CHAR *NPSTR,*LPSTR,*PSTR;
  298. typedef PSTR *PZPSTR;
  299. typedef CONST PSTR *PCZPSTR;
  300. typedef CONST CHAR *LPCSTR,*PCSTR;
  301. typedef PCSTR *PZPCSTR;
  302. typedef CHAR *PZZSTR;
  303. typedef CONST CHAR *PCZZSTR;
  304. typedef CHAR *PNZCH;
  305. typedef CONST CHAR *PCNZCH;
  306. #ifdef UNICODE
  307. #ifndef _TCHAR_DEFINED
  308. #define _TCHAR_DEFINED
  309. typedef WCHAR TCHAR, *PTCHAR;
  310. typedef WCHAR TBYTE, *PTBYTE;
  311. #endif
  312. typedef LPWSTR LPTCH,PTCH;
  313. typedef LPWSTR PTSTR,LPTSTR;
  314. typedef LPCWSTR PCTSTR,LPCTSTR;
  315. typedef LPUWSTR PUTSTR,LPUTSTR;
  316. typedef LPCUWSTR PCUTSTR,LPCUTSTR;
  317. typedef LPWSTR LP;
  318. typedef PZZWSTR PZZTSTR;
  319. typedef PCZZWSTR PCZZTSTR;
  320. typedef PUZZWSTR PUZZTSTR;
  321. typedef PCUZZWSTR PCUZZTSTR;
  322. typedef PZPWSTR PZPTSTR;
  323. typedef PNZWCH PNZTCH;
  324. typedef PCNZWCH PCNZTCH;
  325. typedef PUNZWCH PUNZTCH;
  326. typedef PCUNZWCH PCUNZTCH;
  327. #define __TEXT(quote) L##quote
  328. #else
  329. #ifndef _TCHAR_DEFINED
  330. #define _TCHAR_DEFINED
  331. typedef char TCHAR, *PTCHAR;
  332. typedef unsigned char TBYTE, *PTBYTE;
  333. #endif
  334. typedef LPSTR LPTCH,PTCH;
  335. typedef LPCCH LPCTCH,PCTCH;
  336. typedef LPSTR PTSTR,LPTSTR,PUTSTR,LPUTSTR;
  337. typedef LPCSTR PCTSTR,LPCTSTR,PCUTSTR,LPCUTSTR;
  338. typedef PZZSTR PZZTSTR, PUZZTSTR;
  339. typedef PCZZSTR PCZZTSTR, PCUZZTSTR;
  340. typedef PZPSTR PZPTSTR;
  341. typedef PNZCH PNZTCH, PUNZTCH;
  342. typedef PCNZCH PCNZTCH, PCUNZTCH;
  343. #define __TEXT(quote) quote
  344. #endif
  345. #define TEXT(quote) __TEXT(quote)
  346. typedef SHORT *PSHORT;
  347. typedef LONG *PLONG;
  348. #ifndef ___GROUP_AFFINITY_DEFINED
  349. #define ___GROUP_AFFINITY_DEFINED
  350. typedef struct _GROUP_AFFINITY {
  351. KAFFINITY Mask;
  352. WORD Group;
  353. WORD Reserved[3];
  354. } GROUP_AFFINITY, *PGROUP_AFFINITY;
  355. #endif /* !___GROUP_AFFINITY_DEFINED */
  356. #ifdef STRICT
  357. typedef void *HANDLE;
  358. #define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name
  359. #else
  360. typedef PVOID HANDLE;
  361. #define DECLARE_HANDLE(name) typedef HANDLE name
  362. #endif
  363. typedef HANDLE *PHANDLE;
  364. typedef BYTE FCHAR;
  365. typedef WORD FSHORT;
  366. typedef DWORD FLONG;
  367. #ifndef _HRESULT_DEFINED
  368. #define _HRESULT_DEFINED
  369. typedef LONG HRESULT;
  370. #endif
  371. #ifdef __cplusplus
  372. #define EXTERN_C extern "C"
  373. #else
  374. #define EXTERN_C extern
  375. #endif
  376. /* Keep in sync with basetyps.h header. */
  377. #ifndef STDMETHODCALLTYPE
  378. #define STDMETHODCALLTYPE WINAPI
  379. #define STDMETHODVCALLTYPE __cdecl
  380. #define STDAPICALLTYPE WINAPI
  381. #define STDAPIVCALLTYPE __cdecl
  382. #define STDAPI EXTERN_C HRESULT WINAPI
  383. #define STDAPI_(type) EXTERN_C type WINAPI
  384. #define STDMETHODIMP HRESULT WINAPI
  385. #define STDMETHODIMP_(type) type WINAPI
  386. #define STDAPIV EXTERN_C HRESULT STDAPIVCALLTYPE
  387. #define STDAPIV_(type) EXTERN_C type STDAPIVCALLTYPE
  388. #define STDMETHODIMPV HRESULT STDMETHODVCALLTYPE
  389. #define STDMETHODIMPV_(type) type STDMETHODVCALLTYPE
  390. #endif
  391. #define IFACEMETHODIMP STDMETHODIMP
  392. #define IFACEMETHODIMP_(type) STDMETHODIMP_(type)
  393. #define IFACEMETHODIMPV STDMETHODIMPV
  394. #define IFACEMETHODIMPV_(type) STDMETHODIMPV_(type)
  395. typedef char CCHAR;
  396. #ifndef _LCID_DEFINED
  397. #define _LCID_DEFINED
  398. typedef DWORD LCID;
  399. #endif
  400. typedef PDWORD PLCID;
  401. #ifndef _LANGID_DEFINED
  402. #define _LANGID_DEFINED
  403. typedef WORD LANGID;
  404. #endif
  405. #ifndef __COMPARTMENT_ID_DEFINED__
  406. #define __COMPARTMENT_ID_DEFINED__
  407. typedef enum {
  408. UNSPECIFIED_COMPARTMENT_ID = 0,
  409. DEFAULT_COMPARTMENT_ID
  410. } COMPARTMENT_ID,*PCOMPARTMENT_ID;
  411. #endif
  412. #define APPLICATION_ERROR_MASK 0x20000000
  413. #define ERROR_SEVERITY_SUCCESS 0x00000000
  414. #define ERROR_SEVERITY_INFORMATIONAL 0x40000000
  415. #define ERROR_SEVERITY_WARNING 0x80000000
  416. #define ERROR_SEVERITY_ERROR 0xC0000000
  417. #if defined (__ia64__) && !defined (__WIDL__)
  418. __declspec(align(16))
  419. #endif
  420. typedef struct _FLOAT128 {
  421. __MINGW_EXTENSION __int64 LowPart;
  422. __MINGW_EXTENSION __int64 HighPart;
  423. } FLOAT128;
  424. typedef FLOAT128 *PFLOAT128;
  425. #define _ULONGLONG_
  426. __MINGW_EXTENSION typedef __int64 LONGLONG;
  427. __MINGW_EXTENSION typedef unsigned __int64 ULONGLONG;
  428. #define MAXLONGLONG (0x7fffffffffffffffll)
  429. typedef LONGLONG *PLONGLONG;
  430. typedef ULONGLONG *PULONGLONG;
  431. typedef LONGLONG USN;
  432. #ifndef _LARGE_INTEGER_DEFINED
  433. #define _LARGE_INTEGER_DEFINED
  434. #if defined (__WIDL__)
  435. typedef struct _LARGE_INTEGER {
  436. #else
  437. typedef union _LARGE_INTEGER {
  438. __C89_NAMELESS struct {
  439. DWORD LowPart;
  440. LONG HighPart;
  441. } DUMMYSTRUCTNAME;
  442. struct {
  443. DWORD LowPart;
  444. LONG HighPart;
  445. } u;
  446. #endif
  447. LONGLONG QuadPart;
  448. } LARGE_INTEGER;
  449. typedef LARGE_INTEGER *PLARGE_INTEGER;
  450. #if defined (__WIDL__)
  451. typedef struct _ULARGE_INTEGER {
  452. #else
  453. typedef union _ULARGE_INTEGER {
  454. __C89_NAMELESS struct {
  455. DWORD LowPart;
  456. DWORD HighPart;
  457. } DUMMYSTRUCTNAME;
  458. struct {
  459. DWORD LowPart;
  460. DWORD HighPart;
  461. } u;
  462. #endif
  463. ULONGLONG QuadPart;
  464. } ULARGE_INTEGER;
  465. typedef ULARGE_INTEGER *PULARGE_INTEGER;
  466. typedef LONG_PTR RTL_REFERENCE_COUNT, *PRTL_REFERENCE_COUNT;
  467. typedef LONG RTL_REFERENCE_COUNT32, *PRTL_REFERENCE_COUNT32;
  468. typedef struct _LUID {
  469. DWORD LowPart;
  470. LONG HighPart;
  471. } LUID,*PLUID;
  472. #endif /* _LARGE_INTEGER_DEFINED */
  473. #define _DWORDLONG_
  474. typedef ULONGLONG DWORDLONG;
  475. typedef DWORDLONG *PDWORDLONG;
  476. #define Int32x32To64(a, b) (((LONGLONG) ((LONG) (a))) * ((LONGLONG) ((LONG) (b))))
  477. #define UInt32x32To64(a, b) (((ULONGLONG) ((unsigned int) (a))) *((ULONGLONG) ((unsigned int) (b))))
  478. #define Int64ShllMod32(a, b) (((ULONGLONG) (a)) << (b))
  479. #define Int64ShraMod32(a, b) (((LONGLONG) (a)) >> (b))
  480. #define Int64ShrlMod32(a, b) (((ULONGLONG) (a)) >> (b))
  481. #ifdef __cplusplus
  482. extern "C" {
  483. #endif
  484. #ifdef __x86_64
  485. #define RotateLeft8 _rotl8
  486. #define RotateLeft16 _rotl16
  487. #define RotateRight8 _rotr8
  488. #define RotateRight16 _rotr16
  489. unsigned char __cdecl _rotl8(unsigned char Value,unsigned char Shift);
  490. unsigned short __cdecl _rotl16(unsigned short Value,unsigned char Shift);
  491. unsigned char __cdecl _rotr8(unsigned char Value,unsigned char Shift);
  492. unsigned short __cdecl _rotr16(unsigned short Value,unsigned char Shift);
  493. #endif /* __x86_64 */
  494. #define RotateLeft32 _rotl
  495. #define RotateLeft64 _rotl64
  496. #define RotateRight32 _rotr
  497. #define RotateRight64 _rotr64
  498. #pragma push_macro ("_rotl")
  499. #pragma push_macro ("_rotr")
  500. #undef _rotl
  501. #undef _rotr
  502. unsigned int __cdecl _rotl(unsigned int Value,int Shift);
  503. unsigned int __cdecl _rotr(unsigned int Value,int Shift);
  504. #pragma pop_macro ("_rotr")
  505. #pragma pop_macro ("_rotl")
  506. #pragma push_macro ("_rotr64")
  507. #pragma push_macro ("_rotl64")
  508. #undef _rotl64
  509. #undef _rotr64
  510. __MINGW_EXTENSION unsigned __int64 __cdecl _rotl64(unsigned __int64 Value,int Shift);
  511. __MINGW_EXTENSION unsigned __int64 __cdecl _rotr64(unsigned __int64 Value,int Shift);
  512. #pragma pop_macro ("_rotl64")
  513. #pragma pop_macro ("_rotr64")
  514. #ifdef __cplusplus
  515. }
  516. #endif
  517. #define ANSI_NULL ((CHAR)0)
  518. #define UNICODE_NULL ((WCHAR)0)
  519. #define UNICODE_STRING_MAX_BYTES ((WORD) 65534)
  520. #define UNICODE_STRING_MAX_CHARS (32767)
  521. #ifndef _BOOLEAN_
  522. #define _BOOLEAN_
  523. typedef BYTE BOOLEAN;
  524. #endif
  525. typedef BOOLEAN *PBOOLEAN;
  526. #ifndef _LIST_ENTRY_DEFINED
  527. #define _LIST_ENTRY_DEFINED
  528. typedef struct _LIST_ENTRY {
  529. struct _LIST_ENTRY *Flink;
  530. struct _LIST_ENTRY *Blink;
  531. } LIST_ENTRY,*PLIST_ENTRY,*RESTRICTED_POINTER PRLIST_ENTRY;
  532. typedef struct _SINGLE_LIST_ENTRY {
  533. struct _SINGLE_LIST_ENTRY *Next;
  534. } SINGLE_LIST_ENTRY,*PSINGLE_LIST_ENTRY;
  535. typedef struct LIST_ENTRY32 {
  536. DWORD Flink;
  537. DWORD Blink;
  538. } LIST_ENTRY32;
  539. typedef LIST_ENTRY32 *PLIST_ENTRY32;
  540. typedef struct LIST_ENTRY64 {
  541. ULONGLONG Flink;
  542. ULONGLONG Blink;
  543. } LIST_ENTRY64;
  544. typedef LIST_ENTRY64 *PLIST_ENTRY64;
  545. #endif /* _LIST_ENTRY_DEFINED */
  546. #include <guiddef.h>
  547. #ifndef __OBJECTID_DEFINED
  548. #define __OBJECTID_DEFINED
  549. typedef struct _OBJECTID {
  550. GUID Lineage;
  551. DWORD Uniquifier;
  552. } OBJECTID;
  553. #endif
  554. #define MINCHAR 0x80
  555. #define MAXCHAR 0x7f
  556. #define MINSHORT 0x8000
  557. #define MAXSHORT 0x7fff
  558. #define MINLONG 0x80000000
  559. #define MAXLONG 0x7fffffff
  560. #define MAXBYTE 0xff
  561. #define MAXWORD 0xffff
  562. #define MAXDWORD 0xffffffff
  563. #define FIELD_OFFSET(Type, Field) ((LONG) __builtin_offsetof(Type, Field))
  564. #define RTL_FIELD_SIZE(type,field) (sizeof(((type *)0)->field))
  565. #define RTL_SIZEOF_THROUGH_FIELD(type,field) (FIELD_OFFSET(type,field) + RTL_FIELD_SIZE(type,field))
  566. #define RTL_CONTAINS_FIELD(Struct,Size,Field) ((((PCHAR)(&(Struct)->Field)) + sizeof((Struct)->Field)) <= (((PCHAR)(Struct))+(Size)))
  567. #define RTL_NUMBER_OF_V1(A) (sizeof(A)/sizeof((A)[0]))
  568. #define RTL_NUMBER_OF_V2(A) RTL_NUMBER_OF_V1(A)
  569. #ifdef ENABLE_RTL_NUMBER_OF_V2
  570. #define RTL_NUMBER_OF(A) RTL_NUMBER_OF_V2(A)
  571. #else
  572. #define RTL_NUMBER_OF(A) RTL_NUMBER_OF_V1(A)
  573. #endif
  574. #define ARRAYSIZE(A) RTL_NUMBER_OF_V2(A)
  575. #define _ARRAYSIZE(A) RTL_NUMBER_OF_V1(A)
  576. #define RTL_FIELD_TYPE(type,field) (((type*)0)->field)
  577. #define RTL_NUMBER_OF_FIELD(type,field) (RTL_NUMBER_OF(RTL_FIELD_TYPE(type,field)))
  578. #define RTL_PADDING_BETWEEN_FIELDS(T,F1,F2) ((FIELD_OFFSET(T,F2) > FIELD_OFFSET(T,F1)) ? (FIELD_OFFSET(T,F2) - FIELD_OFFSET(T,F1) - RTL_FIELD_SIZE(T,F1)) : (FIELD_OFFSET(T,F1) - FIELD_OFFSET(T,F2) - RTL_FIELD_SIZE(T,F2)))
  579. #ifdef __cplusplus
  580. #define RTL_CONST_CAST(type) const_cast<type>
  581. #else
  582. #define RTL_CONST_CAST(type) (type)
  583. #endif
  584. #ifdef __cplusplus
  585. #define DEFINE_ENUM_FLAG_OPERATORS(ENUMTYPE) \
  586. extern "C++" { \
  587. inline ENUMTYPE operator | (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((int)a) | ((int)b)); } \
  588. inline ENUMTYPE &operator |= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((int &)a) |= ((int)b)); } \
  589. inline ENUMTYPE operator & (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((int)a) & ((int)b)); } \
  590. inline ENUMTYPE &operator &= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((int &)a) &= ((int)b)); } \
  591. inline ENUMTYPE operator ~ (ENUMTYPE a) { return ENUMTYPE(~((int)a)); } \
  592. inline ENUMTYPE operator ^ (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((int)a) ^ ((int)b)); } \
  593. inline ENUMTYPE &operator ^= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((int &)a) ^= ((int)b)); } \
  594. }
  595. #else
  596. #define DEFINE_ENUM_FLAG_OPERATORS(ENUMTYPE) /* */
  597. #endif
  598. #define COMPILETIME_OR_2FLAGS(a, b) ((UINT) (a) | (UINT) (b))
  599. #define COMPILETIME_OR_3FLAGS(a, b, c) ((UINT) (a) | (UINT) (b) | (UINT) (c))
  600. #define COMPILETIME_OR_4FLAGS(a, b, c, d) ((UINT) (a) | (UINT) (b) | (UINT) (c) | (UINT) (d))
  601. #define COMPILETIME_OR_5FLAGS(a, b, c, d, e) ((UINT) (a) | (UINT) (b) | (UINT) (c) | (UINT) (d) | (UINT) (e))
  602. #define RTL_BITS_OF(sizeOfArg) (sizeof(sizeOfArg) * 8)
  603. #define RTL_BITS_OF_FIELD(type,field) (RTL_BITS_OF(RTL_FIELD_TYPE(type,field)))
  604. #define CONTAINING_RECORD(address,type,field) ((type *)((PCHAR)(address) - (ULONG_PTR)(&((type *)0)->field)))
  605. typedef EXCEPTION_DISPOSITION NTAPI EXCEPTION_ROUTINE (struct _EXCEPTION_RECORD *ExceptionRecord, PVOID EstablisherFrame, struct _CONTEXT *ContextRecord, PVOID DispatcherContext);
  606. #ifndef __PEXCEPTION_ROUTINE_DEFINED
  607. #define __PEXCEPTION_ROUTINE_DEFINED
  608. typedef EXCEPTION_ROUTINE *PEXCEPTION_ROUTINE;
  609. #endif
  610. #define ENCLAVE_SHORT_ID_LENGTH 16
  611. #define ENCLAVE_LONG_ID_LENGTH 32
  612. #define VER_WORKSTATION_NT 0x40000000
  613. #define VER_SERVER_NT 0x80000000
  614. #define VER_SUITE_SMALLBUSINESS 0x00000001
  615. #define VER_SUITE_ENTERPRISE 0x00000002
  616. #define VER_SUITE_BACKOFFICE 0x00000004
  617. #define VER_SUITE_COMMUNICATIONS 0x00000008
  618. #define VER_SUITE_TERMINAL 0x00000010
  619. #define VER_SUITE_SMALLBUSINESS_RESTRICTED 0x00000020
  620. #define VER_SUITE_EMBEDDEDNT 0x00000040
  621. #define VER_SUITE_DATACENTER 0x00000080
  622. #define VER_SUITE_SINGLEUSERTS 0x00000100
  623. #define VER_SUITE_PERSONAL 0x00000200
  624. #define VER_SUITE_BLADE 0x00000400
  625. #define VER_SUITE_EMBEDDED_RESTRICTED 0x00000800
  626. #define VER_SUITE_SECURITY_APPLIANCE 0x00001000
  627. #define VER_SUITE_STORAGE_SERVER 0x00002000
  628. #define VER_SUITE_COMPUTE_SERVER 0x00004000
  629. #define VER_SUITE_WH_SERVER 0x00008000
  630. #define VER_SUITE_MULTIUSERTS 0x00020000
  631. #define PRODUCT_UNDEFINED 0x0
  632. #define PRODUCT_ULTIMATE 0x1
  633. #define PRODUCT_HOME_BASIC 0x2
  634. #define PRODUCT_HOME_PREMIUM 0x3
  635. #define PRODUCT_ENTERPRISE 0x4
  636. #define PRODUCT_HOME_BASIC_N 0x5
  637. #define PRODUCT_BUSINESS 0x6
  638. #define PRODUCT_STANDARD_SERVER 0x7
  639. #define PRODUCT_DATACENTER_SERVER 0x8
  640. #define PRODUCT_SMALLBUSINESS_SERVER 0x9
  641. #define PRODUCT_ENTERPRISE_SERVER 0xa
  642. #define PRODUCT_STARTER 0xb
  643. #define PRODUCT_DATACENTER_SERVER_CORE 0xc
  644. #define PRODUCT_STANDARD_SERVER_CORE 0xd
  645. #define PRODUCT_ENTERPRISE_SERVER_CORE 0xe
  646. #define PRODUCT_ENTERPRISE_SERVER_IA64 0xf
  647. #define PRODUCT_BUSINESS_N 0x10
  648. #define PRODUCT_WEB_SERVER 0x11
  649. #define PRODUCT_CLUSTER_SERVER 0x12
  650. #define PRODUCT_HOME_SERVER 0x13
  651. #define PRODUCT_STORAGE_EXPRESS_SERVER 0x14
  652. #define PRODUCT_STORAGE_STANDARD_SERVER 0x15
  653. #define PRODUCT_STORAGE_WORKGROUP_SERVER 0x16
  654. #define PRODUCT_STORAGE_ENTERPRISE_SERVER 0x17
  655. #define PRODUCT_SERVER_FOR_SMALLBUSINESS 0x18
  656. #define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM 0x19
  657. #define PRODUCT_HOME_PREMIUM_N 0x1a
  658. #define PRODUCT_ENTERPRISE_N 0x1b
  659. #define PRODUCT_ULTIMATE_N 0x1c
  660. #define PRODUCT_WEB_SERVER_CORE 0x1d
  661. #define PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT 0x1e
  662. #define PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY 0x1f
  663. #define PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING 0x20
  664. #define PRODUCT_SERVER_FOUNDATION 0x21
  665. #define PRODUCT_HOME_PREMIUM_SERVER 0x22
  666. #define PRODUCT_SERVER_FOR_SMALLBUSINESS_V 0x23
  667. #define PRODUCT_STANDARD_SERVER_V 0x24
  668. #define PRODUCT_DATACENTER_SERVER_V 0x25
  669. #define PRODUCT_SERVER_V 0x25
  670. #define PRODUCT_ENTERPRISE_SERVER_V 0x26
  671. #define PRODUCT_DATACENTER_SERVER_CORE_V 0x27
  672. #define PRODUCT_STANDARD_SERVER_CORE_V 0x28
  673. #define PRODUCT_ENTERPRISE_SERVER_CORE_V 0x29
  674. #define PRODUCT_HYPERV 0x2a
  675. #define PRODUCT_STORAGE_EXPRESS_SERVER_CORE 0x2b
  676. #define PRODUCT_STORAGE_STANDARD_SERVER_CORE 0x2c
  677. #define PRODUCT_STORAGE_WORKGROUP_SERVER_CORE 0x2d
  678. #define PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE 0x2e
  679. #define PRODUCT_STARTER_N 0x2f
  680. #define PRODUCT_PROFESSIONAL 0x30
  681. #define PRODUCT_PROFESSIONAL_N 0x31
  682. #define PRODUCT_SB_SOLUTION_SERVER 0x32
  683. #define PRODUCT_SERVER_FOR_SB_SOLUTIONS 0x33
  684. #define PRODUCT_STANDARD_SERVER_SOLUTIONS 0x34
  685. #define PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE 0x35
  686. #define PRODUCT_SB_SOLUTION_SERVER_EM 0x36
  687. #define PRODUCT_SERVER_FOR_SB_SOLUTIONS_EM 0x37
  688. #define PRODUCT_SOLUTION_EMBEDDEDSERVER 0x38
  689. #define PRODUCT_SOLUTION_EMBEDDEDSERVER_CORE 0x39
  690. #define PRODUCT_PROFESSIONAL_EMBEDDED 0x3A
  691. #define PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT 0x3B
  692. #define PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL 0x3C
  693. #define PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC 0x3D
  694. #define PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC 0x3E
  695. #define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE 0x3f
  696. #define PRODUCT_CLUSTER_SERVER_V 0x40
  697. #define PRODUCT_EMBEDDED 0x41
  698. #define PRODUCT_STARTER_E 0x42
  699. #define PRODUCT_HOME_BASIC_E 0x43
  700. #define PRODUCT_HOME_PREMIUM_E 0x44
  701. #define PRODUCT_PROFESSIONAL_E 0x45
  702. #define PRODUCT_ENTERPRISE_E 0x46
  703. #define PRODUCT_ULTIMATE_E 0x47
  704. #define PRODUCT_ENTERPRISE_EVALUATION 0x48
  705. #define PRODUCT_MULTIPOINT_STANDARD_SERVER 0x4C
  706. #define PRODUCT_MULTIPOINT_PREMIUM_SERVER 0x4D
  707. #define PRODUCT_STANDARD_EVALUATION_SERVER 0x4F
  708. #define PRODUCT_DATACENTER_EVALUATION_SERVER 0x50
  709. #define PRODUCT_ENTERPRISE_N_EVALUATION 0x54
  710. #define PRODUCT_EMBEDDED_AUTOMOTIVE 0x55
  711. #define PRODUCT_EMBEDDED_INDUSTRY_A 0x56
  712. #define PRODUCT_THINPC 0x57
  713. #define PRODUCT_EMBEDDED_A 0x58
  714. #define PRODUCT_EMBEDDED_INDUSTRY 0x59
  715. #define PRODUCT_EMBEDDED_E 0x5A
  716. #define PRODUCT_EMBEDDED_INDUSTRY_E 0x5B
  717. #define PRODUCT_EMBEDDED_INDUSTRY_A_E 0x5C
  718. #define PRODUCT_STORAGE_WORKGROUP_EVALUATION_SERVER 0x5F
  719. #define PRODUCT_STORAGE_STANDARD_EVALUATION_SERVER 0x60
  720. #define PRODUCT_CORE_ARM 0x61
  721. #define PRODUCT_CORE_N 0x62
  722. #define PRODUCT_CORE_COUNTRYSPECIFIC 0x63
  723. #define PRODUCT_CORE_SINGLELANGUAGE 0x64
  724. #define PRODUCT_CORE_LANGUAGESPECIFIC 0x64
  725. #define PRODUCT_CORE 0x65
  726. #define PRODUCT_PROFESSIONAL_WMC 0x67
  727. #define PRODUCT_MOBILE_CORE 0x68
  728. #define PRODUCT_EMBEDDED_INDUSTRY_EVAL 0x69
  729. #define PRODUCT_EMBEDDED_INDUSTRY_E_EVAL 0x6A
  730. #define PRODUCT_EMBEDDED_EVAL 0x6B
  731. #define PRODUCT_EMBEDDED_E_EVAL 0x6C
  732. #define PRODUCT_NANO_SERVER 0x6D
  733. #define PRODUCT_CLOUD_STORAGE_SERVER 0x6E
  734. #define PRODUCT_CORE_CONNECTED 0x6F
  735. #define PRODUCT_PROFESSIONAL_STUDENT 0x70
  736. #define PRODUCT_CORE_CONNECTED_N 0x71
  737. #define PRODUCT_PROFESSIONAL_STUDENT_N 0x72
  738. #define PRODUCT_CORE_CONNECTED_SINGLELANGUAGE 0x73
  739. #define PRODUCT_CORE_CONNECTED_COUNTRYSPECIFIC 0x74
  740. #define PRODUCT_CONNECTED_CAR 0x75
  741. #define PRODUCT_INDUSTRY_HANDHELD 0x76
  742. #define PRODUCT_PPI_PRO 0x77
  743. #define PRODUCT_ARM64_SERVER 0x78
  744. #define PRODUCT_EDUCATION 0x79
  745. #define PRODUCT_EDUCATION_N 0x7a
  746. #define PRODUCT_IOTUAP 0x7B
  747. #define PRODUCT_CLOUD_HOST_INFRASTRUCTURE_SERVER 0x7C
  748. #define PRODUCT_ENTERPRISE_S 0x7D
  749. #define PRODUCT_ENTERPRISE_S_N 0x7E
  750. #define PRODUCT_PROFESSIONAL_S 0x7F
  751. #define PRODUCT_PROFESSIONAL_S_N 0x80
  752. #define PRODUCT_ENTERPRISE_S_EVALUATION 0x81
  753. #define PRODUCT_ENTERPRISE_S_N_EVALUATION 0x82
  754. #define PRODUCT_MOBILE_ENTERPRISE 0x85
  755. #define PRODUCT_HOLOGRAPHIC 0x87
  756. #define PRODUCT_HOLOGRAPHIC_BUSINESS 0x88
  757. #define PRODUCT_PRO_SINGLE_LANGUAGE 0x8A
  758. #define PRODUCT_PRO_CHINA 0x8B
  759. #define PRODUCT_ENTERPRISE_SUBSCRIPTION 0x8C
  760. #define PRODUCT_ENTERPRISE_SUBSCRIPTION_N 0x8D
  761. #define PRODUCT_DATACENTER_NANO_SERVER 0x8F
  762. #define PRODUCT_STANDARD_NANO_SERVER 0x90
  763. #define PRODUCT_DATACENTER_A_SERVER_CORE 0x91
  764. #define PRODUCT_STANDARD_A_SERVER_CORE 0x92
  765. #define PRODUCT_DATACENTER_WS_SERVER_CORE 0x93
  766. #define PRODUCT_STANDARD_WS_SERVER_CORE 0x94
  767. #define PRODUCT_UTILITY_VM 0x95
  768. #define PRODUCT_DATACENTER_EVALUATION_SERVER_CORE 0x9F
  769. #define PRODUCT_STANDARD_EVALUATION_SERVER_CORE 0xA0
  770. #define PRODUCT_PRO_WORKSTATION 0xA1
  771. #define PRODUCT_PRO_WORKSTATION_N 0xA2
  772. #define PRODUCT_PRO_FOR_EDUCATION 0xA4
  773. #define PRODUCT_PRO_FOR_EDUCATION_N 0xA5
  774. #define PRODUCT_AZURE_SERVER_CORE 0xA8
  775. #define PRODUCT_AZURE_NANO_SERVER 0xA9
  776. #define PRODUCT_ENTERPRISEG 0xAB
  777. #define PRODUCT_ENTERPRISEGN 0xAC
  778. #define PRODUCT_SERVERRDSH 0xAF
  779. #define PRODUCT_CLOUD 0xB2
  780. #define PRODUCT_CLOUDN 0xB3
  781. #define PRODUCT_HUBOS 0xB4
  782. #define PRODUCT_ONECOREUPDATEOS 0xB6
  783. #define PRODUCT_CLOUDE 0xB7
  784. #define PRODUCT_IOTOS 0xB9
  785. #define PRODUCT_CLOUDEN 0xBA
  786. #define PRODUCT_IOTEDGEOS 0xBB
  787. #define PRODUCT_IOTENTERPRISE 0xBC
  788. #define PRODUCT_LITE 0xBD
  789. #define PRODUCT_IOTENTERPRISES 0xBF
  790. #define PRODUCT_XBOX_SYSTEMOS 0xC0
  791. #define PRODUCT_XBOX_NATIVEOS 0xC1
  792. #define PRODUCT_XBOX_GAMEOS 0xC2
  793. #define PRODUCT_XBOX_ERAOS 0xC3
  794. #define PRODUCT_XBOX_DURANGOHOSTOS 0xC4
  795. #define PRODUCT_XBOX_SCARLETTHOSTOS 0xC5
  796. #define PRODUCT_XBOX_KEYSTONE 0xC6
  797. #define PRODUCT_AZURE_SERVER_CLOUDHOST 0xC7
  798. #define PRODUCT_AZURE_SERVER_CLOUDMOS 0xC8
  799. #define PRODUCT_CLOUDEDITIONN 0xCA
  800. #define PRODUCT_CLOUDEDITION 0xCB
  801. #define PRODUCT_AZURESTACKHCI_SERVER_CORE 0x196
  802. #define PRODUCT_DATACENTER_SERVER_AZURE_EDITION 0x197
  803. #define PRODUCT_DATACENTER_SERVER_CORE_AZURE_EDITION 0x198
  804. #define PRODUCT_UNLICENSED 0xabcdabcd
  805. #define LANG_NEUTRAL 0x00
  806. #define LANG_INVARIANT 0x7f
  807. #define LANG_AFRIKAANS 0x36
  808. #define LANG_ALBANIAN 0x1c
  809. #define LANG_ALSATIAN 0x84
  810. #define LANG_AMHARIC 0x5e
  811. #define LANG_ARABIC 0x01
  812. #define LANG_ARMENIAN 0x2b
  813. #define LANG_ASSAMESE 0x4d
  814. #define LANG_AZERI 0x2c
  815. #define LANG_AZERBAIJANI 0x2c
  816. #define LANG_BANGLA 0x45
  817. #define LANG_BASHKIR 0x6d
  818. #define LANG_BASQUE 0x2d
  819. #define LANG_BELARUSIAN 0x23
  820. #define LANG_BENGALI 0x45
  821. #define LANG_BRETON 0x7e
  822. #define LANG_BOSNIAN 0x1a
  823. #define LANG_BOSNIAN_NEUTRAL 0x781a
  824. #define LANG_BULGARIAN 0x02
  825. #define LANG_CATALAN 0x03
  826. #define LANG_CENTRAL_KURDISH 0x92
  827. #define LANG_CHEROKEE 0x5c
  828. #define LANG_CHINESE 0x04
  829. #define LANG_CHINESE_SIMPLIFIED 0x04
  830. #define LANG_CHINESE_TRADITIONAL 0x7c04
  831. #define LANG_CORSICAN 0x83
  832. #define LANG_CROATIAN 0x1a
  833. #define LANG_CZECH 0x05
  834. #define LANG_DANISH 0x06
  835. #define LANG_DARI 0x8c
  836. #define LANG_DIVEHI 0x65
  837. #define LANG_DUTCH 0x13
  838. #define LANG_ENGLISH 0x09
  839. #define LANG_ESTONIAN 0x25
  840. #define LANG_FAEROESE 0x38
  841. #define LANG_FARSI 0x29
  842. #define LANG_FILIPINO 0x64
  843. #define LANG_FINNISH 0x0b
  844. #define LANG_FRENCH 0x0c
  845. #define LANG_FRISIAN 0x62
  846. #define LANG_FULAH 0x67
  847. #define LANG_GALICIAN 0x56
  848. #define LANG_GEORGIAN 0x37
  849. #define LANG_GERMAN 0x07
  850. #define LANG_GREEK 0x08
  851. #define LANG_GREENLANDIC 0x6f
  852. #define LANG_GUJARATI 0x47
  853. #define LANG_HAUSA 0x68
  854. #define LANG_HAWAIIAN 0x75
  855. #define LANG_HEBREW 0x0d
  856. #define LANG_HINDI 0x39
  857. #define LANG_HUNGARIAN 0x0e
  858. #define LANG_ICELANDIC 0x0f
  859. #define LANG_IGBO 0x70
  860. #define LANG_INDONESIAN 0x21
  861. #define LANG_INUKTITUT 0x5d
  862. #define LANG_IRISH 0x3c
  863. #define LANG_ITALIAN 0x10
  864. #define LANG_JAPANESE 0x11
  865. #define LANG_KANNADA 0x4b
  866. #define LANG_KASHMIRI 0x60
  867. #define LANG_KAZAK 0x3f
  868. #define LANG_KHMER 0x53
  869. #define LANG_KICHE 0x86
  870. #define LANG_KINYARWANDA 0x87
  871. #define LANG_KONKANI 0x57
  872. #define LANG_KOREAN 0x12
  873. #define LANG_KYRGYZ 0x40
  874. #define LANG_LAO 0x54
  875. #define LANG_LATVIAN 0x26
  876. #define LANG_LITHUANIAN 0x27
  877. #define LANG_LOWER_SORBIAN 0x2e
  878. #define LANG_LUXEMBOURGISH 0x6e
  879. #define LANG_MACEDONIAN 0x2f
  880. #define LANG_MALAY 0x3e
  881. #define LANG_MALAYALAM 0x4c
  882. #define LANG_MALTESE 0x3a
  883. #define LANG_MANIPURI 0x58
  884. #define LANG_MAORI 0x81
  885. #define LANG_MAPUDUNGUN 0x7a
  886. #define LANG_MARATHI 0x4e
  887. #define LANG_MOHAWK 0x7c
  888. #define LANG_MONGOLIAN 0x50
  889. #define LANG_NEPALI 0x61
  890. #define LANG_NORWEGIAN 0x14
  891. #define LANG_OCCITAN 0x82
  892. #define LANG_ODIA 0x48
  893. #define LANG_ORIYA 0x48
  894. #define LANG_PASHTO 0x63
  895. #define LANG_PERSIAN 0x29
  896. #define LANG_POLISH 0x15
  897. #define LANG_PORTUGUESE 0x16
  898. #define LANG_PULAR 0x67
  899. #define LANG_PUNJABI 0x46
  900. #define LANG_QUECHUA 0x6b
  901. #define LANG_ROMANIAN 0x18
  902. #define LANG_ROMANSH 0x17
  903. #define LANG_RUSSIAN 0x19
  904. #define LANG_SAKHA 0x85
  905. #define LANG_SAMI 0x3b
  906. #define LANG_SANSKRIT 0x4f
  907. #define LANG_SCOTTISH_GAELIC 0x91
  908. #define LANG_SERBIAN 0x1a
  909. #define LANG_SERBIAN_NEUTRAL 0x7c1a
  910. #define LANG_SINDHI 0x59
  911. #define LANG_SINHALESE 0x5b
  912. #define LANG_SLOVAK 0x1b
  913. #define LANG_SLOVENIAN 0x24
  914. #define LANG_SOTHO 0x6c
  915. #define LANG_SPANISH 0x0a
  916. #define LANG_SWAHILI 0x41
  917. #define LANG_SWEDISH 0x1d
  918. #define LANG_SYRIAC 0x5a
  919. #define LANG_TAJIK 0x28
  920. #define LANG_TAMAZIGHT 0x5f
  921. #define LANG_TAMIL 0x49
  922. #define LANG_TATAR 0x44
  923. #define LANG_TELUGU 0x4a
  924. #define LANG_THAI 0x1e
  925. #define LANG_TIBETAN 0x51
  926. #define LANG_TIGRIGNA 0x73
  927. #define LANG_TIGRINYA 0x73
  928. #define LANG_TSWANA 0x32
  929. #define LANG_TURKISH 0x1f
  930. #define LANG_TURKMEN 0x42
  931. #define LANG_UIGHUR 0x80
  932. #define LANG_UKRAINIAN 0x22
  933. #define LANG_UPPER_SORBIAN 0x2e
  934. #define LANG_URDU 0x20
  935. #define LANG_UZBEK 0x43
  936. #define LANG_VALENCIAN 0x03
  937. #define LANG_VIETNAMESE 0x2a
  938. #define LANG_WELSH 0x52
  939. #define LANG_WOLOF 0x88
  940. #define LANG_XHOSA 0x34
  941. #define LANG_YAKUT 0x85
  942. #define LANG_YI 0x78
  943. #define LANG_YORUBA 0x6a
  944. #define LANG_ZULU 0x35
  945. #define SUBLANG_NEUTRAL 0x00
  946. #define SUBLANG_DEFAULT 0x01
  947. #define SUBLANG_SYS_DEFAULT 0x02
  948. #define SUBLANG_CUSTOM_DEFAULT 0x03
  949. #define SUBLANG_CUSTOM_UNSPECIFIED 0x04
  950. #define SUBLANG_UI_CUSTOM_DEFAULT 0x05
  951. #define SUBLANG_AFRIKAANS_SOUTH_AFRICA 0x01
  952. #define SUBLANG_ALBANIAN_ALBANIA 0x01
  953. #define SUBLANG_ALSATIAN_FRANCE 0x01
  954. #define SUBLANG_AMHARIC_ETHIOPIA 0x01
  955. #define SUBLANG_ARABIC_SAUDI_ARABIA 0x01
  956. #define SUBLANG_ARABIC_IRAQ 0x02
  957. #define SUBLANG_ARABIC_EGYPT 0x03
  958. #define SUBLANG_ARABIC_LIBYA 0x04
  959. #define SUBLANG_ARABIC_ALGERIA 0x05
  960. #define SUBLANG_ARABIC_MOROCCO 0x06
  961. #define SUBLANG_ARABIC_TUNISIA 0x07
  962. #define SUBLANG_ARABIC_OMAN 0x08
  963. #define SUBLANG_ARABIC_YEMEN 0x09
  964. #define SUBLANG_ARABIC_SYRIA 0x0a
  965. #define SUBLANG_ARABIC_JORDAN 0x0b
  966. #define SUBLANG_ARABIC_LEBANON 0x0c
  967. #define SUBLANG_ARABIC_KUWAIT 0x0d
  968. #define SUBLANG_ARABIC_UAE 0x0e
  969. #define SUBLANG_ARABIC_BAHRAIN 0x0f
  970. #define SUBLANG_ARABIC_QATAR 0x10
  971. #define SUBLANG_ARMENIAN_ARMENIA 0x01
  972. #define SUBLANG_ASSAMESE_INDIA 0x01
  973. #define SUBLANG_AZERI_LATIN 0x01
  974. #define SUBLANG_AZERI_CYRILLIC 0x02
  975. #define SUBLANG_AZERBAIJANI_AZERBAIJAN_LATIN 0x01
  976. #define SUBLANG_AZERBAIJANI_AZERBAIJAN_CYRILLIC 0x02
  977. #define SUBLANG_BANGLA_INDIA 0x01
  978. #define SUBLANG_BANGLA_BANGLADESH 0x02
  979. #define SUBLANG_BASHKIR_RUSSIA 0x01
  980. #define SUBLANG_BASQUE_BASQUE 0x01
  981. #define SUBLANG_BELARUSIAN_BELARUS 0x01
  982. #define SUBLANG_BENGALI_INDIA 0x01
  983. #define SUBLANG_BENGALI_BANGLADESH 0x02
  984. #define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN 0x05
  985. #define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC 0x08
  986. #define SUBLANG_BRETON_FRANCE 0x01
  987. #define SUBLANG_BULGARIAN_BULGARIA 0x01
  988. #define SUBLANG_CATALAN_CATALAN 0x01
  989. #define SUBLANG_CENTRAL_KURDISH_IRAQ 0x01
  990. #define SUBLANG_CHEROKEE_CHEROKEE 0x01
  991. #define SUBLANG_CHINESE_TRADITIONAL 0x01
  992. #define SUBLANG_CHINESE_SIMPLIFIED 0x02
  993. #define SUBLANG_CHINESE_HONGKONG 0x03
  994. #define SUBLANG_CHINESE_SINGAPORE 0x04
  995. #define SUBLANG_CHINESE_MACAU 0x05
  996. #define SUBLANG_CORSICAN_FRANCE 0x01
  997. #define SUBLANG_CZECH_CZECH_REPUBLIC 0x01
  998. #define SUBLANG_CROATIAN_CROATIA 0x01
  999. #define SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN 0x04
  1000. #define SUBLANG_DANISH_DENMARK 0x01
  1001. #define SUBLANG_DARI_AFGHANISTAN 0x01
  1002. #define SUBLANG_DIVEHI_MALDIVES 0x01
  1003. #define SUBLANG_DUTCH 0x01
  1004. #define SUBLANG_DUTCH_BELGIAN 0x02
  1005. #define SUBLANG_ENGLISH_US 0x01
  1006. #define SUBLANG_ENGLISH_UK 0x02
  1007. #define SUBLANG_ENGLISH_AUS 0x03
  1008. #define SUBLANG_ENGLISH_CAN 0x04
  1009. #define SUBLANG_ENGLISH_NZ 0x05
  1010. #define SUBLANG_ENGLISH_IRELAND 0x06
  1011. #define SUBLANG_ENGLISH_EIRE 0x06
  1012. #define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07
  1013. #define SUBLANG_ENGLISH_JAMAICA 0x08
  1014. #define SUBLANG_ENGLISH_CARIBBEAN 0x09
  1015. #define SUBLANG_ENGLISH_BELIZE 0x0a
  1016. #define SUBLANG_ENGLISH_TRINIDAD 0x0b
  1017. #define SUBLANG_ENGLISH_ZIMBABWE 0x0c
  1018. #define SUBLANG_ENGLISH_PHILIPPINES 0x0d
  1019. #define SUBLANG_ENGLISH_INDIA 0x10
  1020. #define SUBLANG_ENGLISH_MALAYSIA 0x11
  1021. #define SUBLANG_ENGLISH_SINGAPORE 0x12
  1022. #define SUBLANG_ESTONIAN_ESTONIA 0x01
  1023. #define SUBLANG_FAEROESE_FAROE_ISLANDS 0x01
  1024. #define SUBLANG_FILIPINO_PHILIPPINES 0x01
  1025. #define SUBLANG_FINNISH_FINLAND 0x01
  1026. #define SUBLANG_FRENCH 0x01
  1027. #define SUBLANG_FRENCH_BELGIAN 0x02
  1028. #define SUBLANG_FRENCH_CANADIAN 0x03
  1029. #define SUBLANG_FRENCH_SWISS 0x04
  1030. #define SUBLANG_FRENCH_LUXEMBOURG 0x05
  1031. #define SUBLANG_FRENCH_MONACO 0x06
  1032. #define SUBLANG_FRISIAN_NETHERLANDS 0x01
  1033. #define SUBLANG_FULAH_SENEGAL 0x02
  1034. #define SUBLANG_GALICIAN_GALICIAN 0x01
  1035. #define SUBLANG_GEORGIAN_GEORGIA 0x01
  1036. #define SUBLANG_GERMAN 0x01
  1037. #define SUBLANG_GERMAN_SWISS 0x02
  1038. #define SUBLANG_GERMAN_AUSTRIAN 0x03
  1039. #define SUBLANG_GERMAN_LUXEMBOURG 0x04
  1040. #define SUBLANG_GERMAN_LIECHTENSTEIN 0x05
  1041. #define SUBLANG_GREEK_GREECE 0x01
  1042. #define SUBLANG_GREENLANDIC_GREENLAND 0x01
  1043. #define SUBLANG_GUJARATI_INDIA 0x01
  1044. #define SUBLANG_HAUSA_NIGERIA_LATIN 0x01
  1045. #define SUBLANG_HAUSA_NIGERIA SUBLANG_HAUSA_NIGERIA_LATIN /* SUBLANG_HAUSA_NIGERIA_LATIN is what MS defines */
  1046. #define SUBLANG_HAWAIIAN_US 0x01
  1047. #define SUBLANG_HEBREW_ISRAEL 0x01
  1048. #define SUBLANG_HINDI_INDIA 0x01
  1049. #define SUBLANG_HUNGARIAN_HUNGARY 0x01
  1050. #define SUBLANG_ICELANDIC_ICELAND 0x01
  1051. #define SUBLANG_IGBO_NIGERIA 0x01
  1052. #define SUBLANG_INDONESIAN_INDONESIA 0x01
  1053. #define SUBLANG_INUKTITUT_CANADA 0x01
  1054. #define SUBLANG_INUKTITUT_CANADA_LATIN 0x02
  1055. #define SUBLANG_IRISH_IRELAND 0x02
  1056. #define SUBLANG_ITALIAN 0x01
  1057. #define SUBLANG_ITALIAN_SWISS 0x02
  1058. #define SUBLANG_JAPANESE_JAPAN 0x01
  1059. #define SUBLANG_KANNADA_INDIA 0x01
  1060. #define SUBLANG_KASHMIRI_INDIA 0x02
  1061. #define SUBLANG_KASHMIRI_SASIA 0x02
  1062. #define SUBLANG_KAZAK_KAZAKHSTAN 0x01
  1063. #define SUBLANG_KHMER_CAMBODIA 0x01
  1064. #define SUBLANG_KICHE_GUATEMALA 0x01
  1065. #define SUBLANG_KINYARWANDA_RWANDA 0x01
  1066. #define SUBLANG_KONKANI_INDIA 0x01
  1067. #define SUBLANG_KOREAN 0x01
  1068. #define SUBLANG_KYRGYZ_KYRGYZSTAN 0x01
  1069. #define SUBLANG_LAO_LAO 0x01
  1070. #define SUBLANG_LAO_LAO_PDR SUBLANG_LAO_LAO /* SUBLANG_LAO_LAO is what MS defines */
  1071. #define SUBLANG_LATVIAN_LATVIA 0x01
  1072. #if (WINVER >= 0x0600)
  1073. #define SUBLANG_LITHUANIAN_LITHUANIA 0x01
  1074. #endif /* WINVER >= 0x0600 */
  1075. #define SUBLANG_LITHUANIAN 0x01
  1076. #define SUBLANG_LOWER_SORBIAN_GERMANY 0x02
  1077. #define SUBLANG_LUXEMBOURGISH_LUXEMBOURG 0x01
  1078. #define SUBLANG_MACEDONIAN_MACEDONIA 0x01
  1079. #define SUBLANG_MALAY_MALAYSIA 0x01
  1080. #define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02
  1081. #define SUBLANG_MALAYALAM_INDIA 0x01
  1082. #define SUBLANG_MALTESE_MALTA 0x01
  1083. #define SUBLANG_MAORI_NEW_ZEALAND 0x01
  1084. #define SUBLANG_MAPUDUNGUN_CHILE 0x01
  1085. #define SUBLANG_MARATHI_INDIA 0x01
  1086. #define SUBLANG_MOHAWK_MOHAWK 0x01
  1087. #define SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA 0x01
  1088. #define SUBLANG_MONGOLIAN_PRC 0x02
  1089. #define SUBLANG_NEPALI_NEPAL 0x01
  1090. #define SUBLANG_NEPALI_INDIA 0x02
  1091. #define SUBLANG_NORWEGIAN_BOKMAL 0x01
  1092. #define SUBLANG_NORWEGIAN_NYNORSK 0x02
  1093. #define SUBLANG_OCCITAN_FRANCE 0x01
  1094. #define SUBLANG_ODIA_INDIA 0x01
  1095. #define SUBLANG_ORIYA_INDIA 0x01
  1096. #define SUBLANG_PASHTO_AFGHANISTAN 0x01
  1097. #define SUBLANG_PERSIAN_IRAN 0x01
  1098. #define SUBLANG_POLISH_POLAND 0x01
  1099. #define SUBLANG_PORTUGUESE_BRAZILIAN 0x01
  1100. #if (WINVER >= 0x0600)
  1101. #define SUBLANG_PORTUGUESE_PORTUGAL 0x02
  1102. #endif /* WINVER >= 0x0600 */
  1103. #define SUBLANG_PORTUGUESE 0x02
  1104. #define SUBLANG_PULAR_SENEGAL 0x02
  1105. #define SUBLANG_PUNJABI_INDIA 0x01
  1106. #define SUBLANG_PUNJABI_PAKISTAN 0x02
  1107. #define SUBLANG_QUECHUA_BOLIVIA 0x01
  1108. #define SUBLANG_QUECHUA_ECUADOR 0x02
  1109. #define SUBLANG_QUECHUA_PERU 0x03
  1110. #define SUBLANG_ROMANIAN_ROMANIA 0x01
  1111. /* ??? #define SUBLANG_ROMANIAN_MOLDOVA 0x01 ??? */
  1112. #define SUBLANG_ROMANSH_SWITZERLAND 0x01
  1113. #define SUBLANG_RUSSIAN_RUSSIA 0x01
  1114. #define SUBLANG_SAKHA_RUSSIA 0x01
  1115. #define SUBLANG_SAMI_NORTHERN_NORWAY 0x01
  1116. #define SUBLANG_SAMI_NORTHERN_SWEDEN 0x02
  1117. #define SUBLANG_SAMI_NORTHERN_FINLAND 0x03
  1118. #define SUBLANG_SAMI_LULE_NORWAY 0x04
  1119. #define SUBLANG_SAMI_LULE_SWEDEN 0x05
  1120. #define SUBLANG_SAMI_SOUTHERN_NORWAY 0x06
  1121. #define SUBLANG_SAMI_SOUTHERN_SWEDEN 0x07
  1122. #define SUBLANG_SAMI_SKOLT_FINLAND 0x08
  1123. #define SUBLANG_SAMI_INARI_FINLAND 0x09
  1124. #define SUBLANG_SANSKRIT_INDIA 0x01
  1125. #define SUBLANG_SCOTTISH_GAELIC 0x01
  1126. #define SUBLANG_SERBIAN_LATIN 0x02
  1127. #define SUBLANG_SERBIAN_CYRILLIC 0x03
  1128. #define SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN 0x06
  1129. #define SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC 0x07
  1130. #define SUBLANG_SERBIAN_MONTENEGRO_LATIN 0x0b
  1131. #define SUBLANG_SERBIAN_MONTENEGRO_CYRILLIC 0x0c
  1132. #define SUBLANG_SERBIAN_SERBIA_LATIN 0x09
  1133. #define SUBLANG_SERBIAN_SERBIA_CYRILLIC 0x0a
  1134. #define SUBLANG_SERBIAN_CROATIA 0x01
  1135. #define SUBLANG_SINDHI_INDIA 0x01
  1136. #define SUBLANG_SINDHI_AFGHANISTAN 0x02
  1137. #define SUBLANG_SINDHI_PAKISTAN 0x02
  1138. #define SUBLANG_SINHALESE_SRI_LANKA 0x01
  1139. #define SUBLANG_SOTHO_NORTHERN_SOUTH_AFRICA 0x01
  1140. #define SUBLANG_SLOVAK_SLOVAKIA 0x01
  1141. #define SUBLANG_SLOVENIAN_SLOVENIA 0x01
  1142. #define SUBLANG_SPANISH 0x01
  1143. #define SUBLANG_SPANISH_MEXICAN 0x02
  1144. #define SUBLANG_SPANISH_MODERN 0x03
  1145. #define SUBLANG_SPANISH_GUATEMALA 0x04
  1146. #define SUBLANG_SPANISH_COSTA_RICA 0x05
  1147. #define SUBLANG_SPANISH_PANAMA 0x06
  1148. #define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07
  1149. #define SUBLANG_SPANISH_VENEZUELA 0x08
  1150. #define SUBLANG_SPANISH_COLOMBIA 0x09
  1151. #define SUBLANG_SPANISH_PERU 0x0a
  1152. #define SUBLANG_SPANISH_ARGENTINA 0x0b
  1153. #define SUBLANG_SPANISH_ECUADOR 0x0c
  1154. #define SUBLANG_SPANISH_CHILE 0x0d
  1155. #define SUBLANG_SPANISH_URUGUAY 0x0e
  1156. #define SUBLANG_SPANISH_PARAGUAY 0x0f
  1157. #define SUBLANG_SPANISH_BOLIVIA 0x10
  1158. #define SUBLANG_SPANISH_EL_SALVADOR 0x11
  1159. #define SUBLANG_SPANISH_HONDURAS 0x12
  1160. #define SUBLANG_SPANISH_NICARAGUA 0x13
  1161. #define SUBLANG_SPANISH_PUERTO_RICO 0x14
  1162. #define SUBLANG_SPANISH_US 0x15
  1163. #define SUBLANG_SWAHILI_KENYA 0x01
  1164. #if (WINVER >= 0x0600)
  1165. #define SUBLANG_SWEDISH_SWEDEN 0x01
  1166. #endif /* WINVER >= 0x0600 */
  1167. #define SUBLANG_SWEDISH 0x01
  1168. #define SUBLANG_SWEDISH_FINLAND 0x02
  1169. #define SUBLANG_SYRIAC 0x01
  1170. #define SUBLANG_SYRIAC_SYRIA SUBLANG_SYRIAC /* SUBLANG_SYRIAC_SYRIA is what MSDN mentions */
  1171. #define SUBLANG_TAJIK_TAJIKISTAN 0x01
  1172. #define SUBLANG_TAMAZIGHT_ALGERIA_LATIN 0x02
  1173. #define SUBLANG_TAMAZIGHT_MOROCCO_TIFINAGH 0x04
  1174. #define SUBLANG_TAMIL_INDIA 0x01
  1175. #define SUBLANG_TAMIL_SRI_LANKA 0x02
  1176. #define SUBLANG_TATAR_RUSSIA 0x01
  1177. #define SUBLANG_TELUGU_INDIA 0x01
  1178. #define SUBLANG_THAI_THAILAND 0x01
  1179. #define SUBLANG_TIBETAN_PRC 0x01
  1180. #define SUBLANG_TIBETAN_BHUTAN 0x02
  1181. #define SUBLANG_TIGRIGNA_ERITREA 0x02
  1182. #define SUBLANG_TIGRINYA_ERITREA 0x02
  1183. #define SUBLANG_TIGRINYA_ETHIOPIA 0x01
  1184. #define SUBLANG_TSWANA_BOTSWANA 0x02
  1185. #define SUBLANG_TSWANA_SOUTH_AFRICA 0x01
  1186. #define SUBLANG_TURKISH_TURKEY 0x01
  1187. #define SUBLANG_TURKMEN_TURKMENISTAN 0x01
  1188. #define SUBLANG_UIGHUR_PRC 0x01
  1189. #define SUBLANG_UKRAINIAN_UKRAINE 0x01
  1190. #define SUBLANG_UPPER_SORBIAN_GERMANY 0x01
  1191. #define SUBLANG_URDU_PAKISTAN 0x01
  1192. #define SUBLANG_URDU_INDIA 0x02
  1193. #define SUBLANG_UZBEK_LATIN 0x01
  1194. #define SUBLANG_UZBEK_CYRILLIC 0x02
  1195. #define SUBLANG_VALENCIAN_VALENCIA 0x02
  1196. #define SUBLANG_VIETNAMESE_VIETNAM 0x01
  1197. #define SUBLANG_WELSH_UNITED_KINGDOM 0x01
  1198. #define SUBLANG_WOLOF_SENEGAL 0x01
  1199. #define SUBLANG_YORUBA_NIGERIA 0x01
  1200. #define SUBLANG_XHOSA_SOUTH_AFRICA 0x01
  1201. #define SUBLANG_YAKUT_RUSSIA 0x01
  1202. #define SUBLANG_YI_PRC 0x01
  1203. #define SUBLANG_ZULU_SOUTH_AFRICA 0x01
  1204. #define SORT_DEFAULT 0x0
  1205. #define SORT_INVARIANT_MATH 0x1
  1206. #define SORT_JAPANESE_XJIS 0x0
  1207. #define SORT_JAPANESE_UNICODE 0x1
  1208. #define SORT_JAPANESE_RADICALSTROKE 0x4
  1209. #define SORT_CHINESE_BIG5 0x0
  1210. #define SORT_CHINESE_PRCP 0x0
  1211. #define SORT_CHINESE_UNICODE 0x1
  1212. #define SORT_CHINESE_PRC 0x2
  1213. #define SORT_CHINESE_BOPOMOFO 0x3
  1214. #define SORT_CHINESE_RADICALSTROKE 0x4
  1215. #define SORT_KOREAN_KSC 0x0
  1216. #define SORT_KOREAN_UNICODE 0x1
  1217. #define SORT_GERMAN_PHONE_BOOK 0x1
  1218. #define SORT_HUNGARIAN_DEFAULT 0x0
  1219. #define SORT_HUNGARIAN_TECHNICAL 0x1
  1220. #define SORT_GEORGIAN_TRADITIONAL 0x0
  1221. #define SORT_GEORGIAN_MODERN 0x1
  1222. #define MAKELANGID(p,s) ((((WORD)(s)) << 10) | (WORD)(p))
  1223. #define PRIMARYLANGID(lgid) ((WORD)(lgid) & 0x3ff)
  1224. #define SUBLANGID(lgid) ((WORD)(lgid) >> 10)
  1225. #define NLS_VALID_LOCALE_MASK 0x000fffff
  1226. #define MAKELCID(lgid,srtid) ((DWORD)((((DWORD)((WORD)(srtid))) << 16) | ((DWORD)((WORD)(lgid)))))
  1227. #define MAKESORTLCID(lgid,srtid,ver) ((DWORD)((MAKELCID(lgid,srtid)) | (((DWORD)((WORD)(ver))) << 20)))
  1228. #define LANGIDFROMLCID(lcid) ((WORD)(lcid))
  1229. #define SORTIDFROMLCID(lcid) ((WORD)((((DWORD)(lcid)) >> 16) & 0xf))
  1230. #define SORTVERSIONFROMLCID(lcid) ((WORD)((((DWORD)(lcid)) >> 20) & 0xf))
  1231. #define LOCALE_NAME_MAX_LENGTH 85
  1232. #define LANG_SYSTEM_DEFAULT (MAKELANGID(LANG_NEUTRAL,SUBLANG_SYS_DEFAULT))
  1233. #define LANG_USER_DEFAULT (MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT))
  1234. #define LOCALE_SYSTEM_DEFAULT (MAKELCID(LANG_SYSTEM_DEFAULT,SORT_DEFAULT))
  1235. #define LOCALE_USER_DEFAULT (MAKELCID(LANG_USER_DEFAULT,SORT_DEFAULT))
  1236. #define LOCALE_NEUTRAL (MAKELCID(MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL),SORT_DEFAULT))
  1237. #define LOCALE_CUSTOM_DEFAULT (MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_CUSTOM_DEFAULT), SORT_DEFAULT))
  1238. #define LOCALE_CUSTOM_UNSPECIFIED (MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_CUSTOM_UNSPECIFIED), SORT_DEFAULT))
  1239. #define LOCALE_CUSTOM_UI_DEFAULT (MAKELCID(MAKELANGID(LANG_NEUTRAL, SUBLANG_UI_CUSTOM_DEFAULT), SORT_DEFAULT))
  1240. #define LOCALE_INVARIANT (MAKELCID(MAKELANGID(LANG_INVARIANT,SUBLANG_NEUTRAL),SORT_DEFAULT))
  1241. #define LOCALE_TRANSIENT_KEYBOARD1 0x2000
  1242. #define LOCALE_TRANSIENT_KEYBOARD2 0x2400
  1243. #define LOCALE_TRANSIENT_KEYBOARD3 0x2800
  1244. #define LOCALE_TRANSIENT_KEYBOARD4 0x2c00
  1245. #define LOCALE_UNASSIGNED_LCID LOCALE_CUSTOM_UNSPECIFIED
  1246. #define UNREFERENCED_PARAMETER(P) {(P) = (P);}
  1247. #define UNREFERENCED_LOCAL_VARIABLE(V) {(V) = (V);}
  1248. #define DBG_UNREFERENCED_PARAMETER(P) (P)
  1249. #define DBG_UNREFERENCED_LOCAL_VARIABLE(V) (V)
  1250. #define DEFAULT_UNREACHABLE
  1251. #ifndef UMDF_USING_NTSTATUS
  1252. #ifndef WIN32_NO_STATUS
  1253. #define STATUS_WAIT_0 ((DWORD)0x00000000)
  1254. #define STATUS_ABANDONED_WAIT_0 ((DWORD)0x00000080)
  1255. #define STATUS_USER_APC ((DWORD)0x000000C0)
  1256. #define STATUS_TIMEOUT ((DWORD)0x00000102)
  1257. #define STATUS_PENDING ((DWORD)0x00000103)
  1258. #define DBG_EXCEPTION_HANDLED ((DWORD)0x00010001)
  1259. #define DBG_CONTINUE ((DWORD)0x00010002)
  1260. #define STATUS_SEGMENT_NOTIFICATION ((DWORD)0x40000005)
  1261. #define STATUS_FATAL_APP_EXIT ((DWORD)0x40000015)
  1262. #define DBG_REPLY_LATER ((DWORD)0x40010001)
  1263. #define DBG_TERMINATE_THREAD ((DWORD)0x40010003)
  1264. #define DBG_TERMINATE_PROCESS ((DWORD)0x40010004)
  1265. #define DBG_CONTROL_C ((DWORD)0x40010005)
  1266. #define DBG_PRINTEXCEPTION_C ((DWORD)0x40010006)
  1267. #define DBG_RIPEXCEPTION ((DWORD)0x40010007)
  1268. #define DBG_CONTROL_BREAK ((DWORD)0x40010008)
  1269. #define DBG_COMMAND_EXCEPTION ((DWORD)0x40010009)
  1270. #define DBG_PRINTEXCEPTION_WIDE_C ((DWORD)0x4001000A)
  1271. #define STATUS_GUARD_PAGE_VIOLATION ((DWORD)0x80000001)
  1272. #define STATUS_DATATYPE_MISALIGNMENT ((DWORD)0x80000002)
  1273. #define STATUS_BREAKPOINT ((DWORD)0x80000003)
  1274. #define STATUS_SINGLE_STEP ((DWORD)0x80000004)
  1275. #define STATUS_LONGJUMP ((DWORD)0x80000026)
  1276. #define STATUS_UNWIND_CONSOLIDATE ((DWORD)0x80000029)
  1277. #define DBG_EXCEPTION_NOT_HANDLED ((DWORD)0x80010001)
  1278. #define STATUS_ACCESS_VIOLATION ((DWORD)0xC0000005)
  1279. #define STATUS_IN_PAGE_ERROR ((DWORD)0xC0000006)
  1280. #define STATUS_INVALID_HANDLE ((DWORD)0xC0000008)
  1281. #define STATUS_INVALID_PARAMETER ((DWORD)0xC000000D)
  1282. #define STATUS_NO_MEMORY ((DWORD)0xC0000017)
  1283. #define STATUS_ILLEGAL_INSTRUCTION ((DWORD)0xC000001D)
  1284. #define STATUS_NONCONTINUABLE_EXCEPTION ((DWORD)0xC0000025)
  1285. #define STATUS_INVALID_DISPOSITION ((DWORD)0xC0000026)
  1286. #define STATUS_ARRAY_BOUNDS_EXCEEDED ((DWORD)0xC000008C)
  1287. #define STATUS_FLOAT_DENORMAL_OPERAND ((DWORD)0xC000008D)
  1288. #define STATUS_FLOAT_DIVIDE_BY_ZERO ((DWORD)0xC000008E)
  1289. #define STATUS_FLOAT_INEXACT_RESULT ((DWORD)0xC000008F)
  1290. #define STATUS_FLOAT_INVALID_OPERATION ((DWORD)0xC0000090)
  1291. #define STATUS_FLOAT_OVERFLOW ((DWORD)0xC0000091)
  1292. #define STATUS_FLOAT_STACK_CHECK ((DWORD)0xC0000092)
  1293. #define STATUS_FLOAT_UNDERFLOW ((DWORD)0xC0000093)
  1294. #define STATUS_INTEGER_DIVIDE_BY_ZERO ((DWORD)0xC0000094)
  1295. #define STATUS_INTEGER_OVERFLOW ((DWORD)0xC0000095)
  1296. #define STATUS_PRIVILEGED_INSTRUCTION ((DWORD)0xC0000096)
  1297. #define STATUS_STACK_OVERFLOW ((DWORD)0xC00000FD)
  1298. #define STATUS_DLL_NOT_FOUND ((DWORD)0xC0000135)
  1299. #define STATUS_ORDINAL_NOT_FOUND ((DWORD)0xC0000138)
  1300. #define STATUS_ENTRYPOINT_NOT_FOUND ((DWORD)0xC0000139)
  1301. #define STATUS_CONTROL_C_EXIT ((DWORD)0xC000013A)
  1302. #define STATUS_DLL_INIT_FAILED ((DWORD)0xC0000142)
  1303. #define STATUS_CONTROL_STACK_VIOLATION ((DWORD)0xC00001B2)
  1304. #define STATUS_FLOAT_MULTIPLE_FAULTS ((DWORD)0xC00002B4)
  1305. #define STATUS_FLOAT_MULTIPLE_TRAPS ((DWORD)0xC00002B5)
  1306. #define STATUS_REG_NAT_CONSUMPTION ((DWORD)0xC00002C9)
  1307. #define STATUS_HEAP_CORRUPTION ((DWORD)0xC0000374)
  1308. #define STATUS_STACK_BUFFER_OVERRUN ((DWORD)0xC0000409)
  1309. #define STATUS_INVALID_CRUNTIME_PARAMETER ((DWORD)0xC0000417)
  1310. #define STATUS_ASSERTION_FAILURE ((DWORD)0xC0000420)
  1311. #define STATUS_ENCLAVE_VIOLATION ((DWORD)0xC00004A2)
  1312. #define STATUS_INTERRUPTED ((DWORD)0xC0000515)
  1313. #define STATUS_THREAD_NOT_RUNNING ((DWORD)0xC0000516)
  1314. #define STATUS_ALREADY_REGISTERED ((DWORD)0xC0000718)
  1315. #define STATUS_SXS_EARLY_DEACTIVATION ((DWORD)0xC015000F)
  1316. #define STATUS_SXS_INVALID_DEACTIVATION ((DWORD)0xC0150010)
  1317. #endif
  1318. #endif
  1319. #define MAXIMUM_WAIT_OBJECTS 64
  1320. #define MAXIMUM_SUSPEND_COUNT MAXCHAR
  1321. typedef ULONG_PTR KSPIN_LOCK;
  1322. typedef KSPIN_LOCK *PKSPIN_LOCK;
  1323. typedef struct DECLSPEC_ALIGN (16) _M128A {
  1324. ULONGLONG Low;
  1325. LONGLONG High;
  1326. } M128A,*PM128A;
  1327. typedef struct DECLSPEC_ALIGN (16) _XSAVE_FORMAT {
  1328. WORD ControlWord;
  1329. WORD StatusWord;
  1330. BYTE TagWord;
  1331. BYTE Reserved1;
  1332. WORD ErrorOpcode;
  1333. DWORD ErrorOffset;
  1334. WORD ErrorSelector;
  1335. WORD Reserved2;
  1336. DWORD DataOffset;
  1337. WORD DataSelector;
  1338. WORD Reserved3;
  1339. DWORD MxCsr;
  1340. DWORD MxCsr_Mask;
  1341. M128A FloatRegisters[8];
  1342. #ifdef _WIN64
  1343. M128A XmmRegisters[16];
  1344. BYTE Reserved4[96];
  1345. #else
  1346. M128A XmmRegisters[8];
  1347. BYTE Reserved4[220];
  1348. DWORD Cr0NpxState;
  1349. #endif
  1350. } XSAVE_FORMAT,*PXSAVE_FORMAT;
  1351. typedef struct _XSAVE_CET_U_FORMAT {
  1352. DWORD64 Ia32CetUMsr;
  1353. DWORD64 Ia32Pl3SspMsr;
  1354. } XSAVE_CET_U_FORMAT, *PXSAVE_CET_U_FORMAT;
  1355. typedef struct DECLSPEC_ALIGN (8) _XSAVE_AREA_HEADER {
  1356. DWORD64 Mask;
  1357. DWORD64 Reserved[7];
  1358. } XSAVE_AREA_HEADER,*PXSAVE_AREA_HEADER;
  1359. typedef struct DECLSPEC_ALIGN (16) _XSAVE_AREA {
  1360. XSAVE_FORMAT LegacyState;
  1361. XSAVE_AREA_HEADER Header;
  1362. } XSAVE_AREA,*PXSAVE_AREA;
  1363. typedef struct _XSTATE_CONTEXT {
  1364. DWORD64 Mask;
  1365. DWORD Length;
  1366. DWORD Reserved1;
  1367. PXSAVE_AREA Area;
  1368. #if defined (__i386__)
  1369. DWORD Reserved2;
  1370. #endif
  1371. PVOID Buffer;
  1372. #if defined (__i386__)
  1373. DWORD Reserved3;
  1374. #endif
  1375. } XSTATE_CONTEXT,*PXSTATE_CONTEXT;
  1376. typedef struct _KERNEL_CET_CONTEXT {
  1377. DWORD64 Ssp;
  1378. DWORD64 Rip;
  1379. WORD SegCs;
  1380. __C89_NAMELESS union {
  1381. WORD AllFlags;
  1382. __C89_NAMELESS struct {
  1383. WORD UseWrss : 1;
  1384. WORD PopShadowStackOne : 1;
  1385. WORD Unused : 14;
  1386. };
  1387. };
  1388. WORD Fill[2];
  1389. } KERNEL_CET_CONTEXT, *PKERNEL_CET_CONTEXT;
  1390. typedef struct _SCOPE_TABLE_AMD64 {
  1391. DWORD Count;
  1392. struct {
  1393. DWORD BeginAddress;
  1394. DWORD EndAddress;
  1395. DWORD HandlerAddress;
  1396. DWORD JumpTarget;
  1397. } ScopeRecord[1];
  1398. } SCOPE_TABLE_AMD64,*PSCOPE_TABLE_AMD64;
  1399. #ifdef _AMD64_
  1400. #if defined(__x86_64) && !defined(RC_INVOKED)
  1401. #ifdef __cplusplus
  1402. extern "C" {
  1403. #endif
  1404. #define BitTest _bittest
  1405. #define BitTestAndComplement _bittestandcomplement
  1406. #define BitTestAndSet _bittestandset
  1407. #define BitTestAndReset _bittestandreset
  1408. #define BitTest64 _bittest64
  1409. #define BitTestAndComplement64 _bittestandcomplement64
  1410. #define BitTestAndSet64 _bittestandset64
  1411. #define BitTestAndReset64 _bittestandreset64
  1412. /* BOOLEAN _bittest(LONG const *Base,LONG Offset); moved to psdk_inc/intrin-impl.h */
  1413. /* BOOLEAN _bittestandcomplement(LONG *Base,LONG Offset); moved to psdk_inc/intrin-impl.h */
  1414. /* BOOLEAN _bittestandset(LONG *Base,LONG Offset); moved to psdk_inc/intrin-impl.h */
  1415. /* BOOLEAN _bittestandreset(LONG *Base,LONG Offset); moved to psdk_inc/intrin-impl.h */
  1416. /* BOOLEAN _bittest64(LONG64 const *Base,LONG64 Offset); moved to psdk_inc/intrin-impl.h */
  1417. /* BOOLEAN _bittestandcomplement64(LONG64 *Base,LONG64 Offset); moved to psdk_inc/intrin-impl.h */
  1418. /* BOOLEAN _bittestandset64(LONG64 *Base,LONG64 Offset); moved to psdk_inc/intrin-impl.h */
  1419. /* BOOLEAN _bittestandreset64(LONG64 *Base,LONG64 Offset); moved to psdk_inc/intrin-impl.h */
  1420. #define BitScanForward _BitScanForward
  1421. #define BitScanReverse _BitScanReverse
  1422. #define BitScanForward64 _BitScanForward64
  1423. #define BitScanReverse64 _BitScanReverse64
  1424. /* BOOLEAN _BitScanForward(DWORD *Index,DWORD Mask); moved to psdk_inc/intrin-impl.h */
  1425. /* BOOLEAN _BitScanReverse(DWORD *Index,DWORD Mask); moved to psdk_inc/intrin-impl.h */
  1426. /* BOOLEAN _BitScanForward64(DWORD *Index,DWORD64 Mask); moved to psdk_inc/intrin-impl.h */
  1427. /* BOOLEAN _BitScanReverse64(DWORD *Index,DWORD64 Mask); moved to psdk_inc/intrin-impl.h */
  1428. #define InterlockedIncrement16 _InterlockedIncrement16
  1429. #define InterlockedDecrement16 _InterlockedDecrement16
  1430. #define InterlockedCompareExchange16 _InterlockedCompareExchange16
  1431. #define InterlockedAnd _InterlockedAnd
  1432. #define InterlockedOr _InterlockedOr
  1433. #define InterlockedXor _InterlockedXor
  1434. #define InterlockedIncrement _InterlockedIncrement
  1435. #define InterlockedIncrementAcquire InterlockedIncrement
  1436. #define InterlockedIncrementRelease InterlockedIncrement
  1437. #define InterlockedDecrement _InterlockedDecrement
  1438. #define InterlockedDecrementAcquire InterlockedDecrement
  1439. #define InterlockedDecrementRelease InterlockedDecrement
  1440. #define InterlockedAdd _InterlockedAdd
  1441. #define InterlockedExchange _InterlockedExchange
  1442. #define InterlockedExchangeAdd _InterlockedExchangeAdd
  1443. #define InterlockedCompareExchange _InterlockedCompareExchange
  1444. #define InterlockedCompareExchangeAcquire InterlockedCompareExchange
  1445. #define InterlockedCompareExchangeRelease InterlockedCompareExchange
  1446. #define InterlockedAnd64 _InterlockedAnd64
  1447. #define InterlockedAndAffinity InterlockedAnd64
  1448. #define InterlockedOr64 _InterlockedOr64
  1449. #define InterlockedOrAffinity InterlockedOr64
  1450. #define InterlockedXor64 _InterlockedXor64
  1451. #define InterlockedIncrement64 _InterlockedIncrement64
  1452. #define InterlockedDecrement64 _InterlockedDecrement64
  1453. #define InterlockedAdd64 _InterlockedAdd64
  1454. #define InterlockedExchange64 _InterlockedExchange64
  1455. #define InterlockedExchangeAcquire64 InterlockedExchange64
  1456. #define InterlockedExchangeAdd64 _InterlockedExchangeAdd64
  1457. #define InterlockedCompareExchange64 _InterlockedCompareExchange64
  1458. #define InterlockedCompareExchangeAcquire64 InterlockedCompareExchange64
  1459. #define InterlockedCompareExchangeRelease64 InterlockedCompareExchange64
  1460. #define InterlockedExchangePointer _InterlockedExchangePointer
  1461. #define InterlockedCompareExchangePointer _InterlockedCompareExchangePointer
  1462. #define InterlockedCompareExchangePointerAcquire _InterlockedCompareExchangePointer
  1463. #define InterlockedCompareExchangePointerRelease _InterlockedCompareExchangePointer
  1464. #define InterlockedExchangeAddSizeT(a,b) InterlockedExchangeAdd64((LONG64 *)a,b)
  1465. #define InterlockedIncrementSizeT(a) InterlockedIncrement64((LONG64 *)a)
  1466. #define InterlockedDecrementSizeT(a) InterlockedDecrement64((LONG64 *)a)
  1467. /* SHORT InterlockedIncrement16(SHORT volatile *Addend); moved to psdk_inc/intrin-impl.h */
  1468. /* SHORT InterlockedDecrement16(SHORT volatile *Addend); moved to psdk_inc/intrin-impl.h */
  1469. /* SHORT InterlockedCompareExchange16(SHORT volatile *Destination,SHORT ExChange,SHORT Comperand); moved to psdk_inc/intrin-impl.h */
  1470. /* LONG InterlockedIncrement(LONG volatile *Addend); moved to psdk_inc/intrin-impl.h */
  1471. /* LONG InterlockedDecrement(LONG volatile *Addend); moved to psdk_inc/intrin-impl.h */
  1472. /* LONG InterlockedExchange(LONG volatile *Target,LONG Value); moved to psdk_inc/intrin-impl.h */
  1473. /* LONG InterlockedExchangeAdd(LONG volatile *Addend,LONG Value); moved to psdk_inc/intrin-impl.h */
  1474. /* LONG InterlockedCompareExchange(LONG volatile *Destination,LONG ExChange,LONG Comperand); moved to psdk_inc/intrin-impl.h */
  1475. /* LONG InterlockedAdd(LONG volatile *Addend,LONG Value); moved to psdk_inc/intrin-impl.h */
  1476. /* LONG64 InterlockedIncrement64(LONG64 volatile *Addend); moved to psdk_inc/intrin-impl.h */
  1477. /* LONG64 InterlockedDecrement64(LONG64 volatile *Addend); moved to psdk_inc/intrin-impl.h */
  1478. /* LONG64 InterlockedExchange64(LONG64 volatile *Target,LONG64 Value); moved to psdk_inc/intrin-impl.h */
  1479. /* LONG64 InterlockedExchangeAdd64(LONG64 volatile *Addend,LONG64 Value); moved to psdk_inc/intrin-impl.h */
  1480. /* LONG64 InterlockedAdd64(LONG64 volatile *Addend,LONG64 Value); moved to psdk_inc/intrin-impl.h */
  1481. /* LONG64 InterlockedCompareExchange64(LONG64 volatile *Destination,LONG64 ExChange,LONG64 Comperand); moved to psdk_inc/intrin-impl.h */
  1482. /* PVOID InterlockedCompareExchangePointer(PVOID volatile *Destination,PVOID ExChange,PVOID Comperand); moved to psdk_inc/intrin-impl.h */
  1483. /* PVOID InterlockedExchangePointer(PVOID volatile *Target,PVOID Value); moved to psdk_inc/intrin-impl.h */
  1484. #define CacheLineFlush(Address) _mm_clflush(Address)
  1485. # if defined(__cplusplus)
  1486. extern "C" {
  1487. # endif
  1488. # include <x86intrin.h>
  1489. # if defined(__cplusplus)
  1490. }
  1491. # endif
  1492. #include <emmintrin.h>
  1493. #define FastFence __faststorefence
  1494. #define LoadFence _mm_lfence
  1495. #define MemoryFence _mm_mfence
  1496. #define StoreFence _mm_sfence
  1497. #define YieldProcessor _mm_pause
  1498. #define MemoryBarrier _mm_mfence
  1499. #define PreFetchCacheLine(l,a) _mm_prefetch((CHAR CONST *) a,l)
  1500. #define PrefetchForWrite(p) _m_prefetchw(p)
  1501. #define ReadForWriteAccess(p) (_m_prefetchw(p),*(p))
  1502. #define PF_TEMPORAL_LEVEL_1 _MM_HINT_T0
  1503. #define PF_TEMPORAL_LEVEL_2 _MM_HINT_T1
  1504. #define PF_TEMPORAL_LEVEL_3 _MM_HINT_T2
  1505. #define PF_NON_TEMPORAL_LEVEL_ALL _MM_HINT_NTA
  1506. #define ReadMxCsr _mm_getcsr
  1507. #define WriteMxCsr _mm_setcsr
  1508. #define DbgRaiseAssertionFailure __int2c
  1509. #define GetCallersEflags() __getcallerseflags()
  1510. unsigned __int32 __getcallerseflags(VOID);
  1511. #define GetSegmentLimit __segmentlimit
  1512. DWORD __segmentlimit(DWORD Selector);
  1513. #define ReadTimeStampCounter() __rdtsc()
  1514. /* VOID __movsb(PBYTE Destination,BYTE const *Source,SIZE_T Count); moved to psdk_inc/intrin-impl.h */
  1515. /* VOID __movsw(PWORD Destination,WORD const *Source,SIZE_T Count); moved to psdk_inc/intrin-impl.h */
  1516. /* VOID __movsd(PDWORD Destination,DWORD const *Source,SIZE_T Count); moved to psdk_inc/intrin-impl.h */
  1517. /* VOID __movsq(PDWORD64 Destination,DWORD64 const *Source,SIZE_T Count); moved to psdk_inc/intrin-impl.h */
  1518. #define MultiplyHigh __mulh
  1519. #define UnsignedMultiplyHigh __umulh
  1520. LONGLONG MultiplyHigh(LONGLONG Multiplier,LONGLONG Multiplicand);
  1521. ULONGLONG UnsignedMultiplyHigh(ULONGLONG Multiplier,ULONGLONG Multiplicand);
  1522. #define ShiftLeft128 __shiftleft128
  1523. #define ShiftRight128 __shiftright128
  1524. DWORD64 ShiftLeft128(DWORD64 LowPart,DWORD64 HighPart,BYTE Shift);
  1525. DWORD64 ShiftRight128(DWORD64 LowPart,DWORD64 HighPart,BYTE Shift);
  1526. #define Multiply128 _mul128
  1527. LONG64 Multiply128(LONG64 Multiplier,LONG64 Multiplicand,LONG64 *HighProduct);
  1528. #define UnsignedMultiply128 _umul128
  1529. DWORD64 UnsignedMultiply128(DWORD64 Multiplier,DWORD64 Multiplicand,DWORD64 *HighProduct);
  1530. LONG64 MultiplyExtract128(LONG64 Multiplier,LONG64 Multiplicand,BYTE Shift);
  1531. DWORD64 UnsignedMultiplyExtract128(DWORD64 Multiplier,DWORD64 Multiplicand,BYTE Shift);
  1532. #ifndef __CRT__NO_INLINE
  1533. __CRT_INLINE LONG64 MultiplyExtract128(LONG64 Multiplier,LONG64 Multiplicand,BYTE Shift) {
  1534. LONG64 extractedProduct;
  1535. LONG64 highProduct;
  1536. LONG64 lowProduct;
  1537. lowProduct = Multiply128(Multiplier,Multiplicand,&highProduct);
  1538. extractedProduct = (LONG64)ShiftRight128((LONG64)lowProduct,(LONG64)highProduct,Shift);
  1539. return extractedProduct;
  1540. }
  1541. __CRT_INLINE DWORD64 UnsignedMultiplyExtract128(DWORD64 Multiplier,DWORD64 Multiplicand,BYTE Shift) {
  1542. DWORD64 extractedProduct;
  1543. DWORD64 highProduct;
  1544. DWORD64 lowProduct;
  1545. lowProduct = UnsignedMultiply128(Multiplier,Multiplicand,&highProduct);
  1546. extractedProduct = ShiftRight128(lowProduct,highProduct,Shift);
  1547. return extractedProduct;
  1548. }
  1549. #endif
  1550. /* unsigned char __readgsbyte(unsigned __LONG32 Offset); moved to psdk_inc/intrin-impl.h */
  1551. /* unsigned short __readgsword(unsigned __LONG32 Offset); moved to psdk_inc/intrin-impl.h */
  1552. /* unsigned __LONG32 __readgsdword(unsigned __LONG32 Offset); moved to psdk_inc/intrin-impl.h */
  1553. /* __MINGW_EXTENSION unsigned __int64 __readgsqword(unsigned __LONG32 Offset); moved to psdk_inc/intrin-impl.h */
  1554. /* void __writegsbyte(unsigned __LONG32 Offset,unsigned char Data); moved to psdk_inc/intrin-impl.h */
  1555. /* void __writegsword(unsigned __LONG32 Offset,unsigned short Data); moved to psdk_inc/intrin-impl.h */
  1556. /* void __writegsdword(unsigned __LONG32 Offset,unsigned __LONG32 Data); moved to psdk_inc/intrin-impl.h */
  1557. #ifdef __cplusplus
  1558. }
  1559. #endif
  1560. #endif /* defined(__x86_64) && !defined(RC_INVOKED) */
  1561. #define EXCEPTION_READ_FAULT 0
  1562. #define EXCEPTION_WRITE_FAULT 1
  1563. #define EXCEPTION_EXECUTE_FAULT 8
  1564. #if !defined(RC_INVOKED)
  1565. #define CONTEXT_AMD64 0x100000
  1566. #define CONTEXT_CONTROL (CONTEXT_AMD64 | __MSABI_LONG(0x1))
  1567. #define CONTEXT_INTEGER (CONTEXT_AMD64 | __MSABI_LONG(0x2))
  1568. #define CONTEXT_SEGMENTS (CONTEXT_AMD64 | __MSABI_LONG(0x4))
  1569. #define CONTEXT_FLOATING_POINT (CONTEXT_AMD64 | __MSABI_LONG(0x8))
  1570. #define CONTEXT_DEBUG_REGISTERS (CONTEXT_AMD64 | __MSABI_LONG(0x10))
  1571. #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT)
  1572. #define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS)
  1573. #define CONTEXT_XSTATE (CONTEXT_AMD64 | __MSABI_LONG(0x40))
  1574. #define CONTEXT_KERNEL_CET (CONTEXT_AMD64 | __MSABI_LONG(0x80))
  1575. #define CONTEXT_EXCEPTION_ACTIVE 0x8000000
  1576. #define CONTEXT_SERVICE_ACTIVE 0x10000000
  1577. #define CONTEXT_EXCEPTION_REQUEST 0x40000000
  1578. #define CONTEXT_EXCEPTION_REPORTING 0x80000000
  1579. #define CONTEXT_UNWOUND_TO_CALL 0x20000000
  1580. #endif /* !defined(RC_INVOKED) */
  1581. #define INITIAL_MXCSR 0x1f80
  1582. #define INITIAL_FPCSR 0x027f
  1583. typedef struct _XMM_SAVE_AREA32 {
  1584. WORD ControlWord;
  1585. WORD StatusWord;
  1586. BYTE TagWord;
  1587. BYTE Reserved1;
  1588. WORD ErrorOpcode;
  1589. DWORD ErrorOffset;
  1590. WORD ErrorSelector;
  1591. WORD Reserved2;
  1592. DWORD DataOffset;
  1593. WORD DataSelector;
  1594. WORD Reserved3;
  1595. DWORD MxCsr;
  1596. DWORD MxCsr_Mask;
  1597. M128A FloatRegisters[8];
  1598. M128A XmmRegisters[16];
  1599. BYTE Reserved4[96];
  1600. } XMM_SAVE_AREA32,*PXMM_SAVE_AREA32;
  1601. #define LEGACY_SAVE_AREA_LENGTH sizeof(XMM_SAVE_AREA32)
  1602. typedef struct DECLSPEC_ALIGN(16) _CONTEXT {
  1603. DWORD64 P1Home;
  1604. DWORD64 P2Home;
  1605. DWORD64 P3Home;
  1606. DWORD64 P4Home;
  1607. DWORD64 P5Home;
  1608. DWORD64 P6Home;
  1609. DWORD ContextFlags;
  1610. DWORD MxCsr;
  1611. WORD SegCs;
  1612. WORD SegDs;
  1613. WORD SegEs;
  1614. WORD SegFs;
  1615. WORD SegGs;
  1616. WORD SegSs;
  1617. DWORD EFlags;
  1618. DWORD64 Dr0;
  1619. DWORD64 Dr1;
  1620. DWORD64 Dr2;
  1621. DWORD64 Dr3;
  1622. DWORD64 Dr6;
  1623. DWORD64 Dr7;
  1624. DWORD64 Rax;
  1625. DWORD64 Rcx;
  1626. DWORD64 Rdx;
  1627. DWORD64 Rbx;
  1628. DWORD64 Rsp;
  1629. DWORD64 Rbp;
  1630. DWORD64 Rsi;
  1631. DWORD64 Rdi;
  1632. DWORD64 R8;
  1633. DWORD64 R9;
  1634. DWORD64 R10;
  1635. DWORD64 R11;
  1636. DWORD64 R12;
  1637. DWORD64 R13;
  1638. DWORD64 R14;
  1639. DWORD64 R15;
  1640. DWORD64 Rip;
  1641. __C89_NAMELESS union {
  1642. XMM_SAVE_AREA32 FltSave;
  1643. XMM_SAVE_AREA32 FloatSave;
  1644. __C89_NAMELESS struct {
  1645. M128A Header[2];
  1646. M128A Legacy[8];
  1647. M128A Xmm0;
  1648. M128A Xmm1;
  1649. M128A Xmm2;
  1650. M128A Xmm3;
  1651. M128A Xmm4;
  1652. M128A Xmm5;
  1653. M128A Xmm6;
  1654. M128A Xmm7;
  1655. M128A Xmm8;
  1656. M128A Xmm9;
  1657. M128A Xmm10;
  1658. M128A Xmm11;
  1659. M128A Xmm12;
  1660. M128A Xmm13;
  1661. M128A Xmm14;
  1662. M128A Xmm15;
  1663. };
  1664. };
  1665. M128A VectorRegister[26];
  1666. DWORD64 VectorControl;
  1667. DWORD64 DebugControl;
  1668. DWORD64 LastBranchToRip;
  1669. DWORD64 LastBranchFromRip;
  1670. DWORD64 LastExceptionToRip;
  1671. DWORD64 LastExceptionFromRip;
  1672. } CONTEXT,*PCONTEXT;
  1673. #define RUNTIME_FUNCTION_INDIRECT 0x1
  1674. typedef struct _RUNTIME_FUNCTION {
  1675. DWORD BeginAddress;
  1676. DWORD EndAddress;
  1677. DWORD UnwindData;
  1678. } RUNTIME_FUNCTION,*PRUNTIME_FUNCTION;
  1679. typedef PRUNTIME_FUNCTION (*PGET_RUNTIME_FUNCTION_CALLBACK)(DWORD64 ControlPc,PVOID Context);
  1680. typedef DWORD (*POUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK)(HANDLE Process,PVOID TableAddress,PDWORD Entries,PRUNTIME_FUNCTION *Functions);
  1681. #define OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK_EXPORT_NAME "OutOfProcessFunctionTableCallback"
  1682. #define UNW_FLAG_NHANDLER 0x0
  1683. #define UNW_FLAG_EHANDLER 0x1
  1684. #define UNW_FLAG_UHANDLER 0x2
  1685. #define UNW_FLAG_CHAININFO 0x4
  1686. #endif /* end of _AMD64_ */
  1687. #ifdef _ARM_
  1688. #if defined(__arm__) && !defined(RC_INVOKED)
  1689. #ifdef __cplusplus
  1690. extern "C" {
  1691. #endif
  1692. #define BitTest _bittest
  1693. #define BitTestAndComplement _bittestandcomplement
  1694. #define BitTestAndSet _bittestandset
  1695. #define BitTestAndReset _bittestandreset
  1696. #define BitScanForward _BitScanForward
  1697. #define BitScanReverse _BitScanReverse
  1698. #define InterlockedIncrement16 _InterlockedIncrement16
  1699. #define InterlockedDecrement16 _InterlockedDecrement16
  1700. #define InterlockedCompareExchange16 _InterlockedCompareExchange16
  1701. #define InterlockedAnd _InterlockedAnd
  1702. #define InterlockedOr _InterlockedOr
  1703. #define InterlockedXor _InterlockedXor
  1704. #define InterlockedIncrement _InterlockedIncrement
  1705. #define InterlockedIncrementAcquire InterlockedIncrement
  1706. #define InterlockedIncrementRelease InterlockedIncrement
  1707. #define InterlockedDecrement _InterlockedDecrement
  1708. #define InterlockedDecrementAcquire InterlockedDecrement
  1709. #define InterlockedDecrementRelease InterlockedDecrement
  1710. #define InterlockedAdd _InterlockedAdd
  1711. #define InterlockedExchange _InterlockedExchange
  1712. #define InterlockedExchangeAdd _InterlockedExchangeAdd
  1713. #define InterlockedCompareExchange _InterlockedCompareExchange
  1714. #define InterlockedCompareExchangeAcquire InterlockedCompareExchange
  1715. #define InterlockedCompareExchangeRelease InterlockedCompareExchange
  1716. #define InterlockedAnd64 _InterlockedAnd64
  1717. #define InterlockedAndAffinity InterlockedAnd64
  1718. #define InterlockedOr64 _InterlockedOr64
  1719. #define InterlockedOrAffinity InterlockedOr64
  1720. #define InterlockedXor64 _InterlockedXor64
  1721. #define InterlockedIncrement64 _InterlockedIncrement64
  1722. #define InterlockedDecrement64 _InterlockedDecrement64
  1723. #define InterlockedAdd64 _InterlockedAdd64
  1724. #define InterlockedExchange64 _InterlockedExchange64
  1725. #define InterlockedExchangeAcquire64 InterlockedExchange64
  1726. #define InterlockedExchangeAdd64 _InterlockedExchangeAdd64
  1727. #define InterlockedCompareExchange64 _InterlockedCompareExchange64
  1728. #define InterlockedCompareExchangeAcquire64 InterlockedCompareExchange64
  1729. #define InterlockedCompareExchangeRelease64 InterlockedCompareExchange64
  1730. #define InterlockedExchangePointer _InterlockedExchangePointer
  1731. #define InterlockedCompareExchangePointer _InterlockedCompareExchangePointer
  1732. #define InterlockedCompareExchangePointerAcquire _InterlockedCompareExchangePointer
  1733. #define InterlockedCompareExchangePointerRelease _InterlockedCompareExchangePointer
  1734. #define YieldProcessor() __asm__ __volatile__("dmb ishst\n\tyield":::"memory")
  1735. #define MemoryBarrier() __asm__ __volatile__("dmb":::"memory")
  1736. #define PreFetchCacheLine(l,a) __prefetch((const void *) (a))
  1737. #define PrefetchForWrite(p) __prefetch((const void *) (p))
  1738. #define ReadForWriteAccess(p) (*(p))
  1739. #define PF_TEMPORAL_LEVEL_1 0
  1740. #define PF_TEMPORAL_LEVEL_2 1
  1741. #define PF_TEMPORAL_LEVEL_3 2
  1742. #define PF_NON_TEMPORAL_LEVEL_ALL 3
  1743. #ifdef __cplusplus
  1744. }
  1745. #endif
  1746. #endif /* defined(__arm__) && !defined(RC_INVOKED) */
  1747. #define EXCEPTION_READ_FAULT 0
  1748. #define EXCEPTION_WRITE_FAULT 1
  1749. #define EXCEPTION_EXECUTE_FAULT 8
  1750. #if !defined(RC_INVOKED)
  1751. #define CONTEXT_ARM 0x0200000
  1752. #define CONTEXT_CONTROL (CONTEXT_ARM | 0x00000001)
  1753. #define CONTEXT_INTEGER (CONTEXT_ARM | 0x00000002)
  1754. #define CONTEXT_FLOATING_POINT (CONTEXT_ARM | 0x00000004)
  1755. #define CONTEXT_DEBUG_REGISTERS (CONTEXT_ARM | 0x00000008)
  1756. #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT)
  1757. #define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS)
  1758. #define CONTEXT_EXCEPTION_ACTIVE 0x08000000
  1759. #define CONTEXT_SERVICE_ACTIVE 0x10000000
  1760. #define CONTEXT_EXCEPTION_REQUEST 0x40000000
  1761. #define CONTEXT_EXCEPTION_REPORTING 0x80000000
  1762. #define CONTEXT_UNWOUND_TO_CALL 0x20000000
  1763. #endif /* !defined(RC_INVOKED) */
  1764. #define INITIAL_CPSR 0x10
  1765. #define INITIAL_FPSCR 0x00
  1766. #define ARM_MAX_BREAKPOINTS 8
  1767. #define ARM_MAX_WATCHPOINTS 1
  1768. typedef struct _NEON128 {
  1769. ULONGLONG Low;
  1770. LONGLONG High;
  1771. } NEON128, *PNEON128;
  1772. typedef struct DECLSPEC_ALIGN(8) _CONTEXT {
  1773. DWORD ContextFlags;
  1774. DWORD R0;
  1775. DWORD R1;
  1776. DWORD R2;
  1777. DWORD R3;
  1778. DWORD R4;
  1779. DWORD R5;
  1780. DWORD R6;
  1781. DWORD R7;
  1782. DWORD R8;
  1783. DWORD R9;
  1784. DWORD R10;
  1785. DWORD R11;
  1786. DWORD R12;
  1787. DWORD Sp;
  1788. DWORD Lr;
  1789. DWORD Pc;
  1790. DWORD Cpsr;
  1791. DWORD Fpscr;
  1792. DWORD Padding;
  1793. union {
  1794. NEON128 Q[16];
  1795. ULONGLONG D[32];
  1796. DWORD S[32];
  1797. } DUMMYUNIONNAME;
  1798. DWORD Bvr[ARM_MAX_BREAKPOINTS];
  1799. DWORD Bcr[ARM_MAX_BREAKPOINTS];
  1800. DWORD Wvr[ARM_MAX_WATCHPOINTS];
  1801. DWORD Wcr[ARM_MAX_WATCHPOINTS];
  1802. DWORD Padding2[2];
  1803. } CONTEXT, *PCONTEXT;
  1804. typedef struct _IMAGE_ARM_RUNTIME_FUNCTION_ENTRY RUNTIME_FUNCTION, *PRUNTIME_FUNCTION;
  1805. typedef PRUNTIME_FUNCTION (*PGET_RUNTIME_FUNCTION_CALLBACK)(DWORD ControlPc,PVOID Context);
  1806. #define UNW_FLAG_NHANDLER 0x0
  1807. #define UNW_FLAG_EHANDLER 0x1
  1808. #define UNW_FLAG_UHANDLER 0x2
  1809. #define UNWIND_HISTORY_TABLE_SIZE 12
  1810. typedef struct _UNWIND_HISTORY_TABLE_ENTRY {
  1811. DWORD ImageBase;
  1812. PRUNTIME_FUNCTION FunctionEntry;
  1813. } UNWIND_HISTORY_TABLE_ENTRY, *PUNWIND_HISTORY_TABLE_ENTRY;
  1814. typedef struct _UNWIND_HISTORY_TABLE {
  1815. DWORD Count;
  1816. BYTE LocalHint;
  1817. BYTE GlobalHint;
  1818. BYTE Search;
  1819. BYTE Once;
  1820. DWORD LowAddress;
  1821. DWORD HighAddress;
  1822. UNWIND_HISTORY_TABLE_ENTRY Entry[UNWIND_HISTORY_TABLE_SIZE];
  1823. } UNWIND_HISTORY_TABLE, *PUNWIND_HISTORY_TABLE;
  1824. struct _DISPATCHER_CONTEXT;
  1825. typedef struct _DISPATCHER_CONTEXT DISPATCHER_CONTEXT;
  1826. typedef struct _DISPATCHER_CONTEXT *PDISPATCHER_CONTEXT;
  1827. struct _DISPATCHER_CONTEXT {
  1828. ULONG ControlPc;
  1829. ULONG ImageBase;
  1830. PRUNTIME_FUNCTION FunctionEntry;
  1831. ULONG EstablisherFrame;
  1832. ULONG TargetPc;
  1833. PCONTEXT ContextRecord;
  1834. PEXCEPTION_ROUTINE LanguageHandler;
  1835. PVOID HandlerData;
  1836. PUNWIND_HISTORY_TABLE HistoryTable;
  1837. ULONG ScopeIndex;
  1838. BOOLEAN ControlPcIsUnwound;
  1839. PBYTE NonVolatileRegisters;
  1840. ULONG VirtualVfpHead;
  1841. };
  1842. typedef struct _KNONVOLATILE_CONTEXT_POINTERS {
  1843. PDWORD R4;
  1844. PDWORD R5;
  1845. PDWORD R6;
  1846. PDWORD R7;
  1847. PDWORD R8;
  1848. PDWORD R9;
  1849. PDWORD R10;
  1850. PDWORD R11;
  1851. PDWORD Lr;
  1852. PULONGLONG D8;
  1853. PULONGLONG D9;
  1854. PULONGLONG D10;
  1855. PULONGLONG D11;
  1856. PULONGLONG D12;
  1857. PULONGLONG D13;
  1858. PULONGLONG D14;
  1859. PULONGLONG D15;
  1860. } KNONVOLATILE_CONTEXT_POINTERS, *PKNONVOLATILE_CONTEXT_POINTERS;
  1861. #define OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK_EXPORT_NAME "OutOfProcessFunctionTableCallback"
  1862. #endif /* _ARM_ */
  1863. #ifdef _ARM64_
  1864. #if defined(__aarch64__) && !defined(RC_INVOKED)
  1865. #ifdef __cplusplus
  1866. extern "C" {
  1867. #endif
  1868. #define BitTest _bittest
  1869. #define BitTestAndComplement _bittestandcomplement
  1870. #define BitTestAndSet _bittestandset
  1871. #define BitTestAndReset _bittestandreset
  1872. #define BitScanForward _BitScanForward
  1873. #define BitScanReverse _BitScanReverse
  1874. #define BitScanForward64 _BitScanForward64
  1875. #define BitScanReverse64 _BitScanReverse64
  1876. #define InterlockedIncrement16 _InterlockedIncrement16
  1877. #define InterlockedDecrement16 _InterlockedDecrement16
  1878. #define InterlockedCompareExchange16 _InterlockedCompareExchange16
  1879. #define InterlockedAnd _InterlockedAnd
  1880. #define InterlockedOr _InterlockedOr
  1881. #define InterlockedXor _InterlockedXor
  1882. #define InterlockedIncrement _InterlockedIncrement
  1883. #define InterlockedIncrementAcquire InterlockedIncrement
  1884. #define InterlockedIncrementRelease InterlockedIncrement
  1885. #define InterlockedDecrement _InterlockedDecrement
  1886. #define InterlockedDecrementAcquire InterlockedDecrement
  1887. #define InterlockedDecrementRelease InterlockedDecrement
  1888. #define InterlockedAdd _InterlockedAdd
  1889. #define InterlockedExchange _InterlockedExchange
  1890. #define InterlockedExchangeAdd _InterlockedExchangeAdd
  1891. #define InterlockedCompareExchange _InterlockedCompareExchange
  1892. #define InterlockedCompareExchangeAcquire InterlockedCompareExchange
  1893. #define InterlockedCompareExchangeRelease InterlockedCompareExchange
  1894. #define InterlockedAnd64 _InterlockedAnd64
  1895. #define InterlockedAndAffinity InterlockedAnd64
  1896. #define InterlockedOr64 _InterlockedOr64
  1897. #define InterlockedOrAffinity InterlockedOr64
  1898. #define InterlockedXor64 _InterlockedXor64
  1899. #define InterlockedIncrement64 _InterlockedIncrement64
  1900. #define InterlockedDecrement64 _InterlockedDecrement64
  1901. #define InterlockedAdd64 _InterlockedAdd64
  1902. #define InterlockedExchange64 _InterlockedExchange64
  1903. #define InterlockedExchangeAcquire64 InterlockedExchange64
  1904. #define InterlockedExchangeAdd64 _InterlockedExchangeAdd64
  1905. #define InterlockedCompareExchange64 _InterlockedCompareExchange64
  1906. #define InterlockedCompareExchangeAcquire64 InterlockedCompareExchange64
  1907. #define InterlockedCompareExchangeRelease64 InterlockedCompareExchange64
  1908. #define InterlockedExchangePointer _InterlockedExchangePointer
  1909. #define InterlockedCompareExchangePointer _InterlockedCompareExchangePointer
  1910. #define InterlockedCompareExchangePointerAcquire _InterlockedCompareExchangePointer
  1911. #define InterlockedCompareExchangePointerRelease _InterlockedCompareExchangePointer
  1912. #define YieldProcessor() __asm__ __volatile__("dmb ishst\n\tyield":::"memory")
  1913. #define MemoryBarrier() __asm__ __volatile__("dmb sy":::"memory")
  1914. #define PreFetchCacheLine(l,a) __prefetch((const void *) (a))
  1915. #define PrefetchForWrite(p) __prefetch((const void *) (p))
  1916. #define ReadForWriteAccess(p) (*(p))
  1917. #define PF_TEMPORAL_LEVEL_1 0
  1918. #define PF_TEMPORAL_LEVEL_2 1
  1919. #define PF_TEMPORAL_LEVEL_3 2
  1920. #define PF_NON_TEMPORAL_LEVEL_ALL 3
  1921. #ifdef __cplusplus
  1922. }
  1923. #endif
  1924. #endif /* defined(__aarch64__) && !defined(RC_INVOKED) */
  1925. #define EXCEPTION_READ_FAULT 0
  1926. #define EXCEPTION_WRITE_FAULT 1
  1927. #define EXCEPTION_EXECUTE_FAULT 8
  1928. #if !defined(RC_INVOKED)
  1929. #define CONTEXT_ARM64 0x400000
  1930. #define CONTEXT_CONTROL (CONTEXT_ARM64 | 0x00000001)
  1931. #define CONTEXT_INTEGER (CONTEXT_ARM64 | 0x00000002)
  1932. #define CONTEXT_FLOATING_POINT (CONTEXT_ARM64 | 0x00000004)
  1933. #define CONTEXT_DEBUG_REGISTERS (CONTEXT_ARM64 | 0x00000008)
  1934. #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER)
  1935. #define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS)
  1936. #define EXCEPTION_READ_FAULT 0
  1937. #define EXCEPTION_WRITE_FAULT 1
  1938. #define EXCEPTION_EXECUTE_FAULT 8
  1939. #define ARM64_MAX_BREAKPOINTS 8
  1940. #define ARM64_MAX_WATCHPOINTS 2
  1941. #endif /* !defined(RC_INVOKED) */
  1942. typedef union _NEON128 {
  1943. struct
  1944. {
  1945. ULONGLONG Low;
  1946. LONGLONG High;
  1947. } DUMMYSTRUCTNAME;
  1948. double D[2];
  1949. float S[4];
  1950. WORD H[8];
  1951. BYTE B[16];
  1952. } NEON128, *PNEON128;
  1953. typedef struct DECLSPEC_ALIGN(16) _CONTEXT {
  1954. ULONG ContextFlags; /* 000 */
  1955. /* CONTEXT_INTEGER */
  1956. ULONG Cpsr; /* 004 */
  1957. union
  1958. {
  1959. struct
  1960. {
  1961. DWORD64 X0; /* 008 */
  1962. DWORD64 X1; /* 010 */
  1963. DWORD64 X2; /* 018 */
  1964. DWORD64 X3; /* 020 */
  1965. DWORD64 X4; /* 028 */
  1966. DWORD64 X5; /* 030 */
  1967. DWORD64 X6; /* 038 */
  1968. DWORD64 X7; /* 040 */
  1969. DWORD64 X8; /* 048 */
  1970. DWORD64 X9; /* 050 */
  1971. DWORD64 X10; /* 058 */
  1972. DWORD64 X11; /* 060 */
  1973. DWORD64 X12; /* 068 */
  1974. DWORD64 X13; /* 070 */
  1975. DWORD64 X14; /* 078 */
  1976. DWORD64 X15; /* 080 */
  1977. DWORD64 X16; /* 088 */
  1978. DWORD64 X17; /* 090 */
  1979. DWORD64 X18; /* 098 */
  1980. DWORD64 X19; /* 0a0 */
  1981. DWORD64 X20; /* 0a8 */
  1982. DWORD64 X21; /* 0b0 */
  1983. DWORD64 X22; /* 0b8 */
  1984. DWORD64 X23; /* 0c0 */
  1985. DWORD64 X24; /* 0c8 */
  1986. DWORD64 X25; /* 0d0 */
  1987. DWORD64 X26; /* 0d8 */
  1988. DWORD64 X27; /* 0e0 */
  1989. DWORD64 X28; /* 0e8 */
  1990. DWORD64 Fp; /* 0f0 */
  1991. DWORD64 Lr; /* 0f8 */
  1992. } DUMMYSTRUCTNAME;
  1993. DWORD64 X[31]; /* 008 */
  1994. } DUMMYUNIONNAME;
  1995. /* CONTEXT_CONTROL */
  1996. DWORD64 Sp; /* 100 */
  1997. DWORD64 Pc; /* 108 */
  1998. /* CONTEXT_FLOATING_POINT */
  1999. NEON128 V[32]; /* 110 */
  2000. DWORD Fpcr; /* 310 */
  2001. DWORD Fpsr; /* 314 */
  2002. /* CONTEXT_DEBUG_REGISTERS */
  2003. DWORD Bcr[ARM64_MAX_BREAKPOINTS]; /* 318 */
  2004. DWORD64 Bvr[ARM64_MAX_BREAKPOINTS]; /* 338 */
  2005. DWORD Wcr[ARM64_MAX_WATCHPOINTS]; /* 378 */
  2006. DWORD64 Wvr[ARM64_MAX_WATCHPOINTS]; /* 380 */
  2007. } CONTEXT, *PCONTEXT;
  2008. typedef struct _IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY RUNTIME_FUNCTION, *PRUNTIME_FUNCTION;
  2009. typedef PRUNTIME_FUNCTION (*PGET_RUNTIME_FUNCTION_CALLBACK)(DWORD64 ControlPc,PVOID Context);
  2010. #define UNW_FLAG_NHANDLER 0x0
  2011. #define UNW_FLAG_EHANDLER 0x1
  2012. #define UNW_FLAG_UHANDLER 0x2
  2013. #define UNWIND_HISTORY_TABLE_SIZE 12
  2014. typedef struct _UNWIND_HISTORY_TABLE_ENTRY {
  2015. DWORD64 ImageBase;
  2016. PRUNTIME_FUNCTION FunctionEntry;
  2017. } UNWIND_HISTORY_TABLE_ENTRY, *PUNWIND_HISTORY_TABLE_ENTRY;
  2018. typedef struct _UNWIND_HISTORY_TABLE {
  2019. DWORD Count;
  2020. BYTE LocalHint;
  2021. BYTE GlobalHint;
  2022. BYTE Search;
  2023. BYTE Once;
  2024. DWORD64 LowAddress;
  2025. DWORD64 HighAddress;
  2026. UNWIND_HISTORY_TABLE_ENTRY Entry[UNWIND_HISTORY_TABLE_SIZE];
  2027. } UNWIND_HISTORY_TABLE, *PUNWIND_HISTORY_TABLE;
  2028. struct _DISPATCHER_CONTEXT;
  2029. typedef struct _DISPATCHER_CONTEXT DISPATCHER_CONTEXT;
  2030. typedef struct _DISPATCHER_CONTEXT *PDISPATCHER_CONTEXT;
  2031. struct _DISPATCHER_CONTEXT {
  2032. ULONG_PTR ControlPc;
  2033. ULONG_PTR ImageBase;
  2034. PRUNTIME_FUNCTION FunctionEntry;
  2035. ULONG_PTR EstablisherFrame;
  2036. ULONG_PTR TargetPc;
  2037. PCONTEXT ContextRecord;
  2038. PEXCEPTION_ROUTINE LanguageHandler;
  2039. PVOID HandlerData;
  2040. PUNWIND_HISTORY_TABLE HistoryTable;
  2041. ULONG ScopeIndex;
  2042. BOOLEAN ControlPcIsUnwound;
  2043. PBYTE NonVolatileRegisters;
  2044. };
  2045. typedef struct _KNONVOLATILE_CONTEXT_POINTERS {
  2046. PDWORD64 X19;
  2047. PDWORD64 X20;
  2048. PDWORD64 X21;
  2049. PDWORD64 X22;
  2050. PDWORD64 X23;
  2051. PDWORD64 X24;
  2052. PDWORD64 X25;
  2053. PDWORD64 X26;
  2054. PDWORD64 X27;
  2055. PDWORD64 X28;
  2056. PDWORD64 Fp;
  2057. PDWORD64 Lr;
  2058. PDWORD64 D8;
  2059. PDWORD64 D9;
  2060. PDWORD64 D10;
  2061. PDWORD64 D11;
  2062. PDWORD64 D12;
  2063. PDWORD64 D13;
  2064. PDWORD64 D14;
  2065. PDWORD64 D15;
  2066. } KNONVOLATILE_CONTEXT_POINTERS, *PKNONVOLATILE_CONTEXT_POINTERS;
  2067. #define OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK_EXPORT_NAME "OutOfProcessFunctionTableCallback"
  2068. #endif /* _ARM64_ */
  2069. #ifdef _X86_
  2070. #if defined(__i386__) && !defined(__x86_64) && !defined(RC_INVOKED)
  2071. #ifdef __cplusplus
  2072. extern "C" {
  2073. #endif
  2074. #define BitTest _bittest
  2075. #define BitTestAndComplement _bittestandcomplement
  2076. #define BitTestAndSet _bittestandset
  2077. #define BitTestAndReset _bittestandreset
  2078. #define BitScanForward _BitScanForward
  2079. #define BitScanReverse _BitScanReverse
  2080. #define InterlockedIncrement16 _InterlockedIncrement16
  2081. #define InterlockedDecrement16 _InterlockedDecrement16
  2082. #define InterlockedCompareExchange16 _InterlockedCompareExchange16
  2083. #define InterlockedAnd _InterlockedAnd
  2084. #define InterlockedOr _InterlockedOr
  2085. #define InterlockedXor _InterlockedXor
  2086. #define InterlockedIncrement _InterlockedIncrement
  2087. #define InterlockedIncrementAcquire InterlockedIncrement
  2088. #define InterlockedIncrementRelease InterlockedIncrement
  2089. #define InterlockedDecrement _InterlockedDecrement
  2090. #define InterlockedDecrementAcquire InterlockedDecrement
  2091. #define InterlockedDecrementRelease InterlockedDecrement
  2092. #define InterlockedAdd _InterlockedAdd
  2093. #define InterlockedExchange _InterlockedExchange
  2094. #define InterlockedExchangeAdd _InterlockedExchangeAdd
  2095. #define InterlockedCompareExchange _InterlockedCompareExchange
  2096. #define InterlockedCompareExchangeAcquire InterlockedCompareExchange
  2097. #define InterlockedCompareExchangeRelease InterlockedCompareExchange
  2098. #define InterlockedAnd64 _InterlockedAnd64
  2099. #define InterlockedAndAffinity InterlockedAnd64
  2100. #define InterlockedOr64 _InterlockedOr64
  2101. #define InterlockedOrAffinity InterlockedOr64
  2102. #define InterlockedXor64 _InterlockedXor64
  2103. #define InterlockedIncrement64 _InterlockedIncrement64
  2104. #define InterlockedDecrement64 _InterlockedDecrement64
  2105. #define InterlockedAdd64 _InterlockedAdd64
  2106. #define InterlockedExchange64 _InterlockedExchange64
  2107. #define InterlockedExchangeAcquire64 InterlockedExchange64
  2108. #define InterlockedExchangeAdd64 _InterlockedExchangeAdd64
  2109. #define InterlockedCompareExchange64 _InterlockedCompareExchange64
  2110. #define InterlockedCompareExchangeAcquire64 InterlockedCompareExchange64
  2111. #define InterlockedCompareExchangeRelease64 InterlockedCompareExchange64
  2112. #define InterlockedExchangePointer _InterlockedExchangePointer
  2113. #define InterlockedCompareExchangePointer(Destination, ExChange, Comperand) (PVOID) (LONG_PTR)InterlockedCompareExchange ((LONG volatile *) (Destination),(LONG) (LONG_PTR) (ExChange),(LONG) (LONG_PTR) (Comperand))
  2114. #define InterlockedCompareExchangePointerAcquire InterlockedCompareExchangePointer
  2115. #define InterlockedCompareExchangePointerRelease InterlockedCompareExchangePointer
  2116. #ifdef _PREFIX_
  2117. /* BYTE __readfsbyte(DWORD Offset); moved to psdk_inc/intrin-impl.h */
  2118. /* WORD __readfsword(DWORD Offset); moved to psdk_inc/intrin-impl.h */
  2119. /* DWORD __readfsdword(DWORD Offset); moved to psdk_inc/intrin-impl.h */
  2120. /* VOID __writefsbyte(DWORD Offset,BYTE Data); moved to psdk_inc/intrin-impl.h */
  2121. /* VOID __writefsword(DWORD Offset,WORD Data); moved to psdk_inc/intrin-impl.h */
  2122. /* VOID __writefsdword(DWORD Offset,DWORD Data); moved to psdk_inc/intrin-impl.h */
  2123. #endif
  2124. #ifdef __cplusplus
  2125. }
  2126. #endif
  2127. #endif /* defined(__i386__) && !defined(__x86_64) && !defined(RC_INVOKED) */
  2128. #if defined(__i386__) && !defined(__x86_64)
  2129. #ifdef __SSE2__
  2130. #include <emmintrin.h>
  2131. #define YieldProcessor _mm_pause
  2132. #define MemoryBarrier _mm_mfence
  2133. #else
  2134. #define YieldProcessor __buildpause
  2135. VOID MemoryBarrier(VOID);
  2136. FORCEINLINE VOID MemoryBarrier(VOID)
  2137. __buildmemorybarrier()
  2138. #endif
  2139. #define PreFetchCacheLine(l,a)
  2140. #define ReadForWriteAccess(p) (*(p))
  2141. #define PF_TEMPORAL_LEVEL_1
  2142. #define PF_NON_TEMPORAL_LEVEL_ALL
  2143. #define PcTeb 0x18
  2144. struct _TEB *NtCurrentTeb(void);
  2145. PVOID GetCurrentFiber(void);
  2146. PVOID GetFiberData(void);
  2147. #define DbgRaiseAssertionFailure __int2c
  2148. FORCEINLINE struct _TEB *NtCurrentTeb(void)
  2149. {
  2150. return (struct _TEB *)__readfsdword(PcTeb);
  2151. }
  2152. FORCEINLINE PVOID GetCurrentFiber(void)
  2153. {
  2154. return(PVOID)__readfsdword(0x10);
  2155. }
  2156. FORCEINLINE PVOID GetFiberData(void)
  2157. {
  2158. return *(PVOID *)GetCurrentFiber();
  2159. }
  2160. #endif /* defined(__i386__) && !defined(__x86_64) */
  2161. #define EXCEPTION_READ_FAULT 0
  2162. #define EXCEPTION_WRITE_FAULT 1
  2163. #define EXCEPTION_EXECUTE_FAULT 8
  2164. #define SIZE_OF_80387_REGISTERS 80
  2165. #if !defined(RC_INVOKED)
  2166. #define CONTEXT_i386 0x00010000
  2167. #define CONTEXT_i486 0x00010000
  2168. #define CONTEXT_CONTROL (CONTEXT_i386 | __MSABI_LONG(0x00000001))
  2169. #define CONTEXT_INTEGER (CONTEXT_i386 | __MSABI_LONG(0x00000002))
  2170. #define CONTEXT_SEGMENTS (CONTEXT_i386 | __MSABI_LONG(0x00000004))
  2171. #define CONTEXT_FLOATING_POINT (CONTEXT_i386 | __MSABI_LONG(0x00000008))
  2172. #define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386 | __MSABI_LONG(0x00000010))
  2173. #define CONTEXT_EXTENDED_REGISTERS (CONTEXT_i386 | __MSABI_LONG(0x00000020))
  2174. #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS)
  2175. #define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS | CONTEXT_EXTENDED_REGISTERS)
  2176. #endif /* !defined(RC_INVOKED) */
  2177. #define MAXIMUM_SUPPORTED_EXTENSION 512
  2178. typedef struct _FLOATING_SAVE_AREA {
  2179. DWORD ControlWord;
  2180. DWORD StatusWord;
  2181. DWORD TagWord;
  2182. DWORD ErrorOffset;
  2183. DWORD ErrorSelector;
  2184. DWORD DataOffset;
  2185. DWORD DataSelector;
  2186. BYTE RegisterArea[SIZE_OF_80387_REGISTERS];
  2187. DWORD Cr0NpxState;
  2188. } FLOATING_SAVE_AREA;
  2189. typedef FLOATING_SAVE_AREA *PFLOATING_SAVE_AREA;
  2190. typedef struct _CONTEXT {
  2191. DWORD ContextFlags;
  2192. DWORD Dr0;
  2193. DWORD Dr1;
  2194. DWORD Dr2;
  2195. DWORD Dr3;
  2196. DWORD Dr6;
  2197. DWORD Dr7;
  2198. FLOATING_SAVE_AREA FloatSave;
  2199. DWORD SegGs;
  2200. DWORD SegFs;
  2201. DWORD SegEs;
  2202. DWORD SegDs;
  2203. DWORD Edi;
  2204. DWORD Esi;
  2205. DWORD Ebx;
  2206. DWORD Edx;
  2207. DWORD Ecx;
  2208. DWORD Eax;
  2209. DWORD Ebp;
  2210. DWORD Eip;
  2211. DWORD SegCs;
  2212. DWORD EFlags;
  2213. DWORD Esp;
  2214. DWORD SegSs;
  2215. BYTE ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION];
  2216. } CONTEXT;
  2217. typedef CONTEXT *PCONTEXT;
  2218. #endif /* end of _X86_ */
  2219. /* LONG WINAPI InterlockedIncrement(LONG volatile *); moved to psdk_inc/intrin-impl.h */
  2220. /* LONG WINAPI InterlockedDecrement(LONG volatile *); moved to psdk_inc/intrin-impl.h */
  2221. /* LONG WINAPI InterlockedExchange(LONG volatile *, LONG); moved to psdk_inc/intrin-impl.h */
  2222. #ifndef _LDT_ENTRY_DEFINED
  2223. #define _LDT_ENTRY_DEFINED
  2224. typedef struct _LDT_ENTRY {
  2225. WORD LimitLow;
  2226. WORD BaseLow;
  2227. union {
  2228. struct {
  2229. BYTE BaseMid;
  2230. BYTE Flags1;
  2231. BYTE Flags2;
  2232. BYTE BaseHi;
  2233. } Bytes;
  2234. struct {
  2235. DWORD BaseMid : 8;
  2236. DWORD Type : 5;
  2237. DWORD Dpl : 2;
  2238. DWORD Pres : 1;
  2239. DWORD LimitHi : 4;
  2240. DWORD Sys : 1;
  2241. DWORD Reserved_0 : 1;
  2242. DWORD Default_Big : 1;
  2243. DWORD Granularity : 1;
  2244. DWORD BaseHi : 8;
  2245. } Bits;
  2246. } HighWord;
  2247. } LDT_ENTRY,*PLDT_ENTRY;
  2248. #endif /* _LDT_ENTRY_DEFINED */
  2249. #if defined(__ia64__) && !defined(RC_INVOKED)
  2250. #ifdef __cplusplus
  2251. extern "C" {
  2252. #endif
  2253. BOOLEAN BitScanForward64(DWORD *Index,DWORD64 Mask);
  2254. BOOLEAN BitScanReverse64(DWORD *Index,DWORD64 Mask);
  2255. #ifdef __cplusplus
  2256. }
  2257. #endif
  2258. #endif /* defined(__ia64__) && !defined(RC_INVOKED) */
  2259. #if !defined(GENUTIL) && !defined(_GENIA64_) && defined(_IA64_)
  2260. void *_cdecl _rdteb(void);
  2261. #ifdef __ia64__
  2262. #define NtCurrentTeb() ((struct _TEB *)_rdteb())
  2263. #define GetCurrentFiber() (((PNT_TIB)NtCurrentTeb())->FiberData)
  2264. #define GetFiberData() (*(PVOID *)(GetCurrentFiber()))
  2265. #ifdef __cplusplus
  2266. extern "C" {
  2267. #endif
  2268. void __break(int);
  2269. void __yield(void);
  2270. void __mf(void);
  2271. void __lfetch(int Level,VOID CONST *Address);
  2272. void __lfetchfault(int Level,VOID CONST *Address);
  2273. void __lfetch_excl(int Level,VOID CONST *Address);
  2274. void __lfetchfault_excl(int Level,VOID CONST *Address);
  2275. #define MD_LFHINT_NONE 0x00
  2276. #define MD_LFHINT_NT1 0x01
  2277. #define MD_LFHINT_NT2 0x02
  2278. #define MD_LFHINT_NTA 0x03
  2279. #ifdef __cplusplus
  2280. }
  2281. #endif
  2282. #define YieldProcessor __yield
  2283. #define MemoryBarrier __mf
  2284. #define PreFetchCacheLine __lfetch
  2285. #define ReadForWriteAccess(p) (*(p))
  2286. #define DbgRaiseAssertionFailure() __break(ASSERT_BREAKPOINT)
  2287. #define PF_TEMPORAL_LEVEL_1 MD_LFHINT_NONE
  2288. #define PF_NON_TEMPORAL_LEVEL_ALL MD_LFHINT_NTA
  2289. #define UnsignedMultiplyHigh __UMULH
  2290. ULONGLONG UnsignedMultiplyHigh(ULONGLONG Multiplier,ULONGLONG Multiplicand);
  2291. #else /* __ia64__ */
  2292. struct _TEB *NtCurrentTeb(void);
  2293. #endif /* __ia64__ */
  2294. #endif /* !defined(GENUTIL) && !defined(_GENIA64_) && defined(_IA64_) */
  2295. #ifdef _IA64_
  2296. #define EXCEPTION_READ_FAULT 0
  2297. #define EXCEPTION_WRITE_FAULT 1
  2298. #define EXCEPTION_EXECUTE_FAULT 2
  2299. #if !defined(RC_INVOKED)
  2300. #define CONTEXT_IA64 0x00080000
  2301. #define CONTEXT_CONTROL (CONTEXT_IA64 | __MSABI_LONG(0x00000001))
  2302. #define CONTEXT_LOWER_FLOATING_POINT (CONTEXT_IA64 | __MSABI_LONG(0x00000002))
  2303. #define CONTEXT_HIGHER_FLOATING_POINT (CONTEXT_IA64 | __MSABI_LONG(0x00000004))
  2304. #define CONTEXT_INTEGER (CONTEXT_IA64 | __MSABI_LONG(0x00000008))
  2305. #define CONTEXT_DEBUG (CONTEXT_IA64 | __MSABI_LONG(0x00000010))
  2306. #define CONTEXT_IA32_CONTROL (CONTEXT_IA64 | __MSABI_LONG(0x00000020))
  2307. #define CONTEXT_FLOATING_POINT (CONTEXT_LOWER_FLOATING_POINT | CONTEXT_HIGHER_FLOATING_POINT)
  2308. #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER | CONTEXT_IA32_CONTROL)
  2309. #define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER | CONTEXT_DEBUG | CONTEXT_IA32_CONTROL)
  2310. #define CONTEXT_EXCEPTION_ACTIVE 0x8000000
  2311. #define CONTEXT_SERVICE_ACTIVE 0x10000000
  2312. #define CONTEXT_EXCEPTION_REQUEST 0x40000000
  2313. #define CONTEXT_EXCEPTION_REPORTING 0x80000000
  2314. #endif /* !defined(RC_INVOKED) */
  2315. typedef struct _CONTEXT {
  2316. DWORD ContextFlags;
  2317. DWORD Fill1[3];
  2318. ULONGLONG DbI0;
  2319. ULONGLONG DbI1;
  2320. ULONGLONG DbI2;
  2321. ULONGLONG DbI3;
  2322. ULONGLONG DbI4;
  2323. ULONGLONG DbI5;
  2324. ULONGLONG DbI6;
  2325. ULONGLONG DbI7;
  2326. ULONGLONG DbD0;
  2327. ULONGLONG DbD1;
  2328. ULONGLONG DbD2;
  2329. ULONGLONG DbD3;
  2330. ULONGLONG DbD4;
  2331. ULONGLONG DbD5;
  2332. ULONGLONG DbD6;
  2333. ULONGLONG DbD7;
  2334. FLOAT128 FltS0;
  2335. FLOAT128 FltS1;
  2336. FLOAT128 FltS2;
  2337. FLOAT128 FltS3;
  2338. FLOAT128 FltT0;
  2339. FLOAT128 FltT1;
  2340. FLOAT128 FltT2;
  2341. FLOAT128 FltT3;
  2342. FLOAT128 FltT4;
  2343. FLOAT128 FltT5;
  2344. FLOAT128 FltT6;
  2345. FLOAT128 FltT7;
  2346. FLOAT128 FltT8;
  2347. FLOAT128 FltT9;
  2348. FLOAT128 FltS4;
  2349. FLOAT128 FltS5;
  2350. FLOAT128 FltS6;
  2351. FLOAT128 FltS7;
  2352. FLOAT128 FltS8;
  2353. FLOAT128 FltS9;
  2354. FLOAT128 FltS10;
  2355. FLOAT128 FltS11;
  2356. FLOAT128 FltS12;
  2357. FLOAT128 FltS13;
  2358. FLOAT128 FltS14;
  2359. FLOAT128 FltS15;
  2360. FLOAT128 FltS16;
  2361. FLOAT128 FltS17;
  2362. FLOAT128 FltS18;
  2363. FLOAT128 FltS19;
  2364. FLOAT128 FltF32;
  2365. FLOAT128 FltF33;
  2366. FLOAT128 FltF34;
  2367. FLOAT128 FltF35;
  2368. FLOAT128 FltF36;
  2369. FLOAT128 FltF37;
  2370. FLOAT128 FltF38;
  2371. FLOAT128 FltF39;
  2372. FLOAT128 FltF40;
  2373. FLOAT128 FltF41;
  2374. FLOAT128 FltF42;
  2375. FLOAT128 FltF43;
  2376. FLOAT128 FltF44;
  2377. FLOAT128 FltF45;
  2378. FLOAT128 FltF46;
  2379. FLOAT128 FltF47;
  2380. FLOAT128 FltF48;
  2381. FLOAT128 FltF49;
  2382. FLOAT128 FltF50;
  2383. FLOAT128 FltF51;
  2384. FLOAT128 FltF52;
  2385. FLOAT128 FltF53;
  2386. FLOAT128 FltF54;
  2387. FLOAT128 FltF55;
  2388. FLOAT128 FltF56;
  2389. FLOAT128 FltF57;
  2390. FLOAT128 FltF58;
  2391. FLOAT128 FltF59;
  2392. FLOAT128 FltF60;
  2393. FLOAT128 FltF61;
  2394. FLOAT128 FltF62;
  2395. FLOAT128 FltF63;
  2396. FLOAT128 FltF64;
  2397. FLOAT128 FltF65;
  2398. FLOAT128 FltF66;
  2399. FLOAT128 FltF67;
  2400. FLOAT128 FltF68;
  2401. FLOAT128 FltF69;
  2402. FLOAT128 FltF70;
  2403. FLOAT128 FltF71;
  2404. FLOAT128 FltF72;
  2405. FLOAT128 FltF73;
  2406. FLOAT128 FltF74;
  2407. FLOAT128 FltF75;
  2408. FLOAT128 FltF76;
  2409. FLOAT128 FltF77;
  2410. FLOAT128 FltF78;
  2411. FLOAT128 FltF79;
  2412. FLOAT128 FltF80;
  2413. FLOAT128 FltF81;
  2414. FLOAT128 FltF82;
  2415. FLOAT128 FltF83;
  2416. FLOAT128 FltF84;
  2417. FLOAT128 FltF85;
  2418. FLOAT128 FltF86;
  2419. FLOAT128 FltF87;
  2420. FLOAT128 FltF88;
  2421. FLOAT128 FltF89;
  2422. FLOAT128 FltF90;
  2423. FLOAT128 FltF91;
  2424. FLOAT128 FltF92;
  2425. FLOAT128 FltF93;
  2426. FLOAT128 FltF94;
  2427. FLOAT128 FltF95;
  2428. FLOAT128 FltF96;
  2429. FLOAT128 FltF97;
  2430. FLOAT128 FltF98;
  2431. FLOAT128 FltF99;
  2432. FLOAT128 FltF100;
  2433. FLOAT128 FltF101;
  2434. FLOAT128 FltF102;
  2435. FLOAT128 FltF103;
  2436. FLOAT128 FltF104;
  2437. FLOAT128 FltF105;
  2438. FLOAT128 FltF106;
  2439. FLOAT128 FltF107;
  2440. FLOAT128 FltF108;
  2441. FLOAT128 FltF109;
  2442. FLOAT128 FltF110;
  2443. FLOAT128 FltF111;
  2444. FLOAT128 FltF112;
  2445. FLOAT128 FltF113;
  2446. FLOAT128 FltF114;
  2447. FLOAT128 FltF115;
  2448. FLOAT128 FltF116;
  2449. FLOAT128 FltF117;
  2450. FLOAT128 FltF118;
  2451. FLOAT128 FltF119;
  2452. FLOAT128 FltF120;
  2453. FLOAT128 FltF121;
  2454. FLOAT128 FltF122;
  2455. FLOAT128 FltF123;
  2456. FLOAT128 FltF124;
  2457. FLOAT128 FltF125;
  2458. FLOAT128 FltF126;
  2459. FLOAT128 FltF127;
  2460. ULONGLONG StFPSR;
  2461. ULONGLONG IntGp;
  2462. ULONGLONG IntT0;
  2463. ULONGLONG IntT1;
  2464. ULONGLONG IntS0;
  2465. ULONGLONG IntS1;
  2466. ULONGLONG IntS2;
  2467. ULONGLONG IntS3;
  2468. ULONGLONG IntV0;
  2469. ULONGLONG IntT2;
  2470. ULONGLONG IntT3;
  2471. ULONGLONG IntT4;
  2472. ULONGLONG IntSp;
  2473. ULONGLONG IntTeb;
  2474. ULONGLONG IntT5;
  2475. ULONGLONG IntT6;
  2476. ULONGLONG IntT7;
  2477. ULONGLONG IntT8;
  2478. ULONGLONG IntT9;
  2479. ULONGLONG IntT10;
  2480. ULONGLONG IntT11;
  2481. ULONGLONG IntT12;
  2482. ULONGLONG IntT13;
  2483. ULONGLONG IntT14;
  2484. ULONGLONG IntT15;
  2485. ULONGLONG IntT16;
  2486. ULONGLONG IntT17;
  2487. ULONGLONG IntT18;
  2488. ULONGLONG IntT19;
  2489. ULONGLONG IntT20;
  2490. ULONGLONG IntT21;
  2491. ULONGLONG IntT22;
  2492. ULONGLONG IntNats;
  2493. ULONGLONG Preds;
  2494. ULONGLONG BrRp;
  2495. ULONGLONG BrS0;
  2496. ULONGLONG BrS1;
  2497. ULONGLONG BrS2;
  2498. ULONGLONG BrS3;
  2499. ULONGLONG BrS4;
  2500. ULONGLONG BrT0;
  2501. ULONGLONG BrT1;
  2502. ULONGLONG ApUNAT;
  2503. ULONGLONG ApLC;
  2504. ULONGLONG ApEC;
  2505. ULONGLONG ApCCV;
  2506. ULONGLONG ApDCR;
  2507. ULONGLONG RsPFS;
  2508. ULONGLONG RsBSP;
  2509. ULONGLONG RsBSPSTORE;
  2510. ULONGLONG RsRSC;
  2511. ULONGLONG RsRNAT;
  2512. ULONGLONG StIPSR;
  2513. ULONGLONG StIIP;
  2514. ULONGLONG StIFS;
  2515. ULONGLONG StFCR;
  2516. ULONGLONG Eflag;
  2517. ULONGLONG SegCSD;
  2518. ULONGLONG SegSSD;
  2519. ULONGLONG Cflag;
  2520. ULONGLONG StFSR;
  2521. ULONGLONG StFIR;
  2522. ULONGLONG StFDR;
  2523. ULONGLONG UNUSEDPACK;
  2524. } CONTEXT,*PCONTEXT;
  2525. typedef struct _PLABEL_DESCRIPTOR {
  2526. ULONGLONG EntryPoint;
  2527. ULONGLONG GlobalPointer;
  2528. } PLABEL_DESCRIPTOR,*PPLABEL_DESCRIPTOR;
  2529. typedef struct _RUNTIME_FUNCTION {
  2530. DWORD BeginAddress;
  2531. DWORD EndAddress;
  2532. DWORD UnwindInfoAddress;
  2533. } RUNTIME_FUNCTION,*PRUNTIME_FUNCTION;
  2534. typedef PRUNTIME_FUNCTION (*PGET_RUNTIME_FUNCTION_CALLBACK)(DWORD64 ControlPc,PVOID Context);
  2535. typedef DWORD (*POUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK)(HANDLE Process,PVOID TableAddress,PDWORD Entries,PRUNTIME_FUNCTION *Functions);
  2536. #define OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK_EXPORT_NAME "OutOfProcessFunctionTableCallback"
  2537. VOID __jump_unwind(ULONGLONG TargetMsFrame,ULONGLONG TargetBsFrame,ULONGLONG TargetPc);
  2538. #endif /* end of _IA64_ */
  2539. /* http://www.nynaeve.net/?p=99 */
  2540. #define EXCEPTION_NONCONTINUABLE 0x1
  2541. #define EXCEPTION_UNWINDING 0x2
  2542. #define EXCEPTION_EXIT_UNWIND 0x4
  2543. #define EXCEPTION_STACK_INVALID 0x8
  2544. #define EXCEPTION_NESTED_CALL 0x10
  2545. #define EXCEPTION_TARGET_UNWIND 0x20
  2546. #define EXCEPTION_COLLIDED_UNWIND 0x40
  2547. #define EXCEPTION_UNWIND 0x66
  2548. #define IS_UNWINDING(f) ((f & EXCEPTION_UNWIND) != 0)
  2549. #define IS_DISPATCHING(f) ((f & EXCEPTION_UNWIND) == 0)
  2550. #define IS_TARGET_UNWIND(f) ((f & EXCEPTION_TARGET_UNWIND) != 0)
  2551. #define EXCEPTION_MAXIMUM_PARAMETERS 15
  2552. typedef struct _EXCEPTION_RECORD {
  2553. DWORD ExceptionCode;
  2554. DWORD ExceptionFlags;
  2555. struct _EXCEPTION_RECORD *ExceptionRecord;
  2556. PVOID ExceptionAddress;
  2557. DWORD NumberParameters;
  2558. ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
  2559. } EXCEPTION_RECORD;
  2560. typedef EXCEPTION_RECORD *PEXCEPTION_RECORD;
  2561. typedef struct _EXCEPTION_RECORD32 {
  2562. DWORD ExceptionCode;
  2563. DWORD ExceptionFlags;
  2564. DWORD ExceptionRecord;
  2565. DWORD ExceptionAddress;
  2566. DWORD NumberParameters;
  2567. DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
  2568. } EXCEPTION_RECORD32,*PEXCEPTION_RECORD32;
  2569. typedef struct _EXCEPTION_RECORD64 {
  2570. DWORD ExceptionCode;
  2571. DWORD ExceptionFlags;
  2572. DWORD64 ExceptionRecord;
  2573. DWORD64 ExceptionAddress;
  2574. DWORD NumberParameters;
  2575. DWORD __unusedAlignment;
  2576. DWORD64 ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
  2577. } EXCEPTION_RECORD64,*PEXCEPTION_RECORD64;
  2578. typedef struct _EXCEPTION_POINTERS {
  2579. PEXCEPTION_RECORD ExceptionRecord;
  2580. PCONTEXT ContextRecord;
  2581. } EXCEPTION_POINTERS,*PEXCEPTION_POINTERS;
  2582. #ifdef __ia64__
  2583. NTSYSAPI VOID NTAPI RtlUnwind2 (FRAME_POINTERS TargetFrame, PVOID TargetIp, PEXCEPTION_RECORD ExceptionRecord, PVOID ReturnValue, PCONTEXT ContextRecord);
  2584. #endif
  2585. #ifdef __x86_64__
  2586. /* http://msdn.microsoft.com/en-us/library/ms680597(VS.85).aspx */
  2587. #define UNWIND_HISTORY_TABLE_SIZE 12
  2588. typedef struct _UNWIND_HISTORY_TABLE_ENTRY {
  2589. ULONG64 ImageBase;
  2590. PRUNTIME_FUNCTION FunctionEntry;
  2591. } UNWIND_HISTORY_TABLE_ENTRY, *PUNWIND_HISTORY_TABLE_ENTRY;
  2592. #define UNWIND_HISTORY_TABLE_NONE 0
  2593. #define UNWIND_HISTORY_TABLE_GLOBAL 1
  2594. #define UNWIND_HISTORY_TABLE_LOCAL 2
  2595. typedef struct _UNWIND_HISTORY_TABLE {
  2596. ULONG Count;
  2597. BYTE LocalHint;
  2598. BYTE GlobalHint;
  2599. BYTE Search;
  2600. BYTE Once;
  2601. ULONG64 LowAddress;
  2602. ULONG64 HighAddress;
  2603. UNWIND_HISTORY_TABLE_ENTRY Entry[UNWIND_HISTORY_TABLE_SIZE];
  2604. } UNWIND_HISTORY_TABLE, *PUNWIND_HISTORY_TABLE;
  2605. /* http://msdn.microsoft.com/en-us/library/b6sf5kbd(VS.80).aspx */
  2606. struct _DISPATCHER_CONTEXT;
  2607. typedef struct _DISPATCHER_CONTEXT DISPATCHER_CONTEXT;
  2608. typedef struct _DISPATCHER_CONTEXT *PDISPATCHER_CONTEXT;
  2609. struct _DISPATCHER_CONTEXT {
  2610. ULONG64 ControlPc;
  2611. ULONG64 ImageBase;
  2612. PRUNTIME_FUNCTION FunctionEntry;
  2613. ULONG64 EstablisherFrame;
  2614. ULONG64 TargetIp;
  2615. PCONTEXT ContextRecord;
  2616. PEXCEPTION_ROUTINE LanguageHandler;
  2617. PVOID HandlerData;
  2618. /* http://www.nynaeve.net/?p=99 */
  2619. PUNWIND_HISTORY_TABLE HistoryTable;
  2620. ULONG ScopeIndex;
  2621. ULONG Fill0;
  2622. };
  2623. /* http://msdn.microsoft.com/en-us/library/ms680617(VS.85).aspx */
  2624. typedef struct _KNONVOLATILE_CONTEXT_POINTERS
  2625. {
  2626. PM128A FloatingContext[16];
  2627. PULONG64 IntegerContext[16];
  2628. } KNONVOLATILE_CONTEXT_POINTERS, *PKNONVOLATILE_CONTEXT_POINTERS;
  2629. #endif /* defined(__x86_64__) */
  2630. typedef PVOID PACCESS_TOKEN;
  2631. typedef PVOID PSECURITY_DESCRIPTOR;
  2632. typedef PVOID PSID;
  2633. typedef PVOID PCLAIMS_BLOB;
  2634. typedef DWORD ACCESS_MASK;
  2635. typedef ACCESS_MASK *PACCESS_MASK;
  2636. #define DELETE (__MSABI_LONG(0x00010000))
  2637. #define READ_CONTROL (__MSABI_LONG(0x00020000))
  2638. #define WRITE_DAC (__MSABI_LONG(0x00040000))
  2639. #define WRITE_OWNER (__MSABI_LONG(0x00080000))
  2640. #define SYNCHRONIZE (__MSABI_LONG(0x00100000))
  2641. #define STANDARD_RIGHTS_REQUIRED (__MSABI_LONG(0x000F0000))
  2642. #define STANDARD_RIGHTS_READ (READ_CONTROL)
  2643. #define STANDARD_RIGHTS_WRITE (READ_CONTROL)
  2644. #define STANDARD_RIGHTS_EXECUTE (READ_CONTROL)
  2645. #define STANDARD_RIGHTS_ALL (__MSABI_LONG(0x001F0000))
  2646. #define SPECIFIC_RIGHTS_ALL (__MSABI_LONG(0x0000FFFF))
  2647. #define ACCESS_SYSTEM_SECURITY (__MSABI_LONG(0x01000000))
  2648. #define MAXIMUM_ALLOWED (__MSABI_LONG(0x02000000))
  2649. #define GENERIC_READ (__MSABI_LONG(0x80000000))
  2650. #define GENERIC_WRITE (__MSABI_LONG(0x40000000))
  2651. #define GENERIC_EXECUTE (__MSABI_LONG(0x20000000))
  2652. #define GENERIC_ALL (__MSABI_LONG(0x10000000))
  2653. typedef struct _GENERIC_MAPPING {
  2654. ACCESS_MASK GenericRead;
  2655. ACCESS_MASK GenericWrite;
  2656. ACCESS_MASK GenericExecute;
  2657. ACCESS_MASK GenericAll;
  2658. } GENERIC_MAPPING;
  2659. typedef GENERIC_MAPPING *PGENERIC_MAPPING;
  2660. #include <pshpack4.h>
  2661. typedef struct _LUID_AND_ATTRIBUTES {
  2662. LUID Luid;
  2663. DWORD Attributes;
  2664. } LUID_AND_ATTRIBUTES,*PLUID_AND_ATTRIBUTES;
  2665. typedef LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
  2666. typedef LUID_AND_ATTRIBUTES_ARRAY *PLUID_AND_ATTRIBUTES_ARRAY;
  2667. #include <poppack.h>
  2668. #ifndef SID_IDENTIFIER_AUTHORITY_DEFINED
  2669. #define SID_IDENTIFIER_AUTHORITY_DEFINED
  2670. typedef struct _SID_IDENTIFIER_AUTHORITY {
  2671. BYTE Value[6];
  2672. } SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY;
  2673. #endif /* SID_IDENTIFIER_AUTHORITY_DEFINED */
  2674. #ifndef SID_DEFINED
  2675. #define SID_DEFINED
  2676. typedef struct _SID {
  2677. BYTE Revision;
  2678. BYTE SubAuthorityCount;
  2679. SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
  2680. DWORD SubAuthority[ANYSIZE_ARRAY];
  2681. } SID,*PISID;
  2682. #endif /* SID_DEFINED */
  2683. #define SID_REVISION (1)
  2684. #define SID_MAX_SUB_AUTHORITIES (15)
  2685. #define SID_RECOMMENDED_SUB_AUTHORITIES (1)
  2686. #ifndef __WIDL__
  2687. #define SECURITY_MAX_SID_SIZE (sizeof (SID) - sizeof (DWORD) + (SID_MAX_SUB_AUTHORITIES *sizeof (DWORD)))
  2688. #endif
  2689. #define SID_HASH_SIZE 32
  2690. typedef enum _SID_NAME_USE {
  2691. SidTypeUser = 1,SidTypeGroup,SidTypeDomain,SidTypeAlias,SidTypeWellKnownGroup,SidTypeDeletedAccount,SidTypeInvalid,SidTypeUnknown,SidTypeComputer,SidTypeLabel,SidTypeLogonSession
  2692. } SID_NAME_USE,*PSID_NAME_USE;
  2693. typedef struct _SID_AND_ATTRIBUTES {
  2694. #ifdef __WIDL__
  2695. PISID Sid;
  2696. #else
  2697. PSID Sid;
  2698. #endif
  2699. DWORD Attributes;
  2700. } SID_AND_ATTRIBUTES,*PSID_AND_ATTRIBUTES;
  2701. typedef SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
  2702. typedef SID_AND_ATTRIBUTES_ARRAY *PSID_AND_ATTRIBUTES_ARRAY;
  2703. typedef ULONG_PTR SID_HASH_ENTRY, *PSID_HASH_ENTRY;
  2704. typedef struct _SID_AND_ATTRIBUTES_HASH {
  2705. DWORD SidCount;
  2706. PSID_AND_ATTRIBUTES SidAttr;
  2707. SID_HASH_ENTRY Hash[SID_HASH_SIZE];
  2708. } SID_AND_ATTRIBUTES_HASH, *PSID_AND_ATTRIBUTES_HASH;
  2709. #define SECURITY_NULL_SID_AUTHORITY {0,0,0,0,0,0}
  2710. #define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1}
  2711. #define SECURITY_LOCAL_SID_AUTHORITY {0,0,0,0,0,2}
  2712. #define SECURITY_CREATOR_SID_AUTHORITY {0,0,0,0,0,3}
  2713. #define SECURITY_NON_UNIQUE_AUTHORITY {0,0,0,0,0,4}
  2714. #define SECURITY_RESOURCE_MANAGER_AUTHORITY {0,0,0,0,0,9}
  2715. #define SECURITY_NULL_RID (__MSABI_LONG(0x00000000))
  2716. #define SECURITY_WORLD_RID (__MSABI_LONG(0x00000000))
  2717. #define SECURITY_LOCAL_RID (__MSABI_LONG(0x00000000))
  2718. #define SECURITY_LOCAL_LOGON_RID (__MSABI_LONG(0x00000001))
  2719. #define SECURITY_CREATOR_OWNER_RID (__MSABI_LONG(0x00000000))
  2720. #define SECURITY_CREATOR_GROUP_RID (__MSABI_LONG(0x00000001))
  2721. #define SECURITY_CREATOR_OWNER_SERVER_RID (__MSABI_LONG(0x00000002))
  2722. #define SECURITY_CREATOR_GROUP_SERVER_RID (__MSABI_LONG(0x00000003))
  2723. #define SECURITY_CREATOR_OWNER_RIGHTS_RID (__MSABI_LONG(0x00000004))
  2724. #define SECURITY_NT_AUTHORITY {0,0,0,0,0,5}
  2725. #define SECURITY_DIALUP_RID (__MSABI_LONG(0x00000001))
  2726. #define SECURITY_NETWORK_RID (__MSABI_LONG(0x00000002))
  2727. #define SECURITY_BATCH_RID (__MSABI_LONG(0x00000003))
  2728. #define SECURITY_INTERACTIVE_RID (__MSABI_LONG(0x00000004))
  2729. #define SECURITY_LOGON_IDS_RID (__MSABI_LONG(0x00000005))
  2730. #define SECURITY_LOGON_IDS_RID_COUNT (__MSABI_LONG(3))
  2731. #define SECURITY_SERVICE_RID (__MSABI_LONG(0x00000006))
  2732. #define SECURITY_ANONYMOUS_LOGON_RID (__MSABI_LONG(0x00000007))
  2733. #define SECURITY_PROXY_RID (__MSABI_LONG(0x00000008))
  2734. #define SECURITY_ENTERPRISE_CONTROLLERS_RID (__MSABI_LONG(0x00000009))
  2735. #define SECURITY_SERVER_LOGON_RID SECURITY_ENTERPRISE_CONTROLLERS_RID
  2736. #define SECURITY_PRINCIPAL_SELF_RID (__MSABI_LONG(0x0000000A))
  2737. #define SECURITY_AUTHENTICATED_USER_RID (__MSABI_LONG(0x0000000B))
  2738. #define SECURITY_RESTRICTED_CODE_RID (__MSABI_LONG(0x0000000C))
  2739. #define SECURITY_TERMINAL_SERVER_RID (__MSABI_LONG(0x0000000D))
  2740. #define SECURITY_REMOTE_LOGON_RID (__MSABI_LONG(0x0000000E))
  2741. #define SECURITY_THIS_ORGANIZATION_RID (__MSABI_LONG(0x0000000F))
  2742. #define SECURITY_IUSER_RID (__MSABI_LONG(0x00000011))
  2743. #define SECURITY_LOCAL_SYSTEM_RID (__MSABI_LONG(0x00000012))
  2744. #define SECURITY_LOCAL_SERVICE_RID (__MSABI_LONG(0x00000013))
  2745. #define SECURITY_NETWORK_SERVICE_RID (__MSABI_LONG(0x00000014))
  2746. #define SECURITY_NT_NON_UNIQUE (__MSABI_LONG(0x00000015))
  2747. #define SECURITY_NT_NON_UNIQUE_SUB_AUTH_COUNT (__MSABI_LONG(3))
  2748. #define SECURITY_ENTERPRISE_READONLY_CONTROLLERS_RID (__MSABI_LONG(0x00000016))
  2749. #define SECURITY_BUILTIN_DOMAIN_RID (__MSABI_LONG(0x00000020))
  2750. #define SECURITY_WRITE_RESTRICTED_CODE_RID (__MSABI_LONG(0x00000021))
  2751. #define SECURITY_PACKAGE_BASE_RID (__MSABI_LONG(0x00000040))
  2752. #define SECURITY_PACKAGE_RID_COUNT (__MSABI_LONG(2))
  2753. #define SECURITY_PACKAGE_NTLM_RID (__MSABI_LONG(0x0000000A))
  2754. #define SECURITY_PACKAGE_SCHANNEL_RID (__MSABI_LONG(0x0000000E))
  2755. #define SECURITY_PACKAGE_DIGEST_RID (__MSABI_LONG(0x00000015))
  2756. #define SECURITY_CRED_TYPE_BASE_RID (__MSABI_LONG(0x00000041))
  2757. #define SECURITY_CRED_TYPE_RID_COUNT (__MSABI_LONG(2))
  2758. #define SECURITY_CRED_TYPE_THIS_ORG_CERT_RID (__MSABI_LONG(0x00000001))
  2759. #define SECURITY_MIN_BASE_RID (__MSABI_LONG(0x00000050))
  2760. #define SECURITY_SERVICE_ID_BASE_RID (__MSABI_LONG(0x00000050))
  2761. #define SECURITY_SERVICE_ID_RID_COUNT (__MSABI_LONG(6))
  2762. #define SECURITY_RESERVED_ID_BASE_RID (__MSABI_LONG(0x00000051))
  2763. #define SECURITY_APPPOOL_ID_BASE_RID (__MSABI_LONG(0x00000052))
  2764. #define SECURITY_APPPOOL_ID_RID_COUNT (__MSABI_LONG(6))
  2765. #define SECURITY_VIRTUALSERVER_ID_BASE_RID (__MSABI_LONG(0x00000053))
  2766. #define SECURITY_VIRTUALSERVER_ID_RID_COUNT (__MSABI_LONG(6))
  2767. #define SECURITY_USERMODEDRIVERHOST_ID_BASE_RID (__MSABI_LONG(0x00000054))
  2768. #define SECURITY_USERMODEDRIVERHOST_ID_RID_COUNT (__MSABI_LONG(6))
  2769. #define SECURITY_CLOUD_INFRASTRUCTURE_SERVICES_ID_BASE_RID (__MSABI_LONG(0x00000055))
  2770. #define SECURITY_CLOUD_INFRASTRUCTURE_SERVICES_ID_RID_COUNT (__MSABI_LONG(6))
  2771. #define SECURITY_WMIHOST_ID_BASE_RID (__MSABI_LONG(0x00000056))
  2772. #define SECURITY_WMIHOST_ID_RID_COUNT (__MSABI_LONG(6))
  2773. #define SECURITY_TASK_ID_BASE_RID (__MSABI_LONG(0x00000057))
  2774. #define SECURITY_NFS_ID_BASE_RID (__MSABI_LONG(0x00000058))
  2775. #define SECURITY_COM_ID_BASE_RID (__MSABI_LONG(0x00000059))
  2776. #define SECURITY_WINDOW_MANAGER_BASE_RID (__MSABI_LONG(0x0000005a))
  2777. #define SECURITY_RDV_GFX_BASE_RID (__MSABI_LONG(0x0000005b))
  2778. #define SECURITY_DASHOST_ID_BASE_RID (__MSABI_LONG(0x0000005c))
  2779. #define SECURITY_DASHOST_ID_RID_COUNT (__MSABI_LONG(6))
  2780. #define SECURITY_USERMANAGER_ID_BASE_RID (__MSABI_LONG(0x0000005d))
  2781. #define SECURITY_USERMANAGER_ID_RID_COUNT (__MSABI_LONG(6))
  2782. #define SECURITY_WINRM_ID_BASE_RID (__MSABI_LONG(0x0000005e))
  2783. #define SECURITY_WINRM_ID_RID_COUNT (__MSABI_LONG(6))
  2784. #define SECURITY_CCG_ID_BASE_RID (__MSABI_LONG(0x0000005f))
  2785. #define SECURITY_UMFD_BASE_RID (__MSABI_LONG(0x00000060))
  2786. #define SECURITY_VIRTUALACCOUNT_ID_RID_COUNT (__MSABI_LONG(6))
  2787. #define SECURITY_MAX_BASE_RID (__MSABI_LONG(0x0000006f))
  2788. #define SECURITY_MAX_ALWAYS_FILTERED (__MSABI_LONG(0x000003E7))
  2789. #define SECURITY_MIN_NEVER_FILTERED (__MSABI_LONG(0x000003E8))
  2790. #define SECURITY_OTHER_ORGANIZATION_RID (__MSABI_LONG(0x000003E8))
  2791. #define SECURITY_WINDOWSMOBILE_ID_BASE_RID (__MSABI_LONG(0x00000070))
  2792. #define SECURITY_INSTALLER_GROUP_CAPABILITY_BASE (0x20)
  2793. #define SECURITY_INSTALLER_GROUP_CAPABILITY_RID_COUNT (9)
  2794. #define SECURITY_INSTALLER_CAPABILITY_RID_COUNT (10)
  2795. #define SECURITY_LOCAL_ACCOUNT_RID (__MSABI_LONG(0x00000071))
  2796. #define SECURITY_LOCAL_ACCOUNT_AND_ADMIN_RID (__MSABI_LONG(0x00000072))
  2797. #define DOMAIN_GROUP_RID_AUTHORIZATION_DATA_IS_COMPOUNDED (__MSABI_LONG(0x000001f0))
  2798. #define DOMAIN_GROUP_RID_AUTHORIZATION_DATA_CONTAINS_CLAIMS (__MSABI_LONG(0x000001f1))
  2799. #define DOMAIN_GROUP_RID_ENTERPRISE_READONLY_DOMAIN_CONTROLLERS (__MSABI_LONG(0x000001f2))
  2800. #define FOREST_USER_RID_MAX (__MSABI_LONG(0x000001F3))
  2801. #define DOMAIN_USER_RID_ADMIN (__MSABI_LONG(0x000001F4))
  2802. #define DOMAIN_USER_RID_GUEST (__MSABI_LONG(0x000001F5))
  2803. #define DOMAIN_USER_RID_KRBTGT (__MSABI_LONG(0x000001F6))
  2804. #define DOMAIN_USER_RID_DEFAULT_ACCOUNT (__MSABI_LONG(0x000001F7))
  2805. #define DOMAIN_USER_RID_WDAG_ACCOUNT (__MSABI_LONG(0x000001F8))
  2806. #define DOMAIN_USER_RID_MAX (__MSABI_LONG(0x000003E7))
  2807. #define DOMAIN_GROUP_RID_ADMINS (__MSABI_LONG(0x00000200))
  2808. #define DOMAIN_GROUP_RID_USERS (__MSABI_LONG(0x00000201))
  2809. #define DOMAIN_GROUP_RID_GUESTS (__MSABI_LONG(0x00000202))
  2810. #define DOMAIN_GROUP_RID_COMPUTERS (__MSABI_LONG(0x00000203))
  2811. #define DOMAIN_GROUP_RID_CONTROLLERS (__MSABI_LONG(0x00000204))
  2812. #define DOMAIN_GROUP_RID_CERT_ADMINS (__MSABI_LONG(0x00000205))
  2813. #define DOMAIN_GROUP_RID_SCHEMA_ADMINS (__MSABI_LONG(0x00000206))
  2814. #define DOMAIN_GROUP_RID_ENTERPRISE_ADMINS (__MSABI_LONG(0x00000207))
  2815. #define DOMAIN_GROUP_RID_POLICY_ADMINS (__MSABI_LONG(0x00000208))
  2816. #define DOMAIN_GROUP_RID_READONLY_CONTROLLERS (__MSABI_LONG(0x00000209))
  2817. #define DOMAIN_GROUP_RID_CLONEABLE_CONTROLLERS (__MSABI_LONG(0x0000020a))
  2818. #define DOMAIN_GROUP_RID_CDC_RESERVED (__MSABI_LONG(0x0000020c))
  2819. #define DOMAIN_GROUP_RID_PROTECTED_USERS (__MSABI_LONG(0x0000020d))
  2820. #define DOMAIN_GROUP_RID_KEY_ADMINS (__MSABI_LONG(0x0000020e))
  2821. #define DOMAIN_GROUP_RID_ENTERPRISE_KEY_ADMINS (__MSABI_LONG(0x0000020f))
  2822. #define DOMAIN_ALIAS_RID_ADMINS (__MSABI_LONG(0x00000220))
  2823. #define DOMAIN_ALIAS_RID_USERS (__MSABI_LONG(0x00000221))
  2824. #define DOMAIN_ALIAS_RID_GUESTS (__MSABI_LONG(0x00000222))
  2825. #define DOMAIN_ALIAS_RID_POWER_USERS (__MSABI_LONG(0x00000223))
  2826. #define DOMAIN_ALIAS_RID_ACCOUNT_OPS (__MSABI_LONG(0x00000224))
  2827. #define DOMAIN_ALIAS_RID_SYSTEM_OPS (__MSABI_LONG(0x00000225))
  2828. #define DOMAIN_ALIAS_RID_PRINT_OPS (__MSABI_LONG(0x00000226))
  2829. #define DOMAIN_ALIAS_RID_BACKUP_OPS (__MSABI_LONG(0x00000227))
  2830. #define DOMAIN_ALIAS_RID_REPLICATOR (__MSABI_LONG(0x00000228))
  2831. #define DOMAIN_ALIAS_RID_RAS_SERVERS (__MSABI_LONG(0x00000229))
  2832. #define DOMAIN_ALIAS_RID_PREW2KCOMPACCESS (__MSABI_LONG(0x0000022A))
  2833. #define DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS (__MSABI_LONG(0x0000022B))
  2834. #define DOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS (__MSABI_LONG(0x0000022C))
  2835. #define DOMAIN_ALIAS_RID_INCOMING_FOREST_TRUST_BUILDERS (__MSABI_LONG(0x0000022D))
  2836. #define DOMAIN_ALIAS_RID_MONITORING_USERS (__MSABI_LONG(0x0000022E))
  2837. #define DOMAIN_ALIAS_RID_LOGGING_USERS (__MSABI_LONG(0x0000022F))
  2838. #define DOMAIN_ALIAS_RID_AUTHORIZATIONACCESS (__MSABI_LONG(0x00000230))
  2839. #define DOMAIN_ALIAS_RID_TS_LICENSE_SERVERS (__MSABI_LONG(0x00000231))
  2840. #define DOMAIN_ALIAS_RID_DCOM_USERS (__MSABI_LONG(0x00000232))
  2841. #define DOMAIN_ALIAS_RID_IUSERS (__MSABI_LONG(0x00000238))
  2842. #define DOMAIN_ALIAS_RID_CRYPTO_OPERATORS (__MSABI_LONG(0x00000239))
  2843. #define DOMAIN_ALIAS_RID_CACHEABLE_PRINCIPALS_GROUP (__MSABI_LONG(0x0000023B))
  2844. #define DOMAIN_ALIAS_RID_NON_CACHEABLE_PRINCIPALS_GROUP (__MSABI_LONG(0x0000023C))
  2845. #define DOMAIN_ALIAS_RID_EVENT_LOG_READERS_GROUP (__MSABI_LONG(0x0000023D))
  2846. #define DOMAIN_ALIAS_RID_CERTSVC_DCOM_ACCESS_GROUP (__MSABI_LONG(0x0000023e))
  2847. #define DOMAIN_ALIAS_RID_RDS_REMOTE_ACCESS_SERVERS (__MSABI_LONG(0x0000023f))
  2848. #define DOMAIN_ALIAS_RID_RDS_ENDPOINT_SERVERS (__MSABI_LONG(0x00000240))
  2849. #define DOMAIN_ALIAS_RID_RDS_MANAGEMENT_SERVERS (__MSABI_LONG(0x00000241))
  2850. #define DOMAIN_ALIAS_RID_HYPER_V_ADMINS (__MSABI_LONG(0x00000242))
  2851. #define DOMAIN_ALIAS_RID_ACCESS_CONTROL_ASSISTANCE_OPS (__MSABI_LONG(0x00000243))
  2852. #define DOMAIN_ALIAS_RID_REMOTE_MANAGEMENT_USERS (__MSABI_LONG(0x00000244))
  2853. #define DOMAIN_ALIAS_RID_DEFAULT_ACCOUNT (__MSABI_LONG(0x00000245))
  2854. #define DOMAIN_ALIAS_RID_STORAGE_REPLICA_ADMINS (__MSABI_LONG(0x00000246))
  2855. #define DOMAIN_ALIAS_RID_DEVICE_OWNERS (__MSABI_LONG(0x00000247))
  2856. #define SECURITY_APP_PACKAGE_AUTHORITY {0, 0, 0, 0, 0, 15}
  2857. #define SECURITY_APP_PACKAGE_BASE_RID (__MSABI_LONG(0x00000002))
  2858. #define SECURITY_BUILTIN_APP_PACKAGE_RID_COUNT (__MSABI_LONG(2))
  2859. #define SECURITY_APP_PACKAGE_RID_COUNT (__MSABI_LONG(8))
  2860. #define SECURITY_CAPABILITY_BASE_RID (__MSABI_LONG(0x00000003))
  2861. #define SECURITY_CAPABILITY_APP_RID (__MSABI_LONG(0x000000400))
  2862. #define SECURITY_CAPABILITY_APP_SILO_RID (__MSABI_LONG(0x00010000))
  2863. #define SECURITY_BUILTIN_CAPABILITY_RID_COUNT (__MSABI_LONG(2))
  2864. #define SECURITY_CAPABILITY_RID_COUNT (__MSABI_LONG(5))
  2865. #define SECURITY_PARENT_PACKAGE_RID_COUNT (SECURITY_APP_PACKAGE_RID_COUNT)
  2866. #define SECURITY_CHILD_PACKAGE_RID_COUNT (__MSABI_LONG(12))
  2867. #define SECURITY_BUILTIN_PACKAGE_ANY_PACKAGE (__MSABI_LONG(0x00000001))
  2868. #define SECURITY_BUILTIN_PACKAGE_ANY_RESTRICTED_PACKAGE (__MSABI_LONG(0x00000002))
  2869. #define SECURITY_CAPABILITY_INTERNET_CLIENT (__MSABI_LONG(0x00000001))
  2870. #define SECURITY_CAPABILITY_INTERNET_CLIENT_SERVER (__MSABI_LONG(0x00000002))
  2871. #define SECURITY_CAPABILITY_PRIVATE_NETWORK_CLIENT_SERVER (__MSABI_LONG(0x00000003))
  2872. #define SECURITY_CAPABILITY_PICTURES_LIBRARY (__MSABI_LONG(0x00000004))
  2873. #define SECURITY_CAPABILITY_VIDEOS_LIBRARY (__MSABI_LONG(0x00000005))
  2874. #define SECURITY_CAPABILITY_MUSIC_LIBRARY (__MSABI_LONG(0x00000006))
  2875. #define SECURITY_CAPABILITY_DOCUMENTS_LIBRARY (__MSABI_LONG(0x00000007))
  2876. #define SECURITY_CAPABILITY_ENTERPRISE_AUTHENTICATION (__MSABI_LONG(0x00000008))
  2877. #define SECURITY_CAPABILITY_SHARED_USER_CERTIFICATES (__MSABI_LONG(0x00000009))
  2878. #define SECURITY_CAPABILITY_REMOVABLE_STORAGE (__MSABI_LONG(0x0000000a))
  2879. #define SECURITY_CAPABILITY_APPOINTMENTS (__MSABI_LONG(0x0000000b))
  2880. #define SECURITY_CAPABILITY_CONTACTS (__MSABI_LONG(0x0000000c))
  2881. #define SECURITY_CAPABILITY_INTERNET_EXPLORER (__MSABI_LONG(0x00001000))
  2882. #define SECURITY_MANDATORY_LABEL_AUTHORITY {0,0,0,0,0,16}
  2883. #define SECURITY_MANDATORY_UNTRUSTED_RID (__MSABI_LONG(0x00000000))
  2884. #define SECURITY_MANDATORY_LOW_RID (__MSABI_LONG(0x00001000))
  2885. #define SECURITY_MANDATORY_MEDIUM_RID (__MSABI_LONG(0x00002000))
  2886. #define SECURITY_MANDATORY_MEDIUM_PLUS_RID (SECURITY_MANDATORY_MEDIUM_RID + 0x100)
  2887. #define SECURITY_MANDATORY_HIGH_RID (__MSABI_LONG(0x00003000))
  2888. #define SECURITY_MANDATORY_SYSTEM_RID (__MSABI_LONG(0x00004000))
  2889. #define SECURITY_MANDATORY_PROTECTED_PROCESS_RID (__MSABI_LONG(0x00005000))
  2890. #define SECURITY_MANDATORY_MAXIMUM_USER_RID SECURITY_MANDATORY_SYSTEM_RID
  2891. #define MANDATORY_LEVEL_TO_MANDATORY_RID(IL) (IL * 0x1000)
  2892. #define SECURITY_SCOPED_POLICY_ID_AUTHORITY {0, 0, 0, 0, 0, 17}
  2893. #define SECURITY_AUTHENTICATION_AUTHORITY {0, 0, 0, 0, 0, 18}
  2894. #define SECURITY_AUTHENTICATION_AUTHORITY_RID_COUNT (__MSABI_LONG(1))
  2895. #define SECURITY_AUTHENTICATION_AUTHORITY_ASSERTED_RID (__MSABI_LONG(0x00000001))
  2896. #define SECURITY_AUTHENTICATION_SERVICE_ASSERTED_RID (__MSABI_LONG(0x00000002))
  2897. #define SECURITY_AUTHENTICATION_FRESH_KEY_AUTH_RID (__MSABI_LONG(0x00000003))
  2898. #define SECURITY_AUTHENTICATION_KEY_TRUST_RID (__MSABI_LONG(0x00000004))
  2899. #define SECURITY_AUTHENTICATION_KEY_PROPERTY_MFA_RID (__MSABI_LONG(0x00000005))
  2900. #define SECURITY_AUTHENTICATION_KEY_PROPERTY_ATTESTATION_RID (__MSABI_LONG(0x00000006))
  2901. #define SECURITY_PROCESS_TRUST_AUTHORITY {0,0,0,0,0,19}
  2902. #define SECURITY_PROCESS_TRUST_AUTHORITY_RID_COUNT (__MSABI_LONG(2))
  2903. #define SECURITY_PROCESS_PROTECTION_TYPE_FULL_RID (__MSABI_LONG(0x00000400))
  2904. #define SECURITY_PROCESS_PROTECTION_TYPE_LITE_RID (__MSABI_LONG(0x00000200))
  2905. #define SECURITY_PROCESS_PROTECTION_TYPE_NONE_RID (__MSABI_LONG(0x00000000))
  2906. #define SECURITY_PROCESS_PROTECTION_LEVEL_WINTCB_RID (__MSABI_LONG(0x00002000))
  2907. #define SECURITY_PROCESS_PROTECTION_LEVEL_WINDOWS_RID (__MSABI_LONG(0x00001000))
  2908. #define SECURITY_PROCESS_PROTECTION_LEVEL_APP_RID (__MSABI_LONG(0x00000800))
  2909. #define SECURITY_PROCESS_PROTECTION_LEVEL_ANTIMALWARE_RID (__MSABI_LONG(0x00000600))
  2910. #define SECURITY_PROCESS_PROTECTION_LEVEL_AUTHENTICODE_RID (__MSABI_LONG(0x00000400))
  2911. #define SECURITY_PROCESS_PROTECTION_LEVEL_NONE_RID (__MSABI_LONG(0x00000000))
  2912. #define SECURITY_TRUSTED_INSTALLER_RID1 956008885
  2913. #define SECURITY_TRUSTED_INSTALLER_RID2 3418522649
  2914. #define SECURITY_TRUSTED_INSTALLER_RID3 1831038044
  2915. #define SECURITY_TRUSTED_INSTALLER_RID4 1853292631
  2916. #define SECURITY_TRUSTED_INSTALLER_RID5 2271478464
  2917. typedef enum {
  2918. WinNullSid = 0,WinWorldSid = 1,WinLocalSid = 2,WinCreatorOwnerSid = 3,
  2919. WinCreatorGroupSid = 4,WinCreatorOwnerServerSid = 5,
  2920. WinCreatorGroupServerSid = 6,WinNtAuthoritySid = 7,WinDialupSid = 8,
  2921. WinNetworkSid = 9,WinBatchSid = 10,WinInteractiveSid = 11,
  2922. WinServiceSid = 12,WinAnonymousSid = 13,WinProxySid = 14,
  2923. WinEnterpriseControllersSid = 15,WinSelfSid = 16,
  2924. WinAuthenticatedUserSid = 17,WinRestrictedCodeSid = 18,
  2925. WinTerminalServerSid = 19,WinRemoteLogonIdSid = 20,WinLogonIdsSid = 21,
  2926. WinLocalSystemSid = 22,WinLocalServiceSid = 23,WinNetworkServiceSid = 24,
  2927. WinBuiltinDomainSid = 25,WinBuiltinAdministratorsSid = 26,
  2928. WinBuiltinUsersSid = 27,WinBuiltinGuestsSid = 28,
  2929. WinBuiltinPowerUsersSid = 29,WinBuiltinAccountOperatorsSid = 30,
  2930. WinBuiltinSystemOperatorsSid = 31,WinBuiltinPrintOperatorsSid = 32,
  2931. WinBuiltinBackupOperatorsSid = 33,WinBuiltinReplicatorSid = 34,
  2932. WinBuiltinPreWindows2000CompatibleAccessSid = 35,
  2933. WinBuiltinRemoteDesktopUsersSid = 36,
  2934. WinBuiltinNetworkConfigurationOperatorsSid = 37,
  2935. WinAccountAdministratorSid = 38,WinAccountGuestSid = 39,
  2936. WinAccountKrbtgtSid = 40,WinAccountDomainAdminsSid = 41,
  2937. WinAccountDomainUsersSid = 42,WinAccountDomainGuestsSid = 43,
  2938. WinAccountComputersSid = 44,WinAccountControllersSid = 45,
  2939. WinAccountCertAdminsSid = 46,WinAccountSchemaAdminsSid = 47,
  2940. WinAccountEnterpriseAdminsSid = 48,WinAccountPolicyAdminsSid = 49,
  2941. WinAccountRasAndIasServersSid = 50,WinNTLMAuthenticationSid = 51,
  2942. WinDigestAuthenticationSid = 52,WinSChannelAuthenticationSid = 53,
  2943. WinThisOrganizationSid = 54,WinOtherOrganizationSid = 55,
  2944. WinBuiltinIncomingForestTrustBuildersSid = 56,
  2945. WinBuiltinPerfMonitoringUsersSid = 57,WinBuiltinPerfLoggingUsersSid = 58,
  2946. WinBuiltinAuthorizationAccessSid = 59,
  2947. WinBuiltinTerminalServerLicenseServersSid = 60,
  2948. WinBuiltinDCOMUsersSid = 61,WinBuiltinIUsersSid = 62,
  2949. WinIUserSid = 63, WinBuiltinCryptoOperatorsSid = 64,
  2950. WinUntrustedLabelSid = 65, WinLowLabelSid = 66, WinMediumLabelSid = 67,
  2951. WinHighLabelSid = 68, WinSystemLabelSid = 69, WinWriteRestrictedCodeSid = 70,
  2952. WinCreatorOwnerRightsSid = 71, WinCacheablePrincipalsGroupSid = 72,
  2953. WinNonCacheablePrincipalsGroupSid = 73, WinEnterpriseReadonlyControllersSid = 74,
  2954. WinAccountReadonlyControllersSid = 75, WinBuiltinEventLogReadersGroup = 76,
  2955. WinNewEnterpriseReadonlyControllersSid = 77, WinBuiltinCertSvcDComAccessGroup = 78,
  2956. WinMediumPlusLabelSid = 79, WinLocalLogonSid = 80, WinConsoleLogonSid = 81,
  2957. WinThisOrganizationCertificateSid = 82, WinApplicationPackageAuthoritySid = 83,
  2958. WinBuiltinAnyPackageSid = 84, WinCapabilityInternetClientSid = 85,
  2959. WinCapabilityInternetClientServerSid = 86,
  2960. WinCapabilityPrivateNetworkClientServerSid = 87,
  2961. WinCapabilityPicturesLibrarySid = 88, WinCapabilityVideosLibrarySid = 89,
  2962. WinCapabilityMusicLibrarySid = 90, WinCapabilityDocumentsLibrarySid = 91,
  2963. WinCapabilitySharedUserCertificatesSid = 92, WinCapabilityEnterpriseAuthenticationSid = 93,
  2964. WinCapabilityRemovableStorageSid = 94, WinBuiltinRDSRemoteAccessServersSid = 95,
  2965. WinBuiltinRDSEndpointServersSid = 96, WinBuiltinRDSManagementServersSid = 97,
  2966. WinUserModeDriversSid = 98, WinBuiltinHyperVAdminsSid = 99,
  2967. WinAccountCloneableControllersSid = 100,
  2968. WinBuiltinAccessControlAssistanceOperatorsSid = 101,
  2969. WinBuiltinRemoteManagementUsersSid = 102, WinAuthenticationAuthorityAssertedSid = 103,
  2970. WinAuthenticationServiceAssertedSid = 104,
  2971. WinLocalAccountSid = 105,
  2972. WinLocalAccountAndAdministratorSid = 106,
  2973. WinAccountProtectedUsersSid = 107,
  2974. WinCapabilityAppointmentsSid = 108,
  2975. WinCapabilityContactsSid = 109,
  2976. WinAccountDefaultSystemManagedSid = 110,
  2977. WinBuiltinDefaultSystemManagedGroupSid = 111,
  2978. WinBuiltinStorageReplicaAdminsSid = 112,
  2979. WinAccountKeyAdminsSid = 113,
  2980. WinAccountEnterpriseKeyAdminsSid = 114,
  2981. WinAuthenticationKeyTrustSid = 115,
  2982. WinAuthenticationKeyPropertyMFASid = 116,
  2983. WinAuthenticationKeyPropertyAttestationSid = 117,
  2984. WinAuthenticationFreshKeyAuthSid = 118,
  2985. WinBuiltinDeviceOwnersSid = 119
  2986. } WELL_KNOWN_SID_TYPE;
  2987. #define SYSTEM_LUID { 0x3e7, 0x0 }
  2988. #define ANONYMOUS_LOGON_LUID { 0x3e6, 0x0 }
  2989. #define LOCALSERVICE_LUID { 0x3e5, 0x0 }
  2990. #define NETWORKSERVICE_LUID { 0x3e4, 0x0 }
  2991. #define IUSER_LUID { 0x3e3, 0x0 }
  2992. #define PROTECTED_TO_SYSTEM_LUID { 0x3e2, 0x0 }
  2993. #define SE_GROUP_MANDATORY (__MSABI_LONG(0x00000001))
  2994. #define SE_GROUP_ENABLED_BY_DEFAULT (__MSABI_LONG(0x00000002))
  2995. #define SE_GROUP_ENABLED (__MSABI_LONG(0x00000004))
  2996. #define SE_GROUP_OWNER (__MSABI_LONG(0x00000008))
  2997. #define SE_GROUP_USE_FOR_DENY_ONLY (__MSABI_LONG(0x00000010))
  2998. #define SE_GROUP_INTEGRITY (__MSABI_LONG(0x00000020))
  2999. #define SE_GROUP_INTEGRITY_ENABLED (__MSABI_LONG(0x00000040))
  3000. #define SE_GROUP_LOGON_ID (__MSABI_LONG(0xC0000000))
  3001. #define SE_GROUP_RESOURCE (__MSABI_LONG(0x20000000))
  3002. #define SE_GROUP_VALID_ATTRIBUTES (SE_GROUP_MANDATORY | SE_GROUP_ENABLED_BY_DEFAULT | SE_GROUP_ENABLED | SE_GROUP_OWNER | SE_GROUP_USE_FOR_DENY_ONLY | SE_GROUP_LOGON_ID | SE_GROUP_RESOURCE | SE_GROUP_INTEGRITY | SE_GROUP_INTEGRITY_ENABLED)
  3003. #define ACL_REVISION (2)
  3004. #define ACL_REVISION_DS (4)
  3005. #define ACL_REVISION1 (1)
  3006. #define MIN_ACL_REVISION ACL_REVISION2
  3007. #define ACL_REVISION2 (2)
  3008. #define ACL_REVISION3 (3)
  3009. #define ACL_REVISION4 (4)
  3010. #define MAX_ACL_REVISION ACL_REVISION4
  3011. typedef struct _ACL {
  3012. BYTE AclRevision;
  3013. BYTE Sbz1;
  3014. WORD AclSize;
  3015. WORD AceCount;
  3016. WORD Sbz2;
  3017. } ACL;
  3018. typedef ACL *PACL;
  3019. typedef struct _ACE_HEADER {
  3020. BYTE AceType;
  3021. BYTE AceFlags;
  3022. WORD AceSize;
  3023. } ACE_HEADER;
  3024. typedef ACE_HEADER *PACE_HEADER;
  3025. #define ACCESS_MIN_MS_ACE_TYPE (0x0)
  3026. #define ACCESS_ALLOWED_ACE_TYPE (0x0)
  3027. #define ACCESS_DENIED_ACE_TYPE (0x1)
  3028. #define SYSTEM_AUDIT_ACE_TYPE (0x2)
  3029. #define SYSTEM_ALARM_ACE_TYPE (0x3)
  3030. #define ACCESS_MAX_MS_V2_ACE_TYPE (0x3)
  3031. #define ACCESS_ALLOWED_COMPOUND_ACE_TYPE (0x4)
  3032. #define ACCESS_MAX_MS_V3_ACE_TYPE (0x4)
  3033. #define ACCESS_MIN_MS_OBJECT_ACE_TYPE (0x5)
  3034. #define ACCESS_ALLOWED_OBJECT_ACE_TYPE (0x5)
  3035. #define ACCESS_DENIED_OBJECT_ACE_TYPE (0x6)
  3036. #define SYSTEM_AUDIT_OBJECT_ACE_TYPE (0x7)
  3037. #define SYSTEM_ALARM_OBJECT_ACE_TYPE (0x8)
  3038. #define ACCESS_MAX_MS_OBJECT_ACE_TYPE (0x8)
  3039. #define ACCESS_MAX_MS_V4_ACE_TYPE (0x8)
  3040. #define ACCESS_MAX_MS_ACE_TYPE (0x8)
  3041. #define ACCESS_ALLOWED_CALLBACK_ACE_TYPE (0x9)
  3042. #define ACCESS_DENIED_CALLBACK_ACE_TYPE (0xA)
  3043. #define ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_TYPE (0xB)
  3044. #define ACCESS_DENIED_CALLBACK_OBJECT_ACE_TYPE (0xC)
  3045. #define SYSTEM_AUDIT_CALLBACK_ACE_TYPE (0xD)
  3046. #define SYSTEM_ALARM_CALLBACK_ACE_TYPE (0xE)
  3047. #define SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_TYPE (0xF)
  3048. #define SYSTEM_ALARM_CALLBACK_OBJECT_ACE_TYPE (0x10)
  3049. #define SYSTEM_MANDATORY_LABEL_ACE_TYPE (0x11)
  3050. #define SYSTEM_RESOURCE_ATTRIBUTE_ACE_TYPE (0x12)
  3051. #define SYSTEM_SCOPED_POLICY_ID_ACE_TYPE (0x13)
  3052. #define SYSTEM_PROCESS_TRUST_LABEL_ACE_TYPE (0x14)
  3053. #define SYSTEM_ACCESS_FILTER_ACE_TYPE (0x15)
  3054. #define ACCESS_MAX_MS_V5_ACE_TYPE (0x15)
  3055. #define OBJECT_INHERIT_ACE (0x1)
  3056. #define CONTAINER_INHERIT_ACE (0x2)
  3057. #define NO_PROPAGATE_INHERIT_ACE (0x4)
  3058. #define INHERIT_ONLY_ACE (0x8)
  3059. #define INHERITED_ACE (0x10)
  3060. #define VALID_INHERIT_FLAGS (0x1F)
  3061. #define CRITICAL_ACE_FLAG (0x20)
  3062. #define SUCCESSFUL_ACCESS_ACE_FLAG (0x40)
  3063. #define FAILED_ACCESS_ACE_FLAG (0x80)
  3064. #define TRUST_PROTECTED_FILTER_ACE_FLAG (0x40)
  3065. typedef struct _ACCESS_ALLOWED_ACE {
  3066. ACE_HEADER Header;
  3067. ACCESS_MASK Mask;
  3068. DWORD SidStart;
  3069. } ACCESS_ALLOWED_ACE;
  3070. typedef ACCESS_ALLOWED_ACE *PACCESS_ALLOWED_ACE;
  3071. typedef struct _ACCESS_DENIED_ACE {
  3072. ACE_HEADER Header;
  3073. ACCESS_MASK Mask;
  3074. DWORD SidStart;
  3075. } ACCESS_DENIED_ACE;
  3076. typedef ACCESS_DENIED_ACE *PACCESS_DENIED_ACE;
  3077. typedef struct _SYSTEM_AUDIT_ACE {
  3078. ACE_HEADER Header;
  3079. ACCESS_MASK Mask;
  3080. DWORD SidStart;
  3081. } SYSTEM_AUDIT_ACE;
  3082. typedef SYSTEM_AUDIT_ACE *PSYSTEM_AUDIT_ACE;
  3083. typedef struct _SYSTEM_ALARM_ACE {
  3084. ACE_HEADER Header;
  3085. ACCESS_MASK Mask;
  3086. DWORD SidStart;
  3087. } SYSTEM_ALARM_ACE;
  3088. typedef SYSTEM_ALARM_ACE *PSYSTEM_ALARM_ACE;
  3089. typedef struct _SYSTEM_RESOURCE_ATTRIBUTE_ACE {
  3090. ACE_HEADER Header;
  3091. ACCESS_MASK Mask;
  3092. DWORD SidStart;
  3093. } SYSTEM_RESOURCE_ATTRIBUTE_ACE,*PSYSTEM_RESOURCE_ATTRIBUTE_ACE;
  3094. typedef struct _SYSTEM_SCOPED_POLICY_ID_ACE {
  3095. ACE_HEADER Header;
  3096. ACCESS_MASK Mask;
  3097. DWORD SidStart;
  3098. } SYSTEM_SCOPED_POLICY_ID_ACE,*PSYSTEM_SCOPED_POLICY_ID_ACE;
  3099. typedef struct _SYSTEM_MANDATORY_LABEL_ACE {
  3100. ACE_HEADER Header;
  3101. ACCESS_MASK Mask;
  3102. DWORD SidStart;
  3103. } SYSTEM_MANDATORY_LABEL_ACE, *PSYSTEM_MANDATORY_LABEL_ACE;
  3104. typedef struct _SYSTEM_PROCESS_TRUST_LABEL_ACE {
  3105. ACE_HEADER Header;
  3106. ACCESS_MASK Mask;
  3107. DWORD SidStart;
  3108. } SYSTEM_PROCESS_TRUST_LABEL_ACE, *PSYSTEM_PROCESS_TRUST_LABEL_ACE;
  3109. typedef struct _SYSTEM_ACCESS_FILTER_ACE {
  3110. ACE_HEADER Header;
  3111. ACCESS_MASK Mask;
  3112. DWORD SidStart;
  3113. } SYSTEM_ACCESS_FILTER_ACE, *PSYSTEM_ACCESS_FILTER_ACE;
  3114. #define SYSTEM_MANDATORY_LABEL_NO_WRITE_UP 0x1
  3115. #define SYSTEM_MANDATORY_LABEL_NO_READ_UP 0x2
  3116. #define SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP 0x4
  3117. #define SYSTEM_MANDATORY_LABEL_VALID_MASK (SYSTEM_MANDATORY_LABEL_NO_WRITE_UP | SYSTEM_MANDATORY_LABEL_NO_READ_UP | SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP)
  3118. #define SYSTEM_PROCESS_TRUST_LABEL_VALID_MASK 0x00ffffff
  3119. #define SYSTEM_PROCESS_TRUST_NOCONSTRAINT_MASK 0xffffffff
  3120. #define SYSTEM_ACCESS_FILTER_VALID_MASK 0x00ffffff
  3121. #define SYSTEM_ACCESS_FILTER_NOCONSTRAINT_MASK 0xffffffff
  3122. typedef struct _ACCESS_ALLOWED_OBJECT_ACE {
  3123. ACE_HEADER Header;
  3124. ACCESS_MASK Mask;
  3125. DWORD Flags;
  3126. GUID ObjectType;
  3127. GUID InheritedObjectType;
  3128. DWORD SidStart;
  3129. } ACCESS_ALLOWED_OBJECT_ACE,*PACCESS_ALLOWED_OBJECT_ACE;
  3130. typedef struct _ACCESS_DENIED_OBJECT_ACE {
  3131. ACE_HEADER Header;
  3132. ACCESS_MASK Mask;
  3133. DWORD Flags;
  3134. GUID ObjectType;
  3135. GUID InheritedObjectType;
  3136. DWORD SidStart;
  3137. } ACCESS_DENIED_OBJECT_ACE,*PACCESS_DENIED_OBJECT_ACE;
  3138. typedef struct _SYSTEM_AUDIT_OBJECT_ACE {
  3139. ACE_HEADER Header;
  3140. ACCESS_MASK Mask;
  3141. DWORD Flags;
  3142. GUID ObjectType;
  3143. GUID InheritedObjectType;
  3144. DWORD SidStart;
  3145. } SYSTEM_AUDIT_OBJECT_ACE,*PSYSTEM_AUDIT_OBJECT_ACE;
  3146. typedef struct _SYSTEM_ALARM_OBJECT_ACE {
  3147. ACE_HEADER Header;
  3148. ACCESS_MASK Mask;
  3149. DWORD Flags;
  3150. GUID ObjectType;
  3151. GUID InheritedObjectType;
  3152. DWORD SidStart;
  3153. } SYSTEM_ALARM_OBJECT_ACE,*PSYSTEM_ALARM_OBJECT_ACE;
  3154. typedef struct _ACCESS_ALLOWED_CALLBACK_ACE {
  3155. ACE_HEADER Header;
  3156. ACCESS_MASK Mask;
  3157. DWORD SidStart;
  3158. } ACCESS_ALLOWED_CALLBACK_ACE,*PACCESS_ALLOWED_CALLBACK_ACE;
  3159. typedef struct _ACCESS_DENIED_CALLBACK_ACE {
  3160. ACE_HEADER Header;
  3161. ACCESS_MASK Mask;
  3162. DWORD SidStart;
  3163. } ACCESS_DENIED_CALLBACK_ACE,*PACCESS_DENIED_CALLBACK_ACE;
  3164. typedef struct _SYSTEM_AUDIT_CALLBACK_ACE {
  3165. ACE_HEADER Header;
  3166. ACCESS_MASK Mask;
  3167. DWORD SidStart;
  3168. } SYSTEM_AUDIT_CALLBACK_ACE,*PSYSTEM_AUDIT_CALLBACK_ACE;
  3169. typedef struct _SYSTEM_ALARM_CALLBACK_ACE {
  3170. ACE_HEADER Header;
  3171. ACCESS_MASK Mask;
  3172. DWORD SidStart;
  3173. } SYSTEM_ALARM_CALLBACK_ACE,*PSYSTEM_ALARM_CALLBACK_ACE;
  3174. typedef struct _ACCESS_ALLOWED_CALLBACK_OBJECT_ACE {
  3175. ACE_HEADER Header;
  3176. ACCESS_MASK Mask;
  3177. DWORD Flags;
  3178. GUID ObjectType;
  3179. GUID InheritedObjectType;
  3180. DWORD SidStart;
  3181. } ACCESS_ALLOWED_CALLBACK_OBJECT_ACE,*PACCESS_ALLOWED_CALLBACK_OBJECT_ACE;
  3182. typedef struct _ACCESS_DENIED_CALLBACK_OBJECT_ACE {
  3183. ACE_HEADER Header;
  3184. ACCESS_MASK Mask;
  3185. DWORD Flags;
  3186. GUID ObjectType;
  3187. GUID InheritedObjectType;
  3188. DWORD SidStart;
  3189. } ACCESS_DENIED_CALLBACK_OBJECT_ACE,*PACCESS_DENIED_CALLBACK_OBJECT_ACE;
  3190. typedef struct _SYSTEM_AUDIT_CALLBACK_OBJECT_ACE {
  3191. ACE_HEADER Header;
  3192. ACCESS_MASK Mask;
  3193. DWORD Flags;
  3194. GUID ObjectType;
  3195. GUID InheritedObjectType;
  3196. DWORD SidStart;
  3197. } SYSTEM_AUDIT_CALLBACK_OBJECT_ACE,*PSYSTEM_AUDIT_CALLBACK_OBJECT_ACE;
  3198. typedef struct _SYSTEM_ALARM_CALLBACK_OBJECT_ACE {
  3199. ACE_HEADER Header;
  3200. ACCESS_MASK Mask;
  3201. DWORD Flags;
  3202. GUID ObjectType;
  3203. GUID InheritedObjectType;
  3204. DWORD SidStart;
  3205. } SYSTEM_ALARM_CALLBACK_OBJECT_ACE,*PSYSTEM_ALARM_CALLBACK_OBJECT_ACE;
  3206. #define ACE_OBJECT_TYPE_PRESENT 0x1
  3207. #define ACE_INHERITED_OBJECT_TYPE_PRESENT 0x2
  3208. typedef enum _ACL_INFORMATION_CLASS {
  3209. AclRevisionInformation = 1,AclSizeInformation
  3210. } ACL_INFORMATION_CLASS;
  3211. typedef struct _ACL_REVISION_INFORMATION {
  3212. DWORD AclRevision;
  3213. } ACL_REVISION_INFORMATION;
  3214. typedef ACL_REVISION_INFORMATION *PACL_REVISION_INFORMATION;
  3215. typedef struct _ACL_SIZE_INFORMATION {
  3216. DWORD AceCount;
  3217. DWORD AclBytesInUse;
  3218. DWORD AclBytesFree;
  3219. } ACL_SIZE_INFORMATION;
  3220. typedef ACL_SIZE_INFORMATION *PACL_SIZE_INFORMATION;
  3221. #define SECURITY_DESCRIPTOR_REVISION (1)
  3222. #define SECURITY_DESCRIPTOR_REVISION1 (1)
  3223. #define SECURITY_DESCRIPTOR_MIN_LENGTH (sizeof(SECURITY_DESCRIPTOR))
  3224. typedef WORD SECURITY_DESCRIPTOR_CONTROL,*PSECURITY_DESCRIPTOR_CONTROL;
  3225. #define SE_OWNER_DEFAULTED (0x0001)
  3226. #define SE_GROUP_DEFAULTED (0x0002)
  3227. #define SE_DACL_PRESENT (0x0004)
  3228. #define SE_DACL_DEFAULTED (0x0008)
  3229. #define SE_SACL_PRESENT (0x0010)
  3230. #define SE_SACL_DEFAULTED (0x0020)
  3231. #define SE_DACL_AUTO_INHERIT_REQ (0x0100)
  3232. #define SE_SACL_AUTO_INHERIT_REQ (0x0200)
  3233. #define SE_DACL_AUTO_INHERITED (0x0400)
  3234. #define SE_SACL_AUTO_INHERITED (0x0800)
  3235. #define SE_DACL_PROTECTED (0x1000)
  3236. #define SE_SACL_PROTECTED (0x2000)
  3237. #define SE_RM_CONTROL_VALID (0x4000)
  3238. #define SE_SELF_RELATIVE (0x8000)
  3239. typedef struct _SECURITY_DESCRIPTOR_RELATIVE {
  3240. BYTE Revision;
  3241. BYTE Sbz1;
  3242. SECURITY_DESCRIPTOR_CONTROL Control;
  3243. DWORD Owner;
  3244. DWORD Group;
  3245. DWORD Sacl;
  3246. DWORD Dacl;
  3247. } SECURITY_DESCRIPTOR_RELATIVE,*PISECURITY_DESCRIPTOR_RELATIVE;
  3248. typedef struct _SECURITY_DESCRIPTOR {
  3249. BYTE Revision;
  3250. BYTE Sbz1;
  3251. SECURITY_DESCRIPTOR_CONTROL Control;
  3252. PSID Owner;
  3253. PSID Group;
  3254. PACL Sacl;
  3255. PACL Dacl;
  3256. } SECURITY_DESCRIPTOR,*PISECURITY_DESCRIPTOR;
  3257. typedef struct _SECURITY_OBJECT_AI_PARAMS {
  3258. DWORD Size;
  3259. DWORD ConstraintMask;
  3260. } SECURITY_OBJECT_AI_PARAMS, *PSECURITY_OBJECT_AI_PARAMS;
  3261. typedef struct _OBJECT_TYPE_LIST {
  3262. WORD Level;
  3263. WORD Sbz;
  3264. GUID *ObjectType;
  3265. } OBJECT_TYPE_LIST,*POBJECT_TYPE_LIST;
  3266. #define ACCESS_OBJECT_GUID 0
  3267. #define ACCESS_PROPERTY_SET_GUID 1
  3268. #define ACCESS_PROPERTY_GUID 2
  3269. #define ACCESS_MAX_LEVEL 4
  3270. typedef enum _AUDIT_EVENT_TYPE {
  3271. AuditEventObjectAccess,AuditEventDirectoryServiceAccess
  3272. } AUDIT_EVENT_TYPE,*PAUDIT_EVENT_TYPE;
  3273. #define AUDIT_ALLOW_NO_PRIVILEGE 0x1
  3274. #define ACCESS_DS_SOURCE_A "DS"
  3275. #define ACCESS_DS_SOURCE_W L"DS"
  3276. #define ACCESS_DS_OBJECT_TYPE_NAME_A "Directory Service Object"
  3277. #define ACCESS_DS_OBJECT_TYPE_NAME_W L"Directory Service Object"
  3278. #define SE_PRIVILEGE_ENABLED_BY_DEFAULT (__MSABI_LONG(0x00000001))
  3279. #define SE_PRIVILEGE_ENABLED (__MSABI_LONG(0x00000002))
  3280. #define SE_PRIVILEGE_REMOVED (0X00000004L)
  3281. #define SE_PRIVILEGE_USED_FOR_ACCESS (__MSABI_LONG(0x80000000))
  3282. #define SE_PRIVILEGE_VALID_ATTRIBUTES (SE_PRIVILEGE_ENABLED_BY_DEFAULT | SE_PRIVILEGE_ENABLED | SE_PRIVILEGE_REMOVED | SE_PRIVILEGE_USED_FOR_ACCESS)
  3283. #define PRIVILEGE_SET_ALL_NECESSARY (1)
  3284. typedef struct _PRIVILEGE_SET {
  3285. DWORD PrivilegeCount;
  3286. DWORD Control;
  3287. LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY];
  3288. } PRIVILEGE_SET,*PPRIVILEGE_SET;
  3289. #define ACCESS_REASON_TYPE_MASK 0x00ff0000
  3290. #define ACCESS_REASON_DATA_MASK 0x0000ffff
  3291. #define ACCESS_REASON_STAGING_MASK 0x80000000
  3292. #define ACCESS_REASON_EXDATA_MASK 0x7f000000
  3293. typedef enum _ACCESS_REASON_TYPE {
  3294. AccessReasonNone = 0x00000000,
  3295. AccessReasonAllowedAce = 0x00010000,
  3296. AccessReasonDeniedAce = 0x00020000,
  3297. AccessReasonAllowedParentAce = 0x00030000,
  3298. AccessReasonDeniedParentAce = 0x00040000,
  3299. AccessReasonNotGrantedByCape = 0x00050000,
  3300. AccessReasonNotGrantedByParentCape = 0x00060000,
  3301. AccessReasonNotGrantedToAppContainer = 0x00070000,
  3302. AccessReasonMissingPrivilege = 0x00100000,
  3303. AccessReasonFromPrivilege = 0x00200000,
  3304. AccessReasonIntegrityLevel = 0x00300000,
  3305. AccessReasonOwnership = 0x00400000,
  3306. AccessReasonNullDacl = 0x00500000,
  3307. AccessReasonEmptyDacl = 0x00600000,
  3308. AccessReasonNoSD = 0x00700000,
  3309. AccessReasonNoGrant = 0x00800000,
  3310. AccessReasonTrustLabel = 0x00900000,
  3311. AccessReasonFilterAce = 0x00a00000
  3312. } ACCESS_REASON_TYPE;
  3313. typedef DWORD ACCESS_REASON;
  3314. typedef struct _ACCESS_REASONS {
  3315. ACCESS_REASON Data[32];
  3316. } ACCESS_REASONS,*PACCESS_REASONS;
  3317. #define SE_SECURITY_DESCRIPTOR_FLAG_NO_OWNER_ACE 0x00000001
  3318. #define SE_SECURITY_DESCRIPTOR_FLAG_NO_LABEL_ACE 0x00000002
  3319. #define SE_SECURITY_DESCRIPTOR_FLAG_NO_ACCESS_FILTER_ACE 0x00000004
  3320. #define SE_SECURITY_DESCRIPTOR_VALID_FLAGS 0x00000007
  3321. #define SE_ACCESS_CHECK_FLAG_NO_LEARNING_MODE_LOGGING 0x00000008
  3322. #define SE_ACCESS_CHECK_VALID_FLAGS 0x00000008
  3323. typedef struct _SE_SECURITY_DESCRIPTOR {
  3324. DWORD Size;
  3325. DWORD Flags;
  3326. PSECURITY_DESCRIPTOR SecurityDescriptor;
  3327. } SE_SECURITY_DESCRIPTOR,*PSE_SECURITY_DESCRIPTOR;
  3328. typedef struct _SE_ACCESS_REQUEST {
  3329. DWORD Size;
  3330. PSE_SECURITY_DESCRIPTOR SeSecurityDescriptor;
  3331. ACCESS_MASK DesiredAccess;
  3332. ACCESS_MASK PreviouslyGrantedAccess;
  3333. PSID PrincipalSelfSid;
  3334. PGENERIC_MAPPING GenericMapping;
  3335. DWORD ObjectTypeListCount;
  3336. POBJECT_TYPE_LIST ObjectTypeList;
  3337. } SE_ACCESS_REQUEST,*PSE_ACCESS_REQUEST;
  3338. typedef struct _SE_ACCESS_REPLY {
  3339. DWORD Size;
  3340. DWORD ResultListCount;
  3341. PACCESS_MASK GrantedAccess;
  3342. PDWORD AccessStatus;
  3343. PACCESS_REASONS AccessReason;
  3344. PPRIVILEGE_SET *Privileges;
  3345. } SE_ACCESS_REPLY,*PSE_ACCESS_REPLY;
  3346. #define SE_CREATE_TOKEN_NAME TEXT("SeCreateTokenPrivilege")
  3347. #define SE_ASSIGNPRIMARYTOKEN_NAME TEXT("SeAssignPrimaryTokenPrivilege")
  3348. #define SE_LOCK_MEMORY_NAME TEXT("SeLockMemoryPrivilege")
  3349. #define SE_INCREASE_QUOTA_NAME TEXT("SeIncreaseQuotaPrivilege")
  3350. #define SE_UNSOLICITED_INPUT_NAME TEXT("SeUnsolicitedInputPrivilege")
  3351. #define SE_MACHINE_ACCOUNT_NAME TEXT("SeMachineAccountPrivilege")
  3352. #define SE_TCB_NAME TEXT("SeTcbPrivilege")
  3353. #define SE_SECURITY_NAME TEXT("SeSecurityPrivilege")
  3354. #define SE_TAKE_OWNERSHIP_NAME TEXT("SeTakeOwnershipPrivilege")
  3355. #define SE_LOAD_DRIVER_NAME TEXT("SeLoadDriverPrivilege")
  3356. #define SE_SYSTEM_PROFILE_NAME TEXT("SeSystemProfilePrivilege")
  3357. #define SE_SYSTEMTIME_NAME TEXT("SeSystemtimePrivilege")
  3358. #define SE_PROF_SINGLE_PROCESS_NAME TEXT("SeProfileSingleProcessPrivilege")
  3359. #define SE_INC_BASE_PRIORITY_NAME TEXT("SeIncreaseBasePriorityPrivilege")
  3360. #define SE_CREATE_PAGEFILE_NAME TEXT("SeCreatePagefilePrivilege")
  3361. #define SE_CREATE_PERMANENT_NAME TEXT("SeCreatePermanentPrivilege")
  3362. #define SE_BACKUP_NAME TEXT("SeBackupPrivilege")
  3363. #define SE_RESTORE_NAME TEXT("SeRestorePrivilege")
  3364. #define SE_SHUTDOWN_NAME TEXT("SeShutdownPrivilege")
  3365. #define SE_DEBUG_NAME TEXT("SeDebugPrivilege")
  3366. #define SE_AUDIT_NAME TEXT("SeAuditPrivilege")
  3367. #define SE_SYSTEM_ENVIRONMENT_NAME TEXT("SeSystemEnvironmentPrivilege")
  3368. #define SE_CHANGE_NOTIFY_NAME TEXT("SeChangeNotifyPrivilege")
  3369. #define SE_REMOTE_SHUTDOWN_NAME TEXT("SeRemoteShutdownPrivilege")
  3370. #define SE_UNDOCK_NAME TEXT("SeUndockPrivilege")
  3371. #define SE_SYNC_AGENT_NAME TEXT("SeSyncAgentPrivilege")
  3372. #define SE_ENABLE_DELEGATION_NAME TEXT("SeEnableDelegationPrivilege")
  3373. #define SE_MANAGE_VOLUME_NAME TEXT("SeManageVolumePrivilege")
  3374. #define SE_IMPERSONATE_NAME TEXT("SeImpersonatePrivilege")
  3375. #define SE_CREATE_GLOBAL_NAME TEXT("SeCreateGlobalPrivilege")
  3376. #define SE_TRUSTED_CREDMAN_ACCESS_NAME TEXT("SeTrustedCredManAccessPrivilege")
  3377. #define SE_RELABEL_NAME TEXT("SeRelabelPrivilege")
  3378. #define SE_INC_WORKING_SET_NAME TEXT("SeIncreaseWorkingSetPrivilege")
  3379. #define SE_TIME_ZONE_NAME TEXT("SeTimeZonePrivilege")
  3380. #define SE_CREATE_SYMBOLIC_LINK_NAME TEXT("SeCreateSymbolicLinkPrivilege")
  3381. #define SE_DELEGATE_SESSION_USER_IMPERSONATE_NAME TEXT("SeDelegateSessionUserImpersonatePrivilege")
  3382. #define SE_ACTIVATE_AS_USER_CAPABILITY L"activateAsUser"
  3383. #define SE_CONSTRAINED_IMPERSONATION_CAPABILITY L"constrainedImpersonation"
  3384. #define SE_SESSION_IMPERSONATION_CAPABILITY L"sessionImpersonation"
  3385. #define SE_MUMA_CAPABILITY L"muma"
  3386. #define SE_DEVELOPMENT_MODE_NETWORK_CAPABILITY L"developmentModeNetwork"
  3387. #define SE_LEARNING_MODE_LOGGING_CAPABILITY L"learningModeLogging"
  3388. #define SE_PERMISSIVE_LEARNING_MODE_CAPABILITY L"permissiveLearningMode"
  3389. #define SE_APP_SILO_VOLUME_ROOT_MINIMAL_CAPABILITY L"isolatedWin32-volumeRootMinimal"
  3390. #define SE_APP_SILO_PROFILES_ROOT_MINIMAL_CAPABILITY L"isolatedWin32-profilesRootMinimal"
  3391. #define SE_APP_SILO_USER_PROFILE_MINIMAL_CAPABILITY L"isolatedWin32-userProfileMinimal"
  3392. #define SE_APP_SILO_PRINT_CAPABILITY L"isolatedWin32-print"
  3393. typedef enum _SECURITY_IMPERSONATION_LEVEL {
  3394. SecurityAnonymous,SecurityIdentification,SecurityImpersonation,SecurityDelegation
  3395. } SECURITY_IMPERSONATION_LEVEL,*PSECURITY_IMPERSONATION_LEVEL;
  3396. #define SECURITY_MAX_IMPERSONATION_LEVEL SecurityDelegation
  3397. #define SECURITY_MIN_IMPERSONATION_LEVEL SecurityAnonymous
  3398. #define DEFAULT_IMPERSONATION_LEVEL SecurityImpersonation
  3399. #define VALID_IMPERSONATION_LEVEL(L) (((L) >= SECURITY_MIN_IMPERSONATION_LEVEL) && ((L) <= SECURITY_MAX_IMPERSONATION_LEVEL))
  3400. #define TOKEN_ASSIGN_PRIMARY (0x0001)
  3401. #define TOKEN_DUPLICATE (0x0002)
  3402. #define TOKEN_IMPERSONATE (0x0004)
  3403. #define TOKEN_QUERY (0x0008)
  3404. #define TOKEN_QUERY_SOURCE (0x0010)
  3405. #define TOKEN_ADJUST_PRIVILEGES (0x0020)
  3406. #define TOKEN_ADJUST_GROUPS (0x0040)
  3407. #define TOKEN_ADJUST_DEFAULT (0x0080)
  3408. #define TOKEN_ADJUST_SESSIONID (0x0100)
  3409. #define TOKEN_ALL_ACCESS_P (STANDARD_RIGHTS_REQUIRED | TOKEN_ASSIGN_PRIMARY | TOKEN_DUPLICATE | TOKEN_IMPERSONATE | TOKEN_QUERY | TOKEN_QUERY_SOURCE | TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT)
  3410. #define TOKEN_ALL_ACCESS (TOKEN_ALL_ACCESS_P | TOKEN_ADJUST_SESSIONID)
  3411. #define TOKEN_READ (STANDARD_RIGHTS_READ | TOKEN_QUERY)
  3412. #define TOKEN_WRITE (STANDARD_RIGHTS_WRITE | TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT)
  3413. #define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE)
  3414. #define TOKEN_TRUST_CONSTRAINT_MASK (STANDARD_RIGHTS_READ | TOKEN_QUERY | TOKEN_QUERY_SOURCE)
  3415. #if NTDDI_VERSION >= NTDDI_WIN8
  3416. #define TOKEN_ACCESS_PSEUDO_HANDLE_WIN8 (TOKEN_QUERY | TOKEN_QUERY_SOURCE)
  3417. #define TOKEN_ACCESS_PSEUDO_HANDLE TOKEN_ACCESS_PSEUDO_HANDLE_WIN8
  3418. #endif
  3419. typedef enum _TOKEN_TYPE {
  3420. TokenPrimary = 1,TokenImpersonation
  3421. } TOKEN_TYPE;
  3422. typedef TOKEN_TYPE *PTOKEN_TYPE;
  3423. typedef enum _TOKEN_ELEVATION_TYPE {
  3424. TokenElevationTypeDefault = 1,
  3425. TokenElevationTypeFull,
  3426. TokenElevationTypeLimited
  3427. } TOKEN_ELEVATION_TYPE, *PTOKEN_ELEVATION_TYPE;
  3428. typedef enum _TOKEN_INFORMATION_CLASS {
  3429. TokenUser = 1,
  3430. TokenGroups,
  3431. TokenPrivileges,
  3432. TokenOwner,
  3433. TokenPrimaryGroup,
  3434. TokenDefaultDacl,
  3435. TokenSource,
  3436. TokenType,
  3437. TokenImpersonationLevel,
  3438. TokenStatistics,
  3439. TokenRestrictedSids,
  3440. TokenSessionId,
  3441. TokenGroupsAndPrivileges,
  3442. TokenSessionReference,
  3443. TokenSandBoxInert,
  3444. TokenAuditPolicy,
  3445. TokenOrigin,
  3446. TokenElevationType,
  3447. TokenLinkedToken,
  3448. TokenElevation,
  3449. TokenHasRestrictions,
  3450. TokenAccessInformation,
  3451. TokenVirtualizationAllowed,
  3452. TokenVirtualizationEnabled,
  3453. TokenIntegrityLevel,
  3454. TokenUIAccess,
  3455. TokenMandatoryPolicy,
  3456. TokenLogonSid,
  3457. TokenIsAppContainer,
  3458. TokenCapabilities,
  3459. TokenAppContainerSid,
  3460. TokenAppContainerNumber,
  3461. TokenUserClaimAttributes,
  3462. TokenDeviceClaimAttributes,
  3463. TokenRestrictedUserClaimAttributes,
  3464. TokenRestrictedDeviceClaimAttributes,
  3465. TokenDeviceGroups,
  3466. TokenRestrictedDeviceGroups,
  3467. TokenSecurityAttributes,
  3468. TokenIsRestricted,
  3469. TokenProcessTrustLevel,
  3470. TokenPrivateNameSpace,
  3471. TokenSingletonAttributes,
  3472. TokenBnoIsolation,
  3473. TokenChildProcessFlags,
  3474. TokenIsLessPrivilegedAppContainer,
  3475. TokenIsSandboxed,
  3476. TokenIsAppSilo,
  3477. MaxTokenInfoClass
  3478. } TOKEN_INFORMATION_CLASS,*PTOKEN_INFORMATION_CLASS;
  3479. typedef struct _TOKEN_USER {
  3480. SID_AND_ATTRIBUTES User;
  3481. } TOKEN_USER,*PTOKEN_USER;
  3482. #ifndef __WIDL__
  3483. typedef struct _SE_TOKEN_USER {
  3484. __C89_NAMELESS union {
  3485. TOKEN_USER TokenUser;
  3486. SID_AND_ATTRIBUTES User;
  3487. };
  3488. __C89_NAMELESS union {
  3489. SID Sid;
  3490. BYTE Buffer[SECURITY_MAX_SID_SIZE];
  3491. };
  3492. } SE_TOKEN_USER,*PSE_TOKEN_USER;
  3493. #define TOKEN_USER_MAX_SIZE (sizeof(TOKEN_USER) + SECURITY_MAX_SID_SIZE)
  3494. #endif
  3495. typedef struct _TOKEN_GROUPS {
  3496. DWORD GroupCount;
  3497. #ifdef __WIDL__
  3498. [size_is (GroupCount)] SID_AND_ATTRIBUTES Groups[*];
  3499. #else
  3500. SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY];
  3501. #endif
  3502. } TOKEN_GROUPS,*PTOKEN_GROUPS;
  3503. typedef struct _TOKEN_PRIVILEGES {
  3504. DWORD PrivilegeCount;
  3505. LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY];
  3506. } TOKEN_PRIVILEGES,*PTOKEN_PRIVILEGES;
  3507. typedef struct _TOKEN_OWNER {
  3508. PSID Owner;
  3509. } TOKEN_OWNER,*PTOKEN_OWNER;
  3510. #ifndef __WIDL__
  3511. #define TOKEN_OWNER_MAX_SIZE (sizeof(TOKEN_OWNER) + SECURITY_MAX_SID_SIZE)
  3512. #endif
  3513. typedef struct _TOKEN_PRIMARY_GROUP {
  3514. PSID PrimaryGroup;
  3515. } TOKEN_PRIMARY_GROUP,*PTOKEN_PRIMARY_GROUP;
  3516. typedef struct _TOKEN_DEFAULT_DACL {
  3517. PACL DefaultDacl;
  3518. } TOKEN_DEFAULT_DACL,*PTOKEN_DEFAULT_DACL;
  3519. typedef struct _TOKEN_USER_CLAIMS {
  3520. PCLAIMS_BLOB UserClaims;
  3521. } TOKEN_USER_CLAIMS,*PTOKEN_USER_CLAIMS;
  3522. typedef struct _TOKEN_DEVICE_CLAIMS {
  3523. PCLAIMS_BLOB DeviceClaims;
  3524. } TOKEN_DEVICE_CLAIMS,*PTOKEN_DEVICE_CLAIMS;
  3525. typedef struct _TOKEN_GROUPS_AND_PRIVILEGES {
  3526. DWORD SidCount;
  3527. DWORD SidLength;
  3528. PSID_AND_ATTRIBUTES Sids;
  3529. DWORD RestrictedSidCount;
  3530. DWORD RestrictedSidLength;
  3531. PSID_AND_ATTRIBUTES RestrictedSids;
  3532. DWORD PrivilegeCount;
  3533. DWORD PrivilegeLength;
  3534. PLUID_AND_ATTRIBUTES Privileges;
  3535. LUID AuthenticationId;
  3536. } TOKEN_GROUPS_AND_PRIVILEGES,*PTOKEN_GROUPS_AND_PRIVILEGES;
  3537. typedef struct _TOKEN_LINKED_TOKEN {
  3538. HANDLE LinkedToken;
  3539. } TOKEN_LINKED_TOKEN,*PTOKEN_LINKED_TOKEN;
  3540. typedef struct _TOKEN_ELEVATION {
  3541. DWORD TokenIsElevated;
  3542. } TOKEN_ELEVATION,*PTOKEN_ELEVATION;
  3543. typedef struct _TOKEN_MANDATORY_LABEL {
  3544. SID_AND_ATTRIBUTES Label;
  3545. } TOKEN_MANDATORY_LABEL,*PTOKEN_MANDATORY_LABEL;
  3546. #define TOKEN_MANDATORY_POLICY_OFF 0x0
  3547. #define TOKEN_MANDATORY_POLICY_NO_WRITE_UP 0x1
  3548. #define TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN 0x2
  3549. #define TOKEN_MANDATORY_POLICY_VALID_MASK (TOKEN_MANDATORY_POLICY_NO_WRITE_UP | TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN)
  3550. #ifndef __WIDL__
  3551. #define TOKEN_INTEGRITY_LEVEL_MAX_SIZE ((((DWORD)(sizeof(TOKEN_MANDATORY_LABEL)) + sizeof(PVOID) - 1) & ~(sizeof(PVOID)-1)) + SECURITY_MAX_SID_SIZE)
  3552. #endif
  3553. typedef struct _TOKEN_MANDATORY_POLICY {
  3554. DWORD Policy;
  3555. } TOKEN_MANDATORY_POLICY,*PTOKEN_MANDATORY_POLICY;
  3556. typedef PVOID PSECURITY_ATTRIBUTES_OPAQUE;
  3557. typedef struct _TOKEN_ACCESS_INFORMATION {
  3558. PSID_AND_ATTRIBUTES_HASH SidHash;
  3559. PSID_AND_ATTRIBUTES_HASH RestrictedSidHash;
  3560. PTOKEN_PRIVILEGES Privileges;
  3561. LUID AuthenticationId;
  3562. TOKEN_TYPE TokenType;
  3563. SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
  3564. TOKEN_MANDATORY_POLICY MandatoryPolicy;
  3565. DWORD Flags;
  3566. DWORD AppContainerNumber;
  3567. PSID PackageSid;
  3568. PSID_AND_ATTRIBUTES_HASH CapabilitiesHash;
  3569. } TOKEN_ACCESS_INFORMATION,*PTOKEN_ACCESS_INFORMATION;
  3570. #define POLICY_AUDIT_SUBCATEGORY_COUNT (56)
  3571. typedef struct _TOKEN_AUDIT_POLICY {
  3572. UCHAR PerUserPolicy[((POLICY_AUDIT_SUBCATEGORY_COUNT) >> 1) + 1];
  3573. } TOKEN_AUDIT_POLICY, *PTOKEN_AUDIT_POLICY;
  3574. #define TOKEN_SOURCE_LENGTH 8
  3575. typedef struct _TOKEN_SOURCE {
  3576. CHAR SourceName[TOKEN_SOURCE_LENGTH];
  3577. LUID SourceIdentifier;
  3578. } TOKEN_SOURCE,*PTOKEN_SOURCE;
  3579. typedef struct _TOKEN_STATISTICS {
  3580. LUID TokenId;
  3581. LUID AuthenticationId;
  3582. LARGE_INTEGER ExpirationTime;
  3583. TOKEN_TYPE TokenType;
  3584. SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
  3585. DWORD DynamicCharged;
  3586. DWORD DynamicAvailable;
  3587. DWORD GroupCount;
  3588. DWORD PrivilegeCount;
  3589. LUID ModifiedId;
  3590. } TOKEN_STATISTICS,*PTOKEN_STATISTICS;
  3591. typedef struct _TOKEN_CONTROL {
  3592. LUID TokenId;
  3593. LUID AuthenticationId;
  3594. LUID ModifiedId;
  3595. TOKEN_SOURCE TokenSource;
  3596. } TOKEN_CONTROL,*PTOKEN_CONTROL;
  3597. typedef struct _TOKEN_ORIGIN {
  3598. LUID OriginatingLogonSession;
  3599. } TOKEN_ORIGIN,*PTOKEN_ORIGIN;
  3600. typedef enum _MANDATORY_LEVEL {
  3601. MandatoryLevelUntrusted = 0,
  3602. MandatoryLevelLow,
  3603. MandatoryLevelMedium,
  3604. MandatoryLevelHigh,
  3605. MandatoryLevelSystem,
  3606. MandatoryLevelSecureProcess,
  3607. MandatoryLevelCount
  3608. } MANDATORY_LEVEL,*PMANDATORY_LEVEL;
  3609. typedef struct _TOKEN_APPCONTAINER_INFORMATION {
  3610. PSID TokenAppContainer;
  3611. } TOKEN_APPCONTAINER_INFORMATION,*PTOKEN_APPCONTAINER_INFORMATION;
  3612. #ifndef __WIDL__
  3613. #define TOKEN_APPCONTAINER_SID_MAX_SIZE (sizeof(TOKEN_APPCONTAINER_INFORMATION) + SECURITY_MAX_SID_SIZE)
  3614. #endif
  3615. typedef struct _TOKEN_SID_INFORMATION {
  3616. PSID Sid;
  3617. } TOKEN_SID_INFORMATION,*PTOKEN_SID_INFORMATION;
  3618. typedef struct _TOKEN_BNO_ISOLATION_INFORMATION {
  3619. PWSTR IsolationPrefix;
  3620. BOOLEAN IsolationEnabled;
  3621. } TOKEN_BNO_ISOLATION_INFORMATION,*PTOKEN_BNO_ISOLATION_INFORMATION;
  3622. #define CLAIM_SECURITY_ATTRIBUTE_TYPE_INVALID 0x00
  3623. #define CLAIM_SECURITY_ATTRIBUTE_TYPE_INT64 0x01
  3624. #define CLAIM_SECURITY_ATTRIBUTE_TYPE_UINT64 0x02
  3625. #define CLAIM_SECURITY_ATTRIBUTE_TYPE_STRING 0x03
  3626. #define CLAIM_SECURITY_ATTRIBUTE_TYPE_FQBN 0x04
  3627. #define CLAIM_SECURITY_ATTRIBUTE_TYPE_SID 0x05
  3628. #define CLAIM_SECURITY_ATTRIBUTE_TYPE_BOOLEAN 0x06
  3629. typedef struct _CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE {
  3630. DWORD64 Version;
  3631. PWSTR Name;
  3632. } CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE,*PCLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE;
  3633. typedef struct _CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE {
  3634. PVOID pValue;
  3635. DWORD ValueLength;
  3636. } CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE, *PCLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE;
  3637. #define CLAIM_SECURITY_ATTRIBUTE_TYPE_OCTET_STRING 0x10
  3638. #define CLAIM_SECURITY_ATTRIBUTE_NON_INHERITABLE 0x0001
  3639. #define CLAIM_SECURITY_ATTRIBUTE_VALUE_CASE_SENSITIVE 0x0002
  3640. #define CLAIM_SECURITY_ATTRIBUTE_USE_FOR_DENY_ONLY 0x0004
  3641. #define CLAIM_SECURITY_ATTRIBUTE_DISABLED_BY_DEFAULT 0x0008
  3642. #define CLAIM_SECURITY_ATTRIBUTE_DISABLED 0x0010
  3643. #define CLAIM_SECURITY_ATTRIBUTE_MANDATORY 0x0020
  3644. #define CLAIM_SECURITY_ATTRIBUTE_VALID_FLAGS (CLAIM_SECURITY_ATTRIBUTE_NON_INHERITABLE | CLAIM_SECURITY_ATTRIBUTE_VALUE_CASE_SENSITIVE | CLAIM_SECURITY_ATTRIBUTE_USE_FOR_DENY_ONLY | CLAIM_SECURITY_ATTRIBUTE_DISABLED_BY_DEFAULT | CLAIM_SECURITY_ATTRIBUTE_DISABLED | CLAIM_SECURITY_ATTRIBUTE_MANDATORY)
  3645. #define CLAIM_SECURITY_ATTRIBUTE_CUSTOM_FLAGS 0xffff0000
  3646. typedef struct _CLAIM_SECURITY_ATTRIBUTE_V1 {
  3647. PWSTR Name;
  3648. WORD ValueType;
  3649. WORD Reserved;
  3650. DWORD Flags;
  3651. DWORD ValueCount;
  3652. union {
  3653. PLONG64 pInt64;
  3654. PDWORD64 pUint64;
  3655. PWSTR *ppString;
  3656. PCLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE pFqbn;
  3657. PCLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE pOctetString;
  3658. } Values;
  3659. } CLAIM_SECURITY_ATTRIBUTE_V1,*PCLAIM_SECURITY_ATTRIBUTE_V1;
  3660. typedef struct _CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1 {
  3661. DWORD Name;
  3662. WORD ValueType;
  3663. WORD Reserved;
  3664. DWORD Flags;
  3665. DWORD ValueCount;
  3666. union {
  3667. DWORD pInt64[ANYSIZE_ARRAY];
  3668. DWORD pUint64[ANYSIZE_ARRAY];
  3669. DWORD ppString[ANYSIZE_ARRAY];
  3670. DWORD pFqbn[ANYSIZE_ARRAY];
  3671. DWORD pOctetString[ANYSIZE_ARRAY];
  3672. } Values;
  3673. } CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1,*PCLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1;
  3674. #define CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION_V1 1
  3675. #define CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION CLAIM_SECURITY_ATTRIBUTES_INFORMATION_VERSION_V1
  3676. typedef struct _CLAIM_SECURITY_ATTRIBUTES_INFORMATION {
  3677. WORD Version;
  3678. WORD Reserved;
  3679. DWORD AttributeCount;
  3680. union {
  3681. PCLAIM_SECURITY_ATTRIBUTE_V1 pAttributeV1;
  3682. } Attribute;
  3683. } CLAIM_SECURITY_ATTRIBUTES_INFORMATION,*PCLAIM_SECURITY_ATTRIBUTES_INFORMATION;
  3684. #define SECURITY_DYNAMIC_TRACKING (TRUE)
  3685. #define SECURITY_STATIC_TRACKING (FALSE)
  3686. typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE,*PSECURITY_CONTEXT_TRACKING_MODE;
  3687. typedef struct _SECURITY_QUALITY_OF_SERVICE {
  3688. DWORD Length;
  3689. SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
  3690. SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode;
  3691. BOOLEAN EffectiveOnly;
  3692. } SECURITY_QUALITY_OF_SERVICE,*PSECURITY_QUALITY_OF_SERVICE;
  3693. typedef struct _SE_IMPERSONATION_STATE {
  3694. PACCESS_TOKEN Token;
  3695. BOOLEAN CopyOnOpen;
  3696. BOOLEAN EffectiveOnly;
  3697. SECURITY_IMPERSONATION_LEVEL Level;
  3698. } SE_IMPERSONATION_STATE,*PSE_IMPERSONATION_STATE;
  3699. #define DISABLE_MAX_PRIVILEGE 0x1
  3700. #define SANDBOX_INERT 0x2
  3701. #define LUA_TOKEN 0x4
  3702. #define WRITE_RESTRICTED 0x8
  3703. typedef DWORD SECURITY_INFORMATION,*PSECURITY_INFORMATION;
  3704. #define OWNER_SECURITY_INFORMATION (__MSABI_LONG(0x00000001))
  3705. #define GROUP_SECURITY_INFORMATION (__MSABI_LONG(0x00000002))
  3706. #define DACL_SECURITY_INFORMATION (__MSABI_LONG(0x00000004))
  3707. #define SACL_SECURITY_INFORMATION (__MSABI_LONG(0x00000008))
  3708. #define LABEL_SECURITY_INFORMATION (__MSABI_LONG(0x00000010))
  3709. #define ATTRIBUTE_SECURITY_INFORMATION (__MSABI_LONG(0x00000020))
  3710. #define SCOPE_SECURITY_INFORMATION (__MSABI_LONG(0x00000040))
  3711. #define PROCESS_TRUST_LABEL_SECURITY_INFORMATION (__MSABI_LONG(0x00000080))
  3712. #define ACCESS_FILTER_SECURITY_INFORMATION (__MSABI_LONG(0x00000100))
  3713. #define BACKUP_SECURITY_INFORMATION (__MSABI_LONG(0x00010000))
  3714. #define PROTECTED_DACL_SECURITY_INFORMATION (__MSABI_LONG(0x80000000))
  3715. #define PROTECTED_SACL_SECURITY_INFORMATION (__MSABI_LONG(0x40000000))
  3716. #define UNPROTECTED_DACL_SECURITY_INFORMATION (__MSABI_LONG(0x20000000))
  3717. #define UNPROTECTED_SACL_SECURITY_INFORMATION (__MSABI_LONG(0x10000000))
  3718. typedef BYTE SE_SIGNING_LEVEL, *PSE_SIGNING_LEVEL;
  3719. #define SE_SIGNING_LEVEL_UNCHECKED 0x00000000
  3720. #define SE_SIGNING_LEVEL_UNSIGNED 0x00000001
  3721. #define SE_SIGNING_LEVEL_ENTERPRISE 0x00000002
  3722. #define SE_SIGNING_LEVEL_CUSTOM_1 0x00000003
  3723. #define SE_SIGNING_LEVEL_DEVELOPER SE_SIGNING_LEVEL_CUSTOM_1
  3724. #define SE_SIGNING_LEVEL_AUTHENTICODE 0x00000004
  3725. #define SE_SIGNING_LEVEL_CUSTOM_2 0x00000005
  3726. #define SE_SIGNING_LEVEL_STORE 0x00000006
  3727. #define SE_SIGNING_LEVEL_CUSTOM_3 0x00000007
  3728. #define SE_SIGNING_LEVEL_ANTIMALWARE SE_SIGNING_LEVEL_CUSTOM_3
  3729. #define SE_SIGNING_LEVEL_MICROSOFT 0x00000008
  3730. #define SE_SIGNING_LEVEL_CUSTOM_4 0x00000009
  3731. #define SE_SIGNING_LEVEL_CUSTOM_5 0x0000000A
  3732. #define SE_SIGNING_LEVEL_DYNAMIC_CODEGEN 0x0000000B
  3733. #define SE_SIGNING_LEVEL_WINDOWS 0x0000000C
  3734. #define SE_SIGNING_LEVEL_CUSTOM_7 0x0000000D
  3735. #define SE_SIGNING_LEVEL_WINDOWS_TCB 0x0000000E
  3736. #define SE_SIGNING_LEVEL_CUSTOM_6 0x0000000F
  3737. typedef enum _SE_IMAGE_SIGNATURE_TYPE {
  3738. SeImageSignatureNone = 0,
  3739. SeImageSignatureEmbedded,
  3740. SeImageSignatureCache,
  3741. SeImageSignatureCatalogCached,
  3742. SeImageSignatureCatalogNotCached,
  3743. SeImageSignatureCatalogHint,
  3744. SeImageSignaturePackageCatalog,
  3745. SeImageSignaturePplMitigated
  3746. } SE_IMAGE_SIGNATURE_TYPE, *PSE_IMAGE_SIGNATURE_TYPE;
  3747. typedef enum _SE_LEARNING_MODE_DATA_TYPE {
  3748. SeLearningModeInvalidType = 0,
  3749. SeLearningModeSettings,
  3750. SeLearningModeMax
  3751. } SE_LEARNING_MODE_DATA_TYPE;
  3752. #define SE_LEARNING_MODE_FLAG_PERMISSIVE 0x00000001
  3753. typedef struct _SECURITY_CAPABILITIES {
  3754. PSID AppContainerSid;
  3755. PSID_AND_ATTRIBUTES Capabilities;
  3756. DWORD CapabilityCount;
  3757. DWORD Reserved;
  3758. } SECURITY_CAPABILITIES,*PSECURITY_CAPABILITIES,*LPSECURITY_CAPABILITIES;
  3759. #define PROCESS_TERMINATE (0x0001)
  3760. #define PROCESS_CREATE_THREAD (0x0002)
  3761. #define PROCESS_SET_SESSIONID (0x0004)
  3762. #define PROCESS_VM_OPERATION (0x0008)
  3763. #define PROCESS_VM_READ (0x0010)
  3764. #define PROCESS_VM_WRITE (0x0020)
  3765. #define PROCESS_DUP_HANDLE (0x0040)
  3766. #define PROCESS_CREATE_PROCESS (0x0080)
  3767. #define PROCESS_SET_QUOTA (0x0100)
  3768. #define PROCESS_SET_INFORMATION (0x0200)
  3769. #define PROCESS_QUERY_INFORMATION (0x0400)
  3770. #define PROCESS_SUSPEND_RESUME (0x0800)
  3771. #define PROCESS_QUERY_LIMITED_INFORMATION (0x1000)
  3772. #define PROCESS_SET_LIMITED_INFORMATION (0x2000)
  3773. #if NTDDI_VERSION >= 0x06000000
  3774. #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xffff)
  3775. #else
  3776. #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xfff)
  3777. #endif
  3778. #ifdef _WIN64
  3779. #define MAXIMUM_PROC_PER_GROUP 64
  3780. #else
  3781. #define MAXIMUM_PROC_PER_GROUP 32
  3782. #endif
  3783. #define MAXIMUM_PROCESSORS MAXIMUM_PROC_PER_GROUP
  3784. #define THREAD_TERMINATE (0x0001)
  3785. #define THREAD_SUSPEND_RESUME (0x0002)
  3786. #define THREAD_GET_CONTEXT (0x0008)
  3787. #define THREAD_SET_CONTEXT (0x0010)
  3788. #define THREAD_SET_INFORMATION (0x0020)
  3789. #define THREAD_QUERY_INFORMATION (0x0040)
  3790. #define THREAD_SET_THREAD_TOKEN (0x0080)
  3791. #define THREAD_IMPERSONATE (0x0100)
  3792. #define THREAD_DIRECT_IMPERSONATION (0x0200)
  3793. #define THREAD_SET_LIMITED_INFORMATION (0x0400)
  3794. #define THREAD_QUERY_LIMITED_INFORMATION (0x0800)
  3795. #define THREAD_RESUME (0x1000)
  3796. #if NTDDI_VERSION >= 0x06000000
  3797. #define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xffff)
  3798. #else
  3799. #define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3ff)
  3800. #endif
  3801. #define JOB_OBJECT_ASSIGN_PROCESS (0x0001)
  3802. #define JOB_OBJECT_SET_ATTRIBUTES (0x0002)
  3803. #define JOB_OBJECT_QUERY (0x0004)
  3804. #define JOB_OBJECT_TERMINATE (0x0008)
  3805. #define JOB_OBJECT_SET_SECURITY_ATTRIBUTES (0x0010)
  3806. #define JOB_OBJECT_IMPERSONATE (0x0020)
  3807. #define JOB_OBJECT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3F)
  3808. typedef struct _JOB_SET_ARRAY {
  3809. HANDLE JobHandle;
  3810. DWORD MemberLevel;
  3811. DWORD Flags;
  3812. } JOB_SET_ARRAY,*PJOB_SET_ARRAY;
  3813. #define FLS_MAXIMUM_AVAILABLE 128
  3814. #define TLS_MINIMUM_AVAILABLE 64
  3815. #ifndef __MINGW_EXCPT_DEFINE_PSDK
  3816. typedef struct _EXCEPTION_REGISTRATION_RECORD {
  3817. __C89_NAMELESS union {
  3818. struct _EXCEPTION_REGISTRATION_RECORD *Next;
  3819. struct _EXCEPTION_REGISTRATION_RECORD *prev;
  3820. };
  3821. __C89_NAMELESS union {
  3822. PEXCEPTION_ROUTINE Handler;
  3823. PEXCEPTION_ROUTINE handler;
  3824. };
  3825. } EXCEPTION_REGISTRATION_RECORD;
  3826. typedef EXCEPTION_REGISTRATION_RECORD *PEXCEPTION_REGISTRATION_RECORD;
  3827. typedef EXCEPTION_REGISTRATION_RECORD EXCEPTION_REGISTRATION;
  3828. typedef PEXCEPTION_REGISTRATION_RECORD PEXCEPTION_REGISTRATION;
  3829. #endif
  3830. #ifndef _NT_TIB_DEFINED
  3831. #define _NT_TIB_DEFINED
  3832. __C89_NAMELESS typedef struct _NT_TIB {
  3833. struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList;
  3834. PVOID StackBase;
  3835. PVOID StackLimit;
  3836. PVOID SubSystemTib;
  3837. __C89_NAMELESS union {
  3838. PVOID FiberData;
  3839. DWORD Version;
  3840. };
  3841. PVOID ArbitraryUserPointer;
  3842. struct _NT_TIB *Self;
  3843. } NT_TIB;
  3844. typedef NT_TIB *PNT_TIB;
  3845. #endif /* _NT_TIB_DEFINED */
  3846. __C89_NAMELESS typedef struct _NT_TIB32 {
  3847. DWORD ExceptionList;
  3848. DWORD StackBase;
  3849. DWORD StackLimit;
  3850. DWORD SubSystemTib;
  3851. __C89_NAMELESS union {
  3852. DWORD FiberData;
  3853. DWORD Version;
  3854. };
  3855. DWORD ArbitraryUserPointer;
  3856. DWORD Self;
  3857. } NT_TIB32,*PNT_TIB32;
  3858. __C89_NAMELESS typedef struct _NT_TIB64 {
  3859. DWORD64 ExceptionList;
  3860. DWORD64 StackBase;
  3861. DWORD64 StackLimit;
  3862. DWORD64 SubSystemTib;
  3863. __C89_NAMELESS union {
  3864. DWORD64 FiberData;
  3865. DWORD Version;
  3866. };
  3867. DWORD64 ArbitraryUserPointer;
  3868. DWORD64 Self;
  3869. } NT_TIB64,*PNT_TIB64;
  3870. #if !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_)
  3871. #define WX86
  3872. #endif
  3873. #define THREAD_DYNAMIC_CODE_ALLOW 1
  3874. #define THREAD_BASE_PRIORITY_LOWRT 15
  3875. #define THREAD_BASE_PRIORITY_MAX 2
  3876. #define THREAD_BASE_PRIORITY_MIN (-2)
  3877. #define THREAD_BASE_PRIORITY_IDLE (-15)
  3878. typedef struct _UMS_CREATE_THREAD_ATTRIBUTES {
  3879. DWORD UmsVersion;
  3880. PVOID UmsContext;
  3881. PVOID UmsCompletionList;
  3882. } UMS_CREATE_THREAD_ATTRIBUTES,*PUMS_CREATE_THREAD_ATTRIBUTES;
  3883. #define COMPONENT_KTM 0x01
  3884. #define COMPONENT_VALID_FLAGS COMPONENT_KTM
  3885. typedef struct _COMPONENT_FILTER {
  3886. DWORD ComponentFlags;
  3887. } COMPONENT_FILTER,*PCOMPONENT_FILTER;
  3888. #define DYNAMIC_EH_CONTINUATION_TARGET_ADD 0x00000001
  3889. #define DYNAMIC_EH_CONTINUATION_TARGET_PROCESSED 0x00000002
  3890. typedef struct _PROCESS_DYNAMIC_EH_CONTINUATION_TARGET {
  3891. ULONG_PTR TargetAddress;
  3892. ULONG_PTR Flags;
  3893. } PROCESS_DYNAMIC_EH_CONTINUATION_TARGET,*PPROCESS_DYNAMIC_EH_CONTINUATION_TARGET;
  3894. typedef struct _PROCESS_DYNAMIC_EH_CONTINUATION_TARGETS_INFORMATION {
  3895. WORD NumberOfTargets;
  3896. WORD Reserved;
  3897. DWORD Reserved2;
  3898. PPROCESS_DYNAMIC_EH_CONTINUATION_TARGET Targets;
  3899. } PROCESS_DYNAMIC_EH_CONTINUATION_TARGETS_INFORMATION,*PPROCESS_DYNAMIC_EH_CONTINUATION_TARGETS_INFORMATION;
  3900. #define DYNAMIC_ENFORCED_ADDRESS_RANGE_ADD 0x00000001
  3901. #define DYNAMIC_ENFORCED_ADDRESS_RANGE_PROCESSED 0x00000002
  3902. typedef struct _PROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGE {
  3903. ULONG_PTR BaseAddress;
  3904. SIZE_T Size;
  3905. DWORD Flags;
  3906. } PROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGE,*PPROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGE;
  3907. typedef struct _PROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGES_INFORMATION {
  3908. WORD NumberOfRanges;
  3909. WORD Reserved;
  3910. DWORD Reserved2;
  3911. PPROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGE Ranges;
  3912. } PROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGES_INFORMATION,*PPROCESS_DYNAMIC_ENFORCED_ADDRESS_RANGES_INFORMATION;
  3913. typedef struct _QUOTA_LIMITS {
  3914. SIZE_T PagedPoolLimit;
  3915. SIZE_T NonPagedPoolLimit;
  3916. SIZE_T MinimumWorkingSetSize;
  3917. SIZE_T MaximumWorkingSetSize;
  3918. SIZE_T PagefileLimit;
  3919. LARGE_INTEGER TimeLimit;
  3920. } QUOTA_LIMITS,*PQUOTA_LIMITS;
  3921. #define QUOTA_LIMITS_HARDWS_MIN_ENABLE 0x00000001
  3922. #define QUOTA_LIMITS_HARDWS_MIN_DISABLE 0x00000002
  3923. #define QUOTA_LIMITS_HARDWS_MAX_ENABLE 0x00000004
  3924. #define QUOTA_LIMITS_HARDWS_MAX_DISABLE 0x00000008
  3925. #define QUOTA_LIMITS_USE_DEFAULT_LIMITS 0x00000010
  3926. typedef union _RATE_QUOTA_LIMIT {
  3927. DWORD RateData;
  3928. __C89_NAMELESS struct {
  3929. DWORD RatePercent : 7;
  3930. DWORD Reserved0 : 25;
  3931. } DUMMYSTRUCTNAME;
  3932. } RATE_QUOTA_LIMIT, *PRATE_QUOTA_LIMIT;
  3933. typedef struct _QUOTA_LIMITS_EX {
  3934. SIZE_T PagedPoolLimit;
  3935. SIZE_T NonPagedPoolLimit;
  3936. SIZE_T MinimumWorkingSetSize;
  3937. SIZE_T MaximumWorkingSetSize;
  3938. SIZE_T PagefileLimit;
  3939. LARGE_INTEGER TimeLimit;
  3940. SIZE_T WorkingSetLimit;
  3941. SIZE_T Reserved2;
  3942. SIZE_T Reserved3;
  3943. SIZE_T Reserved4;
  3944. DWORD Flags;
  3945. RATE_QUOTA_LIMIT CpuRateLimit;
  3946. } QUOTA_LIMITS_EX,*PQUOTA_LIMITS_EX;
  3947. typedef struct _IO_COUNTERS {
  3948. ULONGLONG ReadOperationCount;
  3949. ULONGLONG WriteOperationCount;
  3950. ULONGLONG OtherOperationCount;
  3951. ULONGLONG ReadTransferCount;
  3952. ULONGLONG WriteTransferCount;
  3953. ULONGLONG OtherTransferCount;
  3954. } IO_COUNTERS;
  3955. typedef IO_COUNTERS *PIO_COUNTERS;
  3956. #define MAX_HW_COUNTERS 16
  3957. #define THREAD_PROFILING_FLAG_DISPATCH 0x1
  3958. typedef enum _HARDWARE_COUNTER_TYPE {
  3959. PMCCounter,
  3960. MaxHardwareCounterType
  3961. } HARDWARE_COUNTER_TYPE, *PHARDWARE_COUNTER_TYPE;
  3962. typedef enum _PROCESS_MITIGATION_POLICY {
  3963. ProcessDEPPolicy,
  3964. ProcessASLRPolicy,
  3965. ProcessDynamicCodePolicy,
  3966. ProcessStrictHandleCheckPolicy,
  3967. ProcessSystemCallDisablePolicy,
  3968. ProcessMitigationOptionsMask,
  3969. ProcessExtensionPointDisablePolicy,
  3970. ProcessControlFlowGuardPolicy,
  3971. ProcessSignaturePolicy,
  3972. ProcessFontDisablePolicy,
  3973. ProcessImageLoadPolicy,
  3974. ProcessSystemCallFilterPolicy,
  3975. ProcessPayloadRestrictionPolicy,
  3976. ProcessChildProcessPolicy,
  3977. ProcessSideChannelIsolationPolicy,
  3978. ProcessUserShadowStackPolicy,
  3979. ProcessRedirectionTrustPolicy,
  3980. ProcessUserPointerAuthPolicy,
  3981. ProcessSEHOPPolicy,
  3982. MaxProcessMitigationPolicy
  3983. } PROCESS_MITIGATION_POLICY,*PPROCESS_MITIGATION_POLICY;
  3984. typedef struct _PROCESS_MITIGATION_ASLR_POLICY {
  3985. __C89_NAMELESS union {
  3986. DWORD Flags;
  3987. __C89_NAMELESS struct {
  3988. DWORD EnableBottomUpRandomization : 1;
  3989. DWORD EnableForceRelocateImages : 1;
  3990. DWORD EnableHighEntropy : 1;
  3991. DWORD DisallowStrippedImages : 1;
  3992. DWORD ReservedFlags : 28;
  3993. };
  3994. };
  3995. } PROCESS_MITIGATION_ASLR_POLICY,*PPROCESS_MITIGATION_ASLR_POLICY;
  3996. typedef struct _PROCESS_MITIGATION_DEP_POLICY {
  3997. __C89_NAMELESS union {
  3998. DWORD Flags;
  3999. __C89_NAMELESS struct {
  4000. DWORD Enable : 1;
  4001. DWORD DisableAtlThunkEmulation : 1;
  4002. DWORD ReservedFlags : 30;
  4003. };
  4004. };
  4005. BOOLEAN Permanent;
  4006. } PROCESS_MITIGATION_DEP_POLICY,*PPROCESS_MITIGATION_DEP_POLICY;
  4007. typedef struct _PROCESS_MITIGATION_SEHOP_POLICY {
  4008. __C89_NAMELESS union {
  4009. DWORD Flags;
  4010. __C89_NAMELESS struct {
  4011. DWORD EnableSehop : 1;
  4012. DWORD ReservedFlags : 31;
  4013. };
  4014. };
  4015. } PROCESS_MITIGATION_SEHOP_POLICY,*PPROCESS_MITIGATION_SEHOP_POLICY;
  4016. typedef struct _PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY {
  4017. __C89_NAMELESS union {
  4018. DWORD Flags;
  4019. __C89_NAMELESS struct {
  4020. DWORD RaiseExceptionOnInvalidHandleReference : 1;
  4021. DWORD HandleExceptionsPermanentlyEnabled : 1;
  4022. DWORD ReservedFlags : 30;
  4023. };
  4024. };
  4025. } PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY,*PPROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY;
  4026. typedef struct _PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY {
  4027. __C89_NAMELESS union {
  4028. DWORD Flags;
  4029. __C89_NAMELESS struct {
  4030. DWORD DisallowWin32kSystemCalls : 1;
  4031. DWORD ReservedFlags : 31;
  4032. };
  4033. };
  4034. } PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY,*PPROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY;
  4035. typedef struct _PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY {
  4036. __C89_NAMELESS union {
  4037. DWORD Flags;
  4038. __C89_NAMELESS struct {
  4039. DWORD DisableExtensionPoints : 1;
  4040. DWORD ReservedFlags : 31;
  4041. };
  4042. };
  4043. } PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY,*PPROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY;
  4044. typedef struct _PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY {
  4045. __C89_NAMELESS union {
  4046. DWORD Flags;
  4047. __C89_NAMELESS struct {
  4048. DWORD EnableControlFlowGuard :1;
  4049. DWORD EnableExportSuppression :1;
  4050. DWORD StrictMode :1;
  4051. DWORD ReservedFlags :29;
  4052. };
  4053. };
  4054. } PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY, *PPROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY;
  4055. typedef struct _PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY {
  4056. __C89_NAMELESS union {
  4057. DWORD Flags;
  4058. __C89_NAMELESS struct {
  4059. DWORD MicrosoftSignedOnly :1;
  4060. DWORD StoreSignedOnly :1;
  4061. DWORD MitigationOptIn :1;
  4062. DWORD ReservedFlags :29;
  4063. };
  4064. };
  4065. } PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY, *PPROCESS_MITIGATION_BINARY_SIGNATURE_POLICY;
  4066. typedef struct _PROCESS_MITIGATION_DYNAMIC_CODE_POLICY {
  4067. __C89_NAMELESS union {
  4068. DWORD Flags;
  4069. __C89_NAMELESS struct {
  4070. DWORD ProhibitDynamicCode :1;
  4071. DWORD AllowThreadOptOut :1;
  4072. DWORD AllowRemoteDowngrade :1;
  4073. DWORD ReservedFlags :29;
  4074. };
  4075. };
  4076. } PROCESS_MITIGATION_DYNAMIC_CODE_POLICY, *PPROCESS_MITIGATION_DYNAMIC_CODE_POLICY;
  4077. typedef struct _PROCESS_MITIGATION_FONT_DISABLE_POLICY {
  4078. __C89_NAMELESS union {
  4079. DWORD Flags;
  4080. __C89_NAMELESS struct {
  4081. DWORD DisableNonSystemFonts :1;
  4082. DWORD AuditNonSystemFontLoading :1;
  4083. DWORD ReservedFlags :30;
  4084. };
  4085. };
  4086. } PROCESS_MITIGATION_FONT_DISABLE_POLICY, *PPROCESS_MITIGATION_FONT_DISABLE_POLICY;
  4087. typedef struct _PROCESS_MITIGATION_IMAGE_LOAD_POLICY {
  4088. __C89_NAMELESS union {
  4089. DWORD Flags;
  4090. __C89_NAMELESS struct {
  4091. DWORD NoRemoteImages :1;
  4092. DWORD NoLowMandatoryLabelImages :1;
  4093. DWORD PreferSystem32Images :1;
  4094. DWORD ReservedFlags :29;
  4095. };
  4096. };
  4097. } PROCESS_MITIGATION_IMAGE_LOAD_POLICY, *PPROCESS_MITIGATION_IMAGE_LOAD_POLICY;
  4098. typedef struct _PROCESS_MITIGATION_SYSTEM_CALL_FILTER_POLICY {
  4099. __C89_NAMELESS union {
  4100. DWORD Flags;
  4101. __C89_NAMELESS struct {
  4102. DWORD FilterId :4;
  4103. DWORD ReservedFlags :28;
  4104. };
  4105. };
  4106. } PROCESS_MITIGATION_SYSTEM_CALL_FILTER_POLICY, *PPROCESS_MITIGATION_SYSTEM_CALL_FILTER_POLICY;
  4107. typedef struct _PROCESS_MITIGATION_PAYLOAD_RESTRICTION_POLICY {
  4108. __C89_NAMELESS union {
  4109. DWORD Flags;
  4110. __C89_NAMELESS struct {
  4111. DWORD EnableExportAddressFilter :1;
  4112. DWORD AuditExportAddressFilter :1;
  4113. DWORD EnableExportAddressFilterPlus :1;
  4114. DWORD AuditExportAddressFilterPlus :1;
  4115. DWORD EnableImportAddressFilter :1;
  4116. DWORD AuditImportAddressFilter :1;
  4117. DWORD EnableRopStackPivot :1;
  4118. DWORD AuditRopStackPivot :1;
  4119. DWORD EnableRopCallerCheck :1;
  4120. DWORD AuditRopCallerCheck :1;
  4121. DWORD EnableRopSimExec :1;
  4122. DWORD AuditRopSimExec :1;
  4123. DWORD ReservedFlags :20;
  4124. };
  4125. };
  4126. } PROCESS_MITIGATION_PAYLOAD_RESTRICTION_POLICY, *PPROCESS_MITIGATION_PAYLOAD_RESTRICTION_POLICY;
  4127. typedef struct _PROCESS_MITIGATION_CHILD_PROCESS_POLICY {
  4128. __C89_NAMELESS union {
  4129. DWORD Flags;
  4130. __C89_NAMELESS struct {
  4131. DWORD NoChildProcessCreation :1;
  4132. DWORD AuditNoChildProcessCreation :1;
  4133. DWORD AllowSecureProcessCreation :1;
  4134. DWORD ReservedFlags :29;
  4135. };
  4136. };
  4137. } PROCESS_MITIGATION_CHILD_PROCESS_POLICY, *PPROCESS_MITIGATION_CHILD_PROCESS_POLICY;
  4138. typedef struct _PROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY {
  4139. __C89_NAMELESS union {
  4140. DWORD Flags;
  4141. __C89_NAMELESS struct {
  4142. DWORD SmtBranchTargetIsolation :1;
  4143. DWORD IsolateSecurityDomain :1;
  4144. DWORD DisablePageCombine :1;
  4145. DWORD SpeculativeStoreBypassDisable :1;
  4146. DWORD RestrictCoreSharing : 1;
  4147. DWORD ReservedFlags : 27;
  4148. };
  4149. };
  4150. } PROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY, *PPROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY;
  4151. typedef struct _PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY {
  4152. __C89_NAMELESS union {
  4153. DWORD Flags;
  4154. __C89_NAMELESS struct {
  4155. DWORD EnableUserShadowStack : 1;
  4156. DWORD AuditUserShadowStack : 1;
  4157. DWORD SetContextIpValidation : 1;
  4158. DWORD AuditSetContextIpValidation : 1;
  4159. DWORD EnableUserShadowStackStrictMode : 1;
  4160. DWORD BlockNonCetBinaries : 1;
  4161. DWORD BlockNonCetBinariesNonEhcont : 1;
  4162. DWORD AuditBlockNonCetBinaries : 1;
  4163. DWORD CetDynamicApisOutOfProcOnly : 1;
  4164. DWORD SetContextIpValidationRelaxedMode : 1;
  4165. DWORD ReservedFlags : 22;
  4166. };
  4167. };
  4168. } PROCESS_MITIGATION_USER_SHADOW_STACK_POLICY, *PPROCESS_MITIGATION_USER_SHADOW_STACK_POLICY;
  4169. typedef struct _PROCESS_MITIGATION_USER_POINTER_AUTH_POLICY {
  4170. __C89_NAMELESS union {
  4171. DWORD Flags;
  4172. __C89_NAMELESS struct {
  4173. DWORD EnablePointerAuthUserIp : 1;
  4174. DWORD ReservedFlags : 31;
  4175. };
  4176. };
  4177. } PROCESS_MITIGATION_USER_POINTER_AUTH_POLICY, *PPROCESS_MITIGATION_USER_POINTER_AUTH_POLICY;
  4178. typedef struct _PROCESS_MITIGATION_REDIRECTION_TRUST_POLICY {
  4179. __C89_NAMELESS union {
  4180. DWORD Flags;
  4181. __C89_NAMELESS struct {
  4182. DWORD EnforceRedirectionTrust : 1;
  4183. DWORD AuditRedirectionTrust : 1;
  4184. DWORD ReservedFlags : 30;
  4185. };
  4186. };
  4187. } PROCESS_MITIGATION_REDIRECTION_TRUST_POLICY, *PPROCESS_MITIGATION_REDIRECTION_TRUST_POLICY;
  4188. typedef struct _JOBOBJECT_BASIC_ACCOUNTING_INFORMATION {
  4189. LARGE_INTEGER TotalUserTime;
  4190. LARGE_INTEGER TotalKernelTime;
  4191. LARGE_INTEGER ThisPeriodTotalUserTime;
  4192. LARGE_INTEGER ThisPeriodTotalKernelTime;
  4193. DWORD TotalPageFaultCount;
  4194. DWORD TotalProcesses;
  4195. DWORD ActiveProcesses;
  4196. DWORD TotalTerminatedProcesses;
  4197. } JOBOBJECT_BASIC_ACCOUNTING_INFORMATION,*PJOBOBJECT_BASIC_ACCOUNTING_INFORMATION;
  4198. typedef struct _JOBOBJECT_BASIC_LIMIT_INFORMATION {
  4199. LARGE_INTEGER PerProcessUserTimeLimit;
  4200. LARGE_INTEGER PerJobUserTimeLimit;
  4201. DWORD LimitFlags;
  4202. SIZE_T MinimumWorkingSetSize;
  4203. SIZE_T MaximumWorkingSetSize;
  4204. DWORD ActiveProcessLimit;
  4205. ULONG_PTR Affinity;
  4206. DWORD PriorityClass;
  4207. DWORD SchedulingClass;
  4208. } JOBOBJECT_BASIC_LIMIT_INFORMATION,*PJOBOBJECT_BASIC_LIMIT_INFORMATION;
  4209. typedef struct _JOBOBJECT_EXTENDED_LIMIT_INFORMATION {
  4210. JOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimitInformation;
  4211. IO_COUNTERS IoInfo;
  4212. SIZE_T ProcessMemoryLimit;
  4213. SIZE_T JobMemoryLimit;
  4214. SIZE_T PeakProcessMemoryUsed;
  4215. SIZE_T PeakJobMemoryUsed;
  4216. } JOBOBJECT_EXTENDED_LIMIT_INFORMATION,*PJOBOBJECT_EXTENDED_LIMIT_INFORMATION;
  4217. typedef struct _JOBOBJECT_BASIC_PROCESS_ID_LIST {
  4218. DWORD NumberOfAssignedProcesses;
  4219. DWORD NumberOfProcessIdsInList;
  4220. ULONG_PTR ProcessIdList[1];
  4221. } JOBOBJECT_BASIC_PROCESS_ID_LIST,*PJOBOBJECT_BASIC_PROCESS_ID_LIST;
  4222. typedef struct _JOBOBJECT_BASIC_UI_RESTRICTIONS {
  4223. DWORD UIRestrictionsClass;
  4224. } JOBOBJECT_BASIC_UI_RESTRICTIONS,*PJOBOBJECT_BASIC_UI_RESTRICTIONS;
  4225. typedef struct _JOBOBJECT_SECURITY_LIMIT_INFORMATION {
  4226. DWORD SecurityLimitFlags;
  4227. HANDLE JobToken;
  4228. PTOKEN_GROUPS SidsToDisable;
  4229. PTOKEN_PRIVILEGES PrivilegesToDelete;
  4230. PTOKEN_GROUPS RestrictedSids;
  4231. } JOBOBJECT_SECURITY_LIMIT_INFORMATION,*PJOBOBJECT_SECURITY_LIMIT_INFORMATION;
  4232. typedef struct _JOBOBJECT_END_OF_JOB_TIME_INFORMATION {
  4233. DWORD EndOfJobTimeAction;
  4234. } JOBOBJECT_END_OF_JOB_TIME_INFORMATION,*PJOBOBJECT_END_OF_JOB_TIME_INFORMATION;
  4235. typedef struct _JOBOBJECT_ASSOCIATE_COMPLETION_PORT {
  4236. PVOID CompletionKey;
  4237. HANDLE CompletionPort;
  4238. } JOBOBJECT_ASSOCIATE_COMPLETION_PORT,*PJOBOBJECT_ASSOCIATE_COMPLETION_PORT;
  4239. typedef struct _JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION {
  4240. JOBOBJECT_BASIC_ACCOUNTING_INFORMATION BasicInfo;
  4241. IO_COUNTERS IoInfo;
  4242. } JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION,*PJOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION;
  4243. typedef struct _JOBOBJECT_JOBSET_INFORMATION {
  4244. DWORD MemberLevel;
  4245. } JOBOBJECT_JOBSET_INFORMATION,*PJOBOBJECT_JOBSET_INFORMATION;
  4246. typedef enum _JOBOBJECT_RATE_CONTROL_TOLERANCE {
  4247. ToleranceLow = 1,
  4248. ToleranceMedium,
  4249. ToleranceHigh
  4250. } JOBOBJECT_RATE_CONTROL_TOLERANCE;
  4251. typedef enum _JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL {
  4252. ToleranceIntervalShort = 1,
  4253. ToleranceIntervalMedium,
  4254. ToleranceIntervalLong
  4255. } JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL;
  4256. typedef struct _JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION {
  4257. DWORD64 IoReadBytesLimit;
  4258. DWORD64 IoWriteBytesLimit;
  4259. LARGE_INTEGER PerJobUserTimeLimit;
  4260. DWORD64 JobMemoryLimit;
  4261. JOBOBJECT_RATE_CONTROL_TOLERANCE RateControlTolerance;
  4262. JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL RateControlToleranceInterval;
  4263. DWORD LimitFlags;
  4264. } JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION,*PJOBOBJECT_NOTIFICATION_LIMIT_INFORMATION;
  4265. typedef struct JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 {
  4266. DWORD64 IoReadBytesLimit;
  4267. DWORD64 IoWriteBytesLimit;
  4268. LARGE_INTEGER PerJobUserTimeLimit;
  4269. __C89_NAMELESS union {
  4270. DWORD64 JobHighMemoryLimit;
  4271. DWORD64 JobMemoryLimit;
  4272. };
  4273. __C89_NAMELESS union {
  4274. JOBOBJECT_RATE_CONTROL_TOLERANCE RateControlTolerance;
  4275. JOBOBJECT_RATE_CONTROL_TOLERANCE CpuRateControlTolerance;
  4276. };
  4277. __C89_NAMELESS union {
  4278. JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL RateControlToleranceInterval;
  4279. JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL CpuRateControlToleranceInterval;
  4280. };
  4281. DWORD LimitFlags;
  4282. JOBOBJECT_RATE_CONTROL_TOLERANCE IoRateControlTolerance;
  4283. DWORD64 JobLowMemoryLimit;
  4284. JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL IoRateControlToleranceInterval;
  4285. JOBOBJECT_RATE_CONTROL_TOLERANCE NetRateControlTolerance;
  4286. JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL NetRateControlToleranceInterval;
  4287. } JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2;
  4288. typedef struct _JOBOBJECT_LIMIT_VIOLATION_INFORMATION {
  4289. DWORD LimitFlags;
  4290. DWORD ViolationLimitFlags;
  4291. DWORD64 IoReadBytes;
  4292. DWORD64 IoReadBytesLimit;
  4293. DWORD64 IoWriteBytes;
  4294. DWORD64 IoWriteBytesLimit;
  4295. LARGE_INTEGER PerJobUserTime;
  4296. LARGE_INTEGER PerJobUserTimeLimit;
  4297. DWORD64 JobMemory;
  4298. DWORD64 JobMemoryLimit;
  4299. JOBOBJECT_RATE_CONTROL_TOLERANCE RateControlTolerance;
  4300. JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL RateControlToleranceLimit;
  4301. } JOBOBJECT_LIMIT_VIOLATION_INFORMATION,*PJOBOBJECT_LIMIT_VIOLATION_INFORMATION;
  4302. typedef struct JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2 {
  4303. DWORD LimitFlags;
  4304. DWORD ViolationLimitFlags;
  4305. DWORD64 IoReadBytes;
  4306. DWORD64 IoReadBytesLimit;
  4307. DWORD64 IoWriteBytes;
  4308. DWORD64 IoWriteBytesLimit;
  4309. LARGE_INTEGER PerJobUserTime;
  4310. LARGE_INTEGER PerJobUserTimeLimit;
  4311. DWORD64 JobMemory;
  4312. __C89_NAMELESS union {
  4313. DWORD64 JobHighMemoryLimit;
  4314. DWORD64 JobMemoryLimit;
  4315. };
  4316. __C89_NAMELESS union {
  4317. JOBOBJECT_RATE_CONTROL_TOLERANCE RateControlTolerance;
  4318. JOBOBJECT_RATE_CONTROL_TOLERANCE CpuRateControlTolerance;
  4319. };
  4320. __C89_NAMELESS union {
  4321. JOBOBJECT_RATE_CONTROL_TOLERANCE RateControlToleranceLimit;
  4322. JOBOBJECT_RATE_CONTROL_TOLERANCE CpuRateControlToleranceLimit;
  4323. };
  4324. DWORD64 JobLowMemoryLimit;
  4325. JOBOBJECT_RATE_CONTROL_TOLERANCE IoRateControlTolerance;
  4326. JOBOBJECT_RATE_CONTROL_TOLERANCE IoRateControlToleranceLimit;
  4327. JOBOBJECT_RATE_CONTROL_TOLERANCE NetRateControlTolerance;
  4328. JOBOBJECT_RATE_CONTROL_TOLERANCE NetRateControlToleranceLimit;
  4329. } JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2;
  4330. typedef struct _JOBOBJECT_CPU_RATE_CONTROL_INFORMATION {
  4331. DWORD ControlFlags;
  4332. __C89_NAMELESS union {
  4333. DWORD CpuRate;
  4334. DWORD Weight;
  4335. };
  4336. } JOBOBJECT_CPU_RATE_CONTROL_INFORMATION,*PJOBOBJECT_CPU_RATE_CONTROL_INFORMATION;
  4337. typedef enum JOB_OBJECT_NET_RATE_CONTROL_FLAGS {
  4338. JOB_OBJECT_NET_RATE_CONTROL_ENABLE = 0x1,
  4339. JOB_OBJECT_NET_RATE_CONTROL_MAX_BANDWIDTH = 0x2,
  4340. JOB_OBJECT_NET_RATE_CONTROL_DSCP_TAG = 0x4,
  4341. JOB_OBJECT_NET_RATE_CONTROL_VALID_FLAGS = 0x7
  4342. } JOB_OBJECT_NET_RATE_CONTROL_FLAGS;
  4343. #if !defined(SORTPP_PASS) && !defined(__WIDL__) && !defined(RC_INVOKED)
  4344. DEFINE_ENUM_FLAG_OPERATORS(JOB_OBJECT_NET_RATE_CONTROL_FLAGS)
  4345. C_ASSERT(JOB_OBJECT_NET_RATE_CONTROL_VALID_FLAGS == (JOB_OBJECT_NET_RATE_CONTROL_ENABLE + JOB_OBJECT_NET_RATE_CONTROL_MAX_BANDWIDTH + JOB_OBJECT_NET_RATE_CONTROL_DSCP_TAG));
  4346. #endif
  4347. #define JOB_OBJECT_NET_RATE_CONTROL_MAX_DSCP_TAG 64
  4348. typedef struct JOBOBJECT_NET_RATE_CONTROL_INFORMATION {
  4349. DWORD64 MaxBandwidth;
  4350. JOB_OBJECT_NET_RATE_CONTROL_FLAGS ControlFlags;
  4351. BYTE DscpTag;
  4352. } JOBOBJECT_NET_RATE_CONTROL_INFORMATION;
  4353. typedef enum JOB_OBJECT_IO_RATE_CONTROL_FLAGS {
  4354. JOB_OBJECT_IO_RATE_CONTROL_ENABLE = 0x1,
  4355. JOB_OBJECT_IO_RATE_CONTROL_STANDALONE_VOLUME = 0x2,
  4356. JOB_OBJECT_IO_RATE_CONTROL_FORCE_UNIT_ACCESS_ALL = 0x4,
  4357. JOB_OBJECT_IO_RATE_CONTROL_FORCE_UNIT_ACCESS_ON_SOFT_CAP = 0x8,
  4358. JOB_OBJECT_IO_RATE_CONTROL_VALID_FLAGS = JOB_OBJECT_IO_RATE_CONTROL_ENABLE | JOB_OBJECT_IO_RATE_CONTROL_STANDALONE_VOLUME | JOB_OBJECT_IO_RATE_CONTROL_FORCE_UNIT_ACCESS_ALL | JOB_OBJECT_IO_RATE_CONTROL_FORCE_UNIT_ACCESS_ON_SOFT_CAP
  4359. } JOB_OBJECT_IO_RATE_CONTROL_FLAGS;
  4360. #if !defined(SORTPP_PASS) && !defined(__WIDL__) && !defined(RC_INVOKED)
  4361. DEFINE_ENUM_FLAG_OPERATORS(JOB_OBJECT_IO_RATE_CONTROL_FLAGS)
  4362. #endif
  4363. typedef struct JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE {
  4364. LONG64 MaxIops;
  4365. LONG64 MaxBandwidth;
  4366. LONG64 ReservationIops;
  4367. PWSTR VolumeName;
  4368. DWORD BaseIoSize;
  4369. JOB_OBJECT_IO_RATE_CONTROL_FLAGS ControlFlags;
  4370. WORD VolumeNameLength;
  4371. } JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE;
  4372. typedef JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V1;
  4373. typedef struct JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V2 {
  4374. LONG64 MaxIops;
  4375. LONG64 MaxBandwidth;
  4376. LONG64 ReservationIops;
  4377. PWSTR VolumeName;
  4378. DWORD BaseIoSize;
  4379. JOB_OBJECT_IO_RATE_CONTROL_FLAGS ControlFlags;
  4380. WORD VolumeNameLength;
  4381. LONG64 CriticalReservationIops;
  4382. LONG64 ReservationBandwidth;
  4383. LONG64 CriticalReservationBandwidth;
  4384. LONG64 MaxTimePercent;
  4385. LONG64 ReservationTimePercent;
  4386. LONG64 CriticalReservationTimePercent;
  4387. } JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V2;
  4388. typedef struct JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V3 {
  4389. LONG64 MaxIops;
  4390. LONG64 MaxBandwidth;
  4391. LONG64 ReservationIops;
  4392. PWSTR VolumeName;
  4393. DWORD BaseIoSize;
  4394. JOB_OBJECT_IO_RATE_CONTROL_FLAGS ControlFlags;
  4395. WORD VolumeNameLength;
  4396. LONG64 CriticalReservationIops;
  4397. LONG64 ReservationBandwidth;
  4398. LONG64 CriticalReservationBandwidth;
  4399. LONG64 MaxTimePercent;
  4400. LONG64 ReservationTimePercent;
  4401. LONG64 CriticalReservationTimePercent;
  4402. LONG64 SoftMaxIops;
  4403. LONG64 SoftMaxBandwidth;
  4404. LONG64 SoftMaxTimePercent;
  4405. LONG64 LimitExcessNotifyIops;
  4406. LONG64 LimitExcessNotifyBandwidth;
  4407. LONG64 LimitExcessNotifyTimePercent;
  4408. } JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V3;
  4409. typedef enum JOBOBJECT_IO_ATTRIBUTION_CONTROL_FLAGS {
  4410. JOBOBJECT_IO_ATTRIBUTION_CONTROL_ENABLE = 0x1,
  4411. JOBOBJECT_IO_ATTRIBUTION_CONTROL_DISABLE = 0x2,
  4412. JOBOBJECT_IO_ATTRIBUTION_CONTROL_VALID_FLAGS = 0x3
  4413. } JOBOBJECT_IO_ATTRIBUTION_CONTROL_FLAGS;
  4414. typedef struct _JOBOBJECT_IO_ATTRIBUTION_STATS {
  4415. ULONG_PTR IoCount;
  4416. ULONGLONG TotalNonOverlappedQueueTime;
  4417. ULONGLONG TotalNonOverlappedServiceTime;
  4418. ULONGLONG TotalSize;
  4419. } JOBOBJECT_IO_ATTRIBUTION_STATS, *PJOBOBJECT_IO_ATTRIBUTION_STATS;
  4420. typedef struct _JOBOBJECT_IO_ATTRIBUTION_INFORMATION {
  4421. DWORD ControlFlags;
  4422. JOBOBJECT_IO_ATTRIBUTION_STATS ReadStats;
  4423. JOBOBJECT_IO_ATTRIBUTION_STATS WriteStats;
  4424. } JOBOBJECT_IO_ATTRIBUTION_INFORMATION, *PJOBOBJECT_IO_ATTRIBUTION_INFORMATION;
  4425. #define JOB_OBJECT_TERMINATE_AT_END_OF_JOB 0
  4426. #define JOB_OBJECT_POST_AT_END_OF_JOB 1
  4427. #define JOB_OBJECT_MSG_END_OF_JOB_TIME 1
  4428. #define JOB_OBJECT_MSG_END_OF_PROCESS_TIME 2
  4429. #define JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT 3
  4430. #define JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO 4
  4431. #define JOB_OBJECT_MSG_NEW_PROCESS 6
  4432. #define JOB_OBJECT_MSG_EXIT_PROCESS 7
  4433. #define JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS 8
  4434. #define JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT 9
  4435. #define JOB_OBJECT_MSG_JOB_MEMORY_LIMIT 10
  4436. #define JOB_OBJECT_MSG_NOTIFICATION_LIMIT 11
  4437. #define JOB_OBJECT_MSG_JOB_CYCLE_TIME_LIMIT 12
  4438. #define JOB_OBJECT_MSG_SILO_TERMINATED 13
  4439. #define JOB_OBJECT_MSG_MINIMUM 1
  4440. #define JOB_OBJECT_MSG_MAXIMUM 12
  4441. #define JOB_OBJECT_VALID_COMPLETION_FILTER (((__MSABI_LONG(1U) << (JOB_OBJECT_MSG_MAXIMUM + 1)) - 1) - ((__MSABI_LONG(1U) << JOB_OBJECT_MSG_MINIMUM) - 1))
  4442. #define JOB_OBJECT_LIMIT_WORKINGSET 0x00000001
  4443. #define JOB_OBJECT_LIMIT_PROCESS_TIME 0x00000002
  4444. #define JOB_OBJECT_LIMIT_JOB_TIME 0x00000004
  4445. #define JOB_OBJECT_LIMIT_ACTIVE_PROCESS 0x00000008
  4446. #define JOB_OBJECT_LIMIT_AFFINITY 0x00000010
  4447. #define JOB_OBJECT_LIMIT_PRIORITY_CLASS 0x00000020
  4448. #define JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME 0x00000040
  4449. #define JOB_OBJECT_LIMIT_SCHEDULING_CLASS 0x00000080
  4450. #define JOB_OBJECT_LIMIT_PROCESS_MEMORY 0x00000100
  4451. #define JOB_OBJECT_LIMIT_JOB_MEMORY 0x00000200
  4452. #define JOB_OBJECT_LIMIT_JOB_MEMORY_HIGH JOB_OBJECT_LIMIT_JOB_MEMORY
  4453. #define JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION 0x00000400
  4454. #define JOB_OBJECT_LIMIT_BREAKAWAY_OK 0x00000800
  4455. #define JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK 0x00001000
  4456. #define JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE 0x00002000
  4457. #define JOB_OBJECT_LIMIT_SUBSET_AFFINITY 0x00004000
  4458. #define JOB_OBJECT_LIMIT_JOB_MEMORY_LOW 0x00008000
  4459. #define JOB_OBJECT_LIMIT_JOB_READ_BYTES 0x00010000
  4460. #define JOB_OBJECT_LIMIT_JOB_WRITE_BYTES 0x00020000
  4461. #define JOB_OBJECT_LIMIT_RATE_CONTROL 0x00040000
  4462. #define JOB_OBJECT_LIMIT_CPU_RATE_CONTROL JOB_OBJECT_LIMIT_RATE_CONTROL
  4463. #define JOB_OBJECT_LIMIT_IO_RATE_CONTROL 0x00080000
  4464. #define JOB_OBJECT_LIMIT_NET_RATE_CONTROL 0x00100000
  4465. #define JOB_OBJECT_LIMIT_RESERVED3 0x00008000
  4466. #define JOB_OBJECT_LIMIT_RESERVED4 0x00010000
  4467. #define JOB_OBJECT_LIMIT_RESERVED5 0x00020000
  4468. #define JOB_OBJECT_LIMIT_RESERVED6 0x00040000
  4469. #define JOB_OBJECT_LIMIT_VALID_FLAGS 0x0007ffff
  4470. #define JOB_OBJECT_BASIC_LIMIT_VALID_FLAGS 0x000000ff
  4471. #define JOB_OBJECT_EXTENDED_LIMIT_VALID_FLAGS 0x00007fff
  4472. #define JOB_OBJECT_RESERVED_LIMIT_VALID_FLAGS 0x0007ffff
  4473. #define JOB_OBJECT_NOTIFICATION_LIMIT_VALID_FLAGS 0x00070204
  4474. #define JOB_OBJECT_UILIMIT_NONE 0x00000000
  4475. #define JOB_OBJECT_UILIMIT_HANDLES 0x00000001
  4476. #define JOB_OBJECT_UILIMIT_READCLIPBOARD 0x00000002
  4477. #define JOB_OBJECT_UILIMIT_WRITECLIPBOARD 0x00000004
  4478. #define JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS 0x00000008
  4479. #define JOB_OBJECT_UILIMIT_DISPLAYSETTINGS 0x00000010
  4480. #define JOB_OBJECT_UILIMIT_GLOBALATOMS 0x00000020
  4481. #define JOB_OBJECT_UILIMIT_DESKTOP 0x00000040
  4482. #define JOB_OBJECT_UILIMIT_EXITWINDOWS 0x00000080
  4483. #define JOB_OBJECT_UILIMIT_ALL 0x000000FF
  4484. #define JOB_OBJECT_UI_VALID_FLAGS 0x000000FF
  4485. #define JOB_OBJECT_SECURITY_NO_ADMIN 0x00000001
  4486. #define JOB_OBJECT_SECURITY_RESTRICTED_TOKEN 0x00000002
  4487. #define JOB_OBJECT_SECURITY_ONLY_TOKEN 0x00000004
  4488. #define JOB_OBJECT_SECURITY_FILTER_TOKENS 0x00000008
  4489. #define JOB_OBJECT_SECURITY_VALID_FLAGS 0x0000000f
  4490. #define JOB_OBJECT_CPU_RATE_CONTROL_ENABLE 0x1
  4491. #define JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED 0x2
  4492. #define JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP 0x4
  4493. #define JOB_OBJECT_CPU_RATE_CONTROL_NOTIFY 0x8
  4494. #define JOB_OBJECT_CPU_RATE_CONTROL_MIN_MAX_RATE 0x10
  4495. #define JOB_OBJECT_CPU_RATE_CONTROL_VALID_FLAGS 0x1f
  4496. typedef enum _JOBOBJECTINFOCLASS {
  4497. JobObjectBasicAccountingInformation = 1,
  4498. JobObjectBasicLimitInformation,
  4499. JobObjectBasicProcessIdList,
  4500. JobObjectBasicUIRestrictions,
  4501. JobObjectSecurityLimitInformation,
  4502. JobObjectEndOfJobTimeInformation,
  4503. JobObjectAssociateCompletionPortInformation,
  4504. JobObjectBasicAndIoAccountingInformation,
  4505. JobObjectExtendedLimitInformation,
  4506. JobObjectJobSetInformation,
  4507. JobObjectGroupInformation,
  4508. JobObjectNotificationLimitInformation,
  4509. JobObjectLimitViolationInformation,
  4510. JobObjectGroupInformationEx,
  4511. JobObjectCpuRateControlInformation,
  4512. JobObjectCompletionFilter,
  4513. JobObjectCompletionCounter,
  4514. JobObjectReserved1Information = 18,
  4515. JobObjectReserved2Information,
  4516. JobObjectReserved3Information,
  4517. JobObjectReserved4Information,
  4518. JobObjectReserved5Information,
  4519. JobObjectReserved6Information,
  4520. JobObjectReserved7Information,
  4521. JobObjectReserved8Information,
  4522. JobObjectReserved9Information,
  4523. JobObjectReserved10Information,
  4524. JobObjectReserved11Information,
  4525. JobObjectReserved12Information,
  4526. JobObjectReserved13Information,
  4527. JobObjectReserved14Information = 31,
  4528. JobObjectNetRateControlInformation,
  4529. JobObjectNotificationLimitInformation2,
  4530. JobObjectLimitViolationInformation2,
  4531. JobObjectCreateSilo,
  4532. JobObjectSiloBasicInformation,
  4533. JobObjectReserved15Information = 37,
  4534. JobObjectReserved16Information = 38,
  4535. JobObjectReserved17Information = 39,
  4536. JobObjectReserved18Information = 40,
  4537. JobObjectReserved19Information = 41,
  4538. JobObjectReserved20Information = 42,
  4539. JobObjectReserved21Information = 43,
  4540. JobObjectReserved22Information = 44,
  4541. JobObjectReserved23Information = 45,
  4542. JobObjectReserved24Information = 46,
  4543. JobObjectReserved25Information = 47,
  4544. MaxJobObjectInfoClass
  4545. } JOBOBJECTINFOCLASS;
  4546. typedef struct _SILOOBJECT_BASIC_INFORMATION {
  4547. DWORD SiloId;
  4548. DWORD SiloParentId;
  4549. DWORD NumberOfProcesses;
  4550. BOOLEAN IsInServerSilo;
  4551. BYTE Reserved[3];
  4552. } SILOOBJECT_BASIC_INFORMATION, *PSILOOBJECT_BASIC_INFORMATION;
  4553. typedef enum _SERVERSILO_STATE {
  4554. SERVERSILO_INITING = 0,
  4555. SERVERSILO_STARTED,
  4556. SERVERSILO_SHUTTING_DOWN,
  4557. SERVERSILO_TERMINATING,
  4558. SERVERSILO_TERMINATED,
  4559. } SERVERSILO_STATE, *PSERVERSILO_STATE;
  4560. typedef struct _SERVERSILO_BASIC_INFORMATION {
  4561. DWORD ServiceSessionId;
  4562. SERVERSILO_STATE State;
  4563. DWORD ExitStatus;
  4564. BOOLEAN IsDownlevelContainer;
  4565. PVOID ApiSetSchema;
  4566. PVOID HostApiSetSchema;
  4567. } SERVERSILO_BASIC_INFORMATION, *PSERVERSILO_BASIC_INFORMATION;
  4568. #define MEMORY_PARTITION_QUERY_ACCESS 0x0001
  4569. #define MEMORY_PARTITION_MODIFY_ACCESS 0x0002
  4570. #define MEMORY_PARTITION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | MEMORY_PARTITION_QUERY_ACCESS | MEMORY_PARTITION_MODIFY_ACCESS)
  4571. typedef enum _FIRMWARE_TYPE {
  4572. FirmwareTypeUnknown,
  4573. FirmwareTypeBios,
  4574. FirmwareTypeUefi,
  4575. FirmwareTypeMax
  4576. } FIRMWARE_TYPE,*PFIRMWARE_TYPE;
  4577. #define EVENT_MODIFY_STATE 0x0002
  4578. #define EVENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3)
  4579. #define MUTANT_QUERY_STATE 0x0001
  4580. #define MUTANT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE| MUTANT_QUERY_STATE)
  4581. #define SEMAPHORE_MODIFY_STATE 0x0002
  4582. #define SEMAPHORE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3)
  4583. #define TIMER_QUERY_STATE 0x0001
  4584. #define TIMER_MODIFY_STATE 0x0002
  4585. #define TIMER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE| TIMER_QUERY_STATE|TIMER_MODIFY_STATE)
  4586. #define TIME_ZONE_ID_UNKNOWN 0
  4587. #define TIME_ZONE_ID_STANDARD 1
  4588. #define TIME_ZONE_ID_DAYLIGHT 2
  4589. typedef enum _LOGICAL_PROCESSOR_RELATIONSHIP {
  4590. RelationProcessorCore,
  4591. RelationNumaNode,
  4592. RelationCache,
  4593. RelationProcessorPackage,
  4594. RelationGroup,
  4595. RelationProcessorDie,
  4596. RelationNumaNodeEx,
  4597. RelationProcessorModule,
  4598. RelationAll = 0xffff
  4599. } LOGICAL_PROCESSOR_RELATIONSHIP;
  4600. #define LTP_PC_SMT 0x1
  4601. typedef enum _PROCESSOR_CACHE_TYPE {
  4602. CacheUnified,CacheInstruction,CacheData,CacheTrace
  4603. } PROCESSOR_CACHE_TYPE;
  4604. #define CACHE_FULLY_ASSOCIATIVE 0xFF
  4605. typedef struct _CACHE_DESCRIPTOR {
  4606. BYTE Level;
  4607. BYTE Associativity;
  4608. WORD LineSize;
  4609. DWORD Size;
  4610. PROCESSOR_CACHE_TYPE Type;
  4611. } CACHE_DESCRIPTOR,*PCACHE_DESCRIPTOR;
  4612. typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION {
  4613. ULONG_PTR ProcessorMask;
  4614. LOGICAL_PROCESSOR_RELATIONSHIP Relationship;
  4615. __C89_NAMELESS union {
  4616. struct {
  4617. BYTE Flags;
  4618. } ProcessorCore;
  4619. struct {
  4620. DWORD NodeNumber;
  4621. } NumaNode;
  4622. CACHE_DESCRIPTOR Cache;
  4623. ULONGLONG Reserved[2];
  4624. } DUMMYUNIONNAME;
  4625. } SYSTEM_LOGICAL_PROCESSOR_INFORMATION,*PSYSTEM_LOGICAL_PROCESSOR_INFORMATION;
  4626. typedef struct _PROCESSOR_RELATIONSHIP {
  4627. BYTE Flags;
  4628. BYTE Reserved[21];
  4629. WORD GroupCount;
  4630. GROUP_AFFINITY GroupMask[ANYSIZE_ARRAY];
  4631. } PROCESSOR_RELATIONSHIP,*PPROCESSOR_RELATIONSHIP;
  4632. typedef struct _NUMA_NODE_RELATIONSHIP {
  4633. DWORD NodeNumber;
  4634. BYTE Reserved[20];
  4635. GROUP_AFFINITY GroupMask;
  4636. } NUMA_NODE_RELATIONSHIP,*PNUMA_NODE_RELATIONSHIP;
  4637. typedef struct _CACHE_RELATIONSHIP {
  4638. BYTE Level;
  4639. BYTE Associativity;
  4640. WORD LineSize;
  4641. DWORD CacheSize;
  4642. PROCESSOR_CACHE_TYPE Type;
  4643. BYTE Reserved[20];
  4644. GROUP_AFFINITY GroupMask;
  4645. } CACHE_RELATIONSHIP,*PCACHE_RELATIONSHIP;
  4646. typedef struct _PROCESSOR_GROUP_INFO {
  4647. BYTE MaximumProcessorCount;
  4648. BYTE ActiveProcessorCount;
  4649. BYTE Reserved[38];
  4650. KAFFINITY ActiveProcessorMask;
  4651. } PROCESSOR_GROUP_INFO,*PPROCESSOR_GROUP_INFO;
  4652. typedef struct _GROUP_RELATIONSHIP {
  4653. WORD MaximumGroupCount;
  4654. WORD ActiveGroupCount;
  4655. BYTE Reserved[20];
  4656. PROCESSOR_GROUP_INFO GroupInfo[ANYSIZE_ARRAY];
  4657. } GROUP_RELATIONSHIP,*PGROUP_RELATIONSHIP;
  4658. struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX {
  4659. LOGICAL_PROCESSOR_RELATIONSHIP Relationship;
  4660. DWORD Size;
  4661. __C89_NAMELESS union {
  4662. PROCESSOR_RELATIONSHIP Processor;
  4663. NUMA_NODE_RELATIONSHIP NumaNode;
  4664. CACHE_RELATIONSHIP Cache;
  4665. GROUP_RELATIONSHIP Group;
  4666. };
  4667. };
  4668. typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX, *PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX;
  4669. typedef enum _CPU_SET_INFORMATION_TYPE {
  4670. CpuSetInformation
  4671. } CPU_SET_INFORMATION_TYPE, *PCPU_SET_INFORMATION_TYPE;
  4672. #define SYSTEM_CPU_SET_INFORMATION_PARKED 0x1
  4673. #define SYSTEM_CPU_SET_INFORMATION_ALLOCATED 0x2
  4674. #define SYSTEM_CPU_SET_INFORMATION_ALLOCATED_TO_TARGET_PROCESS 0x4
  4675. #define SYSTEM_CPU_SET_INFORMATION_REALTIME 0x8
  4676. struct _SYSTEM_CPU_SET_INFORMATION {
  4677. DWORD Size;
  4678. CPU_SET_INFORMATION_TYPE Type;
  4679. __C89_NAMELESS union {
  4680. struct {
  4681. DWORD Id;
  4682. WORD Group;
  4683. BYTE LogicalProcessorIndex;
  4684. BYTE CoreIndex;
  4685. BYTE LastLevelCacheIndex;
  4686. BYTE NumaNodeIndex;
  4687. BYTE EfficiencyClass;
  4688. __C89_NAMELESS union {
  4689. BYTE AllFlags;
  4690. __C89_NAMELESS struct {
  4691. BYTE Parked : 1;
  4692. BYTE Allocated : 1;
  4693. BYTE AllocatedToTargetProcess : 1;
  4694. BYTE RealTime : 1;
  4695. BYTE ReservedFlags : 4;
  4696. };
  4697. };
  4698. __C89_NAMELESS union {
  4699. DWORD Reserved;
  4700. BYTE SchedulingClass;
  4701. };
  4702. DWORD64 AllocationTag;
  4703. } CpuSet;
  4704. };
  4705. };
  4706. typedef struct _SYSTEM_CPU_SET_INFORMATION SYSTEM_CPU_SET_INFORMATION, *PSYSTEM_CPU_SET_INFORMATION;
  4707. typedef struct _SYSTEM_POOL_ZEROING_INFORMATION {
  4708. BOOLEAN PoolZeroingSupportPresent;
  4709. } SYSTEM_POOL_ZEROING_INFORMATION, *PSYSTEM_POOL_ZEROING_INFORMATION;
  4710. typedef struct _SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION {
  4711. DWORD64 CycleTime;
  4712. } SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION,*PSYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION;
  4713. typedef struct _SYSTEM_SUPPORTED_PROCESSOR_ARCHITECTURES_INFORMATION {
  4714. DWORD Machine : 16;
  4715. DWORD KernelMode : 1;
  4716. DWORD UserMode : 1;
  4717. DWORD Native : 1;
  4718. DWORD Process : 1;
  4719. DWORD WoW64Container : 1;
  4720. DWORD ReservedZero0 : 11;
  4721. } SYSTEM_SUPPORTED_PROCESSOR_ARCHITECTURES_INFORMATION,*PSYSTEM_SUPPORTED_PROCESSOR_ARCHITECTURES_INFORMATION;
  4722. #define PROCESSOR_INTEL_386 386
  4723. #define PROCESSOR_INTEL_486 486
  4724. #define PROCESSOR_INTEL_PENTIUM 586
  4725. #define PROCESSOR_INTEL_IA64 2200
  4726. #define PROCESSOR_AMD_X8664 8664
  4727. #define PROCESSOR_MIPS_R4000 4000
  4728. #define PROCESSOR_ALPHA_21064 21064
  4729. #define PROCESSOR_PPC_601 601
  4730. #define PROCESSOR_PPC_603 603
  4731. #define PROCESSOR_PPC_604 604
  4732. #define PROCESSOR_PPC_620 620
  4733. #define PROCESSOR_HITACHI_SH3 10003
  4734. #define PROCESSOR_HITACHI_SH3E 10004
  4735. #define PROCESSOR_HITACHI_SH4 10005
  4736. #define PROCESSOR_MOTOROLA_821 821
  4737. #define PROCESSOR_SHx_SH3 103
  4738. #define PROCESSOR_SHx_SH4 104
  4739. #define PROCESSOR_STRONGARM 2577
  4740. #define PROCESSOR_ARM720 1824
  4741. #define PROCESSOR_ARM820 2080
  4742. #define PROCESSOR_ARM920 2336
  4743. #define PROCESSOR_ARM_7TDMI 70001
  4744. #define PROCESSOR_OPTIL 0x494f
  4745. #define PROCESSOR_ARCHITECTURE_INTEL 0
  4746. #define PROCESSOR_ARCHITECTURE_MIPS 1
  4747. #define PROCESSOR_ARCHITECTURE_ALPHA 2
  4748. #define PROCESSOR_ARCHITECTURE_PPC 3
  4749. #define PROCESSOR_ARCHITECTURE_SHX 4
  4750. #define PROCESSOR_ARCHITECTURE_ARM 5
  4751. #define PROCESSOR_ARCHITECTURE_IA64 6
  4752. #define PROCESSOR_ARCHITECTURE_ALPHA64 7
  4753. #define PROCESSOR_ARCHITECTURE_MSIL 8
  4754. #define PROCESSOR_ARCHITECTURE_AMD64 9
  4755. #define PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 10
  4756. #define PROCESSOR_ARCHITECTURE_NEUTRAL 11
  4757. #define PROCESSOR_ARCHITECTURE_ARM64 12
  4758. #define PROCESSOR_ARCHITECTURE_ARM32_ON_WIN64 13
  4759. #define PROCESSOR_ARCHITECTURE_IA32_ON_ARM64 14
  4760. #define PROCESSOR_ARCHITECTURE_UNKNOWN 0xffff
  4761. #define PF_FLOATING_POINT_PRECISION_ERRATA 0
  4762. #define PF_FLOATING_POINT_EMULATED 1
  4763. #define PF_COMPARE_EXCHANGE_DOUBLE 2
  4764. #define PF_MMX_INSTRUCTIONS_AVAILABLE 3
  4765. #define PF_PPC_MOVEMEM_64BIT_OK 4
  4766. #define PF_ALPHA_BYTE_INSTRUCTIONS 5
  4767. #define PF_XMMI_INSTRUCTIONS_AVAILABLE 6
  4768. #define PF_3DNOW_INSTRUCTIONS_AVAILABLE 7
  4769. #define PF_RDTSC_INSTRUCTION_AVAILABLE 8
  4770. #define PF_PAE_ENABLED 9
  4771. #define PF_XMMI64_INSTRUCTIONS_AVAILABLE 10
  4772. #define PF_SSE_DAZ_MODE_AVAILABLE 11
  4773. #define PF_NX_ENABLED 12
  4774. #define PF_SSE3_INSTRUCTIONS_AVAILABLE 13
  4775. #define PF_COMPARE_EXCHANGE128 14
  4776. #define PF_COMPARE64_EXCHANGE128 15
  4777. #define PF_CHANNELS_ENABLED 16
  4778. #define PF_XSAVE_ENABLED 17
  4779. #define PF_ARM_VFP_32_REGISTERS_AVAILABLE 18
  4780. #define PF_ARM_NEON_INSTRUCTIONS_AVAILABLE 19
  4781. #define PF_SECOND_LEVEL_ADDRESS_TRANSLATION 20
  4782. #define PF_VIRT_FIRMWARE_ENABLED 21
  4783. #define PF_RDWRFSGSBASE_AVAILABLE 22
  4784. #define PF_FASTFAIL_AVAILABLE 23
  4785. #define PF_ARM_DIVIDE_INSTRUCTION_AVAILABLE 24
  4786. #define PF_ARM_64BIT_LOADSTORE_ATOMIC 25
  4787. #define PF_ARM_EXTERNAL_CACHE_AVAILABLE 26
  4788. #define PF_ARM_FMAC_INSTRUCTIONS_AVAILABLE 27
  4789. #define PF_RDRAND_INSTRUCTION_AVAILABLE 28
  4790. #define PF_ARM_V8_INSTRUCTIONS_AVAILABLE 29
  4791. #define PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE 30
  4792. #define PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE 31
  4793. #define PF_RDTSCP_INSTRUCTION_AVAILABLE 32
  4794. #define PF_RDPID_INSTRUCTION_AVAILABLE 33
  4795. #define PF_ARM_V81_ATOMIC_INSTRUCTIONS_AVAILABLE 34
  4796. #define PF_MONITORX_INSTRUCTION_AVAILABLE 35
  4797. #define PF_SSSE3_INSTRUCTIONS_AVAILABLE 36
  4798. #define PF_SSE4_1_INSTRUCTIONS_AVAILABLE 37
  4799. #define PF_SSE4_2_INSTRUCTIONS_AVAILABLE 38
  4800. #define PF_AVX_INSTRUCTIONS_AVAILABLE 39
  4801. #define PF_AVX2_INSTRUCTIONS_AVAILABLE 40
  4802. #define PF_AVX512F_INSTRUCTIONS_AVAILABLE 41
  4803. #define PF_ERMS_AVAILABLE 42
  4804. #define PF_ARM_V82_DP_INSTRUCTIONS_AVAILABLE 43
  4805. #define PF_ARM_V83_JSCVT_INSTRUCTIONS_AVAILABLE 44
  4806. #define XSTATE_LEGACY_FLOATING_POINT (0)
  4807. #define XSTATE_LEGACY_SSE (1)
  4808. #define XSTATE_GSSE (2)
  4809. #define XSTATE_AVX (XSTATE_GSSE)
  4810. #define XSTATE_MPX_BNDREGS (3)
  4811. #define XSTATE_MPX_BNDCSR (4)
  4812. #define XSTATE_AVX512_KMASK (5)
  4813. #define XSTATE_AVX512_ZMM_H (6)
  4814. #define XSTATE_AVX512_ZMM (7)
  4815. #define XSTATE_IPT (8)
  4816. #define XSTATE_PASID (10)
  4817. #define XSTATE_CET_U (11)
  4818. #define XSTATE_CET_S (12)
  4819. #define XSTATE_AMX_TILE_CONFIG (17)
  4820. #define XSTATE_AMX_TILE_DATA (18)
  4821. #define XSTATE_LWP (62)
  4822. #define MAXIMUM_XSTATE_FEATURES (64)
  4823. #define XSTATE_MASK_LEGACY_FLOATING_POINT (1ULL << (XSTATE_LEGACY_FLOATING_POINT))
  4824. #define XSTATE_MASK_LEGACY_SSE (1ULL << (XSTATE_LEGACY_SSE))
  4825. #define XSTATE_MASK_LEGACY (XSTATE_MASK_LEGACY_FLOATING_POINT | XSTATE_MASK_LEGACY_SSE)
  4826. #define XSTATE_MASK_GSSE (1LLU << (XSTATE_GSSE))
  4827. #define XSTATE_MASK_AVX (XSTATE_MASK_GSSE)
  4828. #define XSTATE_MASK_MPX ((1LLU << (XSTATE_MPX_BNDREGS)) | (1LLU << (XSTATE_MPX_BNDCSR)))
  4829. #define XSTATE_MASK_AVX512 ((1LLU << (XSTATE_AVX512_KMASK)) | (1LLU << (XSTATE_AVX512_ZMM_H)) | (1LLU << (XSTATE_AVX512_ZMM)))
  4830. #define XSTATE_MASK_IPT (1LLU << (XSTATE_IPT))
  4831. #define XSTATE_MASK_PASID (1LLU << (XSTATE_PASID))
  4832. #define XSTATE_MASK_CET_U (1LLU << (XSTATE_CET_U))
  4833. #define XSTATE_MASK_CET_S (1LLU << (XSTATE_CET_S))
  4834. #define XSTATE_MASK_AMX_TILE_CONFIG (1LLU << (XSTATE_AMX_TILE_CONFIG))
  4835. #define XSTATE_MASK_AMX_TILE_DATA (1LLU << (XSTATE_AMX_TILE_DATA))
  4836. #define XSTATE_MASK_LWP (1LLU << (XSTATE_LWP))
  4837. #if defined(_AMD64_) || defined(__x86_64__)
  4838. #define XSTATE_MASK_ALLOWED (XSTATE_MASK_LEGACY | XSTATE_MASK_AVX | XSTATE_MASK_MPX | XSTATE_MASK_AVX512 | XSTATE_MASK_IPT | XSTATE_MASK_PASID | XSTATE_MASK_CET_U | XSTATE_MASK_AMX_TILE_CONFIG | XSTATE_MASK_AMX_TILE_DATA | XSTATE_MASK_LWP)
  4839. #elif defined(_X86_) || defined(__i386__)
  4840. #define XSTATE_MASK_ALLOWED (XSTATE_MASK_LEGACY | XSTATE_MASK_AVX | XSTATE_MASK_MPX | XSTATE_MASK_AVX512 | XSTATE_MASK_IPT | XSTATE_MASK_CET_U | XSTATE_MASK_LWP)
  4841. #endif
  4842. #define XSTATE_MASK_PERSISTENT ((1LLU << (XSTATE_MPX_BNDCSR)) | XSTATE_MASK_LWP)
  4843. #define XSTATE_MASK_USER_VISIBLE_SUPERVISOR (XSTATE_MASK_CET_U)
  4844. #define XSTATE_MASK_LARGE_FEATURES (XSTATE_MASK_AMX_TILE_DATA)
  4845. #define XSTATE_COMPACTION_ENABLE (63)
  4846. #define XSTATE_COMPACTION_ENABLE_MASK (1ULL << (XSTATE_COMPACTION_ENABLE))
  4847. #define XSTATE_ALIGN_BIT (1)
  4848. #define XSTATE_ALIGN_MASK (1ULL << (XSTATE_ALIGN_BIT))
  4849. #define XSTATE_XFD_BIT (2)
  4850. #define XSTATE_XFD_MASK (1ULL << (XSTATE_XFD_BIT))
  4851. #define XSTATE_CONTROLFLAG_XSAVEOPT_MASK (1)
  4852. #define XSTATE_CONTROLFLAG_XSAVEC_MASK (2)
  4853. #define XSTATE_CONTROLFLAG_XFD_MASK (4)
  4854. #define XSTATE_CONTROLFLAG_VALID_MASK (XSTATE_CONTROLFLAG_XSAVEOPT_MASK | XSTATE_CONTROLFLAG_XSAVEC_MASK | XSTATE_CONTROLFLAG_XFD_MASK)
  4855. typedef struct _XSTATE_FEATURE {
  4856. DWORD Offset;
  4857. DWORD Size;
  4858. } XSTATE_FEATURE,*PXSTATE_FEATURE;
  4859. typedef struct _XSTATE_CONFIGURATION {
  4860. DWORD64 EnabledFeatures;
  4861. DWORD64 EnabledVolatileFeatures;
  4862. DWORD Size;
  4863. __C89_NAMELESS union {
  4864. DWORD ControlFlags;
  4865. __C89_NAMELESS struct {
  4866. DWORD OptimizedSave : 1;
  4867. DWORD CompactionEnabled : 1;
  4868. DWORD ExtendedFeatureDisable : 1;
  4869. };
  4870. };
  4871. XSTATE_FEATURE Features[MAXIMUM_XSTATE_FEATURES];
  4872. DWORD64 EnabledSupervisorFeatures;
  4873. DWORD64 AlignedFeatures;
  4874. DWORD AllFeatureSize;
  4875. DWORD AllFeatures[MAXIMUM_XSTATE_FEATURES];
  4876. DWORD64 EnabledUserVisibleSupervisorFeatures;
  4877. DWORD64 ExtendedFeatureDisableFeatures;
  4878. DWORD AllNonLargeFeatureSize;
  4879. DWORD Spare;
  4880. } XSTATE_CONFIGURATION, *PXSTATE_CONFIGURATION;
  4881. typedef struct _MEMORY_BASIC_INFORMATION {
  4882. PVOID BaseAddress;
  4883. PVOID AllocationBase;
  4884. DWORD AllocationProtect;
  4885. #if defined (_WIN64)
  4886. WORD PartitionId;
  4887. #endif
  4888. SIZE_T RegionSize;
  4889. DWORD State;
  4890. DWORD Protect;
  4891. DWORD Type;
  4892. } MEMORY_BASIC_INFORMATION,*PMEMORY_BASIC_INFORMATION;
  4893. typedef struct _MEMORY_BASIC_INFORMATION32 {
  4894. DWORD BaseAddress;
  4895. DWORD AllocationBase;
  4896. DWORD AllocationProtect;
  4897. DWORD RegionSize;
  4898. DWORD State;
  4899. DWORD Protect;
  4900. DWORD Type;
  4901. } MEMORY_BASIC_INFORMATION32,*PMEMORY_BASIC_INFORMATION32;
  4902. typedef struct DECLSPEC_ALIGN(16) _MEMORY_BASIC_INFORMATION64 {
  4903. ULONGLONG BaseAddress;
  4904. ULONGLONG AllocationBase;
  4905. DWORD AllocationProtect;
  4906. DWORD __alignment1;
  4907. ULONGLONG RegionSize;
  4908. DWORD State;
  4909. DWORD Protect;
  4910. DWORD Type;
  4911. DWORD __alignment2;
  4912. } MEMORY_BASIC_INFORMATION64,*PMEMORY_BASIC_INFORMATION64;
  4913. #define CFG_CALL_TARGET_VALID 0x01
  4914. #define CFG_CALL_TARGET_PROCESSED 0x02
  4915. #define CFG_CALL_TARGET_CONVERT_EXPORT_SUPPRESSED_TO_VALID 0x04
  4916. #define CFG_CALL_TARGET_VALID_XFG (0x08)
  4917. #define CFG_CALL_TARGET_CONVERT_XFG_TO_CFG (0x10)
  4918. typedef struct _CFG_CALL_TARGET_INFO {
  4919. ULONG_PTR Offset;
  4920. ULONG_PTR Flags;
  4921. } CFG_CALL_TARGET_INFO, *PCFG_CALL_TARGET_INFO;
  4922. #define SECTION_QUERY 0x0001
  4923. #define SECTION_MAP_WRITE 0x0002
  4924. #define SECTION_MAP_READ 0x0004
  4925. #define SECTION_MAP_EXECUTE 0x0008
  4926. #define SECTION_EXTEND_SIZE 0x0010
  4927. #define SECTION_MAP_EXECUTE_EXPLICIT 0x0020
  4928. #define SECTION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SECTION_QUERY| SECTION_MAP_WRITE | SECTION_MAP_READ | SECTION_MAP_EXECUTE | SECTION_EXTEND_SIZE)
  4929. #define SESSION_QUERY_ACCESS 0x1
  4930. #define SESSION_MODIFY_ACCESS 0x2
  4931. #define SESSION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SESSION_QUERY_ACCESS | SESSION_MODIFY_ACCESS)
  4932. #define PAGE_NOACCESS 0x01
  4933. #define PAGE_READONLY 0x02
  4934. #define PAGE_READWRITE 0x04
  4935. #define PAGE_WRITECOPY 0x08
  4936. #define PAGE_EXECUTE 0x10
  4937. #define PAGE_EXECUTE_READ 0x20
  4938. #define PAGE_EXECUTE_READWRITE 0x40
  4939. #define PAGE_EXECUTE_WRITECOPY 0x80
  4940. #define PAGE_GUARD 0x100
  4941. #define PAGE_NOCACHE 0x200
  4942. #define PAGE_WRITECOMBINE 0x400
  4943. #define PAGE_GRAPHICS_NOACCESS 0x0800
  4944. #define PAGE_GRAPHICS_READONLY 0x1000
  4945. #define PAGE_GRAPHICS_READWRITE 0x2000
  4946. #define PAGE_GRAPHICS_EXECUTE 0x4000
  4947. #define PAGE_GRAPHICS_EXECUTE_READ 0x8000
  4948. #define PAGE_GRAPHICS_EXECUTE_READWRITE 0x10000
  4949. #define PAGE_GRAPHICS_COHERENT 0x20000
  4950. #define PAGE_GRAPHICS_NOCACHE 0x40000
  4951. #define PAGE_ENCLAVE_THREAD_CONTROL 0x80000000
  4952. #define PAGE_REVERT_TO_FILE_MAP 0x80000000
  4953. #define PAGE_TARGETS_NO_UPDATE 0x40000000
  4954. #define PAGE_TARGETS_INVALID 0x40000000
  4955. #define PAGE_ENCLAVE_UNVALIDATED 0x20000000
  4956. #define PAGE_ENCLAVE_MASK 0x10000000
  4957. #define PAGE_ENCLAVE_DECOMMIT (PAGE_ENCLAVE_MASK | 0)
  4958. #define PAGE_ENCLAVE_SS_FIRST (PAGE_ENCLAVE_MASK | 1)
  4959. #define PAGE_ENCLAVE_SS_REST (PAGE_ENCLAVE_MASK | 2)
  4960. #define MEM_COMMIT 0x1000
  4961. #define MEM_RESERVE 0x2000
  4962. #define MEM_REPLACE_PLACEHOLDER 0x4000
  4963. #define MEM_DECOMMIT 0x4000
  4964. #define MEM_RELEASE 0x8000
  4965. #define MEM_FREE 0x10000
  4966. #define MEM_PRIVATE 0x20000
  4967. #define MEM_RESERVE_PLACEHOLDER 0x40000
  4968. #define MEM_MAPPED 0x40000
  4969. #define MEM_RESET 0x80000
  4970. #define MEM_TOP_DOWN 0x100000
  4971. #define MEM_WRITE_WATCH 0x200000
  4972. #define MEM_PHYSICAL 0x400000
  4973. #define MEM_ROTATE 0x800000
  4974. #define MEM_DIFFERENT_IMAGE_BASE_OK 0x800000
  4975. #define MEM_RESET_UNDO 0x1000000
  4976. #define MEM_LARGE_PAGES 0x20000000
  4977. #define MEM_4MB_PAGES 0x80000000
  4978. #define MEM_64K_PAGES (MEM_LARGE_PAGES | MEM_PHYSICAL)
  4979. #define MEM_UNMAP_WITH_TRANSIENT_BOOST 0x00000001
  4980. #define MEM_COALESCE_PLACEHOLDERS 0x00000001
  4981. #define MEM_PRESERVE_PLACEHOLDER 0x00000002
  4982. typedef struct _MEM_ADDRESS_REQUIREMENTS {
  4983. PVOID LowestStartingAddress;
  4984. PVOID HighestEndingAddress;
  4985. SIZE_T Alignment;
  4986. } MEM_ADDRESS_REQUIREMENTS, *PMEM_ADDRESS_REQUIREMENTS;
  4987. #define MEM_EXTENDED_PARAMETER_GRAPHICS 0x01
  4988. #define MEM_EXTENDED_PARAMETER_NONPAGED 0x02
  4989. #define MEM_EXTENDED_PARAMETER_ZERO_PAGES_OPTIONAL 0x04
  4990. #define MEM_EXTENDED_PARAMETER_NONPAGED_LARGE 0x08
  4991. #define MEM_EXTENDED_PARAMETER_NONPAGED_HUGE 0x10
  4992. #define MEM_EXTENDED_PARAMETER_SOFT_FAULT_PAGES 0x20
  4993. #define MEM_EXTENDED_PARAMETER_EC_CODE 0x40
  4994. #define MEM_EXTENDED_PARAMETER_IMAGE_NO_HPAT 0x80
  4995. #define MEM_EXTENDED_PARAMETER_NUMA_NODE_MANDATORY MINLONG64
  4996. typedef enum MEM_EXTENDED_PARAMETER_TYPE {
  4997. MemExtendedParameterInvalidType = 0,
  4998. MemExtendedParameterAddressRequirements,
  4999. MemExtendedParameterNumaNode,
  5000. MemExtendedParameterPartitionHandle,
  5001. MemExtendedParameterUserPhysicalHandle,
  5002. MemExtendedParameterAttributeFlags,
  5003. MemExtendedParameterImageMachine,
  5004. MemExtendedParameterMax
  5005. } MEM_EXTENDED_PARAMETER_TYPE, *PMEM_EXTENDED_PARAMETER_TYPE;
  5006. #define MEM_EXTENDED_PARAMETER_TYPE_BITS 8
  5007. typedef struct DECLSPEC_ALIGN(8) MEM_EXTENDED_PARAMETER {
  5008. __C89_NAMELESS struct {
  5009. DWORD64 Type : MEM_EXTENDED_PARAMETER_TYPE_BITS;
  5010. DWORD64 Reserved : 64 - MEM_EXTENDED_PARAMETER_TYPE_BITS;
  5011. };
  5012. __C89_NAMELESS union {
  5013. DWORD64 ULong64;
  5014. PVOID Pointer;
  5015. SIZE_T Size;
  5016. HANDLE Handle;
  5017. DWORD ULong;
  5018. };
  5019. } MEM_EXTENDED_PARAMETER, *PMEM_EXTENDED_PARAMETER;
  5020. #define MEMORY_CURRENT_PARTITION_HANDLE ((HANDLE)(LONG_PTR)(-1))
  5021. #define MEMORY_SYSTEM_PARTITION_HANDLE ((HANDLE)(LONG_PTR)(-2))
  5022. #define MEMORY_EXISTING_VAD_PARTITION_HANDLE ((HANDLE)(LONG_PTR)(-3))
  5023. #define MEM_DEDICATED_ATTRIBUTE_NOT_SPECIFIED ((DWORD64)(-1))
  5024. typedef enum _MEM_DEDICATED_ATTRIBUTE_TYPE {
  5025. MemDedicatedAttributeReadBandwidth = 0,
  5026. MemDedicatedAttributeReadLatency,
  5027. MemDedicatedAttributeWriteBandwidth,
  5028. MemDedicatedAttributeWriteLatency,
  5029. MemDedicatedAttributeMax
  5030. } MEM_DEDICATED_ATTRIBUTE_TYPE, *PMEM_DEDICATED_ATTRIBUTE_TYPE;
  5031. #define SEC_HUGE_PAGES 0x20000
  5032. #define SEC_PARTITION_OWNER_HANDLE 0x40000
  5033. #define SEC_64K_PAGES 0x80000
  5034. #define SEC_FILE 0x800000
  5035. #define SEC_IMAGE 0x1000000
  5036. #define SEC_PROTECTED_IMAGE 0x2000000
  5037. #define SEC_RESERVE 0x4000000
  5038. #define SEC_COMMIT 0x8000000
  5039. #define SEC_NOCACHE 0x10000000
  5040. #define SEC_WRITECOMBINE 0x40000000
  5041. #define SEC_LARGE_PAGES 0x80000000
  5042. #define SEC_IMAGE_NO_EXECUTE (SEC_IMAGE | SEC_NOCACHE)
  5043. typedef enum MEM_SECTION_EXTENDED_PARAMETER_TYPE {
  5044. MemSectionExtendedParameterInvalidType = 0,
  5045. MemSectionExtendedParameterUserPhysicalFlags,
  5046. MemSectionExtendedParameterNumaNode,
  5047. MemSectionExtendedParameterSigningLevel,
  5048. MemSectionExtendedParameterMax
  5049. } MEM_SECTION_EXTENDED_PARAMETER_TYPE, *PMEM_SECTION_EXTENDED_PARAMETER_TYPE;
  5050. #define MEM_IMAGE SEC_IMAGE
  5051. #define WRITE_WATCH_FLAG_RESET 0x01
  5052. #define ENCLAVE_TYPE_SGX 0x00000001
  5053. #define ENCLAVE_TYPE_SGX2 0x00000002
  5054. typedef struct _ENCLAVE_CREATE_INFO_SGX {
  5055. BYTE Secs[4096];
  5056. } ENCLAVE_CREATE_INFO_SGX, *PENCLAVE_CREATE_INFO_SGX;
  5057. typedef struct _ENCLAVE_INIT_INFO_SGX {
  5058. BYTE SigStruct[1808];
  5059. BYTE Reserved1[240];
  5060. BYTE EInitToken[304];
  5061. BYTE Reserved2[1744];
  5062. } ENCLAVE_INIT_INFO_SGX, *PENCLAVE_INIT_INFO_SGX;
  5063. #define ENCLAVE_TYPE_VBS 0x00000010
  5064. typedef struct _ENCLAVE_CREATE_INFO_VBS {
  5065. DWORD Flags;
  5066. BYTE OwnerID[32];
  5067. } ENCLAVE_CREATE_INFO_VBS, *PENCLAVE_CREATE_INFO_VBS;
  5068. #define ENCLAVE_VBS_FLAG_DEBUG 0x00000001
  5069. #define ENCLAVE_TYPE_VBS_BASIC 0x00000011
  5070. typedef struct _ENCLAVE_CREATE_INFO_VBS_BASIC {
  5071. DWORD Flags;
  5072. BYTE OwnerID[32];
  5073. } ENCLAVE_CREATE_INFO_VBS_BASIC, *PENCLAVE_CREATE_INFO_VBS_BASIC;
  5074. typedef struct _ENCLAVE_LOAD_DATA_VBS_BASIC {
  5075. DWORD PageType;
  5076. } ENCLAVE_LOAD_DATA_VBS_BASIC, *PENCLAVE_LOAD_DATA_VBS_BASIC;
  5077. #define VBS_BASIC_PAGE_MEASURED_DATA 0x00000001
  5078. #define VBS_BASIC_PAGE_UNMEASURED_DATA 0x00000002
  5079. #define VBS_BASIC_PAGE_ZERO_FILL 0x00000003
  5080. #define VBS_BASIC_PAGE_THREAD_DESCRIPTOR 0x00000004
  5081. #define VBS_BASIC_PAGE_SYSTEM_CALL 0x00000005
  5082. typedef struct _ENCLAVE_INIT_INFO_VBS_BASIC {
  5083. BYTE FamilyId[ENCLAVE_SHORT_ID_LENGTH];
  5084. BYTE ImageId[ENCLAVE_SHORT_ID_LENGTH];
  5085. ULONGLONG EnclaveSize;
  5086. DWORD EnclaveSvn;
  5087. DWORD Reserved;
  5088. __C89_NAMELESS union {
  5089. HANDLE SignatureInfoHandle;
  5090. ULONGLONG Unused;
  5091. };
  5092. } ENCLAVE_INIT_INFO_VBS_BASIC, *PENCLAVE_INIT_INFO_VBS_BASIC;
  5093. typedef struct _ENCLAVE_INIT_INFO_VBS {
  5094. DWORD Length;
  5095. DWORD ThreadCount;
  5096. } ENCLAVE_INIT_INFO_VBS, *PENCLAVE_INIT_INFO_VBS;
  5097. #if !defined(SORTPP_PASS) && !defined(__WIDL__) && !defined(RC_INVOKED)
  5098. typedef PVOID (ENCLAVE_TARGET_FUNCTION)(PVOID);
  5099. typedef ENCLAVE_TARGET_FUNCTION (*PENCLAVE_TARGET_FUNCTION);
  5100. typedef PENCLAVE_TARGET_FUNCTION LPENCLAVE_TARGET_FUNCTION;
  5101. #endif
  5102. #define DEDICATED_MEMORY_CACHE_ELIGIBLE 0x1
  5103. typedef struct DECLSPEC_ALIGN(8) _MEMORY_PARTITION_DEDICATED_MEMORY_ATTRIBUTE {
  5104. MEM_DEDICATED_ATTRIBUTE_TYPE Type;
  5105. DWORD Reserved;
  5106. DWORD64 Value;
  5107. } MEMORY_PARTITION_DEDICATED_MEMORY_ATTRIBUTE, *PMEMORY_PARTITION_DEDICATED_MEMORY_ATTRIBUTE;
  5108. typedef struct DECLSPEC_ALIGN(8) _MEMORY_PARTITION_DEDICATED_MEMORY_INFORMATION {
  5109. DWORD NextEntryOffset;
  5110. DWORD SizeOfInformation;
  5111. DWORD Flags;
  5112. DWORD AttributesOffset;
  5113. DWORD AttributeCount;
  5114. DWORD Reserved;
  5115. DWORD64 TypeId;
  5116. } MEMORY_PARTITION_DEDICATED_MEMORY_INFORMATION, *PMEMORY_PARTITION_DEDICATED_MEMORY_INFORMATION;
  5117. #define FILE_READ_DATA (0x0001)
  5118. #define FILE_LIST_DIRECTORY (0x0001)
  5119. #define FILE_WRITE_DATA (0x0002)
  5120. #define FILE_ADD_FILE (0x0002)
  5121. #define FILE_APPEND_DATA (0x0004)
  5122. #define FILE_ADD_SUBDIRECTORY (0x0004)
  5123. #define FILE_CREATE_PIPE_INSTANCE (0x0004)
  5124. #define FILE_READ_EA (0x0008)
  5125. #define FILE_WRITE_EA (0x0010)
  5126. #define FILE_EXECUTE (0x0020)
  5127. #define FILE_TRAVERSE (0x0020)
  5128. #define FILE_DELETE_CHILD (0x0040)
  5129. #define FILE_READ_ATTRIBUTES (0x0080)
  5130. #define FILE_WRITE_ATTRIBUTES (0x0100)
  5131. #define FILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF)
  5132. #define FILE_GENERIC_READ (STANDARD_RIGHTS_READ | FILE_READ_DATA | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE)
  5133. #define FILE_GENERIC_WRITE (STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA | SYNCHRONIZE)
  5134. #define FILE_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES | FILE_EXECUTE | SYNCHRONIZE)
  5135. #define FILE_SUPERSEDE 0x00000000
  5136. #define FILE_OPEN 0x00000001
  5137. #define FILE_CREATE 0x00000002
  5138. #define FILE_OPEN_IF 0x00000003
  5139. #define FILE_OVERWRITE 0x00000004
  5140. #define FILE_OVERWRITE_IF 0x00000005
  5141. #define FILE_MAXIMUM_DISPOSITION 0x00000005
  5142. #define FILE_DIRECTORY_FILE 0x00000001
  5143. #define FILE_WRITE_THROUGH 0x00000002
  5144. #define FILE_SEQUENTIAL_ONLY 0x00000004
  5145. #define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008
  5146. #define FILE_SYNCHRONOUS_IO_ALERT 0x00000010
  5147. #define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020
  5148. #define FILE_NON_DIRECTORY_FILE 0x00000040
  5149. #define FILE_CREATE_TREE_CONNECTION 0x00000080
  5150. #define FILE_COMPLETE_IF_OPLOCKED 0x00000100
  5151. #define FILE_NO_EA_KNOWLEDGE 0x00000200
  5152. #define FILE_OPEN_REMOTE_INSTANCE 0x00000400
  5153. #define FILE_RANDOM_ACCESS 0x00000800
  5154. #define FILE_DELETE_ON_CLOSE 0x00001000
  5155. #define FILE_OPEN_BY_FILE_ID 0x00002000
  5156. #define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000
  5157. #define FILE_NO_COMPRESSION 0x00008000
  5158. #if (NTDDI_VERSION >= NTDDI_WIN7)
  5159. #define FILE_OPEN_REQUIRING_OPLOCK 0x00010000
  5160. #define FILE_DISALLOW_EXCLUSIVE 0x00020000
  5161. #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
  5162. #define FILE_RESERVE_OPFILTER 0x00100000
  5163. #define FILE_OPEN_REPARSE_POINT 0x00200000
  5164. #define FILE_OPEN_NO_RECALL 0x00400000
  5165. #define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000
  5166. #define FILE_SHARE_READ 0x00000001
  5167. #define FILE_SHARE_WRITE 0x00000002
  5168. #define FILE_SHARE_DELETE 0x00000004
  5169. #define FILE_SHARE_VALID_FLAGS 0x00000007
  5170. #define FILE_ATTRIBUTE_READONLY 0x00000001
  5171. #define FILE_ATTRIBUTE_HIDDEN 0x00000002
  5172. #define FILE_ATTRIBUTE_SYSTEM 0x00000004
  5173. #define FILE_ATTRIBUTE_DIRECTORY 0x00000010
  5174. #define FILE_ATTRIBUTE_ARCHIVE 0x00000020
  5175. #define FILE_ATTRIBUTE_DEVICE 0x00000040
  5176. #define FILE_ATTRIBUTE_NORMAL 0x00000080
  5177. #define FILE_ATTRIBUTE_TEMPORARY 0x00000100
  5178. #define FILE_ATTRIBUTE_SPARSE_FILE 0x00000200
  5179. #define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400
  5180. #define FILE_ATTRIBUTE_COMPRESSED 0x00000800
  5181. #define FILE_ATTRIBUTE_OFFLINE 0x00001000
  5182. #define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000
  5183. #define FILE_ATTRIBUTE_ENCRYPTED 0x00004000
  5184. #define FILE_ATTRIBUTE_INTEGRITY_STREAM 0x00008000
  5185. #define FILE_ATTRIBUTE_VIRTUAL 0x00010000
  5186. #define FILE_ATTRIBUTE_NO_SCRUB_DATA 0x00020000
  5187. #define FILE_ATTRIBUTE_EA 0x00040000
  5188. #define FILE_ATTRIBUTE_PINNED 0x00080000
  5189. #define FILE_ATTRIBUTE_UNPINNED 0x00100000
  5190. #define FILE_ATTRIBUTE_RECALL_ON_OPEN 0x00040000
  5191. #define FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS 0x00400000
  5192. #define TREE_CONNECT_ATTRIBUTE_PRIVACY 0x00004000
  5193. #define TREE_CONNECT_ATTRIBUTE_INTEGRITY 0x00008000
  5194. #define TREE_CONNECT_ATTRIBUTE_GLOBAL 0x00000004
  5195. #define TREE_CONNECT_ATTRIBUTE_PINNED 0x00000002
  5196. #define FILE_ATTRIBUTE_STRICTLY_SEQUENTIAL 0x20000000
  5197. #define FILE_NOTIFY_CHANGE_FILE_NAME 0x00000001
  5198. #define FILE_NOTIFY_CHANGE_DIR_NAME 0x00000002
  5199. #define FILE_NOTIFY_CHANGE_ATTRIBUTES 0x00000004
  5200. #define FILE_NOTIFY_CHANGE_SIZE 0x00000008
  5201. #define FILE_NOTIFY_CHANGE_LAST_WRITE 0x00000010
  5202. #define FILE_NOTIFY_CHANGE_LAST_ACCESS 0x00000020
  5203. #define FILE_NOTIFY_CHANGE_CREATION 0x00000040
  5204. #define FILE_NOTIFY_CHANGE_SECURITY 0x00000100
  5205. #define FILE_ACTION_ADDED 0x00000001
  5206. #define FILE_ACTION_REMOVED 0x00000002
  5207. #define FILE_ACTION_MODIFIED 0x00000003
  5208. #define FILE_ACTION_RENAMED_OLD_NAME 0x00000004
  5209. #define FILE_ACTION_RENAMED_NEW_NAME 0x00000005
  5210. #define MAILSLOT_NO_MESSAGE ((DWORD)-1)
  5211. #define MAILSLOT_WAIT_FOREVER ((DWORD)-1)
  5212. #define FILE_CASE_SENSITIVE_SEARCH 0x00000001
  5213. #define FILE_CASE_PRESERVED_NAMES 0x00000002
  5214. #define FILE_UNICODE_ON_DISK 0x00000004
  5215. #define FILE_PERSISTENT_ACLS 0x00000008
  5216. #define FILE_FILE_COMPRESSION 0x00000010
  5217. #define FILE_VOLUME_QUOTAS 0x00000020
  5218. #define FILE_SUPPORTS_SPARSE_FILES 0x00000040
  5219. #define FILE_SUPPORTS_REPARSE_POINTS 0x00000080
  5220. #define FILE_SUPPORTS_REMOTE_STORAGE 0x00000100
  5221. #define FILE_RETURNS_CLEANUP_RESULT_INFO 0x00000200
  5222. #define FILE_SUPPORTS_POSIX_UNLINK_RENAME 0x00000400
  5223. #define FILE_SUPPORTS_BYPASS_IO 0x00000800
  5224. #define FILE_SUPPORTS_STREAM_SNAPSHOTS 0x00001000
  5225. #define FILE_SUPPORTS_CASE_SENSITIVE_DIRS 0x00002000
  5226. #define FILE_VOLUME_IS_COMPRESSED 0x00008000
  5227. #define FILE_SUPPORTS_OBJECT_IDS 0x00010000
  5228. #define FILE_SUPPORTS_ENCRYPTION 0x00020000
  5229. #define FILE_NAMED_STREAMS 0x00040000
  5230. #define FILE_READ_ONLY_VOLUME 0x00080000
  5231. #define FILE_SEQUENTIAL_WRITE_ONCE 0x00100000
  5232. #define FILE_SUPPORTS_TRANSACTIONS 0x00200000
  5233. #define FILE_SUPPORTS_HARD_LINKS 0x00400000
  5234. #define FILE_SUPPORTS_EXTENDED_ATTRIBUTES 0x00800000
  5235. #define FILE_SUPPORTS_OPEN_BY_FILE_ID 0x01000000
  5236. #define FILE_SUPPORTS_USN_JOURNAL 0x02000000
  5237. #define FILE_SUPPORTS_INTEGRITY_STREAMS 0x04000000
  5238. #define FILE_SUPPORTS_BLOCK_REFCOUNTING 0x08000000
  5239. #define FILE_SUPPORTS_SPARSE_VDL 0x10000000
  5240. #define FILE_DAX_VOLUME 0x20000000
  5241. #define FILE_SUPPORTS_GHOSTING 0x40000000
  5242. #define FILE_INVALID_FILE_ID ((LONGLONG)(-1LL))
  5243. typedef struct _FILE_ID_128 {
  5244. BYTE Identifier[16];
  5245. } FILE_ID_128, *PFILE_ID_128;
  5246. typedef struct _FILE_NOTIFY_INFORMATION {
  5247. DWORD NextEntryOffset;
  5248. DWORD Action;
  5249. DWORD FileNameLength;
  5250. WCHAR FileName[1];
  5251. } FILE_NOTIFY_INFORMATION,*PFILE_NOTIFY_INFORMATION;
  5252. #if _WIN32_WINNT >= _WIN32_WINNT_WIN10_RS3
  5253. typedef struct _FILE_NOTIFY_EXTENDED_INFORMATION {
  5254. DWORD NextEntryOffset;
  5255. DWORD Action;
  5256. LARGE_INTEGER CreationTime;
  5257. LARGE_INTEGER LastModificationTime;
  5258. LARGE_INTEGER LastChangeTime;
  5259. LARGE_INTEGER LastAccessTime;
  5260. LARGE_INTEGER AllocatedLength;
  5261. LARGE_INTEGER FileSize;
  5262. DWORD FileAttributes;
  5263. __C89_NAMELESS union {
  5264. DWORD ReparsePointTag;
  5265. DWORD EaSize;
  5266. };
  5267. LARGE_INTEGER FileId;
  5268. LARGE_INTEGER ParentFileId;
  5269. DWORD FileNameLength;
  5270. WCHAR FileName[1];
  5271. } FILE_NOTIFY_EXTENDED_INFORMATION,*PFILE_NOTIFY_EXTENDED_INFORMATION;
  5272. #endif
  5273. #if _WIN32_WINNT >= _WIN32_WINNT_WIN10_NI
  5274. #define FILE_NAME_FLAG_HARDLINK 0
  5275. #define FILE_NAME_FLAG_NTFS 0x01
  5276. #define FILE_NAME_FLAG_DOS 0x02
  5277. #define FILE_NAME_FLAG_BOTH 0x03
  5278. #define FILE_NAME_FLAGS_UNSPECIFIED 0x80
  5279. typedef struct _FILE_NOTIFY_FULL_INFORMATION {
  5280. DWORD NextEntryOffset;
  5281. DWORD Action;
  5282. LARGE_INTEGER CreationTime;
  5283. LARGE_INTEGER LastModificationTime;
  5284. LARGE_INTEGER LastChangeTime;
  5285. LARGE_INTEGER LastAccessTime;
  5286. LARGE_INTEGER AllocatedLength;
  5287. LARGE_INTEGER FileSize;
  5288. DWORD FileAttributes;
  5289. __C89_NAMELESS union {
  5290. DWORD ReparsePointTag;
  5291. DWORD EaSize;
  5292. };
  5293. LARGE_INTEGER FileId;
  5294. LARGE_INTEGER ParentFileId;
  5295. WORD FileNameLength;
  5296. BYTE FileNameFlags;
  5297. BYTE Reserved;
  5298. WCHAR FileName[1];
  5299. } FILE_NOTIFY_FULL_INFORMATION,*PFILE_NOTIFY_FULL_INFORMATION;
  5300. #endif
  5301. #define FILE_CS_FLAG_CASE_SENSITIVE_DIR 0x00000001
  5302. typedef union _FILE_SEGMENT_ELEMENT {
  5303. PVOID64 Buffer;
  5304. ULONGLONG Alignment;
  5305. } FILE_SEGMENT_ELEMENT,*PFILE_SEGMENT_ELEMENT;
  5306. #if NTDDI_VERSION >= NTDDI_WIN8
  5307. #define FLUSH_FLAGS_FILE_DATA_ONLY 0x00000001
  5308. #define FLUSH_FLAGS_NO_SYNC 0x00000002
  5309. #endif
  5310. #if NTDDI_VERSION >= NTDDI_WIN10_RS1
  5311. #define FLUSH_FLAGS_FILE_DATA_SYNC_ONLY 0x00000004
  5312. #endif
  5313. typedef struct _REPARSE_GUID_DATA_BUFFER {
  5314. DWORD ReparseTag;
  5315. WORD ReparseDataLength;
  5316. WORD Reserved;
  5317. GUID ReparseGuid;
  5318. struct {
  5319. BYTE DataBuffer[1];
  5320. } GenericReparseBuffer;
  5321. } REPARSE_GUID_DATA_BUFFER,*PREPARSE_GUID_DATA_BUFFER;
  5322. #define REPARSE_GUID_DATA_BUFFER_HEADER_SIZE FIELD_OFFSET(REPARSE_GUID_DATA_BUFFER,GenericReparseBuffer)
  5323. #define MAXIMUM_REPARSE_DATA_BUFFER_SIZE (16 *1024)
  5324. #define SYMLINK_FLAG_RELATIVE 1
  5325. #define IO_REPARSE_TAG_RESERVED_ZERO (0)
  5326. #define IO_REPARSE_TAG_RESERVED_ONE (1)
  5327. #define IO_REPARSE_TAG_RESERVED_TWO (2)
  5328. #define IO_REPARSE_TAG_RESERVED_RANGE IO_REPARSE_TAG_RESERVED_TWO
  5329. #define IsReparseTagMicrosoft(_tag) (((_tag) & 0x80000000))
  5330. #define IsReparseTagNameSurrogate(_tag) (((_tag) & 0x20000000))
  5331. #define IsReparseTagDirectory(_tag) (((_tag) & 0x10000000))
  5332. #define IO_REPARSE_TAG_MOUNT_POINT (__MSABI_LONG(0xA0000003))
  5333. #define IO_REPARSE_TAG_HSM (__MSABI_LONG(0xC0000004))
  5334. #define IO_REPARSE_TAG_DRIVE_EXTENDER (__MSABI_LONG(0x80000005))
  5335. #define IO_REPARSE_TAG_HSM2 (__MSABI_LONG(0x80000006))
  5336. #define IO_REPARSE_TAG_SIS (__MSABI_LONG(0x80000007))
  5337. #define IO_REPARSE_TAG_WIM (__MSABI_LONG(0x80000008))
  5338. #define IO_REPARSE_TAG_CSV (__MSABI_LONG(0x80000009))
  5339. #define IO_REPARSE_TAG_DFS (__MSABI_LONG(0x8000000A))
  5340. #define IO_REPARSE_TAG_FILTER_MANAGER (__MSABI_LONG(0x8000000B))
  5341. #define IO_REPARSE_TAG_SYMLINK (__MSABI_LONG(0xA000000C))
  5342. #define IO_REPARSE_TAG_IIS_CACHE (__MSABI_LONG(0xA0000010))
  5343. #define IO_REPARSE_TAG_DFSR (__MSABI_LONG(0x80000012))
  5344. #define IO_REPARSE_TAG_DEDUP (__MSABI_LONG(0x80000013))
  5345. #define IO_REPARSE_TAG_NFS (__MSABI_LONG(0x80000014))
  5346. #define IO_REPARSE_TAG_FILE_PLACEHOLDER (__MSABI_LONG(0x80000015))
  5347. #define IO_REPARSE_TAG_WOF (__MSABI_LONG(0x80000017))
  5348. #define IO_REPARSE_TAG_WCI (__MSABI_LONG(0x80000018))
  5349. #define IO_REPARSE_TAG_WCI_1 (__MSABI_LONG(0x90001018))
  5350. #define IO_REPARSE_TAG_GLOBAL_REPARSE (__MSABI_LONG(0xA0000019))
  5351. #define IO_REPARSE_TAG_CLOUD (__MSABI_LONG(0x9000001A))
  5352. #define IO_REPARSE_TAG_CLOUD_1 (__MSABI_LONG(0x9000101A))
  5353. #define IO_REPARSE_TAG_CLOUD_2 (__MSABI_LONG(0x9000201A))
  5354. #define IO_REPARSE_TAG_CLOUD_3 (__MSABI_LONG(0x9000301A))
  5355. #define IO_REPARSE_TAG_CLOUD_4 (__MSABI_LONG(0x9000401A))
  5356. #define IO_REPARSE_TAG_CLOUD_5 (__MSABI_LONG(0x9000501A))
  5357. #define IO_REPARSE_TAG_CLOUD_6 (__MSABI_LONG(0x9000601A))
  5358. #define IO_REPARSE_TAG_CLOUD_7 (__MSABI_LONG(0x9000701A))
  5359. #define IO_REPARSE_TAG_CLOUD_8 (__MSABI_LONG(0x9000801A))
  5360. #define IO_REPARSE_TAG_CLOUD_9 (__MSABI_LONG(0x9000901A))
  5361. #define IO_REPARSE_TAG_CLOUD_A (__MSABI_LONG(0x9000A01A))
  5362. #define IO_REPARSE_TAG_CLOUD_B (__MSABI_LONG(0x9000B01A))
  5363. #define IO_REPARSE_TAG_CLOUD_C (__MSABI_LONG(0x9000C01A))
  5364. #define IO_REPARSE_TAG_CLOUD_D (__MSABI_LONG(0x9000D01A))
  5365. #define IO_REPARSE_TAG_CLOUD_E (__MSABI_LONG(0x9000E01A))
  5366. #define IO_REPARSE_TAG_CLOUD_F (__MSABI_LONG(0x9000F01A))
  5367. #define IO_REPARSE_TAG_CLOUD_MASK (__MSABI_LONG(0x0000F000))
  5368. #define IO_REPARSE_TAG_APPEXECLINK (__MSABI_LONG(0x8000001B))
  5369. #define IO_REPARSE_TAG_PROJFS (__MSABI_LONG(0x9000001C))
  5370. #define IO_REPARSE_TAG_STORAGE_SYNC (__MSABI_LONG(0x8000001E))
  5371. #define IO_REPARSE_TAG_WCI_TOMBSTONE (__MSABI_LONG(0xA000001F))
  5372. #define IO_REPARSE_TAG_UNHANDLED (__MSABI_LONG(0x80000020))
  5373. #define IO_REPARSE_TAG_ONEDRIVE (__MSABI_LONG(0x80000021))
  5374. #define IO_REPARSE_TAG_PROJFS_TOMBSTONE (__MSABI_LONG(0xA0000022))
  5375. #define IO_REPARSE_TAG_AF_UNIX (__MSABI_LONG(0x80000023))
  5376. #define IO_REPARSE_TAG_WCI_LINK (__MSABI_LONG(0xA0000027))
  5377. #define IO_REPARSE_TAG_WCI_LINK_1 (__MSABI_LONG(0xA0001027))
  5378. #define IO_REPARSE_TAG_DATALESS_CIM (__MSABI_LONG(0xA0000028))
  5379. #if _WIN32_WINNT >= _WIN32_WINNT_WIN8
  5380. #define SCRUB_DATA_INPUT_FLAG_RESUME 0x00000001
  5381. #define SCRUB_DATA_INPUT_FLAG_SKIP_IN_SYNC 0x00000002
  5382. #define SCRUB_DATA_INPUT_FLAG_SKIP_NON_INTEGRITY_DATA 0x00000004
  5383. #define SCRUB_DATA_INPUT_FLAG_IGNORE_REDUNDANCY 0x00000008
  5384. #define SCRUB_DATA_INPUT_FLAG_SKIP_DATA 0x00000010
  5385. #define SCRUB_DATA_INPUT_FLAG_SCRUB_BY_OBJECT_ID 0x00000020
  5386. #if _WIN32_WINNT >= _WIN32_WINNT_WIN10_19H2
  5387. #define SCRUB_DATA_INPUT_FLAG_OPLOCK_NOT_ACQUIRED 0x00000040
  5388. #endif
  5389. #define SCRUB_DATA_OUTPUT_FLAG_INCOMPLETE 0x00000001
  5390. #define SCRUB_DATA_OUTPUT_FLAG_NON_USER_DATA_RANGE 0x00010000
  5391. #if _WIN32_WINNT >= _WIN32_WINNT_WINBLUE
  5392. #define SCRUB_DATA_OUTPUT_FLAG_PARITY_EXTENT_DATA_RETURNED 0x00020000
  5393. #define SCRUB_DATA_OUTPUT_FLAG_RESUME_CONTEXT_LENGTH_SPECIFIED 0x00040000
  5394. #endif
  5395. typedef struct _SCRUB_DATA_INPUT {
  5396. DWORD Size;
  5397. DWORD Flags;
  5398. DWORD MaximumIos;
  5399. DWORD ObjectId[4];
  5400. DWORD Reserved[41];
  5401. BYTE ResumeContext[1040];
  5402. } SCRUB_DATA_INPUT,*PSCRUB_DATA_INPUT;
  5403. #if _WIN32_WINNT >= _WIN32_WINNT_WINBLUE
  5404. typedef struct _SCRUB_PARITY_EXTENT {
  5405. LONGLONG Offset;
  5406. ULONGLONG Length;
  5407. } SCRUB_PARITY_EXTENT, *PSCRUB_PARITY_EXTENT;
  5408. typedef struct _SCRUB_PARITY_EXTENT_DATA {
  5409. WORD Size;
  5410. WORD Flags;
  5411. WORD NumberOfParityExtents;
  5412. WORD MaximumNumberOfParityExtents;
  5413. SCRUB_PARITY_EXTENT ParityExtents[ANYSIZE_ARRAY];
  5414. } SCRUB_PARITY_EXTENT_DATA, *PSCRUB_PARITY_EXTENT_DATA;
  5415. #endif /* _WIN32_WINNT >= _WIN32_WINNT_WINBLUE */
  5416. typedef struct _SCRUB_DATA_OUTPUT {
  5417. DWORD Size;
  5418. DWORD Flags;
  5419. DWORD Status;
  5420. ULONGLONG ErrorFileOffset;
  5421. ULONGLONG ErrorLength;
  5422. ULONGLONG NumberOfBytesRepaired;
  5423. ULONGLONG NumberOfBytesFailed;
  5424. ULONGLONG InternalFileReference;
  5425. #if _WIN32_WINNT >= _WIN32_WINNT_WINBLUE
  5426. WORD ResumeContextLength;
  5427. WORD ParityExtentDataOffset;
  5428. DWORD Reserved[9];
  5429. #else
  5430. DWORD Reserved[10];
  5431. #endif
  5432. #if _WIN32_WINNT >= _WIN32_WINNT_WIN10_RS5
  5433. ULONGLONG NumberOfMetadataBytesProcessed;
  5434. ULONGLONG NumberOfDataBytesProcessed;
  5435. ULONGLONG TotalNumberOfMetadataBytesInUse;
  5436. ULONGLONG TotalNumberOfDataBytesInUse;
  5437. #else
  5438. ULONGLONG Reserved2[4];
  5439. #endif
  5440. #if _WIN32_WINNT >= _WIN32_WINNT_WIN10_FE
  5441. ULONGLONG DataBytesSkippedDueToNoAllocation;
  5442. ULONGLONG DataBytesSkippedDueToInvalidRun;
  5443. ULONGLONG DataBytesSkippedDueToIntegrityStream;
  5444. ULONGLONG DataBytesSkippedDueToRegionBeingClean;
  5445. ULONGLONG DataBytesSkippedDueToLockConflict;
  5446. ULONGLONG DataBytesSkippedDueToNoScrubDataFlag;
  5447. ULONGLONG DataBytesSkippedDueToNoScrubNonIntegrityStreamFlag;
  5448. ULONGLONG DataBytesScrubbed;
  5449. #else
  5450. ULONGLONG Reserved3[8];
  5451. #endif
  5452. BYTE ResumeContext[1040];
  5453. } SCRUB_DATA_OUTPUT, *PSCRUB_DATA_OUTPUT;
  5454. #endif
  5455. #define IO_COMPLETION_MODIFY_STATE 0x0002
  5456. #define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3)
  5457. #define DUPLICATE_CLOSE_SOURCE 0x00000001
  5458. #define DUPLICATE_SAME_ACCESS 0x00000002
  5459. #define POWERBUTTON_ACTION_INDEX_NOTHING 0
  5460. #define POWERBUTTON_ACTION_INDEX_SLEEP 1
  5461. #define POWERBUTTON_ACTION_INDEX_HIBERNATE 2
  5462. #define POWERBUTTON_ACTION_INDEX_SHUTDOWN 3
  5463. #define POWERBUTTON_ACTION_VALUE_NOTHING 0
  5464. #define POWERBUTTON_ACTION_VALUE_SLEEP 2
  5465. #define POWERBUTTON_ACTION_VALUE_HIBERNATE 3
  5466. #define POWERBUTTON_ACTION_VALUE_SHUTDOWN 6
  5467. #define PERFSTATE_POLICY_CHANGE_IDEAL 0
  5468. #define PERFSTATE_POLICY_CHANGE_SINGLE 1
  5469. #define PERFSTATE_POLICY_CHANGE_ROCKET 2
  5470. #define PERFSTATE_POLICY_CHANGE_MAX PERFSTATE_POLICY_CHANGE_ROCKET
  5471. #define PROCESSOR_PERF_BOOST_POLICY_DISABLED 0
  5472. #define PROCESSOR_PERF_BOOST_POLICY_MAX 100
  5473. #define PROCESSOR_PERF_BOOST_MODE_DISABLED 0
  5474. #define PROCESSOR_PERF_BOOST_MODE_ENABLED 1
  5475. #define PROCESSOR_PERF_BOOST_MODE_AGGRESSIVE 2
  5476. #define PROCESSOR_PERF_BOOST_MODE_EFFICIENT_ENABLED 3
  5477. #define PROCESSOR_PERF_BOOST_MODE_EFFICIENT_AGGRESSIVE 4
  5478. #define PROCESSOR_PERF_BOOST_MODE_MAX PROCESSOR_PERF_BOOST_MODE_EFFICIENT_AGGRESSIVE
  5479. #define CORE_PARKING_POLICY_CHANGE_IDEAL 0
  5480. #define CORE_PARKING_POLICY_CHANGE_SINGLE 1
  5481. #define CORE_PARKING_POLICY_CHANGE_ROCKET 2
  5482. #define CORE_PARKING_POLICY_CHANGE_MULTISTEP 3
  5483. #define CORE_PARKING_POLICY_CHANGE_MAX CORE_PARKING_POLICY_CHANGE_MULTISTEP
  5484. #define POWER_DEVICE_IDLE_POLICY_PERFORMANCE 0
  5485. #define POWER_DEVICE_IDLE_POLICY_CONSERVATIVE 1
  5486. DEFINE_GUID (GUID_MAX_POWER_SAVINGS, 0xa1841308, 0x3541, 0x4fab, 0xbc, 0x81, 0xf7, 0x15, 0x56, 0xf2, 0x0b, 0x4a);
  5487. DEFINE_GUID (GUID_MIN_POWER_SAVINGS, 0x8c5e7fda, 0xe8bf, 0x4a96, 0x9a, 0x85, 0xa6, 0xe2, 0x3a, 0x8c, 0x63, 0x5c);
  5488. DEFINE_GUID (GUID_TYPICAL_POWER_SAVINGS, 0x381b4222, 0xf694, 0x41f0, 0x96, 0x85, 0xff, 0x5b, 0xb2, 0x60, 0xdf, 0x2e);
  5489. DEFINE_GUID (NO_SUBGROUP_GUID, 0xfea3413e, 0x7e05, 0x4911, 0x9a, 0x71, 0x70, 0x03, 0x31, 0xf1, 0xc2, 0x94);
  5490. DEFINE_GUID (ALL_POWERSCHEMES_GUID, 0x68a1e95e, 0x13ea, 0x41e1, 0x80, 0x11, 0x0c, 0x49, 0x6c, 0xa4, 0x90, 0xb0);
  5491. DEFINE_GUID (GUID_POWERSCHEME_PERSONALITY, 0x245d8541, 0x3943, 0x4422, 0xb0, 0x25, 0x13, 0xa7, 0x84, 0xf6, 0x79, 0xb7);
  5492. DEFINE_GUID (GUID_ACTIVE_POWERSCHEME, 0x31f9f286, 0x5084, 0x42fe, 0xb7, 0x20, 0x2b, 0x02, 0x64, 0x99, 0x37, 0x63);
  5493. DEFINE_GUID (GUID_IDLE_RESILIENCY_SUBGROUP, 0x2e601130, 0x5351, 0x4d9d, 0x8e, 0x4, 0x25, 0x29, 0x66, 0xba, 0xd0, 0x54);
  5494. DEFINE_GUID (GUID_IDLE_RESILIENCY_PERIOD, 0xc42b79aa, 0xaa3a, 0x484b, 0xa9, 0x8f, 0x2c, 0xf3, 0x2a, 0xa9, 0xa, 0x28);
  5495. DEFINE_GUID (GUID_DISK_COALESCING_POWERDOWN_TIMEOUT, 0xc36f0eb4, 0x2988, 0x4a70, 0x8e, 0xee, 0x8, 0x84, 0xfc, 0x2c, 0x24, 0x33);
  5496. DEFINE_GUID (GUID_EXECUTION_REQUIRED_REQUEST_TIMEOUT, 0x3166bc41, 0x7e98, 0x4e03, 0xb3, 0x4e, 0xec, 0xf, 0x5f, 0x2b, 0x21, 0x8e);
  5497. DEFINE_GUID (GUID_VIDEO_SUBGROUP, 0x7516b95f, 0xf776, 0x4464, 0x8c, 0x53, 0x06, 0x16, 0x7f, 0x40, 0xcc, 0x99);
  5498. DEFINE_GUID (GUID_VIDEO_POWERDOWN_TIMEOUT, 0x3c0bc021, 0xc8a8, 0x4e07, 0xa9, 0x73, 0x6b, 0x14, 0xcb, 0xcb, 0x2b, 0x7e);
  5499. DEFINE_GUID (GUID_VIDEO_ANNOYANCE_TIMEOUT, 0x82dbcf2d, 0xcd67, 0x40c5, 0xbf, 0xdc, 0x9f, 0x1a, 0x5c, 0xcd, 0x46, 0x63);
  5500. DEFINE_GUID (GUID_VIDEO_ADAPTIVE_PERCENT_INCREASE, 0xeed904df, 0xb142, 0x4183, 0xb1, 0x0b, 0x5a, 0x11, 0x97, 0xa3, 0x78, 0x64);
  5501. DEFINE_GUID (GUID_VIDEO_DIM_TIMEOUT, 0x17aaa29b, 0x8b43, 0x4b94, 0xaa, 0xfe, 0x35, 0xf6, 0x4d, 0xaa, 0xf1, 0xee);
  5502. DEFINE_GUID (GUID_VIDEO_ADAPTIVE_POWERDOWN, 0x90959d22, 0xd6a1, 0x49b9, 0xaf, 0x93, 0xbc, 0xe8, 0x85, 0xad, 0x33, 0x5b);
  5503. DEFINE_GUID (GUID_MONITOR_POWER_ON, 0x02731015, 0x4510, 0x4526, 0x99, 0xe6, 0xe5, 0xa1, 0x7e, 0xbd, 0x1a, 0xea);
  5504. DEFINE_GUID (GUID_DEVICE_POWER_POLICY_VIDEO_BRIGHTNESS, __MSABI_LONG(0xaded5e82), 0xb909, 0x4619, 0x99, 0x49, 0xf5, 0xd7, 0x1d, 0xac, 0x0b, 0xcb);
  5505. DEFINE_GUID (GUID_DEVICE_POWER_POLICY_VIDEO_DIM_BRIGHTNESS, 0xf1fbfde2, 0xa960, 0x4165, 0x9f, 0x88, 0x50, 0x66, 0x79, 0x11, 0xce, 0x96);
  5506. DEFINE_GUID (GUID_VIDEO_CURRENT_MONITOR_BRIGHTNESS, 0x8ffee2c6, 0x2d01, 0x46be, 0xad, 0xb9, 0x39, 0x8a, 0xdd, 0xc5, 0xb4, 0xff);
  5507. DEFINE_GUID (GUID_VIDEO_ADAPTIVE_DISPLAY_BRIGHTNESS, 0xfbd9aa66, 0x9553, 0x4097, 0xba, 0x44, 0xed, 0x6e, 0x9d, 0x65, 0xea, 0xb8);
  5508. DEFINE_GUID (GUID_CONSOLE_DISPLAY_STATE, 0x6fe69556, 0x704a, 0x47a0, 0x8f, 0x24, 0xc2, 0x8d, 0x93, 0x6f, 0xda, 0x47);
  5509. DEFINE_GUID (GUID_ALLOW_DISPLAY_REQUIRED, 0xa9ceb8da, 0xcd46, 0x44fb, 0xa9, 0x8b, 0x02, 0xaf, 0x69, 0xde, 0x46, 0x23);
  5510. DEFINE_GUID (GUID_VIDEO_CONSOLE_LOCK_TIMEOUT, 0x8ec4b3a5, 0x6868, 0x48c2, 0xbe, 0x75, 0x4f, 0x30, 0x44, 0xbe, 0x88, 0xa7);
  5511. DEFINE_GUID (GUID_ADAPTIVE_POWER_BEHAVIOR_SUBGROUP, 0x8619b916, 0xe004, 0x4dd8, 0x9b, 0x66, 0xda, 0xe8, 0x6f, 0x80, 0x66, 0x98);
  5512. DEFINE_GUID (GUID_NON_ADAPTIVE_INPUT_TIMEOUT, 0x5adbbfbc, 0x74e, 0x4da1, 0xba, 0x38, 0xdb, 0x8b, 0x36, 0xb2, 0xc8, 0xf3);
  5513. DEFINE_GUID (GUID_DISK_SUBGROUP, 0x0012ee47, 0x9041, 0x4b5d, 0x9b, 0x77, 0x53, 0x5f, 0xba, 0x8b, 0x14, 0x42);
  5514. DEFINE_GUID (GUID_DISK_POWERDOWN_TIMEOUT, 0x6738e2c4, 0xe8a5, 0x4a42, 0xb1, 0x6a, 0xe0, 0x40, 0xe7, 0x69, 0x75, 0x6e);
  5515. DEFINE_GUID (GUID_DISK_IDLE_TIMEOUT, 0x58e39ba8, 0xb8e6, 0x4ef6, 0x90, 0xd0, 0x89, 0xae, 0x32, 0xb2, 0x58, 0xd6);
  5516. DEFINE_GUID (GUID_DISK_BURST_IGNORE_THRESHOLD, 0x80e3c60e, 0xbb94, 0x4ad8, 0xbb, 0xe0, 0x0d, 0x31, 0x95, 0xef, 0xc6, 0x63);
  5517. DEFINE_GUID (GUID_DISK_ADAPTIVE_POWERDOWN, 0x396a32e1, 0x499a, 0x40b2, 0x91, 0x24, 0xa9, 0x6a, 0xfe, 0x70, 0x76, 0x67);
  5518. DEFINE_GUID (GUID_SLEEP_SUBGROUP, 0x238c9fa8, 0x0aad, 0x41ed, 0x83, 0xf4, 0x97, 0xbe, 0x24, 0x2c, 0x8f, 0x20);
  5519. DEFINE_GUID (GUID_SLEEP_IDLE_THRESHOLD, 0x81cd32e0, 0x7833, 0x44f3, 0x87, 0x37, 0x70, 0x81, 0xf3, 0x8d, 0x1f, 0x70);
  5520. DEFINE_GUID (GUID_STANDBY_TIMEOUT, 0x29f6c1db, 0x86da, 0x48c5, 0x9f, 0xdb, 0xf2, 0xb6, 0x7b, 0x1f, 0x44, 0xda);
  5521. DEFINE_GUID (GUID_UNATTEND_SLEEP_TIMEOUT, 0x7bc4a2f9, 0xd8fc, 0x4469, 0xb0, 0x7b, 0x33, 0xeb, 0x78, 0x5a, 0xac, 0xa0);
  5522. DEFINE_GUID (GUID_HIBERNATE_TIMEOUT, 0x9d7815a6, 0x7ee4, 0x497e, 0x88, 0x88, 0x51, 0x5a, 0x05, 0xf0, 0x23, 0x64);
  5523. DEFINE_GUID (GUID_HIBERNATE_FASTS4_POLICY, 0x94ac6d29, 0x73ce, 0x41a6, 0x80, 0x9f, 0x63, 0x63, 0xba, 0x21, 0xb4, 0x7e);
  5524. DEFINE_GUID (GUID_CRITICAL_POWER_TRANSITION, 0xb7a27025, 0xe569, 0x46c2, 0xa5, 0x04, 0x2b, 0x96, 0xca, 0xd2, 0x25, 0xa1);
  5525. DEFINE_GUID (GUID_SYSTEM_AWAYMODE, 0x98a7f580, 0x01f7, 0x48aa, 0x9c, 0x0f, 0x44, 0x35, 0x2c, 0x29, 0xe5, 0xc0);
  5526. DEFINE_GUID (GUID_ALLOW_AWAYMODE, 0x25dfa149, 0x5dd1, 0x4736, 0xb5, 0xab, 0xe8, 0xa3, 0x7b, 0x5b, 0x81, 0x87);
  5527. DEFINE_GUID (GUID_ALLOW_STANDBY_STATES, 0xabfc2519, 0x3608, 0x4c2a, 0x94, 0xea, 0x17, 0x1b, 0x0e, 0xd5, 0x46, 0xab);
  5528. DEFINE_GUID (GUID_ALLOW_RTC_WAKE, 0xbd3b718a, 0x0680, 0x4d9d, 0x8a, 0xb2, 0xe1, 0xd2, 0xb4, 0xac, 0x80, 0x6d);
  5529. DEFINE_GUID (GUID_ALLOW_SYSTEM_REQUIRED, 0xa4b195f5, 0x8225, 0x47d8, 0x80, 0x12, 0x9d, 0x41, 0x36, 0x97, 0x86, 0xe2);
  5530. DEFINE_GUID (GUID_SYSTEM_BUTTON_SUBGROUP, 0x4f971e89, 0xeebd, 0x4455, 0xa8, 0xde, 0x9e, 0x59, 0x04, 0x0e, 0x73, 0x47);
  5531. DEFINE_GUID (GUID_POWERBUTTON_ACTION, 0x7648efa3, 0xdd9c, 0x4e3e, 0xb5, 0x66, 0x50, 0xf9, 0x29, 0x38, 0x62, 0x80);
  5532. DEFINE_GUID (GUID_SLEEPBUTTON_ACTION, 0x96996bc0, 0xad50, 0x47ec, 0x92, 0x3b, 0x6f, 0x41, 0x87, 0x4d, 0xd9, 0xeb);
  5533. DEFINE_GUID (GUID_USERINTERFACEBUTTON_ACTION, 0xa7066653, 0x8d6c, 0x40a8, 0x91, 0x0e, 0xa1, 0xf5, 0x4b, 0x84, 0xc7, 0xe5);
  5534. DEFINE_GUID (GUID_LIDCLOSE_ACTION, 0x5ca83367, 0x6e45, 0x459f, 0xa2, 0x7b, 0x47, 0x6b, 0x1d, 0x01, 0xc9, 0x36);
  5535. DEFINE_GUID (GUID_LIDOPEN_POWERSTATE, 0x99ff10e7, 0x23b1, 0x4c07, 0xa9, 0xd1, 0x5c, 0x32, 0x06, 0xd7, 0x41, 0xb4);
  5536. DEFINE_GUID (GUID_BATTERY_SUBGROUP, 0xe73a048d, 0xbf27, 0x4f12, 0x97, 0x31, 0x8b, 0x20, 0x76, 0xe8, 0x89, 0x1f);
  5537. DEFINE_GUID (GUID_BATTERY_DISCHARGE_ACTION_0, 0x637ea02f, 0xbbcb, 0x4015, 0x8e, 0x2c, 0xa1, 0xc7, 0xb9, 0xc0, 0xb5, 0x46);
  5538. DEFINE_GUID (GUID_BATTERY_DISCHARGE_LEVEL_0, 0x9a66d8d7, 0x4ff7, 0x4ef9, 0xb5, 0xa2, 0x5a, 0x32, 0x6c, 0xa2, 0xa4, 0x69);
  5539. DEFINE_GUID (GUID_BATTERY_DISCHARGE_FLAGS_0, 0x5dbb7c9f, 0x38e9, 0x40d2, 0x97, 0x49, 0x4f, 0x8a, 0x0e, 0x9f, 0x64, 0x0f);
  5540. DEFINE_GUID (GUID_BATTERY_DISCHARGE_ACTION_1, 0xd8742dcb, 0x3e6a, 0x4b3c, 0xb3, 0xfe, 0x37, 0x46, 0x23, 0xcd, 0xcf, 0x06);
  5541. DEFINE_GUID (GUID_BATTERY_DISCHARGE_LEVEL_1, 0x8183ba9a, 0xe910, 0x48da, 0x87, 0x69, 0x14, 0xae, 0x6d, 0xc1, 0x17, 0x0a);
  5542. DEFINE_GUID (GUID_BATTERY_DISCHARGE_FLAGS_1, 0xbcded951, 0x187b, 0x4d05, 0xbc, 0xcc, 0xf7, 0xe5, 0x19, 0x60, 0xc2, 0x58);
  5543. DEFINE_GUID (GUID_BATTERY_DISCHARGE_ACTION_2, 0x421cba38, 0x1a8e, 0x4881, 0xac, 0x89, 0xe3, 0x3a, 0x8b, 0x04, 0xec, 0xe4);
  5544. DEFINE_GUID (GUID_BATTERY_DISCHARGE_LEVEL_2, 0x07a07ca2, 0xadaf, 0x40d7, 0xb0, 0x77, 0x53, 0x3a, 0xad, 0xed, 0x1b, 0xfa);
  5545. DEFINE_GUID (GUID_BATTERY_DISCHARGE_FLAGS_2, 0x7fd2f0c4, 0xfeb7, 0x4da3, 0x81, 0x17, 0xe3, 0xfb, 0xed, 0xc4, 0x65, 0x82);
  5546. DEFINE_GUID (GUID_BATTERY_DISCHARGE_ACTION_3, 0x80472613, 0x9780, 0x455e, 0xb3, 0x08, 0x72, 0xd3, 0x00, 0x3c, 0xf2, 0xf8);
  5547. DEFINE_GUID (GUID_BATTERY_DISCHARGE_LEVEL_3, 0x58afd5a6, 0xc2dd, 0x47d2, 0x9f, 0xbf, 0xef, 0x70, 0xcc, 0x5c, 0x59, 0x65);
  5548. DEFINE_GUID (GUID_BATTERY_DISCHARGE_FLAGS_3, 0x73613ccf, 0xdbfa, 0x4279, 0x83, 0x56, 0x49, 0x35, 0xf6, 0xbf, 0x62, 0xf3);
  5549. DEFINE_GUID (GUID_PROCESSOR_SETTINGS_SUBGROUP, 0x54533251, 0x82be, 0x4824, 0x96, 0xc1, 0x47, 0xb6, 0x0b, 0x74, 0x0d, 0x00);
  5550. DEFINE_GUID (GUID_PROCESSOR_THROTTLE_POLICY, 0x57027304, 0x4af6, 0x4104, 0x92, 0x60, 0xe3, 0xd9, 0x52, 0x48, 0xfc, 0x36);
  5551. DEFINE_GUID (GUID_PROCESSOR_THROTTLE_MAXIMUM, 0xbc5038f7, 0x23e0, 0x4960, 0x96, 0xda, 0x33, 0xab, 0xaf, 0x59, 0x35, 0xec);
  5552. DEFINE_GUID (GUID_PROCESSOR_THROTTLE_MINIMUM, 0x893dee8e, 0x2bef, 0x41e0, 0x89, 0xc6, 0xb5, 0x5d, 0x09, 0x29, 0x96, 0x4c);
  5553. DEFINE_GUID (GUID_PROCESSOR_ALLOW_THROTTLING, 0x3b04d4fd, 0x1cc7, 0x4f23, 0xab, 0x1c, 0xd1, 0x33, 0x78, 0x19, 0xc4, 0xbb);
  5554. DEFINE_GUID (GUID_PROCESSOR_IDLESTATE_POLICY, 0x68f262a7, 0xf621, 0x4069, 0xb9, 0xa5, 0x48, 0x74, 0x16, 0x9b, 0xe2, 0x3c);
  5555. DEFINE_GUID (GUID_PROCESSOR_PERFSTATE_POLICY, 0xbbdc3814, 0x18e9, 0x4463, 0x8a, 0x55, 0xd1, 0x97, 0x32, 0x7c, 0x45, 0xc0);
  5556. DEFINE_GUID (GUID_PROCESSOR_PERF_INCREASE_THRESHOLD, 0x06cadf0e, 0x64ed, 0x448a, 0x89, 0x27, 0xce, 0x7b, 0xf9, 0x0e, 0xb3, 0x5d);
  5557. DEFINE_GUID (GUID_PROCESSOR_PERF_DECREASE_THRESHOLD, 0x12a0ab44, 0xfe28, 0x4fa9, 0xb3, 0xbd, 0x4b, 0x64, 0xf4, 0x49, 0x60, 0xa6);
  5558. DEFINE_GUID (GUID_PROCESSOR_PERF_INCREASE_POLICY, 0x465e1f50, 0xb610, 0x473a, 0xab, 0x58, 0x0, 0xd1, 0x7, 0x7d, 0xc4, 0x18);
  5559. DEFINE_GUID (GUID_PROCESSOR_PERF_DECREASE_POLICY, 0x40fbefc7, 0x2e9d, 0x4d25, 0xa1, 0x85, 0xc, 0xfd, 0x85, 0x74, 0xba, 0xc6);
  5560. DEFINE_GUID (GUID_PROCESSOR_PERF_INCREASE_TIME, 0x984cf492, 0x3bed, 0x4488, 0xa8, 0xf9, 0x42, 0x86, 0xc9, 0x7b, 0xf5, 0xaa);
  5561. DEFINE_GUID (GUID_PROCESSOR_PERF_DECREASE_TIME, 0xd8edeb9b, 0x95cf, 0x4f95, 0xa7, 0x3c, 0xb0, 0x61, 0x97, 0x36, 0x93, 0xc8);
  5562. DEFINE_GUID (GUID_PROCESSOR_PERF_TIME_CHECK, 0x4d2b0152, 0x7d5c, 0x498b, 0x88, 0xe2, 0x34, 0x34, 0x53, 0x92, 0xa2, 0xc5);
  5563. DEFINE_GUID (GUID_PROCESSOR_PERF_BOOST_POLICY, 0x45bcc044, 0xd885, 0x43e2, 0x86, 0x5, 0xee, 0xe, 0xc6, 0xe9, 0x6b, 0x59);
  5564. DEFINE_GUID (GUID_PROCESSOR_PERF_BOOST_MODE, 0xbe337238, 0xd82, 0x4146, 0xa9, 0x60, 0x4f, 0x37, 0x49, 0xd4, 0x70, 0xc7);
  5565. DEFINE_GUID (GUID_PROCESSOR_IDLE_ALLOW_SCALING, 0x6c2993b0, 0x8f48, 0x481f, 0xbc, 0xc6, 0x0, 0xdd, 0x27, 0x42, 0xaa, 0x6);
  5566. DEFINE_GUID (GUID_PROCESSOR_IDLE_DISABLE, 0x5d76a2ca, 0xe8c0, 0x402f, 0xa1, 0x33, 0x21, 0x58, 0x49, 0x2d, 0x58, 0xad);
  5567. DEFINE_GUID (GUID_PROCESSOR_IDLE_STATE_MAXIMUM, 0x9943e905, 0x9a30, 0x4ec1, 0x9b, 0x99, 0x44, 0xdd, 0x3b, 0x76, 0xf7, 0xa2);
  5568. DEFINE_GUID (GUID_PROCESSOR_IDLE_TIME_CHECK, 0xc4581c31, 0x89ab, 0x4597, 0x8e, 0x2b, 0x9c, 0x9c, 0xab, 0x44, 0xe, 0x6b);
  5569. DEFINE_GUID (GUID_PROCESSOR_IDLE_DEMOTE_THRESHOLD, 0x4b92d758, 0x5a24, 0x4851, 0xa4, 0x70, 0x81, 0x5d, 0x78, 0xae, 0xe1, 0x19);
  5570. DEFINE_GUID (GUID_PROCESSOR_IDLE_PROMOTE_THRESHOLD, 0x7b224883, 0xb3cc, 0x4d79, 0x81, 0x9f, 0x83, 0x74, 0x15, 0x2c, 0xbe, 0x7c);
  5571. DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_INCREASE_THRESHOLD, 0xdf142941, 0x20f3, 0x4edf, 0x9a, 0x4a, 0x9c, 0x83, 0xd3, 0xd7, 0x17, 0xd1);
  5572. DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_DECREASE_THRESHOLD, 0x68dd2f27, 0xa4ce, 0x4e11, 0x84, 0x87, 0x37, 0x94, 0xe4, 0x13, 0x5d, 0xfa);
  5573. DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_INCREASE_POLICY, 0xc7be0679, 0x2817, 0x4d69, 0x9d, 0x02, 0x51, 0x9a, 0x53, 0x7e, 0xd0, 0xc6);
  5574. DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_DECREASE_POLICY, 0x71021b41, 0xc749, 0x4d21, 0xbe, 0x74, 0xa0, 0x0f, 0x33, 0x5d, 0x58, 0x2b);
  5575. DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_MAX_CORES, 0xea062031, 0x0e34, 0x4ff1, 0x9b, 0x6d, 0xeb, 0x10, 0x59, 0x33, 0x40, 0x28);
  5576. DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_MIN_CORES, 0x0cc5b647, 0xc1df, 0x4637, 0x89, 0x1a, 0xde, 0xc3, 0x5c, 0x31, 0x85, 0x83);
  5577. DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_INCREASE_TIME, 0x2ddd5a84, 0x5a71, 0x437e, 0x91, 0x2a, 0xdb, 0x0b, 0x8c, 0x78, 0x87, 0x32);
  5578. DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_DECREASE_TIME, 0xdfd10d17, 0xd5eb, 0x45dd, 0x87, 0x7a, 0x9a, 0x34, 0xdd, 0xd1, 0x5c, 0x82);
  5579. DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_AFFINITY_HISTORY_DECREASE_FACTOR, 0x8f7b45e3, 0xc393, 0x480a, 0x87, 0x8c, 0xf6, 0x7a, 0xc3, 0xd0, 0x70, 0x82);
  5580. DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_AFFINITY_HISTORY_THRESHOLD, 0x5b33697b, 0xe89d, 0x4d38, 0xaa, 0x46, 0x9e, 0x7d, 0xfb, 0x7c, 0xd2, 0xf9);
  5581. DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_AFFINITY_WEIGHTING, 0xe70867f1, 0xfa2f, 0x4f4e, 0xae, 0xa1, 0x4d, 0x8a, 0x0b, 0xa2, 0x3b, 0x20);
  5582. DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_HISTORY_DECREASE_FACTOR, 0x1299023c, 0xbc28, 0x4f0a, 0x81, 0xec, 0xd3, 0x29, 0x5a, 0x8d, 0x81, 0x5d);
  5583. DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_HISTORY_THRESHOLD, 0x9ac18e92, 0xaa3c, 0x4e27, 0xb3, 0x07, 0x01, 0xae, 0x37, 0x30, 0x71, 0x29);
  5584. DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_WEIGHTING, 0x8809c2d8, 0xb155, 0x42d4, 0xbc, 0xda, 0x0d, 0x34, 0x56, 0x51, 0xb1, 0xdb);
  5585. DEFINE_GUID (GUID_PROCESSOR_CORE_PARKING_OVER_UTILIZATION_THRESHOLD, 0x943c8cb6, 0x6f93, 0x4227, 0xad, 0x87, 0xe9, 0xa3, 0xfe, 0xec, 0x08, 0xd1);
  5586. DEFINE_GUID (GUID_PROCESSOR_PARKING_CORE_OVERRIDE, 0xa55612aa, 0xf624, 0x42c6, 0xa4, 0x43, 0x73, 0x97, 0xd0, 0x64, 0xc0, 0x4f);
  5587. DEFINE_GUID (GUID_PROCESSOR_PARKING_PERF_STATE, 0x447235c7, 0x6a8d, 0x4cc0, 0x8e, 0x24, 0x9e, 0xaf, 0x70, 0xb9, 0x6e, 0x2b);
  5588. DEFINE_GUID (GUID_PROCESSOR_PARKING_CONCURRENCY_THRESHOLD, 0x2430ab6f, 0xa520, 0x44a2, 0x96, 0x01, 0xf7, 0xf2, 0x3b, 0x51, 0x34, 0xb1);
  5589. DEFINE_GUID (GUID_PROCESSOR_PARKING_HEADROOM_THRESHOLD, 0xf735a673, 0x2066, 0x4f80, 0xa0, 0xc5, 0xdd, 0xee, 0x0c, 0xf1, 0xbf, 0x5d);
  5590. DEFINE_GUID (GUID_PROCESSOR_PERF_HISTORY, 0x7d24baa7, 0x0b84, 0x480f, 0x84, 0x0c, 0x1b, 0x07, 0x43, 0xc0, 0x0f, 0x5f);
  5591. DEFINE_GUID (GUID_PROCESSOR_PERF_LATENCY_HINT, 0x0822df31, 0x9c83, 0x441c, 0xa0, 0x79, 0x0d, 0xe4, 0xcf, 0x00, 0x9c, 0x7b);
  5592. DEFINE_GUID (GUID_PROCESSOR_DISTRIBUTE_UTILITY, 0xe0007330, 0xf589, 0x42ed, 0xa4, 0x01, 0x5d, 0xdb, 0x10, 0xe7, 0x85, 0xd3);
  5593. DEFINE_GUID (GUID_SYSTEM_COOLING_POLICY, 0x94d3a615, 0xa899, 0x4ac5, 0xae, 0x2b, 0xe4, 0xd8, 0xf6, 0x34, 0x36, 0x7f);
  5594. DEFINE_GUID (GUID_LOCK_CONSOLE_ON_WAKE, 0x0e796bdb, 0x100d, 0x47d6, 0xa2, 0xd5, 0xf7, 0xd2, 0xda, 0xa5, 0x1f, 0x51);
  5595. DEFINE_GUID (GUID_DEVICE_IDLE_POLICY, 0x4faab71a, 0x92e5, 0x4726, 0xb5, 0x31, 0x22, 0x45, 0x59, 0x67, 0x2d, 0x19);
  5596. DEFINE_GUID (GUID_ACDC_POWER_SOURCE, 0x5d3e9a59, 0xe9d5, 0x4b00, 0xa6, 0xbd, 0xff, 0x34, 0xff, 0x51, 0x65, 0x48);
  5597. DEFINE_GUID (GUID_LIDSWITCH_STATE_CHANGE, 0xba3e0f4d, 0xb817, 0x4094, 0xa2, 0xd1, 0xd5, 0x63, 0x79, 0xe6, 0xa0, 0xf3);
  5598. DEFINE_GUID (GUID_BATTERY_PERCENTAGE_REMAINING, 0xa7ad8041, 0xb45a, 0x4cae, 0x87, 0xa3, 0xee, 0xcb, 0xb4, 0x68, 0xa9, 0xe1);
  5599. DEFINE_GUID (GUID_GLOBAL_USER_PRESENCE, 0x786e8a1d, 0xb427, 0x4344, 0x92, 0x7, 0x9, 0xe7, 0xb, 0xdc, 0xbe, 0xa9);
  5600. DEFINE_GUID (GUID_SESSION_DISPLAY_STATUS, 0x2b84c20e, 0xad23, 0x4ddf, 0x93, 0xdb, 0x5, 0xff, 0xbd, 0x7e, 0xfc, 0xa5);
  5601. DEFINE_GUID (GUID_SESSION_USER_PRESENCE, 0x3c0f4548, 0xc03f, 0x4c4d, 0xb9, 0xf2, 0x23, 0x7e, 0xde, 0x68, 0x63, 0x76);
  5602. DEFINE_GUID (GUID_IDLE_BACKGROUND_TASK, 0x515c31d8, 0xf734, 0x163d, 0xa0, 0xfd, 0x11, 0xa0, 0x8c, 0x91, 0xe8, 0xf1);
  5603. DEFINE_GUID (GUID_BACKGROUND_TASK_NOTIFICATION, 0xcf23f240, 0x2a54, 0x48d8, 0xb1, 0x14, 0xde, 0x15, 0x18, 0xff, 0x05, 0x2e);
  5604. DEFINE_GUID (GUID_APPLAUNCH_BUTTON, 0x1a689231, 0x7399, 0x4e9a, 0x8f, 0x99, 0xb7, 0x1f, 0x99, 0x9d, 0xb3, 0xfa);
  5605. DEFINE_GUID (GUID_PCIEXPRESS_SETTINGS_SUBGROUP, 0x501a4d13, 0x42af, 0x4429, 0x9f, 0xd1, 0xa8, 0x21, 0x8c, 0x26, 0x8e, 0x20);
  5606. DEFINE_GUID (GUID_PCIEXPRESS_ASPM_POLICY, 0xee12f906, 0xd277, 0x404b, 0xb6, 0xda, 0xe5, 0xfa, 0x1a, 0x57, 0x6d, 0xf5);
  5607. DEFINE_GUID (GUID_ENABLE_SWITCH_FORCED_SHUTDOWN, 0x833a6b62, 0xdfa4, 0x46d1, 0x82, 0xf8, 0xe0, 0x9e, 0x34, 0xd0, 0x29, 0xd6);
  5608. typedef enum _SYSTEM_POWER_STATE {
  5609. PowerSystemUnspecified = 0,PowerSystemWorking = 1,PowerSystemSleeping1 = 2,PowerSystemSleeping2 = 3,PowerSystemSleeping3 = 4,PowerSystemHibernate = 5,PowerSystemShutdown = 6,PowerSystemMaximum = 7
  5610. } SYSTEM_POWER_STATE,*PSYSTEM_POWER_STATE;
  5611. #define POWER_SYSTEM_MAXIMUM 7
  5612. typedef enum {
  5613. PowerActionNone = 0, PowerActionReserved, PowerActionSleep, PowerActionHibernate,
  5614. PowerActionShutdown, PowerActionShutdownReset, PowerActionShutdownOff,
  5615. PowerActionWarmEject
  5616. } POWER_ACTION,*PPOWER_ACTION;
  5617. typedef enum _DEVICE_POWER_STATE {
  5618. PowerDeviceUnspecified = 0, PowerDeviceD0, PowerDeviceD1, PowerDeviceD2, PowerDeviceD3,
  5619. PowerDeviceMaximum
  5620. } DEVICE_POWER_STATE,*PDEVICE_POWER_STATE;
  5621. typedef enum _MONITOR_DISPLAY_STATE {
  5622. PowerMonitorOff = 0, PowerMonitorOn, PowerMonitorDim
  5623. } MONITOR_DISPLAY_STATE, *PMONITOR_DISPLAY_STATE;
  5624. typedef enum _USER_ACTIVITY_PRESENCE {
  5625. PowerUserPresent = 0,
  5626. PowerUserNotPresent,
  5627. PowerUserInactive,
  5628. PowerUserMaximum,
  5629. PowerUserInvalid = PowerUserMaximum
  5630. } USER_ACTIVITY_PRESENCE,*PUSER_ACTIVITY_PRESENCE;
  5631. #define ES_SYSTEM_REQUIRED ((DWORD)0x00000001)
  5632. #define ES_DISPLAY_REQUIRED ((DWORD)0x00000002)
  5633. #define ES_USER_PRESENT ((DWORD)0x00000004)
  5634. #define ES_AWAYMODE_REQUIRED ((DWORD)0x00000040)
  5635. #define ES_CONTINUOUS ((DWORD)0x80000000)
  5636. typedef DWORD EXECUTION_STATE, *PEXECUTION_STATE;
  5637. typedef enum {
  5638. LT_DONT_CARE,LT_LOWEST_LATENCY
  5639. } LATENCY_TIME;
  5640. #define DIAGNOSTIC_REASON_VERSION 0
  5641. #define POWER_REQUEST_CONTEXT_VERSION 0
  5642. #define DIAGNOSTIC_REASON_SIMPLE_STRING 0x00000001
  5643. #define DIAGNOSTIC_REASON_DETAILED_STRING 0x00000002
  5644. #define DIAGNOSTIC_REASON_NOT_SPECIFIED 0x80000000
  5645. #define DIAGNOSTIC_REASON_INVALID_FLAGS (~0x80000003)
  5646. #define POWER_REQUEST_CONTEXT_SIMPLE_STRING 0x00000001
  5647. #define POWER_REQUEST_CONTEXT_DETAILED_STRING 0x00000002
  5648. typedef enum _POWER_REQUEST_TYPE {
  5649. PowerRequestDisplayRequired,
  5650. PowerRequestSystemRequired,
  5651. PowerRequestAwayModeRequired,
  5652. PowerRequestExecutionRequired
  5653. } POWER_REQUEST_TYPE,*PPOWER_REQUEST_TYPE;
  5654. #define PDCAP_D0_SUPPORTED 0x00000001
  5655. #define PDCAP_D1_SUPPORTED 0x00000002
  5656. #define PDCAP_D2_SUPPORTED 0x00000004
  5657. #define PDCAP_D3_SUPPORTED 0x00000008
  5658. #define PDCAP_WAKE_FROM_D0_SUPPORTED 0x00000010
  5659. #define PDCAP_WAKE_FROM_D1_SUPPORTED 0x00000020
  5660. #define PDCAP_WAKE_FROM_D2_SUPPORTED 0x00000040
  5661. #define PDCAP_WAKE_FROM_D3_SUPPORTED 0x00000080
  5662. #define PDCAP_WARM_EJECT_SUPPORTED 0x00000100
  5663. typedef struct CM_Power_Data_s {
  5664. DWORD PD_Size;
  5665. DEVICE_POWER_STATE PD_MostRecentPowerState;
  5666. DWORD PD_Capabilities;
  5667. DWORD PD_D1Latency;
  5668. DWORD PD_D2Latency;
  5669. DWORD PD_D3Latency;
  5670. DEVICE_POWER_STATE PD_PowerStateMapping[POWER_SYSTEM_MAXIMUM];
  5671. SYSTEM_POWER_STATE PD_DeepestSystemWake;
  5672. } CM_POWER_DATA,*PCM_POWER_DATA;
  5673. typedef enum {
  5674. SystemPowerPolicyAc,
  5675. SystemPowerPolicyDc,
  5676. VerifySystemPolicyAc,
  5677. VerifySystemPolicyDc,
  5678. SystemPowerCapabilities,
  5679. SystemBatteryState,
  5680. SystemPowerStateHandler,
  5681. ProcessorStateHandler,
  5682. SystemPowerPolicyCurrent,
  5683. AdministratorPowerPolicy,
  5684. SystemReserveHiberFile,
  5685. ProcessorInformation,
  5686. SystemPowerInformation,
  5687. ProcessorStateHandler2,
  5688. LastWakeTime,
  5689. LastSleepTime,
  5690. SystemExecutionState,
  5691. SystemPowerStateNotifyHandler,
  5692. ProcessorPowerPolicyAc,
  5693. ProcessorPowerPolicyDc,
  5694. VerifyProcessorPowerPolicyAc,
  5695. VerifyProcessorPowerPolicyDc,
  5696. ProcessorPowerPolicyCurrent,
  5697. SystemPowerStateLogging,
  5698. SystemPowerLoggingEntry,
  5699. SetPowerSettingValue,
  5700. NotifyUserPowerSetting,
  5701. PowerInformationLevelUnused0,
  5702. SystemMonitorHiberBootPowerOff,
  5703. SystemVideoState,
  5704. TraceApplicationPowerMessage,
  5705. TraceApplicationPowerMessageEnd,
  5706. ProcessorPerfStates,
  5707. ProcessorIdleStates,
  5708. ProcessorCap,
  5709. SystemWakeSource,
  5710. SystemHiberFileInformation,
  5711. TraceServicePowerMessage,
  5712. ProcessorLoad,
  5713. PowerShutdownNotification,
  5714. MonitorCapabilities,
  5715. SessionPowerInit,
  5716. SessionDisplayState,
  5717. PowerRequestCreate,
  5718. PowerRequestAction,
  5719. GetPowerRequestList,
  5720. ProcessorInformationEx,
  5721. NotifyUserModeLegacyPowerEvent,
  5722. GroupPark,
  5723. ProcessorIdleDomains,
  5724. WakeTimerList,
  5725. SystemHiberFileSize,
  5726. ProcessorIdleStatesHv,
  5727. ProcessorPerfStatesHv,
  5728. ProcessorPerfCapHv,
  5729. ProcessorSetIdle,
  5730. LogicalProcessorIdling,
  5731. UserPresence,
  5732. PowerSettingNotificationName,
  5733. GetPowerSettingValue,
  5734. IdleResiliency,
  5735. SessionRITState,
  5736. SessionConnectNotification,
  5737. SessionPowerCleanup,
  5738. SessionLockState,
  5739. SystemHiberbootState,
  5740. PlatformInformation,
  5741. PdcInvocation,
  5742. MonitorInvocation,
  5743. FirmwareTableInformationRegistered,
  5744. SetShutdownSelectedTime,
  5745. SuspendResumeInvocation,
  5746. PlmPowerRequestCreate,
  5747. ScreenOff,
  5748. CsDeviceNotification,
  5749. PlatformRole,
  5750. LastResumePerformance,
  5751. DisplayBurst,
  5752. ExitLatencySamplingPercentage,
  5753. ApplyLowPowerScenarioSettings,
  5754. PowerInformationLevelMaximum
  5755. } POWER_INFORMATION_LEVEL;
  5756. typedef enum {
  5757. UserNotPresent = 0,
  5758. UserPresent = 1,
  5759. UserUnknown = 0xff
  5760. } POWER_USER_PRESENCE_TYPE,*PPOWER_USER_PRESENCE_TYPE;
  5761. typedef struct _POWER_USER_PRESENCE {
  5762. POWER_USER_PRESENCE_TYPE UserPresence;
  5763. } POWER_USER_PRESENCE,*PPOWER_USER_PRESENCE;
  5764. typedef struct _POWER_SESSION_CONNECT {
  5765. BOOLEAN Connected;
  5766. BOOLEAN Console;
  5767. } POWER_SESSION_CONNECT,*PPOWER_SESSION_CONNECT;
  5768. typedef struct _POWER_SESSION_TIMEOUTS {
  5769. DWORD InputTimeout;
  5770. DWORD DisplayTimeout;
  5771. } POWER_SESSION_TIMEOUTS,*PPOWER_SESSION_TIMEOUTS;
  5772. typedef struct _POWER_SESSION_RIT_STATE {
  5773. BOOLEAN Active;
  5774. DWORD LastInputTime;
  5775. } POWER_SESSION_RIT_STATE,*PPOWER_SESSION_RIT_STATE;
  5776. typedef struct _POWER_SESSION_WINLOGON {
  5777. DWORD SessionId;
  5778. BOOLEAN Console;
  5779. BOOLEAN Locked;
  5780. } POWER_SESSION_WINLOGON,*PPOWER_SESSION_WINLOGON;
  5781. typedef struct _POWER_IDLE_RESILIENCY {
  5782. DWORD CoalescingTimeout;
  5783. DWORD IdleResiliencyPeriod;
  5784. } POWER_IDLE_RESILIENCY,*PPOWER_IDLE_RESILIENCY;
  5785. typedef enum {
  5786. MonitorRequestReasonUnknown,
  5787. MonitorRequestReasonPowerButton,
  5788. MonitorRequestReasonRemoteConnection,
  5789. MonitorRequestReasonScMonitorpower,
  5790. MonitorRequestReasonUserInput,
  5791. MonitorRequestReasonAcDcDisplayBurst,
  5792. MonitorRequestReasonUserDisplayBurst,
  5793. MonitorRequestReasonPoSetSystemState,
  5794. MonitorRequestReasonSetThreadExecutionState,
  5795. MonitorRequestReasonFullWake,
  5796. MonitorRequestReasonSessionUnlock,
  5797. MonitorRequestReasonScreenOffRequest,
  5798. MonitorRequestReasonIdleTimeout,
  5799. MonitorRequestReasonPolicyChange,
  5800. MonitorRequestReasonMax
  5801. } POWER_MONITOR_REQUEST_REASON;
  5802. typedef struct _POWER_MONITOR_INVOCATION {
  5803. BOOLEAN On;
  5804. BOOLEAN Console;
  5805. POWER_MONITOR_REQUEST_REASON RequestReason;
  5806. } POWER_MONITOR_INVOCATION,*PPOWER_MONITOR_INVOCATION;
  5807. typedef struct _RESUME_PERFORMANCE {
  5808. DWORD PostTimeMs;
  5809. ULONGLONG TotalResumeTimeMs;
  5810. ULONGLONG ResumeCompleteTimestamp;
  5811. } RESUME_PERFORMANCE,*PRESUME_PERFORMANCE;
  5812. typedef enum {
  5813. PoAc,
  5814. PoDc,
  5815. PoHot,
  5816. PoConditionMaximum
  5817. } SYSTEM_POWER_CONDITION;
  5818. typedef struct {
  5819. DWORD Version;
  5820. GUID Guid;
  5821. SYSTEM_POWER_CONDITION PowerCondition;
  5822. DWORD DataLength;
  5823. BYTE Data[ANYSIZE_ARRAY];
  5824. } SET_POWER_SETTING_VALUE,*PSET_POWER_SETTING_VALUE;
  5825. #define POWER_SETTING_VALUE_VERSION (0x1)
  5826. typedef struct {
  5827. GUID Guid;
  5828. } NOTIFY_USER_POWER_SETTING,*PNOTIFY_USER_POWER_SETTING;
  5829. typedef struct _APPLICATIONLAUNCH_SETTING_VALUE {
  5830. LARGE_INTEGER ActivationTime;
  5831. DWORD Flags;
  5832. DWORD ButtonInstanceID;
  5833. } APPLICATIONLAUNCH_SETTING_VALUE,*PAPPLICATIONLAUNCH_SETTING_VALUE;
  5834. typedef enum _POWER_PLATFORM_ROLE {
  5835. PlatformRoleUnspecified = 0,
  5836. PlatformRoleDesktop,
  5837. PlatformRoleMobile,
  5838. PlatformRoleWorkstation,
  5839. PlatformRoleEnterpriseServer,
  5840. PlatformRoleSOHOServer,
  5841. PlatformRoleAppliancePC,
  5842. PlatformRolePerformanceServer,
  5843. PlatformRoleSlate,
  5844. PlatformRoleMaximum
  5845. } POWER_PLATFORM_ROLE,*PPOWER_PLATFORM_ROLE;
  5846. typedef struct _POWER_PLATFORM_INFORMATION {
  5847. BOOLEAN AoAc;
  5848. } POWER_PLATFORM_INFORMATION,*PPOWER_PLATFORM_INFORMATION;
  5849. #define POWER_PLATFORM_ROLE_V1 (0x00000001)
  5850. #define POWER_PLATFORM_ROLE_V1_MAX (PlatformRolePerformanceServer + 1)
  5851. #define POWER_PLATFORM_ROLE_V2 (0x00000002)
  5852. #define POWER_PLATFORM_ROLE_V2_MAX (PlatformRoleSlate + 1)
  5853. #if _WIN32_WINNT >= 0x0602
  5854. #define POWER_PLATFORM_ROLE_VERSION POWER_PLATFORM_ROLE_V2
  5855. #define POWER_PLATFORM_ROLE_VERSION_MAX POWER_PLATFORM_ROLE_V2_MAX
  5856. #else
  5857. #define POWER_PLATFORM_ROLE_VERSION POWER_PLATFORM_ROLE_V1
  5858. #define POWER_PLATFORM_ROLE_VERSION_MAX POWER_PLATFORM_ROLE_V1_MAX
  5859. #endif
  5860. typedef struct {
  5861. DWORD Granularity;
  5862. DWORD Capacity;
  5863. } BATTERY_REPORTING_SCALE,*PBATTERY_REPORTING_SCALE;
  5864. typedef struct {
  5865. DWORD Frequency;
  5866. DWORD Flags;
  5867. DWORD PercentFrequency;
  5868. } PPM_WMI_LEGACY_PERFSTATE,*PPPM_WMI_LEGACY_PERFSTATE;
  5869. typedef struct {
  5870. DWORD Latency;
  5871. DWORD Power;
  5872. DWORD TimeCheck;
  5873. BYTE PromotePercent;
  5874. BYTE DemotePercent;
  5875. BYTE StateType;
  5876. BYTE Reserved;
  5877. DWORD StateFlags;
  5878. DWORD Context;
  5879. DWORD IdleHandler;
  5880. DWORD Reserved1;
  5881. } PPM_WMI_IDLE_STATE,*PPPM_WMI_IDLE_STATE;
  5882. typedef struct {
  5883. DWORD Type;
  5884. DWORD Count;
  5885. DWORD TargetState;
  5886. DWORD OldState;
  5887. DWORD64 TargetProcessors;
  5888. PPM_WMI_IDLE_STATE State[ANYSIZE_ARRAY];
  5889. } PPM_WMI_IDLE_STATES,*PPPM_WMI_IDLE_STATES;
  5890. typedef struct {
  5891. DWORD Type;
  5892. DWORD Count;
  5893. DWORD TargetState;
  5894. DWORD OldState;
  5895. PVOID TargetProcessors;
  5896. PPM_WMI_IDLE_STATE State[ANYSIZE_ARRAY];
  5897. } PPM_WMI_IDLE_STATES_EX,*PPPM_WMI_IDLE_STATES_EX;
  5898. typedef struct {
  5899. DWORD Frequency;
  5900. DWORD Power;
  5901. BYTE PercentFrequency;
  5902. BYTE IncreaseLevel;
  5903. BYTE DecreaseLevel;
  5904. BYTE Type;
  5905. DWORD IncreaseTime;
  5906. DWORD DecreaseTime;
  5907. DWORD64 Control;
  5908. DWORD64 Status;
  5909. DWORD HitCount;
  5910. DWORD Reserved1;
  5911. DWORD64 Reserved2;
  5912. DWORD64 Reserved3;
  5913. } PPM_WMI_PERF_STATE,*PPPM_WMI_PERF_STATE;
  5914. typedef struct {
  5915. DWORD Count;
  5916. DWORD MaxFrequency;
  5917. DWORD CurrentState;
  5918. DWORD MaxPerfState;
  5919. DWORD MinPerfState;
  5920. DWORD LowestPerfState;
  5921. DWORD ThermalConstraint;
  5922. BYTE BusyAdjThreshold;
  5923. BYTE PolicyType;
  5924. BYTE Type;
  5925. BYTE Reserved;
  5926. DWORD TimerInterval;
  5927. DWORD64 TargetProcessors;
  5928. DWORD PStateHandler;
  5929. DWORD PStateContext;
  5930. DWORD TStateHandler;
  5931. DWORD TStateContext;
  5932. DWORD FeedbackHandler;
  5933. DWORD Reserved1;
  5934. DWORD64 Reserved2;
  5935. PPM_WMI_PERF_STATE State[ANYSIZE_ARRAY];
  5936. } PPM_WMI_PERF_STATES,*PPPM_WMI_PERF_STATES;
  5937. typedef struct {
  5938. DWORD Count;
  5939. DWORD MaxFrequency;
  5940. DWORD CurrentState;
  5941. DWORD MaxPerfState;
  5942. DWORD MinPerfState;
  5943. DWORD LowestPerfState;
  5944. DWORD ThermalConstraint;
  5945. BYTE BusyAdjThreshold;
  5946. BYTE PolicyType;
  5947. BYTE Type;
  5948. BYTE Reserved;
  5949. DWORD TimerInterval;
  5950. PVOID TargetProcessors;
  5951. DWORD PStateHandler;
  5952. DWORD PStateContext;
  5953. DWORD TStateHandler;
  5954. DWORD TStateContext;
  5955. DWORD FeedbackHandler;
  5956. DWORD Reserved1;
  5957. DWORD64 Reserved2;
  5958. PPM_WMI_PERF_STATE State[ANYSIZE_ARRAY];
  5959. } PPM_WMI_PERF_STATES_EX,*PPPM_WMI_PERF_STATES_EX;
  5960. #define PROC_IDLE_BUCKET_COUNT 6
  5961. #define PROC_IDLE_BUCKET_COUNT_EX 16
  5962. typedef struct {
  5963. DWORD IdleTransitions;
  5964. DWORD FailedTransitions;
  5965. DWORD InvalidBucketIndex;
  5966. DWORD64 TotalTime;
  5967. DWORD IdleTimeBuckets[PROC_IDLE_BUCKET_COUNT];
  5968. } PPM_IDLE_STATE_ACCOUNTING,*PPPM_IDLE_STATE_ACCOUNTING;
  5969. typedef struct {
  5970. DWORD StateCount;
  5971. DWORD TotalTransitions;
  5972. DWORD ResetCount;
  5973. DWORD64 StartTime;
  5974. PPM_IDLE_STATE_ACCOUNTING State[ANYSIZE_ARRAY];
  5975. } PPM_IDLE_ACCOUNTING,*PPPM_IDLE_ACCOUNTING;
  5976. typedef struct {
  5977. DWORD64 TotalTimeUs;
  5978. DWORD MinTimeUs;
  5979. DWORD MaxTimeUs;
  5980. DWORD Count;
  5981. } PPM_IDLE_STATE_BUCKET_EX,*PPPM_IDLE_STATE_BUCKET_EX;
  5982. typedef struct {
  5983. DWORD64 TotalTime;
  5984. DWORD IdleTransitions;
  5985. DWORD FailedTransitions;
  5986. DWORD InvalidBucketIndex;
  5987. DWORD MinTimeUs;
  5988. DWORD MaxTimeUs;
  5989. DWORD CancelledTransitions;
  5990. PPM_IDLE_STATE_BUCKET_EX IdleTimeBuckets[PROC_IDLE_BUCKET_COUNT_EX];
  5991. } PPM_IDLE_STATE_ACCOUNTING_EX,*PPPM_IDLE_STATE_ACCOUNTING_EX;
  5992. typedef struct {
  5993. DWORD StateCount;
  5994. DWORD TotalTransitions;
  5995. DWORD ResetCount;
  5996. DWORD AbortCount;
  5997. DWORD64 StartTime;
  5998. PPM_IDLE_STATE_ACCOUNTING_EX State[ANYSIZE_ARRAY];
  5999. } PPM_IDLE_ACCOUNTING_EX,*PPPM_IDLE_ACCOUNTING_EX;
  6000. #define ACPI_PPM_SOFTWARE_ALL 0xfc
  6001. #define ACPI_PPM_SOFTWARE_ANY 0xfd
  6002. #define ACPI_PPM_HARDWARE_ALL 0xfe
  6003. #define MS_PPM_SOFTWARE_ALL 0x1
  6004. #define PPM_FIRMWARE_ACPI1C2 0x1
  6005. #define PPM_FIRMWARE_ACPI1C3 0x2
  6006. #define PPM_FIRMWARE_ACPI1TSTATES 0x4
  6007. #define PPM_FIRMWARE_CST 0x8
  6008. #define PPM_FIRMWARE_CSD 0x10
  6009. #define PPM_FIRMWARE_PCT 0x20
  6010. #define PPM_FIRMWARE_PSS 0x40
  6011. #define PPM_FIRMWARE_XPSS 0x80
  6012. #define PPM_FIRMWARE_PPC 0x100
  6013. #define PPM_FIRMWARE_PSD 0x200
  6014. #define PPM_FIRMWARE_PTC 0x400
  6015. #define PPM_FIRMWARE_TSS 0x800
  6016. #define PPM_FIRMWARE_TPC 0x1000
  6017. #define PPM_FIRMWARE_TSD 0x2000
  6018. #define PPM_FIRMWARE_PCCH 0x4000
  6019. #define PPM_FIRMWARE_PCCP 0x8000
  6020. #define PPM_FIRMWARE_OSC 0x10000
  6021. #define PPM_FIRMWARE_PDC 0x20000
  6022. #define PPM_FIRMWARE_CPC 0x40000
  6023. #define PPM_PERFORMANCE_IMPLEMENTATION_NONE 0
  6024. #define PPM_PERFORMANCE_IMPLEMENTATION_PSTATES 1
  6025. #define PPM_PERFORMANCE_IMPLEMENTATION_PCCV1 2
  6026. #define PPM_PERFORMANCE_IMPLEMENTATION_CPPC 3
  6027. #define PPM_PERFORMANCE_IMPLEMENTATION_PEP 4
  6028. #define PPM_IDLE_IMPLEMENTATION_NONE 0x0
  6029. #define PPM_IDLE_IMPLEMENTATION_CSTATES 0x1
  6030. #define PPM_IDLE_IMPLEMENTATION_PEP 0x2
  6031. typedef struct {
  6032. DWORD State;
  6033. DWORD Status;
  6034. DWORD Latency;
  6035. DWORD Speed;
  6036. DWORD Processor;
  6037. } PPM_PERFSTATE_EVENT,*PPPM_PERFSTATE_EVENT;
  6038. typedef struct {
  6039. DWORD State;
  6040. DWORD Latency;
  6041. DWORD Speed;
  6042. DWORD64 Processors;
  6043. } PPM_PERFSTATE_DOMAIN_EVENT,*PPPM_PERFSTATE_DOMAIN_EVENT;
  6044. typedef struct {
  6045. DWORD NewState;
  6046. DWORD OldState;
  6047. DWORD64 Processors;
  6048. } PPM_IDLESTATE_EVENT,*PPPM_IDLESTATE_EVENT;
  6049. typedef struct {
  6050. DWORD ThermalConstraint;
  6051. DWORD64 Processors;
  6052. } PPM_THERMALCHANGE_EVENT,*PPPM_THERMALCHANGE_EVENT;
  6053. typedef struct {
  6054. BYTE Mode;
  6055. DWORD64 Processors;
  6056. } PPM_THERMAL_POLICY_EVENT,*PPPM_THERMAL_POLICY_EVENT;
  6057. DEFINE_GUID (PPM_PERFSTATE_CHANGE_GUID, 0xa5b32ddd, 0x7f39, 0x4abc, 0xb8, 0x92, 0x90, 0xe, 0x43, 0xb5, 0x9e, 0xbb);
  6058. DEFINE_GUID (PPM_PERFSTATE_DOMAIN_CHANGE_GUID, 0x995e6b7f, 0xd653, 0x497a, 0xb9, 0x78, 0x36, 0xa3, 0xc, 0x29, 0xbf, 0x1);
  6059. DEFINE_GUID (PPM_IDLESTATE_CHANGE_GUID, 0x4838fe4f, 0xf71c, 0x4e51, 0x9e, 0xcc, 0x84, 0x30, 0xa7, 0xac, 0x4c, 0x6c);
  6060. DEFINE_GUID (PPM_PERFSTATES_DATA_GUID, 0x5708cc20, 0x7d40, 0x4bf4, 0xb4, 0xaa, 0x2b, 0x01, 0x33, 0x8d, 0x01, 0x26);
  6061. DEFINE_GUID (PPM_IDLESTATES_DATA_GUID, 0xba138e10, 0xe250, 0x4ad7, 0x86, 0x16, 0xcf, 0x1a, 0x7a, 0xd4, 0x10, 0xe7);
  6062. DEFINE_GUID (PPM_IDLE_ACCOUNTING_GUID, 0xe2a26f78, 0xae07, 0x4ee0, 0xa3, 0x0f, 0xce, 0x54, 0xf5, 0x5a, 0x94, 0xcd);
  6063. DEFINE_GUID (PPM_IDLE_ACCOUNTING_EX_GUID, 0xd67abd39, 0x81f8, 0x4a5e, 0x81, 0x52, 0x72, 0xe3, 0x1e, 0xc9, 0x12, 0xee);
  6064. DEFINE_GUID (PPM_THERMALCONSTRAINT_GUID, 0xa852c2c8, 0x1a4c, 0x423b, 0x8c, 0x2c, 0xf3, 0x0d, 0x82, 0x93, 0x1a, 0x88);
  6065. DEFINE_GUID (PPM_PERFMON_PERFSTATE_GUID, 0x7fd18652, 0xcfe, 0x40d2, 0xb0, 0xa1, 0xb, 0x6, 0x6a, 0x87, 0x75, 0x9e);
  6066. DEFINE_GUID (PPM_THERMAL_POLICY_CHANGE_GUID, 0x48f377b8, 0x6880, 0x4c7b, 0x8b, 0xdc, 0x38, 0x1, 0x76, 0xc6, 0x65, 0x4d);
  6067. typedef struct {
  6068. POWER_ACTION Action;
  6069. DWORD Flags;
  6070. DWORD EventCode;
  6071. } POWER_ACTION_POLICY,*PPOWER_ACTION_POLICY;
  6072. #define POWER_ACTION_QUERY_ALLOWED 0x00000001
  6073. #define POWER_ACTION_UI_ALLOWED 0x00000002
  6074. #define POWER_ACTION_OVERRIDE_APPS 0x00000004
  6075. #define POWER_ACTION_HIBERBOOT 0x00000008
  6076. #define POWER_ACTION_PSEUDO_TRANSITION 0x08000000
  6077. #define POWER_ACTION_LIGHTEST_FIRST 0x10000000
  6078. #define POWER_ACTION_LOCK_CONSOLE 0x20000000
  6079. #define POWER_ACTION_DISABLE_WAKES 0x40000000
  6080. #define POWER_ACTION_CRITICAL 0x80000000
  6081. #define POWER_LEVEL_USER_NOTIFY_TEXT 0x00000001
  6082. #define POWER_LEVEL_USER_NOTIFY_SOUND 0x00000002
  6083. #define POWER_LEVEL_USER_NOTIFY_EXEC 0x00000004
  6084. #define POWER_USER_NOTIFY_BUTTON 0x00000008
  6085. #define POWER_USER_NOTIFY_SHUTDOWN 0x00000010
  6086. #define POWER_USER_NOTIFY_FORCED_SHUTDOWN 0x00000020
  6087. #define POWER_FORCE_TRIGGER_RESET 0x80000000
  6088. #define BATTERY_DISCHARGE_FLAGS_EVENTCODE_MASK 0x00000007
  6089. #define BATTERY_DISCHARGE_FLAGS_ENABLE 0x80000000
  6090. #define DISCHARGE_POLICY_CRITICAL 0
  6091. #define DISCHARGE_POLICY_LOW 1
  6092. #define NUM_DISCHARGE_POLICIES 4
  6093. #define PROCESSOR_IDLESTATE_POLICY_COUNT 0x3
  6094. typedef struct {
  6095. DWORD TimeCheck;
  6096. BYTE DemotePercent;
  6097. BYTE PromotePercent;
  6098. BYTE Spare[2];
  6099. } PROCESSOR_IDLESTATE_INFO,*PPROCESSOR_IDLESTATE_INFO;
  6100. typedef struct {
  6101. BOOLEAN Enable;
  6102. BYTE Spare[3];
  6103. DWORD BatteryLevel;
  6104. POWER_ACTION_POLICY PowerPolicy;
  6105. SYSTEM_POWER_STATE MinSystemState;
  6106. } SYSTEM_POWER_LEVEL,*PSYSTEM_POWER_LEVEL;
  6107. typedef struct _SYSTEM_POWER_POLICY {
  6108. DWORD Revision;
  6109. POWER_ACTION_POLICY PowerButton;
  6110. POWER_ACTION_POLICY SleepButton;
  6111. POWER_ACTION_POLICY LidClose;
  6112. SYSTEM_POWER_STATE LidOpenWake;
  6113. DWORD Reserved;
  6114. POWER_ACTION_POLICY Idle;
  6115. DWORD IdleTimeout;
  6116. BYTE IdleSensitivity;
  6117. BYTE DynamicThrottle;
  6118. BYTE Spare2[2];
  6119. SYSTEM_POWER_STATE MinSleep;
  6120. SYSTEM_POWER_STATE MaxSleep;
  6121. SYSTEM_POWER_STATE ReducedLatencySleep;
  6122. DWORD WinLogonFlags;
  6123. DWORD Spare3;
  6124. DWORD DozeS4Timeout;
  6125. DWORD BroadcastCapacityResolution;
  6126. SYSTEM_POWER_LEVEL DischargePolicy[NUM_DISCHARGE_POLICIES];
  6127. DWORD VideoTimeout;
  6128. BOOLEAN VideoDimDisplay;
  6129. DWORD VideoReserved[3];
  6130. DWORD SpindownTimeout;
  6131. BOOLEAN OptimizeForPower;
  6132. BYTE FanThrottleTolerance;
  6133. BYTE ForcedThrottle;
  6134. BYTE MinThrottle;
  6135. POWER_ACTION_POLICY OverThrottled;
  6136. } SYSTEM_POWER_POLICY,*PSYSTEM_POWER_POLICY;
  6137. #define PO_THROTTLE_NONE 0
  6138. #define PO_THROTTLE_CONSTANT 1
  6139. #define PO_THROTTLE_DEGRADE 2
  6140. #define PO_THROTTLE_ADAPTIVE 3
  6141. #define PO_THROTTLE_MAXIMUM 4
  6142. typedef struct {
  6143. WORD Revision;
  6144. union {
  6145. WORD AsWORD;
  6146. __C89_NAMELESS struct {
  6147. WORD AllowScaling : 1;
  6148. WORD Disabled : 1;
  6149. WORD Reserved : 14;
  6150. } DUMMYSTRUCTNAME;
  6151. } Flags;
  6152. DWORD PolicyCount;
  6153. PROCESSOR_IDLESTATE_INFO Policy[PROCESSOR_IDLESTATE_POLICY_COUNT];
  6154. } PROCESSOR_IDLESTATE_POLICY,*PPROCESSOR_IDLESTATE_POLICY;
  6155. typedef struct _PROCESSOR_POWER_POLICY_INFO {
  6156. DWORD TimeCheck;
  6157. DWORD DemoteLimit;
  6158. DWORD PromoteLimit;
  6159. BYTE DemotePercent;
  6160. BYTE PromotePercent;
  6161. BYTE Spare[2];
  6162. DWORD AllowDemotion:1;
  6163. DWORD AllowPromotion:1;
  6164. DWORD Reserved:30;
  6165. } PROCESSOR_POWER_POLICY_INFO,*PPROCESSOR_POWER_POLICY_INFO;
  6166. typedef struct _PROCESSOR_POWER_POLICY {
  6167. DWORD Revision;
  6168. BYTE DynamicThrottle;
  6169. BYTE Spare[3];
  6170. DWORD DisableCStates:1;
  6171. DWORD Reserved:31;
  6172. DWORD PolicyCount;
  6173. PROCESSOR_POWER_POLICY_INFO Policy[3];
  6174. } PROCESSOR_POWER_POLICY,*PPROCESSOR_POWER_POLICY;
  6175. typedef struct {
  6176. DWORD Revision;
  6177. BYTE MaxThrottle;
  6178. BYTE MinThrottle;
  6179. BYTE BusyAdjThreshold;
  6180. __C89_NAMELESS union {
  6181. BYTE Spare;
  6182. union {
  6183. BYTE AsBYTE;
  6184. __C89_NAMELESS struct {
  6185. BYTE NoDomainAccounting : 1;
  6186. BYTE IncreasePolicy: 2;
  6187. BYTE DecreasePolicy: 2;
  6188. BYTE Reserved : 3;
  6189. } DUMMYSTRUCTNAME;
  6190. } Flags;
  6191. } DUMMYUNIONNAME;
  6192. DWORD TimeCheck;
  6193. DWORD IncreaseTime;
  6194. DWORD DecreaseTime;
  6195. DWORD IncreasePercent;
  6196. DWORD DecreasePercent;
  6197. } PROCESSOR_PERFSTATE_POLICY,*PPROCESSOR_PERFSTATE_POLICY;
  6198. typedef struct _ADMINISTRATOR_POWER_POLICY {
  6199. SYSTEM_POWER_STATE MinSleep;
  6200. SYSTEM_POWER_STATE MaxSleep;
  6201. DWORD MinVideoTimeout;
  6202. DWORD MaxVideoTimeout;
  6203. DWORD MinSpindownTimeout;
  6204. DWORD MaxSpindownTimeout;
  6205. } ADMINISTRATOR_POWER_POLICY,*PADMINISTRATOR_POWER_POLICY;
  6206. typedef struct {
  6207. BOOLEAN PowerButtonPresent;
  6208. BOOLEAN SleepButtonPresent;
  6209. BOOLEAN LidPresent;
  6210. BOOLEAN SystemS1;
  6211. BOOLEAN SystemS2;
  6212. BOOLEAN SystemS3;
  6213. BOOLEAN SystemS4;
  6214. BOOLEAN SystemS5;
  6215. BOOLEAN HiberFilePresent;
  6216. BOOLEAN FullWake;
  6217. BOOLEAN VideoDimPresent;
  6218. BOOLEAN ApmPresent;
  6219. BOOLEAN UpsPresent;
  6220. BOOLEAN ThermalControl;
  6221. BOOLEAN ProcessorThrottle;
  6222. BYTE ProcessorMinThrottle;
  6223. BYTE ProcessorMaxThrottle;
  6224. BOOLEAN FastSystemS4;
  6225. BYTE spare2[3];
  6226. BOOLEAN DiskSpinDown;
  6227. BYTE spare3[8];
  6228. BOOLEAN SystemBatteriesPresent;
  6229. BOOLEAN BatteriesAreShortTerm;
  6230. BATTERY_REPORTING_SCALE BatteryScale[3];
  6231. SYSTEM_POWER_STATE AcOnLineWake;
  6232. SYSTEM_POWER_STATE SoftLidWake;
  6233. SYSTEM_POWER_STATE RtcWake;
  6234. SYSTEM_POWER_STATE MinDeviceWakeState;
  6235. SYSTEM_POWER_STATE DefaultLowLatencyWake;
  6236. } SYSTEM_POWER_CAPABILITIES,*PSYSTEM_POWER_CAPABILITIES;
  6237. typedef struct {
  6238. BOOLEAN AcOnLine;
  6239. BOOLEAN BatteryPresent;
  6240. BOOLEAN Charging;
  6241. BOOLEAN Discharging;
  6242. BOOLEAN Spare1[4];
  6243. DWORD MaxCapacity;
  6244. DWORD RemainingCapacity;
  6245. DWORD Rate;
  6246. DWORD EstimatedTime;
  6247. DWORD DefaultAlert1;
  6248. DWORD DefaultAlert2;
  6249. } SYSTEM_BATTERY_STATE,*PSYSTEM_BATTERY_STATE;
  6250. #include "pshpack4.h"
  6251. #define IMAGE_DOS_SIGNATURE 0x5A4D
  6252. #define IMAGE_OS2_SIGNATURE 0x454E
  6253. #define IMAGE_OS2_SIGNATURE_LE 0x454C
  6254. #define IMAGE_VXD_SIGNATURE 0x454C
  6255. #define IMAGE_NT_SIGNATURE 0x00004550
  6256. #include "pshpack2.h"
  6257. typedef struct _IMAGE_DOS_HEADER {
  6258. WORD e_magic;
  6259. WORD e_cblp;
  6260. WORD e_cp;
  6261. WORD e_crlc;
  6262. WORD e_cparhdr;
  6263. WORD e_minalloc;
  6264. WORD e_maxalloc;
  6265. WORD e_ss;
  6266. WORD e_sp;
  6267. WORD e_csum;
  6268. WORD e_ip;
  6269. WORD e_cs;
  6270. WORD e_lfarlc;
  6271. WORD e_ovno;
  6272. WORD e_res[4];
  6273. WORD e_oemid;
  6274. WORD e_oeminfo;
  6275. WORD e_res2[10];
  6276. LONG e_lfanew;
  6277. } IMAGE_DOS_HEADER,*PIMAGE_DOS_HEADER;
  6278. typedef struct _IMAGE_OS2_HEADER {
  6279. WORD ne_magic;
  6280. CHAR ne_ver;
  6281. CHAR ne_rev;
  6282. WORD ne_enttab;
  6283. WORD ne_cbenttab;
  6284. LONG ne_crc;
  6285. WORD ne_flags;
  6286. WORD ne_autodata;
  6287. WORD ne_heap;
  6288. WORD ne_stack;
  6289. LONG ne_csip;
  6290. LONG ne_sssp;
  6291. WORD ne_cseg;
  6292. WORD ne_cmod;
  6293. WORD ne_cbnrestab;
  6294. WORD ne_segtab;
  6295. WORD ne_rsrctab;
  6296. WORD ne_restab;
  6297. WORD ne_modtab;
  6298. WORD ne_imptab;
  6299. LONG ne_nrestab;
  6300. WORD ne_cmovent;
  6301. WORD ne_align;
  6302. WORD ne_cres;
  6303. BYTE ne_exetyp;
  6304. BYTE ne_flagsothers;
  6305. WORD ne_pretthunks;
  6306. WORD ne_psegrefbytes;
  6307. WORD ne_swaparea;
  6308. WORD ne_expver;
  6309. } IMAGE_OS2_HEADER,*PIMAGE_OS2_HEADER;
  6310. typedef struct _IMAGE_VXD_HEADER {
  6311. WORD e32_magic;
  6312. BYTE e32_border;
  6313. BYTE e32_worder;
  6314. DWORD e32_level;
  6315. WORD e32_cpu;
  6316. WORD e32_os;
  6317. DWORD e32_ver;
  6318. DWORD e32_mflags;
  6319. DWORD e32_mpages;
  6320. DWORD e32_startobj;
  6321. DWORD e32_eip;
  6322. DWORD e32_stackobj;
  6323. DWORD e32_esp;
  6324. DWORD e32_pagesize;
  6325. DWORD e32_lastpagesize;
  6326. DWORD e32_fixupsize;
  6327. DWORD e32_fixupsum;
  6328. DWORD e32_ldrsize;
  6329. DWORD e32_ldrsum;
  6330. DWORD e32_objtab;
  6331. DWORD e32_objcnt;
  6332. DWORD e32_objmap;
  6333. DWORD e32_itermap;
  6334. DWORD e32_rsrctab;
  6335. DWORD e32_rsrccnt;
  6336. DWORD e32_restab;
  6337. DWORD e32_enttab;
  6338. DWORD e32_dirtab;
  6339. DWORD e32_dircnt;
  6340. DWORD e32_fpagetab;
  6341. DWORD e32_frectab;
  6342. DWORD e32_impmod;
  6343. DWORD e32_impmodcnt;
  6344. DWORD e32_impproc;
  6345. DWORD e32_pagesum;
  6346. DWORD e32_datapage;
  6347. DWORD e32_preload;
  6348. DWORD e32_nrestab;
  6349. DWORD e32_cbnrestab;
  6350. DWORD e32_nressum;
  6351. DWORD e32_autodata;
  6352. DWORD e32_debuginfo;
  6353. DWORD e32_debuglen;
  6354. DWORD e32_instpreload;
  6355. DWORD e32_instdemand;
  6356. DWORD e32_heapsize;
  6357. BYTE e32_res3[12];
  6358. DWORD e32_winresoff;
  6359. DWORD e32_winreslen;
  6360. WORD e32_devid;
  6361. WORD e32_ddkver;
  6362. } IMAGE_VXD_HEADER,*PIMAGE_VXD_HEADER;
  6363. #include "poppack.h"
  6364. typedef struct _IMAGE_FILE_HEADER {
  6365. WORD Machine;
  6366. WORD NumberOfSections;
  6367. DWORD TimeDateStamp;
  6368. DWORD PointerToSymbolTable;
  6369. DWORD NumberOfSymbols;
  6370. WORD SizeOfOptionalHeader;
  6371. WORD Characteristics;
  6372. } IMAGE_FILE_HEADER,*PIMAGE_FILE_HEADER;
  6373. #define IMAGE_SIZEOF_FILE_HEADER 20
  6374. #define IMAGE_FILE_RELOCS_STRIPPED 0x0001
  6375. #define IMAGE_FILE_EXECUTABLE_IMAGE 0x0002
  6376. #define IMAGE_FILE_LINE_NUMS_STRIPPED 0x0004
  6377. #define IMAGE_FILE_LOCAL_SYMS_STRIPPED 0x0008
  6378. #define IMAGE_FILE_AGGRESIVE_WS_TRIM 0x0010
  6379. #define IMAGE_FILE_LARGE_ADDRESS_AWARE 0x0020
  6380. #define IMAGE_FILE_BYTES_REVERSED_LO 0x0080
  6381. #define IMAGE_FILE_32BIT_MACHINE 0x0100
  6382. #define IMAGE_FILE_DEBUG_STRIPPED 0x0200
  6383. #define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 0x0400
  6384. #define IMAGE_FILE_NET_RUN_FROM_SWAP 0x0800
  6385. #define IMAGE_FILE_SYSTEM 0x1000
  6386. #define IMAGE_FILE_DLL 0x2000
  6387. #define IMAGE_FILE_UP_SYSTEM_ONLY 0x4000
  6388. #define IMAGE_FILE_BYTES_REVERSED_HI 0x8000
  6389. #define IMAGE_FILE_MACHINE_UNKNOWN 0
  6390. #define IMAGE_FILE_MACHINE_I386 0x014c
  6391. #define IMAGE_FILE_MACHINE_R3000 0x0162
  6392. #define IMAGE_FILE_MACHINE_R4000 0x0166
  6393. #define IMAGE_FILE_MACHINE_R10000 0x0168
  6394. #define IMAGE_FILE_MACHINE_WCEMIPSV2 0x0169
  6395. #define IMAGE_FILE_MACHINE_ALPHA 0x0184
  6396. #define IMAGE_FILE_MACHINE_SH3 0x01a2
  6397. #define IMAGE_FILE_MACHINE_SH3DSP 0x01a3
  6398. #define IMAGE_FILE_MACHINE_SH3E 0x01a4
  6399. #define IMAGE_FILE_MACHINE_SH4 0x01a6
  6400. #define IMAGE_FILE_MACHINE_SH5 0x01a8
  6401. #define IMAGE_FILE_MACHINE_ARM 0x01c0
  6402. #define IMAGE_FILE_MACHINE_ARMV7 0x01c4
  6403. #define IMAGE_FILE_MACHINE_ARMNT 0x01c4
  6404. #define IMAGE_FILE_MACHINE_ARM64 0xaa64
  6405. #define IMAGE_FILE_MACHINE_THUMB 0x01c2
  6406. #define IMAGE_FILE_MACHINE_AM33 0x01d3
  6407. #define IMAGE_FILE_MACHINE_POWERPC 0x01F0
  6408. #define IMAGE_FILE_MACHINE_POWERPCFP 0x01f1
  6409. #define IMAGE_FILE_MACHINE_IA64 0x0200
  6410. #define IMAGE_FILE_MACHINE_MIPS16 0x0266
  6411. #define IMAGE_FILE_MACHINE_ALPHA64 0x0284
  6412. #define IMAGE_FILE_MACHINE_MIPSFPU 0x0366
  6413. #define IMAGE_FILE_MACHINE_MIPSFPU16 0x0466
  6414. #define IMAGE_FILE_MACHINE_AXP64 IMAGE_FILE_MACHINE_ALPHA64
  6415. #define IMAGE_FILE_MACHINE_TRICORE 0x0520
  6416. #define IMAGE_FILE_MACHINE_CEF 0x0CEF
  6417. #define IMAGE_FILE_MACHINE_EBC 0x0EBC
  6418. #define IMAGE_FILE_MACHINE_AMD64 0x8664
  6419. #define IMAGE_FILE_MACHINE_M32R 0x9041
  6420. #define IMAGE_FILE_MACHINE_CEE 0xc0ee
  6421. typedef struct _IMAGE_DATA_DIRECTORY {
  6422. DWORD VirtualAddress;
  6423. DWORD Size;
  6424. } IMAGE_DATA_DIRECTORY,*PIMAGE_DATA_DIRECTORY;
  6425. #define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16
  6426. typedef struct _IMAGE_OPTIONAL_HEADER {
  6427. WORD Magic;
  6428. BYTE MajorLinkerVersion;
  6429. BYTE MinorLinkerVersion;
  6430. DWORD SizeOfCode;
  6431. DWORD SizeOfInitializedData;
  6432. DWORD SizeOfUninitializedData;
  6433. DWORD AddressOfEntryPoint;
  6434. DWORD BaseOfCode;
  6435. DWORD BaseOfData;
  6436. DWORD ImageBase;
  6437. DWORD SectionAlignment;
  6438. DWORD FileAlignment;
  6439. WORD MajorOperatingSystemVersion;
  6440. WORD MinorOperatingSystemVersion;
  6441. WORD MajorImageVersion;
  6442. WORD MinorImageVersion;
  6443. WORD MajorSubsystemVersion;
  6444. WORD MinorSubsystemVersion;
  6445. DWORD Win32VersionValue;
  6446. DWORD SizeOfImage;
  6447. DWORD SizeOfHeaders;
  6448. DWORD CheckSum;
  6449. WORD Subsystem;
  6450. WORD DllCharacteristics;
  6451. DWORD SizeOfStackReserve;
  6452. DWORD SizeOfStackCommit;
  6453. DWORD SizeOfHeapReserve;
  6454. DWORD SizeOfHeapCommit;
  6455. DWORD LoaderFlags;
  6456. DWORD NumberOfRvaAndSizes;
  6457. IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
  6458. } IMAGE_OPTIONAL_HEADER32,*PIMAGE_OPTIONAL_HEADER32;
  6459. typedef struct _IMAGE_ROM_OPTIONAL_HEADER {
  6460. WORD Magic;
  6461. BYTE MajorLinkerVersion;
  6462. BYTE MinorLinkerVersion;
  6463. DWORD SizeOfCode;
  6464. DWORD SizeOfInitializedData;
  6465. DWORD SizeOfUninitializedData;
  6466. DWORD AddressOfEntryPoint;
  6467. DWORD BaseOfCode;
  6468. DWORD BaseOfData;
  6469. DWORD BaseOfBss;
  6470. DWORD GprMask;
  6471. DWORD CprMask[4];
  6472. DWORD GpValue;
  6473. } IMAGE_ROM_OPTIONAL_HEADER,*PIMAGE_ROM_OPTIONAL_HEADER;
  6474. typedef struct _IMAGE_OPTIONAL_HEADER64 {
  6475. WORD Magic;
  6476. BYTE MajorLinkerVersion;
  6477. BYTE MinorLinkerVersion;
  6478. DWORD SizeOfCode;
  6479. DWORD SizeOfInitializedData;
  6480. DWORD SizeOfUninitializedData;
  6481. DWORD AddressOfEntryPoint;
  6482. DWORD BaseOfCode;
  6483. ULONGLONG ImageBase;
  6484. DWORD SectionAlignment;
  6485. DWORD FileAlignment;
  6486. WORD MajorOperatingSystemVersion;
  6487. WORD MinorOperatingSystemVersion;
  6488. WORD MajorImageVersion;
  6489. WORD MinorImageVersion;
  6490. WORD MajorSubsystemVersion;
  6491. WORD MinorSubsystemVersion;
  6492. DWORD Win32VersionValue;
  6493. DWORD SizeOfImage;
  6494. DWORD SizeOfHeaders;
  6495. DWORD CheckSum;
  6496. WORD Subsystem;
  6497. WORD DllCharacteristics;
  6498. ULONGLONG SizeOfStackReserve;
  6499. ULONGLONG SizeOfStackCommit;
  6500. ULONGLONG SizeOfHeapReserve;
  6501. ULONGLONG SizeOfHeapCommit;
  6502. DWORD LoaderFlags;
  6503. DWORD NumberOfRvaAndSizes;
  6504. IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
  6505. } IMAGE_OPTIONAL_HEADER64,*PIMAGE_OPTIONAL_HEADER64;
  6506. #define IMAGE_SIZEOF_ROM_OPTIONAL_HEADER 56
  6507. #define IMAGE_SIZEOF_STD_OPTIONAL_HEADER 28
  6508. #define IMAGE_SIZEOF_NT_OPTIONAL32_HEADER 224
  6509. #define IMAGE_SIZEOF_NT_OPTIONAL64_HEADER 240
  6510. #define IMAGE_NT_OPTIONAL_HDR32_MAGIC 0x10b
  6511. #define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b
  6512. #define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107
  6513. #ifdef _WIN64
  6514. typedef IMAGE_OPTIONAL_HEADER64 IMAGE_OPTIONAL_HEADER;
  6515. typedef PIMAGE_OPTIONAL_HEADER64 PIMAGE_OPTIONAL_HEADER;
  6516. #define IMAGE_SIZEOF_NT_OPTIONAL_HEADER IMAGE_SIZEOF_NT_OPTIONAL64_HEADER
  6517. #define IMAGE_NT_OPTIONAL_HDR_MAGIC IMAGE_NT_OPTIONAL_HDR64_MAGIC
  6518. #else /* _WIN64 */
  6519. typedef IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER;
  6520. typedef PIMAGE_OPTIONAL_HEADER32 PIMAGE_OPTIONAL_HEADER;
  6521. #define IMAGE_SIZEOF_NT_OPTIONAL_HEADER IMAGE_SIZEOF_NT_OPTIONAL32_HEADER
  6522. #define IMAGE_NT_OPTIONAL_HDR_MAGIC IMAGE_NT_OPTIONAL_HDR32_MAGIC
  6523. #endif /* _WIN64 */
  6524. typedef struct _IMAGE_NT_HEADERS64 {
  6525. DWORD Signature;
  6526. IMAGE_FILE_HEADER FileHeader;
  6527. IMAGE_OPTIONAL_HEADER64 OptionalHeader;
  6528. } IMAGE_NT_HEADERS64,*PIMAGE_NT_HEADERS64;
  6529. typedef struct _IMAGE_NT_HEADERS {
  6530. DWORD Signature;
  6531. IMAGE_FILE_HEADER FileHeader;
  6532. IMAGE_OPTIONAL_HEADER32 OptionalHeader;
  6533. } IMAGE_NT_HEADERS32,*PIMAGE_NT_HEADERS32;
  6534. typedef struct _IMAGE_ROM_HEADERS {
  6535. IMAGE_FILE_HEADER FileHeader;
  6536. IMAGE_ROM_OPTIONAL_HEADER OptionalHeader;
  6537. } IMAGE_ROM_HEADERS,*PIMAGE_ROM_HEADERS;
  6538. #ifdef _WIN64
  6539. typedef IMAGE_NT_HEADERS64 IMAGE_NT_HEADERS;
  6540. typedef PIMAGE_NT_HEADERS64 PIMAGE_NT_HEADERS;
  6541. #else /* _WIN64 */
  6542. typedef IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS;
  6543. typedef PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS;
  6544. #endif /* _WIN64 */
  6545. #define IMAGE_FIRST_SECTION(ntheader) ((PIMAGE_SECTION_HEADER) ((ULONG_PTR)ntheader + FIELD_OFFSET(IMAGE_NT_HEADERS,OptionalHeader) + ((PIMAGE_NT_HEADERS)(ntheader))->FileHeader.SizeOfOptionalHeader))
  6546. #define IMAGE_SUBSYSTEM_UNKNOWN 0
  6547. #define IMAGE_SUBSYSTEM_NATIVE 1
  6548. #define IMAGE_SUBSYSTEM_WINDOWS_GUI 2
  6549. #define IMAGE_SUBSYSTEM_WINDOWS_CUI 3
  6550. #define IMAGE_SUBSYSTEM_OS2_CUI 5
  6551. #define IMAGE_SUBSYSTEM_POSIX_CUI 7
  6552. #define IMAGE_SUBSYSTEM_NATIVE_WINDOWS 8
  6553. #define IMAGE_SUBSYSTEM_WINDOWS_CE_GUI 9
  6554. #define IMAGE_SUBSYSTEM_EFI_APPLICATION 10
  6555. #define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER 11
  6556. #define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER 12
  6557. #define IMAGE_SUBSYSTEM_EFI_ROM 13
  6558. #define IMAGE_SUBSYSTEM_XBOX 14
  6559. #define IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION 16
  6560. #define IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA 0x0020
  6561. #define IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE 0x0040
  6562. #define IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY 0x0080
  6563. #define IMAGE_DLLCHARACTERISTICS_NX_COMPAT 0x0100
  6564. #define IMAGE_DLLCHARACTERISTICS_NO_ISOLATION 0x0200
  6565. #define IMAGE_DLLCHARACTERISTICS_NO_SEH 0x0400
  6566. #define IMAGE_DLLCHARACTERISTICS_NO_BIND 0x0800
  6567. #define IMAGE_DLLCHARACTERISTICS_APPCONTAINER 0x1000
  6568. #define IMAGE_DLLCHARACTERISTICS_WDM_DRIVER 0x2000
  6569. #define IMAGE_DLLCHARACTERISTICS_GUARD_CF 0x4000
  6570. #define IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE 0x8000
  6571. #define IMAGE_DIRECTORY_ENTRY_EXPORT 0
  6572. #define IMAGE_DIRECTORY_ENTRY_IMPORT 1
  6573. #define IMAGE_DIRECTORY_ENTRY_RESOURCE 2
  6574. #define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3
  6575. #define IMAGE_DIRECTORY_ENTRY_SECURITY 4
  6576. #define IMAGE_DIRECTORY_ENTRY_BASERELOC 5
  6577. #define IMAGE_DIRECTORY_ENTRY_DEBUG 6
  6578. #define IMAGE_DIRECTORY_ENTRY_ARCHITECTURE 7
  6579. #define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8
  6580. #define IMAGE_DIRECTORY_ENTRY_TLS 9
  6581. #define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10
  6582. #define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 11
  6583. #define IMAGE_DIRECTORY_ENTRY_IAT 12
  6584. #define IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT 13
  6585. #define IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR 14
  6586. typedef struct ANON_OBJECT_HEADER {
  6587. WORD Sig1;
  6588. WORD Sig2;
  6589. WORD Version;
  6590. WORD Machine;
  6591. DWORD TimeDateStamp;
  6592. CLSID ClassID;
  6593. DWORD SizeOfData;
  6594. } ANON_OBJECT_HEADER;
  6595. typedef struct ANON_OBJECT_HEADER_V2 {
  6596. WORD Sig1;
  6597. WORD Sig2;
  6598. WORD Version;
  6599. WORD Machine;
  6600. DWORD TimeDateStamp;
  6601. CLSID ClassID;
  6602. DWORD SizeOfData;
  6603. DWORD Flags;
  6604. DWORD MetaDataSize;
  6605. DWORD MetaDataOffset;
  6606. } ANON_OBJECT_HEADER_V2;
  6607. typedef struct ANON_OBJECT_HEADER_BIGOBJ {
  6608. WORD Sig1;
  6609. WORD Sig2;
  6610. WORD Version;
  6611. WORD Machine;
  6612. DWORD TimeDateStamp;
  6613. CLSID ClassID;
  6614. DWORD SizeOfData;
  6615. DWORD Flags;
  6616. DWORD MetaDataSize;
  6617. DWORD MetaDataOffset;
  6618. DWORD NumberOfSections;
  6619. DWORD PointerToSymbolTable;
  6620. DWORD NumberOfSymbols;
  6621. } ANON_OBJECT_HEADER_BIGOBJ;
  6622. #define IMAGE_SIZEOF_SHORT_NAME 8
  6623. typedef struct _IMAGE_SECTION_HEADER {
  6624. BYTE Name[IMAGE_SIZEOF_SHORT_NAME];
  6625. union {
  6626. DWORD PhysicalAddress;
  6627. DWORD VirtualSize;
  6628. } Misc;
  6629. DWORD VirtualAddress;
  6630. DWORD SizeOfRawData;
  6631. DWORD PointerToRawData;
  6632. DWORD PointerToRelocations;
  6633. DWORD PointerToLinenumbers;
  6634. WORD NumberOfRelocations;
  6635. WORD NumberOfLinenumbers;
  6636. DWORD Characteristics;
  6637. } IMAGE_SECTION_HEADER,*PIMAGE_SECTION_HEADER;
  6638. #define IMAGE_SIZEOF_SECTION_HEADER 40
  6639. #define IMAGE_SCN_TYPE_NO_PAD 0x00000008
  6640. #define IMAGE_SCN_CNT_CODE 0x00000020
  6641. #define IMAGE_SCN_CNT_INITIALIZED_DATA 0x00000040
  6642. #define IMAGE_SCN_CNT_UNINITIALIZED_DATA 0x00000080
  6643. #define IMAGE_SCN_LNK_OTHER 0x00000100
  6644. #define IMAGE_SCN_LNK_INFO 0x00000200
  6645. #define IMAGE_SCN_LNK_REMOVE 0x00000800
  6646. #define IMAGE_SCN_LNK_COMDAT 0x00001000
  6647. #define IMAGE_SCN_NO_DEFER_SPEC_EXC 0x00004000
  6648. #define IMAGE_SCN_GPREL 0x00008000
  6649. #define IMAGE_SCN_MEM_FARDATA 0x00008000
  6650. #define IMAGE_SCN_MEM_PURGEABLE 0x00020000
  6651. #define IMAGE_SCN_MEM_16BIT 0x00020000
  6652. #define IMAGE_SCN_MEM_LOCKED 0x00040000
  6653. #define IMAGE_SCN_MEM_PRELOAD 0x00080000
  6654. #define IMAGE_SCN_ALIGN_1BYTES 0x00100000
  6655. #define IMAGE_SCN_ALIGN_2BYTES 0x00200000
  6656. #define IMAGE_SCN_ALIGN_4BYTES 0x00300000
  6657. #define IMAGE_SCN_ALIGN_8BYTES 0x00400000
  6658. #define IMAGE_SCN_ALIGN_16BYTES 0x00500000
  6659. #define IMAGE_SCN_ALIGN_32BYTES 0x00600000
  6660. #define IMAGE_SCN_ALIGN_64BYTES 0x00700000
  6661. #define IMAGE_SCN_ALIGN_128BYTES 0x00800000
  6662. #define IMAGE_SCN_ALIGN_256BYTES 0x00900000
  6663. #define IMAGE_SCN_ALIGN_512BYTES 0x00A00000
  6664. #define IMAGE_SCN_ALIGN_1024BYTES 0x00B00000
  6665. #define IMAGE_SCN_ALIGN_2048BYTES 0x00C00000
  6666. #define IMAGE_SCN_ALIGN_4096BYTES 0x00D00000
  6667. #define IMAGE_SCN_ALIGN_8192BYTES 0x00E00000
  6668. #define IMAGE_SCN_ALIGN_MASK 0x00F00000
  6669. #define IMAGE_SCN_LNK_NRELOC_OVFL 0x01000000
  6670. #define IMAGE_SCN_MEM_DISCARDABLE 0x02000000
  6671. #define IMAGE_SCN_MEM_NOT_CACHED 0x04000000
  6672. #define IMAGE_SCN_MEM_NOT_PAGED 0x08000000
  6673. #define IMAGE_SCN_MEM_SHARED 0x10000000
  6674. #define IMAGE_SCN_MEM_EXECUTE 0x20000000
  6675. #define IMAGE_SCN_MEM_READ 0x40000000
  6676. #define IMAGE_SCN_MEM_WRITE 0x80000000
  6677. #define IMAGE_SCN_SCALE_INDEX 0x00000001
  6678. #include "pshpack2.h"
  6679. typedef struct _IMAGE_SYMBOL {
  6680. union {
  6681. BYTE ShortName[8];
  6682. struct {
  6683. DWORD Short;
  6684. DWORD Long;
  6685. } Name;
  6686. DWORD LongName[2];
  6687. } N;
  6688. DWORD Value;
  6689. SHORT SectionNumber;
  6690. WORD Type;
  6691. BYTE StorageClass;
  6692. BYTE NumberOfAuxSymbols;
  6693. } IMAGE_SYMBOL;
  6694. typedef IMAGE_SYMBOL UNALIGNED *PIMAGE_SYMBOL;
  6695. #define IMAGE_SIZEOF_SYMBOL 18
  6696. typedef struct _IMAGE_SYMBOL_EX {
  6697. union {
  6698. BYTE ShortName[8];
  6699. struct {
  6700. DWORD Short;
  6701. DWORD Long;
  6702. } Name;
  6703. DWORD LongName[2];
  6704. } N;
  6705. DWORD Value;
  6706. LONG SectionNumber;
  6707. WORD Type;
  6708. BYTE StorageClass;
  6709. BYTE NumberOfAuxSymbols;
  6710. } IMAGE_SYMBOL_EX,UNALIGNED *PIMAGE_SYMBOL_EX;
  6711. #define IMAGE_SYM_UNDEFINED (SHORT)0
  6712. #define IMAGE_SYM_ABSOLUTE (SHORT)-1
  6713. #define IMAGE_SYM_DEBUG (SHORT)-2
  6714. #define IMAGE_SYM_SECTION_MAX 0xFEFF
  6715. #define IMAGE_SYM_SECTION_MAX_EX MAXLONG
  6716. #define IMAGE_SYM_TYPE_NULL 0x0000
  6717. #define IMAGE_SYM_TYPE_VOID 0x0001
  6718. #define IMAGE_SYM_TYPE_CHAR 0x0002
  6719. #define IMAGE_SYM_TYPE_SHORT 0x0003
  6720. #define IMAGE_SYM_TYPE_INT 0x0004
  6721. #define IMAGE_SYM_TYPE_LONG 0x0005
  6722. #define IMAGE_SYM_TYPE_FLOAT 0x0006
  6723. #define IMAGE_SYM_TYPE_DOUBLE 0x0007
  6724. #define IMAGE_SYM_TYPE_STRUCT 0x0008
  6725. #define IMAGE_SYM_TYPE_UNION 0x0009
  6726. #define IMAGE_SYM_TYPE_ENUM 0x000A
  6727. #define IMAGE_SYM_TYPE_MOE 0x000B
  6728. #define IMAGE_SYM_TYPE_BYTE 0x000C
  6729. #define IMAGE_SYM_TYPE_WORD 0x000D
  6730. #define IMAGE_SYM_TYPE_UINT 0x000E
  6731. #define IMAGE_SYM_TYPE_DWORD 0x000F
  6732. #define IMAGE_SYM_TYPE_PCODE 0x8000
  6733. #define IMAGE_SYM_DTYPE_NULL 0
  6734. #define IMAGE_SYM_DTYPE_POINTER 1
  6735. #define IMAGE_SYM_DTYPE_FUNCTION 2
  6736. #define IMAGE_SYM_DTYPE_ARRAY 3
  6737. #define IMAGE_SYM_CLASS_END_OF_FUNCTION (BYTE)-1
  6738. #define IMAGE_SYM_CLASS_NULL 0x0000
  6739. #define IMAGE_SYM_CLASS_AUTOMATIC 0x0001
  6740. #define IMAGE_SYM_CLASS_EXTERNAL 0x0002
  6741. #define IMAGE_SYM_CLASS_STATIC 0x0003
  6742. #define IMAGE_SYM_CLASS_REGISTER 0x0004
  6743. #define IMAGE_SYM_CLASS_EXTERNAL_DEF 0x0005
  6744. #define IMAGE_SYM_CLASS_LABEL 0x0006
  6745. #define IMAGE_SYM_CLASS_UNDEFINED_LABEL 0x0007
  6746. #define IMAGE_SYM_CLASS_MEMBER_OF_STRUCT 0x0008
  6747. #define IMAGE_SYM_CLASS_ARGUMENT 0x0009
  6748. #define IMAGE_SYM_CLASS_STRUCT_TAG 0x000A
  6749. #define IMAGE_SYM_CLASS_MEMBER_OF_UNION 0x000B
  6750. #define IMAGE_SYM_CLASS_UNION_TAG 0x000C
  6751. #define IMAGE_SYM_CLASS_TYPE_DEFINITION 0x000D
  6752. #define IMAGE_SYM_CLASS_UNDEFINED_STATIC 0x000E
  6753. #define IMAGE_SYM_CLASS_ENUM_TAG 0x000F
  6754. #define IMAGE_SYM_CLASS_MEMBER_OF_ENUM 0x0010
  6755. #define IMAGE_SYM_CLASS_REGISTER_PARAM 0x0011
  6756. #define IMAGE_SYM_CLASS_BIT_FIELD 0x0012
  6757. #define IMAGE_SYM_CLASS_FAR_EXTERNAL 0x0044
  6758. #define IMAGE_SYM_CLASS_BLOCK 0x0064
  6759. #define IMAGE_SYM_CLASS_FUNCTION 0x0065
  6760. #define IMAGE_SYM_CLASS_END_OF_STRUCT 0x0066
  6761. #define IMAGE_SYM_CLASS_FILE 0x0067
  6762. #define IMAGE_SYM_CLASS_SECTION 0x0068
  6763. #define IMAGE_SYM_CLASS_WEAK_EXTERNAL 0x0069
  6764. #define IMAGE_SYM_CLASS_CLR_TOKEN 0x006B
  6765. #define N_BTMASK 0x000F
  6766. #define N_TMASK 0x0030
  6767. #define N_TMASK1 0x00C0
  6768. #define N_TMASK2 0x00F0
  6769. #define N_BTSHFT 4
  6770. #define N_TSHIFT 2
  6771. #define BTYPE(x) ((x) & N_BTMASK)
  6772. #ifndef ISPTR
  6773. #define ISPTR(x) (((x) & N_TMASK)==(IMAGE_SYM_DTYPE_POINTER << N_BTSHFT))
  6774. #endif
  6775. #ifndef ISFCN
  6776. #define ISFCN(x) (((x) & N_TMASK)==(IMAGE_SYM_DTYPE_FUNCTION << N_BTSHFT))
  6777. #endif
  6778. #ifndef ISARY
  6779. #define ISARY(x) (((x) & N_TMASK)==(IMAGE_SYM_DTYPE_ARRAY << N_BTSHFT))
  6780. #endif
  6781. #ifndef ISTAG
  6782. #define ISTAG(x) ((x)==IMAGE_SYM_CLASS_STRUCT_TAG || (x)==IMAGE_SYM_CLASS_UNION_TAG || (x)==IMAGE_SYM_CLASS_ENUM_TAG)
  6783. #endif
  6784. #ifndef INCREF
  6785. #define INCREF(x) ((((x)&~N_BTMASK)<<N_TSHIFT)|(IMAGE_SYM_DTYPE_POINTER<<N_BTSHFT)|((x)&N_BTMASK))
  6786. #endif
  6787. #ifndef DECREF
  6788. #define DECREF(x) ((((x)>>N_TSHIFT)&~N_BTMASK)|((x)&N_BTMASK))
  6789. #endif
  6790. #include <pshpack2.h>
  6791. typedef struct IMAGE_AUX_SYMBOL_TOKEN_DEF {
  6792. BYTE bAuxType;
  6793. BYTE bReserved;
  6794. DWORD SymbolTableIndex;
  6795. BYTE rgbReserved[12];
  6796. } IMAGE_AUX_SYMBOL_TOKEN_DEF,UNALIGNED *PIMAGE_AUX_SYMBOL_TOKEN_DEF;
  6797. #include <poppack.h>
  6798. typedef union _IMAGE_AUX_SYMBOL {
  6799. struct {
  6800. DWORD TagIndex;
  6801. union {
  6802. struct {
  6803. WORD Linenumber;
  6804. WORD Size;
  6805. } LnSz;
  6806. DWORD TotalSize;
  6807. } Misc;
  6808. union {
  6809. struct {
  6810. DWORD PointerToLinenumber;
  6811. DWORD PointerToNextFunction;
  6812. } Function;
  6813. struct {
  6814. WORD Dimension[4];
  6815. } Array;
  6816. } FcnAry;
  6817. WORD TvIndex;
  6818. } Sym;
  6819. struct {
  6820. BYTE Name[IMAGE_SIZEOF_SYMBOL];
  6821. } File;
  6822. struct {
  6823. DWORD Length;
  6824. WORD NumberOfRelocations;
  6825. WORD NumberOfLinenumbers;
  6826. DWORD CheckSum;
  6827. SHORT Number;
  6828. BYTE Selection;
  6829. } Section;
  6830. IMAGE_AUX_SYMBOL_TOKEN_DEF TokenDef;
  6831. struct {
  6832. DWORD crc;
  6833. BYTE rgbReserved[14];
  6834. } CRC;
  6835. } IMAGE_AUX_SYMBOL,UNALIGNED *PIMAGE_AUX_SYMBOL;
  6836. typedef union _IMAGE_AUX_SYMBOL_EX {
  6837. struct {
  6838. DWORD WeakDefaultSymIndex;
  6839. DWORD WeakSearchType;
  6840. BYTE rgbReserved[12];
  6841. } Sym;
  6842. struct {
  6843. BYTE Name[sizeof (IMAGE_SYMBOL_EX)];
  6844. } File;
  6845. struct {
  6846. DWORD Length;
  6847. WORD NumberOfRelocations;
  6848. WORD NumberOfLinenumbers;
  6849. DWORD CheckSum;
  6850. SHORT Number;
  6851. BYTE Selection;
  6852. BYTE bReserved;
  6853. SHORT HighNumber;
  6854. BYTE rgbReserved[2];
  6855. } Section;
  6856. __C89_NAMELESS struct {
  6857. IMAGE_AUX_SYMBOL_TOKEN_DEF TokenDef;
  6858. BYTE rgbReserved[2];
  6859. };
  6860. struct {
  6861. DWORD crc;
  6862. BYTE rgbReserved[16];
  6863. } CRC;
  6864. } IMAGE_AUX_SYMBOL_EX,UNALIGNED *PIMAGE_AUX_SYMBOL_EX;
  6865. #define IMAGE_SIZEOF_AUX_SYMBOL 18
  6866. typedef enum IMAGE_AUX_SYMBOL_TYPE {
  6867. IMAGE_AUX_SYMBOL_TYPE_TOKEN_DEF = 1
  6868. } IMAGE_AUX_SYMBOL_TYPE;
  6869. #define IMAGE_COMDAT_SELECT_NODUPLICATES 1
  6870. #define IMAGE_COMDAT_SELECT_ANY 2
  6871. #define IMAGE_COMDAT_SELECT_SAME_SIZE 3
  6872. #define IMAGE_COMDAT_SELECT_EXACT_MATCH 4
  6873. #define IMAGE_COMDAT_SELECT_ASSOCIATIVE 5
  6874. #define IMAGE_COMDAT_SELECT_LARGEST 6
  6875. #define IMAGE_COMDAT_SELECT_NEWEST 7
  6876. #define IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY 1
  6877. #define IMAGE_WEAK_EXTERN_SEARCH_LIBRARY 2
  6878. #define IMAGE_WEAK_EXTERN_SEARCH_ALIAS 3
  6879. typedef struct _IMAGE_RELOCATION {
  6880. __C89_NAMELESS union {
  6881. DWORD VirtualAddress;
  6882. DWORD RelocCount;
  6883. } DUMMYUNIONNAME;
  6884. DWORD SymbolTableIndex;
  6885. WORD Type;
  6886. } IMAGE_RELOCATION;
  6887. typedef IMAGE_RELOCATION UNALIGNED *PIMAGE_RELOCATION;
  6888. #define IMAGE_SIZEOF_RELOCATION 10
  6889. #define IMAGE_REL_I386_ABSOLUTE 0x0000
  6890. #define IMAGE_REL_I386_DIR16 0x0001
  6891. #define IMAGE_REL_I386_REL16 0x0002
  6892. #define IMAGE_REL_I386_DIR32 0x0006
  6893. #define IMAGE_REL_I386_DIR32NB 0x0007
  6894. #define IMAGE_REL_I386_SEG12 0x0009
  6895. #define IMAGE_REL_I386_SECTION 0x000A
  6896. #define IMAGE_REL_I386_SECREL 0x000B
  6897. #define IMAGE_REL_I386_TOKEN 0x000C
  6898. #define IMAGE_REL_I386_SECREL7 0x000D
  6899. #define IMAGE_REL_I386_REL32 0x0014
  6900. #define IMAGE_REL_MIPS_ABSOLUTE 0x0000
  6901. #define IMAGE_REL_MIPS_REFHALF 0x0001
  6902. #define IMAGE_REL_MIPS_REFWORD 0x0002
  6903. #define IMAGE_REL_MIPS_JMPADDR 0x0003
  6904. #define IMAGE_REL_MIPS_REFHI 0x0004
  6905. #define IMAGE_REL_MIPS_REFLO 0x0005
  6906. #define IMAGE_REL_MIPS_GPREL 0x0006
  6907. #define IMAGE_REL_MIPS_LITERAL 0x0007
  6908. #define IMAGE_REL_MIPS_SECTION 0x000A
  6909. #define IMAGE_REL_MIPS_SECREL 0x000B
  6910. #define IMAGE_REL_MIPS_SECRELLO 0x000C
  6911. #define IMAGE_REL_MIPS_SECRELHI 0x000D
  6912. #define IMAGE_REL_MIPS_TOKEN 0x000E
  6913. #define IMAGE_REL_MIPS_JMPADDR16 0x0010
  6914. #define IMAGE_REL_MIPS_REFWORDNB 0x0022
  6915. #define IMAGE_REL_MIPS_PAIR 0x0025
  6916. #define IMAGE_REL_ALPHA_ABSOLUTE 0x0000
  6917. #define IMAGE_REL_ALPHA_REFLONG 0x0001
  6918. #define IMAGE_REL_ALPHA_REFQUAD 0x0002
  6919. #define IMAGE_REL_ALPHA_GPREL32 0x0003
  6920. #define IMAGE_REL_ALPHA_LITERAL 0x0004
  6921. #define IMAGE_REL_ALPHA_LITUSE 0x0005
  6922. #define IMAGE_REL_ALPHA_GPDISP 0x0006
  6923. #define IMAGE_REL_ALPHA_BRADDR 0x0007
  6924. #define IMAGE_REL_ALPHA_HINT 0x0008
  6925. #define IMAGE_REL_ALPHA_INLINE_REFLONG 0x0009
  6926. #define IMAGE_REL_ALPHA_REFHI 0x000A
  6927. #define IMAGE_REL_ALPHA_REFLO 0x000B
  6928. #define IMAGE_REL_ALPHA_PAIR 0x000C
  6929. #define IMAGE_REL_ALPHA_MATCH 0x000D
  6930. #define IMAGE_REL_ALPHA_SECTION 0x000E
  6931. #define IMAGE_REL_ALPHA_SECREL 0x000F
  6932. #define IMAGE_REL_ALPHA_REFLONGNB 0x0010
  6933. #define IMAGE_REL_ALPHA_SECRELLO 0x0011
  6934. #define IMAGE_REL_ALPHA_SECRELHI 0x0012
  6935. #define IMAGE_REL_ALPHA_REFQ3 0x0013
  6936. #define IMAGE_REL_ALPHA_REFQ2 0x0014
  6937. #define IMAGE_REL_ALPHA_REFQ1 0x0015
  6938. #define IMAGE_REL_ALPHA_GPRELLO 0x0016
  6939. #define IMAGE_REL_ALPHA_GPRELHI 0x0017
  6940. #define IMAGE_REL_PPC_ABSOLUTE 0x0000
  6941. #define IMAGE_REL_PPC_ADDR64 0x0001
  6942. #define IMAGE_REL_PPC_ADDR32 0x0002
  6943. #define IMAGE_REL_PPC_ADDR24 0x0003
  6944. #define IMAGE_REL_PPC_ADDR16 0x0004
  6945. #define IMAGE_REL_PPC_ADDR14 0x0005
  6946. #define IMAGE_REL_PPC_REL24 0x0006
  6947. #define IMAGE_REL_PPC_REL14 0x0007
  6948. #define IMAGE_REL_PPC_TOCREL16 0x0008
  6949. #define IMAGE_REL_PPC_TOCREL14 0x0009
  6950. #define IMAGE_REL_PPC_ADDR32NB 0x000A
  6951. #define IMAGE_REL_PPC_SECREL 0x000B
  6952. #define IMAGE_REL_PPC_SECTION 0x000C
  6953. #define IMAGE_REL_PPC_IFGLUE 0x000D
  6954. #define IMAGE_REL_PPC_IMGLUE 0x000E
  6955. #define IMAGE_REL_PPC_SECREL16 0x000F
  6956. #define IMAGE_REL_PPC_REFHI 0x0010
  6957. #define IMAGE_REL_PPC_REFLO 0x0011
  6958. #define IMAGE_REL_PPC_PAIR 0x0012
  6959. #define IMAGE_REL_PPC_SECRELLO 0x0013
  6960. #define IMAGE_REL_PPC_SECRELHI 0x0014
  6961. #define IMAGE_REL_PPC_GPREL 0x0015
  6962. #define IMAGE_REL_PPC_TOKEN 0x0016
  6963. #define IMAGE_REL_PPC_TYPEMASK 0x00FF
  6964. #define IMAGE_REL_PPC_NEG 0x0100
  6965. #define IMAGE_REL_PPC_BRTAKEN 0x0200
  6966. #define IMAGE_REL_PPC_BRNTAKEN 0x0400
  6967. #define IMAGE_REL_PPC_TOCDEFN 0x0800
  6968. #define IMAGE_REL_SH3_ABSOLUTE 0x0000
  6969. #define IMAGE_REL_SH3_DIRECT16 0x0001
  6970. #define IMAGE_REL_SH3_DIRECT32 0x0002
  6971. #define IMAGE_REL_SH3_DIRECT8 0x0003
  6972. #define IMAGE_REL_SH3_DIRECT8_WORD 0x0004
  6973. #define IMAGE_REL_SH3_DIRECT8_LONG 0x0005
  6974. #define IMAGE_REL_SH3_DIRECT4 0x0006
  6975. #define IMAGE_REL_SH3_DIRECT4_WORD 0x0007
  6976. #define IMAGE_REL_SH3_DIRECT4_LONG 0x0008
  6977. #define IMAGE_REL_SH3_PCREL8_WORD 0x0009
  6978. #define IMAGE_REL_SH3_PCREL8_LONG 0x000A
  6979. #define IMAGE_REL_SH3_PCREL12_WORD 0x000B
  6980. #define IMAGE_REL_SH3_STARTOF_SECTION 0x000C
  6981. #define IMAGE_REL_SH3_SIZEOF_SECTION 0x000D
  6982. #define IMAGE_REL_SH3_SECTION 0x000E
  6983. #define IMAGE_REL_SH3_SECREL 0x000F
  6984. #define IMAGE_REL_SH3_DIRECT32_NB 0x0010
  6985. #define IMAGE_REL_SH3_GPREL4_LONG 0x0011
  6986. #define IMAGE_REL_SH3_TOKEN 0x0012
  6987. #define IMAGE_REL_SHM_PCRELPT 0x0013
  6988. #define IMAGE_REL_SHM_REFLO 0x0014
  6989. #define IMAGE_REL_SHM_REFHALF 0x0015
  6990. #define IMAGE_REL_SHM_RELLO 0x0016
  6991. #define IMAGE_REL_SHM_RELHALF 0x0017
  6992. #define IMAGE_REL_SHM_PAIR 0x0018
  6993. #define IMAGE_REL_SH_NOMODE 0x8000
  6994. #define IMAGE_REL_ARM_ABSOLUTE 0x0000
  6995. #define IMAGE_REL_ARM_ADDR32 0x0001
  6996. #define IMAGE_REL_ARM_ADDR32NB 0x0002
  6997. #define IMAGE_REL_ARM_BRANCH24 0x0003
  6998. #define IMAGE_REL_ARM_BRANCH11 0x0004
  6999. #define IMAGE_REL_ARM_TOKEN 0x0005
  7000. #define IMAGE_REL_ARM_GPREL12 0x0006
  7001. #define IMAGE_REL_ARM_GPREL7 0x0007
  7002. #define IMAGE_REL_ARM_BLX24 0x0008
  7003. #define IMAGE_REL_ARM_BLX11 0x0009
  7004. #define IMAGE_REL_ARM_SECTION 0x000E
  7005. #define IMAGE_REL_ARM_SECREL 0x000F
  7006. #define IMAGE_REL_ARM_MOV32A 0x0010
  7007. #define IMAGE_REL_ARM_MOV32 0x0010
  7008. #define IMAGE_REL_ARM_MOV32T 0x0011
  7009. #define IMAGE_REL_THUMB_MOV32 0x0011
  7010. #define IMAGE_REL_ARM_BRANCH20T 0x0012
  7011. #define IMAGE_REL_THUMB_BRANCH20 0x0012
  7012. #define IMAGE_REL_ARM_BRANCH24T 0x0014
  7013. #define IMAGE_REL_THUMB_BRANCH24 0x0014
  7014. #define IMAGE_REL_ARM_BLX23T 0x0015
  7015. #define IMAGE_REL_THUMB_BLX23 0x0015
  7016. #define IMAGE_REL_AM_ABSOLUTE 0x0000
  7017. #define IMAGE_REL_AM_ADDR32 0x0001
  7018. #define IMAGE_REL_AM_ADDR32NB 0x0002
  7019. #define IMAGE_REL_AM_CALL32 0x0003
  7020. #define IMAGE_REL_AM_FUNCINFO 0x0004
  7021. #define IMAGE_REL_AM_REL32_1 0x0005
  7022. #define IMAGE_REL_AM_REL32_2 0x0006
  7023. #define IMAGE_REL_AM_SECREL 0x0007
  7024. #define IMAGE_REL_AM_SECTION 0x0008
  7025. #define IMAGE_REL_AM_TOKEN 0x0009
  7026. #define IMAGE_REL_AMD64_ABSOLUTE 0x0000
  7027. #define IMAGE_REL_AMD64_ADDR64 0x0001
  7028. #define IMAGE_REL_AMD64_ADDR32 0x0002
  7029. #define IMAGE_REL_AMD64_ADDR32NB 0x0003
  7030. #define IMAGE_REL_AMD64_REL32 0x0004
  7031. #define IMAGE_REL_AMD64_REL32_1 0x0005
  7032. #define IMAGE_REL_AMD64_REL32_2 0x0006
  7033. #define IMAGE_REL_AMD64_REL32_3 0x0007
  7034. #define IMAGE_REL_AMD64_REL32_4 0x0008
  7035. #define IMAGE_REL_AMD64_REL32_5 0x0009
  7036. #define IMAGE_REL_AMD64_SECTION 0x000A
  7037. #define IMAGE_REL_AMD64_SECREL 0x000B
  7038. #define IMAGE_REL_AMD64_SECREL7 0x000C
  7039. #define IMAGE_REL_AMD64_TOKEN 0x000D
  7040. #define IMAGE_REL_AMD64_SREL32 0x000E
  7041. #define IMAGE_REL_AMD64_PAIR 0x000F
  7042. #define IMAGE_REL_AMD64_SSPAN32 0x0010
  7043. #define IMAGE_REL_IA64_ABSOLUTE 0x0000
  7044. #define IMAGE_REL_IA64_IMM14 0x0001
  7045. #define IMAGE_REL_IA64_IMM22 0x0002
  7046. #define IMAGE_REL_IA64_IMM64 0x0003
  7047. #define IMAGE_REL_IA64_DIR32 0x0004
  7048. #define IMAGE_REL_IA64_DIR64 0x0005
  7049. #define IMAGE_REL_IA64_PCREL21B 0x0006
  7050. #define IMAGE_REL_IA64_PCREL21M 0x0007
  7051. #define IMAGE_REL_IA64_PCREL21F 0x0008
  7052. #define IMAGE_REL_IA64_GPREL22 0x0009
  7053. #define IMAGE_REL_IA64_LTOFF22 0x000A
  7054. #define IMAGE_REL_IA64_SECTION 0x000B
  7055. #define IMAGE_REL_IA64_SECREL22 0x000C
  7056. #define IMAGE_REL_IA64_SECREL64I 0x000D
  7057. #define IMAGE_REL_IA64_SECREL32 0x000E
  7058. #define IMAGE_REL_IA64_DIR32NB 0x0010
  7059. #define IMAGE_REL_IA64_SREL14 0x0011
  7060. #define IMAGE_REL_IA64_SREL22 0x0012
  7061. #define IMAGE_REL_IA64_SREL32 0x0013
  7062. #define IMAGE_REL_IA64_UREL32 0x0014
  7063. #define IMAGE_REL_IA64_PCREL60X 0x0015
  7064. #define IMAGE_REL_IA64_PCREL60B 0x0016
  7065. #define IMAGE_REL_IA64_PCREL60F 0x0017
  7066. #define IMAGE_REL_IA64_PCREL60I 0x0018
  7067. #define IMAGE_REL_IA64_PCREL60M 0x0019
  7068. #define IMAGE_REL_IA64_IMMGPREL64 0x001A
  7069. #define IMAGE_REL_IA64_TOKEN 0x001B
  7070. #define IMAGE_REL_IA64_GPREL32 0x001C
  7071. #define IMAGE_REL_IA64_ADDEND 0x001F
  7072. #define IMAGE_REL_CEF_ABSOLUTE 0x0000
  7073. #define IMAGE_REL_CEF_ADDR32 0x0001
  7074. #define IMAGE_REL_CEF_ADDR64 0x0002
  7075. #define IMAGE_REL_CEF_ADDR32NB 0x0003
  7076. #define IMAGE_REL_CEF_SECTION 0x0004
  7077. #define IMAGE_REL_CEF_SECREL 0x0005
  7078. #define IMAGE_REL_CEF_TOKEN 0x0006
  7079. #define IMAGE_REL_CEE_ABSOLUTE 0x0000
  7080. #define IMAGE_REL_CEE_ADDR32 0x0001
  7081. #define IMAGE_REL_CEE_ADDR64 0x0002
  7082. #define IMAGE_REL_CEE_ADDR32NB 0x0003
  7083. #define IMAGE_REL_CEE_SECTION 0x0004
  7084. #define IMAGE_REL_CEE_SECREL 0x0005
  7085. #define IMAGE_REL_CEE_TOKEN 0x0006
  7086. #define IMAGE_REL_M32R_ABSOLUTE 0x0000
  7087. #define IMAGE_REL_M32R_ADDR32 0x0001
  7088. #define IMAGE_REL_M32R_ADDR32NB 0x0002
  7089. #define IMAGE_REL_M32R_ADDR24 0x0003
  7090. #define IMAGE_REL_M32R_GPREL16 0x0004
  7091. #define IMAGE_REL_M32R_PCREL24 0x0005
  7092. #define IMAGE_REL_M32R_PCREL16 0x0006
  7093. #define IMAGE_REL_M32R_PCREL8 0x0007
  7094. #define IMAGE_REL_M32R_REFHALF 0x0008
  7095. #define IMAGE_REL_M32R_REFHI 0x0009
  7096. #define IMAGE_REL_M32R_REFLO 0x000A
  7097. #define IMAGE_REL_M32R_PAIR 0x000B
  7098. #define IMAGE_REL_M32R_SECTION 0x000C
  7099. #define IMAGE_REL_M32R_SECREL32 0x000D
  7100. #define IMAGE_REL_M32R_TOKEN 0x000E
  7101. #define IMAGE_REL_EBC_ABSOLUTE 0x0000
  7102. #define IMAGE_REL_EBC_ADDR32NB 0x0001
  7103. #define IMAGE_REL_EBC_REL32 0x0002
  7104. #define IMAGE_REL_EBC_SECTION 0x0003
  7105. #define IMAGE_REL_EBC_SECREL 0x0004
  7106. #define EXT_IMM64(Value,Address,Size,InstPos,ValPos) Value |= (((ULONGLONG)((*(Address) >> InstPos) & (((ULONGLONG)1 << Size) - 1))) << ValPos)
  7107. #define INS_IMM64(Value,Address,Size,InstPos,ValPos) *(PDWORD)Address = (*(PDWORD)Address & ~(((1 << Size) - 1) << InstPos)) | ((DWORD)((((ULONGLONG)Value >> ValPos) & (((ULONGLONG)1 << Size) - 1))) << InstPos)
  7108. #define EMARCH_ENC_I17_IMM7B_INST_WORD_X 3
  7109. #define EMARCH_ENC_I17_IMM7B_SIZE_X 7
  7110. #define EMARCH_ENC_I17_IMM7B_INST_WORD_POS_X 4
  7111. #define EMARCH_ENC_I17_IMM7B_VAL_POS_X 0
  7112. #define EMARCH_ENC_I17_IMM9D_INST_WORD_X 3
  7113. #define EMARCH_ENC_I17_IMM9D_SIZE_X 9
  7114. #define EMARCH_ENC_I17_IMM9D_INST_WORD_POS_X 18
  7115. #define EMARCH_ENC_I17_IMM9D_VAL_POS_X 7
  7116. #define EMARCH_ENC_I17_IMM5C_INST_WORD_X 3
  7117. #define EMARCH_ENC_I17_IMM5C_SIZE_X 5
  7118. #define EMARCH_ENC_I17_IMM5C_INST_WORD_POS_X 13
  7119. #define EMARCH_ENC_I17_IMM5C_VAL_POS_X 16
  7120. #define EMARCH_ENC_I17_IC_INST_WORD_X 3
  7121. #define EMARCH_ENC_I17_IC_SIZE_X 1
  7122. #define EMARCH_ENC_I17_IC_INST_WORD_POS_X 12
  7123. #define EMARCH_ENC_I17_IC_VAL_POS_X 21
  7124. #define EMARCH_ENC_I17_IMM41a_INST_WORD_X 1
  7125. #define EMARCH_ENC_I17_IMM41a_SIZE_X 10
  7126. #define EMARCH_ENC_I17_IMM41a_INST_WORD_POS_X 14
  7127. #define EMARCH_ENC_I17_IMM41a_VAL_POS_X 22
  7128. #define EMARCH_ENC_I17_IMM41b_INST_WORD_X 1
  7129. #define EMARCH_ENC_I17_IMM41b_SIZE_X 8
  7130. #define EMARCH_ENC_I17_IMM41b_INST_WORD_POS_X 24
  7131. #define EMARCH_ENC_I17_IMM41b_VAL_POS_X 32
  7132. #define EMARCH_ENC_I17_IMM41c_INST_WORD_X 2
  7133. #define EMARCH_ENC_I17_IMM41c_SIZE_X 23
  7134. #define EMARCH_ENC_I17_IMM41c_INST_WORD_POS_X 0
  7135. #define EMARCH_ENC_I17_IMM41c_VAL_POS_X 40
  7136. #define EMARCH_ENC_I17_SIGN_INST_WORD_X 3
  7137. #define EMARCH_ENC_I17_SIGN_SIZE_X 1
  7138. #define EMARCH_ENC_I17_SIGN_INST_WORD_POS_X 27
  7139. #define EMARCH_ENC_I17_SIGN_VAL_POS_X 63
  7140. #define X3_OPCODE_INST_WORD_X 3
  7141. #define X3_OPCODE_SIZE_X 4
  7142. #define X3_OPCODE_INST_WORD_POS_X 28
  7143. #define X3_OPCODE_SIGN_VAL_POS_X 0
  7144. #define X3_I_INST_WORD_X 3
  7145. #define X3_I_SIZE_X 1
  7146. #define X3_I_INST_WORD_POS_X 27
  7147. #define X3_I_SIGN_VAL_POS_X 59
  7148. #define X3_D_WH_INST_WORD_X 3
  7149. #define X3_D_WH_SIZE_X 3
  7150. #define X3_D_WH_INST_WORD_POS_X 24
  7151. #define X3_D_WH_SIGN_VAL_POS_X 0
  7152. #define X3_IMM20_INST_WORD_X 3
  7153. #define X3_IMM20_SIZE_X 20
  7154. #define X3_IMM20_INST_WORD_POS_X 4
  7155. #define X3_IMM20_SIGN_VAL_POS_X 0
  7156. #define X3_IMM39_1_INST_WORD_X 2
  7157. #define X3_IMM39_1_SIZE_X 23
  7158. #define X3_IMM39_1_INST_WORD_POS_X 0
  7159. #define X3_IMM39_1_SIGN_VAL_POS_X 36
  7160. #define X3_IMM39_2_INST_WORD_X 1
  7161. #define X3_IMM39_2_SIZE_X 16
  7162. #define X3_IMM39_2_INST_WORD_POS_X 16
  7163. #define X3_IMM39_2_SIGN_VAL_POS_X 20
  7164. #define X3_P_INST_WORD_X 3
  7165. #define X3_P_SIZE_X 4
  7166. #define X3_P_INST_WORD_POS_X 0
  7167. #define X3_P_SIGN_VAL_POS_X 0
  7168. #define X3_TMPLT_INST_WORD_X 0
  7169. #define X3_TMPLT_SIZE_X 4
  7170. #define X3_TMPLT_INST_WORD_POS_X 0
  7171. #define X3_TMPLT_SIGN_VAL_POS_X 0
  7172. #define X3_BTYPE_QP_INST_WORD_X 2
  7173. #define X3_BTYPE_QP_SIZE_X 9
  7174. #define X3_BTYPE_QP_INST_WORD_POS_X 23
  7175. #define X3_BTYPE_QP_INST_VAL_POS_X 0
  7176. #define X3_EMPTY_INST_WORD_X 1
  7177. #define X3_EMPTY_SIZE_X 2
  7178. #define X3_EMPTY_INST_WORD_POS_X 14
  7179. #define X3_EMPTY_INST_VAL_POS_X 0
  7180. typedef struct _IMAGE_LINENUMBER {
  7181. union {
  7182. DWORD SymbolTableIndex;
  7183. DWORD VirtualAddress;
  7184. } Type;
  7185. WORD Linenumber;
  7186. } IMAGE_LINENUMBER;
  7187. typedef IMAGE_LINENUMBER UNALIGNED *PIMAGE_LINENUMBER;
  7188. #define IMAGE_SIZEOF_LINENUMBER 6
  7189. #include "poppack.h"
  7190. typedef struct _IMAGE_BASE_RELOCATION {
  7191. DWORD VirtualAddress;
  7192. DWORD SizeOfBlock;
  7193. } IMAGE_BASE_RELOCATION;
  7194. typedef IMAGE_BASE_RELOCATION UNALIGNED *PIMAGE_BASE_RELOCATION;
  7195. #define IMAGE_SIZEOF_BASE_RELOCATION 8
  7196. #define IMAGE_REL_BASED_ABSOLUTE 0
  7197. #define IMAGE_REL_BASED_HIGH 1
  7198. #define IMAGE_REL_BASED_LOW 2
  7199. #define IMAGE_REL_BASED_HIGHLOW 3
  7200. #define IMAGE_REL_BASED_HIGHADJ 4
  7201. #define IMAGE_REL_BASED_MIPS_JMPADDR 5
  7202. #define IMAGE_REL_BASED_ARM_MOV32 5
  7203. #define IMAGE_REL_BASED_THUMB_MOV32 7
  7204. #define IMAGE_REL_BASED_MIPS_JMPADDR16 9
  7205. #define IMAGE_REL_BASED_IA64_IMM64 9
  7206. #define IMAGE_REL_BASED_DIR64 10
  7207. #define IMAGE_ARCHIVE_START_SIZE 8
  7208. #define IMAGE_ARCHIVE_START "!<arch>\n"
  7209. #define IMAGE_ARCHIVE_END "`\n"
  7210. #define IMAGE_ARCHIVE_PAD "\n"
  7211. #define IMAGE_ARCHIVE_LINKER_MEMBER "/ "
  7212. #define IMAGE_ARCHIVE_LONGNAMES_MEMBER "// "
  7213. typedef struct _IMAGE_ARCHIVE_MEMBER_HEADER {
  7214. BYTE Name[16];
  7215. BYTE Date[12];
  7216. BYTE UserID[6];
  7217. BYTE GroupID[6];
  7218. BYTE Mode[8];
  7219. BYTE Size[10];
  7220. BYTE EndHeader[2];
  7221. } IMAGE_ARCHIVE_MEMBER_HEADER,*PIMAGE_ARCHIVE_MEMBER_HEADER;
  7222. #define IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 60
  7223. typedef struct _IMAGE_EXPORT_DIRECTORY {
  7224. DWORD Characteristics;
  7225. DWORD TimeDateStamp;
  7226. WORD MajorVersion;
  7227. WORD MinorVersion;
  7228. DWORD Name;
  7229. DWORD Base;
  7230. DWORD NumberOfFunctions;
  7231. DWORD NumberOfNames;
  7232. DWORD AddressOfFunctions;
  7233. DWORD AddressOfNames;
  7234. DWORD AddressOfNameOrdinals;
  7235. } IMAGE_EXPORT_DIRECTORY,*PIMAGE_EXPORT_DIRECTORY;
  7236. typedef struct _IMAGE_IMPORT_BY_NAME {
  7237. WORD Hint;
  7238. CHAR Name[1];
  7239. } IMAGE_IMPORT_BY_NAME,*PIMAGE_IMPORT_BY_NAME;
  7240. #include "pshpack8.h"
  7241. typedef struct _IMAGE_THUNK_DATA64 {
  7242. union {
  7243. ULONGLONG ForwarderString;
  7244. ULONGLONG Function;
  7245. ULONGLONG Ordinal;
  7246. ULONGLONG AddressOfData;
  7247. } u1;
  7248. } IMAGE_THUNK_DATA64;
  7249. typedef IMAGE_THUNK_DATA64 *PIMAGE_THUNK_DATA64;
  7250. #include "poppack.h"
  7251. typedef struct _IMAGE_THUNK_DATA32 {
  7252. union {
  7253. DWORD ForwarderString;
  7254. DWORD Function;
  7255. DWORD Ordinal;
  7256. DWORD AddressOfData;
  7257. } u1;
  7258. } IMAGE_THUNK_DATA32;
  7259. typedef IMAGE_THUNK_DATA32 *PIMAGE_THUNK_DATA32;
  7260. #define IMAGE_ORDINAL_FLAG64 0x8000000000000000ull
  7261. #define IMAGE_ORDINAL_FLAG32 0x80000000
  7262. #define IMAGE_ORDINAL64(Ordinal) (Ordinal & 0xffffull)
  7263. #define IMAGE_ORDINAL32(Ordinal) (Ordinal & 0xffff)
  7264. #define IMAGE_SNAP_BY_ORDINAL64(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG64)!=0)
  7265. #define IMAGE_SNAP_BY_ORDINAL32(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG32)!=0)
  7266. typedef VOID (NTAPI *PIMAGE_TLS_CALLBACK)(PVOID DllHandle,DWORD Reason,PVOID Reserved);
  7267. typedef struct _IMAGE_TLS_DIRECTORY64 {
  7268. ULONGLONG StartAddressOfRawData;
  7269. ULONGLONG EndAddressOfRawData;
  7270. ULONGLONG AddressOfIndex;
  7271. ULONGLONG AddressOfCallBacks;
  7272. DWORD SizeOfZeroFill;
  7273. DWORD Characteristics;
  7274. } IMAGE_TLS_DIRECTORY64;
  7275. typedef IMAGE_TLS_DIRECTORY64 *PIMAGE_TLS_DIRECTORY64;
  7276. typedef struct _IMAGE_TLS_DIRECTORY32 {
  7277. DWORD StartAddressOfRawData;
  7278. DWORD EndAddressOfRawData;
  7279. DWORD AddressOfIndex;
  7280. DWORD AddressOfCallBacks;
  7281. DWORD SizeOfZeroFill;
  7282. DWORD Characteristics;
  7283. } IMAGE_TLS_DIRECTORY32;
  7284. typedef IMAGE_TLS_DIRECTORY32 *PIMAGE_TLS_DIRECTORY32;
  7285. #ifdef _WIN64
  7286. #define IMAGE_ORDINAL_FLAG IMAGE_ORDINAL_FLAG64
  7287. #define IMAGE_ORDINAL(Ordinal) IMAGE_ORDINAL64(Ordinal)
  7288. typedef IMAGE_THUNK_DATA64 IMAGE_THUNK_DATA;
  7289. typedef PIMAGE_THUNK_DATA64 PIMAGE_THUNK_DATA;
  7290. #define IMAGE_SNAP_BY_ORDINAL(Ordinal) IMAGE_SNAP_BY_ORDINAL64(Ordinal)
  7291. typedef IMAGE_TLS_DIRECTORY64 IMAGE_TLS_DIRECTORY;
  7292. typedef PIMAGE_TLS_DIRECTORY64 PIMAGE_TLS_DIRECTORY;
  7293. #else /* _WIN64 */
  7294. #define IMAGE_ORDINAL_FLAG IMAGE_ORDINAL_FLAG32
  7295. #define IMAGE_ORDINAL(Ordinal) IMAGE_ORDINAL32(Ordinal)
  7296. typedef IMAGE_THUNK_DATA32 IMAGE_THUNK_DATA;
  7297. typedef PIMAGE_THUNK_DATA32 PIMAGE_THUNK_DATA;
  7298. #define IMAGE_SNAP_BY_ORDINAL(Ordinal) IMAGE_SNAP_BY_ORDINAL32(Ordinal)
  7299. typedef IMAGE_TLS_DIRECTORY32 IMAGE_TLS_DIRECTORY;
  7300. typedef PIMAGE_TLS_DIRECTORY32 PIMAGE_TLS_DIRECTORY;
  7301. #endif /* _WIN64 */
  7302. typedef struct _IMAGE_IMPORT_DESCRIPTOR {
  7303. __C89_NAMELESS union {
  7304. DWORD Characteristics;
  7305. DWORD OriginalFirstThunk;
  7306. } DUMMYUNIONNAME;
  7307. DWORD TimeDateStamp;
  7308. DWORD ForwarderChain;
  7309. DWORD Name;
  7310. DWORD FirstThunk;
  7311. } IMAGE_IMPORT_DESCRIPTOR;
  7312. typedef IMAGE_IMPORT_DESCRIPTOR UNALIGNED *PIMAGE_IMPORT_DESCRIPTOR;
  7313. typedef struct _IMAGE_BOUND_IMPORT_DESCRIPTOR {
  7314. DWORD TimeDateStamp;
  7315. WORD OffsetModuleName;
  7316. WORD NumberOfModuleForwarderRefs;
  7317. } IMAGE_BOUND_IMPORT_DESCRIPTOR,*PIMAGE_BOUND_IMPORT_DESCRIPTOR;
  7318. typedef struct _IMAGE_BOUND_FORWARDER_REF {
  7319. DWORD TimeDateStamp;
  7320. WORD OffsetModuleName;
  7321. WORD Reserved;
  7322. } IMAGE_BOUND_FORWARDER_REF,*PIMAGE_BOUND_FORWARDER_REF;
  7323. typedef struct _IMAGE_DELAYLOAD_DESCRIPTOR {
  7324. union {
  7325. DWORD AllAttributes;
  7326. __C89_NAMELESS struct {
  7327. DWORD RvaBased : 1;
  7328. DWORD ReservedAttributes : 31;
  7329. };
  7330. } Attributes;
  7331. DWORD DllNameRVA;
  7332. DWORD ModuleHandleRVA;
  7333. DWORD ImportAddressTableRVA;
  7334. DWORD ImportNameTableRVA;
  7335. DWORD BoundImportAddressTableRVA;
  7336. DWORD UnloadInformationTableRVA;
  7337. DWORD TimeDateStamp;
  7338. } IMAGE_DELAYLOAD_DESCRIPTOR,*PIMAGE_DELAYLOAD_DESCRIPTOR;
  7339. typedef const IMAGE_DELAYLOAD_DESCRIPTOR *PCIMAGE_DELAYLOAD_DESCRIPTOR;
  7340. typedef struct _IMAGE_RESOURCE_DIRECTORY {
  7341. DWORD Characteristics;
  7342. DWORD TimeDateStamp;
  7343. WORD MajorVersion;
  7344. WORD MinorVersion;
  7345. WORD NumberOfNamedEntries;
  7346. WORD NumberOfIdEntries;
  7347. } IMAGE_RESOURCE_DIRECTORY,*PIMAGE_RESOURCE_DIRECTORY;
  7348. #define IMAGE_RESOURCE_NAME_IS_STRING 0x80000000
  7349. #define IMAGE_RESOURCE_DATA_IS_DIRECTORY 0x80000000
  7350. typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY {
  7351. __C89_NAMELESS union {
  7352. __C89_NAMELESS struct {
  7353. DWORD NameOffset:31;
  7354. DWORD NameIsString:1;
  7355. } DUMMYSTRUCTNAME;
  7356. DWORD Name;
  7357. WORD Id;
  7358. } DUMMYUNIONNAME;
  7359. __C89_NAMELESS union {
  7360. DWORD OffsetToData;
  7361. __C89_NAMELESS struct {
  7362. DWORD OffsetToDirectory:31;
  7363. DWORD DataIsDirectory:1;
  7364. } DUMMYSTRUCTNAME2;
  7365. } DUMMYUNIONNAME2;
  7366. } IMAGE_RESOURCE_DIRECTORY_ENTRY,*PIMAGE_RESOURCE_DIRECTORY_ENTRY;
  7367. typedef struct _IMAGE_RESOURCE_DIRECTORY_STRING {
  7368. WORD Length;
  7369. CHAR NameString[1];
  7370. } IMAGE_RESOURCE_DIRECTORY_STRING,*PIMAGE_RESOURCE_DIRECTORY_STRING;
  7371. typedef struct _IMAGE_RESOURCE_DIR_STRING_U {
  7372. WORD Length;
  7373. WCHAR NameString[1];
  7374. } IMAGE_RESOURCE_DIR_STRING_U,*PIMAGE_RESOURCE_DIR_STRING_U;
  7375. typedef struct _IMAGE_RESOURCE_DATA_ENTRY {
  7376. DWORD OffsetToData;
  7377. DWORD Size;
  7378. DWORD CodePage;
  7379. DWORD Reserved;
  7380. } IMAGE_RESOURCE_DATA_ENTRY,*PIMAGE_RESOURCE_DATA_ENTRY;
  7381. typedef struct {
  7382. DWORD Size;
  7383. DWORD TimeDateStamp;
  7384. WORD MajorVersion;
  7385. WORD MinorVersion;
  7386. DWORD GlobalFlagsClear;
  7387. DWORD GlobalFlagsSet;
  7388. DWORD CriticalSectionDefaultTimeout;
  7389. DWORD DeCommitFreeBlockThreshold;
  7390. DWORD DeCommitTotalFreeThreshold;
  7391. DWORD LockPrefixTable;
  7392. DWORD MaximumAllocationSize;
  7393. DWORD VirtualMemoryThreshold;
  7394. DWORD ProcessHeapFlags;
  7395. DWORD ProcessAffinityMask;
  7396. WORD CSDVersion;
  7397. WORD Reserved1;
  7398. DWORD EditList;
  7399. DWORD SecurityCookie;
  7400. DWORD SEHandlerTable;
  7401. DWORD SEHandlerCount;
  7402. } IMAGE_LOAD_CONFIG_DIRECTORY32,*PIMAGE_LOAD_CONFIG_DIRECTORY32;
  7403. typedef struct {
  7404. DWORD Size;
  7405. DWORD TimeDateStamp;
  7406. WORD MajorVersion;
  7407. WORD MinorVersion;
  7408. DWORD GlobalFlagsClear;
  7409. DWORD GlobalFlagsSet;
  7410. DWORD CriticalSectionDefaultTimeout;
  7411. ULONGLONG DeCommitFreeBlockThreshold;
  7412. ULONGLONG DeCommitTotalFreeThreshold;
  7413. ULONGLONG LockPrefixTable;
  7414. ULONGLONG MaximumAllocationSize;
  7415. ULONGLONG VirtualMemoryThreshold;
  7416. ULONGLONG ProcessAffinityMask;
  7417. DWORD ProcessHeapFlags;
  7418. WORD CSDVersion;
  7419. WORD Reserved1;
  7420. ULONGLONG EditList;
  7421. ULONGLONG SecurityCookie;
  7422. ULONGLONG SEHandlerTable;
  7423. ULONGLONG SEHandlerCount;
  7424. } IMAGE_LOAD_CONFIG_DIRECTORY64,*PIMAGE_LOAD_CONFIG_DIRECTORY64;
  7425. #ifdef _WIN64
  7426. typedef IMAGE_LOAD_CONFIG_DIRECTORY64 IMAGE_LOAD_CONFIG_DIRECTORY;
  7427. typedef PIMAGE_LOAD_CONFIG_DIRECTORY64 PIMAGE_LOAD_CONFIG_DIRECTORY;
  7428. #else /* _WIN64 */
  7429. typedef IMAGE_LOAD_CONFIG_DIRECTORY32 IMAGE_LOAD_CONFIG_DIRECTORY;
  7430. typedef PIMAGE_LOAD_CONFIG_DIRECTORY32 PIMAGE_LOAD_CONFIG_DIRECTORY;
  7431. #endif /* _WIN64 */
  7432. typedef struct _IMAGE_CE_RUNTIME_FUNCTION_ENTRY {
  7433. DWORD FuncStart;
  7434. DWORD PrologLen : 8;
  7435. DWORD FuncLen : 22;
  7436. DWORD ThirtyTwoBit : 1;
  7437. DWORD ExceptionFlag : 1;
  7438. } IMAGE_CE_RUNTIME_FUNCTION_ENTRY,*PIMAGE_CE_RUNTIME_FUNCTION_ENTRY;
  7439. typedef struct _IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY {
  7440. ULONGLONG BeginAddress;
  7441. ULONGLONG EndAddress;
  7442. ULONGLONG ExceptionHandler;
  7443. ULONGLONG HandlerData;
  7444. ULONGLONG PrologEndAddress;
  7445. } IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY,*PIMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY;
  7446. typedef struct _IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY {
  7447. DWORD BeginAddress;
  7448. DWORD EndAddress;
  7449. DWORD ExceptionHandler;
  7450. DWORD HandlerData;
  7451. DWORD PrologEndAddress;
  7452. } IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY,*PIMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY;
  7453. typedef struct _IMAGE_ARM_RUNTIME_FUNCTION_ENTRY {
  7454. DWORD BeginAddress;
  7455. __C89_NAMELESS union {
  7456. DWORD UnwindData;
  7457. __C89_NAMELESS struct {
  7458. DWORD Flag : 2;
  7459. DWORD FunctionLength : 11;
  7460. DWORD Ret : 2;
  7461. DWORD H : 1;
  7462. DWORD Reg : 3;
  7463. DWORD R : 1;
  7464. DWORD L : 1;
  7465. DWORD C : 1;
  7466. DWORD StackAdjust : 10;
  7467. } DUMMYSTRUCTNAME;
  7468. } DUMMYUNIONNAME;
  7469. } IMAGE_ARM_RUNTIME_FUNCTION_ENTRY,*PIMAGE_ARM_RUNTIME_FUNCTION_ENTRY;
  7470. typedef struct _IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY {
  7471. DWORD BeginAddress;
  7472. __C89_NAMELESS union {
  7473. DWORD UnwindData;
  7474. __C89_NAMELESS struct {
  7475. DWORD Flag : 2;
  7476. DWORD FunctionLength : 11;
  7477. DWORD RegF : 3;
  7478. DWORD RegI : 4;
  7479. DWORD H : 1;
  7480. DWORD CR : 2;
  7481. DWORD FrameSize : 9;
  7482. } DUMMYSTRUCTNAME;
  7483. } DUMMYUNIONNAME;
  7484. } IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY,*PIMAGE_ARM64_RUNTIME_FUNCTION_ENTRY;
  7485. typedef struct _IMAGE_RUNTIME_FUNCTION_ENTRY {
  7486. DWORD BeginAddress;
  7487. DWORD EndAddress;
  7488. __C89_NAMELESS union {
  7489. DWORD UnwindInfoAddress;
  7490. DWORD UnwindData;
  7491. } DUMMYUNIONNAME;
  7492. } _IMAGE_RUNTIME_FUNCTION_ENTRY,*_PIMAGE_RUNTIME_FUNCTION_ENTRY;
  7493. typedef _IMAGE_RUNTIME_FUNCTION_ENTRY IMAGE_IA64_RUNTIME_FUNCTION_ENTRY;
  7494. typedef _PIMAGE_RUNTIME_FUNCTION_ENTRY PIMAGE_IA64_RUNTIME_FUNCTION_ENTRY;
  7495. #if defined (_AXP64_)
  7496. typedef IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY IMAGE_AXP64_RUNTIME_FUNCTION_ENTRY;
  7497. typedef PIMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY PIMAGE_AXP64_RUNTIME_FUNCTION_ENTRY;
  7498. typedef IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY IMAGE_RUNTIME_FUNCTION_ENTRY;
  7499. typedef PIMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY PIMAGE_RUNTIME_FUNCTION_ENTRY;
  7500. #elif defined (_ALPHA_)
  7501. typedef IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY IMAGE_RUNTIME_FUNCTION_ENTRY;
  7502. typedef PIMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY PIMAGE_RUNTIME_FUNCTION_ENTRY;
  7503. #elif defined (__arm__)
  7504. typedef IMAGE_ARM_RUNTIME_FUNCTION_ENTRY IMAGE_RUNTIME_FUNCTION_ENTRY;
  7505. typedef PIMAGE_ARM_RUNTIME_FUNCTION_ENTRY PIMAGE_RUNTIME_FUNCTION_ENTRY;
  7506. #else
  7507. typedef _IMAGE_RUNTIME_FUNCTION_ENTRY IMAGE_RUNTIME_FUNCTION_ENTRY;
  7508. typedef _PIMAGE_RUNTIME_FUNCTION_ENTRY PIMAGE_RUNTIME_FUNCTION_ENTRY;
  7509. #endif
  7510. typedef struct _IMAGE_DEBUG_DIRECTORY {
  7511. DWORD Characteristics;
  7512. DWORD TimeDateStamp;
  7513. WORD MajorVersion;
  7514. WORD MinorVersion;
  7515. DWORD Type;
  7516. DWORD SizeOfData;
  7517. DWORD AddressOfRawData;
  7518. DWORD PointerToRawData;
  7519. } IMAGE_DEBUG_DIRECTORY,*PIMAGE_DEBUG_DIRECTORY;
  7520. #define IMAGE_DEBUG_TYPE_UNKNOWN 0
  7521. #define IMAGE_DEBUG_TYPE_COFF 1
  7522. #define IMAGE_DEBUG_TYPE_CODEVIEW 2
  7523. #define IMAGE_DEBUG_TYPE_FPO 3
  7524. #define IMAGE_DEBUG_TYPE_MISC 4
  7525. #define IMAGE_DEBUG_TYPE_EXCEPTION 5
  7526. #define IMAGE_DEBUG_TYPE_FIXUP 6
  7527. #define IMAGE_DEBUG_TYPE_OMAP_TO_SRC 7
  7528. #define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC 8
  7529. #define IMAGE_DEBUG_TYPE_BORLAND 9
  7530. #define IMAGE_DEBUG_TYPE_RESERVED10 10
  7531. #define IMAGE_DEBUG_TYPE_CLSID 11
  7532. typedef struct _IMAGE_COFF_SYMBOLS_HEADER {
  7533. DWORD NumberOfSymbols;
  7534. DWORD LvaToFirstSymbol;
  7535. DWORD NumberOfLinenumbers;
  7536. DWORD LvaToFirstLinenumber;
  7537. DWORD RvaToFirstByteOfCode;
  7538. DWORD RvaToLastByteOfCode;
  7539. DWORD RvaToFirstByteOfData;
  7540. DWORD RvaToLastByteOfData;
  7541. } IMAGE_COFF_SYMBOLS_HEADER,*PIMAGE_COFF_SYMBOLS_HEADER;
  7542. #define FRAME_FPO 0
  7543. #define FRAME_TRAP 1
  7544. #define FRAME_TSS 2
  7545. #define FRAME_NONFPO 3
  7546. typedef struct _FPO_DATA {
  7547. DWORD ulOffStart;
  7548. DWORD cbProcSize;
  7549. DWORD cdwLocals;
  7550. WORD cdwParams;
  7551. WORD cbProlog : 8;
  7552. WORD cbRegs : 3;
  7553. WORD fHasSEH : 1;
  7554. WORD fUseBP : 1;
  7555. WORD reserved : 1;
  7556. WORD cbFrame : 2;
  7557. } FPO_DATA,*PFPO_DATA;
  7558. #define SIZEOF_RFPO_DATA 16
  7559. #define IMAGE_DEBUG_MISC_EXENAME 1
  7560. typedef struct _IMAGE_DEBUG_MISC {
  7561. DWORD DataType;
  7562. DWORD Length;
  7563. BOOLEAN Unicode;
  7564. BYTE Reserved[3];
  7565. BYTE Data[1];
  7566. } IMAGE_DEBUG_MISC,*PIMAGE_DEBUG_MISC;
  7567. typedef struct _IMAGE_FUNCTION_ENTRY {
  7568. DWORD StartingAddress;
  7569. DWORD EndingAddress;
  7570. DWORD EndOfPrologue;
  7571. } IMAGE_FUNCTION_ENTRY,*PIMAGE_FUNCTION_ENTRY;
  7572. typedef struct _IMAGE_FUNCTION_ENTRY64 {
  7573. ULONGLONG StartingAddress;
  7574. ULONGLONG EndingAddress;
  7575. __C89_NAMELESS union {
  7576. ULONGLONG EndOfPrologue;
  7577. ULONGLONG UnwindInfoAddress;
  7578. } DUMMYUNIONNAME;
  7579. } IMAGE_FUNCTION_ENTRY64,*PIMAGE_FUNCTION_ENTRY64;
  7580. typedef struct _IMAGE_SEPARATE_DEBUG_HEADER {
  7581. WORD Signature;
  7582. WORD Flags;
  7583. WORD Machine;
  7584. WORD Characteristics;
  7585. DWORD TimeDateStamp;
  7586. DWORD CheckSum;
  7587. DWORD ImageBase;
  7588. DWORD SizeOfImage;
  7589. DWORD NumberOfSections;
  7590. DWORD ExportedNamesSize;
  7591. DWORD DebugDirectorySize;
  7592. DWORD SectionAlignment;
  7593. DWORD Reserved[2];
  7594. } IMAGE_SEPARATE_DEBUG_HEADER,*PIMAGE_SEPARATE_DEBUG_HEADER;
  7595. typedef struct _NON_PAGED_DEBUG_INFO {
  7596. WORD Signature;
  7597. WORD Flags;
  7598. DWORD Size;
  7599. WORD Machine;
  7600. WORD Characteristics;
  7601. DWORD TimeDateStamp;
  7602. DWORD CheckSum;
  7603. DWORD SizeOfImage;
  7604. ULONGLONG ImageBase;
  7605. } NON_PAGED_DEBUG_INFO,*PNON_PAGED_DEBUG_INFO;
  7606. #define IMAGE_SEPARATE_DEBUG_SIGNATURE 0x4944
  7607. #define NON_PAGED_DEBUG_SIGNATURE 0x494E
  7608. #define IMAGE_SEPARATE_DEBUG_FLAGS_MASK 0x8000
  7609. #define IMAGE_SEPARATE_DEBUG_MISMATCH 0x8000
  7610. typedef struct _ImageArchitectureHeader {
  7611. unsigned int AmaskValue: 1;
  7612. int Adummy1 : 7;
  7613. unsigned int AmaskShift : 8;
  7614. int Adummy2 : 16;
  7615. DWORD FirstEntryRVA;
  7616. } IMAGE_ARCHITECTURE_HEADER,*PIMAGE_ARCHITECTURE_HEADER;
  7617. typedef struct _ImageArchitectureEntry {
  7618. DWORD FixupInstRVA;
  7619. DWORD NewInst;
  7620. } IMAGE_ARCHITECTURE_ENTRY,*PIMAGE_ARCHITECTURE_ENTRY;
  7621. #include "poppack.h"
  7622. #define IMPORT_OBJECT_HDR_SIG2 0xffff
  7623. typedef struct IMPORT_OBJECT_HEADER {
  7624. WORD Sig1;
  7625. WORD Sig2;
  7626. WORD Version;
  7627. WORD Machine;
  7628. DWORD TimeDateStamp;
  7629. DWORD SizeOfData;
  7630. __C89_NAMELESS union {
  7631. WORD Ordinal;
  7632. WORD Hint;
  7633. };
  7634. WORD Type : 2;
  7635. WORD NameType : 3;
  7636. WORD Reserved : 11;
  7637. } IMPORT_OBJECT_HEADER;
  7638. typedef enum IMPORT_OBJECT_TYPE {
  7639. IMPORT_OBJECT_CODE = 0,IMPORT_OBJECT_DATA = 1,IMPORT_OBJECT_CONST = 2
  7640. } IMPORT_OBJECT_TYPE;
  7641. typedef enum IMPORT_OBJECT_NAME_TYPE {
  7642. IMPORT_OBJECT_ORDINAL = 0,IMPORT_OBJECT_NAME = 1,IMPORT_OBJECT_NAME_NO_PREFIX = 2,IMPORT_OBJECT_NAME_UNDECORATE = 3
  7643. } IMPORT_OBJECT_NAME_TYPE;
  7644. #ifndef __IMAGE_COR20_HEADER_DEFINED__
  7645. #define __IMAGE_COR20_HEADER_DEFINED__
  7646. typedef enum ReplacesCorHdrNumericDefines {
  7647. COMIMAGE_FLAGS_ILONLY = 0x00000001,COMIMAGE_FLAGS_32BITREQUIRED = 0x00000002,COMIMAGE_FLAGS_IL_LIBRARY = 0x00000004,
  7648. COMIMAGE_FLAGS_STRONGNAMESIGNED = 0x00000008,COMIMAGE_FLAGS_TRACKDEBUGDATA = 0x00010000,COR_VERSION_MAJOR_V2 = 2,
  7649. COR_VERSION_MAJOR = COR_VERSION_MAJOR_V2,COR_VERSION_MINOR = 0,COR_DELETED_NAME_LENGTH = 8,COR_VTABLEGAP_NAME_LENGTH = 8,
  7650. NATIVE_TYPE_MAX_CB = 1,COR_ILMETHOD_SECT_SMALL_MAX_DATASIZE= 0xFF,IMAGE_COR_MIH_METHODRVA = 0x01,IMAGE_COR_MIH_EHRVA = 0x02,
  7651. IMAGE_COR_MIH_BASICBLOCK = 0x08,COR_VTABLE_32BIT =0x01,COR_VTABLE_64BIT =0x02,COR_VTABLE_FROM_UNMANAGED = 0x04,
  7652. COR_VTABLE_CALL_MOST_DERIVED = 0x10,IMAGE_COR_EATJ_THUNK_SIZE = 32,MAX_CLASS_NAME =1024,MAX_PACKAGE_NAME = 1024
  7653. } ReplacesCorHdrNumericDefines;
  7654. typedef struct IMAGE_COR20_HEADER {
  7655. DWORD cb;
  7656. WORD MajorRuntimeVersion;
  7657. WORD MinorRuntimeVersion;
  7658. IMAGE_DATA_DIRECTORY MetaData;
  7659. DWORD Flags;
  7660. __C89_NAMELESS union {
  7661. DWORD EntryPointToken;
  7662. DWORD EntryPointRVA;
  7663. } DUMMYUNIONNAME;
  7664. IMAGE_DATA_DIRECTORY Resources;
  7665. IMAGE_DATA_DIRECTORY StrongNameSignature;
  7666. IMAGE_DATA_DIRECTORY CodeManagerTable;
  7667. IMAGE_DATA_DIRECTORY VTableFixups;
  7668. IMAGE_DATA_DIRECTORY ExportAddressTableJumps;
  7669. IMAGE_DATA_DIRECTORY ManagedNativeHeader;
  7670. } IMAGE_COR20_HEADER,*PIMAGE_COR20_HEADER;
  7671. #endif
  7672. #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
  7673. NTSYSAPI WORD NTAPI RtlCaptureStackBackTrace (DWORD FramesToSkip, DWORD FramesToCapture, PVOID *BackTrace, PDWORD BackTraceHash);
  7674. #endif
  7675. #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
  7676. NTSYSAPI VOID NTAPI RtlCaptureContext (PCONTEXT ContextRecord);
  7677. NTSYSAPI SIZE_T NTAPI RtlCompareMemory (const VOID *Source1, const VOID *Source2, SIZE_T Length);
  7678. #if defined (__x86_64__)
  7679. #if _WIN32_WINNT >= 0x0602
  7680. NTSYSAPI DWORD NTAPI RtlAddGrowableFunctionTable (PVOID *DynamicTable, PRUNTIME_FUNCTION FunctionTable, DWORD EntryCount, DWORD MaximumEntryCount, ULONG_PTR RangeBase, ULONG_PTR RangeEnd);
  7681. NTSYSAPI VOID NTAPI RtlGrowFunctionTable (PVOID DynamicTable, DWORD NewEntryCount);
  7682. NTSYSAPI VOID NTAPI RtlDeleteGrowableFunctionTable (PVOID DynamicTable);
  7683. #endif
  7684. NTSYSAPI BOOLEAN __cdecl RtlAddFunctionTable (PRUNTIME_FUNCTION FunctionTable, DWORD EntryCount, DWORD64 BaseAddress);
  7685. NTSYSAPI BOOLEAN __cdecl RtlDeleteFunctionTable (PRUNTIME_FUNCTION FunctionTable);
  7686. NTSYSAPI BOOLEAN __cdecl RtlInstallFunctionTableCallback (DWORD64 TableIdentifier, DWORD64 BaseAddress, DWORD Length, PGET_RUNTIME_FUNCTION_CALLBACK Callback, PVOID Context, PCWSTR OutOfProcessCallbackDll);
  7687. NTSYSAPI VOID __cdecl RtlRestoreContext (PCONTEXT ContextRecord, struct _EXCEPTION_RECORD *ExceptionRecord);
  7688. #endif
  7689. #if defined (__arm__)
  7690. #if _WIN32_WINNT >= 0x0602
  7691. NTSYSAPI DWORD NTAPI RtlAddGrowableFunctionTable (PVOID *DynamicTable, PRUNTIME_FUNCTION FunctionTable, DWORD EntryCount, DWORD MaximumEntryCount, ULONG_PTR RangeBase, ULONG_PTR RangeEnd);
  7692. NTSYSAPI VOID NTAPI RtlGrowFunctionTable (PVOID DynamicTable, DWORD NewEntryCount);
  7693. NTSYSAPI VOID NTAPI RtlDeleteGrowableFunctionTable (PVOID DynamicTable);
  7694. #endif
  7695. NTSYSAPI BOOLEAN __cdecl RtlAddFunctionTable (PRUNTIME_FUNCTION FunctionTable, DWORD EntryCount, DWORD BaseAddress);
  7696. NTSYSAPI BOOLEAN __cdecl RtlDeleteFunctionTable (PRUNTIME_FUNCTION FunctionTable);
  7697. NTSYSAPI BOOLEAN __cdecl RtlInstallFunctionTableCallback (DWORD TableIdentifier, DWORD BaseAddress, DWORD Length, PGET_RUNTIME_FUNCTION_CALLBACK Callback, PVOID Context, PCWSTR OutOfProcessCallbackDll);
  7698. NTSYSAPI VOID __cdecl RtlRestoreContext (PCONTEXT ContextRecord, struct _EXCEPTION_RECORD *ExceptionRecord);
  7699. #endif
  7700. #if defined (__aarch64__)
  7701. NTSYSAPI DWORD NTAPI RtlAddGrowableFunctionTable (PVOID *DynamicTable, PRUNTIME_FUNCTION FunctionTable, DWORD EntryCount, DWORD MaximumEntryCount, ULONG_PTR RangeBase, ULONG_PTR RangeEnd);
  7702. NTSYSAPI VOID NTAPI RtlGrowFunctionTable (PVOID DynamicTable, DWORD NewEntryCount);
  7703. NTSYSAPI VOID NTAPI RtlDeleteGrowableFunctionTable (PVOID DynamicTable);
  7704. NTSYSAPI BOOLEAN __cdecl RtlAddFunctionTable (PRUNTIME_FUNCTION FunctionTable, DWORD EntryCount, ULONG_PTR BaseAddress);
  7705. NTSYSAPI BOOLEAN __cdecl RtlDeleteFunctionTable (PRUNTIME_FUNCTION FunctionTable);
  7706. NTSYSAPI BOOLEAN __cdecl RtlInstallFunctionTableCallback (ULONG_PTR TableIdentifier, ULONG_PTR BaseAddress, DWORD Length, PGET_RUNTIME_FUNCTION_CALLBACK Callback, PVOID Context, PCWSTR OutOfProcessCallbackDll);
  7707. NTSYSAPI VOID __cdecl RtlRestoreContext (PCONTEXT ContextRecord, struct _EXCEPTION_RECORD *ExceptionRecord);
  7708. #endif
  7709. #if defined (__ia64__)
  7710. NTSYSAPI BOOLEAN NTAPI RtlAddFunctionTable (PRUNTIME_FUNCTION FunctionTable, DWORD EntryCount, ULONGLONG BaseAddress, ULONGLONG TargetGp);
  7711. NTSYSAPI BOOLEAN NTAPI RtlDeleteFunctionTable (PRUNTIME_FUNCTION FunctionTable);
  7712. NTSYSAPI BOOLEAN NTAPI RtlInstallFunctionTableCallback (DWORD64 TableIdentifier, DWORD64 BaseAddress, DWORD Length, DWORD64 TargetGp, PGET_RUNTIME_FUNCTION_CALLBACK Callback, PVOID Context, PCWSTR OutOfProcessCallbackDll);
  7713. NTSYSAPI VOID NTAPI RtlRestoreContext (PCONTEXT ContextRecord, struct _EXCEPTION_RECORD *ExceptionRecord);
  7714. #endif
  7715. #endif
  7716. #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
  7717. NTSYSAPI VOID NTAPI RtlUnwind (PVOID TargetFrame, PVOID TargetIp, PEXCEPTION_RECORD ExceptionRecord, PVOID ReturnValue);
  7718. NTSYSAPI PVOID NTAPI RtlPcToFileHeader (PVOID PcValue, PVOID *BaseOfImage);
  7719. #if defined (__x86_64__)
  7720. NTSYSAPI PRUNTIME_FUNCTION NTAPI RtlLookupFunctionEntry (DWORD64 ControlPc, PDWORD64 ImageBase, PUNWIND_HISTORY_TABLE HistoryTable);
  7721. NTSYSAPI VOID NTAPI RtlUnwindEx (PVOID TargetFrame, PVOID TargetIp, PEXCEPTION_RECORD ExceptionRecord, PVOID ReturnValue, PCONTEXT ContextRecord, PUNWIND_HISTORY_TABLE HistoryTable);
  7722. NTSYSAPI PEXCEPTION_ROUTINE NTAPI RtlVirtualUnwind (DWORD HandlerType, DWORD64 ImageBase, DWORD64 ControlPc, PRUNTIME_FUNCTION FunctionEntry, PCONTEXT ContextRecord, PVOID *HandlerData, PDWORD64 EstablisherFrame, PKNONVOLATILE_CONTEXT_POINTERS ContextPointers);
  7723. #endif
  7724. #if defined (__arm__)
  7725. NTSYSAPI PRUNTIME_FUNCTION NTAPI RtlLookupFunctionEntry (ULONG_PTR ControlPc, PDWORD ImageBase, PUNWIND_HISTORY_TABLE HistoryTable);
  7726. NTSYSAPI VOID NTAPI RtlUnwindEx (PVOID TargetFrame, PVOID TargetIp, PEXCEPTION_RECORD ExceptionRecord, PVOID ReturnValue, PCONTEXT ContextRecord, PUNWIND_HISTORY_TABLE HistoryTable);
  7727. NTSYSAPI PEXCEPTION_ROUTINE NTAPI RtlVirtualUnwind (DWORD HandlerType, DWORD ImageBase, DWORD ControlPc, PRUNTIME_FUNCTION FunctionEntry, PCONTEXT ContextRecord, PVOID *HandlerData, PDWORD EstablisherFrame, PKNONVOLATILE_CONTEXT_POINTERS ContextPointers);
  7728. #endif
  7729. #if defined (__aarch64__)
  7730. NTSYSAPI PRUNTIME_FUNCTION NTAPI RtlLookupFunctionEntry (ULONG_PTR ControlPc, PULONG_PTR ImageBase, PUNWIND_HISTORY_TABLE HistoryTable);
  7731. NTSYSAPI VOID NTAPI RtlUnwindEx (PVOID TargetFrame, PVOID TargetIp, PEXCEPTION_RECORD ExceptionRecord, PVOID ReturnValue, PCONTEXT ContextRecord, PUNWIND_HISTORY_TABLE HistoryTable);
  7732. NTSYSAPI PEXCEPTION_ROUTINE NTAPI RtlVirtualUnwind (DWORD HandlerType, ULONG_PTR ImageBase, ULONG_PTR ControlPc, PRUNTIME_FUNCTION FunctionEntry, PCONTEXT ContextRecord, PVOID *HandlerData, PULONG_PTR EstablisherFrame, PKNONVOLATILE_CONTEXT_POINTERS ContextPointers);
  7733. #endif
  7734. #if defined (__ia64__)
  7735. NTSYSAPI PRUNTIME_FUNCTION NTAPI RtlLookupFunctionEntry (ULONGLONG ControlPc, PULONGLONG ImageBase, PULONGLONG TargetGp);
  7736. NTSYSAPI VOID NTAPI RtlUnwindEx (FRAME_POINTERS TargetFrame, PVOID TargetIp, PEXCEPTION_RECORD ExceptionRecord, PVOID ReturnValue, PCONTEXT ContextRecord, PUNWIND_HISTORY_TABLE HistoryTable);
  7737. NTSYSAPI ULONGLONG NTAPI RtlVirtualUnwind (ULONGLONG ImageBase, ULONGLONG ControlPc, PRUNTIME_FUNCTION FunctionEntry, PCONTEXT ContextRecord, PBOOLEAN InFunction, PFRAME_POINTERS EstablisherFrame, PKNONVOLATILE_CONTEXT_POINTERS ContextPointers);
  7738. #endif
  7739. #endif
  7740. #include <string.h>
  7741. #ifndef _SLIST_HEADER_
  7742. #define _SLIST_HEADER_
  7743. #if defined (_WIN64)
  7744. typedef struct DECLSPEC_ALIGN (16) _SLIST_ENTRY {
  7745. struct _SLIST_ENTRY *Next;
  7746. } SLIST_ENTRY,*PSLIST_ENTRY;
  7747. typedef union DECLSPEC_ALIGN (16) _SLIST_HEADER {
  7748. __C89_NAMELESS struct {
  7749. ULONGLONG Alignment;
  7750. ULONGLONG Region;
  7751. } DUMMYSTRUCTNAME;
  7752. struct {
  7753. ULONGLONG Depth:16;
  7754. ULONGLONG Sequence:9;
  7755. ULONGLONG NextEntry:39;
  7756. ULONGLONG HeaderType:1;
  7757. ULONGLONG Init:1;
  7758. ULONGLONG Reserved:59;
  7759. ULONGLONG Region:3;
  7760. } Header8;
  7761. struct {
  7762. ULONGLONG Depth:16;
  7763. ULONGLONG Sequence:48;
  7764. ULONGLONG HeaderType:1;
  7765. ULONGLONG Reserved:3;
  7766. ULONGLONG NextEntry:60;
  7767. } HeaderX64;
  7768. } SLIST_HEADER,*PSLIST_HEADER;
  7769. #else /* _WIN64 */
  7770. typedef struct _SINGLE_LIST_ENTRY SLIST_ENTRY,*PSLIST_ENTRY;
  7771. typedef union _SLIST_HEADER {
  7772. ULONGLONG Alignment;
  7773. __C89_NAMELESS struct {
  7774. SLIST_ENTRY Next;
  7775. WORD Depth;
  7776. WORD Sequence;
  7777. } DUMMYSTRUCTNAME;
  7778. } SLIST_HEADER,*PSLIST_HEADER;
  7779. #endif /* _WIN64 */
  7780. #endif /* _SLIST_HEADER_ */
  7781. #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
  7782. NTSYSAPI VOID NTAPI RtlInitializeSListHead (PSLIST_HEADER ListHead);
  7783. NTSYSAPI PSLIST_ENTRY NTAPI RtlFirstEntrySList (const SLIST_HEADER *ListHead);
  7784. NTSYSAPI PSLIST_ENTRY NTAPI RtlInterlockedPopEntrySList (PSLIST_HEADER ListHead);
  7785. NTSYSAPI PSLIST_ENTRY NTAPI RtlInterlockedPushEntrySList (PSLIST_HEADER ListHead, PSLIST_ENTRY ListEntry);
  7786. NTSYSAPI PSLIST_ENTRY NTAPI RtlInterlockedPushListSListEx (PSLIST_HEADER ListHead, PSLIST_ENTRY List, PSLIST_ENTRY ListEnd, DWORD Count);
  7787. NTSYSAPI PSLIST_ENTRY NTAPI RtlInterlockedFlushSList (PSLIST_HEADER ListHead);
  7788. NTSYSAPI WORD NTAPI RtlQueryDepthSList (PSLIST_HEADER ListHead);
  7789. #endif
  7790. #ifndef _RTL_RUN_ONCE_DEF
  7791. #define _RTL_RUN_ONCE_DEF 1
  7792. typedef struct _RTL_RUN_ONCE { PVOID Ptr; } RTL_RUN_ONCE, *PRTL_RUN_ONCE;
  7793. typedef DWORD (WINAPI *PRTL_RUN_ONCE_INIT_FN)(PRTL_RUN_ONCE, PVOID, PVOID *);
  7794. #define RTL_RUN_ONCE_INIT {0}
  7795. #define RTL_RUN_ONCE_CHECK_ONLY __MSABI_LONG(1U)
  7796. #define RTL_RUN_ONCE_ASYNC __MSABI_LONG(2U)
  7797. #define RTL_RUN_ONCE_INIT_FAILED __MSABI_LONG(4U)
  7798. #define RTL_RUN_ONCE_CTX_RESERVED_BITS 2
  7799. #endif
  7800. typedef struct _RTL_BARRIER {
  7801. DWORD Reserved1;
  7802. DWORD Reserved2;
  7803. ULONG_PTR Reserved3[2];
  7804. DWORD Reserved4;
  7805. DWORD Reserved5;
  7806. } RTL_BARRIER,*PRTL_BARRIER;
  7807. #define FAST_FAIL_LEGACY_GS_VIOLATION 0
  7808. #define FAST_FAIL_VTGUARD_CHECK_FAILURE 1
  7809. #define FAST_FAIL_STACK_COOKIE_CHECK_FAILURE 2
  7810. #define FAST_FAIL_CORRUPT_LIST_ENTRY 3
  7811. #define FAST_FAIL_INCORRECT_STACK 4
  7812. #define FAST_FAIL_INVALID_ARG 5
  7813. #define FAST_FAIL_GS_COOKIE_INIT 6
  7814. #define FAST_FAIL_FATAL_APP_EXIT 7
  7815. #define FAST_FAIL_RANGE_CHECK_FAILURE 8
  7816. #define FAST_FAIL_UNSAFE_REGISTRY_ACCESS 9
  7817. #define FAST_FAIL_INVALID_FAST_FAIL_CODE 0xffffffff
  7818. #define HEAP_NO_SERIALIZE 0x00000001
  7819. #define HEAP_GROWABLE 0x00000002
  7820. #define HEAP_GENERATE_EXCEPTIONS 0x00000004
  7821. #define HEAP_ZERO_MEMORY 0x00000008
  7822. #define HEAP_REALLOC_IN_PLACE_ONLY 0x00000010
  7823. #define HEAP_TAIL_CHECKING_ENABLED 0x00000020
  7824. #define HEAP_FREE_CHECKING_ENABLED 0x00000040
  7825. #define HEAP_DISABLE_COALESCE_ON_FREE 0x00000080
  7826. #define HEAP_CREATE_ALIGN_16 0x00010000
  7827. #define HEAP_CREATE_ENABLE_TRACING 0x00020000
  7828. #define HEAP_CREATE_ENABLE_EXECUTE 0x00040000
  7829. #define HEAP_MAXIMUM_TAG 0x0FFF
  7830. #define HEAP_PSEUDO_TAG_FLAG 0x8000
  7831. #define HEAP_TAG_SHIFT 18
  7832. /* Let this macro fail for non-desktop mode. AFAIU this should be better an inline-function ... */
  7833. #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
  7834. #define HEAP_MAKE_TAG_FLAGS(b,o) ((DWORD)((b) + ((o) << 18)))
  7835. #endif
  7836. #define IS_TEXT_UNICODE_ASCII16 0x0001
  7837. #define IS_TEXT_UNICODE_REVERSE_ASCII16 0x0010
  7838. #define IS_TEXT_UNICODE_STATISTICS 0x0002
  7839. #define IS_TEXT_UNICODE_REVERSE_STATISTICS 0x0020
  7840. #define IS_TEXT_UNICODE_CONTROLS 0x0004
  7841. #define IS_TEXT_UNICODE_REVERSE_CONTROLS 0x0040
  7842. #define IS_TEXT_UNICODE_SIGNATURE 0x0008
  7843. #define IS_TEXT_UNICODE_REVERSE_SIGNATURE 0x0080
  7844. #define IS_TEXT_UNICODE_ILLEGAL_CHARS 0x0100
  7845. #define IS_TEXT_UNICODE_ODD_LENGTH 0x0200
  7846. #define IS_TEXT_UNICODE_DBCS_LEADBYTE 0x0400
  7847. #define IS_TEXT_UNICODE_NULL_BYTES 0x1000
  7848. #define IS_TEXT_UNICODE_UNICODE_MASK 0x000F
  7849. #define IS_TEXT_UNICODE_REVERSE_MASK 0x00F0
  7850. #define IS_TEXT_UNICODE_NOT_UNICODE_MASK 0x0F00
  7851. #define IS_TEXT_UNICODE_NOT_ASCII_MASK 0xF000
  7852. #define COMPRESSION_FORMAT_NONE (0x0000)
  7853. #define COMPRESSION_FORMAT_DEFAULT (0x0001)
  7854. #define COMPRESSION_FORMAT_LZNT1 (0x0002)
  7855. #define COMPRESSION_FORMAT_XPRESS (0x0003)
  7856. #define COMPRESSION_FORMAT_XPRESS_HUFF (0x0004)
  7857. #define COMPRESSION_ENGINE_STANDARD (0x0000)
  7858. #define COMPRESSION_ENGINE_MAXIMUM (0x0100)
  7859. #define COMPRESSION_ENGINE_HIBER (0x0200)
  7860. #ifndef __CRT__NO_INLINE
  7861. #if _DBG_MEMCPY_INLINE_ && !defined(_MEMCPY_INLINE_) && !defined(_CRTBLD)
  7862. #define _MEMCPY_INLINE_
  7863. __CRT_INLINE PVOID __cdecl memcpy_inline(void *dst,const void *src,size_t size) {
  7864. if(((char *)dst > (char *)src) && ((char *)dst < ((char *)src + size))) {
  7865. __debugbreak();
  7866. }
  7867. return memcpy(dst,src,size);
  7868. }
  7869. #define memcpy memcpy_inline
  7870. #endif /* _DBG_MEMCPY_INLINE_ && !defined(_MEMCPY_INLINE_) && !defined(_CRTBLD) */
  7871. #endif /* !__CRT__NO_INLINE */
  7872. #define RtlEqualMemory(Destination,Source,Length) (!memcmp((Destination),(Source),(Length)))
  7873. #define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length))
  7874. #define RtlCopyMemory(Destination,Source,Length) memcpy((Destination),(Source),(Length))
  7875. #define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length))
  7876. #define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length))
  7877. PVOID WINAPI RtlSecureZeroMemory(PVOID ptr,SIZE_T cnt);
  7878. #if !defined (__CRT__NO_INLINE) && !defined (__WIDL__)
  7879. __CRT_INLINE PVOID WINAPI RtlSecureZeroMemory(PVOID ptr,SIZE_T cnt) {
  7880. volatile char *vptr =(volatile char *)ptr;
  7881. #ifdef __x86_64
  7882. __stosb((PBYTE)((DWORD64)vptr),0,cnt);
  7883. #else
  7884. while(cnt) {
  7885. *vptr++ = 0;
  7886. cnt--;
  7887. }
  7888. #endif /* __x86_64 */
  7889. return ptr;
  7890. }
  7891. #endif /* !__CRT__NO_INLINE // !__WIDL__ */
  7892. typedef struct _MESSAGE_RESOURCE_ENTRY {
  7893. WORD Length;
  7894. WORD Flags;
  7895. BYTE Text[1];
  7896. } MESSAGE_RESOURCE_ENTRY,*PMESSAGE_RESOURCE_ENTRY;
  7897. #define SEF_DACL_AUTO_INHERIT 0x01
  7898. #define SEF_SACL_AUTO_INHERIT 0x02
  7899. #define SEF_DEFAULT_DESCRIPTOR_FOR_OBJECT 0x04
  7900. #define SEF_AVOID_PRIVILEGE_CHECK 0x08
  7901. #define SEF_AVOID_OWNER_CHECK 0x10
  7902. #define SEF_DEFAULT_OWNER_FROM_PARENT 0x20
  7903. #define SEF_DEFAULT_GROUP_FROM_PARENT 0x40
  7904. #define SEF_MACL_NO_WRITE_UP 0x100
  7905. #define SEF_MACL_NO_READ_UP 0x200
  7906. #define SEF_MACL_NO_EXECUTE_UP 0x400
  7907. #define SEF_AVOID_OWNER_RESTRICTION 0x1000
  7908. #define SEF_MACL_VALID_FLAGS (SEF_MACL_NO_WRITE_UP | SEF_MACL_NO_READ_UP | SEF_MACL_NO_EXECUTE_UP)
  7909. #define MESSAGE_RESOURCE_UNICODE 0x0001
  7910. typedef struct _MESSAGE_RESOURCE_BLOCK {
  7911. DWORD LowId;
  7912. DWORD HighId;
  7913. DWORD OffsetToEntries;
  7914. } MESSAGE_RESOURCE_BLOCK,*PMESSAGE_RESOURCE_BLOCK;
  7915. typedef struct _MESSAGE_RESOURCE_DATA {
  7916. DWORD NumberOfBlocks;
  7917. MESSAGE_RESOURCE_BLOCK Blocks[1];
  7918. } MESSAGE_RESOURCE_DATA,*PMESSAGE_RESOURCE_DATA;
  7919. typedef struct _OSVERSIONINFOA {
  7920. DWORD dwOSVersionInfoSize;
  7921. DWORD dwMajorVersion;
  7922. DWORD dwMinorVersion;
  7923. DWORD dwBuildNumber;
  7924. DWORD dwPlatformId;
  7925. CHAR szCSDVersion[128];
  7926. } OSVERSIONINFOA,*POSVERSIONINFOA,*LPOSVERSIONINFOA;
  7927. typedef struct _OSVERSIONINFOW {
  7928. DWORD dwOSVersionInfoSize;
  7929. DWORD dwMajorVersion;
  7930. DWORD dwMinorVersion;
  7931. DWORD dwBuildNumber;
  7932. DWORD dwPlatformId;
  7933. WCHAR szCSDVersion[128];
  7934. } OSVERSIONINFOW,*POSVERSIONINFOW,*LPOSVERSIONINFOW,RTL_OSVERSIONINFOW,*PRTL_OSVERSIONINFOW;
  7935. __MINGW_TYPEDEF_AW(OSVERSIONINFO)
  7936. __MINGW_TYPEDEF_AW(POSVERSIONINFO)
  7937. __MINGW_TYPEDEF_AW(LPOSVERSIONINFO)
  7938. typedef struct _OSVERSIONINFOEXA {
  7939. DWORD dwOSVersionInfoSize;
  7940. DWORD dwMajorVersion;
  7941. DWORD dwMinorVersion;
  7942. DWORD dwBuildNumber;
  7943. DWORD dwPlatformId;
  7944. CHAR szCSDVersion[128];
  7945. WORD wServicePackMajor;
  7946. WORD wServicePackMinor;
  7947. WORD wSuiteMask;
  7948. BYTE wProductType;
  7949. BYTE wReserved;
  7950. } OSVERSIONINFOEXA,*POSVERSIONINFOEXA,*LPOSVERSIONINFOEXA;
  7951. typedef struct _OSVERSIONINFOEXW {
  7952. DWORD dwOSVersionInfoSize;
  7953. DWORD dwMajorVersion;
  7954. DWORD dwMinorVersion;
  7955. DWORD dwBuildNumber;
  7956. DWORD dwPlatformId;
  7957. WCHAR szCSDVersion[128];
  7958. WORD wServicePackMajor;
  7959. WORD wServicePackMinor;
  7960. WORD wSuiteMask;
  7961. BYTE wProductType;
  7962. BYTE wReserved;
  7963. } OSVERSIONINFOEXW,*POSVERSIONINFOEXW,*LPOSVERSIONINFOEXW,RTL_OSVERSIONINFOEXW,*PRTL_OSVERSIONINFOEXW;
  7964. __MINGW_TYPEDEF_AW(OSVERSIONINFOEX)
  7965. __MINGW_TYPEDEF_AW(POSVERSIONINFOEX)
  7966. __MINGW_TYPEDEF_AW(LPOSVERSIONINFOEX)
  7967. #define VER_EQUAL 1
  7968. #define VER_GREATER 2
  7969. #define VER_GREATER_EQUAL 3
  7970. #define VER_LESS 4
  7971. #define VER_LESS_EQUAL 5
  7972. #define VER_AND 6
  7973. #define VER_OR 7
  7974. #define VER_CONDITION_MASK 7
  7975. #define VER_NUM_BITS_PER_CONDITION_MASK 3
  7976. #define VER_MINORVERSION 0x0000001
  7977. #define VER_MAJORVERSION 0x0000002
  7978. #define VER_BUILDNUMBER 0x0000004
  7979. #define VER_PLATFORMID 0x0000008
  7980. #define VER_SERVICEPACKMINOR 0x0000010
  7981. #define VER_SERVICEPACKMAJOR 0x0000020
  7982. #define VER_SUITENAME 0x0000040
  7983. #define VER_PRODUCT_TYPE 0x0000080
  7984. #define VER_NT_WORKSTATION 0x0000001
  7985. #define VER_NT_DOMAIN_CONTROLLER 0x0000002
  7986. #define VER_NT_SERVER 0x0000003
  7987. #define VER_PLATFORM_WIN32s 0
  7988. #define VER_PLATFORM_WIN32_WINDOWS 1
  7989. #define VER_PLATFORM_WIN32_NT 2
  7990. #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
  7991. #if !defined (_WINBASE_) && !defined (__WIDL__)
  7992. NTSYSAPI ULONGLONG NTAPI VerSetConditionMask (ULONGLONG ConditionMask, DWORD TypeMask, BYTE Condition);
  7993. #endif
  7994. #define VER_SET_CONDITION(_m_,_t_,_c_) ((_m_) = VerSetConditionMask((_m_),(_t_),(_c_)))
  7995. #if _WIN32_WINNT >= 0x0600 && !defined (__WIDL__)
  7996. NTSYSAPI BOOLEAN NTAPI RtlGetProductInfo (DWORD OSMajorVersion, DWORD OSMinorVersion, DWORD SpMajorVersion, DWORD SpMinorVersion, PDWORD ReturnedProductType);
  7997. #endif
  7998. #endif
  7999. #define RTL_UMS_VERSION (0x0100)
  8000. typedef enum _RTL_UMS_THREAD_INFO_CLASS {
  8001. UmsThreadInvalidInfoClass = 0,
  8002. UmsThreadUserContext,
  8003. UmsThreadPriority,
  8004. UmsThreadAffinity,
  8005. UmsThreadTeb,
  8006. UmsThreadIsSuspended,
  8007. UmsThreadIsTerminated,
  8008. UmsThreadMaxInfoClass
  8009. } RTL_UMS_THREAD_INFO_CLASS,*PRTL_UMS_THREAD_INFO_CLASS;
  8010. typedef enum _RTL_UMS_SCHEDULER_REASON {
  8011. UmsSchedulerStartup = 0,
  8012. UmsSchedulerThreadBlocked,
  8013. UmsSchedulerThreadYield,
  8014. } RTL_UMS_SCHEDULER_REASON,*PRTL_UMS_SCHEDULER_REASON;
  8015. typedef VOID NTAPI RTL_UMS_SCHEDULER_ENTRY_POINT (RTL_UMS_SCHEDULER_REASON Reason, ULONG_PTR ActivationPayload, PVOID SchedulerParam);
  8016. typedef RTL_UMS_SCHEDULER_ENTRY_POINT *PRTL_UMS_SCHEDULER_ENTRY_POINT;
  8017. #if _WIN32_WINNT >= 0x0602
  8018. #ifndef IS_VALIDATION_ENABLED
  8019. #define IS_VALIDATION_ENABLED(C, L) ((L) & (C))
  8020. #define VRL_PREDEFINED_CLASS_BEGIN (1)
  8021. #define VRL_CUSTOM_CLASS_BEGIN (1 << 8)
  8022. #define VRL_CLASS_CONSISTENCY (VRL_PREDEFINED_CLASS_BEGIN)
  8023. #define VRL_ENABLE_KERNEL_BREAKS (1 << 31)
  8024. #endif
  8025. #define CTMF_INCLUDE_APPCONTAINER __MSABI_LONG(0x1U)
  8026. #define CTMF_VALID_FLAGS (CTMF_INCLUDE_APPCONTAINER)
  8027. #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
  8028. NTSYSAPI DWORD NTAPI RtlCrc32 (const void *Buffer, size_t Size, DWORD InitialCrc);
  8029. NTSYSAPI ULONGLONG NTAPI RtlCrc64 (const void *Buffer, size_t Size, ULONGLONG InitialCrc);
  8030. #endif
  8031. #endif
  8032. typedef struct _RTL_CRITICAL_SECTION_DEBUG {
  8033. WORD Type;
  8034. WORD CreatorBackTraceIndex;
  8035. struct _RTL_CRITICAL_SECTION *CriticalSection;
  8036. LIST_ENTRY ProcessLocksList;
  8037. DWORD EntryCount;
  8038. DWORD ContentionCount;
  8039. DWORD Flags;
  8040. WORD CreatorBackTraceIndexHigh;
  8041. WORD SpareWORD;
  8042. } RTL_CRITICAL_SECTION_DEBUG,*PRTL_CRITICAL_SECTION_DEBUG,RTL_RESOURCE_DEBUG,*PRTL_RESOURCE_DEBUG;
  8043. #define RTL_CRITSECT_TYPE 0
  8044. #define RTL_RESOURCE_TYPE 1
  8045. #define RTL_CRITICAL_SECTION_FLAG_NO_DEBUG_INFO 0x01000000
  8046. #define RTL_CRITICAL_SECTION_FLAG_DYNAMIC_SPIN 0x02000000
  8047. #define RTL_CRITICAL_SECTION_FLAG_STATIC_INIT 0x04000000
  8048. #define RTL_CRITICAL_SECTION_FLAG_RESOURCE_TYPE 0x08000000
  8049. #define RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO 0x10000000
  8050. #define RTL_CRITICAL_SECTION_ALL_FLAG_BITS 0xff000000
  8051. #define RTL_CRITICAL_SECTION_FLAG_RESERVED (RTL_CRITICAL_SECTION_ALL_FLAG_BITS & (~(RTL_CRITICAL_SECTION_FLAG_NO_DEBUG_INFO | RTL_CRITICAL_SECTION_FLAG_DYNAMIC_SPIN | RTL_CRITICAL_SECTION_FLAG_STATIC_INIT | RTL_CRITICAL_SECTION_FLAG_RESOURCE_TYPE | RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO)))
  8052. #define RTL_CRITICAL_SECTION_DEBUG_FLAG_STATIC_INIT 0x00000001
  8053. #include <pshpack8.h>
  8054. typedef struct _RTL_CRITICAL_SECTION {
  8055. PRTL_CRITICAL_SECTION_DEBUG DebugInfo;
  8056. LONG LockCount;
  8057. LONG RecursionCount;
  8058. HANDLE OwningThread;
  8059. HANDLE LockSemaphore;
  8060. ULONG_PTR SpinCount;
  8061. } RTL_CRITICAL_SECTION,*PRTL_CRITICAL_SECTION;
  8062. #include <poppack.h>
  8063. typedef struct _RTL_SRWLOCK { PVOID Ptr; } RTL_SRWLOCK,*PRTL_SRWLOCK;
  8064. typedef struct _RTL_CONDITION_VARIABLE { PVOID Ptr; } RTL_CONDITION_VARIABLE,*PRTL_CONDITION_VARIABLE;
  8065. #define RTL_SRWLOCK_INIT {0}
  8066. #define RTL_CONDITION_VARIABLE_INIT {0}
  8067. #define RTL_CONDITION_VARIABLE_LOCKMODE_SHARED 0x1
  8068. typedef VOID (NTAPI *PAPCFUNC) (ULONG_PTR Parameter);
  8069. typedef LONG (NTAPI *PVECTORED_EXCEPTION_HANDLER) (struct _EXCEPTION_POINTERS *ExceptionInfo);
  8070. typedef enum _HEAP_INFORMATION_CLASS {
  8071. HeapCompatibilityInformation,
  8072. HeapEnableTerminationOnCorruption
  8073. } HEAP_INFORMATION_CLASS;
  8074. typedef VOID (NTAPI *WORKERCALLBACKFUNC) (PVOID);
  8075. typedef VOID (NTAPI *APC_CALLBACK_FUNCTION) (DWORD, PVOID, PVOID);
  8076. typedef VOID (NTAPI *WAITORTIMERCALLBACKFUNC) (PVOID, BOOLEAN);
  8077. typedef WAITORTIMERCALLBACKFUNC WAITORTIMERCALLBACK;
  8078. typedef VOID (NTAPI *PFLS_CALLBACK_FUNCTION) (PVOID lpFlsData);
  8079. typedef BOOLEAN (NTAPI *PSECURE_MEMORY_CACHE_CALLBACK) (PVOID Addr, SIZE_T Range);
  8080. #define WT_EXECUTEDEFAULT 0x00000000
  8081. #define WT_EXECUTEINIOTHREAD 0x00000001
  8082. #define WT_EXECUTEINUITHREAD 0x00000002
  8083. #define WT_EXECUTEINWAITTHREAD 0x00000004
  8084. #define WT_EXECUTEONLYONCE 0x00000008
  8085. #define WT_EXECUTEINTIMERTHREAD 0x00000020
  8086. #define WT_EXECUTELONGFUNCTION 0x00000010
  8087. #define WT_EXECUTEINPERSISTENTIOTHREAD 0x00000040
  8088. #define WT_EXECUTEINPERSISTENTTHREAD 0x00000080
  8089. #define WT_TRANSFER_IMPERSONATION 0x00000100
  8090. #define WT_SET_MAX_THREADPOOL_THREADS(Flags, Limit) ((Flags) |= (Limit) << 16)
  8091. #define WT_EXECUTEDELETEWAIT 0x00000008
  8092. #define WT_EXECUTEINLONGTHREAD 0x00000010
  8093. typedef enum _ACTIVATION_CONTEXT_INFO_CLASS {
  8094. ActivationContextBasicInformation = 1,
  8095. ActivationContextDetailedInformation = 2,
  8096. AssemblyDetailedInformationInActivationContext = 3,
  8097. FileInformationInAssemblyOfAssemblyInActivationContext = 4,
  8098. RunlevelInformationInActivationContext = 5,
  8099. CompatibilityInformationInActivationContext = 6,
  8100. ActivationContextManifestResourceName = 7,
  8101. MaxActivationContextInfoClass,
  8102. AssemblyDetailedInformationInActivationContxt = 3,
  8103. FileInformationInAssemblyOfAssemblyInActivationContxt = 4
  8104. } ACTIVATION_CONTEXT_INFO_CLASS;
  8105. typedef enum {
  8106. ACTCTX_RUN_LEVEL_UNSPECIFIED = 0,
  8107. ACTCTX_RUN_LEVEL_AS_INVOKER,
  8108. ACTCTX_RUN_LEVEL_HIGHEST_AVAILABLE,
  8109. ACTCTX_RUN_LEVEL_REQUIRE_ADMIN,
  8110. ACTCTX_RUN_LEVEL_NUMBERS
  8111. } ACTCTX_REQUESTED_RUN_LEVEL;
  8112. typedef enum {
  8113. ACTCTX_COMPATIBILITY_ELEMENT_TYPE_UNKNOWN = 0,
  8114. ACTCTX_COMPATIBILITY_ELEMENT_TYPE_OS,
  8115. ACTCTX_COMPATIBILITY_ELEMENT_TYPE_MITIGATION
  8116. } ACTCTX_COMPATIBILITY_ELEMENT_TYPE;
  8117. typedef struct _ACTIVATION_CONTEXT_QUERY_INDEX {
  8118. DWORD ulAssemblyIndex;
  8119. DWORD ulFileIndexInAssembly;
  8120. } ACTIVATION_CONTEXT_QUERY_INDEX,*PACTIVATION_CONTEXT_QUERY_INDEX;
  8121. typedef struct _ASSEMBLY_FILE_DETAILED_INFORMATION {
  8122. DWORD ulFlags;
  8123. DWORD ulFilenameLength;
  8124. DWORD ulPathLength;
  8125. PCWSTR lpFileName;
  8126. PCWSTR lpFilePath;
  8127. } ASSEMBLY_FILE_DETAILED_INFORMATION,*PASSEMBLY_FILE_DETAILED_INFORMATION;
  8128. typedef struct _ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION {
  8129. DWORD ulFlags;
  8130. DWORD ulEncodedAssemblyIdentityLength;
  8131. DWORD ulManifestPathType;
  8132. DWORD ulManifestPathLength;
  8133. LARGE_INTEGER liManifestLastWriteTime;
  8134. DWORD ulPolicyPathType;
  8135. DWORD ulPolicyPathLength;
  8136. LARGE_INTEGER liPolicyLastWriteTime;
  8137. DWORD ulMetadataSatelliteRosterIndex;
  8138. DWORD ulManifestVersionMajor;
  8139. DWORD ulManifestVersionMinor;
  8140. DWORD ulPolicyVersionMajor;
  8141. DWORD ulPolicyVersionMinor;
  8142. DWORD ulAssemblyDirectoryNameLength;
  8143. PCWSTR lpAssemblyEncodedAssemblyIdentity;
  8144. PCWSTR lpAssemblyManifestPath;
  8145. PCWSTR lpAssemblyPolicyPath;
  8146. PCWSTR lpAssemblyDirectoryName;
  8147. DWORD ulFileCount;
  8148. } ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION,*PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION;
  8149. typedef struct _ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION {
  8150. DWORD ulFlags;
  8151. ACTCTX_REQUESTED_RUN_LEVEL RunLevel;
  8152. DWORD UiAccess;
  8153. } ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION,*PACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION;
  8154. typedef struct _COMPATIBILITY_CONTEXT_ELEMENT {
  8155. GUID Id;
  8156. ACTCTX_COMPATIBILITY_ELEMENT_TYPE Type;
  8157. } COMPATIBILITY_CONTEXT_ELEMENT,*PCOMPATIBILITY_CONTEXT_ELEMENT;
  8158. /*Vista: {e2011457-1546-43c5-a5fe-008deee3d3f0}*/
  8159. /*Seven: {35138b9a-5d96-4fbd-8e2d-a2440225f93a}*/
  8160. typedef struct _ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION {
  8161. DWORD ElementCount;
  8162. COMPATIBILITY_CONTEXT_ELEMENT Elements[];
  8163. } ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION,*PACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION;
  8164. #define MAX_SUPPORTED_OS_NUM (4)
  8165. typedef struct _SUPPORTED_OS_INFO {
  8166. WORD OsCount;
  8167. WORD MitigationExist;
  8168. WORD OsList[MAX_SUPPORTED_OS_NUM];
  8169. } SUPPORTED_OS_INFO,*PSUPPORTED_OS_INFO;
  8170. typedef struct _ACTIVATION_CONTEXT_DETAILED_INFORMATION {
  8171. DWORD dwFlags;
  8172. DWORD ulFormatVersion;
  8173. DWORD ulAssemblyCount;
  8174. DWORD ulRootManifestPathType;
  8175. DWORD ulRootManifestPathChars;
  8176. DWORD ulRootConfigurationPathType;
  8177. DWORD ulRootConfigurationPathChars;
  8178. DWORD ulAppDirPathType;
  8179. DWORD ulAppDirPathChars;
  8180. PCWSTR lpRootManifestPath;
  8181. PCWSTR lpRootConfigurationPath;
  8182. PCWSTR lpAppDirPath;
  8183. } ACTIVATION_CONTEXT_DETAILED_INFORMATION,*PACTIVATION_CONTEXT_DETAILED_INFORMATION;
  8184. typedef const struct _ACTIVATION_CONTEXT_QUERY_INDEX *PCACTIVATION_CONTEXT_QUERY_INDEX;
  8185. typedef const ASSEMBLY_FILE_DETAILED_INFORMATION *PCASSEMBLY_FILE_DETAILED_INFORMATION;
  8186. typedef const struct _ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION *PCACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION;
  8187. typedef const struct _ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION *PCACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION;
  8188. typedef const struct _COMPATIBILITY_CONTEXT_ELEMENT *PCCOMPATIBILITY_CONTEXT_ELEMENT;
  8189. typedef const struct _ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION *PCACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION;
  8190. typedef const struct _ACTIVATION_CONTEXT_DETAILED_INFORMATION *PCACTIVATION_CONTEXT_DETAILED_INFORMATION;
  8191. #define ACTIVATIONCONTEXTINFOCLASS ACTIVATION_CONTEXT_INFO_CLASS
  8192. #define ACTIVATION_CONTEXT_PATH_TYPE_NONE (1)
  8193. #define ACTIVATION_CONTEXT_PATH_TYPE_WIN32_FILE (2)
  8194. #define ACTIVATION_CONTEXT_PATH_TYPE_URL (3)
  8195. #define ACTIVATION_CONTEXT_PATH_TYPE_ASSEMBLYREF (4)
  8196. #define _ASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION _ASSEMBLY_FILE_DETAILED_INFORMATION
  8197. #define ASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION ASSEMBLY_FILE_DETAILED_INFORMATION
  8198. #define PASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION PASSEMBLY_FILE_DETAILED_INFORMATION
  8199. #define PCASSEMBLY_DLL_REDIRECTION_DETAILED_INFORMATION PCASSEMBLY_FILE_DETAILED_INFORMATION
  8200. #define INVALID_OS_COUNT (0xffff)
  8201. #define CREATE_BOUNDARY_DESCRIPTOR_ADD_APPCONTAINER_SID 0x1
  8202. typedef VOID (NTAPI *RTL_VERIFIER_DLL_LOAD_CALLBACK) (PWSTR DllName,PVOID DllBase,SIZE_T DllSize,PVOID Reserved);
  8203. typedef VOID (NTAPI *RTL_VERIFIER_DLL_UNLOAD_CALLBACK) (PWSTR DllName,PVOID DllBase,SIZE_T DllSize,PVOID Reserved);
  8204. typedef VOID (NTAPI *RTL_VERIFIER_NTDLLHEAPFREE_CALLBACK)(PVOID AllocationBase,SIZE_T AllocationSize);
  8205. typedef struct _RTL_VERIFIER_THUNK_DESCRIPTOR {
  8206. PCHAR ThunkName;
  8207. PVOID ThunkOldAddress;
  8208. PVOID ThunkNewAddress;
  8209. } RTL_VERIFIER_THUNK_DESCRIPTOR,*PRTL_VERIFIER_THUNK_DESCRIPTOR;
  8210. typedef struct _RTL_VERIFIER_DLL_DESCRIPTOR {
  8211. PWCHAR DllName;
  8212. DWORD DllFlags;
  8213. PVOID DllAddress;
  8214. PRTL_VERIFIER_THUNK_DESCRIPTOR DllThunks;
  8215. } RTL_VERIFIER_DLL_DESCRIPTOR,*PRTL_VERIFIER_DLL_DESCRIPTOR;
  8216. typedef struct _RTL_VERIFIER_PROVIDER_DESCRIPTOR {
  8217. DWORD Length;
  8218. PRTL_VERIFIER_DLL_DESCRIPTOR ProviderDlls;
  8219. RTL_VERIFIER_DLL_LOAD_CALLBACK ProviderDllLoadCallback;
  8220. RTL_VERIFIER_DLL_UNLOAD_CALLBACK ProviderDllUnloadCallback;
  8221. PWSTR VerifierImage;
  8222. DWORD VerifierFlags;
  8223. DWORD VerifierDebug;
  8224. PVOID RtlpGetStackTraceAddress;
  8225. PVOID RtlpDebugPageHeapCreate;
  8226. PVOID RtlpDebugPageHeapDestroy;
  8227. RTL_VERIFIER_NTDLLHEAPFREE_CALLBACK ProviderNtdllHeapFreeCallback;
  8228. } RTL_VERIFIER_PROVIDER_DESCRIPTOR,*PRTL_VERIFIER_PROVIDER_DESCRIPTOR;
  8229. #define RTL_VRF_FLG_FULL_PAGE_HEAP 0x00000001
  8230. #define RTL_VRF_FLG_RESERVED_DONOTUSE 0x00000002
  8231. #define RTL_VRF_FLG_HANDLE_CHECKS 0x00000004
  8232. #define RTL_VRF_FLG_STACK_CHECKS 0x00000008
  8233. #define RTL_VRF_FLG_APPCOMPAT_CHECKS 0x00000010
  8234. #define RTL_VRF_FLG_TLS_CHECKS 0x00000020
  8235. #define RTL_VRF_FLG_DIRTY_STACKS 0x00000040
  8236. #define RTL_VRF_FLG_RPC_CHECKS 0x00000080
  8237. #define RTL_VRF_FLG_COM_CHECKS 0x00000100
  8238. #define RTL_VRF_FLG_DANGEROUS_APIS 0x00000200
  8239. #define RTL_VRF_FLG_RACE_CHECKS 0x00000400
  8240. #define RTL_VRF_FLG_DEADLOCK_CHECKS 0x00000800
  8241. #define RTL_VRF_FLG_FIRST_CHANCE_EXCEPTION_CHECKS 0x00001000
  8242. #define RTL_VRF_FLG_VIRTUAL_MEM_CHECKS 0x00002000
  8243. #define RTL_VRF_FLG_ENABLE_LOGGING 0x00004000
  8244. #define RTL_VRF_FLG_FAST_FILL_HEAP 0x00008000
  8245. #define RTL_VRF_FLG_VIRTUAL_SPACE_TRACKING 0x00010000
  8246. #define RTL_VRF_FLG_ENABLED_SYSTEM_WIDE 0x00020000
  8247. #define RTL_VRF_FLG_MISCELLANEOUS_CHECKS 0x00020000
  8248. #define RTL_VRF_FLG_LOCK_CHECKS 0x00040000
  8249. #define APPLICATION_VERIFIER_INTERNAL_ERROR 0x80000000
  8250. #define APPLICATION_VERIFIER_INTERNAL_WARNING 0x40000000
  8251. #define APPLICATION_VERIFIER_NO_BREAK 0x20000000
  8252. #define APPLICATION_VERIFIER_CONTINUABLE_BREAK 0x10000000
  8253. #define APPLICATION_VERIFIER_UNKNOWN_ERROR 0x0001
  8254. #define APPLICATION_VERIFIER_ACCESS_VIOLATION 0x0002
  8255. #define APPLICATION_VERIFIER_UNSYNCHRONIZED_ACCESS 0x0003
  8256. #define APPLICATION_VERIFIER_EXTREME_SIZE_REQUEST 0x0004
  8257. #define APPLICATION_VERIFIER_BAD_HEAP_HANDLE 0x0005
  8258. #define APPLICATION_VERIFIER_SWITCHED_HEAP_HANDLE 0x0006
  8259. #define APPLICATION_VERIFIER_DOUBLE_FREE 0x0007
  8260. #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK 0x0008
  8261. #define APPLICATION_VERIFIER_DESTROY_PROCESS_HEAP 0x0009
  8262. #define APPLICATION_VERIFIER_UNEXPECTED_EXCEPTION 0x000A
  8263. #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_EXCEPTION_RAISED_FOR_HEADER 0x000B
  8264. #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_EXCEPTION_RAISED_FOR_PROBING 0x000C
  8265. #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_HEADER 0x000D
  8266. #define APPLICATION_VERIFIER_CORRUPTED_FREED_HEAP_BLOCK 0x000E
  8267. #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_SUFFIX 0x000F
  8268. #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_START_STAMP 0x0010
  8269. #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_END_STAMP 0x0011
  8270. #define APPLICATION_VERIFIER_CORRUPTED_HEAP_BLOCK_PREFIX 0x0012
  8271. #define APPLICATION_VERIFIER_FIRST_CHANCE_ACCESS_VIOLATION 0x0013
  8272. #define APPLICATION_VERIFIER_CORRUPTED_HEAP_LIST 0x0014
  8273. #define APPLICATION_VERIFIER_TERMINATE_THREAD_CALL 0x0100
  8274. #define APPLICATION_VERIFIER_STACK_OVERFLOW 0x0101
  8275. #define APPLICATION_VERIFIER_INVALID_EXIT_PROCESS_CALL 0x0102
  8276. #define APPLICATION_VERIFIER_EXIT_THREAD_OWNS_LOCK 0x0200
  8277. #define APPLICATION_VERIFIER_LOCK_IN_UNLOADED_DLL 0x0201
  8278. #define APPLICATION_VERIFIER_LOCK_IN_FREED_HEAP 0x0202
  8279. #define APPLICATION_VERIFIER_LOCK_DOUBLE_INITIALIZE 0x0203
  8280. #define APPLICATION_VERIFIER_LOCK_IN_FREED_MEMORY 0x0204
  8281. #define APPLICATION_VERIFIER_LOCK_CORRUPTED 0x0205
  8282. #define APPLICATION_VERIFIER_LOCK_INVALID_OWNER 0x0206
  8283. #define APPLICATION_VERIFIER_LOCK_INVALID_RECURSION_COUNT 0x0207
  8284. #define APPLICATION_VERIFIER_LOCK_INVALID_LOCK_COUNT 0x0208
  8285. #define APPLICATION_VERIFIER_LOCK_OVER_RELEASED 0x0209
  8286. #define APPLICATION_VERIFIER_LOCK_NOT_INITIALIZED 0x0210
  8287. #define APPLICATION_VERIFIER_LOCK_ALREADY_INITIALIZED 0x0211
  8288. #define APPLICATION_VERIFIER_LOCK_IN_FREED_VMEM 0x0212
  8289. #define APPLICATION_VERIFIER_LOCK_IN_UNMAPPED_MEM 0x0213
  8290. #define APPLICATION_VERIFIER_THREAD_NOT_LOCK_OWNER 0x0214
  8291. #define APPLICATION_VERIFIER_INVALID_HANDLE 0x0300
  8292. #define APPLICATION_VERIFIER_INVALID_TLS_VALUE 0x0301
  8293. #define APPLICATION_VERIFIER_INCORRECT_WAIT_CALL 0x0302
  8294. #define APPLICATION_VERIFIER_NULL_HANDLE 0x0303
  8295. #define APPLICATION_VERIFIER_WAIT_IN_DLLMAIN 0x0304
  8296. #define APPLICATION_VERIFIER_COM_ERROR 0x0400
  8297. #define APPLICATION_VERIFIER_COM_API_IN_DLLMAIN 0x0401
  8298. #define APPLICATION_VERIFIER_COM_UNHANDLED_EXCEPTION 0x0402
  8299. #define APPLICATION_VERIFIER_COM_UNBALANCED_COINIT 0x0403
  8300. #define APPLICATION_VERIFIER_COM_UNBALANCED_OLEINIT 0x0404
  8301. #define APPLICATION_VERIFIER_COM_UNBALANCED_SWC 0x0405
  8302. #define APPLICATION_VERIFIER_COM_NULL_DACL 0x0406
  8303. #define APPLICATION_VERIFIER_COM_UNSAFE_IMPERSONATION 0x0407
  8304. #define APPLICATION_VERIFIER_COM_SMUGGLED_WRAPPER 0x0408
  8305. #define APPLICATION_VERIFIER_COM_SMUGGLED_PROXY 0x0409
  8306. #define APPLICATION_VERIFIER_COM_CF_SUCCESS_WITH_NULL 0x040A
  8307. #define APPLICATION_VERIFIER_COM_GCO_SUCCESS_WITH_NULL 0x040B
  8308. #define APPLICATION_VERIFIER_COM_OBJECT_IN_FREED_MEMORY 0x040C
  8309. #define APPLICATION_VERIFIER_COM_OBJECT_IN_UNLOADED_DLL 0x040D
  8310. #define APPLICATION_VERIFIER_COM_VTBL_IN_FREED_MEMORY 0x040E
  8311. #define APPLICATION_VERIFIER_COM_VTBL_IN_UNLOADED_DLL 0x040F
  8312. #define APPLICATION_VERIFIER_COM_HOLDING_LOCKS_ON_CALL 0x0410
  8313. #define APPLICATION_VERIFIER_RPC_ERROR 0x0500
  8314. #define APPLICATION_VERIFIER_INVALID_FREEMEM 0x0600
  8315. #define APPLICATION_VERIFIER_INVALID_ALLOCMEM 0x0601
  8316. #define APPLICATION_VERIFIER_INVALID_MAPVIEW 0x0602
  8317. #define APPLICATION_VERIFIER_PROBE_INVALID_ADDRESS 0x0603
  8318. #define APPLICATION_VERIFIER_PROBE_FREE_MEM 0x0604
  8319. #define APPLICATION_VERIFIER_PROBE_GUARD_PAGE 0x0605
  8320. #define APPLICATION_VERIFIER_PROBE_NULL 0x0606
  8321. #define APPLICATION_VERIFIER_PROBE_INVALID_START_OR_SIZE 0x0607
  8322. #define APPLICATION_VERIFIER_SIZE_HEAP_UNEXPECTED_EXCEPTION 0x0618
  8323. #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)); }
  8324. VOID NTAPI RtlApplicationVerifierStop(ULONG_PTR Code,PSTR Message,ULONG_PTR Param1,PSTR Description1,ULONG_PTR Param2,PSTR Description2,ULONG_PTR Param3,PSTR Description3,ULONG_PTR Param4,PSTR Description4);
  8325. NTSYSAPI DWORD NTAPI RtlSetHeapInformation(PVOID HeapHandle,HEAP_INFORMATION_CLASS HeapInformationClass,PVOID HeapInformation,SIZE_T HeapInformationLength);
  8326. NTSYSAPI DWORD NTAPI RtlQueryHeapInformation(PVOID HeapHandle,HEAP_INFORMATION_CLASS HeapInformationClass,PVOID HeapInformation,SIZE_T HeapInformationLength,PSIZE_T ReturnLength);
  8327. DWORD NTAPI RtlMultipleAllocateHeap(PVOID HeapHandle,DWORD Flags,SIZE_T Size,DWORD Count,PVOID *Array);
  8328. DWORD NTAPI RtlMultipleFreeHeap(PVOID HeapHandle,DWORD Flags,DWORD Count,PVOID *Array);
  8329. typedef struct _HARDWARE_COUNTER_DATA {
  8330. HARDWARE_COUNTER_TYPE Type;
  8331. DWORD Reserved;
  8332. DWORD64 Value;
  8333. } HARDWARE_COUNTER_DATA,*PHARDWARE_COUNTER_DATA;
  8334. typedef struct _PERFORMANCE_DATA {
  8335. WORD Size;
  8336. BYTE Version;
  8337. BYTE HwCountersCount;
  8338. DWORD ContextSwitchCount;
  8339. DWORD64 WaitReasonBitMap;
  8340. DWORD64 CycleTime;
  8341. DWORD RetryCount;
  8342. DWORD Reserved;
  8343. HARDWARE_COUNTER_DATA HwCounters[MAX_HW_COUNTERS];
  8344. } PERFORMANCE_DATA,*PPERFORMANCE_DATA;
  8345. #define PERFORMANCE_DATA_VERSION 1
  8346. #define READ_THREAD_PROFILING_FLAG_DISPATCHING 0x00000001
  8347. #define READ_THREAD_PROFILING_FLAG_HARDWARE_COUNTERS 0x00000002
  8348. #define DLL_PROCESS_ATTACH 1
  8349. #define DLL_THREAD_ATTACH 2
  8350. #define DLL_THREAD_DETACH 3
  8351. #define DLL_PROCESS_DETACH 0
  8352. #define DLL_PROCESS_VERIFIER 4
  8353. #define EVENTLOG_SEQUENTIAL_READ 0x0001
  8354. #define EVENTLOG_SEEK_READ 0x0002
  8355. #define EVENTLOG_FORWARDS_READ 0x0004
  8356. #define EVENTLOG_BACKWARDS_READ 0x0008
  8357. #define EVENTLOG_SUCCESS 0x0000
  8358. #define EVENTLOG_ERROR_TYPE 0x0001
  8359. #define EVENTLOG_WARNING_TYPE 0x0002
  8360. #define EVENTLOG_INFORMATION_TYPE 0x0004
  8361. #define EVENTLOG_AUDIT_SUCCESS 0x0008
  8362. #define EVENTLOG_AUDIT_FAILURE 0x0010
  8363. #define EVENTLOG_START_PAIRED_EVENT 0x0001
  8364. #define EVENTLOG_END_PAIRED_EVENT 0x0002
  8365. #define EVENTLOG_END_ALL_PAIRED_EVENTS 0x0004
  8366. #define EVENTLOG_PAIRED_EVENT_ACTIVE 0x0008
  8367. #define EVENTLOG_PAIRED_EVENT_INACTIVE 0x0010
  8368. typedef struct _EVENTLOGRECORD {
  8369. DWORD Length;
  8370. DWORD Reserved;
  8371. DWORD RecordNumber;
  8372. DWORD TimeGenerated;
  8373. DWORD TimeWritten;
  8374. DWORD EventID;
  8375. WORD EventType;
  8376. WORD NumStrings;
  8377. WORD EventCategory;
  8378. WORD ReservedFlags;
  8379. DWORD ClosingRecordNumber;
  8380. DWORD StringOffset;
  8381. DWORD UserSidLength;
  8382. DWORD UserSidOffset;
  8383. DWORD DataLength;
  8384. DWORD DataOffset;
  8385. } EVENTLOGRECORD,*PEVENTLOGRECORD;
  8386. #define MAXLOGICALLOGNAMESIZE 256
  8387. typedef struct _EVENTSFORLOGFILE {
  8388. DWORD ulSize;
  8389. WCHAR szLogicalLogFile[MAXLOGICALLOGNAMESIZE];
  8390. DWORD ulNumRecords;
  8391. EVENTLOGRECORD pEventLogRecords[];
  8392. } EVENTSFORLOGFILE,*PEVENTSFORLOGFILE;
  8393. typedef struct _PACKEDEVENTINFO {
  8394. DWORD ulSize;
  8395. DWORD ulNumEventsForLogFile;
  8396. DWORD ulOffsets[];
  8397. } PACKEDEVENTINFO,*PPACKEDEVENTINFO;
  8398. #define KEY_QUERY_VALUE (0x0001)
  8399. #define KEY_SET_VALUE (0x0002)
  8400. #define KEY_CREATE_SUB_KEY (0x0004)
  8401. #define KEY_ENUMERATE_SUB_KEYS (0x0008)
  8402. #define KEY_NOTIFY (0x0010)
  8403. #define KEY_CREATE_LINK (0x0020)
  8404. #define KEY_WOW64_64KEY (0x0100)
  8405. #define KEY_WOW64_32KEY (0x0200)
  8406. #define KEY_WOW64_RES (0x0300)
  8407. #define KEY_READ ((STANDARD_RIGHTS_READ | KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY) & (~SYNCHRONIZE))
  8408. #define KEY_WRITE ((STANDARD_RIGHTS_WRITE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY) & (~SYNCHRONIZE))
  8409. #define KEY_EXECUTE ((KEY_READ) & (~SYNCHRONIZE))
  8410. #define KEY_ALL_ACCESS ((STANDARD_RIGHTS_ALL | KEY_QUERY_VALUE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY | KEY_CREATE_LINK) & (~SYNCHRONIZE))
  8411. #define REG_OPTION_RESERVED (__MSABI_LONG(0x00000000))
  8412. #define REG_OPTION_NON_VOLATILE (__MSABI_LONG(0x00000000))
  8413. #define REG_OPTION_VOLATILE (__MSABI_LONG(0x00000001))
  8414. #define REG_OPTION_CREATE_LINK (__MSABI_LONG(0x00000002))
  8415. #define REG_OPTION_BACKUP_RESTORE (__MSABI_LONG(0x00000004))
  8416. #define REG_OPTION_OPEN_LINK (__MSABI_LONG(0x00000008))
  8417. #define REG_LEGAL_OPTION (REG_OPTION_RESERVED | REG_OPTION_NON_VOLATILE | REG_OPTION_VOLATILE | REG_OPTION_CREATE_LINK | REG_OPTION_BACKUP_RESTORE | REG_OPTION_OPEN_LINK)
  8418. #define REG_CREATED_NEW_KEY (__MSABI_LONG(0x00000001))
  8419. #define REG_OPENED_EXISTING_KEY (__MSABI_LONG(0x00000002))
  8420. #define REG_STANDARD_FORMAT 1
  8421. #define REG_LATEST_FORMAT 2
  8422. #define REG_NO_COMPRESSION 4
  8423. #define REG_WHOLE_HIVE_VOLATILE (__MSABI_LONG(0x00000001))
  8424. #define REG_REFRESH_HIVE (__MSABI_LONG(0x00000002))
  8425. #define REG_NO_LAZY_FLUSH (__MSABI_LONG(0x00000004))
  8426. #define REG_FORCE_RESTORE (__MSABI_LONG(0x00000008))
  8427. #define REG_APP_HIVE (__MSABI_LONG(0x00000010))
  8428. #define REG_PROCESS_PRIVATE (__MSABI_LONG(0x00000020))
  8429. #define REG_START_JOURNAL (__MSABI_LONG(0x00000040))
  8430. #define REG_HIVE_EXACT_FILE_GROWTH (__MSABI_LONG(0x00000080))
  8431. #define REG_HIVE_NO_RM (__MSABI_LONG(0x00000100))
  8432. #define REG_HIVE_SINGLE_LOG (__MSABI_LONG(0x00000200))
  8433. #define REG_BOOT_HIVE (__MSABI_LONG(0x00000400))
  8434. #define REG_FORCE_UNLOAD 1
  8435. #define REG_NOTIFY_CHANGE_NAME (__MSABI_LONG(0x00000001))
  8436. #define REG_NOTIFY_CHANGE_ATTRIBUTES (__MSABI_LONG(0x00000002))
  8437. #define REG_NOTIFY_CHANGE_LAST_SET (__MSABI_LONG(0x00000004))
  8438. #define REG_NOTIFY_CHANGE_SECURITY (__MSABI_LONG(0x00000008))
  8439. #define REG_NOTIFY_THREAD_AGNOSTIC (__MSABI_LONG(0x10000000))
  8440. #define REG_LEGAL_CHANGE_FILTER (REG_NOTIFY_CHANGE_NAME | REG_NOTIFY_CHANGE_ATTRIBUTES | REG_NOTIFY_CHANGE_LAST_SET | REG_NOTIFY_CHANGE_SECURITY | REG_NOTIFY_THREAD_AGNOSTIC)
  8441. #define REG_NONE (0)
  8442. #define REG_SZ (1)
  8443. #define REG_EXPAND_SZ (2)
  8444. #define REG_BINARY (3)
  8445. #define REG_DWORD (4)
  8446. #define REG_DWORD_LITTLE_ENDIAN (4)
  8447. #define REG_DWORD_BIG_ENDIAN (5)
  8448. #define REG_LINK (6)
  8449. #define REG_MULTI_SZ (7)
  8450. #define REG_RESOURCE_LIST (8)
  8451. #define REG_FULL_RESOURCE_DESCRIPTOR (9)
  8452. #define REG_RESOURCE_REQUIREMENTS_LIST (10)
  8453. #define REG_QWORD (11)
  8454. #define REG_QWORD_LITTLE_ENDIAN (11)
  8455. #define SERVICE_KERNEL_DRIVER 0x00000001
  8456. #define SERVICE_FILE_SYSTEM_DRIVER 0x00000002
  8457. #define SERVICE_ADAPTER 0x00000004
  8458. #define SERVICE_RECOGNIZER_DRIVER 0x00000008
  8459. #define SERVICE_DRIVER (SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | SERVICE_RECOGNIZER_DRIVER)
  8460. #define SERVICE_WIN32_OWN_PROCESS 0x00000010
  8461. #define SERVICE_WIN32_SHARE_PROCESS 0x00000020
  8462. #define SERVICE_WIN32 (SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS)
  8463. #define SERVICE_INTERACTIVE_PROCESS 0x00000100
  8464. #define SERVICE_TYPE_ALL (SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS)
  8465. #define SERVICE_BOOT_START 0x00000000
  8466. #define SERVICE_SYSTEM_START 0x00000001
  8467. #define SERVICE_AUTO_START 0x00000002
  8468. #define SERVICE_DEMAND_START 0x00000003
  8469. #define SERVICE_DISABLED 0x00000004
  8470. #define SERVICE_ERROR_IGNORE 0x00000000
  8471. #define SERVICE_ERROR_NORMAL 0x00000001
  8472. #define SERVICE_ERROR_SEVERE 0x00000002
  8473. #define SERVICE_ERROR_CRITICAL 0x00000003
  8474. typedef enum _CM_SERVICE_NODE_TYPE {
  8475. DriverType = SERVICE_KERNEL_DRIVER,FileSystemType = SERVICE_FILE_SYSTEM_DRIVER,Win32ServiceOwnProcess = SERVICE_WIN32_OWN_PROCESS,
  8476. Win32ServiceShareProcess = SERVICE_WIN32_SHARE_PROCESS,AdapterType = SERVICE_ADAPTER,RecognizerType = SERVICE_RECOGNIZER_DRIVER
  8477. } SERVICE_NODE_TYPE;
  8478. typedef enum _CM_SERVICE_LOAD_TYPE {
  8479. BootLoad = SERVICE_BOOT_START,SystemLoad = SERVICE_SYSTEM_START,AutoLoad = SERVICE_AUTO_START,DemandLoad = SERVICE_DEMAND_START,
  8480. DisableLoad = SERVICE_DISABLED
  8481. } SERVICE_LOAD_TYPE;
  8482. typedef enum _CM_ERROR_CONTROL_TYPE {
  8483. IgnoreError = SERVICE_ERROR_IGNORE,NormalError = SERVICE_ERROR_NORMAL,SevereError = SERVICE_ERROR_SEVERE,CriticalError = SERVICE_ERROR_CRITICAL
  8484. } SERVICE_ERROR_TYPE;
  8485. #define CM_SERVICE_NETWORK_BOOT_LOAD 0x00000001
  8486. #define CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD 0x00000002
  8487. #define CM_SERVICE_USB_DISK_BOOT_LOAD 0x00000004
  8488. #define CM_SERVICE_SD_DISK_BOOT_LOAD 0x00000008
  8489. #define CM_SERVICE_USB3_DISK_BOOT_LOAD 0x00000010
  8490. #define CM_SERVICE_MEASURED_BOOT_LOAD 0x00000020
  8491. #define CM_SERVICE_VERIFIER_BOOT_LOAD 0x00000040
  8492. #define CM_SERVICE_WINPE_BOOT_LOAD 0x00000080
  8493. #define CM_SERVICE_VALID_PROMOTION_MASK (CM_SERVICE_NETWORK_BOOT_LOAD | CM_SERVICE_VIRTUAL_DISK_BOOT_LOAD | CM_SERVICE_USB_DISK_BOOT_LOAD | CM_SERVICE_SD_DISK_BOOT_LOAD | CM_SERVICE_USB3_DISK_BOOT_LOAD | CM_SERVICE_MEASURED_BOOT_LOAD | CM_SERVICE_VERIFIER_BOOT_LOAD | CM_SERVICE_WINPE_BOOT_LOAD)
  8494. #ifndef _NTDDTAPE_WINNT_
  8495. #define _NTDDTAPE_WINNT_
  8496. #define TAPE_ERASE_SHORT __MSABI_LONG(0)
  8497. #define TAPE_ERASE_LONG __MSABI_LONG(1)
  8498. typedef struct _TAPE_ERASE {
  8499. DWORD Type;
  8500. BOOLEAN Immediate;
  8501. } TAPE_ERASE,*PTAPE_ERASE;
  8502. #define TAPE_LOAD __MSABI_LONG(0)
  8503. #define TAPE_UNLOAD __MSABI_LONG(1)
  8504. #define TAPE_TENSION __MSABI_LONG(2)
  8505. #define TAPE_LOCK __MSABI_LONG(3)
  8506. #define TAPE_UNLOCK __MSABI_LONG(4)
  8507. #define TAPE_FORMAT __MSABI_LONG(5)
  8508. typedef struct _TAPE_PREPARE {
  8509. DWORD Operation;
  8510. BOOLEAN Immediate;
  8511. } TAPE_PREPARE,*PTAPE_PREPARE;
  8512. #define TAPE_SETMARKS __MSABI_LONG(0)
  8513. #define TAPE_FILEMARKS __MSABI_LONG(1)
  8514. #define TAPE_SHORT_FILEMARKS __MSABI_LONG(2)
  8515. #define TAPE_LONG_FILEMARKS __MSABI_LONG(3)
  8516. typedef struct _TAPE_WRITE_MARKS {
  8517. DWORD Type;
  8518. DWORD Count;
  8519. BOOLEAN Immediate;
  8520. } TAPE_WRITE_MARKS,*PTAPE_WRITE_MARKS;
  8521. #define TAPE_ABSOLUTE_POSITION __MSABI_LONG(0)
  8522. #define TAPE_LOGICAL_POSITION __MSABI_LONG(1)
  8523. #define TAPE_PSEUDO_LOGICAL_POSITION __MSABI_LONG(2)
  8524. typedef struct _TAPE_GET_POSITION {
  8525. DWORD Type;
  8526. DWORD Partition;
  8527. LARGE_INTEGER Offset;
  8528. } TAPE_GET_POSITION,*PTAPE_GET_POSITION;
  8529. #define TAPE_REWIND __MSABI_LONG(0)
  8530. #define TAPE_ABSOLUTE_BLOCK __MSABI_LONG(1)
  8531. #define TAPE_LOGICAL_BLOCK __MSABI_LONG(2)
  8532. #define TAPE_PSEUDO_LOGICAL_BLOCK __MSABI_LONG(3)
  8533. #define TAPE_SPACE_END_OF_DATA __MSABI_LONG(4)
  8534. #define TAPE_SPACE_RELATIVE_BLOCKS __MSABI_LONG(5)
  8535. #define TAPE_SPACE_FILEMARKS __MSABI_LONG(6)
  8536. #define TAPE_SPACE_SEQUENTIAL_FMKS __MSABI_LONG(7)
  8537. #define TAPE_SPACE_SETMARKS __MSABI_LONG(8)
  8538. #define TAPE_SPACE_SEQUENTIAL_SMKS __MSABI_LONG(9)
  8539. typedef struct _TAPE_SET_POSITION {
  8540. DWORD Method;
  8541. DWORD Partition;
  8542. LARGE_INTEGER Offset;
  8543. BOOLEAN Immediate;
  8544. } TAPE_SET_POSITION,*PTAPE_SET_POSITION;
  8545. #define TAPE_DRIVE_FIXED 0x00000001
  8546. #define TAPE_DRIVE_SELECT 0x00000002
  8547. #define TAPE_DRIVE_INITIATOR 0x00000004
  8548. #define TAPE_DRIVE_ERASE_SHORT 0x00000010
  8549. #define TAPE_DRIVE_ERASE_LONG 0x00000020
  8550. #define TAPE_DRIVE_ERASE_BOP_ONLY 0x00000040
  8551. #define TAPE_DRIVE_ERASE_IMMEDIATE 0x00000080
  8552. #define TAPE_DRIVE_TAPE_CAPACITY 0x00000100
  8553. #define TAPE_DRIVE_TAPE_REMAINING 0x00000200
  8554. #define TAPE_DRIVE_FIXED_BLOCK 0x00000400
  8555. #define TAPE_DRIVE_VARIABLE_BLOCK 0x00000800
  8556. #define TAPE_DRIVE_WRITE_PROTECT 0x00001000
  8557. #define TAPE_DRIVE_EOT_WZ_SIZE 0x00002000
  8558. #define TAPE_DRIVE_ECC 0x00010000
  8559. #define TAPE_DRIVE_COMPRESSION 0x00020000
  8560. #define TAPE_DRIVE_PADDING 0x00040000
  8561. #define TAPE_DRIVE_REPORT_SMKS 0x00080000
  8562. #define TAPE_DRIVE_GET_ABSOLUTE_BLK 0x00100000
  8563. #define TAPE_DRIVE_GET_LOGICAL_BLK 0x00200000
  8564. #define TAPE_DRIVE_SET_EOT_WZ_SIZE 0x00400000
  8565. #define TAPE_DRIVE_EJECT_MEDIA 0x01000000
  8566. #define TAPE_DRIVE_CLEAN_REQUESTS 0x02000000
  8567. #define TAPE_DRIVE_SET_CMP_BOP_ONLY 0x04000000
  8568. #define TAPE_DRIVE_RESERVED_BIT 0x80000000
  8569. #define TAPE_DRIVE_LOAD_UNLOAD 0x80000001
  8570. #define TAPE_DRIVE_TENSION 0x80000002
  8571. #define TAPE_DRIVE_LOCK_UNLOCK 0x80000004
  8572. #define TAPE_DRIVE_REWIND_IMMEDIATE 0x80000008
  8573. #define TAPE_DRIVE_SET_BLOCK_SIZE 0x80000010
  8574. #define TAPE_DRIVE_LOAD_UNLD_IMMED 0x80000020
  8575. #define TAPE_DRIVE_TENSION_IMMED 0x80000040
  8576. #define TAPE_DRIVE_LOCK_UNLK_IMMED 0x80000080
  8577. #define TAPE_DRIVE_SET_ECC 0x80000100
  8578. #define TAPE_DRIVE_SET_COMPRESSION 0x80000200
  8579. #define TAPE_DRIVE_SET_PADDING 0x80000400
  8580. #define TAPE_DRIVE_SET_REPORT_SMKS 0x80000800
  8581. #define TAPE_DRIVE_ABSOLUTE_BLK 0x80001000
  8582. #define TAPE_DRIVE_ABS_BLK_IMMED 0x80002000
  8583. #define TAPE_DRIVE_LOGICAL_BLK 0x80004000
  8584. #define TAPE_DRIVE_LOG_BLK_IMMED 0x80008000
  8585. #define TAPE_DRIVE_END_OF_DATA 0x80010000
  8586. #define TAPE_DRIVE_RELATIVE_BLKS 0x80020000
  8587. #define TAPE_DRIVE_FILEMARKS 0x80040000
  8588. #define TAPE_DRIVE_SEQUENTIAL_FMKS 0x80080000
  8589. #define TAPE_DRIVE_SETMARKS 0x80100000
  8590. #define TAPE_DRIVE_SEQUENTIAL_SMKS 0x80200000
  8591. #define TAPE_DRIVE_REVERSE_POSITION 0x80400000
  8592. #define TAPE_DRIVE_SPACE_IMMEDIATE 0x80800000
  8593. #define TAPE_DRIVE_WRITE_SETMARKS 0x81000000
  8594. #define TAPE_DRIVE_WRITE_FILEMARKS 0x82000000
  8595. #define TAPE_DRIVE_WRITE_SHORT_FMKS 0x84000000
  8596. #define TAPE_DRIVE_WRITE_LONG_FMKS 0x88000000
  8597. #define TAPE_DRIVE_WRITE_MARK_IMMED 0x90000000
  8598. #define TAPE_DRIVE_FORMAT 0xA0000000
  8599. #define TAPE_DRIVE_FORMAT_IMMEDIATE 0xC0000000
  8600. #define TAPE_DRIVE_HIGH_FEATURES 0x80000000
  8601. typedef struct _TAPE_GET_DRIVE_PARAMETERS {
  8602. BOOLEAN ECC;
  8603. BOOLEAN Compression;
  8604. BOOLEAN DataPadding;
  8605. BOOLEAN ReportSetmarks;
  8606. DWORD DefaultBlockSize;
  8607. DWORD MaximumBlockSize;
  8608. DWORD MinimumBlockSize;
  8609. DWORD MaximumPartitionCount;
  8610. DWORD FeaturesLow;
  8611. DWORD FeaturesHigh;
  8612. DWORD EOTWarningZoneSize;
  8613. } TAPE_GET_DRIVE_PARAMETERS,*PTAPE_GET_DRIVE_PARAMETERS;
  8614. typedef struct _TAPE_SET_DRIVE_PARAMETERS {
  8615. BOOLEAN ECC;
  8616. BOOLEAN Compression;
  8617. BOOLEAN DataPadding;
  8618. BOOLEAN ReportSetmarks;
  8619. DWORD EOTWarningZoneSize;
  8620. } TAPE_SET_DRIVE_PARAMETERS,*PTAPE_SET_DRIVE_PARAMETERS;
  8621. typedef struct _TAPE_GET_MEDIA_PARAMETERS {
  8622. LARGE_INTEGER Capacity;
  8623. LARGE_INTEGER Remaining;
  8624. DWORD BlockSize;
  8625. DWORD PartitionCount;
  8626. BOOLEAN WriteProtected;
  8627. } TAPE_GET_MEDIA_PARAMETERS,*PTAPE_GET_MEDIA_PARAMETERS;
  8628. typedef struct _TAPE_SET_MEDIA_PARAMETERS {
  8629. DWORD BlockSize;
  8630. } TAPE_SET_MEDIA_PARAMETERS,*PTAPE_SET_MEDIA_PARAMETERS;
  8631. #define TAPE_FIXED_PARTITIONS __MSABI_LONG(0)
  8632. #define TAPE_SELECT_PARTITIONS __MSABI_LONG(1)
  8633. #define TAPE_INITIATOR_PARTITIONS __MSABI_LONG(2)
  8634. typedef struct _TAPE_CREATE_PARTITION {
  8635. DWORD Method;
  8636. DWORD Count;
  8637. DWORD Size;
  8638. } TAPE_CREATE_PARTITION,*PTAPE_CREATE_PARTITION;
  8639. #define TAPE_QUERY_DRIVE_PARAMETERS __MSABI_LONG(0)
  8640. #define TAPE_QUERY_MEDIA_CAPACITY __MSABI_LONG(1)
  8641. #define TAPE_CHECK_FOR_DRIVE_PROBLEM __MSABI_LONG(2)
  8642. #define TAPE_QUERY_IO_ERROR_DATA __MSABI_LONG(3)
  8643. #define TAPE_QUERY_DEVICE_ERROR_DATA __MSABI_LONG(4)
  8644. typedef struct _TAPE_WMI_OPERATIONS {
  8645. DWORD Method;
  8646. DWORD DataBufferSize;
  8647. PVOID DataBuffer;
  8648. } TAPE_WMI_OPERATIONS,*PTAPE_WMI_OPERATIONS;
  8649. typedef enum _TAPE_DRIVE_PROBLEM_TYPE {
  8650. TapeDriveProblemNone,TapeDriveReadWriteWarning,TapeDriveReadWriteError,TapeDriveReadWarning,TapeDriveWriteWarning,TapeDriveReadError,TapeDriveWriteError,TapeDriveHardwareError,TapeDriveUnsupportedMedia,TapeDriveScsiConnectionError,TapeDriveTimetoClean,TapeDriveCleanDriveNow,TapeDriveMediaLifeExpired,TapeDriveSnappedTape
  8651. } TAPE_DRIVE_PROBLEM_TYPE;
  8652. #endif
  8653. typedef DWORD TP_VERSION,*PTP_VERSION;
  8654. typedef struct _TP_CALLBACK_INSTANCE TP_CALLBACK_INSTANCE,*PTP_CALLBACK_INSTANCE;
  8655. typedef VOID (NTAPI *PTP_SIMPLE_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context);
  8656. typedef struct _TP_POOL TP_POOL,*PTP_POOL;
  8657. typedef enum _TP_CALLBACK_PRIORITY {
  8658. TP_CALLBACK_PRIORITY_HIGH,
  8659. TP_CALLBACK_PRIORITY_NORMAL,
  8660. TP_CALLBACK_PRIORITY_LOW,
  8661. TP_CALLBACK_PRIORITY_INVALID,
  8662. TP_CALLBACK_PRIORITY_COUNT = TP_CALLBACK_PRIORITY_INVALID
  8663. } TP_CALLBACK_PRIORITY;
  8664. typedef struct _TP_POOL_STACK_INFORMATION {
  8665. SIZE_T StackReserve;
  8666. SIZE_T StackCommit;
  8667. } TP_POOL_STACK_INFORMATION, *PTP_POOL_STACK_INFORMATION;
  8668. typedef struct _TP_CLEANUP_GROUP TP_CLEANUP_GROUP,*PTP_CLEANUP_GROUP;
  8669. typedef VOID (NTAPI *PTP_CLEANUP_GROUP_CANCEL_CALLBACK) (PVOID ObjectContext, PVOID CleanupContext);
  8670. #if _WIN32_WINNT >= 0x0601
  8671. typedef struct _TP_CALLBACK_ENVIRON_V3 {
  8672. TP_VERSION Version;
  8673. PTP_POOL Pool;
  8674. PTP_CLEANUP_GROUP CleanupGroup;
  8675. PTP_CLEANUP_GROUP_CANCEL_CALLBACK CleanupGroupCancelCallback;
  8676. PVOID RaceDll;
  8677. struct _ACTIVATION_CONTEXT *ActivationContext;
  8678. PTP_SIMPLE_CALLBACK FinalizationCallback;
  8679. union {
  8680. DWORD Flags;
  8681. struct {
  8682. DWORD LongFunction : 1;
  8683. DWORD Persistent : 1;
  8684. DWORD Private : 30;
  8685. } s;
  8686. } u;
  8687. TP_CALLBACK_PRIORITY CallbackPriority;
  8688. DWORD Size;
  8689. } TP_CALLBACK_ENVIRON_V3;
  8690. typedef TP_CALLBACK_ENVIRON_V3 TP_CALLBACK_ENVIRON, *PTP_CALLBACK_ENVIRON;
  8691. #else
  8692. typedef struct _TP_CALLBACK_ENVIRON_V1 {
  8693. TP_VERSION Version;
  8694. PTP_POOL Pool;
  8695. PTP_CLEANUP_GROUP CleanupGroup;
  8696. PTP_CLEANUP_GROUP_CANCEL_CALLBACK CleanupGroupCancelCallback;
  8697. PVOID RaceDll;
  8698. struct _ACTIVATION_CONTEXT *ActivationContext;
  8699. PTP_SIMPLE_CALLBACK FinalizationCallback;
  8700. union {
  8701. DWORD Flags;
  8702. struct {
  8703. DWORD LongFunction : 1;
  8704. DWORD Persistent : 1;
  8705. DWORD Private : 30;
  8706. } s;
  8707. } u;
  8708. } TP_CALLBACK_ENVIRON_V1;
  8709. typedef TP_CALLBACK_ENVIRON_V1 TP_CALLBACK_ENVIRON,*PTP_CALLBACK_ENVIRON;
  8710. #endif
  8711. typedef struct _TP_WORK TP_WORK,*PTP_WORK;
  8712. typedef VOID (NTAPI *PTP_WORK_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context, PTP_WORK Work);
  8713. typedef struct _TP_TIMER TP_TIMER,*PTP_TIMER;
  8714. typedef VOID (NTAPI *PTP_TIMER_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context, PTP_TIMER Timer);
  8715. typedef DWORD TP_WAIT_RESULT;
  8716. typedef struct _TP_WAIT TP_WAIT,*PTP_WAIT;
  8717. typedef VOID (NTAPI *PTP_WAIT_CALLBACK) (PTP_CALLBACK_INSTANCE Instance, PVOID Context, PTP_WAIT Wait, TP_WAIT_RESULT WaitResult);
  8718. typedef struct _TP_IO TP_IO,*PTP_IO;
  8719. #if !defined (__WIDL__)
  8720. FORCEINLINE VOID TpInitializeCallbackEnviron (PTP_CALLBACK_ENVIRON cbe) {
  8721. cbe->Pool = NULL;
  8722. cbe->CleanupGroup = NULL;
  8723. cbe->CleanupGroupCancelCallback = NULL;
  8724. cbe->RaceDll = NULL;
  8725. cbe->ActivationContext = NULL;
  8726. cbe->FinalizationCallback = NULL;
  8727. cbe->u.Flags = 0;
  8728. #if _WIN32_WINNT < 0x0601
  8729. cbe->Version = 1;
  8730. #else
  8731. cbe->Version = 3;
  8732. cbe->CallbackPriority = TP_CALLBACK_PRIORITY_NORMAL;
  8733. cbe->Size = sizeof (TP_CALLBACK_ENVIRON);
  8734. #endif
  8735. }
  8736. FORCEINLINE VOID TpSetCallbackThreadpool (PTP_CALLBACK_ENVIRON cbe, PTP_POOL pool) { cbe->Pool = pool; }
  8737. FORCEINLINE VOID TpSetCallbackCleanupGroup (PTP_CALLBACK_ENVIRON cbe, PTP_CLEANUP_GROUP cleanup_group, PTP_CLEANUP_GROUP_CANCEL_CALLBACK cleanup_group_cb) {
  8738. cbe->CleanupGroup = cleanup_group;
  8739. cbe->CleanupGroupCancelCallback = cleanup_group_cb;
  8740. }
  8741. FORCEINLINE VOID TpSetCallbackActivationContext (PTP_CALLBACK_ENVIRON cbe, struct _ACTIVATION_CONTEXT *actx) { cbe->ActivationContext = actx; }
  8742. FORCEINLINE VOID TpSetCallbackNoActivationContext (PTP_CALLBACK_ENVIRON cbe) { cbe->ActivationContext = (struct _ACTIVATION_CONTEXT *) (LONG_PTR) -1; }
  8743. FORCEINLINE VOID TpSetCallbackLongFunction (PTP_CALLBACK_ENVIRON cbe) { cbe->u.s.LongFunction = 1; }
  8744. FORCEINLINE VOID TpSetCallbackRaceWithDll (PTP_CALLBACK_ENVIRON cbe, PVOID h) { cbe->RaceDll = h; }
  8745. FORCEINLINE VOID TpSetCallbackFinalizationCallback (PTP_CALLBACK_ENVIRON cbe, PTP_SIMPLE_CALLBACK fini_cb) { cbe->FinalizationCallback = fini_cb; }
  8746. #if _WIN32_WINNT >= 0x0601
  8747. FORCEINLINE VOID TpSetCallbackPriority (PTP_CALLBACK_ENVIRON cbe, TP_CALLBACK_PRIORITY prio) { cbe->CallbackPriority = prio; }
  8748. #endif
  8749. FORCEINLINE VOID TpSetCallbackPersistent (PTP_CALLBACK_ENVIRON cbe) { cbe->u.s.Persistent = 1; }
  8750. FORCEINLINE VOID TpDestroyCallbackEnviron (PTP_CALLBACK_ENVIRON cbe) { UNREFERENCED_PARAMETER (cbe); }
  8751. #endif
  8752. #if defined(__x86_64) && !defined (__WIDL__)
  8753. struct _TEB *NtCurrentTeb(VOID);
  8754. PVOID GetCurrentFiber(VOID);
  8755. PVOID GetFiberData(VOID);
  8756. FORCEINLINE struct _TEB *NtCurrentTeb(VOID) { return (struct _TEB *)__readgsqword(FIELD_OFFSET(NT_TIB,Self)); }
  8757. FORCEINLINE PVOID GetCurrentFiber(VOID) { return(PVOID)__readgsqword(FIELD_OFFSET(NT_TIB,FiberData)); }
  8758. FORCEINLINE PVOID GetFiberData(VOID) {
  8759. return *(PVOID *)GetCurrentFiber();
  8760. }
  8761. #endif /* __x86_64 */
  8762. #if defined (__arm__) && !defined (__WIDL__)
  8763. struct _TEB *NtCurrentTeb (VOID);
  8764. PVOID GetCurrentFiber (VOID);
  8765. PVOID GetFiberData (VOID);
  8766. FORCEINLINE struct _TEB *NtCurrentTeb(VOID) { struct _TEB *teb;
  8767. __asm ("mrc p15, 0, %0, c13, c0, 2" : "=r" (teb));
  8768. return teb; }
  8769. FORCEINLINE PVOID GetCurrentFiber(VOID) { return (PVOID)(((PNT_TIB)NtCurrentTeb())->FiberData); }
  8770. FORCEINLINE PVOID GetFiberData (VOID) { return *(PVOID *)GetCurrentFiber (); }
  8771. #endif /* arm */
  8772. #if defined (__aarch64__) && !defined (__WIDL__)
  8773. struct _TEB *NtCurrentTeb (VOID);
  8774. PVOID GetCurrentFiber (VOID);
  8775. PVOID GetFiberData (VOID);
  8776. FORCEINLINE struct _TEB *NtCurrentTeb(VOID) { struct _TEB *teb;
  8777. __asm ("mov %0, x18" : "=r" (teb));
  8778. return teb; }
  8779. FORCEINLINE PVOID GetCurrentFiber(VOID) { return (PVOID)(((PNT_TIB)NtCurrentTeb())->FiberData); }
  8780. FORCEINLINE PVOID GetFiberData (VOID) { return *(PVOID *)GetCurrentFiber (); }
  8781. #endif /* aarch64 */
  8782. #ifndef _NTTMAPI_
  8783. #define _NTTMAPI_
  8784. #ifdef __cplusplus
  8785. extern "C" {
  8786. #endif
  8787. #include <ktmtypes.h>
  8788. #define TRANSACTIONMANAGER_QUERY_INFORMATION 0x00001
  8789. #define TRANSACTIONMANAGER_SET_INFORMATION 0x00002
  8790. #define TRANSACTIONMANAGER_RECOVER 0x00004
  8791. #define TRANSACTIONMANAGER_RENAME 0x00008
  8792. #define TRANSACTIONMANAGER_CREATE_RM 0x00010
  8793. #define TRANSACTIONMANAGER_BIND_TRANSACTION 0x00020
  8794. #define TRANSACTIONMANAGER_GENERIC_READ (STANDARD_RIGHTS_READ | TRANSACTIONMANAGER_QUERY_INFORMATION)
  8795. #define TRANSACTIONMANAGER_GENERIC_WRITE (STANDARD_RIGHTS_WRITE | TRANSACTIONMANAGER_SET_INFORMATION | TRANSACTIONMANAGER_RECOVER | TRANSACTIONMANAGER_RENAME | TRANSACTIONMANAGER_CREATE_RM)
  8796. #define TRANSACTIONMANAGER_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE)
  8797. #define TRANSACTIONMANAGER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | TRANSACTIONMANAGER_GENERIC_READ | TRANSACTIONMANAGER_GENERIC_WRITE | TRANSACTIONMANAGER_GENERIC_EXECUTE | TRANSACTIONMANAGER_BIND_TRANSACTION)
  8798. #define TRANSACTION_QUERY_INFORMATION (0x0001)
  8799. #define TRANSACTION_SET_INFORMATION (0x0002)
  8800. #define TRANSACTION_ENLIST (0x0004)
  8801. #define TRANSACTION_COMMIT (0x0008)
  8802. #define TRANSACTION_ROLLBACK (0x0010)
  8803. #define TRANSACTION_PROPAGATE (0x0020)
  8804. #define TRANSACTION_RIGHT_RESERVED1 (0x0040)
  8805. #define TRANSACTION_GENERIC_READ (STANDARD_RIGHTS_READ | TRANSACTION_QUERY_INFORMATION | SYNCHRONIZE)
  8806. #define TRANSACTION_GENERIC_WRITE (STANDARD_RIGHTS_WRITE | TRANSACTION_SET_INFORMATION | TRANSACTION_COMMIT | TRANSACTION_ENLIST | TRANSACTION_ROLLBACK | TRANSACTION_PROPAGATE | SYNCHRONIZE)
  8807. #define TRANSACTION_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE | TRANSACTION_COMMIT | TRANSACTION_ROLLBACK | SYNCHRONIZE)
  8808. #define TRANSACTION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | TRANSACTION_GENERIC_READ | TRANSACTION_GENERIC_WRITE | TRANSACTION_GENERIC_EXECUTE)
  8809. #define TRANSACTION_RESOURCE_MANAGER_RIGHTS (TRANSACTION_GENERIC_READ | STANDARD_RIGHTS_WRITE | TRANSACTION_SET_INFORMATION | TRANSACTION_ENLIST | TRANSACTION_ROLLBACK | TRANSACTION_PROPAGATE | SYNCHRONIZE)
  8810. #define RESOURCEMANAGER_QUERY_INFORMATION (0x0001)
  8811. #define RESOURCEMANAGER_SET_INFORMATION (0x0002)
  8812. #define RESOURCEMANAGER_RECOVER (0x0004)
  8813. #define RESOURCEMANAGER_ENLIST (0x0008)
  8814. #define RESOURCEMANAGER_GET_NOTIFICATION (0x0010)
  8815. #define RESOURCEMANAGER_REGISTER_PROTOCOL (0x0020)
  8816. #define RESOURCEMANAGER_COMPLETE_PROPAGATION (0x0040)
  8817. #define RESOURCEMANAGER_GENERIC_READ (STANDARD_RIGHTS_READ | RESOURCEMANAGER_QUERY_INFORMATION | SYNCHRONIZE)
  8818. #define RESOURCEMANAGER_GENERIC_WRITE (STANDARD_RIGHTS_WRITE | RESOURCEMANAGER_SET_INFORMATION | RESOURCEMANAGER_RECOVER | RESOURCEMANAGER_ENLIST | RESOURCEMANAGER_GET_NOTIFICATION | RESOURCEMANAGER_REGISTER_PROTOCOL | RESOURCEMANAGER_COMPLETE_PROPAGATION | SYNCHRONIZE)
  8819. #define RESOURCEMANAGER_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE | RESOURCEMANAGER_RECOVER | RESOURCEMANAGER_ENLIST | RESOURCEMANAGER_GET_NOTIFICATION | RESOURCEMANAGER_COMPLETE_PROPAGATION | SYNCHRONIZE)
  8820. #define RESOURCEMANAGER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | RESOURCEMANAGER_GENERIC_READ | RESOURCEMANAGER_GENERIC_WRITE | RESOURCEMANAGER_GENERIC_EXECUTE)
  8821. #define ENLISTMENT_QUERY_INFORMATION 1
  8822. #define ENLISTMENT_SET_INFORMATION 2
  8823. #define ENLISTMENT_RECOVER 4
  8824. #define ENLISTMENT_SUBORDINATE_RIGHTS 8
  8825. #define ENLISTMENT_SUPERIOR_RIGHTS 0x10
  8826. #define ENLISTMENT_GENERIC_READ (STANDARD_RIGHTS_READ | ENLISTMENT_QUERY_INFORMATION)
  8827. #define ENLISTMENT_GENERIC_WRITE (STANDARD_RIGHTS_WRITE | ENLISTMENT_SET_INFORMATION | ENLISTMENT_RECOVER | ENLISTMENT_SUBORDINATE_RIGHTS | ENLISTMENT_SUPERIOR_RIGHTS)
  8828. #define ENLISTMENT_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE | ENLISTMENT_RECOVER | ENLISTMENT_SUBORDINATE_RIGHTS | ENLISTMENT_SUPERIOR_RIGHTS)
  8829. #define ENLISTMENT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | ENLISTMENT_GENERIC_READ | ENLISTMENT_GENERIC_WRITE | ENLISTMENT_GENERIC_EXECUTE)
  8830. typedef enum _TRANSACTION_OUTCOME {
  8831. TransactionOutcomeUndetermined = 1,
  8832. TransactionOutcomeCommitted,
  8833. TransactionOutcomeAborted,
  8834. } TRANSACTION_OUTCOME;
  8835. typedef enum _TRANSACTION_STATE {
  8836. TransactionStateNormal = 1,
  8837. TransactionStateIndoubt,
  8838. TransactionStateCommittedNotify,
  8839. } TRANSACTION_STATE;
  8840. typedef struct _TRANSACTION_BASIC_INFORMATION {
  8841. GUID TransactionId;
  8842. DWORD State;
  8843. DWORD Outcome;
  8844. } TRANSACTION_BASIC_INFORMATION,*PTRANSACTION_BASIC_INFORMATION;
  8845. typedef struct _TRANSACTIONMANAGER_BASIC_INFORMATION {
  8846. GUID TmIdentity;
  8847. LARGE_INTEGER VirtualClock;
  8848. } TRANSACTIONMANAGER_BASIC_INFORMATION,*PTRANSACTIONMANAGER_BASIC_INFORMATION;
  8849. typedef struct _TRANSACTIONMANAGER_LOG_INFORMATION {
  8850. GUID LogIdentity;
  8851. } TRANSACTIONMANAGER_LOG_INFORMATION,*PTRANSACTIONMANAGER_LOG_INFORMATION;
  8852. typedef struct _TRANSACTIONMANAGER_LOGPATH_INFORMATION {
  8853. DWORD LogPathLength;
  8854. WCHAR LogPath[1];
  8855. } TRANSACTIONMANAGER_LOGPATH_INFORMATION,*PTRANSACTIONMANAGER_LOGPATH_INFORMATION;
  8856. typedef struct _TRANSACTIONMANAGER_RECOVERY_INFORMATION {
  8857. ULONGLONG LastRecoveredLsn;
  8858. } TRANSACTIONMANAGER_RECOVERY_INFORMATION,*PTRANSACTIONMANAGER_RECOVERY_INFORMATION;
  8859. typedef struct _TRANSACTIONMANAGER_OLDEST_INFORMATION {
  8860. GUID OldestTransactionGuid;
  8861. } TRANSACTIONMANAGER_OLDEST_INFORMATION,*PTRANSACTIONMANAGER_OLDEST_INFORMATION;
  8862. typedef struct _TRANSACTION_PROPERTIES_INFORMATION {
  8863. DWORD IsolationLevel;
  8864. DWORD IsolationFlags;
  8865. LARGE_INTEGER Timeout;
  8866. DWORD Outcome;
  8867. DWORD DescriptionLength;
  8868. WCHAR Description[1];
  8869. } TRANSACTION_PROPERTIES_INFORMATION,*PTRANSACTION_PROPERTIES_INFORMATION;
  8870. typedef struct _TRANSACTION_BIND_INFORMATION {
  8871. HANDLE TmHandle;
  8872. } TRANSACTION_BIND_INFORMATION,*PTRANSACTION_BIND_INFORMATION;
  8873. typedef struct _TRANSACTION_ENLISTMENT_PAIR {
  8874. GUID EnlistmentId;
  8875. GUID ResourceManagerId;
  8876. } TRANSACTION_ENLISTMENT_PAIR,*PTRANSACTION_ENLISTMENT_PAIR;
  8877. typedef struct _TRANSACTION_ENLISTMENTS_INFORMATION {
  8878. DWORD NumberOfEnlistments;
  8879. TRANSACTION_ENLISTMENT_PAIR EnlistmentPair[1];
  8880. } TRANSACTION_ENLISTMENTS_INFORMATION,*PTRANSACTION_ENLISTMENTS_INFORMATION;
  8881. typedef struct _TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION {
  8882. TRANSACTION_ENLISTMENT_PAIR SuperiorEnlistmentPair;
  8883. } TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION,*PTRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION;
  8884. typedef struct _RESOURCEMANAGER_BASIC_INFORMATION {
  8885. GUID ResourceManagerId;
  8886. DWORD DescriptionLength;
  8887. WCHAR Description[1];
  8888. } RESOURCEMANAGER_BASIC_INFORMATION,*PRESOURCEMANAGER_BASIC_INFORMATION;
  8889. typedef struct _RESOURCEMANAGER_COMPLETION_INFORMATION {
  8890. HANDLE IoCompletionPortHandle;
  8891. ULONG_PTR CompletionKey;
  8892. } RESOURCEMANAGER_COMPLETION_INFORMATION,*PRESOURCEMANAGER_COMPLETION_INFORMATION;
  8893. typedef enum _TRANSACTION_INFORMATION_CLASS {
  8894. TransactionBasicInformation,
  8895. TransactionPropertiesInformation,
  8896. TransactionEnlistmentInformation,
  8897. TransactionSuperiorEnlistmentInformation,
  8898. TransactionBindInformation,
  8899. TransactionDTCPrivateInformation
  8900. } TRANSACTION_INFORMATION_CLASS;
  8901. typedef enum _TRANSACTIONMANAGER_INFORMATION_CLASS {
  8902. TransactionManagerBasicInformation,
  8903. TransactionManagerLogInformation,
  8904. TransactionManagerLogPathInformation,
  8905. TransactionManagerOnlineProbeInformation = 3,
  8906. TransactionManagerRecoveryInformation = 4,
  8907. TransactionManagerOldestTransactionInformation = 5
  8908. } TRANSACTIONMANAGER_INFORMATION_CLASS;
  8909. typedef enum _RESOURCEMANAGER_INFORMATION_CLASS {
  8910. ResourceManagerBasicInformation,
  8911. ResourceManagerCompletionInformation
  8912. } RESOURCEMANAGER_INFORMATION_CLASS;
  8913. typedef struct _ENLISTMENT_BASIC_INFORMATION {
  8914. GUID EnlistmentId;
  8915. GUID TransactionId;
  8916. GUID ResourceManagerId;
  8917. } ENLISTMENT_BASIC_INFORMATION,*PENLISTMENT_BASIC_INFORMATION;
  8918. typedef struct _ENLISTMENT_CRM_INFORMATION {
  8919. GUID CrmTransactionManagerId;
  8920. GUID CrmResourceManagerId;
  8921. GUID CrmEnlistmentId;
  8922. } ENLISTMENT_CRM_INFORMATION,*PENLISTMENT_CRM_INFORMATION;
  8923. typedef enum _ENLISTMENT_INFORMATION_CLASS {
  8924. EnlistmentBasicInformation,
  8925. EnlistmentRecoveryInformation,
  8926. EnlistmentCrmInformation
  8927. } ENLISTMENT_INFORMATION_CLASS;
  8928. typedef struct _TRANSACTION_LIST_ENTRY {
  8929. /*UOW*/ GUID UOW;
  8930. } TRANSACTION_LIST_ENTRY,*PTRANSACTION_LIST_ENTRY;
  8931. typedef struct _TRANSACTION_LIST_INFORMATION {
  8932. DWORD NumberOfTransactions;
  8933. TRANSACTION_LIST_ENTRY TransactionInformation[1];
  8934. } TRANSACTION_LIST_INFORMATION,*PTRANSACTION_LIST_INFORMATION;
  8935. typedef enum _KTMOBJECT_TYPE {
  8936. KTMOBJECT_TRANSACTION,
  8937. KTMOBJECT_TRANSACTION_MANAGER,
  8938. KTMOBJECT_RESOURCE_MANAGER,
  8939. KTMOBJECT_ENLISTMENT,
  8940. KTMOBJECT_INVALID
  8941. } KTMOBJECT_TYPE,*PKTMOBJECT_TYPE;
  8942. typedef struct _KTMOBJECT_CURSOR {
  8943. GUID LastQuery;
  8944. DWORD ObjectIdCount;
  8945. GUID ObjectIds[1];
  8946. } KTMOBJECT_CURSOR,*PKTMOBJECT_CURSOR;
  8947. #ifdef __cplusplus
  8948. }
  8949. #endif
  8950. #endif
  8951. /* Field Names From (See _fields_ section)
  8952. * FIXME: Verify these against documentation
  8953. * -- These documentation describes Win32 Constants and Structures in Python --
  8954. * Constants - http://packages.python.org/winappdbg/winappdbg.win32.context_i386-pysrc.html
  8955. * WOW64_FLOATING_SAVE_AREA - http://packages.python.org/winappdbg/winappdbg.win32.context_amd64.WOW64_FLOATING_SAVE_AREA-class.html
  8956. * WOW64_CONTEXT - http://packages.python.org/winappdbg/winappdbg.win32.context_amd64.WOW64_CONTEXT-class.html
  8957. */
  8958. #define WOW64_CONTEXT_i386 0x00010000
  8959. #define WOW64_CONTEXT_i486 0x00010000
  8960. #define WOW64_CONTEXT_CONTROL (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000001))
  8961. #define WOW64_CONTEXT_INTEGER (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000002))
  8962. #define WOW64_CONTEXT_SEGMENTS (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000004))
  8963. #define WOW64_CONTEXT_FLOATING_POINT (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000008))
  8964. #define WOW64_CONTEXT_DEBUG_REGISTERS (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000010))
  8965. #define WOW64_CONTEXT_EXTENDED_REGISTERS (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000020))
  8966. #define WOW64_CONTEXT_FULL (WOW64_CONTEXT_CONTROL | WOW64_CONTEXT_INTEGER | WOW64_CONTEXT_SEGMENTS)
  8967. #define WOW64_CONTEXT_ALL (WOW64_CONTEXT_CONTROL | WOW64_CONTEXT_INTEGER | WOW64_CONTEXT_SEGMENTS | WOW64_CONTEXT_FLOATING_POINT | WOW64_CONTEXT_DEBUG_REGISTERS | WOW64_CONTEXT_EXTENDED_REGISTERS)
  8968. #define WOW64_CONTEXT_XSTATE (WOW64_CONTEXT_i386 | __MSABI_LONG(0x00000040))
  8969. #define WOW64_CONTEXT_EXCEPTION_ACTIVE 0x08000000
  8970. #define WOW64_CONTEXT_SERVICE_ACTIVE 0x10000000
  8971. #define WOW64_CONTEXT_EXCEPTION_REQUEST 0x40000000
  8972. #define WOW64_CONTEXT_EXCEPTION_REPORTING 0x80000000
  8973. #define WOW64_SIZE_OF_80387_REGISTERS 80
  8974. #define WOW64_MAXIMUM_SUPPORTED_EXTENSION 512
  8975. typedef struct _WOW64_FLOATING_SAVE_AREA {
  8976. DWORD ControlWord;
  8977. DWORD StatusWord;
  8978. DWORD TagWord;
  8979. DWORD ErrorOffset;
  8980. DWORD ErrorSelector;
  8981. DWORD DataOffset;
  8982. DWORD DataSelector;
  8983. BYTE RegisterArea[WOW64_SIZE_OF_80387_REGISTERS];
  8984. DWORD Cr0NpxState;
  8985. } WOW64_FLOATING_SAVE_AREA, *PWOW64_FLOATING_SAVE_AREA;
  8986. #include "pshpack4.h"
  8987. typedef struct _WOW64_CONTEXT {
  8988. DWORD ContextFlags;
  8989. DWORD Dr0;
  8990. DWORD Dr1;
  8991. DWORD Dr2;
  8992. DWORD Dr3;
  8993. DWORD Dr6;
  8994. DWORD Dr7;
  8995. WOW64_FLOATING_SAVE_AREA FloatSave;
  8996. DWORD SegGs;
  8997. DWORD SegFs;
  8998. DWORD SegEs;
  8999. DWORD SegDs;
  9000. DWORD Edi;
  9001. DWORD Esi;
  9002. DWORD Ebx;
  9003. DWORD Edx;
  9004. DWORD Ecx;
  9005. DWORD Eax;
  9006. DWORD Ebp;
  9007. DWORD Eip;
  9008. DWORD SegCs;
  9009. DWORD EFlags;
  9010. DWORD Esp;
  9011. DWORD SegSs;
  9012. BYTE ExtendedRegisters[WOW64_MAXIMUM_SUPPORTED_EXTENSION];
  9013. } WOW64_CONTEXT, *PWOW64_CONTEXT;
  9014. #include "poppack.h"
  9015. typedef struct _WOW64_LDT_ENTRY {
  9016. WORD LimitLow;
  9017. WORD BaseLow;
  9018. __C89_NAMELESS union {
  9019. struct {
  9020. BYTE BaseMid;
  9021. BYTE Flags1;
  9022. BYTE Flags2;
  9023. BYTE BaseHi;
  9024. } Bytes;
  9025. struct {
  9026. DWORD BaseMid :8;
  9027. DWORD Type :5;
  9028. DWORD Dpl :2;
  9029. DWORD Pres :1;
  9030. DWORD LimitHi :4;
  9031. DWORD Sys :1;
  9032. DWORD Reserved_0 :1;
  9033. DWORD Default_Big :1;
  9034. DWORD Granularity :1;
  9035. DWORD BaseHi :8;
  9036. } Bits;
  9037. } HighWord;
  9038. } WOW64_LDT_ENTRY, *PWOW64_LDT_ENTRY;
  9039. typedef struct _WOW64_DESCRIPTOR_TABLE_ENTRY {
  9040. DWORD Selector;
  9041. WOW64_LDT_ENTRY Descriptor;
  9042. } WOW64_DESCRIPTOR_TABLE_ENTRY,*PWOW64_DESCRIPTOR_TABLE_ENTRY;
  9043. #if (_WIN32_WINNT >= 0x0601)
  9044. #ifndef ___PROCESSOR_NUMBER_DEFINED
  9045. #define ___PROCESSOR_NUMBER_DEFINED
  9046. typedef struct _PROCESSOR_NUMBER {
  9047. WORD Group;
  9048. BYTE Number;
  9049. BYTE Reserved;
  9050. } PROCESSOR_NUMBER, *PPROCESSOR_NUMBER;
  9051. #define ALL_PROCESSOR_GROUPS 0xffff
  9052. #endif /* !___PROCESSOR_NUMBER_DEFINED */
  9053. #endif /*(_WIN32_WINNT >= 0x0601)*/
  9054. #define ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION (1)
  9055. #define ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION (2)
  9056. #define ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION (3)
  9057. #define ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION (4)
  9058. #define ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION (5)
  9059. #define ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION (6)
  9060. #define ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION (7)
  9061. #define ACTIVATION_CONTEXT_SECTION_GLOBAL_OBJECT_RENAME_TABLE (8)
  9062. #define ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES (9)
  9063. #define ACTIVATION_CONTEXT_SECTION_APPLICATION_SETTINGS (10)
  9064. #define ACTIVATION_CONTEXT_SECTION_COMPATIBILITY_INFO (11)
  9065. #define ACTIVATION_CONTEXT_SECTION_WINRT_ACTIVATABLE_CLASSES (12)
  9066. #ifdef __cplusplus
  9067. }
  9068. #endif
  9069. #endif /* _WINNT_ */