12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770977197729773977497759776977797789779978097819782978397849785978697879788978997909791979297939794979597969797979897999800980198029803980498059806 |
- /*
- * ntifs.h
- *
- * Windows NT Filesystem Driver Developer Kit
- *
- * This file is part of the ReactOS DDK package.
- *
- * Contributors:
- * Amine Khaldi
- * Timo Kreuzer (timo.kreuzer@reactos.org)
- *
- * THIS SOFTWARE IS NOT COPYRIGHTED
- *
- * This source code is offered for use in the public domain. You may
- * use, modify or distribute it freely.
- *
- * This code is distributed in the hope that it will be useful but
- * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
- * DISCLAIMED. This includes but is not limited to warranties of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
- */
- #pragma once
- #define _NTIFS_INCLUDED_
- #define _GNU_NTIFS_
- #ifdef __cplusplus
- extern "C" {
- #endif
- /* Dependencies */
- #include <ntddk.h>
- #include <excpt.h>
- #include <ntdef.h>
- #include <ntnls.h>
- #include <ntstatus.h>
- #include <bugcodes.h>
- #include <ntiologc.h>
- #ifndef FlagOn
- #define FlagOn(_F,_SF) ((_F) & (_SF))
- #endif
- #ifndef BooleanFlagOn
- #define BooleanFlagOn(F,SF) ((BOOLEAN)(((F) & (SF)) != 0))
- #endif
- #ifndef SetFlag
- #define SetFlag(_F,_SF) ((_F) |= (_SF))
- #endif
- #ifndef ClearFlag
- #define ClearFlag(_F,_SF) ((_F) &= ~(_SF))
- #endif
- typedef UNICODE_STRING LSA_UNICODE_STRING, *PLSA_UNICODE_STRING;
- typedef STRING LSA_STRING, *PLSA_STRING;
- typedef OBJECT_ATTRIBUTES LSA_OBJECT_ATTRIBUTES, *PLSA_OBJECT_ATTRIBUTES;
- /******************************************************************************
- * Security Manager Types *
- ******************************************************************************/
- #ifndef SID_IDENTIFIER_AUTHORITY_DEFINED
- #define SID_IDENTIFIER_AUTHORITY_DEFINED
- typedef struct _SID_IDENTIFIER_AUTHORITY {
- UCHAR Value[6];
- } SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY,*LPSID_IDENTIFIER_AUTHORITY;
- #endif
- #ifndef SID_DEFINED
- #define SID_DEFINED
- typedef struct _SID {
- UCHAR Revision;
- UCHAR SubAuthorityCount;
- SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
- ULONG SubAuthority[ANYSIZE_ARRAY];
- } SID, *PISID;
- #endif
- #define SID_REVISION 1
- #define SID_MAX_SUB_AUTHORITIES 15
- #define SID_RECOMMENDED_SUB_AUTHORITIES 1
- typedef enum _SID_NAME_USE {
- SidTypeUser = 1,
- SidTypeGroup,
- SidTypeDomain,
- SidTypeAlias,
- SidTypeWellKnownGroup,
- SidTypeDeletedAccount,
- SidTypeInvalid,
- SidTypeUnknown,
- SidTypeComputer,
- SidTypeLabel,
- SidTypeLogonSession
- } SID_NAME_USE, *PSID_NAME_USE;
- typedef struct _SID_AND_ATTRIBUTES {
- PSID Sid;
- ULONG Attributes;
- } SID_AND_ATTRIBUTES, *PSID_AND_ATTRIBUTES;
- typedef SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
- typedef SID_AND_ATTRIBUTES_ARRAY *PSID_AND_ATTRIBUTES_ARRAY;
- #define SID_HASH_SIZE 32
- typedef ULONG_PTR SID_HASH_ENTRY, *PSID_HASH_ENTRY;
- typedef struct _SID_AND_ATTRIBUTES_HASH {
- ULONG SidCount;
- PSID_AND_ATTRIBUTES SidAttr;
- SID_HASH_ENTRY Hash[SID_HASH_SIZE];
- } SID_AND_ATTRIBUTES_HASH, *PSID_AND_ATTRIBUTES_HASH;
- /* Universal well-known SIDs */
- #define SECURITY_NULL_SID_AUTHORITY {0,0,0,0,0,0}
- #define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1}
- #define SECURITY_LOCAL_SID_AUTHORITY {0,0,0,0,0,2}
- #define SECURITY_CREATOR_SID_AUTHORITY {0,0,0,0,0,3}
- #define SECURITY_NON_UNIQUE_AUTHORITY {0,0,0,0,0,4}
- #define SECURITY_RESOURCE_MANAGER_AUTHORITY {0,0,0,0,0,9}
- #define SECURITY_NULL_RID (0x00000000L)
- #define SECURITY_WORLD_RID (0x00000000L)
- #define SECURITY_LOCAL_RID (0x00000000L)
- #define SECURITY_LOCAL_LOGON_RID (0x00000001L)
- #define SECURITY_CREATOR_OWNER_RID (0x00000000L)
- #define SECURITY_CREATOR_GROUP_RID (0x00000001L)
- #define SECURITY_CREATOR_OWNER_SERVER_RID (0x00000002L)
- #define SECURITY_CREATOR_GROUP_SERVER_RID (0x00000003L)
- #define SECURITY_CREATOR_OWNER_RIGHTS_RID (0x00000004L)
- /* NT well-known SIDs */
- #define SECURITY_NT_AUTHORITY {0,0,0,0,0,5}
- #define SECURITY_DIALUP_RID (0x00000001L)
- #define SECURITY_NETWORK_RID (0x00000002L)
- #define SECURITY_BATCH_RID (0x00000003L)
- #define SECURITY_INTERACTIVE_RID (0x00000004L)
- #define SECURITY_LOGON_IDS_RID (0x00000005L)
- #define SECURITY_LOGON_IDS_RID_COUNT (3L)
- #define SECURITY_SERVICE_RID (0x00000006L)
- #define SECURITY_ANONYMOUS_LOGON_RID (0x00000007L)
- #define SECURITY_PROXY_RID (0x00000008L)
- #define SECURITY_ENTERPRISE_CONTROLLERS_RID (0x00000009L)
- #define SECURITY_SERVER_LOGON_RID SECURITY_ENTERPRISE_CONTROLLERS_RID
- #define SECURITY_PRINCIPAL_SELF_RID (0x0000000AL)
- #define SECURITY_AUTHENTICATED_USER_RID (0x0000000BL)
- #define SECURITY_RESTRICTED_CODE_RID (0x0000000CL)
- #define SECURITY_TERMINAL_SERVER_RID (0x0000000DL)
- #define SECURITY_REMOTE_LOGON_RID (0x0000000EL)
- #define SECURITY_THIS_ORGANIZATION_RID (0x0000000FL)
- #define SECURITY_IUSER_RID (0x00000011L)
- #define SECURITY_LOCAL_SYSTEM_RID (0x00000012L)
- #define SECURITY_LOCAL_SERVICE_RID (0x00000013L)
- #define SECURITY_NETWORK_SERVICE_RID (0x00000014L)
- #define SECURITY_NT_NON_UNIQUE (0x00000015L)
- #define SECURITY_NT_NON_UNIQUE_SUB_AUTH_COUNT (3L)
- #define SECURITY_ENTERPRISE_READONLY_CONTROLLERS_RID (0x00000016L)
- #define SECURITY_BUILTIN_DOMAIN_RID (0x00000020L)
- #define SECURITY_WRITE_RESTRICTED_CODE_RID (0x00000021L)
- #define SECURITY_PACKAGE_BASE_RID (0x00000040L)
- #define SECURITY_PACKAGE_RID_COUNT (2L)
- #define SECURITY_PACKAGE_NTLM_RID (0x0000000AL)
- #define SECURITY_PACKAGE_SCHANNEL_RID (0x0000000EL)
- #define SECURITY_PACKAGE_DIGEST_RID (0x00000015L)
- #define SECURITY_CRED_TYPE_BASE_RID (0x00000041L)
- #define SECURITY_CRED_TYPE_RID_COUNT (2L)
- #define SECURITY_CRED_TYPE_THIS_ORG_CERT_RID (0x00000001L)
- #define SECURITY_MIN_BASE_RID (0x00000050L)
- #define SECURITY_SERVICE_ID_BASE_RID (0x00000050L)
- #define SECURITY_SERVICE_ID_RID_COUNT (6L)
- #define SECURITY_RESERVED_ID_BASE_RID (0x00000051L)
- #define SECURITY_APPPOOL_ID_BASE_RID (0x00000052L)
- #define SECURITY_APPPOOL_ID_RID_COUNT (6L)
- #define SECURITY_VIRTUALSERVER_ID_BASE_RID (0x00000053L)
- #define SECURITY_VIRTUALSERVER_ID_RID_COUNT (6L)
- #define SECURITY_USERMODEDRIVERHOST_ID_BASE_RID (0x00000054L)
- #define SECURITY_USERMODEDRIVERHOST_ID_RID_COUNT (6L)
- #define SECURITY_CLOUD_INFRASTRUCTURE_SERVICES_ID_BASE_RID (0x00000055L)
- #define SECURITY_CLOUD_INFRASTRUCTURE_SERVICES_ID_RID_COUNT (6L)
- #define SECURITY_WMIHOST_ID_BASE_RID (0x00000056L)
- #define SECURITY_WMIHOST_ID_RID_COUNT (6L)
- #define SECURITY_TASK_ID_BASE_RID (0x00000057L)
- #define SECURITY_NFS_ID_BASE_RID (0x00000058L)
- #define SECURITY_COM_ID_BASE_RID (0x00000059L)
- #define SECURITY_VIRTUALACCOUNT_ID_RID_COUNT (6L)
- #define SECURITY_MAX_BASE_RID (0x0000006FL)
- #define SECURITY_MAX_ALWAYS_FILTERED (0x000003E7L)
- #define SECURITY_MIN_NEVER_FILTERED (0x000003E8L)
- #define SECURITY_OTHER_ORGANIZATION_RID (0x000003E8L)
- #define SECURITY_WINDOWSMOBILE_ID_BASE_RID (0x00000070L)
- /* Well-known domain relative sub-authority values (RIDs) */
- #define DOMAIN_GROUP_RID_ENTERPRISE_READONLY_DOMAIN_CONTROLLERS (0x000001F2L)
- #define FOREST_USER_RID_MAX (0x000001F3L)
- /* Well-known users */
- #define DOMAIN_USER_RID_ADMIN (0x000001F4L)
- #define DOMAIN_USER_RID_GUEST (0x000001F5L)
- #define DOMAIN_USER_RID_KRBTGT (0x000001F6L)
- #define DOMAIN_USER_RID_MAX (0x000003E7L)
- /* Well-known groups */
- #define DOMAIN_GROUP_RID_ADMINS (0x00000200L)
- #define DOMAIN_GROUP_RID_USERS (0x00000201L)
- #define DOMAIN_GROUP_RID_GUESTS (0x00000202L)
- #define DOMAIN_GROUP_RID_COMPUTERS (0x00000203L)
- #define DOMAIN_GROUP_RID_CONTROLLERS (0x00000204L)
- #define DOMAIN_GROUP_RID_CERT_ADMINS (0x00000205L)
- #define DOMAIN_GROUP_RID_SCHEMA_ADMINS (0x00000206L)
- #define DOMAIN_GROUP_RID_ENTERPRISE_ADMINS (0x00000207L)
- #define DOMAIN_GROUP_RID_POLICY_ADMINS (0x00000208L)
- #define DOMAIN_GROUP_RID_READONLY_CONTROLLERS (0x00000209L)
- /* Well-known aliases */
- #define DOMAIN_ALIAS_RID_ADMINS (0x00000220L)
- #define DOMAIN_ALIAS_RID_USERS (0x00000221L)
- #define DOMAIN_ALIAS_RID_GUESTS (0x00000222L)
- #define DOMAIN_ALIAS_RID_POWER_USERS (0x00000223L)
- #define DOMAIN_ALIAS_RID_ACCOUNT_OPS (0x00000224L)
- #define DOMAIN_ALIAS_RID_SYSTEM_OPS (0x00000225L)
- #define DOMAIN_ALIAS_RID_PRINT_OPS (0x00000226L)
- #define DOMAIN_ALIAS_RID_BACKUP_OPS (0x00000227L)
- #define DOMAIN_ALIAS_RID_REPLICATOR (0x00000228L)
- #define DOMAIN_ALIAS_RID_RAS_SERVERS (0x00000229L)
- #define DOMAIN_ALIAS_RID_PREW2KCOMPACCESS (0x0000022AL)
- #define DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS (0x0000022BL)
- #define DOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS (0x0000022CL)
- #define DOMAIN_ALIAS_RID_INCOMING_FOREST_TRUST_BUILDERS (0x0000022DL)
- #define DOMAIN_ALIAS_RID_MONITORING_USERS (0x0000022EL)
- #define DOMAIN_ALIAS_RID_LOGGING_USERS (0x0000022FL)
- #define DOMAIN_ALIAS_RID_AUTHORIZATIONACCESS (0x00000230L)
- #define DOMAIN_ALIAS_RID_TS_LICENSE_SERVERS (0x00000231L)
- #define DOMAIN_ALIAS_RID_DCOM_USERS (0x00000232L)
- #define DOMAIN_ALIAS_RID_IUSERS (0x00000238L)
- #define DOMAIN_ALIAS_RID_CRYPTO_OPERATORS (0x00000239L)
- #define DOMAIN_ALIAS_RID_CACHEABLE_PRINCIPALS_GROUP (0x0000023BL)
- #define DOMAIN_ALIAS_RID_NON_CACHEABLE_PRINCIPALS_GROUP (0x0000023CL)
- #define DOMAIN_ALIAS_RID_EVENT_LOG_READERS_GROUP (0x0000023DL)
- #define DOMAIN_ALIAS_RID_CERTSVC_DCOM_ACCESS_GROUP (0x0000023EL)
- #define SECURITY_MANDATORY_LABEL_AUTHORITY {0,0,0,0,0,16}
- #define SECURITY_MANDATORY_UNTRUSTED_RID (0x00000000L)
- #define SECURITY_MANDATORY_LOW_RID (0x00001000L)
- #define SECURITY_MANDATORY_MEDIUM_RID (0x00002000L)
- #define SECURITY_MANDATORY_HIGH_RID (0x00003000L)
- #define SECURITY_MANDATORY_SYSTEM_RID (0x00004000L)
- #define SECURITY_MANDATORY_PROTECTED_PROCESS_RID (0x00005000L)
- /* SECURITY_MANDATORY_MAXIMUM_USER_RID is the highest RID that
- can be set by a usermode caller.*/
- #define SECURITY_MANDATORY_MAXIMUM_USER_RID SECURITY_MANDATORY_SYSTEM_RID
- #define MANDATORY_LEVEL_TO_MANDATORY_RID(IL) (IL * 0x1000)
- /* Allocate the System Luid. The first 1000 LUIDs are reserved.
- Use #999 here (0x3e7 = 999) */
- #define SYSTEM_LUID {0x3e7, 0x0}
- #define ANONYMOUS_LOGON_LUID {0x3e6, 0x0}
- #define LOCALSERVICE_LUID {0x3e5, 0x0}
- #define NETWORKSERVICE_LUID {0x3e4, 0x0}
- #define IUSER_LUID {0x3e3, 0x0}
- typedef struct _ACE_HEADER {
- UCHAR AceType;
- UCHAR AceFlags;
- USHORT AceSize;
- } ACE_HEADER, *PACE_HEADER;
- /* also in winnt.h */
- #define ACCESS_MIN_MS_ACE_TYPE (0x0)
- #define ACCESS_ALLOWED_ACE_TYPE (0x0)
- #define ACCESS_DENIED_ACE_TYPE (0x1)
- #define SYSTEM_AUDIT_ACE_TYPE (0x2)
- #define SYSTEM_ALARM_ACE_TYPE (0x3)
- #define ACCESS_MAX_MS_V2_ACE_TYPE (0x3)
- #define ACCESS_ALLOWED_COMPOUND_ACE_TYPE (0x4)
- #define ACCESS_MAX_MS_V3_ACE_TYPE (0x4)
- #define ACCESS_MIN_MS_OBJECT_ACE_TYPE (0x5)
- #define ACCESS_ALLOWED_OBJECT_ACE_TYPE (0x5)
- #define ACCESS_DENIED_OBJECT_ACE_TYPE (0x6)
- #define SYSTEM_AUDIT_OBJECT_ACE_TYPE (0x7)
- #define SYSTEM_ALARM_OBJECT_ACE_TYPE (0x8)
- #define ACCESS_MAX_MS_OBJECT_ACE_TYPE (0x8)
- #define ACCESS_MAX_MS_V4_ACE_TYPE (0x8)
- #define ACCESS_MAX_MS_ACE_TYPE (0x8)
- #define ACCESS_ALLOWED_CALLBACK_ACE_TYPE (0x9)
- #define ACCESS_DENIED_CALLBACK_ACE_TYPE (0xA)
- #define ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_TYPE (0xB)
- #define ACCESS_DENIED_CALLBACK_OBJECT_ACE_TYPE (0xC)
- #define SYSTEM_AUDIT_CALLBACK_ACE_TYPE (0xD)
- #define SYSTEM_ALARM_CALLBACK_ACE_TYPE (0xE)
- #define SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_TYPE (0xF)
- #define SYSTEM_ALARM_CALLBACK_OBJECT_ACE_TYPE (0x10)
- #define ACCESS_MAX_MS_V5_ACE_TYPE (0x11)
- #define SYSTEM_MANDATORY_LABEL_ACE_TYPE (0x11)
- /* The following are the inherit flags that go into the AceFlags field
- of an Ace header. */
- #define OBJECT_INHERIT_ACE (0x1)
- #define CONTAINER_INHERIT_ACE (0x2)
- #define NO_PROPAGATE_INHERIT_ACE (0x4)
- #define INHERIT_ONLY_ACE (0x8)
- #define INHERITED_ACE (0x10)
- #define VALID_INHERIT_FLAGS (0x1F)
- #define SUCCESSFUL_ACCESS_ACE_FLAG (0x40)
- #define FAILED_ACCESS_ACE_FLAG (0x80)
- typedef struct _ACCESS_ALLOWED_ACE {
- ACE_HEADER Header;
- ACCESS_MASK Mask;
- ULONG SidStart;
- } ACCESS_ALLOWED_ACE, *PACCESS_ALLOWED_ACE;
- typedef struct _ACCESS_DENIED_ACE {
- ACE_HEADER Header;
- ACCESS_MASK Mask;
- ULONG SidStart;
- } ACCESS_DENIED_ACE, *PACCESS_DENIED_ACE;
- typedef struct _SYSTEM_AUDIT_ACE {
- ACE_HEADER Header;
- ACCESS_MASK Mask;
- ULONG SidStart;
- } SYSTEM_AUDIT_ACE, *PSYSTEM_AUDIT_ACE;
- typedef struct _SYSTEM_ALARM_ACE {
- ACE_HEADER Header;
- ACCESS_MASK Mask;
- ULONG SidStart;
- } SYSTEM_ALARM_ACE, *PSYSTEM_ALARM_ACE;
- typedef struct _SYSTEM_MANDATORY_LABEL_ACE {
- ACE_HEADER Header;
- ACCESS_MASK Mask;
- ULONG SidStart;
- } SYSTEM_MANDATORY_LABEL_ACE, *PSYSTEM_MANDATORY_LABEL_ACE;
- #define SYSTEM_MANDATORY_LABEL_NO_WRITE_UP 0x1
- #define SYSTEM_MANDATORY_LABEL_NO_READ_UP 0x2
- #define SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP 0x4
- #define SYSTEM_MANDATORY_LABEL_VALID_MASK (SYSTEM_MANDATORY_LABEL_NO_WRITE_UP | \
- SYSTEM_MANDATORY_LABEL_NO_READ_UP | \
- SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP)
- #define SECURITY_DESCRIPTOR_MIN_LENGTH (sizeof(SECURITY_DESCRIPTOR))
- typedef USHORT SECURITY_DESCRIPTOR_CONTROL,*PSECURITY_DESCRIPTOR_CONTROL;
- #define SE_OWNER_DEFAULTED 0x0001
- #define SE_GROUP_DEFAULTED 0x0002
- #define SE_DACL_PRESENT 0x0004
- #define SE_DACL_DEFAULTED 0x0008
- #define SE_SACL_PRESENT 0x0010
- #define SE_SACL_DEFAULTED 0x0020
- #define SE_DACL_UNTRUSTED 0x0040
- #define SE_SERVER_SECURITY 0x0080
- #define SE_DACL_AUTO_INHERIT_REQ 0x0100
- #define SE_SACL_AUTO_INHERIT_REQ 0x0200
- #define SE_DACL_AUTO_INHERITED 0x0400
- #define SE_SACL_AUTO_INHERITED 0x0800
- #define SE_DACL_PROTECTED 0x1000
- #define SE_SACL_PROTECTED 0x2000
- #define SE_RM_CONTROL_VALID 0x4000
- #define SE_SELF_RELATIVE 0x8000
- typedef struct _SECURITY_DESCRIPTOR_RELATIVE {
- UCHAR Revision;
- UCHAR Sbz1;
- SECURITY_DESCRIPTOR_CONTROL Control;
- ULONG Owner;
- ULONG Group;
- ULONG Sacl;
- ULONG Dacl;
- } SECURITY_DESCRIPTOR_RELATIVE, *PISECURITY_DESCRIPTOR_RELATIVE;
- typedef struct _SECURITY_DESCRIPTOR {
- UCHAR Revision;
- UCHAR Sbz1;
- SECURITY_DESCRIPTOR_CONTROL Control;
- PSID Owner;
- PSID Group;
- PACL Sacl;
- PACL Dacl;
- } SECURITY_DESCRIPTOR, *PISECURITY_DESCRIPTOR;
- typedef struct _OBJECT_TYPE_LIST {
- USHORT Level;
- USHORT Sbz;
- GUID *ObjectType;
- } OBJECT_TYPE_LIST, *POBJECT_TYPE_LIST;
- #define ACCESS_OBJECT_GUID 0
- #define ACCESS_PROPERTY_SET_GUID 1
- #define ACCESS_PROPERTY_GUID 2
- #define ACCESS_MAX_LEVEL 4
- typedef enum _AUDIT_EVENT_TYPE {
- AuditEventObjectAccess,
- AuditEventDirectoryServiceAccess
- } AUDIT_EVENT_TYPE, *PAUDIT_EVENT_TYPE;
- #define AUDIT_ALLOW_NO_PRIVILEGE 0x1
- #define ACCESS_DS_SOURCE_A "DS"
- #define ACCESS_DS_SOURCE_W L"DS"
- #define ACCESS_DS_OBJECT_TYPE_NAME_A "Directory Service Object"
- #define ACCESS_DS_OBJECT_TYPE_NAME_W L"Directory Service Object"
- #define ACCESS_REASON_TYPE_MASK 0xffff0000
- #define ACCESS_REASON_DATA_MASK 0x0000ffff
- typedef enum _ACCESS_REASON_TYPE {
- AccessReasonNone = 0x00000000,
- AccessReasonAllowedAce = 0x00010000,
- AccessReasonDeniedAce = 0x00020000,
- AccessReasonAllowedParentAce = 0x00030000,
- AccessReasonDeniedParentAce = 0x00040000,
- AccessReasonMissingPrivilege = 0x00100000,
- AccessReasonFromPrivilege = 0x00200000,
- AccessReasonIntegrityLevel = 0x00300000,
- AccessReasonOwnership = 0x00400000,
- AccessReasonNullDacl = 0x00500000,
- AccessReasonEmptyDacl = 0x00600000,
- AccessReasonNoSD = 0x00700000,
- AccessReasonNoGrant = 0x00800000
- } ACCESS_REASON_TYPE;
- typedef ULONG ACCESS_REASON;
- typedef struct _ACCESS_REASONS {
- ACCESS_REASON Data[32];
- } ACCESS_REASONS, *PACCESS_REASONS;
- #define SE_SECURITY_DESCRIPTOR_FLAG_NO_OWNER_ACE 0x00000001
- #define SE_SECURITY_DESCRIPTOR_FLAG_NO_LABEL_ACE 0x00000002
- #define SE_SECURITY_DESCRIPTOR_VALID_FLAGS 0x00000003
- typedef struct _SE_SECURITY_DESCRIPTOR {
- ULONG Size;
- ULONG Flags;
- PSECURITY_DESCRIPTOR SecurityDescriptor;
- } SE_SECURITY_DESCRIPTOR, *PSE_SECURITY_DESCRIPTOR;
- typedef struct _SE_ACCESS_REQUEST {
- ULONG Size;
- PSE_SECURITY_DESCRIPTOR SeSecurityDescriptor;
- ACCESS_MASK DesiredAccess;
- ACCESS_MASK PreviouslyGrantedAccess;
- PSID PrincipalSelfSid;
- PGENERIC_MAPPING GenericMapping;
- ULONG ObjectTypeListCount;
- POBJECT_TYPE_LIST ObjectTypeList;
- } SE_ACCESS_REQUEST, *PSE_ACCESS_REQUEST;
- typedef struct _SE_ACCESS_REPLY {
- ULONG Size;
- ULONG ResultListCount;
- PACCESS_MASK GrantedAccess;
- PNTSTATUS AccessStatus;
- PACCESS_REASONS AccessReason;
- PPRIVILEGE_SET* Privileges;
- } SE_ACCESS_REPLY, *PSE_ACCESS_REPLY;
- typedef enum _SE_AUDIT_OPERATION {
- AuditPrivilegeObject,
- AuditPrivilegeService,
- AuditAccessCheck,
- AuditOpenObject,
- AuditOpenObjectWithTransaction,
- AuditCloseObject,
- AuditDeleteObject,
- AuditOpenObjectForDelete,
- AuditOpenObjectForDeleteWithTransaction,
- AuditCloseNonObject,
- AuditOpenNonObject,
- AuditObjectReference,
- AuditHandleCreation,
- } SE_AUDIT_OPERATION, *PSE_AUDIT_OPERATION;
- typedef struct _SE_AUDIT_INFO {
- ULONG Size;
- AUDIT_EVENT_TYPE AuditType;
- SE_AUDIT_OPERATION AuditOperation;
- ULONG AuditFlags;
- UNICODE_STRING SubsystemName;
- UNICODE_STRING ObjectTypeName;
- UNICODE_STRING ObjectName;
- PVOID HandleId;
- GUID* TransactionId;
- LUID* OperationId;
- BOOLEAN ObjectCreation;
- BOOLEAN GenerateOnClose;
- } SE_AUDIT_INFO, *PSE_AUDIT_INFO;
- #define TOKEN_ASSIGN_PRIMARY (0x0001)
- #define TOKEN_DUPLICATE (0x0002)
- #define TOKEN_IMPERSONATE (0x0004)
- #define TOKEN_QUERY (0x0008)
- #define TOKEN_QUERY_SOURCE (0x0010)
- #define TOKEN_ADJUST_PRIVILEGES (0x0020)
- #define TOKEN_ADJUST_GROUPS (0x0040)
- #define TOKEN_ADJUST_DEFAULT (0x0080)
- #define TOKEN_ADJUST_SESSIONID (0x0100)
- #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 )
- #if ((defined(_WIN32_WINNT) && (_WIN32_WINNT > 0x0400)) || (!defined(_WIN32_WINNT)))
- #define TOKEN_ALL_ACCESS (TOKEN_ALL_ACCESS_P |\
- TOKEN_ADJUST_SESSIONID )
- #else
- #define TOKEN_ALL_ACCESS (TOKEN_ALL_ACCESS_P)
- #endif
- #define TOKEN_READ (STANDARD_RIGHTS_READ |\
- TOKEN_QUERY)
- #define TOKEN_WRITE (STANDARD_RIGHTS_WRITE |\
- TOKEN_ADJUST_PRIVILEGES |\
- TOKEN_ADJUST_GROUPS |\
- TOKEN_ADJUST_DEFAULT)
- #define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE)
- typedef enum _TOKEN_TYPE {
- TokenPrimary = 1,
- TokenImpersonation
- } TOKEN_TYPE,*PTOKEN_TYPE;
- typedef enum _TOKEN_INFORMATION_CLASS {
- TokenUser = 1,
- TokenGroups,
- TokenPrivileges,
- TokenOwner,
- TokenPrimaryGroup,
- TokenDefaultDacl,
- TokenSource,
- TokenType,
- TokenImpersonationLevel,
- TokenStatistics,
- TokenRestrictedSids,
- TokenSessionId,
- TokenGroupsAndPrivileges,
- TokenSessionReference,
- TokenSandBoxInert,
- TokenAuditPolicy,
- TokenOrigin,
- TokenElevationType,
- TokenLinkedToken,
- TokenElevation,
- TokenHasRestrictions,
- TokenAccessInformation,
- TokenVirtualizationAllowed,
- TokenVirtualizationEnabled,
- TokenIntegrityLevel,
- TokenUIAccess,
- TokenMandatoryPolicy,
- TokenLogonSid,
- MaxTokenInfoClass
- } TOKEN_INFORMATION_CLASS, *PTOKEN_INFORMATION_CLASS;
- typedef struct _TOKEN_USER {
- SID_AND_ATTRIBUTES User;
- } TOKEN_USER, *PTOKEN_USER;
- typedef struct _TOKEN_GROUPS {
- ULONG GroupCount;
- SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY];
- } TOKEN_GROUPS,*PTOKEN_GROUPS,*LPTOKEN_GROUPS;
- typedef struct _TOKEN_PRIVILEGES {
- ULONG PrivilegeCount;
- LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY];
- } TOKEN_PRIVILEGES,*PTOKEN_PRIVILEGES,*LPTOKEN_PRIVILEGES;
- typedef struct _TOKEN_OWNER {
- PSID Owner;
- } TOKEN_OWNER,*PTOKEN_OWNER;
- typedef struct _TOKEN_PRIMARY_GROUP {
- PSID PrimaryGroup;
- } TOKEN_PRIMARY_GROUP,*PTOKEN_PRIMARY_GROUP;
- typedef struct _TOKEN_DEFAULT_DACL {
- PACL DefaultDacl;
- } TOKEN_DEFAULT_DACL,*PTOKEN_DEFAULT_DACL;
- typedef struct _TOKEN_GROUPS_AND_PRIVILEGES {
- ULONG SidCount;
- ULONG SidLength;
- PSID_AND_ATTRIBUTES Sids;
- ULONG RestrictedSidCount;
- ULONG RestrictedSidLength;
- PSID_AND_ATTRIBUTES RestrictedSids;
- ULONG PrivilegeCount;
- ULONG PrivilegeLength;
- PLUID_AND_ATTRIBUTES Privileges;
- LUID AuthenticationId;
- } TOKEN_GROUPS_AND_PRIVILEGES, *PTOKEN_GROUPS_AND_PRIVILEGES;
- typedef struct _TOKEN_LINKED_TOKEN {
- HANDLE LinkedToken;
- } TOKEN_LINKED_TOKEN, *PTOKEN_LINKED_TOKEN;
- typedef struct _TOKEN_ELEVATION {
- ULONG TokenIsElevated;
- } TOKEN_ELEVATION, *PTOKEN_ELEVATION;
- typedef struct _TOKEN_MANDATORY_LABEL {
- SID_AND_ATTRIBUTES Label;
- } TOKEN_MANDATORY_LABEL, *PTOKEN_MANDATORY_LABEL;
- #define TOKEN_MANDATORY_POLICY_OFF 0x0
- #define TOKEN_MANDATORY_POLICY_NO_WRITE_UP 0x1
- #define TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN 0x2
- #define TOKEN_MANDATORY_POLICY_VALID_MASK (TOKEN_MANDATORY_POLICY_NO_WRITE_UP | \
- TOKEN_MANDATORY_POLICY_NEW_PROCESS_MIN)
- typedef struct _TOKEN_MANDATORY_POLICY {
- ULONG Policy;
- } TOKEN_MANDATORY_POLICY, *PTOKEN_MANDATORY_POLICY;
- typedef struct _TOKEN_ACCESS_INFORMATION {
- PSID_AND_ATTRIBUTES_HASH SidHash;
- PSID_AND_ATTRIBUTES_HASH RestrictedSidHash;
- PTOKEN_PRIVILEGES Privileges;
- LUID AuthenticationId;
- TOKEN_TYPE TokenType;
- SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
- TOKEN_MANDATORY_POLICY MandatoryPolicy;
- ULONG Flags;
- } TOKEN_ACCESS_INFORMATION, *PTOKEN_ACCESS_INFORMATION;
- #define POLICY_AUDIT_SUBCATEGORY_COUNT (53)
- typedef struct _TOKEN_AUDIT_POLICY {
- UCHAR PerUserPolicy[((POLICY_AUDIT_SUBCATEGORY_COUNT) >> 1) + 1];
- } TOKEN_AUDIT_POLICY, *PTOKEN_AUDIT_POLICY;
- #define TOKEN_SOURCE_LENGTH 8
- typedef struct _TOKEN_SOURCE {
- CHAR SourceName[TOKEN_SOURCE_LENGTH];
- LUID SourceIdentifier;
- } TOKEN_SOURCE,*PTOKEN_SOURCE;
- typedef struct _TOKEN_STATISTICS {
- LUID TokenId;
- LUID AuthenticationId;
- LARGE_INTEGER ExpirationTime;
- TOKEN_TYPE TokenType;
- SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
- ULONG DynamicCharged;
- ULONG DynamicAvailable;
- ULONG GroupCount;
- ULONG PrivilegeCount;
- LUID ModifiedId;
- } TOKEN_STATISTICS, *PTOKEN_STATISTICS;
- typedef struct _TOKEN_CONTROL {
- LUID TokenId;
- LUID AuthenticationId;
- LUID ModifiedId;
- TOKEN_SOURCE TokenSource;
- } TOKEN_CONTROL,*PTOKEN_CONTROL;
- typedef struct _TOKEN_ORIGIN {
- LUID OriginatingLogonSession;
- } TOKEN_ORIGIN, *PTOKEN_ORIGIN;
- typedef enum _MANDATORY_LEVEL {
- MandatoryLevelUntrusted = 0,
- MandatoryLevelLow,
- MandatoryLevelMedium,
- MandatoryLevelHigh,
- MandatoryLevelSystem,
- MandatoryLevelSecureProcess,
- MandatoryLevelCount
- } MANDATORY_LEVEL, *PMANDATORY_LEVEL;
- #define TOKEN_HAS_TRAVERSE_PRIVILEGE 0x0001
- #define TOKEN_HAS_BACKUP_PRIVILEGE 0x0002
- #define TOKEN_HAS_RESTORE_PRIVILEGE 0x0004
- #define TOKEN_WRITE_RESTRICTED 0x0008
- #define TOKEN_IS_RESTRICTED 0x0010
- #define TOKEN_SESSION_NOT_REFERENCED 0x0020
- #define TOKEN_SANDBOX_INERT 0x0040
- #define TOKEN_HAS_IMPERSONATE_PRIVILEGE 0x0080
- #define SE_BACKUP_PRIVILEGES_CHECKED 0x0100
- #define TOKEN_VIRTUALIZE_ALLOWED 0x0200
- #define TOKEN_VIRTUALIZE_ENABLED 0x0400
- #define TOKEN_IS_FILTERED 0x0800
- #define TOKEN_UIACCESS 0x1000
- #define TOKEN_NOT_LOW 0x2000
- typedef struct _SE_EXPORTS {
- LUID SeCreateTokenPrivilege;
- LUID SeAssignPrimaryTokenPrivilege;
- LUID SeLockMemoryPrivilege;
- LUID SeIncreaseQuotaPrivilege;
- LUID SeUnsolicitedInputPrivilege;
- LUID SeTcbPrivilege;
- LUID SeSecurityPrivilege;
- LUID SeTakeOwnershipPrivilege;
- LUID SeLoadDriverPrivilege;
- LUID SeCreatePagefilePrivilege;
- LUID SeIncreaseBasePriorityPrivilege;
- LUID SeSystemProfilePrivilege;
- LUID SeSystemtimePrivilege;
- LUID SeProfileSingleProcessPrivilege;
- LUID SeCreatePermanentPrivilege;
- LUID SeBackupPrivilege;
- LUID SeRestorePrivilege;
- LUID SeShutdownPrivilege;
- LUID SeDebugPrivilege;
- LUID SeAuditPrivilege;
- LUID SeSystemEnvironmentPrivilege;
- LUID SeChangeNotifyPrivilege;
- LUID SeRemoteShutdownPrivilege;
- PSID SeNullSid;
- PSID SeWorldSid;
- PSID SeLocalSid;
- PSID SeCreatorOwnerSid;
- PSID SeCreatorGroupSid;
- PSID SeNtAuthoritySid;
- PSID SeDialupSid;
- PSID SeNetworkSid;
- PSID SeBatchSid;
- PSID SeInteractiveSid;
- PSID SeLocalSystemSid;
- PSID SeAliasAdminsSid;
- PSID SeAliasUsersSid;
- PSID SeAliasGuestsSid;
- PSID SeAliasPowerUsersSid;
- PSID SeAliasAccountOpsSid;
- PSID SeAliasSystemOpsSid;
- PSID SeAliasPrintOpsSid;
- PSID SeAliasBackupOpsSid;
- PSID SeAuthenticatedUsersSid;
- PSID SeRestrictedSid;
- PSID SeAnonymousLogonSid;
- LUID SeUndockPrivilege;
- LUID SeSyncAgentPrivilege;
- LUID SeEnableDelegationPrivilege;
- PSID SeLocalServiceSid;
- PSID SeNetworkServiceSid;
- LUID SeManageVolumePrivilege;
- LUID SeImpersonatePrivilege;
- LUID SeCreateGlobalPrivilege;
- LUID SeTrustedCredManAccessPrivilege;
- LUID SeRelabelPrivilege;
- LUID SeIncreaseWorkingSetPrivilege;
- LUID SeTimeZonePrivilege;
- LUID SeCreateSymbolicLinkPrivilege;
- PSID SeIUserSid;
- PSID SeUntrustedMandatorySid;
- PSID SeLowMandatorySid;
- PSID SeMediumMandatorySid;
- PSID SeHighMandatorySid;
- PSID SeSystemMandatorySid;
- PSID SeOwnerRightsSid;
- } SE_EXPORTS, *PSE_EXPORTS;
- typedef NTSTATUS
- (NTAPI *PSE_LOGON_SESSION_TERMINATED_ROUTINE)(
- IN PLUID LogonId);
- /******************************************************************************
- * Runtime Library Types *
- ******************************************************************************/
- #define RTL_SYSTEM_VOLUME_INFORMATION_FOLDER L"System Volume Information"
- typedef PVOID
- (NTAPI *PRTL_ALLOCATE_STRING_ROUTINE)(
- IN SIZE_T NumberOfBytes);
- #if _WIN32_WINNT >= 0x0600
- typedef PVOID
- (NTAPI *PRTL_REALLOCATE_STRING_ROUTINE)(
- IN SIZE_T NumberOfBytes,
- IN PVOID Buffer);
- #endif
- typedef VOID
- (NTAPI *PRTL_FREE_STRING_ROUTINE)(
- IN PVOID Buffer);
- extern const PRTL_ALLOCATE_STRING_ROUTINE RtlAllocateStringRoutine;
- extern const PRTL_FREE_STRING_ROUTINE RtlFreeStringRoutine;
- #if _WIN32_WINNT >= 0x0600
- extern const PRTL_REALLOCATE_STRING_ROUTINE RtlReallocateStringRoutine;
- #endif
- typedef NTSTATUS
- (NTAPI * PRTL_HEAP_COMMIT_ROUTINE) (
- IN PVOID Base,
- IN OUT PVOID *CommitAddress,
- IN OUT PSIZE_T CommitSize);
- typedef struct _RTL_HEAP_PARAMETERS {
- ULONG Length;
- SIZE_T SegmentReserve;
- SIZE_T SegmentCommit;
- SIZE_T DeCommitFreeBlockThreshold;
- SIZE_T DeCommitTotalFreeThreshold;
- SIZE_T MaximumAllocationSize;
- SIZE_T VirtualMemoryThreshold;
- SIZE_T InitialCommit;
- SIZE_T InitialReserve;
- PRTL_HEAP_COMMIT_ROUTINE CommitRoutine;
- SIZE_T Reserved[2];
- } RTL_HEAP_PARAMETERS, *PRTL_HEAP_PARAMETERS;
- #if (NTDDI_VERSION >= NTDDI_WIN2K)
- typedef struct _GENERATE_NAME_CONTEXT {
- USHORT Checksum;
- BOOLEAN CheckSumInserted;
- UCHAR NameLength;
- WCHAR NameBuffer[8];
- ULONG ExtensionLength;
- WCHAR ExtensionBuffer[4];
- ULONG LastIndexValue;
- } GENERATE_NAME_CONTEXT, *PGENERATE_NAME_CONTEXT;
- typedef struct _PREFIX_TABLE_ENTRY {
- CSHORT NodeTypeCode;
- CSHORT NameLength;
- struct _PREFIX_TABLE_ENTRY *NextPrefixTree;
- RTL_SPLAY_LINKS Links;
- PSTRING Prefix;
- } PREFIX_TABLE_ENTRY, *PPREFIX_TABLE_ENTRY;
- typedef struct _PREFIX_TABLE {
- CSHORT NodeTypeCode;
- CSHORT NameLength;
- PPREFIX_TABLE_ENTRY NextPrefixTree;
- } PREFIX_TABLE, *PPREFIX_TABLE;
- typedef struct _UNICODE_PREFIX_TABLE_ENTRY {
- CSHORT NodeTypeCode;
- CSHORT NameLength;
- struct _UNICODE_PREFIX_TABLE_ENTRY *NextPrefixTree;
- struct _UNICODE_PREFIX_TABLE_ENTRY *CaseMatch;
- RTL_SPLAY_LINKS Links;
- PUNICODE_STRING Prefix;
- } UNICODE_PREFIX_TABLE_ENTRY, *PUNICODE_PREFIX_TABLE_ENTRY;
- typedef struct _UNICODE_PREFIX_TABLE {
- CSHORT NodeTypeCode;
- CSHORT NameLength;
- PUNICODE_PREFIX_TABLE_ENTRY NextPrefixTree;
- PUNICODE_PREFIX_TABLE_ENTRY LastNextEntry;
- } UNICODE_PREFIX_TABLE, *PUNICODE_PREFIX_TABLE;
- #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
- #if (NTDDI_VERSION >= NTDDI_WINXP)
- typedef struct _COMPRESSED_DATA_INFO {
- USHORT CompressionFormatAndEngine;
- UCHAR CompressionUnitShift;
- UCHAR ChunkShift;
- UCHAR ClusterShift;
- UCHAR Reserved;
- USHORT NumberOfChunks;
- ULONG CompressedChunkSizes[ANYSIZE_ARRAY];
- } COMPRESSED_DATA_INFO, *PCOMPRESSED_DATA_INFO;
- #endif
- /******************************************************************************
- * Runtime Library Functions *
- ******************************************************************************/
- #if (NTDDI_VERSION >= NTDDI_WIN2K)
- NTSYSAPI
- PVOID
- NTAPI
- RtlAllocateHeap(
- IN HANDLE HeapHandle,
- IN ULONG Flags OPTIONAL,
- IN SIZE_T Size);
- NTSYSAPI
- BOOLEAN
- NTAPI
- RtlFreeHeap(
- IN PVOID HeapHandle,
- IN ULONG Flags OPTIONAL,
- IN PVOID BaseAddress);
- NTSYSAPI
- VOID
- NTAPI
- RtlCaptureContext(
- OUT PCONTEXT ContextRecord);
- NTSYSAPI
- ULONG
- NTAPI
- RtlRandom(
- IN OUT PULONG Seed);
- NTSYSAPI
- BOOLEAN
- NTAPI
- RtlCreateUnicodeString(
- OUT PUNICODE_STRING DestinationString,
- IN PCWSTR SourceString);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlAppendStringToString(
- IN OUT PSTRING Destination,
- IN const STRING *Source);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlOemStringToUnicodeString(
- IN OUT PUNICODE_STRING DestinationString,
- IN PCOEM_STRING SourceString,
- IN BOOLEAN AllocateDestinationString);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlUnicodeStringToOemString(
- IN OUT POEM_STRING DestinationString,
- IN PCUNICODE_STRING SourceString,
- IN BOOLEAN AllocateDestinationString);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlUpcaseUnicodeStringToOemString(
- IN OUT POEM_STRING DestinationString,
- IN PCUNICODE_STRING SourceString,
- IN BOOLEAN AllocateDestinationString);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlOemStringToCountedUnicodeString(
- IN OUT PUNICODE_STRING DestinationString,
- IN PCOEM_STRING SourceString,
- IN BOOLEAN AllocateDestinationString);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlUnicodeStringToCountedOemString(
- IN OUT POEM_STRING DestinationString,
- IN PCUNICODE_STRING SourceString,
- IN BOOLEAN AllocateDestinationString);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlUpcaseUnicodeStringToCountedOemString(
- IN OUT POEM_STRING DestinationString,
- IN PCUNICODE_STRING SourceString,
- IN BOOLEAN AllocateDestinationString);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlDowncaseUnicodeString(
- IN OUT PUNICODE_STRING UniDest,
- IN PCUNICODE_STRING UniSource,
- IN BOOLEAN AllocateDestinationString);
- NTSYSAPI
- VOID
- NTAPI
- RtlFreeOemString (
- IN OUT POEM_STRING OemString);
- NTSYSAPI
- ULONG
- NTAPI
- RtlxUnicodeStringToOemSize(
- IN PCUNICODE_STRING UnicodeString);
- NTSYSAPI
- ULONG
- NTAPI
- RtlxOemStringToUnicodeSize(
- IN PCOEM_STRING OemString);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlMultiByteToUnicodeN(
- OUT PWCH UnicodeString,
- IN ULONG MaxBytesInUnicodeString,
- OUT PULONG BytesInUnicodeString OPTIONAL,
- IN const CHAR *MultiByteString,
- IN ULONG BytesInMultiByteString);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlMultiByteToUnicodeSize(
- OUT PULONG BytesInUnicodeString,
- IN const CHAR *MultiByteString,
- IN ULONG BytesInMultiByteString);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlUnicodeToMultiByteSize(
- OUT PULONG BytesInMultiByteString,
- IN PCWCH UnicodeString,
- IN ULONG BytesInUnicodeString);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlUnicodeToMultiByteN(
- OUT PCHAR MultiByteString,
- IN ULONG MaxBytesInMultiByteString,
- OUT PULONG BytesInMultiByteString OPTIONAL,
- IN PCWCH UnicodeString,
- IN ULONG BytesInUnicodeString);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlUpcaseUnicodeToMultiByteN(
- OUT PCHAR MultiByteString,
- IN ULONG MaxBytesInMultiByteString,
- OUT PULONG BytesInMultiByteString OPTIONAL,
- IN PCWCH UnicodeString,
- IN ULONG BytesInUnicodeString);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlOemToUnicodeN(
- OUT PWSTR UnicodeString,
- IN ULONG MaxBytesInUnicodeString,
- OUT PULONG BytesInUnicodeString OPTIONAL,
- IN PCCH OemString,
- IN ULONG BytesInOemString);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlUnicodeToOemN(
- OUT PCHAR OemString,
- IN ULONG MaxBytesInOemString,
- OUT PULONG BytesInOemString OPTIONAL,
- IN PCWCH UnicodeString,
- IN ULONG BytesInUnicodeString);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlUpcaseUnicodeToOemN(
- OUT PCHAR OemString,
- IN ULONG MaxBytesInOemString,
- OUT PULONG BytesInOemString OPTIONAL,
- IN PCWCH UnicodeString,
- IN ULONG BytesInUnicodeString);
- #if (NTDDI_VERSION >= NTDDI_VISTASP1)
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlGenerate8dot3Name(
- IN PCUNICODE_STRING Name,
- IN BOOLEAN AllowExtendedCharacters,
- IN OUT PGENERATE_NAME_CONTEXT Context,
- IN OUT PUNICODE_STRING Name8dot3);
- #else
- NTSYSAPI
- VOID
- NTAPI
- RtlGenerate8dot3Name(
- IN PCUNICODE_STRING Name,
- IN BOOLEAN AllowExtendedCharacters,
- IN OUT PGENERATE_NAME_CONTEXT Context,
- IN OUT PUNICODE_STRING Name8dot3);
- #endif
- NTSYSAPI
- BOOLEAN
- NTAPI
- RtlIsNameLegalDOS8Dot3(
- IN PCUNICODE_STRING Name,
- IN OUT POEM_STRING OemName OPTIONAL,
- IN OUT PBOOLEAN NameContainsSpaces OPTIONAL);
- NTSYSAPI
- BOOLEAN
- NTAPI
- RtlIsValidOemCharacter(
- IN OUT PWCHAR Char);
- NTSYSAPI
- VOID
- NTAPI
- PfxInitialize(
- OUT PPREFIX_TABLE PrefixTable);
- NTSYSAPI
- BOOLEAN
- NTAPI
- PfxInsertPrefix(
- IN PPREFIX_TABLE PrefixTable,
- IN PSTRING Prefix,
- OUT PPREFIX_TABLE_ENTRY PrefixTableEntry);
- NTSYSAPI
- VOID
- NTAPI
- PfxRemovePrefix(
- IN PPREFIX_TABLE PrefixTable,
- IN PPREFIX_TABLE_ENTRY PrefixTableEntry);
- NTSYSAPI
- PPREFIX_TABLE_ENTRY
- NTAPI
- PfxFindPrefix(
- IN PPREFIX_TABLE PrefixTable,
- IN PSTRING FullName);
- NTSYSAPI
- VOID
- NTAPI
- RtlInitializeUnicodePrefix(
- OUT PUNICODE_PREFIX_TABLE PrefixTable);
- NTSYSAPI
- BOOLEAN
- NTAPI
- RtlInsertUnicodePrefix(
- IN PUNICODE_PREFIX_TABLE PrefixTable,
- IN PUNICODE_STRING Prefix,
- OUT PUNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry);
- NTSYSAPI
- VOID
- NTAPI
- RtlRemoveUnicodePrefix(
- IN PUNICODE_PREFIX_TABLE PrefixTable,
- IN PUNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry);
- NTSYSAPI
- PUNICODE_PREFIX_TABLE_ENTRY
- NTAPI
- RtlFindUnicodePrefix(
- IN PUNICODE_PREFIX_TABLE PrefixTable,
- IN PUNICODE_STRING FullName,
- IN ULONG CaseInsensitiveIndex);
- NTSYSAPI
- PUNICODE_PREFIX_TABLE_ENTRY
- NTAPI
- RtlNextUnicodePrefix(
- IN PUNICODE_PREFIX_TABLE PrefixTable,
- IN BOOLEAN Restart);
- NTSYSAPI
- SIZE_T
- NTAPI
- RtlCompareMemoryUlong(
- IN PVOID Source,
- IN SIZE_T Length,
- IN ULONG Pattern);
- NTSYSAPI
- BOOLEAN
- NTAPI
- RtlTimeToSecondsSince1980(
- IN PLARGE_INTEGER Time,
- OUT PULONG ElapsedSeconds);
- NTSYSAPI
- VOID
- NTAPI
- RtlSecondsSince1980ToTime(
- IN ULONG ElapsedSeconds,
- OUT PLARGE_INTEGER Time);
- NTSYSAPI
- BOOLEAN
- NTAPI
- RtlTimeToSecondsSince1970(
- IN PLARGE_INTEGER Time,
- OUT PULONG ElapsedSeconds);
- NTSYSAPI
- VOID
- NTAPI
- RtlSecondsSince1970ToTime(
- IN ULONG ElapsedSeconds,
- OUT PLARGE_INTEGER Time);
- NTSYSAPI
- BOOLEAN
- NTAPI
- RtlValidSid(
- IN PSID Sid);
- NTSYSAPI
- BOOLEAN
- NTAPI
- RtlEqualSid(
- IN PSID Sid1,
- IN PSID Sid2);
- NTSYSAPI
- BOOLEAN
- NTAPI
- RtlEqualPrefixSid(
- IN PSID Sid1,
- IN PSID Sid2);
- NTSYSAPI
- ULONG
- NTAPI
- RtlLengthRequiredSid(
- IN ULONG SubAuthorityCount);
- NTSYSAPI
- PVOID
- NTAPI
- RtlFreeSid(
- IN PSID Sid);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlAllocateAndInitializeSid(
- IN PSID_IDENTIFIER_AUTHORITY IdentifierAuthority,
- IN UCHAR SubAuthorityCount,
- IN ULONG SubAuthority0,
- IN ULONG SubAuthority1,
- IN ULONG SubAuthority2,
- IN ULONG SubAuthority3,
- IN ULONG SubAuthority4,
- IN ULONG SubAuthority5,
- IN ULONG SubAuthority6,
- IN ULONG SubAuthority7,
- OUT PSID *Sid);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlInitializeSid(
- OUT PSID Sid,
- IN PSID_IDENTIFIER_AUTHORITY IdentifierAuthority,
- IN UCHAR SubAuthorityCount);
- NTSYSAPI
- PULONG
- NTAPI
- RtlSubAuthoritySid(
- IN PSID Sid,
- IN ULONG SubAuthority);
- NTSYSAPI
- ULONG
- NTAPI
- RtlLengthSid(
- IN PSID Sid);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlCopySid(
- IN ULONG Length,
- IN PSID Destination,
- IN PSID Source);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlConvertSidToUnicodeString(
- IN OUT PUNICODE_STRING UnicodeString,
- IN PSID Sid,
- IN BOOLEAN AllocateDestinationString);
- NTSYSAPI
- VOID
- NTAPI
- RtlCopyLuid(
- OUT PLUID DestinationLuid,
- IN PLUID SourceLuid);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlCreateAcl(
- OUT PACL Acl,
- IN ULONG AclLength,
- IN ULONG AclRevision);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlAddAce(
- IN OUT PACL Acl,
- IN ULONG AceRevision,
- IN ULONG StartingAceIndex,
- IN PVOID AceList,
- IN ULONG AceListLength);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlDeleteAce(
- IN OUT PACL Acl,
- IN ULONG AceIndex);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlGetAce(
- IN PACL Acl,
- IN ULONG AceIndex,
- OUT PVOID *Ace);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlAddAccessAllowedAce(
- IN OUT PACL Acl,
- IN ULONG AceRevision,
- IN ACCESS_MASK AccessMask,
- IN PSID Sid);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlAddAccessAllowedAceEx(
- IN OUT PACL Acl,
- IN ULONG AceRevision,
- IN ULONG AceFlags,
- IN ACCESS_MASK AccessMask,
- IN PSID Sid);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlCreateSecurityDescriptorRelative(
- OUT PISECURITY_DESCRIPTOR_RELATIVE SecurityDescriptor,
- IN ULONG Revision);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlGetDaclSecurityDescriptor(
- IN PSECURITY_DESCRIPTOR SecurityDescriptor,
- OUT PBOOLEAN DaclPresent,
- OUT PACL *Dacl,
- OUT PBOOLEAN DaclDefaulted);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlSetOwnerSecurityDescriptor(
- IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
- IN PSID Owner OPTIONAL,
- IN BOOLEAN OwnerDefaulted);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlGetOwnerSecurityDescriptor(
- IN PSECURITY_DESCRIPTOR SecurityDescriptor,
- OUT PSID *Owner,
- OUT PBOOLEAN OwnerDefaulted);
- NTSYSAPI
- ULONG
- NTAPI
- RtlNtStatusToDosError(
- IN NTSTATUS Status);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlCustomCPToUnicodeN(
- IN PCPTABLEINFO CustomCP,
- OUT PWCH UnicodeString,
- IN ULONG MaxBytesInUnicodeString,
- OUT PULONG BytesInUnicodeString OPTIONAL,
- IN PCH CustomCPString,
- IN ULONG BytesInCustomCPString);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlUnicodeToCustomCPN(
- IN PCPTABLEINFO CustomCP,
- OUT PCH CustomCPString,
- IN ULONG MaxBytesInCustomCPString,
- OUT PULONG BytesInCustomCPString OPTIONAL,
- IN PWCH UnicodeString,
- IN ULONG BytesInUnicodeString);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlUpcaseUnicodeToCustomCPN(
- IN PCPTABLEINFO CustomCP,
- OUT PCH CustomCPString,
- IN ULONG MaxBytesInCustomCPString,
- OUT PULONG BytesInCustomCPString OPTIONAL,
- IN PWCH UnicodeString,
- IN ULONG BytesInUnicodeString);
- NTSYSAPI
- VOID
- NTAPI
- RtlInitCodePageTable(
- IN PUSHORT TableBase,
- IN OUT PCPTABLEINFO CodePageTable);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
- #if (NTDDI_VERSION >= NTDDI_WINXP)
- NTSYSAPI
- PVOID
- NTAPI
- RtlCreateHeap(
- IN ULONG Flags,
- IN PVOID HeapBase OPTIONAL,
- IN SIZE_T ReserveSize OPTIONAL,
- IN SIZE_T CommitSize OPTIONAL,
- IN PVOID Lock OPTIONAL,
- IN PRTL_HEAP_PARAMETERS Parameters OPTIONAL);
- NTSYSAPI
- PVOID
- NTAPI
- RtlDestroyHeap(
- IN PVOID HeapHandle);
- NTSYSAPI
- USHORT
- NTAPI
- RtlCaptureStackBackTrace(
- IN ULONG FramesToSkip,
- IN ULONG FramesToCapture,
- OUT PVOID *BackTrace,
- OUT PULONG BackTraceHash OPTIONAL);
- NTSYSAPI
- ULONG
- NTAPI
- RtlRandomEx(
- IN OUT PULONG Seed);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlInitUnicodeStringEx(
- OUT PUNICODE_STRING DestinationString,
- IN PCWSTR SourceString OPTIONAL);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlValidateUnicodeString(
- IN ULONG Flags,
- IN PCUNICODE_STRING String);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlDuplicateUnicodeString(
- IN ULONG Flags,
- IN PCUNICODE_STRING SourceString,
- OUT PUNICODE_STRING DestinationString);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlGetCompressionWorkSpaceSize(
- IN USHORT CompressionFormatAndEngine,
- OUT PULONG CompressBufferWorkSpaceSize,
- OUT PULONG CompressFragmentWorkSpaceSize);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlCompressBuffer(
- IN USHORT CompressionFormatAndEngine,
- IN PUCHAR UncompressedBuffer,
- IN ULONG UncompressedBufferSize,
- OUT PUCHAR CompressedBuffer,
- IN ULONG CompressedBufferSize,
- IN ULONG UncompressedChunkSize,
- OUT PULONG FinalCompressedSize,
- IN PVOID WorkSpace);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlDecompressBuffer(
- IN USHORT CompressionFormat,
- OUT PUCHAR UncompressedBuffer,
- IN ULONG UncompressedBufferSize,
- IN PUCHAR CompressedBuffer,
- IN ULONG CompressedBufferSize,
- OUT PULONG FinalUncompressedSize);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlDecompressFragment(
- IN USHORT CompressionFormat,
- OUT PUCHAR UncompressedFragment,
- IN ULONG UncompressedFragmentSize,
- IN PUCHAR CompressedBuffer,
- IN ULONG CompressedBufferSize,
- IN ULONG FragmentOffset,
- OUT PULONG FinalUncompressedSize,
- IN PVOID WorkSpace);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlDescribeChunk(
- IN USHORT CompressionFormat,
- IN OUT PUCHAR *CompressedBuffer,
- IN PUCHAR EndOfCompressedBufferPlus1,
- OUT PUCHAR *ChunkBuffer,
- OUT PULONG ChunkSize);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlReserveChunk(
- IN USHORT CompressionFormat,
- IN OUT PUCHAR *CompressedBuffer,
- IN PUCHAR EndOfCompressedBufferPlus1,
- OUT PUCHAR *ChunkBuffer,
- IN ULONG ChunkSize);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlDecompressChunks(
- OUT PUCHAR UncompressedBuffer,
- IN ULONG UncompressedBufferSize,
- IN PUCHAR CompressedBuffer,
- IN ULONG CompressedBufferSize,
- IN PUCHAR CompressedTail,
- IN ULONG CompressedTailSize,
- IN PCOMPRESSED_DATA_INFO CompressedDataInfo);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlCompressChunks(
- IN PUCHAR UncompressedBuffer,
- IN ULONG UncompressedBufferSize,
- OUT PUCHAR CompressedBuffer,
- IN ULONG CompressedBufferSize,
- IN OUT PCOMPRESSED_DATA_INFO CompressedDataInfo,
- IN ULONG CompressedDataInfoLength,
- IN PVOID WorkSpace);
- NTSYSAPI
- PSID_IDENTIFIER_AUTHORITY
- NTAPI
- RtlIdentifierAuthoritySid(
- IN PSID Sid);
- NTSYSAPI
- PUCHAR
- NTAPI
- RtlSubAuthorityCountSid(
- IN PSID Sid);
- NTSYSAPI
- ULONG
- NTAPI
- RtlNtStatusToDosErrorNoTeb(
- IN NTSTATUS Status);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlCreateSystemVolumeInformationFolder(
- IN PCUNICODE_STRING VolumeRootPath);
- #if defined(_M_AMD64)
- FORCEINLINE
- VOID
- RtlFillMemoryUlong (
- OUT PVOID Destination,
- IN SIZE_T Length,
- IN ULONG Pattern)
- {
- PULONG Address = (PULONG)Destination;
- if ((Length /= 4) != 0) {
- if (((ULONG64)Address & 4) != 0) {
- *Address = Pattern;
- if ((Length -= 1) == 0) {
- return;
- }
- Address += 1;
- }
- __stosq((PULONG64)(Address), Pattern | ((ULONG64)Pattern << 32), Length / 2);
- if ((Length & 1) != 0) Address[Length - 1] = Pattern;
- }
- return;
- }
- #define RtlFillMemoryUlonglong(Destination, Length, Pattern) \
- __stosq((PULONG64)(Destination), Pattern, (Length) / 8)
- #else
- NTSYSAPI
- VOID
- NTAPI
- RtlFillMemoryUlong(
- OUT PVOID Destination,
- IN SIZE_T Length,
- IN ULONG Pattern);
- NTSYSAPI
- VOID
- NTAPI
- RtlFillMemoryUlonglong(
- OUT PVOID Destination,
- IN SIZE_T Length,
- IN ULONGLONG Pattern);
- #endif /* defined(_M_AMD64) */
- #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
- #if (NTDDI_VERSION >= NTDDI_WS03)
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlInitAnsiStringEx(
- OUT PANSI_STRING DestinationString,
- IN PCSZ SourceString OPTIONAL);
- #endif
- #if (NTDDI_VERSION >= NTDDI_WS03SP1)
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlGetSaclSecurityDescriptor(
- IN PSECURITY_DESCRIPTOR SecurityDescriptor,
- OUT PBOOLEAN SaclPresent,
- OUT PACL *Sacl,
- OUT PBOOLEAN SaclDefaulted);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlSetGroupSecurityDescriptor(
- IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
- IN PSID Group OPTIONAL,
- IN BOOLEAN GroupDefaulted OPTIONAL);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlGetGroupSecurityDescriptor(
- IN PSECURITY_DESCRIPTOR SecurityDescriptor,
- OUT PSID *Group,
- OUT PBOOLEAN GroupDefaulted);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlAbsoluteToSelfRelativeSD(
- IN PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor,
- OUT PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor OPTIONAL,
- IN OUT PULONG BufferLength);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlSelfRelativeToAbsoluteSD(
- IN PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor,
- OUT PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor OPTIONAL,
- IN OUT PULONG AbsoluteSecurityDescriptorSize,
- OUT PACL Dacl OPTIONAL,
- IN OUT PULONG DaclSize,
- OUT PACL Sacl OPTIONAL,
- IN OUT PULONG SaclSize,
- OUT PSID Owner OPTIONAL,
- IN OUT PULONG OwnerSize,
- OUT PSID PrimaryGroup OPTIONAL,
- IN OUT PULONG PrimaryGroupSize);
- #endif /* (NTDDI_VERSION >= NTDDI_WS03SP1) */
- #if (NTDDI_VERSION >= NTDDI_VISTA)
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlNormalizeString(
- IN ULONG NormForm,
- IN PCWSTR SourceString,
- IN LONG SourceStringLength,
- OUT PWSTR DestinationString,
- IN OUT PLONG DestinationStringLength);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlIsNormalizedString(
- IN ULONG NormForm,
- IN PCWSTR SourceString,
- IN LONG SourceStringLength,
- OUT PBOOLEAN Normalized);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlIdnToAscii(
- IN ULONG Flags,
- IN PCWSTR SourceString,
- IN LONG SourceStringLength,
- OUT PWSTR DestinationString,
- IN OUT PLONG DestinationStringLength);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlIdnToUnicode(
- IN ULONG Flags,
- IN PCWSTR SourceString,
- IN LONG SourceStringLength,
- OUT PWSTR DestinationString,
- IN OUT PLONG DestinationStringLength);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlIdnToNameprepUnicode(
- IN ULONG Flags,
- IN PCWSTR SourceString,
- IN LONG SourceStringLength,
- OUT PWSTR DestinationString,
- IN OUT PLONG DestinationStringLength);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlCreateServiceSid(
- IN PUNICODE_STRING ServiceName,
- OUT PSID ServiceSid,
- IN OUT PULONG ServiceSidLength);
- NTSYSAPI
- LONG
- NTAPI
- RtlCompareAltitudes(
- IN PCUNICODE_STRING Altitude1,
- IN PCUNICODE_STRING Altitude2);
- #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
- #if (NTDDI_VERSION >= NTDDI_WIN7)
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlUnicodeToUTF8N(
- OUT PCHAR UTF8StringDestination,
- IN ULONG UTF8StringMaxByteCount,
- OUT PULONG UTF8StringActualByteCount,
- IN PCWCH UnicodeStringSource,
- IN ULONG UnicodeStringByteCount);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlUTF8ToUnicodeN(
- OUT PWSTR UnicodeStringDestination,
- IN ULONG UnicodeStringMaxByteCount,
- OUT PULONG UnicodeStringActualByteCount,
- IN PCCH UTF8StringSource,
- IN ULONG UTF8StringByteCount);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlReplaceSidInSd(
- IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
- IN PSID OldSid,
- IN PSID NewSid,
- OUT ULONG *NumChanges);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlCreateVirtualAccountSid(
- IN PCUNICODE_STRING Name,
- IN ULONG BaseSubAuthority,
- OUT PSID Sid,
- IN OUT PULONG SidLength);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
- #if defined(_AMD64_) || defined(_IA64_)
- #endif /* defined(_AMD64_) || defined(_IA64_) */
- #define RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE 1
- #define RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING 2
- #define RtlUnicodeStringToOemSize(STRING) (NLS_MB_OEM_CODE_PAGE_TAG ? \
- RtlxUnicodeStringToOemSize(STRING) : \
- ((STRING)->Length + sizeof(UNICODE_NULL)) / sizeof(WCHAR) \
- )
- #define RtlOemStringToUnicodeSize(STRING) ( \
- NLS_MB_OEM_CODE_PAGE_TAG ? \
- RtlxOemStringToUnicodeSize(STRING) : \
- ((STRING)->Length + sizeof(ANSI_NULL)) * sizeof(WCHAR) \
- )
- #define RtlOemStringToCountedUnicodeSize(STRING) ( \
- (ULONG)(RtlOemStringToUnicodeSize(STRING) - sizeof(UNICODE_NULL)) \
- )
- #define RtlOffsetToPointer(B,O) ((PCHAR)(((PCHAR)(B)) + ((ULONG_PTR)(O))))
- #define RtlPointerToOffset(B,P) ((ULONG)(((PCHAR)(P)) - ((PCHAR)(B))))
- typedef enum _OBJECT_INFORMATION_CLASS {
- ObjectBasicInformation = 0,
- ObjectNameInformation = 1, /* FIXME, not in WDK */
- ObjectTypeInformation = 2,
- ObjectTypesInformation = 3, /* FIXME, not in WDK */
- ObjectHandleFlagInformation = 4, /* FIXME, not in WDK */
- ObjectSessionInformation = 5, /* FIXME, not in WDK */
- MaxObjectInfoClass /* FIXME, not in WDK */
- } OBJECT_INFORMATION_CLASS;
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtQueryObject(
- IN HANDLE Handle OPTIONAL,
- IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
- OUT PVOID ObjectInformation OPTIONAL,
- IN ULONG ObjectInformationLength,
- OUT PULONG ReturnLength OPTIONAL);
- #if (NTDDI_VERSION >= NTDDI_WIN2K)
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtOpenThreadToken(
- IN HANDLE ThreadHandle,
- IN ACCESS_MASK DesiredAccess,
- IN BOOLEAN OpenAsSelf,
- OUT PHANDLE TokenHandle);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtOpenProcessToken(
- IN HANDLE ProcessHandle,
- IN ACCESS_MASK DesiredAccess,
- OUT PHANDLE TokenHandle);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtQueryInformationToken(
- IN HANDLE TokenHandle,
- IN TOKEN_INFORMATION_CLASS TokenInformationClass,
- OUT PVOID TokenInformation OPTIONAL,
- IN ULONG TokenInformationLength,
- OUT PULONG ReturnLength);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtAdjustPrivilegesToken(
- IN HANDLE TokenHandle,
- IN BOOLEAN DisableAllPrivileges,
- IN PTOKEN_PRIVILEGES NewState OPTIONAL,
- IN ULONG BufferLength,
- OUT PTOKEN_PRIVILEGES PreviousState,
- OUT PULONG ReturnLength OPTIONAL);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtCreateFile(
- OUT PHANDLE FileHandle,
- IN ACCESS_MASK DesiredAccess,
- IN POBJECT_ATTRIBUTES ObjectAttributes,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- IN PLARGE_INTEGER AllocationSize OPTIONAL,
- IN ULONG FileAttributes,
- IN ULONG ShareAccess,
- IN ULONG CreateDisposition,
- IN ULONG CreateOptions,
- IN PVOID EaBuffer,
- IN ULONG EaLength);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtDeviceIoControlFile(
- IN HANDLE FileHandle,
- IN HANDLE Event OPTIONAL,
- IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
- IN PVOID ApcContext OPTIONAL,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- IN ULONG IoControlCode,
- IN PVOID InputBuffer OPTIONAL,
- IN ULONG InputBufferLength,
- OUT PVOID OutputBuffer OPTIONAL,
- IN ULONG OutputBufferLength);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtFsControlFile(
- IN HANDLE FileHandle,
- IN HANDLE Event OPTIONAL,
- IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
- IN PVOID ApcContext OPTIONAL,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- IN ULONG FsControlCode,
- IN PVOID InputBuffer OPTIONAL,
- IN ULONG InputBufferLength,
- OUT PVOID OutputBuffer OPTIONAL,
- IN ULONG OutputBufferLength);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtLockFile(
- IN HANDLE FileHandle,
- IN HANDLE Event OPTIONAL,
- IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
- IN PVOID ApcContext OPTIONAL,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- IN PLARGE_INTEGER ByteOffset,
- IN PLARGE_INTEGER Length,
- IN ULONG Key,
- IN BOOLEAN FailImmediately,
- IN BOOLEAN ExclusiveLock);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtOpenFile(
- OUT PHANDLE FileHandle,
- IN ACCESS_MASK DesiredAccess,
- IN POBJECT_ATTRIBUTES ObjectAttributes,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- IN ULONG ShareAccess,
- IN ULONG OpenOptions);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtQueryDirectoryFile(
- IN HANDLE FileHandle,
- IN HANDLE Event OPTIONAL,
- IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
- IN PVOID ApcContext OPTIONAL,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- OUT PVOID FileInformation,
- IN ULONG Length,
- IN FILE_INFORMATION_CLASS FileInformationClass,
- IN BOOLEAN ReturnSingleEntry,
- IN PUNICODE_STRING FileName OPTIONAL,
- IN BOOLEAN RestartScan);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtQueryInformationFile(
- IN HANDLE FileHandle,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- OUT PVOID FileInformation,
- IN ULONG Length,
- IN FILE_INFORMATION_CLASS FileInformationClass);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtQueryQuotaInformationFile(
- IN HANDLE FileHandle,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- OUT PVOID Buffer,
- IN ULONG Length,
- IN BOOLEAN ReturnSingleEntry,
- IN PVOID SidList,
- IN ULONG SidListLength,
- IN PSID StartSid OPTIONAL,
- IN BOOLEAN RestartScan);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtQueryVolumeInformationFile(
- IN HANDLE FileHandle,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- OUT PVOID FsInformation,
- IN ULONG Length,
- IN FS_INFORMATION_CLASS FsInformationClass);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtReadFile(
- IN HANDLE FileHandle,
- IN HANDLE Event OPTIONAL,
- IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
- IN PVOID ApcContext OPTIONAL,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- OUT PVOID Buffer,
- IN ULONG Length,
- IN PLARGE_INTEGER ByteOffset OPTIONAL,
- IN PULONG Key OPTIONAL);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtSetInformationFile(
- IN HANDLE FileHandle,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- IN PVOID FileInformation,
- IN ULONG Length,
- IN FILE_INFORMATION_CLASS FileInformationClass);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtSetQuotaInformationFile(
- IN HANDLE FileHandle,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- IN PVOID Buffer,
- IN ULONG Length);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtSetVolumeInformationFile(
- IN HANDLE FileHandle,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- IN PVOID FsInformation,
- IN ULONG Length,
- IN FS_INFORMATION_CLASS FsInformationClass);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtWriteFile(
- IN HANDLE FileHandle,
- IN HANDLE Event OPTIONAL,
- IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
- IN PVOID ApcContext OPTIONAL,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- IN PVOID Buffer,
- IN ULONG Length,
- IN PLARGE_INTEGER ByteOffset OPTIONAL,
- IN PULONG Key OPTIONAL);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtUnlockFile(
- IN HANDLE FileHandle,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- IN PLARGE_INTEGER ByteOffset,
- IN PLARGE_INTEGER Length,
- IN ULONG Key);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtSetSecurityObject(
- IN HANDLE Handle,
- IN SECURITY_INFORMATION SecurityInformation,
- IN PSECURITY_DESCRIPTOR SecurityDescriptor);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtQuerySecurityObject(
- IN HANDLE Handle,
- IN SECURITY_INFORMATION SecurityInformation,
- OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
- IN ULONG Length,
- OUT PULONG LengthNeeded);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtClose(
- IN HANDLE Handle);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtAllocateVirtualMemory(
- IN HANDLE ProcessHandle,
- IN OUT PVOID *BaseAddress,
- IN ULONG_PTR ZeroBits,
- IN OUT PSIZE_T RegionSize,
- IN ULONG AllocationType,
- IN ULONG Protect);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtFreeVirtualMemory(
- IN HANDLE ProcessHandle,
- IN OUT PVOID *BaseAddress,
- IN OUT PSIZE_T RegionSize,
- IN ULONG FreeType);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
- #if (NTDDI_VERSION >= NTDDI_WINXP)
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtOpenThreadTokenEx(
- IN HANDLE ThreadHandle,
- IN ACCESS_MASK DesiredAccess,
- IN BOOLEAN OpenAsSelf,
- IN ULONG HandleAttributes,
- OUT PHANDLE TokenHandle);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtOpenProcessTokenEx(
- IN HANDLE ProcessHandle,
- IN ACCESS_MASK DesiredAccess,
- IN ULONG HandleAttributes,
- OUT PHANDLE TokenHandle);
- NTSYSAPI
- NTSTATUS
- NTAPI
- NtOpenJobObjectToken(
- IN HANDLE JobHandle,
- IN ACCESS_MASK DesiredAccess,
- OUT PHANDLE TokenHandle);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtDuplicateToken(
- IN HANDLE ExistingTokenHandle,
- IN ACCESS_MASK DesiredAccess,
- IN POBJECT_ATTRIBUTES ObjectAttributes,
- IN BOOLEAN EffectiveOnly,
- IN TOKEN_TYPE TokenType,
- OUT PHANDLE NewTokenHandle);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtFilterToken(
- IN HANDLE ExistingTokenHandle,
- IN ULONG Flags,
- IN PTOKEN_GROUPS SidsToDisable OPTIONAL,
- IN PTOKEN_PRIVILEGES PrivilegesToDelete OPTIONAL,
- IN PTOKEN_GROUPS RestrictedSids OPTIONAL,
- OUT PHANDLE NewTokenHandle);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtImpersonateAnonymousToken(
- IN HANDLE ThreadHandle);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtSetInformationToken(
- IN HANDLE TokenHandle,
- IN TOKEN_INFORMATION_CLASS TokenInformationClass,
- IN PVOID TokenInformation,
- IN ULONG TokenInformationLength);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtAdjustGroupsToken(
- IN HANDLE TokenHandle,
- IN BOOLEAN ResetToDefault,
- IN PTOKEN_GROUPS NewState OPTIONAL,
- IN ULONG BufferLength OPTIONAL,
- OUT PTOKEN_GROUPS PreviousState,
- OUT PULONG ReturnLength);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtPrivilegeCheck(
- IN HANDLE ClientToken,
- IN OUT PPRIVILEGE_SET RequiredPrivileges,
- OUT PBOOLEAN Result);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtAccessCheckAndAuditAlarm(
- IN PUNICODE_STRING SubsystemName,
- IN PVOID HandleId OPTIONAL,
- IN PUNICODE_STRING ObjectTypeName,
- IN PUNICODE_STRING ObjectName,
- IN PSECURITY_DESCRIPTOR SecurityDescriptor,
- IN ACCESS_MASK DesiredAccess,
- IN PGENERIC_MAPPING GenericMapping,
- IN BOOLEAN ObjectCreation,
- OUT PACCESS_MASK GrantedAccess,
- OUT PNTSTATUS AccessStatus,
- OUT PBOOLEAN GenerateOnClose);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtAccessCheckByTypeAndAuditAlarm(
- IN PUNICODE_STRING SubsystemName,
- IN PVOID HandleId,
- IN PUNICODE_STRING ObjectTypeName,
- IN PUNICODE_STRING ObjectName,
- IN PSECURITY_DESCRIPTOR SecurityDescriptor,
- IN PSID PrincipalSelfSid OPTIONAL,
- IN ACCESS_MASK DesiredAccess,
- IN AUDIT_EVENT_TYPE AuditType,
- IN ULONG Flags,
- IN POBJECT_TYPE_LIST ObjectTypeList OPTIONAL,
- IN ULONG ObjectTypeLength,
- IN PGENERIC_MAPPING GenericMapping,
- IN BOOLEAN ObjectCreation,
- OUT PACCESS_MASK GrantedAccess,
- OUT PNTSTATUS AccessStatus,
- OUT PBOOLEAN GenerateOnClose);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtAccessCheckByTypeResultListAndAuditAlarm(
- IN PUNICODE_STRING SubsystemName,
- IN PVOID HandleId OPTIONAL,
- IN PUNICODE_STRING ObjectTypeName,
- IN PUNICODE_STRING ObjectName,
- IN PSECURITY_DESCRIPTOR SecurityDescriptor,
- IN PSID PrincipalSelfSid OPTIONAL,
- IN ACCESS_MASK DesiredAccess,
- IN AUDIT_EVENT_TYPE AuditType,
- IN ULONG Flags,
- IN POBJECT_TYPE_LIST ObjectTypeList OPTIONAL,
- IN ULONG ObjectTypeLength,
- IN PGENERIC_MAPPING GenericMapping,
- IN BOOLEAN ObjectCreation,
- OUT PACCESS_MASK GrantedAccess,
- OUT PNTSTATUS AccessStatus,
- OUT PBOOLEAN GenerateOnClose);
- NTSTATUS
- NTAPI
- NtAccessCheckByTypeResultListAndAuditAlarmByHandle(
- IN PUNICODE_STRING SubsystemName,
- IN PVOID HandleId OPTIONAL,
- IN HANDLE ClientToken,
- IN PUNICODE_STRING ObjectTypeName,
- IN PUNICODE_STRING ObjectName,
- IN PSECURITY_DESCRIPTOR SecurityDescriptor,
- IN PSID PrincipalSelfSid OPTIONAL,
- IN ACCESS_MASK DesiredAccess,
- IN AUDIT_EVENT_TYPE AuditType,
- IN ULONG Flags,
- IN POBJECT_TYPE_LIST ObjectTypeList OPTIONAL,
- IN ULONG ObjectTypeLength,
- IN PGENERIC_MAPPING GenericMapping,
- IN BOOLEAN ObjectCreation,
- OUT PACCESS_MASK GrantedAccess,
- OUT PNTSTATUS AccessStatus,
- OUT PBOOLEAN GenerateOnClose);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtOpenObjectAuditAlarm(
- IN PUNICODE_STRING SubsystemName,
- IN PVOID HandleId OPTIONAL,
- IN PUNICODE_STRING ObjectTypeName,
- IN PUNICODE_STRING ObjectName,
- IN PSECURITY_DESCRIPTOR SecurityDescriptor OPTIONAL,
- IN HANDLE ClientToken,
- IN ACCESS_MASK DesiredAccess,
- IN ACCESS_MASK GrantedAccess,
- IN PPRIVILEGE_SET Privileges OPTIONAL,
- IN BOOLEAN ObjectCreation,
- IN BOOLEAN AccessGranted,
- OUT PBOOLEAN GenerateOnClose);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtPrivilegeObjectAuditAlarm(
- IN PUNICODE_STRING SubsystemName,
- IN PVOID HandleId OPTIONAL,
- IN HANDLE ClientToken,
- IN ACCESS_MASK DesiredAccess,
- IN PPRIVILEGE_SET Privileges,
- IN BOOLEAN AccessGranted);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtCloseObjectAuditAlarm(
- IN PUNICODE_STRING SubsystemName,
- IN PVOID HandleId OPTIONAL,
- IN BOOLEAN GenerateOnClose);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtDeleteObjectAuditAlarm(
- IN PUNICODE_STRING SubsystemName,
- IN PVOID HandleId OPTIONAL,
- IN BOOLEAN GenerateOnClose);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtPrivilegedServiceAuditAlarm(
- IN PUNICODE_STRING SubsystemName,
- IN PUNICODE_STRING ServiceName,
- IN HANDLE ClientToken,
- IN PPRIVILEGE_SET Privileges,
- IN BOOLEAN AccessGranted);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtSetInformationThread(
- IN HANDLE ThreadHandle,
- IN THREADINFOCLASS ThreadInformationClass,
- IN PVOID ThreadInformation,
- IN ULONG ThreadInformationLength);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtCreateSection(
- OUT PHANDLE SectionHandle,
- IN ACCESS_MASK DesiredAccess,
- IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
- IN PLARGE_INTEGER MaximumSize OPTIONAL,
- IN ULONG SectionPageProtection,
- IN ULONG AllocationAttributes,
- IN HANDLE FileHandle OPTIONAL);
- #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
- #define COMPRESSION_FORMAT_NONE (0x0000)
- #define COMPRESSION_FORMAT_DEFAULT (0x0001)
- #define COMPRESSION_FORMAT_LZNT1 (0x0002)
- #define COMPRESSION_ENGINE_STANDARD (0x0000)
- #define COMPRESSION_ENGINE_MAXIMUM (0x0100)
- #define COMPRESSION_ENGINE_HIBER (0x0200)
- #define MAX_UNICODE_STACK_BUFFER_LENGTH 256
- #define METHOD_FROM_CTL_CODE(ctrlCode) ((ULONG)(ctrlCode & 3))
- #define METHOD_DIRECT_TO_HARDWARE METHOD_IN_DIRECT
- #define METHOD_DIRECT_FROM_HARDWARE METHOD_OUT_DIRECT
- typedef ULONG LSA_OPERATIONAL_MODE, *PLSA_OPERATIONAL_MODE;
- typedef enum _SECURITY_LOGON_TYPE {
- UndefinedLogonType = 0,
- Interactive = 2,
- Network,
- Batch,
- Service,
- Proxy,
- Unlock,
- NetworkCleartext,
- NewCredentials,
- #if (_WIN32_WINNT >= 0x0501)
- RemoteInteractive,
- CachedInteractive,
- #endif
- #if (_WIN32_WINNT >= 0x0502)
- CachedRemoteInteractive,
- CachedUnlock
- #endif
- } SECURITY_LOGON_TYPE, *PSECURITY_LOGON_TYPE;
- #ifndef _NTLSA_AUDIT_
- #define _NTLSA_AUDIT_
- #ifndef GUID_DEFINED
- #include <guiddef.h>
- #endif
- #endif /* _NTLSA_AUDIT_ */
- NTSTATUS
- NTAPI
- LsaRegisterLogonProcess(
- IN PLSA_STRING LogonProcessName,
- OUT PHANDLE LsaHandle,
- OUT PLSA_OPERATIONAL_MODE SecurityMode);
- NTSTATUS
- NTAPI
- LsaLogonUser(
- IN HANDLE LsaHandle,
- IN PLSA_STRING OriginName,
- IN SECURITY_LOGON_TYPE LogonType,
- IN ULONG AuthenticationPackage,
- IN PVOID AuthenticationInformation,
- IN ULONG AuthenticationInformationLength,
- IN PTOKEN_GROUPS LocalGroups OPTIONAL,
- IN PTOKEN_SOURCE SourceContext,
- OUT PVOID *ProfileBuffer,
- OUT PULONG ProfileBufferLength,
- OUT PLUID LogonId,
- OUT PHANDLE Token,
- OUT PQUOTA_LIMITS Quotas,
- OUT PNTSTATUS SubStatus);
- NTSTATUS
- NTAPI
- LsaFreeReturnBuffer(
- IN PVOID Buffer);
- #ifndef _NTLSA_IFS_
- #define _NTLSA_IFS_
- #endif
- #define MSV1_0_PACKAGE_NAME "MICROSOFT_AUTHENTICATION_PACKAGE_V1_0"
- #define MSV1_0_PACKAGE_NAMEW L"MICROSOFT_AUTHENTICATION_PACKAGE_V1_0"
- #define MSV1_0_PACKAGE_NAMEW_LENGTH sizeof(MSV1_0_PACKAGE_NAMEW) - sizeof(WCHAR)
- #define MSV1_0_SUBAUTHENTICATION_KEY "SYSTEM\\CurrentControlSet\\Control\\Lsa\\MSV1_0"
- #define MSV1_0_SUBAUTHENTICATION_VALUE "Auth"
- #define MSV1_0_CHALLENGE_LENGTH 8
- #define MSV1_0_USER_SESSION_KEY_LENGTH 16
- #define MSV1_0_LANMAN_SESSION_KEY_LENGTH 8
- #define MSV1_0_CLEARTEXT_PASSWORD_ALLOWED 0x02
- #define MSV1_0_UPDATE_LOGON_STATISTICS 0x04
- #define MSV1_0_RETURN_USER_PARAMETERS 0x08
- #define MSV1_0_DONT_TRY_GUEST_ACCOUNT 0x10
- #define MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT 0x20
- #define MSV1_0_RETURN_PASSWORD_EXPIRY 0x40
- #define MSV1_0_USE_CLIENT_CHALLENGE 0x80
- #define MSV1_0_TRY_GUEST_ACCOUNT_ONLY 0x100
- #define MSV1_0_RETURN_PROFILE_PATH 0x200
- #define MSV1_0_TRY_SPECIFIED_DOMAIN_ONLY 0x400
- #define MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT 0x800
- #define MSV1_0_DISABLE_PERSONAL_FALLBACK 0x00001000
- #define MSV1_0_ALLOW_FORCE_GUEST 0x00002000
- #if (_WIN32_WINNT >= 0x0502)
- #define MSV1_0_CLEARTEXT_PASSWORD_SUPPLIED 0x00004000
- #define MSV1_0_USE_DOMAIN_FOR_ROUTING_ONLY 0x00008000
- #endif
- #define MSV1_0_SUBAUTHENTICATION_DLL_EX 0x00100000
- #define MSV1_0_ALLOW_MSVCHAPV2 0x00010000
- #if (_WIN32_WINNT >= 0x0600)
- #define MSV1_0_S4U2SELF 0x00020000
- #define MSV1_0_CHECK_LOGONHOURS_FOR_S4U 0x00040000
- #endif
- #define MSV1_0_SUBAUTHENTICATION_DLL 0xFF000000
- #define MSV1_0_SUBAUTHENTICATION_DLL_SHIFT 24
- #define MSV1_0_MNS_LOGON 0x01000000
- #define MSV1_0_SUBAUTHENTICATION_DLL_RAS 2
- #define MSV1_0_SUBAUTHENTICATION_DLL_IIS 132
- #define LOGON_GUEST 0x01
- #define LOGON_NOENCRYPTION 0x02
- #define LOGON_CACHED_ACCOUNT 0x04
- #define LOGON_USED_LM_PASSWORD 0x08
- #define LOGON_EXTRA_SIDS 0x20
- #define LOGON_SUBAUTH_SESSION_KEY 0x40
- #define LOGON_SERVER_TRUST_ACCOUNT 0x80
- #define LOGON_NTLMV2_ENABLED 0x100
- #define LOGON_RESOURCE_GROUPS 0x200
- #define LOGON_PROFILE_PATH_RETURNED 0x400
- #define LOGON_NT_V2 0x800
- #define LOGON_LM_V2 0x1000
- #define LOGON_NTLM_V2 0x2000
- #if (_WIN32_WINNT >= 0x0600)
- #define LOGON_OPTIMIZED 0x4000
- #define LOGON_WINLOGON 0x8000
- #define LOGON_PKINIT 0x10000
- #define LOGON_NO_OPTIMIZED 0x20000
- #endif
- #define MSV1_0_SUBAUTHENTICATION_FLAGS 0xFF000000
- #define LOGON_GRACE_LOGON 0x01000000
- #define MSV1_0_OWF_PASSWORD_LENGTH 16
- #define MSV1_0_CRED_LM_PRESENT 0x1
- #define MSV1_0_CRED_NT_PRESENT 0x2
- #define MSV1_0_CRED_VERSION 0
- #define MSV1_0_NTLM3_RESPONSE_LENGTH 16
- #define MSV1_0_NTLM3_OWF_LENGTH 16
- #if (_WIN32_WINNT == 0x0500)
- #define MSV1_0_MAX_NTLM3_LIFE 1800
- #else
- #define MSV1_0_MAX_NTLM3_LIFE 129600
- #endif
- #define MSV1_0_MAX_AVL_SIZE 64000
- #if (_WIN32_WINNT >= 0x0501)
- #define MSV1_0_AV_FLAG_FORCE_GUEST 0x00000001
- #if (_WIN32_WINNT >= 0x0600)
- #define MSV1_0_AV_FLAG_MIC_HANDSHAKE_MESSAGES 0x00000002
- #endif
- #endif
- #define MSV1_0_NTLM3_INPUT_LENGTH (sizeof(MSV1_0_NTLM3_RESPONSE) - MSV1_0_NTLM3_RESPONSE_LENGTH)
- #if(_WIN32_WINNT >= 0x0502)
- #define MSV1_0_NTLM3_MIN_NT_RESPONSE_LENGTH RTL_SIZEOF_THROUGH_FIELD(MSV1_0_NTLM3_RESPONSE, AvPairsOff)
- #endif
- #define USE_PRIMARY_PASSWORD 0x01
- #define RETURN_PRIMARY_USERNAME 0x02
- #define RETURN_PRIMARY_LOGON_DOMAINNAME 0x04
- #define RETURN_NON_NT_USER_SESSION_KEY 0x08
- #define GENERATE_CLIENT_CHALLENGE 0x10
- #define GCR_NTLM3_PARMS 0x20
- #define GCR_TARGET_INFO 0x40
- #define RETURN_RESERVED_PARAMETER 0x80
- #define GCR_ALLOW_NTLM 0x100
- #define GCR_USE_OEM_SET 0x200
- #define GCR_MACHINE_CREDENTIAL 0x400
- #define GCR_USE_OWF_PASSWORD 0x800
- #define GCR_ALLOW_LM 0x1000
- #define GCR_ALLOW_NO_TARGET 0x2000
- typedef enum _MSV1_0_LOGON_SUBMIT_TYPE {
- MsV1_0InteractiveLogon = 2,
- MsV1_0Lm20Logon,
- MsV1_0NetworkLogon,
- MsV1_0SubAuthLogon,
- MsV1_0WorkstationUnlockLogon = 7,
- MsV1_0S4ULogon = 12,
- MsV1_0VirtualLogon = 82
- } MSV1_0_LOGON_SUBMIT_TYPE, *PMSV1_0_LOGON_SUBMIT_TYPE;
- typedef enum _MSV1_0_PROFILE_BUFFER_TYPE {
- MsV1_0InteractiveProfile = 2,
- MsV1_0Lm20LogonProfile,
- MsV1_0SmartCardProfile
- } MSV1_0_PROFILE_BUFFER_TYPE, *PMSV1_0_PROFILE_BUFFER_TYPE;
- typedef struct _MSV1_0_INTERACTIVE_LOGON {
- MSV1_0_LOGON_SUBMIT_TYPE MessageType;
- UNICODE_STRING LogonDomainName;
- UNICODE_STRING UserName;
- UNICODE_STRING Password;
- } MSV1_0_INTERACTIVE_LOGON, *PMSV1_0_INTERACTIVE_LOGON;
- typedef struct _MSV1_0_INTERACTIVE_PROFILE {
- MSV1_0_PROFILE_BUFFER_TYPE MessageType;
- USHORT LogonCount;
- USHORT BadPasswordCount;
- LARGE_INTEGER LogonTime;
- LARGE_INTEGER LogoffTime;
- LARGE_INTEGER KickOffTime;
- LARGE_INTEGER PasswordLastSet;
- LARGE_INTEGER PasswordCanChange;
- LARGE_INTEGER PasswordMustChange;
- UNICODE_STRING LogonScript;
- UNICODE_STRING HomeDirectory;
- UNICODE_STRING FullName;
- UNICODE_STRING ProfilePath;
- UNICODE_STRING HomeDirectoryDrive;
- UNICODE_STRING LogonServer;
- ULONG UserFlags;
- } MSV1_0_INTERACTIVE_PROFILE, *PMSV1_0_INTERACTIVE_PROFILE;
- typedef struct _MSV1_0_LM20_LOGON {
- MSV1_0_LOGON_SUBMIT_TYPE MessageType;
- UNICODE_STRING LogonDomainName;
- UNICODE_STRING UserName;
- UNICODE_STRING Workstation;
- UCHAR ChallengeToClient[MSV1_0_CHALLENGE_LENGTH];
- STRING CaseSensitiveChallengeResponse;
- STRING CaseInsensitiveChallengeResponse;
- ULONG ParameterControl;
- } MSV1_0_LM20_LOGON, * PMSV1_0_LM20_LOGON;
- typedef struct _MSV1_0_SUBAUTH_LOGON {
- MSV1_0_LOGON_SUBMIT_TYPE MessageType;
- UNICODE_STRING LogonDomainName;
- UNICODE_STRING UserName;
- UNICODE_STRING Workstation;
- UCHAR ChallengeToClient[MSV1_0_CHALLENGE_LENGTH];
- STRING AuthenticationInfo1;
- STRING AuthenticationInfo2;
- ULONG ParameterControl;
- ULONG SubAuthPackageId;
- } MSV1_0_SUBAUTH_LOGON, * PMSV1_0_SUBAUTH_LOGON;
- #if (_WIN32_WINNT >= 0x0600)
- #define MSV1_0_S4U_LOGON_FLAG_CHECK_LOGONHOURS 0x2
- typedef struct _MSV1_0_S4U_LOGON {
- MSV1_0_LOGON_SUBMIT_TYPE MessageType;
- ULONG Flags;
- UNICODE_STRING UserPrincipalName;
- UNICODE_STRING DomainName;
- } MSV1_0_S4U_LOGON, *PMSV1_0_S4U_LOGON;
- #endif
- typedef struct _MSV1_0_LM20_LOGON_PROFILE {
- MSV1_0_PROFILE_BUFFER_TYPE MessageType;
- LARGE_INTEGER KickOffTime;
- LARGE_INTEGER LogoffTime;
- ULONG UserFlags;
- UCHAR UserSessionKey[MSV1_0_USER_SESSION_KEY_LENGTH];
- UNICODE_STRING LogonDomainName;
- UCHAR LanmanSessionKey[MSV1_0_LANMAN_SESSION_KEY_LENGTH];
- UNICODE_STRING LogonServer;
- UNICODE_STRING UserParameters;
- } MSV1_0_LM20_LOGON_PROFILE, * PMSV1_0_LM20_LOGON_PROFILE;
- typedef struct _MSV1_0_SUPPLEMENTAL_CREDENTIAL {
- ULONG Version;
- ULONG Flags;
- UCHAR LmPassword[MSV1_0_OWF_PASSWORD_LENGTH];
- UCHAR NtPassword[MSV1_0_OWF_PASSWORD_LENGTH];
- } MSV1_0_SUPPLEMENTAL_CREDENTIAL, *PMSV1_0_SUPPLEMENTAL_CREDENTIAL;
- typedef struct _MSV1_0_NTLM3_RESPONSE {
- UCHAR Response[MSV1_0_NTLM3_RESPONSE_LENGTH];
- UCHAR RespType;
- UCHAR HiRespType;
- USHORT Flags;
- ULONG MsgWord;
- ULONGLONG TimeStamp;
- UCHAR ChallengeFromClient[MSV1_0_CHALLENGE_LENGTH];
- ULONG AvPairsOff;
- UCHAR Buffer[1];
- } MSV1_0_NTLM3_RESPONSE, *PMSV1_0_NTLM3_RESPONSE;
- /* MsvAvSingleHost present in MS-NLMP specifications but not in WinSDK */
- typedef enum _MSV1_0_AVID {
- MsvAvEOL,
- MsvAvNbComputerName,
- MsvAvNbDomainName,
- MsvAvDnsComputerName,
- MsvAvDnsDomainName,
- #if (_WIN32_WINNT >= 0x0501)
- MsvAvDnsTreeName,
- MsvAvFlags,
- #if (_WIN32_WINNT >= 0x0600)
- MsvAvTimestamp,
- MsvAvRestrictions,
- MsvAvSingleHost = MsvAvRestrictions,
- MsvAvTargetName,
- MsvAvChannelBindings,
- #endif
- #endif
- } MSV1_0_AVID;
- typedef struct _MSV1_0_AV_PAIR {
- USHORT AvId;
- USHORT AvLen;
- } MSV1_0_AV_PAIR, *PMSV1_0_AV_PAIR;
- typedef enum _MSV1_0_PROTOCOL_MESSAGE_TYPE {
- MsV1_0Lm20ChallengeRequest = 0,
- MsV1_0Lm20GetChallengeResponse,
- MsV1_0EnumerateUsers,
- MsV1_0GetUserInfo,
- MsV1_0ReLogonUsers,
- MsV1_0ChangePassword,
- MsV1_0ChangeCachedPassword,
- MsV1_0GenericPassthrough,
- MsV1_0CacheLogon,
- MsV1_0SubAuth,
- MsV1_0DeriveCredential,
- MsV1_0CacheLookup,
- #if (_WIN32_WINNT >= 0x0501)
- MsV1_0SetProcessOption,
- #endif
- #if (_WIN32_WINNT >= 0x0600)
- MsV1_0ConfigLocalAliases,
- MsV1_0ClearCachedCredentials,
- #endif
- } MSV1_0_PROTOCOL_MESSAGE_TYPE, *PMSV1_0_PROTOCOL_MESSAGE_TYPE;
- typedef struct _MSV1_0_LM20_CHALLENGE_REQUEST {
- MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
- } MSV1_0_LM20_CHALLENGE_REQUEST, *PMSV1_0_LM20_CHALLENGE_REQUEST;
- typedef struct _MSV1_0_LM20_CHALLENGE_RESPONSE {
- MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
- UCHAR ChallengeToClient[MSV1_0_CHALLENGE_LENGTH];
- } MSV1_0_LM20_CHALLENGE_RESPONSE, *PMSV1_0_LM20_CHALLENGE_RESPONSE;
- typedef struct _MSV1_0_GETCHALLENRESP_REQUEST_V1 {
- MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
- ULONG ParameterControl;
- LUID LogonId;
- UNICODE_STRING Password;
- UCHAR ChallengeToClient[MSV1_0_CHALLENGE_LENGTH];
- } MSV1_0_GETCHALLENRESP_REQUEST_V1, *PMSV1_0_GETCHALLENRESP_REQUEST_V1;
- typedef struct _MSV1_0_GETCHALLENRESP_REQUEST {
- MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
- ULONG ParameterControl;
- LUID LogonId;
- UNICODE_STRING Password;
- UCHAR ChallengeToClient[MSV1_0_CHALLENGE_LENGTH];
- UNICODE_STRING UserName;
- UNICODE_STRING LogonDomainName;
- UNICODE_STRING ServerName;
- } MSV1_0_GETCHALLENRESP_REQUEST, *PMSV1_0_GETCHALLENRESP_REQUEST;
- typedef struct _MSV1_0_GETCHALLENRESP_RESPONSE {
- MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
- STRING CaseSensitiveChallengeResponse;
- STRING CaseInsensitiveChallengeResponse;
- UNICODE_STRING UserName;
- UNICODE_STRING LogonDomainName;
- UCHAR UserSessionKey[MSV1_0_USER_SESSION_KEY_LENGTH];
- UCHAR LanmanSessionKey[MSV1_0_LANMAN_SESSION_KEY_LENGTH];
- } MSV1_0_GETCHALLENRESP_RESPONSE, *PMSV1_0_GETCHALLENRESP_RESPONSE;
- typedef struct _MSV1_0_ENUMUSERS_REQUEST {
- MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
- } MSV1_0_ENUMUSERS_REQUEST, *PMSV1_0_ENUMUSERS_REQUEST;
- typedef struct _MSV1_0_ENUMUSERS_RESPONSE {
- MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
- ULONG NumberOfLoggedOnUsers;
- PLUID LogonIds;
- PULONG EnumHandles;
- } MSV1_0_ENUMUSERS_RESPONSE, *PMSV1_0_ENUMUSERS_RESPONSE;
- typedef struct _MSV1_0_GETUSERINFO_REQUEST {
- MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
- LUID LogonId;
- } MSV1_0_GETUSERINFO_REQUEST, *PMSV1_0_GETUSERINFO_REQUEST;
- typedef struct _MSV1_0_GETUSERINFO_RESPONSE {
- MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
- PSID UserSid;
- UNICODE_STRING UserName;
- UNICODE_STRING LogonDomainName;
- UNICODE_STRING LogonServer;
- SECURITY_LOGON_TYPE LogonType;
- } MSV1_0_GETUSERINFO_RESPONSE, *PMSV1_0_GETUSERINFO_RESPONSE;
- #define FILE_OPLOCK_BROKEN_TO_LEVEL_2 0x00000007
- #define FILE_OPLOCK_BROKEN_TO_NONE 0x00000008
- #define FILE_OPBATCH_BREAK_UNDERWAY 0x00000009
- /* also in winnt.h */
- #define FILE_NOTIFY_CHANGE_FILE_NAME 0x00000001
- #define FILE_NOTIFY_CHANGE_DIR_NAME 0x00000002
- #define FILE_NOTIFY_CHANGE_NAME 0x00000003
- #define FILE_NOTIFY_CHANGE_ATTRIBUTES 0x00000004
- #define FILE_NOTIFY_CHANGE_SIZE 0x00000008
- #define FILE_NOTIFY_CHANGE_LAST_WRITE 0x00000010
- #define FILE_NOTIFY_CHANGE_LAST_ACCESS 0x00000020
- #define FILE_NOTIFY_CHANGE_CREATION 0x00000040
- #define FILE_NOTIFY_CHANGE_EA 0x00000080
- #define FILE_NOTIFY_CHANGE_SECURITY 0x00000100
- #define FILE_NOTIFY_CHANGE_STREAM_NAME 0x00000200
- #define FILE_NOTIFY_CHANGE_STREAM_SIZE 0x00000400
- #define FILE_NOTIFY_CHANGE_STREAM_WRITE 0x00000800
- #define FILE_NOTIFY_VALID_MASK 0x00000fff
- #define FILE_ACTION_ADDED 0x00000001
- #define FILE_ACTION_REMOVED 0x00000002
- #define FILE_ACTION_MODIFIED 0x00000003
- #define FILE_ACTION_RENAMED_OLD_NAME 0x00000004
- #define FILE_ACTION_RENAMED_NEW_NAME 0x00000005
- #define FILE_ACTION_ADDED_STREAM 0x00000006
- #define FILE_ACTION_REMOVED_STREAM 0x00000007
- #define FILE_ACTION_MODIFIED_STREAM 0x00000008
- #define FILE_ACTION_REMOVED_BY_DELETE 0x00000009
- #define FILE_ACTION_ID_NOT_TUNNELLED 0x0000000A
- #define FILE_ACTION_TUNNELLED_ID_COLLISION 0x0000000B
- /* end winnt.h */
- #define FILE_PIPE_BYTE_STREAM_TYPE 0x00000000
- #define FILE_PIPE_MESSAGE_TYPE 0x00000001
- #define FILE_PIPE_ACCEPT_REMOTE_CLIENTS 0x00000000
- #define FILE_PIPE_REJECT_REMOTE_CLIENTS 0x00000002
- #define FILE_PIPE_TYPE_VALID_MASK 0x00000003
- #define FILE_PIPE_BYTE_STREAM_MODE 0x00000000
- #define FILE_PIPE_MESSAGE_MODE 0x00000001
- #define FILE_PIPE_QUEUE_OPERATION 0x00000000
- #define FILE_PIPE_COMPLETE_OPERATION 0x00000001
- #define FILE_PIPE_INBOUND 0x00000000
- #define FILE_PIPE_OUTBOUND 0x00000001
- #define FILE_PIPE_FULL_DUPLEX 0x00000002
- #define FILE_PIPE_DISCONNECTED_STATE 0x00000001
- #define FILE_PIPE_LISTENING_STATE 0x00000002
- #define FILE_PIPE_CONNECTED_STATE 0x00000003
- #define FILE_PIPE_CLOSING_STATE 0x00000004
- #define FILE_PIPE_CLIENT_END 0x00000000
- #define FILE_PIPE_SERVER_END 0x00000001
- #define FILE_CASE_SENSITIVE_SEARCH 0x00000001
- #define FILE_CASE_PRESERVED_NAMES 0x00000002
- #define FILE_UNICODE_ON_DISK 0x00000004
- #define FILE_PERSISTENT_ACLS 0x00000008
- #define FILE_FILE_COMPRESSION 0x00000010
- #define FILE_VOLUME_QUOTAS 0x00000020
- #define FILE_SUPPORTS_SPARSE_FILES 0x00000040
- #define FILE_SUPPORTS_REPARSE_POINTS 0x00000080
- #define FILE_SUPPORTS_REMOTE_STORAGE 0x00000100
- #define FILE_VOLUME_IS_COMPRESSED 0x00008000
- #define FILE_SUPPORTS_OBJECT_IDS 0x00010000
- #define FILE_SUPPORTS_ENCRYPTION 0x00020000
- #define FILE_NAMED_STREAMS 0x00040000
- #define FILE_READ_ONLY_VOLUME 0x00080000
- #define FILE_SEQUENTIAL_WRITE_ONCE 0x00100000
- #define FILE_SUPPORTS_TRANSACTIONS 0x00200000
- #define FILE_SUPPORTS_HARD_LINKS 0x00400000
- #define FILE_SUPPORTS_EXTENDED_ATTRIBUTES 0x00800000
- #define FILE_SUPPORTS_OPEN_BY_FILE_ID 0x01000000
- #define FILE_SUPPORTS_USN_JOURNAL 0x02000000
- #define FILE_NEED_EA 0x00000080
- #define FILE_EA_TYPE_BINARY 0xfffe
- #define FILE_EA_TYPE_ASCII 0xfffd
- #define FILE_EA_TYPE_BITMAP 0xfffb
- #define FILE_EA_TYPE_METAFILE 0xfffa
- #define FILE_EA_TYPE_ICON 0xfff9
- #define FILE_EA_TYPE_EA 0xffee
- #define FILE_EA_TYPE_MVMT 0xffdf
- #define FILE_EA_TYPE_MVST 0xffde
- #define FILE_EA_TYPE_ASN1 0xffdd
- #define FILE_EA_TYPE_FAMILY_IDS 0xff01
- typedef struct _FILE_NOTIFY_INFORMATION {
- ULONG NextEntryOffset;
- ULONG Action;
- ULONG FileNameLength;
- WCHAR FileName[1];
- } FILE_NOTIFY_INFORMATION, *PFILE_NOTIFY_INFORMATION;
- typedef struct _FILE_DIRECTORY_INFORMATION {
- ULONG NextEntryOffset;
- ULONG FileIndex;
- LARGE_INTEGER CreationTime;
- LARGE_INTEGER LastAccessTime;
- LARGE_INTEGER LastWriteTime;
- LARGE_INTEGER ChangeTime;
- LARGE_INTEGER EndOfFile;
- LARGE_INTEGER AllocationSize;
- ULONG FileAttributes;
- ULONG FileNameLength;
- WCHAR FileName[1];
- } FILE_DIRECTORY_INFORMATION, *PFILE_DIRECTORY_INFORMATION;
- typedef struct _FILE_FULL_DIR_INFORMATION {
- ULONG NextEntryOffset;
- ULONG FileIndex;
- LARGE_INTEGER CreationTime;
- LARGE_INTEGER LastAccessTime;
- LARGE_INTEGER LastWriteTime;
- LARGE_INTEGER ChangeTime;
- LARGE_INTEGER EndOfFile;
- LARGE_INTEGER AllocationSize;
- ULONG FileAttributes;
- ULONG FileNameLength;
- ULONG EaSize;
- WCHAR FileName[1];
- } FILE_FULL_DIR_INFORMATION, *PFILE_FULL_DIR_INFORMATION;
- typedef struct _FILE_ID_FULL_DIR_INFORMATION {
- ULONG NextEntryOffset;
- ULONG FileIndex;
- LARGE_INTEGER CreationTime;
- LARGE_INTEGER LastAccessTime;
- LARGE_INTEGER LastWriteTime;
- LARGE_INTEGER ChangeTime;
- LARGE_INTEGER EndOfFile;
- LARGE_INTEGER AllocationSize;
- ULONG FileAttributes;
- ULONG FileNameLength;
- ULONG EaSize;
- LARGE_INTEGER FileId;
- WCHAR FileName[1];
- } FILE_ID_FULL_DIR_INFORMATION, *PFILE_ID_FULL_DIR_INFORMATION;
- typedef struct _FILE_BOTH_DIR_INFORMATION {
- ULONG NextEntryOffset;
- ULONG FileIndex;
- LARGE_INTEGER CreationTime;
- LARGE_INTEGER LastAccessTime;
- LARGE_INTEGER LastWriteTime;
- LARGE_INTEGER ChangeTime;
- LARGE_INTEGER EndOfFile;
- LARGE_INTEGER AllocationSize;
- ULONG FileAttributes;
- ULONG FileNameLength;
- ULONG EaSize;
- CCHAR ShortNameLength;
- WCHAR ShortName[12];
- WCHAR FileName[1];
- } FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION;
- typedef struct _FILE_ID_BOTH_DIR_INFORMATION {
- ULONG NextEntryOffset;
- ULONG FileIndex;
- LARGE_INTEGER CreationTime;
- LARGE_INTEGER LastAccessTime;
- LARGE_INTEGER LastWriteTime;
- LARGE_INTEGER ChangeTime;
- LARGE_INTEGER EndOfFile;
- LARGE_INTEGER AllocationSize;
- ULONG FileAttributes;
- ULONG FileNameLength;
- ULONG EaSize;
- CCHAR ShortNameLength;
- WCHAR ShortName[12];
- LARGE_INTEGER FileId;
- WCHAR FileName[1];
- } FILE_ID_BOTH_DIR_INFORMATION, *PFILE_ID_BOTH_DIR_INFORMATION;
- typedef struct _FILE_NAMES_INFORMATION {
- ULONG NextEntryOffset;
- ULONG FileIndex;
- ULONG FileNameLength;
- WCHAR FileName[1];
- } FILE_NAMES_INFORMATION, *PFILE_NAMES_INFORMATION;
- typedef struct _FILE_ID_GLOBAL_TX_DIR_INFORMATION {
- ULONG NextEntryOffset;
- ULONG FileIndex;
- LARGE_INTEGER CreationTime;
- LARGE_INTEGER LastAccessTime;
- LARGE_INTEGER LastWriteTime;
- LARGE_INTEGER ChangeTime;
- LARGE_INTEGER EndOfFile;
- LARGE_INTEGER AllocationSize;
- ULONG FileAttributes;
- ULONG FileNameLength;
- LARGE_INTEGER FileId;
- GUID LockingTransactionId;
- ULONG TxInfoFlags;
- WCHAR FileName[1];
- } FILE_ID_GLOBAL_TX_DIR_INFORMATION, *PFILE_ID_GLOBAL_TX_DIR_INFORMATION;
- #define FILE_ID_GLOBAL_TX_DIR_INFO_FLAG_WRITELOCKED 0x00000001
- #define FILE_ID_GLOBAL_TX_DIR_INFO_FLAG_VISIBLE_TO_TX 0x00000002
- #define FILE_ID_GLOBAL_TX_DIR_INFO_FLAG_VISIBLE_OUTSIDE_TX 0x00000004
- typedef struct _FILE_OBJECTID_INFORMATION {
- LONGLONG FileReference;
- UCHAR ObjectId[16];
- _ANONYMOUS_UNION union {
- _ANONYMOUS_STRUCT struct {
- UCHAR BirthVolumeId[16];
- UCHAR BirthObjectId[16];
- UCHAR DomainId[16];
- } DUMMYSTRUCTNAME;
- UCHAR ExtendedInfo[48];
- } DUMMYUNIONNAME;
- } FILE_OBJECTID_INFORMATION, *PFILE_OBJECTID_INFORMATION;
- #define ANSI_DOS_STAR ('<')
- #define ANSI_DOS_QM ('>')
- #define ANSI_DOS_DOT ('"')
- #define DOS_STAR (L'<')
- #define DOS_QM (L'>')
- #define DOS_DOT (L'"')
- typedef struct _FILE_INTERNAL_INFORMATION {
- LARGE_INTEGER IndexNumber;
- } FILE_INTERNAL_INFORMATION, *PFILE_INTERNAL_INFORMATION;
- typedef struct _FILE_EA_INFORMATION {
- ULONG EaSize;
- } FILE_EA_INFORMATION, *PFILE_EA_INFORMATION;
- typedef struct _FILE_ACCESS_INFORMATION {
- ACCESS_MASK AccessFlags;
- } FILE_ACCESS_INFORMATION, *PFILE_ACCESS_INFORMATION;
- typedef struct _FILE_MODE_INFORMATION {
- ULONG Mode;
- } FILE_MODE_INFORMATION, *PFILE_MODE_INFORMATION;
- typedef struct _FILE_ALL_INFORMATION {
- FILE_BASIC_INFORMATION BasicInformation;
- FILE_STANDARD_INFORMATION StandardInformation;
- FILE_INTERNAL_INFORMATION InternalInformation;
- FILE_EA_INFORMATION EaInformation;
- FILE_ACCESS_INFORMATION AccessInformation;
- FILE_POSITION_INFORMATION PositionInformation;
- FILE_MODE_INFORMATION ModeInformation;
- FILE_ALIGNMENT_INFORMATION AlignmentInformation;
- FILE_NAME_INFORMATION NameInformation;
- } FILE_ALL_INFORMATION, *PFILE_ALL_INFORMATION;
- typedef struct _FILE_ALLOCATION_INFORMATION {
- LARGE_INTEGER AllocationSize;
- } FILE_ALLOCATION_INFORMATION, *PFILE_ALLOCATION_INFORMATION;
- typedef struct _FILE_COMPRESSION_INFORMATION {
- LARGE_INTEGER CompressedFileSize;
- USHORT CompressionFormat;
- UCHAR CompressionUnitShift;
- UCHAR ChunkShift;
- UCHAR ClusterShift;
- UCHAR Reserved[3];
- } FILE_COMPRESSION_INFORMATION, *PFILE_COMPRESSION_INFORMATION;
- typedef struct _FILE_LINK_INFORMATION {
- BOOLEAN ReplaceIfExists;
- HANDLE RootDirectory;
- ULONG FileNameLength;
- WCHAR FileName[1];
- } FILE_LINK_INFORMATION, *PFILE_LINK_INFORMATION;
- typedef struct _FILE_MOVE_CLUSTER_INFORMATION {
- ULONG ClusterCount;
- HANDLE RootDirectory;
- ULONG FileNameLength;
- WCHAR FileName[1];
- } FILE_MOVE_CLUSTER_INFORMATION, *PFILE_MOVE_CLUSTER_INFORMATION;
- typedef struct _FILE_RENAME_INFORMATION {
- BOOLEAN ReplaceIfExists;
- HANDLE RootDirectory;
- ULONG FileNameLength;
- WCHAR FileName[1];
- } FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION;
- typedef struct _FILE_STREAM_INFORMATION {
- ULONG NextEntryOffset;
- ULONG StreamNameLength;
- LARGE_INTEGER StreamSize;
- LARGE_INTEGER StreamAllocationSize;
- WCHAR StreamName[1];
- } FILE_STREAM_INFORMATION, *PFILE_STREAM_INFORMATION;
- typedef struct _FILE_TRACKING_INFORMATION {
- HANDLE DestinationFile;
- ULONG ObjectInformationLength;
- CHAR ObjectInformation[1];
- } FILE_TRACKING_INFORMATION, *PFILE_TRACKING_INFORMATION;
- typedef struct _FILE_COMPLETION_INFORMATION {
- HANDLE Port;
- PVOID Key;
- } FILE_COMPLETION_INFORMATION, *PFILE_COMPLETION_INFORMATION;
- typedef struct _FILE_PIPE_INFORMATION {
- ULONG ReadMode;
- ULONG CompletionMode;
- } FILE_PIPE_INFORMATION, *PFILE_PIPE_INFORMATION;
- typedef struct _FILE_PIPE_LOCAL_INFORMATION {
- ULONG NamedPipeType;
- ULONG NamedPipeConfiguration;
- ULONG MaximumInstances;
- ULONG CurrentInstances;
- ULONG InboundQuota;
- ULONG ReadDataAvailable;
- ULONG OutboundQuota;
- ULONG WriteQuotaAvailable;
- ULONG NamedPipeState;
- ULONG NamedPipeEnd;
- } FILE_PIPE_LOCAL_INFORMATION, *PFILE_PIPE_LOCAL_INFORMATION;
- typedef struct _FILE_PIPE_REMOTE_INFORMATION {
- LARGE_INTEGER CollectDataTime;
- ULONG MaximumCollectionCount;
- } FILE_PIPE_REMOTE_INFORMATION, *PFILE_PIPE_REMOTE_INFORMATION;
- typedef struct _FILE_MAILSLOT_QUERY_INFORMATION {
- ULONG MaximumMessageSize;
- ULONG MailslotQuota;
- ULONG NextMessageSize;
- ULONG MessagesAvailable;
- LARGE_INTEGER ReadTimeout;
- } FILE_MAILSLOT_QUERY_INFORMATION, *PFILE_MAILSLOT_QUERY_INFORMATION;
- typedef struct _FILE_MAILSLOT_SET_INFORMATION {
- PLARGE_INTEGER ReadTimeout;
- } FILE_MAILSLOT_SET_INFORMATION, *PFILE_MAILSLOT_SET_INFORMATION;
- typedef struct _FILE_REPARSE_POINT_INFORMATION {
- LONGLONG FileReference;
- ULONG Tag;
- } FILE_REPARSE_POINT_INFORMATION, *PFILE_REPARSE_POINT_INFORMATION;
- typedef struct _FILE_LINK_ENTRY_INFORMATION {
- ULONG NextEntryOffset;
- LONGLONG ParentFileId;
- ULONG FileNameLength;
- WCHAR FileName[1];
- } FILE_LINK_ENTRY_INFORMATION, *PFILE_LINK_ENTRY_INFORMATION;
- typedef struct _FILE_LINKS_INFORMATION {
- ULONG BytesNeeded;
- ULONG EntriesReturned;
- FILE_LINK_ENTRY_INFORMATION Entry;
- } FILE_LINKS_INFORMATION, *PFILE_LINKS_INFORMATION;
- typedef struct _FILE_NETWORK_PHYSICAL_NAME_INFORMATION {
- ULONG FileNameLength;
- WCHAR FileName[1];
- } FILE_NETWORK_PHYSICAL_NAME_INFORMATION, *PFILE_NETWORK_PHYSICAL_NAME_INFORMATION;
- typedef struct _FILE_STANDARD_LINK_INFORMATION {
- ULONG NumberOfAccessibleLinks;
- ULONG TotalNumberOfLinks;
- BOOLEAN DeletePending;
- BOOLEAN Directory;
- } FILE_STANDARD_LINK_INFORMATION, *PFILE_STANDARD_LINK_INFORMATION;
- typedef struct _FILE_GET_EA_INFORMATION {
- ULONG NextEntryOffset;
- UCHAR EaNameLength;
- CHAR EaName[1];
- } FILE_GET_EA_INFORMATION, *PFILE_GET_EA_INFORMATION;
- #define REMOTE_PROTOCOL_FLAG_LOOPBACK 0x00000001
- #define REMOTE_PROTOCOL_FLAG_OFFLINE 0x00000002
- typedef struct _FILE_REMOTE_PROTOCOL_INFORMATION {
- USHORT StructureVersion;
- USHORT StructureSize;
- ULONG Protocol;
- USHORT ProtocolMajorVersion;
- USHORT ProtocolMinorVersion;
- USHORT ProtocolRevision;
- USHORT Reserved;
- ULONG Flags;
- struct {
- ULONG Reserved[8];
- } GenericReserved;
- struct {
- ULONG Reserved[16];
- } ProtocolSpecificReserved;
- } FILE_REMOTE_PROTOCOL_INFORMATION, *PFILE_REMOTE_PROTOCOL_INFORMATION;
- typedef struct _FILE_GET_QUOTA_INFORMATION {
- ULONG NextEntryOffset;
- ULONG SidLength;
- SID Sid;
- } FILE_GET_QUOTA_INFORMATION, *PFILE_GET_QUOTA_INFORMATION;
- typedef struct _FILE_QUOTA_INFORMATION {
- ULONG NextEntryOffset;
- ULONG SidLength;
- LARGE_INTEGER ChangeTime;
- LARGE_INTEGER QuotaUsed;
- LARGE_INTEGER QuotaThreshold;
- LARGE_INTEGER QuotaLimit;
- SID Sid;
- } FILE_QUOTA_INFORMATION, *PFILE_QUOTA_INFORMATION;
- typedef struct _FILE_FS_ATTRIBUTE_INFORMATION {
- ULONG FileSystemAttributes;
- ULONG MaximumComponentNameLength;
- ULONG FileSystemNameLength;
- WCHAR FileSystemName[1];
- } FILE_FS_ATTRIBUTE_INFORMATION, *PFILE_FS_ATTRIBUTE_INFORMATION;
- typedef struct _FILE_FS_DRIVER_PATH_INFORMATION {
- BOOLEAN DriverInPath;
- ULONG DriverNameLength;
- WCHAR DriverName[1];
- } FILE_FS_DRIVER_PATH_INFORMATION, *PFILE_FS_DRIVER_PATH_INFORMATION;
- typedef struct _FILE_FS_VOLUME_FLAGS_INFORMATION {
- ULONG Flags;
- } FILE_FS_VOLUME_FLAGS_INFORMATION, *PFILE_FS_VOLUME_FLAGS_INFORMATION;
- #define FILE_VC_QUOTA_NONE 0x00000000
- #define FILE_VC_QUOTA_TRACK 0x00000001
- #define FILE_VC_QUOTA_ENFORCE 0x00000002
- #define FILE_VC_QUOTA_MASK 0x00000003
- #define FILE_VC_CONTENT_INDEX_DISABLED 0x00000008
- #define FILE_VC_LOG_QUOTA_THRESHOLD 0x00000010
- #define FILE_VC_LOG_QUOTA_LIMIT 0x00000020
- #define FILE_VC_LOG_VOLUME_THRESHOLD 0x00000040
- #define FILE_VC_LOG_VOLUME_LIMIT 0x00000080
- #define FILE_VC_QUOTAS_INCOMPLETE 0x00000100
- #define FILE_VC_QUOTAS_REBUILDING 0x00000200
- #define FILE_VC_VALID_MASK 0x000003ff
- typedef struct _FILE_FS_CONTROL_INFORMATION {
- LARGE_INTEGER FreeSpaceStartFiltering;
- LARGE_INTEGER FreeSpaceThreshold;
- LARGE_INTEGER FreeSpaceStopFiltering;
- LARGE_INTEGER DefaultQuotaThreshold;
- LARGE_INTEGER DefaultQuotaLimit;
- ULONG FileSystemControlFlags;
- } FILE_FS_CONTROL_INFORMATION, *PFILE_FS_CONTROL_INFORMATION;
- #ifndef _FILESYSTEMFSCTL_
- #define _FILESYSTEMFSCTL_
- #define FSCTL_REQUEST_OPLOCK_LEVEL_1 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_REQUEST_OPLOCK_LEVEL_2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_REQUEST_BATCH_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_OPLOCK_BREAK_ACKNOWLEDGE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 3, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_OPBATCH_ACK_CLOSE_PENDING CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_OPLOCK_BREAK_NOTIFY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_LOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_UNLOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_DISMOUNT_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_IS_VOLUME_MOUNTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 10, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_IS_PATHNAME_VALID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 11, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_MARK_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_QUERY_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 14, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define FSCTL_GET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_SET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 16, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
- #define FSCTL_SET_BOOTLOADER_ACCESSED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 19, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define FSCTL_OPLOCK_BREAK_ACK_NO_2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 20, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_INVALIDATE_VOLUMES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 21, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_QUERY_FAT_BPB CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 22, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_REQUEST_FILTER_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 23, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_FILESYSTEM_GET_STATISTICS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 24, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #if (_WIN32_WINNT >= 0x0400)
- #define FSCTL_GET_NTFS_VOLUME_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 25, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_GET_NTFS_FILE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 26, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_GET_VOLUME_BITMAP CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 27, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define FSCTL_GET_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 28, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define FSCTL_MOVE_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 29, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
- #define FSCTL_IS_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 30, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_ALLOW_EXTENDED_DASD_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 32, METHOD_NEITHER, FILE_ANY_ACCESS)
- #endif
- #if (_WIN32_WINNT >= 0x0500)
- #define FSCTL_FIND_FILES_BY_SID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 35, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define FSCTL_SET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 38, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
- #define FSCTL_GET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 39, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_DELETE_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 40, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
- #define FSCTL_SET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 41, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
- #define FSCTL_GET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_DELETE_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 43, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
- #define FSCTL_ENUM_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 44, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define FSCTL_SECURITY_ID_CHECK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 45, METHOD_NEITHER, FILE_READ_DATA)
- #define FSCTL_READ_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 46, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define FSCTL_SET_OBJECT_ID_EXTENDED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 47, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
- #define FSCTL_CREATE_OR_GET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 48, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_SET_SPARSE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
- #define FSCTL_SET_ZERO_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 50, METHOD_BUFFERED, FILE_WRITE_DATA)
- #define FSCTL_QUERY_ALLOCATED_RANGES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 51, METHOD_NEITHER, FILE_READ_DATA)
- #define FSCTL_ENABLE_UPGRADE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 52, METHOD_BUFFERED, FILE_WRITE_DATA)
- #define FSCTL_SET_ENCRYPTION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 53, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define FSCTL_ENCRYPTION_FSCTL_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 54, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define FSCTL_WRITE_RAW_ENCRYPTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 55, METHOD_NEITHER, FILE_SPECIAL_ACCESS)
- #define FSCTL_READ_RAW_ENCRYPTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 56, METHOD_NEITHER, FILE_SPECIAL_ACCESS)
- #define FSCTL_CREATE_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 57, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define FSCTL_READ_FILE_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 58, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define FSCTL_WRITE_USN_CLOSE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 59, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define FSCTL_EXTEND_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 60, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_QUERY_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 61, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_DELETE_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 62, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_MARK_HANDLE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 63, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_SIS_COPYFILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 64, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_SIS_LINK_FILES CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 65, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
- #define FSCTL_RECALL_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 69, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define FSCTL_READ_FROM_PLEX CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 71, METHOD_OUT_DIRECT, FILE_READ_DATA)
- #define FSCTL_FILE_PREFETCH CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 72, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
- #endif
- #if (_WIN32_WINNT >= 0x0600)
- #define FSCTL_MAKE_MEDIA_COMPATIBLE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 76, METHOD_BUFFERED, FILE_WRITE_DATA)
- #define FSCTL_SET_DEFECT_MANAGEMENT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 77, METHOD_BUFFERED, FILE_WRITE_DATA)
- #define FSCTL_QUERY_SPARING_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 78, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_QUERY_ON_DISK_VOLUME_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 79, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_SET_VOLUME_COMPRESSION_STATE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 80, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
- #define FSCTL_TXFS_MODIFY_RM CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 81, METHOD_BUFFERED, FILE_WRITE_DATA)
- #define FSCTL_TXFS_QUERY_RM_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 82, METHOD_BUFFERED, FILE_READ_DATA)
- #define FSCTL_TXFS_ROLLFORWARD_REDO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 84, METHOD_BUFFERED, FILE_WRITE_DATA)
- #define FSCTL_TXFS_ROLLFORWARD_UNDO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 85, METHOD_BUFFERED, FILE_WRITE_DATA)
- #define FSCTL_TXFS_START_RM CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 86, METHOD_BUFFERED, FILE_WRITE_DATA)
- #define FSCTL_TXFS_SHUTDOWN_RM CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 87, METHOD_BUFFERED, FILE_WRITE_DATA)
- #define FSCTL_TXFS_READ_BACKUP_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 88, METHOD_BUFFERED, FILE_READ_DATA)
- #define FSCTL_TXFS_WRITE_BACKUP_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 89, METHOD_BUFFERED, FILE_WRITE_DATA)
- #define FSCTL_TXFS_CREATE_SECONDARY_RM CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 90, METHOD_BUFFERED, FILE_WRITE_DATA)
- #define FSCTL_TXFS_GET_METADATA_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 91, METHOD_BUFFERED, FILE_READ_DATA)
- #define FSCTL_TXFS_GET_TRANSACTED_VERSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 92, METHOD_BUFFERED, FILE_READ_DATA)
- #define FSCTL_TXFS_SAVEPOINT_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 94, METHOD_BUFFERED, FILE_WRITE_DATA)
- #define FSCTL_TXFS_CREATE_MINIVERSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 95, METHOD_BUFFERED, FILE_WRITE_DATA)
- #define FSCTL_TXFS_TRANSACTION_ACTIVE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 99, METHOD_BUFFERED, FILE_READ_DATA)
- #define FSCTL_SET_ZERO_ON_DEALLOCATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 101, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
- #define FSCTL_SET_REPAIR CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 102, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_GET_REPAIR CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 103, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_WAIT_FOR_REPAIR CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 104, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_INITIATE_REPAIR CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 106, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_CSC_INTERNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 107, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define FSCTL_SHRINK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 108, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
- #define FSCTL_SET_SHORT_NAME_BEHAVIOR CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 109, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_DFSR_SET_GHOST_HANDLE_STATE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 110, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_TXFS_LIST_TRANSACTION_LOCKED_FILES \
- CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 120, METHOD_BUFFERED, FILE_READ_DATA)
- #define FSCTL_TXFS_LIST_TRANSACTIONS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 121, METHOD_BUFFERED, FILE_READ_DATA)
- #define FSCTL_QUERY_PAGEFILE_ENCRYPTION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 122, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_RESET_VOLUME_ALLOCATION_HINTS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 123, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_TXFS_READ_BACKUP_INFORMATION2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 126, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #endif
- #if (_WIN32_WINNT >= 0x0601)
- #define FSCTL_QUERY_DEPENDENT_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 124, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_SD_GLOBAL_CHANGE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 125, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_LOOKUP_STREAM_FROM_CLUSTER CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 127, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_TXFS_WRITE_BACKUP_INFORMATION2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 128, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_FILE_TYPE_NOTIFICATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 129, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_GET_BOOT_AREA_INFO CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 140, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_GET_RETRIEVAL_POINTER_BASE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 141, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_SET_PERSISTENT_VOLUME_STATE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 142, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_QUERY_PERSISTENT_VOLUME_STATE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 143, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_REQUEST_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 144, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_CSV_TUNNEL_REQUEST CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 145, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_IS_CSV_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 146, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_QUERY_FILE_SYSTEM_RECOGNITION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 147, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_CSV_GET_VOLUME_PATH_NAME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 148, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_CSV_GET_VOLUME_NAME_FOR_VOLUME_MOUNT_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 149, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_CSV_GET_VOLUME_PATH_NAMES_FOR_VOLUME_NAME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 150, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_IS_FILE_ON_CSV_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 151, METHOD_BUFFERED, FILE_ANY_ACCESS)
- typedef struct _CSV_NAMESPACE_INFO {
- ULONG Version;
- ULONG DeviceNumber;
- LARGE_INTEGER StartingOffset;
- ULONG SectorSize;
- } CSV_NAMESPACE_INFO, *PCSV_NAMESPACE_INFO;
- #define CSV_NAMESPACE_INFO_V1 (sizeof(CSV_NAMESPACE_INFO))
- #define CSV_INVALID_DEVICE_NUMBER 0xFFFFFFFF
- #endif
- #define FSCTL_MARK_AS_SYSTEM_HIVE FSCTL_SET_BOOTLOADER_ACCESSED
- typedef struct _PATHNAME_BUFFER {
- ULONG PathNameLength;
- WCHAR Name[1];
- } PATHNAME_BUFFER, *PPATHNAME_BUFFER;
- typedef struct _FSCTL_QUERY_FAT_BPB_BUFFER {
- UCHAR First0x24BytesOfBootSector[0x24];
- } FSCTL_QUERY_FAT_BPB_BUFFER, *PFSCTL_QUERY_FAT_BPB_BUFFER;
- #if (_WIN32_WINNT >= 0x0400)
- typedef struct _NTFS_VOLUME_DATA_BUFFER {
- LARGE_INTEGER VolumeSerialNumber;
- LARGE_INTEGER NumberSectors;
- LARGE_INTEGER TotalClusters;
- LARGE_INTEGER FreeClusters;
- LARGE_INTEGER TotalReserved;
- ULONG BytesPerSector;
- ULONG BytesPerCluster;
- ULONG BytesPerFileRecordSegment;
- ULONG ClustersPerFileRecordSegment;
- LARGE_INTEGER MftValidDataLength;
- LARGE_INTEGER MftStartLcn;
- LARGE_INTEGER Mft2StartLcn;
- LARGE_INTEGER MftZoneStart;
- LARGE_INTEGER MftZoneEnd;
- } NTFS_VOLUME_DATA_BUFFER, *PNTFS_VOLUME_DATA_BUFFER;
- typedef struct _NTFS_EXTENDED_VOLUME_DATA {
- ULONG ByteCount;
- USHORT MajorVersion;
- USHORT MinorVersion;
- } NTFS_EXTENDED_VOLUME_DATA, *PNTFS_EXTENDED_VOLUME_DATA;
- typedef struct _STARTING_LCN_INPUT_BUFFER {
- LARGE_INTEGER StartingLcn;
- } STARTING_LCN_INPUT_BUFFER, *PSTARTING_LCN_INPUT_BUFFER;
- typedef struct _VOLUME_BITMAP_BUFFER {
- LARGE_INTEGER StartingLcn;
- LARGE_INTEGER BitmapSize;
- UCHAR Buffer[1];
- } VOLUME_BITMAP_BUFFER, *PVOLUME_BITMAP_BUFFER;
- typedef struct _STARTING_VCN_INPUT_BUFFER {
- LARGE_INTEGER StartingVcn;
- } STARTING_VCN_INPUT_BUFFER, *PSTARTING_VCN_INPUT_BUFFER;
- typedef struct _RETRIEVAL_POINTERS_BUFFER {
- ULONG ExtentCount;
- LARGE_INTEGER StartingVcn;
- struct {
- LARGE_INTEGER NextVcn;
- LARGE_INTEGER Lcn;
- } Extents[1];
- } RETRIEVAL_POINTERS_BUFFER, *PRETRIEVAL_POINTERS_BUFFER;
- typedef struct _NTFS_FILE_RECORD_INPUT_BUFFER {
- LARGE_INTEGER FileReferenceNumber;
- } NTFS_FILE_RECORD_INPUT_BUFFER, *PNTFS_FILE_RECORD_INPUT_BUFFER;
- typedef struct _NTFS_FILE_RECORD_OUTPUT_BUFFER {
- LARGE_INTEGER FileReferenceNumber;
- ULONG FileRecordLength;
- UCHAR FileRecordBuffer[1];
- } NTFS_FILE_RECORD_OUTPUT_BUFFER, *PNTFS_FILE_RECORD_OUTPUT_BUFFER;
- typedef struct _MOVE_FILE_DATA {
- HANDLE FileHandle;
- LARGE_INTEGER StartingVcn;
- LARGE_INTEGER StartingLcn;
- ULONG ClusterCount;
- } MOVE_FILE_DATA, *PMOVE_FILE_DATA;
- typedef struct _MOVE_FILE_RECORD_DATA {
- HANDLE FileHandle;
- LARGE_INTEGER SourceFileRecord;
- LARGE_INTEGER TargetFileRecord;
- } MOVE_FILE_RECORD_DATA, *PMOVE_FILE_RECORD_DATA;
- #if defined(_WIN64)
- typedef struct _MOVE_FILE_DATA32 {
- UINT32 FileHandle;
- LARGE_INTEGER StartingVcn;
- LARGE_INTEGER StartingLcn;
- ULONG ClusterCount;
- } MOVE_FILE_DATA32, *PMOVE_FILE_DATA32;
- #endif
- #endif /* (_WIN32_WINNT >= 0x0400) */
- #if (_WIN32_WINNT >= 0x0500)
- typedef struct _FIND_BY_SID_DATA {
- ULONG Restart;
- SID Sid;
- } FIND_BY_SID_DATA, *PFIND_BY_SID_DATA;
- typedef struct _FIND_BY_SID_OUTPUT {
- ULONG NextEntryOffset;
- ULONG FileIndex;
- ULONG FileNameLength;
- WCHAR FileName[1];
- } FIND_BY_SID_OUTPUT, *PFIND_BY_SID_OUTPUT;
- typedef struct _MFT_ENUM_DATA {
- ULONGLONG StartFileReferenceNumber;
- USN LowUsn;
- USN HighUsn;
- } MFT_ENUM_DATA, *PMFT_ENUM_DATA;
- typedef struct _CREATE_USN_JOURNAL_DATA {
- ULONGLONG MaximumSize;
- ULONGLONG AllocationDelta;
- } CREATE_USN_JOURNAL_DATA, *PCREATE_USN_JOURNAL_DATA;
- typedef struct _READ_USN_JOURNAL_DATA {
- USN StartUsn;
- ULONG ReasonMask;
- ULONG ReturnOnlyOnClose;
- ULONGLONG Timeout;
- ULONGLONG BytesToWaitFor;
- ULONGLONG UsnJournalID;
- } READ_USN_JOURNAL_DATA, *PREAD_USN_JOURNAL_DATA;
- typedef struct _USN_RECORD {
- ULONG RecordLength;
- USHORT MajorVersion;
- USHORT MinorVersion;
- ULONGLONG FileReferenceNumber;
- ULONGLONG ParentFileReferenceNumber;
- USN Usn;
- LARGE_INTEGER TimeStamp;
- ULONG Reason;
- ULONG SourceInfo;
- ULONG SecurityId;
- ULONG FileAttributes;
- USHORT FileNameLength;
- USHORT FileNameOffset;
- WCHAR FileName[1];
- } USN_RECORD, *PUSN_RECORD;
- #define USN_PAGE_SIZE (0x1000)
- #define USN_REASON_DATA_OVERWRITE (0x00000001)
- #define USN_REASON_DATA_EXTEND (0x00000002)
- #define USN_REASON_DATA_TRUNCATION (0x00000004)
- #define USN_REASON_NAMED_DATA_OVERWRITE (0x00000010)
- #define USN_REASON_NAMED_DATA_EXTEND (0x00000020)
- #define USN_REASON_NAMED_DATA_TRUNCATION (0x00000040)
- #define USN_REASON_FILE_CREATE (0x00000100)
- #define USN_REASON_FILE_DELETE (0x00000200)
- #define USN_REASON_EA_CHANGE (0x00000400)
- #define USN_REASON_SECURITY_CHANGE (0x00000800)
- #define USN_REASON_RENAME_OLD_NAME (0x00001000)
- #define USN_REASON_RENAME_NEW_NAME (0x00002000)
- #define USN_REASON_INDEXABLE_CHANGE (0x00004000)
- #define USN_REASON_BASIC_INFO_CHANGE (0x00008000)
- #define USN_REASON_HARD_LINK_CHANGE (0x00010000)
- #define USN_REASON_COMPRESSION_CHANGE (0x00020000)
- #define USN_REASON_ENCRYPTION_CHANGE (0x00040000)
- #define USN_REASON_OBJECT_ID_CHANGE (0x00080000)
- #define USN_REASON_REPARSE_POINT_CHANGE (0x00100000)
- #define USN_REASON_STREAM_CHANGE (0x00200000)
- #define USN_REASON_TRANSACTED_CHANGE (0x00400000)
- #define USN_REASON_CLOSE (0x80000000)
- typedef struct _USN_JOURNAL_DATA {
- ULONGLONG UsnJournalID;
- USN FirstUsn;
- USN NextUsn;
- USN LowestValidUsn;
- USN MaxUsn;
- ULONGLONG MaximumSize;
- ULONGLONG AllocationDelta;
- } USN_JOURNAL_DATA, *PUSN_JOURNAL_DATA;
- typedef struct _DELETE_USN_JOURNAL_DATA {
- ULONGLONG UsnJournalID;
- ULONG DeleteFlags;
- } DELETE_USN_JOURNAL_DATA, *PDELETE_USN_JOURNAL_DATA;
- #define USN_DELETE_FLAG_DELETE (0x00000001)
- #define USN_DELETE_FLAG_NOTIFY (0x00000002)
- #define USN_DELETE_VALID_FLAGS (0x00000003)
- typedef struct _MARK_HANDLE_INFO {
- ULONG UsnSourceInfo;
- HANDLE VolumeHandle;
- ULONG HandleInfo;
- } MARK_HANDLE_INFO, *PMARK_HANDLE_INFO;
- #if defined(_WIN64)
- typedef struct _MARK_HANDLE_INFO32 {
- ULONG UsnSourceInfo;
- UINT32 VolumeHandle;
- ULONG HandleInfo;
- } MARK_HANDLE_INFO32, *PMARK_HANDLE_INFO32;
- #endif
- #define USN_SOURCE_DATA_MANAGEMENT (0x00000001)
- #define USN_SOURCE_AUXILIARY_DATA (0x00000002)
- #define USN_SOURCE_REPLICATION_MANAGEMENT (0x00000004)
- #define MARK_HANDLE_PROTECT_CLUSTERS (0x00000001)
- #define MARK_HANDLE_TXF_SYSTEM_LOG (0x00000004)
- #define MARK_HANDLE_NOT_TXF_SYSTEM_LOG (0x00000008)
- typedef struct _BULK_SECURITY_TEST_DATA {
- ACCESS_MASK DesiredAccess;
- ULONG SecurityIds[1];
- } BULK_SECURITY_TEST_DATA, *PBULK_SECURITY_TEST_DATA;
- #define VOLUME_IS_DIRTY (0x00000001)
- #define VOLUME_UPGRADE_SCHEDULED (0x00000002)
- #define VOLUME_SESSION_OPEN (0x00000004)
- typedef struct _FILE_PREFETCH {
- ULONG Type;
- ULONG Count;
- ULONGLONG Prefetch[1];
- } FILE_PREFETCH, *PFILE_PREFETCH;
- typedef struct _FILE_PREFETCH_EX {
- ULONG Type;
- ULONG Count;
- PVOID Context;
- ULONGLONG Prefetch[1];
- } FILE_PREFETCH_EX, *PFILE_PREFETCH_EX;
- #define FILE_PREFETCH_TYPE_FOR_CREATE 0x1
- #define FILE_PREFETCH_TYPE_FOR_DIRENUM 0x2
- #define FILE_PREFETCH_TYPE_FOR_CREATE_EX 0x3
- #define FILE_PREFETCH_TYPE_FOR_DIRENUM_EX 0x4
- #define FILE_PREFETCH_TYPE_MAX 0x4
- typedef struct _FILE_OBJECTID_BUFFER {
- UCHAR ObjectId[16];
- _ANONYMOUS_UNION union {
- _ANONYMOUS_STRUCT struct {
- UCHAR BirthVolumeId[16];
- UCHAR BirthObjectId[16];
- UCHAR DomainId[16];
- } DUMMYSTRUCTNAME;
- UCHAR ExtendedInfo[48];
- } DUMMYUNIONNAME;
- } FILE_OBJECTID_BUFFER, *PFILE_OBJECTID_BUFFER;
- typedef struct _FILE_SET_SPARSE_BUFFER {
- BOOLEAN SetSparse;
- } FILE_SET_SPARSE_BUFFER, *PFILE_SET_SPARSE_BUFFER;
- typedef struct _FILE_ZERO_DATA_INFORMATION {
- LARGE_INTEGER FileOffset;
- LARGE_INTEGER BeyondFinalZero;
- } FILE_ZERO_DATA_INFORMATION, *PFILE_ZERO_DATA_INFORMATION;
- typedef struct _FILE_ALLOCATED_RANGE_BUFFER {
- LARGE_INTEGER FileOffset;
- LARGE_INTEGER Length;
- } FILE_ALLOCATED_RANGE_BUFFER, *PFILE_ALLOCATED_RANGE_BUFFER;
- typedef struct _ENCRYPTION_BUFFER {
- ULONG EncryptionOperation;
- UCHAR Private[1];
- } ENCRYPTION_BUFFER, *PENCRYPTION_BUFFER;
- #define FILE_SET_ENCRYPTION 0x00000001
- #define FILE_CLEAR_ENCRYPTION 0x00000002
- #define STREAM_SET_ENCRYPTION 0x00000003
- #define STREAM_CLEAR_ENCRYPTION 0x00000004
- #define MAXIMUM_ENCRYPTION_VALUE 0x00000004
- typedef struct _DECRYPTION_STATUS_BUFFER {
- BOOLEAN NoEncryptedStreams;
- } DECRYPTION_STATUS_BUFFER, *PDECRYPTION_STATUS_BUFFER;
- #define ENCRYPTION_FORMAT_DEFAULT (0x01)
- #define COMPRESSION_FORMAT_SPARSE (0x4000)
- typedef struct _REQUEST_RAW_ENCRYPTED_DATA {
- LONGLONG FileOffset;
- ULONG Length;
- } REQUEST_RAW_ENCRYPTED_DATA, *PREQUEST_RAW_ENCRYPTED_DATA;
- typedef struct _ENCRYPTED_DATA_INFO {
- ULONGLONG StartingFileOffset;
- ULONG OutputBufferOffset;
- ULONG BytesWithinFileSize;
- ULONG BytesWithinValidDataLength;
- USHORT CompressionFormat;
- UCHAR DataUnitShift;
- UCHAR ChunkShift;
- UCHAR ClusterShift;
- UCHAR EncryptionFormat;
- USHORT NumberOfDataBlocks;
- ULONG DataBlockSize[ANYSIZE_ARRAY];
- } ENCRYPTED_DATA_INFO, *PENCRYPTED_DATA_INFO;
- typedef struct _PLEX_READ_DATA_REQUEST {
- LARGE_INTEGER ByteOffset;
- ULONG ByteLength;
- ULONG PlexNumber;
- } PLEX_READ_DATA_REQUEST, *PPLEX_READ_DATA_REQUEST;
- typedef struct _SI_COPYFILE {
- ULONG SourceFileNameLength;
- ULONG DestinationFileNameLength;
- ULONG Flags;
- WCHAR FileNameBuffer[1];
- } SI_COPYFILE, *PSI_COPYFILE;
- #define COPYFILE_SIS_LINK 0x0001
- #define COPYFILE_SIS_REPLACE 0x0002
- #define COPYFILE_SIS_FLAGS 0x0003
- #endif /* (_WIN32_WINNT >= 0x0500) */
- #if (_WIN32_WINNT >= 0x0600)
- typedef struct _FILE_MAKE_COMPATIBLE_BUFFER {
- BOOLEAN CloseDisc;
- } FILE_MAKE_COMPATIBLE_BUFFER, *PFILE_MAKE_COMPATIBLE_BUFFER;
- typedef struct _FILE_SET_DEFECT_MGMT_BUFFER {
- BOOLEAN Disable;
- } FILE_SET_DEFECT_MGMT_BUFFER, *PFILE_SET_DEFECT_MGMT_BUFFER;
- typedef struct _FILE_QUERY_SPARING_BUFFER {
- ULONG SparingUnitBytes;
- BOOLEAN SoftwareSparing;
- ULONG TotalSpareBlocks;
- ULONG FreeSpareBlocks;
- } FILE_QUERY_SPARING_BUFFER, *PFILE_QUERY_SPARING_BUFFER;
- typedef struct _FILE_QUERY_ON_DISK_VOL_INFO_BUFFER {
- LARGE_INTEGER DirectoryCount;
- LARGE_INTEGER FileCount;
- USHORT FsFormatMajVersion;
- USHORT FsFormatMinVersion;
- WCHAR FsFormatName[12];
- LARGE_INTEGER FormatTime;
- LARGE_INTEGER LastUpdateTime;
- WCHAR CopyrightInfo[34];
- WCHAR AbstractInfo[34];
- WCHAR FormattingImplementationInfo[34];
- WCHAR LastModifyingImplementationInfo[34];
- } FILE_QUERY_ON_DISK_VOL_INFO_BUFFER, *PFILE_QUERY_ON_DISK_VOL_INFO_BUFFER;
- #define SET_REPAIR_ENABLED (0x00000001)
- #define SET_REPAIR_VOLUME_BITMAP_SCAN (0x00000002)
- #define SET_REPAIR_DELETE_CROSSLINK (0x00000004)
- #define SET_REPAIR_WARN_ABOUT_DATA_LOSS (0x00000008)
- #define SET_REPAIR_DISABLED_AND_BUGCHECK_ON_CORRUPT (0x00000010)
- #define SET_REPAIR_VALID_MASK (0x0000001F)
- typedef enum _SHRINK_VOLUME_REQUEST_TYPES {
- ShrinkPrepare = 1,
- ShrinkCommit,
- ShrinkAbort
- } SHRINK_VOLUME_REQUEST_TYPES, *PSHRINK_VOLUME_REQUEST_TYPES;
- typedef struct _SHRINK_VOLUME_INFORMATION {
- SHRINK_VOLUME_REQUEST_TYPES ShrinkRequestType;
- ULONGLONG Flags;
- LONGLONG NewNumberOfSectors;
- } SHRINK_VOLUME_INFORMATION, *PSHRINK_VOLUME_INFORMATION;
- #define TXFS_RM_FLAG_LOGGING_MODE 0x00000001
- #define TXFS_RM_FLAG_RENAME_RM 0x00000002
- #define TXFS_RM_FLAG_LOG_CONTAINER_COUNT_MAX 0x00000004
- #define TXFS_RM_FLAG_LOG_CONTAINER_COUNT_MIN 0x00000008
- #define TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_NUM_CONTAINERS 0x00000010
- #define TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_PERCENT 0x00000020
- #define TXFS_RM_FLAG_LOG_AUTO_SHRINK_PERCENTAGE 0x00000040
- #define TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MAX 0x00000080
- #define TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MIN 0x00000100
- #define TXFS_RM_FLAG_GROW_LOG 0x00000400
- #define TXFS_RM_FLAG_SHRINK_LOG 0x00000800
- #define TXFS_RM_FLAG_ENFORCE_MINIMUM_SIZE 0x00001000
- #define TXFS_RM_FLAG_PRESERVE_CHANGES 0x00002000
- #define TXFS_RM_FLAG_RESET_RM_AT_NEXT_START 0x00004000
- #define TXFS_RM_FLAG_DO_NOT_RESET_RM_AT_NEXT_START 0x00008000
- #define TXFS_RM_FLAG_PREFER_CONSISTENCY 0x00010000
- #define TXFS_RM_FLAG_PREFER_AVAILABILITY 0x00020000
- #define TXFS_LOGGING_MODE_SIMPLE (0x0001)
- #define TXFS_LOGGING_MODE_FULL (0x0002)
- #define TXFS_TRANSACTION_STATE_NONE 0x00
- #define TXFS_TRANSACTION_STATE_ACTIVE 0x01
- #define TXFS_TRANSACTION_STATE_PREPARED 0x02
- #define TXFS_TRANSACTION_STATE_NOTACTIVE 0x03
- #define TXFS_MODIFY_RM_VALID_FLAGS (TXFS_RM_FLAG_LOGGING_MODE | \
- TXFS_RM_FLAG_RENAME_RM | \
- TXFS_RM_FLAG_LOG_CONTAINER_COUNT_MAX | \
- TXFS_RM_FLAG_LOG_CONTAINER_COUNT_MIN | \
- TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_NUM_CONTAINERS | \
- TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_PERCENT | \
- TXFS_RM_FLAG_LOG_AUTO_SHRINK_PERCENTAGE | \
- TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MAX | \
- TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MIN | \
- TXFS_RM_FLAG_SHRINK_LOG | \
- TXFS_RM_FLAG_GROW_LOG | \
- TXFS_RM_FLAG_ENFORCE_MINIMUM_SIZE | \
- TXFS_RM_FLAG_PRESERVE_CHANGES | \
- TXFS_RM_FLAG_RESET_RM_AT_NEXT_START | \
- TXFS_RM_FLAG_DO_NOT_RESET_RM_AT_NEXT_START | \
- TXFS_RM_FLAG_PREFER_CONSISTENCY | \
- TXFS_RM_FLAG_PREFER_AVAILABILITY)
- typedef struct _TXFS_MODIFY_RM {
- ULONG Flags;
- ULONG LogContainerCountMax;
- ULONG LogContainerCountMin;
- ULONG LogContainerCount;
- ULONG LogGrowthIncrement;
- ULONG LogAutoShrinkPercentage;
- ULONGLONG Reserved;
- USHORT LoggingMode;
- } TXFS_MODIFY_RM, *PTXFS_MODIFY_RM;
- #define TXFS_RM_STATE_NOT_STARTED 0
- #define TXFS_RM_STATE_STARTING 1
- #define TXFS_RM_STATE_ACTIVE 2
- #define TXFS_RM_STATE_SHUTTING_DOWN 3
- #define TXFS_QUERY_RM_INFORMATION_VALID_FLAGS \
- (TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_NUM_CONTAINERS | \
- TXFS_RM_FLAG_LOG_GROWTH_INCREMENT_PERCENT | \
- TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MAX | \
- TXFS_RM_FLAG_LOG_NO_CONTAINER_COUNT_MIN | \
- TXFS_RM_FLAG_RESET_RM_AT_NEXT_START | \
- TXFS_RM_FLAG_DO_NOT_RESET_RM_AT_NEXT_START | \
- TXFS_RM_FLAG_PREFER_CONSISTENCY | \
- TXFS_RM_FLAG_PREFER_AVAILABILITY)
- typedef struct _TXFS_QUERY_RM_INFORMATION {
- ULONG BytesRequired;
- ULONGLONG TailLsn;
- ULONGLONG CurrentLsn;
- ULONGLONG ArchiveTailLsn;
- ULONGLONG LogContainerSize;
- LARGE_INTEGER HighestVirtualClock;
- ULONG LogContainerCount;
- ULONG LogContainerCountMax;
- ULONG LogContainerCountMin;
- ULONG LogGrowthIncrement;
- ULONG LogAutoShrinkPercentage;
- ULONG Flags;
- USHORT LoggingMode;
- USHORT Reserved;
- ULONG RmState;
- ULONGLONG LogCapacity;
- ULONGLONG LogFree;
- ULONGLONG TopsSize;
- ULONGLONG TopsUsed;
- ULONGLONG TransactionCount;
- ULONGLONG OnePCCount;
- ULONGLONG TwoPCCount;
- ULONGLONG NumberLogFileFull;
- ULONGLONG OldestTransactionAge;
- GUID RMName;
- ULONG TmLogPathOffset;
- } TXFS_QUERY_RM_INFORMATION, *PTXFS_QUERY_RM_INFORMATION;
- #define TXFS_ROLLFORWARD_REDO_FLAG_USE_LAST_REDO_LSN 0x01
- #define TXFS_ROLLFORWARD_REDO_FLAG_USE_LAST_VIRTUAL_CLOCK 0x02
- #define TXFS_ROLLFORWARD_REDO_VALID_FLAGS \
- (TXFS_ROLLFORWARD_REDO_FLAG_USE_LAST_REDO_LSN | \
- TXFS_ROLLFORWARD_REDO_FLAG_USE_LAST_VIRTUAL_CLOCK)
- typedef struct _TXFS_ROLLFORWARD_REDO_INFORMATION {
- LARGE_INTEGER LastVirtualClock;
- ULONGLONG LastRedoLsn;
- ULONGLONG HighestRecoveryLsn;
- ULONG Flags;
- } TXFS_ROLLFORWARD_REDO_INFORMATION, *PTXFS_ROLLFORWARD_REDO_INFORMATION;
- #define TXFS_START_RM_FLAG_LOG_CONTAINER_COUNT_MAX 0x00000001
- #define TXFS_START_RM_FLAG_LOG_CONTAINER_COUNT_MIN 0x00000002
- #define TXFS_START_RM_FLAG_LOG_CONTAINER_SIZE 0x00000004
- #define TXFS_START_RM_FLAG_LOG_GROWTH_INCREMENT_NUM_CONTAINERS 0x00000008
- #define TXFS_START_RM_FLAG_LOG_GROWTH_INCREMENT_PERCENT 0x00000010
- #define TXFS_START_RM_FLAG_LOG_AUTO_SHRINK_PERCENTAGE 0x00000020
- #define TXFS_START_RM_FLAG_LOG_NO_CONTAINER_COUNT_MAX 0x00000040
- #define TXFS_START_RM_FLAG_LOG_NO_CONTAINER_COUNT_MIN 0x00000080
- #define TXFS_START_RM_FLAG_RECOVER_BEST_EFFORT 0x00000200
- #define TXFS_START_RM_FLAG_LOGGING_MODE 0x00000400
- #define TXFS_START_RM_FLAG_PRESERVE_CHANGES 0x00000800
- #define TXFS_START_RM_FLAG_PREFER_CONSISTENCY 0x00001000
- #define TXFS_START_RM_FLAG_PREFER_AVAILABILITY 0x00002000
- #define TXFS_START_RM_VALID_FLAGS \
- (TXFS_START_RM_FLAG_LOG_CONTAINER_COUNT_MAX | \
- TXFS_START_RM_FLAG_LOG_CONTAINER_COUNT_MIN | \
- TXFS_START_RM_FLAG_LOG_CONTAINER_SIZE | \
- TXFS_START_RM_FLAG_LOG_GROWTH_INCREMENT_NUM_CONTAINERS | \
- TXFS_START_RM_FLAG_LOG_GROWTH_INCREMENT_PERCENT | \
- TXFS_START_RM_FLAG_LOG_AUTO_SHRINK_PERCENTAGE | \
- TXFS_START_RM_FLAG_RECOVER_BEST_EFFORT | \
- TXFS_START_RM_FLAG_LOG_NO_CONTAINER_COUNT_MAX | \
- TXFS_START_RM_FLAG_LOGGING_MODE | \
- TXFS_START_RM_FLAG_PRESERVE_CHANGES | \
- TXFS_START_RM_FLAG_PREFER_CONSISTENCY | \
- TXFS_START_RM_FLAG_PREFER_AVAILABILITY)
- typedef struct _TXFS_START_RM_INFORMATION {
- ULONG Flags;
- ULONGLONG LogContainerSize;
- ULONG LogContainerCountMin;
- ULONG LogContainerCountMax;
- ULONG LogGrowthIncrement;
- ULONG LogAutoShrinkPercentage;
- ULONG TmLogPathOffset;
- USHORT TmLogPathLength;
- USHORT LoggingMode;
- USHORT LogPathLength;
- USHORT Reserved;
- WCHAR LogPath[1];
- } TXFS_START_RM_INFORMATION, *PTXFS_START_RM_INFORMATION;
- typedef struct _TXFS_GET_METADATA_INFO_OUT {
- struct {
- LONGLONG LowPart;
- LONGLONG HighPart;
- } TxfFileId;
- GUID LockingTransaction;
- ULONGLONG LastLsn;
- ULONG TransactionState;
- } TXFS_GET_METADATA_INFO_OUT, *PTXFS_GET_METADATA_INFO_OUT;
- #define TXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY_FLAG_CREATED 0x00000001
- #define TXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY_FLAG_DELETED 0x00000002
- typedef struct _TXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY {
- ULONGLONG Offset;
- ULONG NameFlags;
- LONGLONG FileId;
- ULONG Reserved1;
- ULONG Reserved2;
- LONGLONG Reserved3;
- WCHAR FileName[1];
- } TXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY, *PTXFS_LIST_TRANSACTION_LOCKED_FILES_ENTRY;
- typedef struct _TXFS_LIST_TRANSACTION_LOCKED_FILES {
- GUID KtmTransaction;
- ULONGLONG NumberOfFiles;
- ULONGLONG BufferSizeRequired;
- ULONGLONG Offset;
- } TXFS_LIST_TRANSACTION_LOCKED_FILES, *PTXFS_LIST_TRANSACTION_LOCKED_FILES;
- typedef struct _TXFS_LIST_TRANSACTIONS_ENTRY {
- GUID TransactionId;
- ULONG TransactionState;
- ULONG Reserved1;
- ULONG Reserved2;
- LONGLONG Reserved3;
- } TXFS_LIST_TRANSACTIONS_ENTRY, *PTXFS_LIST_TRANSACTIONS_ENTRY;
- typedef struct _TXFS_LIST_TRANSACTIONS {
- ULONGLONG NumberOfTransactions;
- ULONGLONG BufferSizeRequired;
- } TXFS_LIST_TRANSACTIONS, *PTXFS_LIST_TRANSACTIONS;
- typedef struct _TXFS_READ_BACKUP_INFORMATION_OUT {
- _ANONYMOUS_UNION union {
- ULONG BufferLength;
- UCHAR Buffer[1];
- } DUMMYUNIONNAME;
- } TXFS_READ_BACKUP_INFORMATION_OUT, *PTXFS_READ_BACKUP_INFORMATION_OUT;
- typedef struct _TXFS_WRITE_BACKUP_INFORMATION {
- UCHAR Buffer[1];
- } TXFS_WRITE_BACKUP_INFORMATION, *PTXFS_WRITE_BACKUP_INFORMATION;
- #define TXFS_TRANSACTED_VERSION_NONTRANSACTED 0xFFFFFFFE
- #define TXFS_TRANSACTED_VERSION_UNCOMMITTED 0xFFFFFFFF
- typedef struct _TXFS_GET_TRANSACTED_VERSION {
- ULONG ThisBaseVersion;
- ULONG LatestVersion;
- USHORT ThisMiniVersion;
- USHORT FirstMiniVersion;
- USHORT LatestMiniVersion;
- } TXFS_GET_TRANSACTED_VERSION, *PTXFS_GET_TRANSACTED_VERSION;
- #define TXFS_SAVEPOINT_SET 0x00000001
- #define TXFS_SAVEPOINT_ROLLBACK 0x00000002
- #define TXFS_SAVEPOINT_CLEAR 0x00000004
- #define TXFS_SAVEPOINT_CLEAR_ALL 0x00000010
- typedef struct _TXFS_SAVEPOINT_INFORMATION {
- HANDLE KtmTransaction;
- ULONG ActionCode;
- ULONG SavepointId;
- } TXFS_SAVEPOINT_INFORMATION, *PTXFS_SAVEPOINT_INFORMATION;
- typedef struct _TXFS_CREATE_MINIVERSION_INFO {
- USHORT StructureVersion;
- USHORT StructureLength;
- ULONG BaseVersion;
- USHORT MiniVersion;
- } TXFS_CREATE_MINIVERSION_INFO, *PTXFS_CREATE_MINIVERSION_INFO;
- typedef struct _TXFS_TRANSACTION_ACTIVE_INFO {
- BOOLEAN TransactionsActiveAtSnapshot;
- } TXFS_TRANSACTION_ACTIVE_INFO, *PTXFS_TRANSACTION_ACTIVE_INFO;
- #endif /* (_WIN32_WINNT >= 0x0600) */
- #if (_WIN32_WINNT >= 0x0601)
- #define MARK_HANDLE_REALTIME (0x00000020)
- #define MARK_HANDLE_NOT_REALTIME (0x00000040)
- #define NO_8DOT3_NAME_PRESENT (0x00000001)
- #define REMOVED_8DOT3_NAME (0x00000002)
- #define PERSISTENT_VOLUME_STATE_SHORT_NAME_CREATION_DISABLED (0x00000001)
- typedef struct _BOOT_AREA_INFO {
- ULONG BootSectorCount;
- struct {
- LARGE_INTEGER Offset;
- } BootSectors[2];
- } BOOT_AREA_INFO, *PBOOT_AREA_INFO;
- typedef struct _RETRIEVAL_POINTER_BASE {
- LARGE_INTEGER FileAreaOffset;
- } RETRIEVAL_POINTER_BASE, *PRETRIEVAL_POINTER_BASE;
- typedef struct _FILE_FS_PERSISTENT_VOLUME_INFORMATION {
- ULONG VolumeFlags;
- ULONG FlagMask;
- ULONG Version;
- ULONG Reserved;
- } FILE_FS_PERSISTENT_VOLUME_INFORMATION, *PFILE_FS_PERSISTENT_VOLUME_INFORMATION;
- typedef struct _FILE_SYSTEM_RECOGNITION_INFORMATION {
- CHAR FileSystem[9];
- } FILE_SYSTEM_RECOGNITION_INFORMATION, *PFILE_SYSTEM_RECOGNITION_INFORMATION;
- #define OPLOCK_LEVEL_CACHE_READ (0x00000001)
- #define OPLOCK_LEVEL_CACHE_HANDLE (0x00000002)
- #define OPLOCK_LEVEL_CACHE_WRITE (0x00000004)
- #define REQUEST_OPLOCK_INPUT_FLAG_REQUEST (0x00000001)
- #define REQUEST_OPLOCK_INPUT_FLAG_ACK (0x00000002)
- #define REQUEST_OPLOCK_INPUT_FLAG_COMPLETE_ACK_ON_CLOSE (0x00000004)
- #define REQUEST_OPLOCK_CURRENT_VERSION 1
- typedef struct _REQUEST_OPLOCK_INPUT_BUFFER {
- USHORT StructureVersion;
- USHORT StructureLength;
- ULONG RequestedOplockLevel;
- ULONG Flags;
- } REQUEST_OPLOCK_INPUT_BUFFER, *PREQUEST_OPLOCK_INPUT_BUFFER;
- #define REQUEST_OPLOCK_OUTPUT_FLAG_ACK_REQUIRED (0x00000001)
- #define REQUEST_OPLOCK_OUTPUT_FLAG_MODES_PROVIDED (0x00000002)
- typedef struct _REQUEST_OPLOCK_OUTPUT_BUFFER {
- USHORT StructureVersion;
- USHORT StructureLength;
- ULONG OriginalOplockLevel;
- ULONG NewOplockLevel;
- ULONG Flags;
- ACCESS_MASK AccessMode;
- USHORT ShareMode;
- } REQUEST_OPLOCK_OUTPUT_BUFFER, *PREQUEST_OPLOCK_OUTPUT_BUFFER;
- #define SD_GLOBAL_CHANGE_TYPE_MACHINE_SID 1
- typedef struct _SD_CHANGE_MACHINE_SID_INPUT {
- USHORT CurrentMachineSIDOffset;
- USHORT CurrentMachineSIDLength;
- USHORT NewMachineSIDOffset;
- USHORT NewMachineSIDLength;
- } SD_CHANGE_MACHINE_SID_INPUT, *PSD_CHANGE_MACHINE_SID_INPUT;
- typedef struct _SD_CHANGE_MACHINE_SID_OUTPUT {
- ULONGLONG NumSDChangedSuccess;
- ULONGLONG NumSDChangedFail;
- ULONGLONG NumSDUnused;
- ULONGLONG NumSDTotal;
- ULONGLONG NumMftSDChangedSuccess;
- ULONGLONG NumMftSDChangedFail;
- ULONGLONG NumMftSDTotal;
- } SD_CHANGE_MACHINE_SID_OUTPUT, *PSD_CHANGE_MACHINE_SID_OUTPUT;
- typedef struct _SD_GLOBAL_CHANGE_INPUT {
- ULONG Flags;
- ULONG ChangeType;
- _ANONYMOUS_UNION union {
- SD_CHANGE_MACHINE_SID_INPUT SdChange;
- } DUMMYUNIONNAME;
- } SD_GLOBAL_CHANGE_INPUT, *PSD_GLOBAL_CHANGE_INPUT;
- typedef struct _SD_GLOBAL_CHANGE_OUTPUT {
- ULONG Flags;
- ULONG ChangeType;
- _ANONYMOUS_UNION union {
- SD_CHANGE_MACHINE_SID_OUTPUT SdChange;
- } DUMMYUNIONNAME;
- } SD_GLOBAL_CHANGE_OUTPUT, *PSD_GLOBAL_CHANGE_OUTPUT;
- #define ENCRYPTED_DATA_INFO_SPARSE_FILE 1
- typedef struct _EXTENDED_ENCRYPTED_DATA_INFO {
- ULONG ExtendedCode;
- ULONG Length;
- ULONG Flags;
- ULONG Reserved;
- } EXTENDED_ENCRYPTED_DATA_INFO, *PEXTENDED_ENCRYPTED_DATA_INFO;
- typedef struct _LOOKUP_STREAM_FROM_CLUSTER_INPUT {
- ULONG Flags;
- ULONG NumberOfClusters;
- LARGE_INTEGER Cluster[1];
- } LOOKUP_STREAM_FROM_CLUSTER_INPUT, *PLOOKUP_STREAM_FROM_CLUSTER_INPUT;
- typedef struct _LOOKUP_STREAM_FROM_CLUSTER_OUTPUT {
- ULONG Offset;
- ULONG NumberOfMatches;
- ULONG BufferSizeRequired;
- } LOOKUP_STREAM_FROM_CLUSTER_OUTPUT, *PLOOKUP_STREAM_FROM_CLUSTER_OUTPUT;
- #define LOOKUP_STREAM_FROM_CLUSTER_ENTRY_FLAG_PAGE_FILE 0x00000001
- #define LOOKUP_STREAM_FROM_CLUSTER_ENTRY_FLAG_DENY_DEFRAG_SET 0x00000002
- #define LOOKUP_STREAM_FROM_CLUSTER_ENTRY_FLAG_FS_SYSTEM_FILE 0x00000004
- #define LOOKUP_STREAM_FROM_CLUSTER_ENTRY_FLAG_TXF_SYSTEM_FILE 0x00000008
- #define LOOKUP_STREAM_FROM_CLUSTER_ENTRY_ATTRIBUTE_MASK 0xff000000
- #define LOOKUP_STREAM_FROM_CLUSTER_ENTRY_ATTRIBUTE_DATA 0x01000000
- #define LOOKUP_STREAM_FROM_CLUSTER_ENTRY_ATTRIBUTE_INDEX 0x02000000
- #define LOOKUP_STREAM_FROM_CLUSTER_ENTRY_ATTRIBUTE_SYSTEM 0x03000000
- typedef struct _LOOKUP_STREAM_FROM_CLUSTER_ENTRY {
- ULONG OffsetToNext;
- ULONG Flags;
- LARGE_INTEGER Reserved;
- LARGE_INTEGER Cluster;
- WCHAR FileName[1];
- } LOOKUP_STREAM_FROM_CLUSTER_ENTRY, *PLOOKUP_STREAM_FROM_CLUSTER_ENTRY;
- typedef struct _FILE_TYPE_NOTIFICATION_INPUT {
- ULONG Flags;
- ULONG NumFileTypeIDs;
- GUID FileTypeID[1];
- } FILE_TYPE_NOTIFICATION_INPUT, *PFILE_TYPE_NOTIFICATION_INPUT;
- #define FILE_TYPE_NOTIFICATION_FLAG_USAGE_BEGIN 0x00000001
- #define FILE_TYPE_NOTIFICATION_FLAG_USAGE_END 0x00000002
- DEFINE_GUID(FILE_TYPE_NOTIFICATION_GUID_PAGE_FILE, 0x0d0a64a1, 0x38fc, 0x4db8, 0x9f, 0xe7, 0x3f, 0x43, 0x52, 0xcd, 0x7c, 0x5c);
- DEFINE_GUID(FILE_TYPE_NOTIFICATION_GUID_HIBERNATION_FILE, 0xb7624d64, 0xb9a3, 0x4cf8, 0x80, 0x11, 0x5b, 0x86, 0xc9, 0x40, 0xe7, 0xb7);
- DEFINE_GUID(FILE_TYPE_NOTIFICATION_GUID_CRASHDUMP_FILE, 0x9d453eb7, 0xd2a6, 0x4dbd, 0xa2, 0xe3, 0xfb, 0xd0, 0xed, 0x91, 0x09, 0xa9);
- #ifndef _VIRTUAL_STORAGE_TYPE_DEFINED
- #define _VIRTUAL_STORAGE_TYPE_DEFINED
- typedef struct _VIRTUAL_STORAGE_TYPE {
- ULONG DeviceId;
- GUID VendorId;
- } VIRTUAL_STORAGE_TYPE, *PVIRTUAL_STORAGE_TYPE;
- #endif
- typedef struct _STORAGE_QUERY_DEPENDENT_VOLUME_REQUEST {
- ULONG RequestLevel;
- ULONG RequestFlags;
- } STORAGE_QUERY_DEPENDENT_VOLUME_REQUEST, *PSTORAGE_QUERY_DEPENDENT_VOLUME_REQUEST;
- #define QUERY_DEPENDENT_VOLUME_REQUEST_FLAG_HOST_VOLUMES 0x1
- #define QUERY_DEPENDENT_VOLUME_REQUEST_FLAG_GUEST_VOLUMES 0x2
- typedef struct _STORAGE_QUERY_DEPENDENT_VOLUME_LEV1_ENTRY {
- ULONG EntryLength;
- ULONG DependencyTypeFlags;
- ULONG ProviderSpecificFlags;
- VIRTUAL_STORAGE_TYPE VirtualStorageType;
- } STORAGE_QUERY_DEPENDENT_VOLUME_LEV1_ENTRY, *PSTORAGE_QUERY_DEPENDENT_VOLUME_LEV1_ENTRY;
- typedef struct _STORAGE_QUERY_DEPENDENT_VOLUME_LEV2_ENTRY {
- ULONG EntryLength;
- ULONG DependencyTypeFlags;
- ULONG ProviderSpecificFlags;
- VIRTUAL_STORAGE_TYPE VirtualStorageType;
- ULONG AncestorLevel;
- ULONG HostVolumeNameOffset;
- ULONG HostVolumeNameSize;
- ULONG DependentVolumeNameOffset;
- ULONG DependentVolumeNameSize;
- ULONG RelativePathOffset;
- ULONG RelativePathSize;
- ULONG DependentDeviceNameOffset;
- ULONG DependentDeviceNameSize;
- } STORAGE_QUERY_DEPENDENT_VOLUME_LEV2_ENTRY, *PSTORAGE_QUERY_DEPENDENT_VOLUME_LEV2_ENTRY;
- typedef struct _STORAGE_QUERY_DEPENDENT_VOLUME_RESPONSE {
- ULONG ResponseLevel;
- ULONG NumberEntries;
- _ANONYMOUS_UNION union {
- STORAGE_QUERY_DEPENDENT_VOLUME_LEV1_ENTRY Lev1Depends[0];
- STORAGE_QUERY_DEPENDENT_VOLUME_LEV2_ENTRY Lev2Depends[0];
- } DUMMYUNIONNAME;
- } STORAGE_QUERY_DEPENDENT_VOLUME_RESPONSE, *PSTORAGE_QUERY_DEPENDENT_VOLUME_RESPONSE;
- #endif /* (_WIN32_WINNT >= 0x0601) */
- typedef struct _FILESYSTEM_STATISTICS {
- USHORT FileSystemType;
- USHORT Version;
- ULONG SizeOfCompleteStructure;
- ULONG UserFileReads;
- ULONG UserFileReadBytes;
- ULONG UserDiskReads;
- ULONG UserFileWrites;
- ULONG UserFileWriteBytes;
- ULONG UserDiskWrites;
- ULONG MetaDataReads;
- ULONG MetaDataReadBytes;
- ULONG MetaDataDiskReads;
- ULONG MetaDataWrites;
- ULONG MetaDataWriteBytes;
- ULONG MetaDataDiskWrites;
- } FILESYSTEM_STATISTICS, *PFILESYSTEM_STATISTICS;
- #define FILESYSTEM_STATISTICS_TYPE_NTFS 1
- #define FILESYSTEM_STATISTICS_TYPE_FAT 2
- #define FILESYSTEM_STATISTICS_TYPE_EXFAT 3
- typedef struct _FAT_STATISTICS {
- ULONG CreateHits;
- ULONG SuccessfulCreates;
- ULONG FailedCreates;
- ULONG NonCachedReads;
- ULONG NonCachedReadBytes;
- ULONG NonCachedWrites;
- ULONG NonCachedWriteBytes;
- ULONG NonCachedDiskReads;
- ULONG NonCachedDiskWrites;
- } FAT_STATISTICS, *PFAT_STATISTICS;
- typedef struct _EXFAT_STATISTICS {
- ULONG CreateHits;
- ULONG SuccessfulCreates;
- ULONG FailedCreates;
- ULONG NonCachedReads;
- ULONG NonCachedReadBytes;
- ULONG NonCachedWrites;
- ULONG NonCachedWriteBytes;
- ULONG NonCachedDiskReads;
- ULONG NonCachedDiskWrites;
- } EXFAT_STATISTICS, *PEXFAT_STATISTICS;
- typedef struct _NTFS_STATISTICS {
- ULONG LogFileFullExceptions;
- ULONG OtherExceptions;
- ULONG MftReads;
- ULONG MftReadBytes;
- ULONG MftWrites;
- ULONG MftWriteBytes;
- struct {
- USHORT Write;
- USHORT Create;
- USHORT SetInfo;
- USHORT Flush;
- } MftWritesUserLevel;
- USHORT MftWritesFlushForLogFileFull;
- USHORT MftWritesLazyWriter;
- USHORT MftWritesUserRequest;
- ULONG Mft2Writes;
- ULONG Mft2WriteBytes;
- struct {
- USHORT Write;
- USHORT Create;
- USHORT SetInfo;
- USHORT Flush;
- } Mft2WritesUserLevel;
- USHORT Mft2WritesFlushForLogFileFull;
- USHORT Mft2WritesLazyWriter;
- USHORT Mft2WritesUserRequest;
- ULONG RootIndexReads;
- ULONG RootIndexReadBytes;
- ULONG RootIndexWrites;
- ULONG RootIndexWriteBytes;
- ULONG BitmapReads;
- ULONG BitmapReadBytes;
- ULONG BitmapWrites;
- ULONG BitmapWriteBytes;
- USHORT BitmapWritesFlushForLogFileFull;
- USHORT BitmapWritesLazyWriter;
- USHORT BitmapWritesUserRequest;
- struct {
- USHORT Write;
- USHORT Create;
- USHORT SetInfo;
- } BitmapWritesUserLevel;
- ULONG MftBitmapReads;
- ULONG MftBitmapReadBytes;
- ULONG MftBitmapWrites;
- ULONG MftBitmapWriteBytes;
- USHORT MftBitmapWritesFlushForLogFileFull;
- USHORT MftBitmapWritesLazyWriter;
- USHORT MftBitmapWritesUserRequest;
- struct {
- USHORT Write;
- USHORT Create;
- USHORT SetInfo;
- USHORT Flush;
- } MftBitmapWritesUserLevel;
- ULONG UserIndexReads;
- ULONG UserIndexReadBytes;
- ULONG UserIndexWrites;
- ULONG UserIndexWriteBytes;
- ULONG LogFileReads;
- ULONG LogFileReadBytes;
- ULONG LogFileWrites;
- ULONG LogFileWriteBytes;
- struct {
- ULONG Calls;
- ULONG Clusters;
- ULONG Hints;
- ULONG RunsReturned;
- ULONG HintsHonored;
- ULONG HintsClusters;
- ULONG Cache;
- ULONG CacheClusters;
- ULONG CacheMiss;
- ULONG CacheMissClusters;
- } Allocate;
- } NTFS_STATISTICS, *PNTFS_STATISTICS;
- #endif /* _FILESYSTEMFSCTL_ */
- #define SYMLINK_FLAG_RELATIVE 1
- typedef struct _REPARSE_DATA_BUFFER {
- ULONG ReparseTag;
- USHORT ReparseDataLength;
- USHORT Reserved;
- _ANONYMOUS_UNION union {
- struct {
- USHORT SubstituteNameOffset;
- USHORT SubstituteNameLength;
- USHORT PrintNameOffset;
- USHORT PrintNameLength;
- ULONG Flags;
- WCHAR PathBuffer[1];
- } SymbolicLinkReparseBuffer;
- struct {
- USHORT SubstituteNameOffset;
- USHORT SubstituteNameLength;
- USHORT PrintNameOffset;
- USHORT PrintNameLength;
- WCHAR PathBuffer[1];
- } MountPointReparseBuffer;
- struct {
- UCHAR DataBuffer[1];
- } GenericReparseBuffer;
- } DUMMYUNIONNAME;
- } REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER;
- #define REPARSE_DATA_BUFFER_HEADER_SIZE FIELD_OFFSET(REPARSE_DATA_BUFFER, GenericReparseBuffer)
- typedef struct _REPARSE_GUID_DATA_BUFFER {
- ULONG ReparseTag;
- USHORT ReparseDataLength;
- USHORT Reserved;
- GUID ReparseGuid;
- struct {
- UCHAR DataBuffer[1];
- } GenericReparseBuffer;
- } REPARSE_GUID_DATA_BUFFER, *PREPARSE_GUID_DATA_BUFFER;
- #define REPARSE_GUID_DATA_BUFFER_HEADER_SIZE FIELD_OFFSET(REPARSE_GUID_DATA_BUFFER, GenericReparseBuffer)
- #define MAXIMUM_REPARSE_DATA_BUFFER_SIZE ( 16 * 1024 )
- /* Reserved reparse tags */
- #define IO_REPARSE_TAG_RESERVED_ZERO (0)
- #define IO_REPARSE_TAG_RESERVED_ONE (1)
- #define IO_REPARSE_TAG_RESERVED_RANGE IO_REPARSE_TAG_RESERVED_ONE
- #define IsReparseTagMicrosoft(_tag) (((_tag) & 0x80000000))
- #define IsReparseTagNameSurrogate(_tag) (((_tag) & 0x20000000))
- #define IO_REPARSE_TAG_VALID_VALUES (0xF000FFFF)
- #define IsReparseTagValid(tag) ( \
- !((tag) & ~IO_REPARSE_TAG_VALID_VALUES) && \
- ((tag) > IO_REPARSE_TAG_RESERVED_RANGE) \
- )
- /* MicroSoft reparse point tags */
- #define IO_REPARSE_TAG_MOUNT_POINT (0xA0000003L)
- #define IO_REPARSE_TAG_HSM (0xC0000004L)
- #define IO_REPARSE_TAG_DRIVE_EXTENDER (0x80000005L)
- #define IO_REPARSE_TAG_HSM2 (0x80000006L)
- #define IO_REPARSE_TAG_SIS (0x80000007L)
- #define IO_REPARSE_TAG_WIM (0x80000008L)
- #define IO_REPARSE_TAG_CSV (0x80000009L)
- #define IO_REPARSE_TAG_DFS (0x8000000AL)
- #define IO_REPARSE_TAG_FILTER_MANAGER (0x8000000BL)
- #define IO_REPARSE_TAG_SYMLINK (0xA000000CL)
- #define IO_REPARSE_TAG_IIS_CACHE (0xA0000010L)
- #define IO_REPARSE_TAG_DFSR (0x80000012L)
- #pragma pack(4)
- typedef struct _REPARSE_INDEX_KEY {
- ULONG FileReparseTag;
- LARGE_INTEGER FileId;
- } REPARSE_INDEX_KEY, *PREPARSE_INDEX_KEY;
- #pragma pack()
- #define FSCTL_LMR_GET_LINK_TRACKING_INFORMATION CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM,58,METHOD_BUFFERED,FILE_ANY_ACCESS)
- #define FSCTL_LMR_SET_LINK_TRACKING_INFORMATION CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM,59,METHOD_BUFFERED,FILE_ANY_ACCESS)
- #define IOCTL_LMR_ARE_FILE_OBJECTS_ON_SAME_SERVER CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM,60,METHOD_BUFFERED,FILE_ANY_ACCESS)
- #define FSCTL_PIPE_ASSIGN_EVENT CTL_CODE(FILE_DEVICE_NAMED_PIPE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_PIPE_DISCONNECT CTL_CODE(FILE_DEVICE_NAMED_PIPE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_PIPE_LISTEN CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_PIPE_PEEK CTL_CODE(FILE_DEVICE_NAMED_PIPE, 3, METHOD_BUFFERED, FILE_READ_DATA)
- #define FSCTL_PIPE_QUERY_EVENT CTL_CODE(FILE_DEVICE_NAMED_PIPE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_PIPE_TRANSCEIVE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 5, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)
- #define FSCTL_PIPE_WAIT CTL_CODE(FILE_DEVICE_NAMED_PIPE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_PIPE_IMPERSONATE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_PIPE_SET_CLIENT_PROCESS CTL_CODE(FILE_DEVICE_NAMED_PIPE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_PIPE_QUERY_CLIENT_PROCESS CTL_CODE(FILE_DEVICE_NAMED_PIPE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_PIPE_GET_PIPE_ATTRIBUTE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 10, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_PIPE_SET_PIPE_ATTRIBUTE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 11, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_PIPE_GET_CONNECTION_ATTRIBUTE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_PIPE_SET_CONNECTION_ATTRIBUTE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 13, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_PIPE_GET_HANDLE_ATTRIBUTE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 14, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_PIPE_SET_HANDLE_ATTRIBUTE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_PIPE_FLUSH CTL_CODE(FILE_DEVICE_NAMED_PIPE, 16, METHOD_BUFFERED, FILE_WRITE_DATA)
- #define FSCTL_PIPE_INTERNAL_READ CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2045, METHOD_BUFFERED, FILE_READ_DATA)
- #define FSCTL_PIPE_INTERNAL_WRITE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2046, METHOD_BUFFERED, FILE_WRITE_DATA)
- #define FSCTL_PIPE_INTERNAL_TRANSCEIVE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2047, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)
- #define FSCTL_PIPE_INTERNAL_READ_OVFLOW CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2048, METHOD_BUFFERED, FILE_READ_DATA)
- #define FILE_PIPE_READ_DATA 0x00000000
- #define FILE_PIPE_WRITE_SPACE 0x00000001
- typedef struct _FILE_PIPE_ASSIGN_EVENT_BUFFER {
- HANDLE EventHandle;
- ULONG KeyValue;
- } FILE_PIPE_ASSIGN_EVENT_BUFFER, *PFILE_PIPE_ASSIGN_EVENT_BUFFER;
- typedef struct _FILE_PIPE_EVENT_BUFFER {
- ULONG NamedPipeState;
- ULONG EntryType;
- ULONG ByteCount;
- ULONG KeyValue;
- ULONG NumberRequests;
- } FILE_PIPE_EVENT_BUFFER, *PFILE_PIPE_EVENT_BUFFER;
- typedef struct _FILE_PIPE_PEEK_BUFFER {
- ULONG NamedPipeState;
- ULONG ReadDataAvailable;
- ULONG NumberOfMessages;
- ULONG MessageLength;
- CHAR Data[1];
- } FILE_PIPE_PEEK_BUFFER, *PFILE_PIPE_PEEK_BUFFER;
- typedef struct _FILE_PIPE_WAIT_FOR_BUFFER {
- LARGE_INTEGER Timeout;
- ULONG NameLength;
- BOOLEAN TimeoutSpecified;
- WCHAR Name[1];
- } FILE_PIPE_WAIT_FOR_BUFFER, *PFILE_PIPE_WAIT_FOR_BUFFER;
- typedef struct _FILE_PIPE_CLIENT_PROCESS_BUFFER {
- #if !defined(BUILD_WOW6432)
- PVOID ClientSession;
- PVOID ClientProcess;
- #else
- ULONGLONG ClientSession;
- ULONGLONG ClientProcess;
- #endif
- } FILE_PIPE_CLIENT_PROCESS_BUFFER, *PFILE_PIPE_CLIENT_PROCESS_BUFFER;
- #define FILE_PIPE_COMPUTER_NAME_LENGTH 15
- typedef struct _FILE_PIPE_CLIENT_PROCESS_BUFFER_EX {
- #if !defined(BUILD_WOW6432)
- PVOID ClientSession;
- PVOID ClientProcess;
- #else
- ULONGLONG ClientSession;
- ULONGLONG ClientProcess;
- #endif
- USHORT ClientComputerNameLength;
- WCHAR ClientComputerBuffer[FILE_PIPE_COMPUTER_NAME_LENGTH+1];
- } FILE_PIPE_CLIENT_PROCESS_BUFFER_EX, *PFILE_PIPE_CLIENT_PROCESS_BUFFER_EX;
- #define FSCTL_MAILSLOT_PEEK CTL_CODE(FILE_DEVICE_MAILSLOT, 0, METHOD_NEITHER, FILE_READ_DATA)
- typedef enum _LINK_TRACKING_INFORMATION_TYPE {
- NtfsLinkTrackingInformation,
- DfsLinkTrackingInformation
- } LINK_TRACKING_INFORMATION_TYPE, *PLINK_TRACKING_INFORMATION_TYPE;
- typedef struct _LINK_TRACKING_INFORMATION {
- LINK_TRACKING_INFORMATION_TYPE Type;
- UCHAR VolumeId[16];
- } LINK_TRACKING_INFORMATION, *PLINK_TRACKING_INFORMATION;
- typedef struct _REMOTE_LINK_TRACKING_INFORMATION {
- PVOID TargetFileObject;
- ULONG TargetLinkTrackingInformationLength;
- UCHAR TargetLinkTrackingInformationBuffer[1];
- } REMOTE_LINK_TRACKING_INFORMATION, *PREMOTE_LINK_TRACKING_INFORMATION;
- #define IO_OPEN_PAGING_FILE 0x0002
- #define IO_OPEN_TARGET_DIRECTORY 0x0004
- #define IO_STOP_ON_SYMLINK 0x0008
- #define IO_MM_PAGING_FILE 0x0010
- typedef VOID
- (NTAPI *PDRIVER_FS_NOTIFICATION) (
- IN PDEVICE_OBJECT DeviceObject,
- IN BOOLEAN FsActive);
- typedef enum _FS_FILTER_SECTION_SYNC_TYPE {
- SyncTypeOther = 0,
- SyncTypeCreateSection
- } FS_FILTER_SECTION_SYNC_TYPE, *PFS_FILTER_SECTION_SYNC_TYPE;
- typedef enum _FS_FILTER_STREAM_FO_NOTIFICATION_TYPE {
- NotifyTypeCreate = 0,
- NotifyTypeRetired
- } FS_FILTER_STREAM_FO_NOTIFICATION_TYPE, *PFS_FILTER_STREAM_FO_NOTIFICATION_TYPE;
- typedef union _FS_FILTER_PARAMETERS {
- struct {
- PLARGE_INTEGER EndingOffset;
- PERESOURCE *ResourceToRelease;
- } AcquireForModifiedPageWriter;
- struct {
- PERESOURCE ResourceToRelease;
- } ReleaseForModifiedPageWriter;
- struct {
- FS_FILTER_SECTION_SYNC_TYPE SyncType;
- ULONG PageProtection;
- } AcquireForSectionSynchronization;
- struct {
- FS_FILTER_STREAM_FO_NOTIFICATION_TYPE NotificationType;
- BOOLEAN POINTER_ALIGNMENT SafeToRecurse;
- } NotifyStreamFileObject;
- struct {
- PVOID Argument1;
- PVOID Argument2;
- PVOID Argument3;
- PVOID Argument4;
- PVOID Argument5;
- } Others;
- } FS_FILTER_PARAMETERS, *PFS_FILTER_PARAMETERS;
- #define FS_FILTER_ACQUIRE_FOR_SECTION_SYNCHRONIZATION (UCHAR)-1
- #define FS_FILTER_RELEASE_FOR_SECTION_SYNCHRONIZATION (UCHAR)-2
- #define FS_FILTER_ACQUIRE_FOR_MOD_WRITE (UCHAR)-3
- #define FS_FILTER_RELEASE_FOR_MOD_WRITE (UCHAR)-4
- #define FS_FILTER_ACQUIRE_FOR_CC_FLUSH (UCHAR)-5
- #define FS_FILTER_RELEASE_FOR_CC_FLUSH (UCHAR)-6
- typedef struct _FS_FILTER_CALLBACK_DATA {
- ULONG SizeOfFsFilterCallbackData;
- UCHAR Operation;
- UCHAR Reserved;
- struct _DEVICE_OBJECT *DeviceObject;
- struct _FILE_OBJECT *FileObject;
- FS_FILTER_PARAMETERS Parameters;
- } FS_FILTER_CALLBACK_DATA, *PFS_FILTER_CALLBACK_DATA;
- typedef NTSTATUS
- (NTAPI *PFS_FILTER_CALLBACK) (
- IN PFS_FILTER_CALLBACK_DATA Data,
- OUT PVOID *CompletionContext);
- typedef VOID
- (NTAPI *PFS_FILTER_COMPLETION_CALLBACK) (
- IN PFS_FILTER_CALLBACK_DATA Data,
- IN NTSTATUS OperationStatus,
- IN PVOID CompletionContext);
- typedef struct _FS_FILTER_CALLBACKS {
- ULONG SizeOfFsFilterCallbacks;
- ULONG Reserved;
- PFS_FILTER_CALLBACK PreAcquireForSectionSynchronization;
- PFS_FILTER_COMPLETION_CALLBACK PostAcquireForSectionSynchronization;
- PFS_FILTER_CALLBACK PreReleaseForSectionSynchronization;
- PFS_FILTER_COMPLETION_CALLBACK PostReleaseForSectionSynchronization;
- PFS_FILTER_CALLBACK PreAcquireForCcFlush;
- PFS_FILTER_COMPLETION_CALLBACK PostAcquireForCcFlush;
- PFS_FILTER_CALLBACK PreReleaseForCcFlush;
- PFS_FILTER_COMPLETION_CALLBACK PostReleaseForCcFlush;
- PFS_FILTER_CALLBACK PreAcquireForModifiedPageWriter;
- PFS_FILTER_COMPLETION_CALLBACK PostAcquireForModifiedPageWriter;
- PFS_FILTER_CALLBACK PreReleaseForModifiedPageWriter;
- PFS_FILTER_COMPLETION_CALLBACK PostReleaseForModifiedPageWriter;
- } FS_FILTER_CALLBACKS, *PFS_FILTER_CALLBACKS;
- #if (NTDDI_VERSION >= NTDDI_WINXP)
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlRegisterFileSystemFilterCallbacks(
- IN struct _DRIVER_OBJECT *FilterDriverObject,
- IN PFS_FILTER_CALLBACKS Callbacks);
- #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
- #if (NTDDI_VERSION >= NTDDI_VISTA)
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlNotifyStreamFileObject(
- IN struct _FILE_OBJECT * StreamFileObject,
- IN struct _DEVICE_OBJECT *DeviceObjectHint OPTIONAL,
- IN FS_FILTER_STREAM_FO_NOTIFICATION_TYPE NotificationType,
- IN BOOLEAN SafeToRecurse);
- #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
- #define DO_VERIFY_VOLUME 0x00000002
- #define DO_BUFFERED_IO 0x00000004
- #define DO_EXCLUSIVE 0x00000008
- #define DO_DIRECT_IO 0x00000010
- #define DO_MAP_IO_BUFFER 0x00000020
- #define DO_DEVICE_HAS_NAME 0x00000040
- #define DO_DEVICE_INITIALIZING 0x00000080
- #define DO_SYSTEM_BOOT_PARTITION 0x00000100
- #define DO_LONG_TERM_REQUESTS 0x00000200
- #define DO_NEVER_LAST_DEVICE 0x00000400
- #define DO_SHUTDOWN_REGISTERED 0x00000800
- #define DO_BUS_ENUMERATED_DEVICE 0x00001000
- #define DO_POWER_PAGABLE 0x00002000
- #define DO_POWER_INRUSH 0x00004000
- #define DO_LOW_PRIORITY_FILESYSTEM 0x00010000
- #define DO_SUPPORTS_TRANSACTIONS 0x00040000
- #define DO_FORCE_NEITHER_IO 0x00080000
- #define DO_VOLUME_DEVICE_OBJECT 0x00100000
- #define DO_SYSTEM_SYSTEM_PARTITION 0x00200000
- #define DO_SYSTEM_CRITICAL_PARTITION 0x00400000
- #define DO_DISALLOW_EXECUTE 0x00800000
- extern KSPIN_LOCK IoStatisticsLock;
- extern ULONG IoReadOperationCount;
- extern ULONG IoWriteOperationCount;
- extern ULONG IoOtherOperationCount;
- extern LARGE_INTEGER IoReadTransferCount;
- extern LARGE_INTEGER IoWriteTransferCount;
- extern LARGE_INTEGER IoOtherTransferCount;
- #define IO_FILE_OBJECT_NON_PAGED_POOL_CHARGE 64
- #define IO_FILE_OBJECT_PAGED_POOL_CHARGE 1024
- #if (NTDDI_VERSION >= NTDDI_VISTA)
- typedef struct _IO_PRIORITY_INFO {
- ULONG Size;
- ULONG ThreadPriority;
- ULONG PagePriority;
- IO_PRIORITY_HINT IoPriority;
- } IO_PRIORITY_INFO, *PIO_PRIORITY_INFO;
- #endif
- typedef struct _PUBLIC_OBJECT_BASIC_INFORMATION {
- ULONG Attributes;
- ACCESS_MASK GrantedAccess;
- ULONG HandleCount;
- ULONG PointerCount;
- ULONG Reserved[10];
- } PUBLIC_OBJECT_BASIC_INFORMATION, *PPUBLIC_OBJECT_BASIC_INFORMATION;
- typedef struct _PUBLIC_OBJECT_TYPE_INFORMATION {
- UNICODE_STRING TypeName;
- ULONG Reserved [22];
- } PUBLIC_OBJECT_TYPE_INFORMATION, *PPUBLIC_OBJECT_TYPE_INFORMATION;
- typedef struct _SECURITY_CLIENT_CONTEXT {
- SECURITY_QUALITY_OF_SERVICE SecurityQos;
- PACCESS_TOKEN ClientToken;
- BOOLEAN DirectlyAccessClientToken;
- BOOLEAN DirectAccessEffectiveOnly;
- BOOLEAN ServerIsRemote;
- TOKEN_CONTROL ClientTokenControl;
- } SECURITY_CLIENT_CONTEXT, *PSECURITY_CLIENT_CONTEXT;
- #define SYSTEM_PAGE_PRIORITY_BITS 3
- #define SYSTEM_PAGE_PRIORITY_LEVELS (1 << SYSTEM_PAGE_PRIORITY_BITS)
- typedef struct _KAPC_STATE {
- LIST_ENTRY ApcListHead[MaximumMode];
- PKPROCESS Process;
- BOOLEAN KernelApcInProgress;
- BOOLEAN KernelApcPending;
- BOOLEAN UserApcPending;
- } KAPC_STATE, *PKAPC_STATE, *RESTRICTED_POINTER PRKAPC_STATE;
- #define KAPC_STATE_ACTUAL_LENGTH (FIELD_OFFSET(KAPC_STATE, UserApcPending) + sizeof(BOOLEAN))
- #define ASSERT_QUEUE(Q) ASSERT(((Q)->Header.Type & KOBJECT_TYPE_MASK) == QueueObject);
- typedef struct _KQUEUE {
- DISPATCHER_HEADER Header;
- LIST_ENTRY EntryListHead;
- volatile ULONG CurrentCount;
- ULONG MaximumCount;
- LIST_ENTRY ThreadListHead;
- } KQUEUE, *PKQUEUE, *RESTRICTED_POINTER PRKQUEUE;
- /******************************************************************************
- * Kernel Functions *
- ******************************************************************************/
- NTSTATUS
- NTAPI
- KeGetProcessorNumberFromIndex(
- IN ULONG ProcIndex,
- OUT PPROCESSOR_NUMBER ProcNumber);
- ULONG
- NTAPI
- KeGetProcessorIndexFromNumber(
- IN PPROCESSOR_NUMBER ProcNumber);
- #if (NTDDI_VERSION >= NTDDI_WIN2K)
- NTKERNELAPI
- VOID
- NTAPI
- KeInitializeMutant(
- OUT PRKMUTANT Mutant,
- IN BOOLEAN InitialOwner);
- NTKERNELAPI
- LONG
- NTAPI
- KeReadStateMutant(
- IN PRKMUTANT Mutant);
- NTKERNELAPI
- LONG
- NTAPI
- KeReleaseMutant(
- IN OUT PRKMUTANT Mutant,
- IN KPRIORITY Increment,
- IN BOOLEAN Abandoned,
- IN BOOLEAN Wait);
- NTKERNELAPI
- VOID
- NTAPI
- KeInitializeQueue(
- OUT PRKQUEUE Queue,
- IN ULONG Count);
- NTKERNELAPI
- LONG
- NTAPI
- KeReadStateQueue(
- IN PRKQUEUE Queue);
- NTKERNELAPI
- LONG
- NTAPI
- KeInsertQueue(
- IN OUT PRKQUEUE Queue,
- IN OUT PLIST_ENTRY Entry);
- NTKERNELAPI
- LONG
- NTAPI
- KeInsertHeadQueue(
- IN OUT PRKQUEUE Queue,
- IN OUT PLIST_ENTRY Entry);
- NTKERNELAPI
- PLIST_ENTRY
- NTAPI
- KeRemoveQueue(
- IN OUT PRKQUEUE Queue,
- IN KPROCESSOR_MODE WaitMode,
- IN PLARGE_INTEGER Timeout OPTIONAL);
- NTKERNELAPI
- VOID
- NTAPI
- KeAttachProcess(
- IN OUT PKPROCESS Process);
- NTKERNELAPI
- VOID
- NTAPI
- KeDetachProcess(
- VOID);
- NTKERNELAPI
- PLIST_ENTRY
- NTAPI
- KeRundownQueue(
- IN OUT PRKQUEUE Queue);
- NTKERNELAPI
- VOID
- NTAPI
- KeStackAttachProcess(
- IN OUT PKPROCESS Process,
- OUT PKAPC_STATE ApcState);
- NTKERNELAPI
- VOID
- NTAPI
- KeUnstackDetachProcess(
- IN PKAPC_STATE ApcState);
- NTKERNELAPI
- UCHAR
- NTAPI
- KeSetIdealProcessorThread(
- IN OUT PKTHREAD Thread,
- IN UCHAR Processor);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- KeSetKernelStackSwapEnable(
- IN BOOLEAN Enable);
- #if defined(_X86_)
- NTHALAPI
- KIRQL
- FASTCALL
- KeAcquireSpinLockRaiseToSynch(
- IN OUT PKSPIN_LOCK SpinLock);
- #else
- NTKERNELAPI
- KIRQL
- KeAcquireSpinLockRaiseToSynch(
- IN OUT PKSPIN_LOCK SpinLock);
- #endif
- #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
- #if (NTDDI_VERSION >= NTDDI_WINXP)
- _DECL_HAL_KE_IMPORT
- KIRQL
- FASTCALL
- KeAcquireQueuedSpinLock(
- IN OUT KSPIN_LOCK_QUEUE_NUMBER Number);
- _DECL_HAL_KE_IMPORT
- VOID
- FASTCALL
- KeReleaseQueuedSpinLock(
- IN OUT KSPIN_LOCK_QUEUE_NUMBER Number,
- IN KIRQL OldIrql);
- _DECL_HAL_KE_IMPORT
- LOGICAL
- FASTCALL
- KeTryToAcquireQueuedSpinLock(
- IN KSPIN_LOCK_QUEUE_NUMBER Number,
- OUT PKIRQL OldIrql);
- #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
- #if (NTDDI_VERSION >= NTDDI_VISTA)
- NTKERNELAPI
- VOID
- KeQueryOwnerMutant(
- IN PKMUTANT Mutant,
- OUT PCLIENT_ID ClientId);
- NTKERNELAPI
- ULONG
- KeRemoveQueueEx (
- IN OUT PKQUEUE Queue,
- IN KPROCESSOR_MODE WaitMode,
- IN BOOLEAN Alertable,
- IN PLARGE_INTEGER Timeout OPTIONAL,
- OUT PLIST_ENTRY *EntryArray,
- IN ULONG Count);
- #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
- #define INVALID_PROCESSOR_INDEX 0xffffffff
- #define EX_PUSH_LOCK ULONG_PTR
- #define PEX_PUSH_LOCK PULONG_PTR
- /******************************************************************************
- * Executive Functions *
- ******************************************************************************/
- #define ExDisableResourceBoost ExDisableResourceBoostLite
- VOID
- ExInitializePushLock (
- OUT PEX_PUSH_LOCK PushLock);
- #if (NTDDI_VERSION >= NTDDI_WIN2K)
- NTKERNELAPI
- SIZE_T
- NTAPI
- ExQueryPoolBlockSize(
- IN PVOID PoolBlock,
- OUT PBOOLEAN QuotaCharged);
- VOID
- ExAdjustLookasideDepth(
- VOID);
- NTKERNELAPI
- VOID
- NTAPI
- ExDisableResourceBoostLite(
- IN PERESOURCE Resource);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
- #if (NTDDI_VERSION >= NTDDI_WINXP)
- PSLIST_ENTRY
- FASTCALL
- InterlockedPushListSList(
- IN OUT PSLIST_HEADER ListHead,
- IN OUT PSLIST_ENTRY List,
- IN OUT PSLIST_ENTRY ListEnd,
- IN ULONG Count);
- #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
- /******************************************************************************
- * Security Manager Functions *
- ******************************************************************************/
- #if (NTDDI_VERSION >= NTDDI_WIN2K)
- NTKERNELAPI
- VOID
- NTAPI
- SeReleaseSubjectContext(
- IN PSECURITY_SUBJECT_CONTEXT SubjectContext);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- SePrivilegeCheck(
- IN OUT PPRIVILEGE_SET RequiredPrivileges,
- IN PSECURITY_SUBJECT_CONTEXT SubjectContext,
- IN KPROCESSOR_MODE AccessMode);
- NTKERNELAPI
- VOID
- NTAPI
- SeOpenObjectAuditAlarm(
- IN PUNICODE_STRING ObjectTypeName,
- IN PVOID Object OPTIONAL,
- IN PUNICODE_STRING AbsoluteObjectName OPTIONAL,
- IN PSECURITY_DESCRIPTOR SecurityDescriptor,
- IN PACCESS_STATE AccessState,
- IN BOOLEAN ObjectCreated,
- IN BOOLEAN AccessGranted,
- IN KPROCESSOR_MODE AccessMode,
- OUT PBOOLEAN GenerateOnClose);
- NTKERNELAPI
- VOID
- NTAPI
- SeOpenObjectForDeleteAuditAlarm(
- IN PUNICODE_STRING ObjectTypeName,
- IN PVOID Object OPTIONAL,
- IN PUNICODE_STRING AbsoluteObjectName OPTIONAL,
- IN PSECURITY_DESCRIPTOR SecurityDescriptor,
- IN PACCESS_STATE AccessState,
- IN BOOLEAN ObjectCreated,
- IN BOOLEAN AccessGranted,
- IN KPROCESSOR_MODE AccessMode,
- OUT PBOOLEAN GenerateOnClose);
- NTKERNELAPI
- VOID
- NTAPI
- SeDeleteObjectAuditAlarm(
- IN PVOID Object,
- IN HANDLE Handle);
- NTKERNELAPI
- TOKEN_TYPE
- NTAPI
- SeTokenType(
- IN PACCESS_TOKEN Token);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- SeTokenIsAdmin(
- IN PACCESS_TOKEN Token);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- SeTokenIsRestricted(
- IN PACCESS_TOKEN Token);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- SeQueryAuthenticationIdToken(
- IN PACCESS_TOKEN Token,
- OUT PLUID AuthenticationId);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- SeQuerySessionIdToken(
- IN PACCESS_TOKEN Token,
- OUT PULONG SessionId);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- SeCreateClientSecurity(
- IN PETHREAD ClientThread,
- IN PSECURITY_QUALITY_OF_SERVICE ClientSecurityQos,
- IN BOOLEAN RemoteSession,
- OUT PSECURITY_CLIENT_CONTEXT ClientContext);
- NTKERNELAPI
- VOID
- NTAPI
- SeImpersonateClient(
- IN PSECURITY_CLIENT_CONTEXT ClientContext,
- IN PETHREAD ServerThread OPTIONAL);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- SeImpersonateClientEx(
- IN PSECURITY_CLIENT_CONTEXT ClientContext,
- IN PETHREAD ServerThread OPTIONAL);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- SeCreateClientSecurityFromSubjectContext(
- IN PSECURITY_SUBJECT_CONTEXT SubjectContext,
- IN PSECURITY_QUALITY_OF_SERVICE ClientSecurityQos,
- IN BOOLEAN ServerIsRemote,
- OUT PSECURITY_CLIENT_CONTEXT ClientContext);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- SeQuerySecurityDescriptorInfo(
- IN PSECURITY_INFORMATION SecurityInformation,
- OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
- IN OUT PULONG Length,
- IN OUT PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- SeSetSecurityDescriptorInfo(
- IN PVOID Object OPTIONAL,
- IN PSECURITY_INFORMATION SecurityInformation,
- IN PSECURITY_DESCRIPTOR SecurityDescriptor,
- IN OUT PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,
- IN POOL_TYPE PoolType,
- IN PGENERIC_MAPPING GenericMapping);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- SeSetSecurityDescriptorInfoEx(
- IN PVOID Object OPTIONAL,
- IN PSECURITY_INFORMATION SecurityInformation,
- IN PSECURITY_DESCRIPTOR ModificationDescriptor,
- IN OUT PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,
- IN ULONG AutoInheritFlags,
- IN POOL_TYPE PoolType,
- IN PGENERIC_MAPPING GenericMapping);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- SeAppendPrivileges(
- IN OUT PACCESS_STATE AccessState,
- IN PPRIVILEGE_SET Privileges);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- SeAuditingFileEvents(
- IN BOOLEAN AccessGranted,
- IN PSECURITY_DESCRIPTOR SecurityDescriptor);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- SeAuditingFileOrGlobalEvents(
- IN BOOLEAN AccessGranted,
- IN PSECURITY_DESCRIPTOR SecurityDescriptor,
- IN PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext);
- VOID
- NTAPI
- SeSetAccessStateGenericMapping(
- IN OUT PACCESS_STATE AccessState,
- IN PGENERIC_MAPPING GenericMapping);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- SeRegisterLogonSessionTerminatedRoutine(
- IN PSE_LOGON_SESSION_TERMINATED_ROUTINE CallbackRoutine);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- SeUnregisterLogonSessionTerminatedRoutine(
- IN PSE_LOGON_SESSION_TERMINATED_ROUTINE CallbackRoutine);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- SeMarkLogonSessionForTerminationNotification(
- IN PLUID LogonId);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- SeQueryInformationToken(
- IN PACCESS_TOKEN Token,
- IN TOKEN_INFORMATION_CLASS TokenInformationClass,
- OUT PVOID *TokenInformation);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
- #if (NTDDI_VERSION >= NTDDI_WIN2KSP3)
- NTKERNELAPI
- BOOLEAN
- NTAPI
- SeAuditingHardLinkEvents(
- IN BOOLEAN AccessGranted,
- IN PSECURITY_DESCRIPTOR SecurityDescriptor);
- #endif
- #if (NTDDI_VERSION >= NTDDI_WINXP)
- NTKERNELAPI
- NTSTATUS
- NTAPI
- SeFilterToken(
- IN PACCESS_TOKEN ExistingToken,
- IN ULONG Flags,
- IN PTOKEN_GROUPS SidsToDisable OPTIONAL,
- IN PTOKEN_PRIVILEGES PrivilegesToDelete OPTIONAL,
- IN PTOKEN_GROUPS RestrictedSids OPTIONAL,
- OUT PACCESS_TOKEN *FilteredToken);
- NTKERNELAPI
- VOID
- NTAPI
- SeAuditHardLinkCreation(
- IN PUNICODE_STRING FileName,
- IN PUNICODE_STRING LinkName,
- IN BOOLEAN bSuccess);
- #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
- #if (NTDDI_VERSION >= NTDDI_WINXPSP2)
- NTKERNELAPI
- BOOLEAN
- NTAPI
- SeAuditingFileEventsWithContext(
- IN BOOLEAN AccessGranted,
- IN PSECURITY_DESCRIPTOR SecurityDescriptor,
- IN PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext OPTIONAL);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- SeAuditingHardLinkEventsWithContext(
- IN BOOLEAN AccessGranted,
- IN PSECURITY_DESCRIPTOR SecurityDescriptor,
- IN PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext OPTIONAL);
- #endif
- #if (NTDDI_VERSION >= NTDDI_VISTA)
- NTKERNELAPI
- VOID
- NTAPI
- SeOpenObjectAuditAlarmWithTransaction(
- IN PUNICODE_STRING ObjectTypeName,
- IN PVOID Object OPTIONAL,
- IN PUNICODE_STRING AbsoluteObjectName OPTIONAL,
- IN PSECURITY_DESCRIPTOR SecurityDescriptor,
- IN PACCESS_STATE AccessState,
- IN BOOLEAN ObjectCreated,
- IN BOOLEAN AccessGranted,
- IN KPROCESSOR_MODE AccessMode,
- IN GUID *TransactionId OPTIONAL,
- OUT PBOOLEAN GenerateOnClose);
- NTKERNELAPI
- VOID
- NTAPI
- SeOpenObjectForDeleteAuditAlarmWithTransaction(
- IN PUNICODE_STRING ObjectTypeName,
- IN PVOID Object OPTIONAL,
- IN PUNICODE_STRING AbsoluteObjectName OPTIONAL,
- IN PSECURITY_DESCRIPTOR SecurityDescriptor,
- IN PACCESS_STATE AccessState,
- IN BOOLEAN ObjectCreated,
- IN BOOLEAN AccessGranted,
- IN KPROCESSOR_MODE AccessMode,
- IN GUID *TransactionId OPTIONAL,
- OUT PBOOLEAN GenerateOnClose);
- NTKERNELAPI
- VOID
- NTAPI
- SeExamineSacl(
- IN PACL Sacl,
- IN PACCESS_TOKEN Token,
- IN ACCESS_MASK DesiredAccess,
- IN BOOLEAN AccessGranted,
- OUT PBOOLEAN GenerateAudit,
- OUT PBOOLEAN GenerateAlarm);
- NTKERNELAPI
- VOID
- NTAPI
- SeDeleteObjectAuditAlarmWithTransaction(
- IN PVOID Object,
- IN HANDLE Handle,
- IN GUID *TransactionId OPTIONAL);
- NTKERNELAPI
- VOID
- NTAPI
- SeQueryTokenIntegrity(
- IN PACCESS_TOKEN Token,
- IN OUT PSID_AND_ATTRIBUTES IntegritySA);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- SeSetSessionIdToken(
- IN PACCESS_TOKEN Token,
- IN ULONG SessionId);
- NTKERNELAPI
- VOID
- NTAPI
- SeAuditHardLinkCreationWithTransaction(
- IN PUNICODE_STRING FileName,
- IN PUNICODE_STRING LinkName,
- IN BOOLEAN bSuccess,
- IN GUID *TransactionId OPTIONAL);
- NTKERNELAPI
- VOID
- NTAPI
- SeAuditTransactionStateChange(
- IN GUID *TransactionId,
- IN GUID *ResourceManagerId,
- IN ULONG NewTransactionState);
- #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
- #if (NTDDI_VERSION >= NTDDI_VISTA || (NTDDI_VERSION >= NTDDI_WINXPSP2 && NTDDI_VERSION < NTDDI_WS03))
- NTKERNELAPI
- BOOLEAN
- NTAPI
- SeTokenIsWriteRestricted(
- IN PACCESS_TOKEN Token);
- #endif
- #if (NTDDI_VERSION >= NTDDI_WIN7)
- NTKERNELAPI
- BOOLEAN
- NTAPI
- SeAuditingAnyFileEventsWithContext(
- IN PSECURITY_DESCRIPTOR SecurityDescriptor,
- IN PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext OPTIONAL);
- NTKERNELAPI
- VOID
- NTAPI
- SeExamineGlobalSacl(
- IN PUNICODE_STRING ObjectType,
- IN PACCESS_TOKEN Token,
- IN ACCESS_MASK DesiredAccess,
- IN BOOLEAN AccessGranted,
- IN OUT PBOOLEAN GenerateAudit,
- IN OUT PBOOLEAN GenerateAlarm OPTIONAL);
- NTKERNELAPI
- VOID
- NTAPI
- SeMaximumAuditMaskFromGlobalSacl(
- IN PUNICODE_STRING ObjectTypeName OPTIONAL,
- IN ACCESS_MASK GrantedAccess,
- IN PACCESS_TOKEN Token,
- IN OUT PACCESS_MASK AuditMask);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
- NTSTATUS
- NTAPI
- SeReportSecurityEventWithSubCategory(
- IN ULONG Flags,
- IN PUNICODE_STRING SourceName,
- IN PSID UserSid OPTIONAL,
- IN PSE_ADT_PARAMETER_ARRAY AuditParameters,
- IN ULONG AuditSubcategoryId);
- BOOLEAN
- NTAPI
- SeAccessCheckFromState(
- IN PSECURITY_DESCRIPTOR SecurityDescriptor,
- IN PTOKEN_ACCESS_INFORMATION PrimaryTokenInformation,
- IN PTOKEN_ACCESS_INFORMATION ClientTokenInformation OPTIONAL,
- IN ACCESS_MASK DesiredAccess,
- IN ACCESS_MASK PreviouslyGrantedAccess,
- OUT PPRIVILEGE_SET *Privileges OPTIONAL,
- IN PGENERIC_MAPPING GenericMapping,
- IN KPROCESSOR_MODE AccessMode,
- OUT PACCESS_MASK GrantedAccess,
- OUT PNTSTATUS AccessStatus);
- NTKERNELAPI
- VOID
- NTAPI
- SeFreePrivileges(
- IN PPRIVILEGE_SET Privileges);
- NTSTATUS
- NTAPI
- SeLocateProcessImageName(
- IN OUT PEPROCESS Process,
- OUT PUNICODE_STRING *pImageFileName);
- #define SeLengthSid( Sid ) \
- (8 + (4 * ((SID *)Sid)->SubAuthorityCount))
- #define SeDeleteClientSecurity(C) { \
- if (SeTokenType((C)->ClientToken) == TokenPrimary) { \
- PsDereferencePrimaryToken( (C)->ClientToken ); \
- } else { \
- PsDereferenceImpersonationToken( (C)->ClientToken ); \
- } \
- }
- #define SeStopImpersonatingClient() PsRevertToSelf()
- #define SeQuerySubjectContextToken( SubjectContext ) \
- ( ARGUMENT_PRESENT( \
- ((PSECURITY_SUBJECT_CONTEXT) SubjectContext)->ClientToken \
- ) ? \
- ((PSECURITY_SUBJECT_CONTEXT) SubjectContext)->ClientToken : \
- ((PSECURITY_SUBJECT_CONTEXT) SubjectContext)->PrimaryToken )
- extern NTKERNELAPI PSE_EXPORTS SeExports;
- /******************************************************************************
- * Process Manager Functions *
- ******************************************************************************/
- NTKERNELAPI
- NTSTATUS
- NTAPI
- PsLookupProcessByProcessId(
- IN HANDLE ProcessId,
- OUT PEPROCESS *Process);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- PsLookupThreadByThreadId(
- IN HANDLE UniqueThreadId,
- OUT PETHREAD *Thread);
- #if (NTDDI_VERSION >= NTDDI_WIN2K)
- NTKERNELAPI
- PACCESS_TOKEN
- NTAPI
- PsReferenceImpersonationToken(
- IN OUT PETHREAD Thread,
- OUT PBOOLEAN CopyOnOpen,
- OUT PBOOLEAN EffectiveOnly,
- OUT PSECURITY_IMPERSONATION_LEVEL ImpersonationLevel);
- NTKERNELAPI
- LARGE_INTEGER
- NTAPI
- PsGetProcessExitTime(VOID);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- PsIsThreadTerminating(
- IN PETHREAD Thread);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- PsImpersonateClient(
- IN OUT PETHREAD Thread,
- IN PACCESS_TOKEN Token,
- IN BOOLEAN CopyOnOpen,
- IN BOOLEAN EffectiveOnly,
- IN SECURITY_IMPERSONATION_LEVEL ImpersonationLevel);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- PsDisableImpersonation(
- IN OUT PETHREAD Thread,
- IN OUT PSE_IMPERSONATION_STATE ImpersonationState);
- NTKERNELAPI
- VOID
- NTAPI
- PsRestoreImpersonation(
- IN PETHREAD Thread,
- IN PSE_IMPERSONATION_STATE ImpersonationState);
- NTKERNELAPI
- VOID
- NTAPI
- PsRevertToSelf(VOID);
- NTKERNELAPI
- VOID
- NTAPI
- PsChargePoolQuota(
- IN PEPROCESS Process,
- IN POOL_TYPE PoolType,
- IN ULONG_PTR Amount);
- NTKERNELAPI
- VOID
- NTAPI
- PsReturnPoolQuota(
- IN PEPROCESS Process,
- IN POOL_TYPE PoolType,
- IN ULONG_PTR Amount);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- PsAssignImpersonationToken(
- IN PETHREAD Thread,
- IN HANDLE Token OPTIONAL);
- NTKERNELAPI
- HANDLE
- NTAPI
- PsReferencePrimaryToken(
- IN OUT PEPROCESS Process);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
- #if (NTDDI_VERSION >= NTDDI_WINXP)
- NTKERNELAPI
- VOID
- NTAPI
- PsDereferencePrimaryToken(
- IN PACCESS_TOKEN PrimaryToken);
- NTKERNELAPI
- VOID
- NTAPI
- PsDereferenceImpersonationToken(
- IN PACCESS_TOKEN ImpersonationToken);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- PsChargeProcessPoolQuota(
- IN PEPROCESS Process,
- IN POOL_TYPE PoolType,
- IN ULONG_PTR Amount);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- PsIsSystemThread(
- IN PETHREAD Thread);
- #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
- /******************************************************************************
- * I/O Manager Functions *
- ******************************************************************************/
- #define IoIsFileOpenedExclusively(FileObject) ( \
- (BOOLEAN) !( \
- (FileObject)->SharedRead || \
- (FileObject)->SharedWrite || \
- (FileObject)->SharedDelete \
- ) \
- )
- #if (NTDDI_VERSION == NTDDI_WIN2K)
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoRegisterFsRegistrationChangeEx(
- IN PDRIVER_OBJECT DriverObject,
- IN PDRIVER_FS_NOTIFICATION DriverNotificationRoutine);
- #endif
- #if (NTDDI_VERSION >= NTDDI_WIN2K)
- NTKERNELAPI
- VOID
- NTAPI
- IoAcquireVpbSpinLock(
- OUT PKIRQL Irql);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoCheckDesiredAccess(
- IN OUT PACCESS_MASK DesiredAccess,
- IN ACCESS_MASK GrantedAccess);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoCheckEaBufferValidity(
- IN PFILE_FULL_EA_INFORMATION EaBuffer,
- IN ULONG EaLength,
- OUT PULONG ErrorOffset);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoCheckFunctionAccess(
- IN ACCESS_MASK GrantedAccess,
- IN UCHAR MajorFunction,
- IN UCHAR MinorFunction,
- IN ULONG IoControlCode,
- IN PVOID Argument1 OPTIONAL,
- IN PVOID Argument2 OPTIONAL);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoCheckQuerySetFileInformation(
- IN FILE_INFORMATION_CLASS FileInformationClass,
- IN ULONG Length,
- IN BOOLEAN SetOperation);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoCheckQuerySetVolumeInformation(
- IN FS_INFORMATION_CLASS FsInformationClass,
- IN ULONG Length,
- IN BOOLEAN SetOperation);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoCheckQuotaBufferValidity(
- IN PFILE_QUOTA_INFORMATION QuotaBuffer,
- IN ULONG QuotaLength,
- OUT PULONG ErrorOffset);
- NTKERNELAPI
- PFILE_OBJECT
- NTAPI
- IoCreateStreamFileObject(
- IN PFILE_OBJECT FileObject OPTIONAL,
- IN PDEVICE_OBJECT DeviceObject OPTIONAL);
- NTKERNELAPI
- PFILE_OBJECT
- NTAPI
- IoCreateStreamFileObjectLite(
- IN PFILE_OBJECT FileObject OPTIONAL,
- IN PDEVICE_OBJECT DeviceObject OPTIONAL);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- IoFastQueryNetworkAttributes(
- IN POBJECT_ATTRIBUTES ObjectAttributes,
- IN ACCESS_MASK DesiredAccess,
- IN ULONG OpenOptions,
- OUT PIO_STATUS_BLOCK IoStatus,
- OUT PFILE_NETWORK_OPEN_INFORMATION Buffer);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoPageRead(
- IN PFILE_OBJECT FileObject,
- IN PMDL Mdl,
- IN PLARGE_INTEGER Offset,
- IN PKEVENT Event,
- OUT PIO_STATUS_BLOCK IoStatusBlock);
- NTKERNELAPI
- PDEVICE_OBJECT
- NTAPI
- IoGetBaseFileSystemDeviceObject(
- IN PFILE_OBJECT FileObject);
- NTKERNELAPI
- PCONFIGURATION_INFORMATION
- NTAPI
- IoGetConfigurationInformation(VOID);
- NTKERNELAPI
- ULONG
- NTAPI
- IoGetRequestorProcessId(
- IN PIRP Irp);
- NTKERNELAPI
- PEPROCESS
- NTAPI
- IoGetRequestorProcess(
- IN PIRP Irp);
- NTKERNELAPI
- PIRP
- NTAPI
- IoGetTopLevelIrp(VOID);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- IoIsOperationSynchronous(
- IN PIRP Irp);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- IoIsSystemThread(
- IN PETHREAD Thread);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- IoIsValidNameGraftingBuffer(
- IN PIRP Irp,
- IN PREPARSE_DATA_BUFFER ReparseBuffer);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoQueryFileInformation(
- IN PFILE_OBJECT FileObject,
- IN FILE_INFORMATION_CLASS FileInformationClass,
- IN ULONG Length,
- OUT PVOID FileInformation,
- OUT PULONG ReturnedLength);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoQueryVolumeInformation(
- IN PFILE_OBJECT FileObject,
- IN FS_INFORMATION_CLASS FsInformationClass,
- IN ULONG Length,
- OUT PVOID FsInformation,
- OUT PULONG ReturnedLength);
- NTKERNELAPI
- VOID
- NTAPI
- IoQueueThreadIrp(
- IN PIRP Irp);
- NTKERNELAPI
- VOID
- NTAPI
- IoRegisterFileSystem(
- IN PDEVICE_OBJECT DeviceObject);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoRegisterFsRegistrationChange(
- IN PDRIVER_OBJECT DriverObject,
- IN PDRIVER_FS_NOTIFICATION DriverNotificationRoutine);
- NTKERNELAPI
- VOID
- NTAPI
- IoReleaseVpbSpinLock(
- IN KIRQL Irql);
- NTKERNELAPI
- VOID
- NTAPI
- IoSetDeviceToVerify(
- IN PETHREAD Thread,
- IN PDEVICE_OBJECT DeviceObject OPTIONAL);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoSetInformation(
- IN PFILE_OBJECT FileObject,
- IN FILE_INFORMATION_CLASS FileInformationClass,
- IN ULONG Length,
- IN PVOID FileInformation);
- NTKERNELAPI
- VOID
- NTAPI
- IoSetTopLevelIrp(
- IN PIRP Irp OPTIONAL);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoSynchronousPageWrite(
- IN PFILE_OBJECT FileObject,
- IN PMDL Mdl,
- IN PLARGE_INTEGER FileOffset,
- IN PKEVENT Event,
- OUT PIO_STATUS_BLOCK IoStatusBlock);
- NTKERNELAPI
- PEPROCESS
- NTAPI
- IoThreadToProcess(
- IN PETHREAD Thread);
- NTKERNELAPI
- VOID
- NTAPI
- IoUnregisterFileSystem(
- IN PDEVICE_OBJECT DeviceObject);
- NTKERNELAPI
- VOID
- NTAPI
- IoUnregisterFsRegistrationChange(
- IN PDRIVER_OBJECT DriverObject,
- IN PDRIVER_FS_NOTIFICATION DriverNotificationRoutine);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoVerifyVolume(
- IN PDEVICE_OBJECT DeviceObject,
- IN BOOLEAN AllowRawMount);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoGetRequestorSessionId(
- IN PIRP Irp,
- OUT PULONG pSessionId);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
- #if (NTDDI_VERSION >= NTDDI_WINXP)
- NTKERNELAPI
- PFILE_OBJECT
- NTAPI
- IoCreateStreamFileObjectEx(
- IN PFILE_OBJECT FileObject OPTIONAL,
- IN PDEVICE_OBJECT DeviceObject OPTIONAL,
- OUT PHANDLE FileObjectHandle OPTIONAL);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoQueryFileDosDeviceName(
- IN PFILE_OBJECT FileObject,
- OUT POBJECT_NAME_INFORMATION *ObjectNameInformation);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoEnumerateDeviceObjectList(
- IN PDRIVER_OBJECT DriverObject,
- OUT PDEVICE_OBJECT *DeviceObjectList,
- IN ULONG DeviceObjectListSize,
- OUT PULONG ActualNumberDeviceObjects);
- NTKERNELAPI
- PDEVICE_OBJECT
- NTAPI
- IoGetLowerDeviceObject(
- IN PDEVICE_OBJECT DeviceObject);
- NTKERNELAPI
- PDEVICE_OBJECT
- NTAPI
- IoGetDeviceAttachmentBaseRef(
- IN PDEVICE_OBJECT DeviceObject);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoGetDiskDeviceObject(
- IN PDEVICE_OBJECT FileSystemDeviceObject,
- OUT PDEVICE_OBJECT *DiskDeviceObject);
- #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
- #if (NTDDI_VERSION >= NTDDI_WS03SP1)
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoEnumerateRegisteredFiltersList(
- OUT PDRIVER_OBJECT *DriverObjectList,
- IN ULONG DriverObjectListSize,
- OUT PULONG ActualNumberDriverObjects);
- #endif /* (NTDDI_VERSION >= NTDDI_WS03SP1) */
- #if (NTDDI_VERSION >= NTDDI_VISTA)
- FORCEINLINE
- VOID
- NTAPI
- IoInitializePriorityInfo(
- IN PIO_PRIORITY_INFO PriorityInfo)
- {
- PriorityInfo->Size = sizeof(IO_PRIORITY_INFO);
- PriorityInfo->ThreadPriority = 0xffff;
- PriorityInfo->IoPriority = IoPriorityNormal;
- PriorityInfo->PagePriority = 0;
- }
- #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
- #if (NTDDI_VERSION >= NTDDI_WIN7)
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoRegisterFsRegistrationChangeMountAware(
- IN PDRIVER_OBJECT DriverObject,
- IN PDRIVER_FS_NOTIFICATION DriverNotificationRoutine,
- IN BOOLEAN SynchronizeWithMounts);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoReplaceFileObjectName(
- IN PFILE_OBJECT FileObject,
- IN PWSTR NewFileName,
- IN USHORT FileNameLength);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
- #define PO_CB_SYSTEM_POWER_POLICY 0
- #define PO_CB_AC_STATUS 1
- #define PO_CB_BUTTON_COLLISION 2
- #define PO_CB_SYSTEM_STATE_LOCK 3
- #define PO_CB_LID_SWITCH_STATE 4
- #define PO_CB_PROCESSOR_POWER_POLICY 5
- #if (NTDDI_VERSION >= NTDDI_WINXP)
- NTKERNELAPI
- NTSTATUS
- NTAPI
- PoQueueShutdownWorkItem(
- IN OUT PWORK_QUEUE_ITEM WorkItem);
- #endif
- /******************************************************************************
- * Memory manager Types *
- ******************************************************************************/
- typedef enum _MMFLUSH_TYPE {
- MmFlushForDelete,
- MmFlushForWrite
- } MMFLUSH_TYPE;
- typedef struct _READ_LIST {
- PFILE_OBJECT FileObject;
- ULONG NumberOfEntries;
- LOGICAL IsImage;
- FILE_SEGMENT_ELEMENT List[ANYSIZE_ARRAY];
- } READ_LIST, *PREAD_LIST;
- #if (NTDDI_VERSION >= NTDDI_WINXP)
- typedef union _MM_PREFETCH_FLAGS {
- struct {
- ULONG Priority : SYSTEM_PAGE_PRIORITY_BITS;
- ULONG RepurposePriority : SYSTEM_PAGE_PRIORITY_BITS;
- } Flags;
- ULONG AllFlags;
- } MM_PREFETCH_FLAGS, *PMM_PREFETCH_FLAGS;
- #define MM_PREFETCH_FLAGS_MASK ((1 << (2*SYSTEM_PAGE_PRIORITY_BITS)) - 1)
- #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
- #define HEAP_NO_SERIALIZE 0x00000001
- #define HEAP_GROWABLE 0x00000002
- #define HEAP_GENERATE_EXCEPTIONS 0x00000004
- #define HEAP_ZERO_MEMORY 0x00000008
- #define HEAP_REALLOC_IN_PLACE_ONLY 0x00000010
- #define HEAP_TAIL_CHECKING_ENABLED 0x00000020
- #define HEAP_FREE_CHECKING_ENABLED 0x00000040
- #define HEAP_DISABLE_COALESCE_ON_FREE 0x00000080
- #define HEAP_CREATE_ALIGN_16 0x00010000
- #define HEAP_CREATE_ENABLE_TRACING 0x00020000
- #define HEAP_CREATE_ENABLE_EXECUTE 0x00040000
- #define HEAP_SETTABLE_USER_VALUE 0x00000100
- #define HEAP_SETTABLE_USER_FLAG1 0x00000200
- #define HEAP_SETTABLE_USER_FLAG2 0x00000400
- #define HEAP_SETTABLE_USER_FLAG3 0x00000800
- #define HEAP_SETTABLE_USER_FLAGS 0x00000E00
- #define HEAP_CLASS_0 0x00000000
- #define HEAP_CLASS_1 0x00001000
- #define HEAP_CLASS_2 0x00002000
- #define HEAP_CLASS_3 0x00003000
- #define HEAP_CLASS_4 0x00004000
- #define HEAP_CLASS_5 0x00005000
- #define HEAP_CLASS_6 0x00006000
- #define HEAP_CLASS_7 0x00007000
- #define HEAP_CLASS_8 0x00008000
- #define HEAP_CLASS_MASK 0x0000F000
- #define HEAP_MAXIMUM_TAG 0x0FFF
- #define HEAP_GLOBAL_TAG 0x0800
- #define HEAP_PSEUDO_TAG_FLAG 0x8000
- #define HEAP_TAG_SHIFT 18
- #define HEAP_TAG_MASK (HEAP_MAXIMUM_TAG << HEAP_TAG_SHIFT)
- #define HEAP_CREATE_VALID_MASK (HEAP_NO_SERIALIZE | \
- HEAP_GROWABLE | \
- HEAP_GENERATE_EXCEPTIONS | \
- HEAP_ZERO_MEMORY | \
- HEAP_REALLOC_IN_PLACE_ONLY | \
- HEAP_TAIL_CHECKING_ENABLED | \
- HEAP_FREE_CHECKING_ENABLED | \
- HEAP_DISABLE_COALESCE_ON_FREE | \
- HEAP_CLASS_MASK | \
- HEAP_CREATE_ALIGN_16 | \
- HEAP_CREATE_ENABLE_TRACING | \
- HEAP_CREATE_ENABLE_EXECUTE)
- /******************************************************************************
- * Memory manager Functions *
- ******************************************************************************/
- FORCEINLINE
- ULONG
- HEAP_MAKE_TAG_FLAGS(
- IN ULONG TagBase,
- IN ULONG Tag)
- {
- //__assume_bound(TagBase); // FIXME
- return ((ULONG)((TagBase) + ((Tag) << HEAP_TAG_SHIFT)));
- }
- #if (NTDDI_VERSION >= NTDDI_WIN2K)
- NTKERNELAPI
- BOOLEAN
- NTAPI
- MmIsRecursiveIoFault(
- VOID);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- MmForceSectionClosed(
- IN PSECTION_OBJECT_POINTERS SectionObjectPointer,
- IN BOOLEAN DelayClose);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- MmFlushImageSection(
- IN PSECTION_OBJECT_POINTERS SectionObjectPointer,
- IN MMFLUSH_TYPE FlushType);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- MmCanFileBeTruncated(
- IN PSECTION_OBJECT_POINTERS SectionObjectPointer,
- IN PLARGE_INTEGER NewFileSize OPTIONAL);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- MmSetAddressRangeModified(
- IN PVOID Address,
- IN SIZE_T Length);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
- #if (NTDDI_VERSION >= NTDDI_WINXP)
- NTKERNELAPI
- NTSTATUS
- NTAPI
- MmPrefetchPages(
- IN ULONG NumberOfLists,
- IN PREAD_LIST *ReadLists);
- #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
- #if (NTDDI_VERSION >= NTDDI_VISTA)
- NTKERNELAPI
- ULONG
- NTAPI
- MmDoesFileHaveUserWritableReferences(
- IN PSECTION_OBJECT_POINTERS SectionPointer);
- #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
- #if (NTDDI_VERSION >= NTDDI_WIN2K)
- NTKERNELAPI
- NTSTATUS
- NTAPI
- ObInsertObject(
- IN PVOID Object,
- IN OUT PACCESS_STATE PassedAccessState OPTIONAL,
- IN ACCESS_MASK DesiredAccess OPTIONAL,
- IN ULONG ObjectPointerBias,
- OUT PVOID *NewObject OPTIONAL,
- OUT PHANDLE Handle OPTIONAL);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- ObOpenObjectByPointer(
- IN PVOID Object,
- IN ULONG HandleAttributes,
- IN PACCESS_STATE PassedAccessState OPTIONAL,
- IN ACCESS_MASK DesiredAccess OPTIONAL,
- IN POBJECT_TYPE ObjectType OPTIONAL,
- IN KPROCESSOR_MODE AccessMode,
- OUT PHANDLE Handle);
- NTKERNELAPI
- VOID
- NTAPI
- ObMakeTemporaryObject(
- IN PVOID Object);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- ObQueryNameString(
- IN PVOID Object,
- OUT POBJECT_NAME_INFORMATION ObjectNameInfo OPTIONAL,
- IN ULONG Length,
- OUT PULONG ReturnLength);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- ObQueryObjectAuditingByHandle(
- IN HANDLE Handle,
- OUT PBOOLEAN GenerateOnClose);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
- #if (NTDDI_VERSION >= NTDDI_VISTA)
- NTKERNELAPI
- BOOLEAN
- NTAPI
- ObIsKernelHandle(
- IN HANDLE Handle);
- #endif
- #if (NTDDI_VERSION >= NTDDI_WIN7)
- NTKERNELAPI
- NTSTATUS
- NTAPI
- ObOpenObjectByPointerWithTag(
- IN PVOID Object,
- IN ULONG HandleAttributes,
- IN PACCESS_STATE PassedAccessState OPTIONAL,
- IN ACCESS_MASK DesiredAccess,
- IN POBJECT_TYPE ObjectType OPTIONAL,
- IN KPROCESSOR_MODE AccessMode,
- IN ULONG Tag,
- OUT PHANDLE Handle);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
- /* FSRTL Types */
- typedef ULONG LBN;
- typedef LBN *PLBN;
- typedef ULONG VBN;
- typedef VBN *PVBN;
- #define FSRTL_COMMON_FCB_HEADER_LAYOUT \
- CSHORT NodeTypeCode; \
- CSHORT NodeByteSize; \
- UCHAR Flags; \
- UCHAR IsFastIoPossible; \
- UCHAR Flags2; \
- UCHAR Reserved:4; \
- UCHAR Version:4; \
- PERESOURCE Resource; \
- PERESOURCE PagingIoResource; \
- LARGE_INTEGER AllocationSize; \
- LARGE_INTEGER FileSize; \
- LARGE_INTEGER ValidDataLength;
- typedef struct _FSRTL_COMMON_FCB_HEADER {
- FSRTL_COMMON_FCB_HEADER_LAYOUT
- } FSRTL_COMMON_FCB_HEADER, *PFSRTL_COMMON_FCB_HEADER;
- #ifdef __cplusplus
- typedef struct _FSRTL_ADVANCED_FCB_HEADER:FSRTL_COMMON_FCB_HEADER {
- #else /* __cplusplus */
- typedef struct _FSRTL_ADVANCED_FCB_HEADER {
- FSRTL_COMMON_FCB_HEADER_LAYOUT
- #endif /* __cplusplus */
- PFAST_MUTEX FastMutex;
- LIST_ENTRY FilterContexts;
- #if (NTDDI_VERSION >= NTDDI_VISTA)
- EX_PUSH_LOCK PushLock;
- PVOID *FileContextSupportPointer;
- #endif
- } FSRTL_ADVANCED_FCB_HEADER, *PFSRTL_ADVANCED_FCB_HEADER;
- #define FSRTL_FCB_HEADER_V0 (0x00)
- #define FSRTL_FCB_HEADER_V1 (0x01)
- #define FSRTL_FLAG_FILE_MODIFIED (0x01)
- #define FSRTL_FLAG_FILE_LENGTH_CHANGED (0x02)
- #define FSRTL_FLAG_LIMIT_MODIFIED_PAGES (0x04)
- #define FSRTL_FLAG_ACQUIRE_MAIN_RSRC_EX (0x08)
- #define FSRTL_FLAG_ACQUIRE_MAIN_RSRC_SH (0x10)
- #define FSRTL_FLAG_USER_MAPPED_FILE (0x20)
- #define FSRTL_FLAG_ADVANCED_HEADER (0x40)
- #define FSRTL_FLAG_EOF_ADVANCE_ACTIVE (0x80)
- #define FSRTL_FLAG2_DO_MODIFIED_WRITE (0x01)
- #define FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS (0x02)
- #define FSRTL_FLAG2_PURGE_WHEN_MAPPED (0x04)
- #define FSRTL_FLAG2_IS_PAGING_FILE (0x08)
- #define FSRTL_FSP_TOP_LEVEL_IRP (0x01)
- #define FSRTL_CACHE_TOP_LEVEL_IRP (0x02)
- #define FSRTL_MOD_WRITE_TOP_LEVEL_IRP (0x03)
- #define FSRTL_FAST_IO_TOP_LEVEL_IRP (0x04)
- #define FSRTL_NETWORK1_TOP_LEVEL_IRP ((LONG_PTR)0x05)
- #define FSRTL_NETWORK2_TOP_LEVEL_IRP ((LONG_PTR)0x06)
- #define FSRTL_MAX_TOP_LEVEL_IRP_FLAG ((LONG_PTR)0xFFFF)
- typedef struct _FSRTL_AUXILIARY_BUFFER {
- PVOID Buffer;
- ULONG Length;
- ULONG Flags;
- PMDL Mdl;
- } FSRTL_AUXILIARY_BUFFER, *PFSRTL_AUXILIARY_BUFFER;
- #define FSRTL_AUXILIARY_FLAG_DEALLOCATE 0x00000001
- typedef enum _FSRTL_COMPARISON_RESULT {
- LessThan = -1,
- EqualTo = 0,
- GreaterThan = 1
- } FSRTL_COMPARISON_RESULT;
- #define FSRTL_FAT_LEGAL 0x01
- #define FSRTL_HPFS_LEGAL 0x02
- #define FSRTL_NTFS_LEGAL 0x04
- #define FSRTL_WILD_CHARACTER 0x08
- #define FSRTL_OLE_LEGAL 0x10
- #define FSRTL_NTFS_STREAM_LEGAL (FSRTL_NTFS_LEGAL | FSRTL_OLE_LEGAL)
- #define FSRTL_VOLUME_DISMOUNT 1
- #define FSRTL_VOLUME_DISMOUNT_FAILED 2
- #define FSRTL_VOLUME_LOCK 3
- #define FSRTL_VOLUME_LOCK_FAILED 4
- #define FSRTL_VOLUME_UNLOCK 5
- #define FSRTL_VOLUME_MOUNT 6
- #define FSRTL_VOLUME_NEEDS_CHKDSK 7
- #define FSRTL_VOLUME_WORM_NEAR_FULL 8
- #define FSRTL_VOLUME_WEARING_OUT 9
- #define FSRTL_VOLUME_FORCED_CLOSED 10
- #define FSRTL_VOLUME_INFO_MAKE_COMPAT 11
- #define FSRTL_VOLUME_PREPARING_EJECT 12
- #define FSRTL_VOLUME_CHANGE_SIZE 13
- #define FSRTL_VOLUME_BACKGROUND_FORMAT 14
- typedef VOID
- (NTAPI *PFSRTL_STACK_OVERFLOW_ROUTINE) (
- IN PVOID Context,
- IN PKEVENT Event);
- #if (NTDDI_VERSION >= NTDDI_VISTA)
- #define FSRTL_UNC_PROVIDER_FLAGS_MAILSLOTS_SUPPORTED 0x00000001
- #define FSRTL_UNC_PROVIDER_FLAGS_CSC_ENABLED 0x00000002
- #define FSRTL_UNC_PROVIDER_FLAGS_DOMAIN_SVC_AWARE 0x00000004
- #define FSRTL_ALLOCATE_ECPLIST_FLAG_CHARGE_QUOTA 0x00000001
- #define FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA 0x00000001
- #define FSRTL_ALLOCATE_ECP_FLAG_NONPAGED_POOL 0x00000002
- #define FSRTL_ECP_LOOKASIDE_FLAG_NONPAGED_POOL 0x00000002
- #define FSRTL_VIRTDISK_FULLY_ALLOCATED 0x00000001
- #define FSRTL_VIRTDISK_NO_DRIVE_LETTER 0x00000002
- typedef struct _FSRTL_MUP_PROVIDER_INFO_LEVEL_1 {
- ULONG32 ProviderId;
- } FSRTL_MUP_PROVIDER_INFO_LEVEL_1, *PFSRTL_MUP_PROVIDER_INFO_LEVEL_1;
- typedef struct _FSRTL_MUP_PROVIDER_INFO_LEVEL_2 {
- ULONG32 ProviderId;
- UNICODE_STRING ProviderName;
- } FSRTL_MUP_PROVIDER_INFO_LEVEL_2, *PFSRTL_MUP_PROVIDER_INFO_LEVEL_2;
- typedef VOID
- (*PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK) (
- IN OUT PVOID EcpContext,
- IN LPCGUID EcpType);
- typedef struct _ECP_LIST ECP_LIST, *PECP_LIST;
- typedef ULONG FSRTL_ALLOCATE_ECPLIST_FLAGS;
- typedef ULONG FSRTL_ALLOCATE_ECP_FLAGS;
- typedef ULONG FSRTL_ECP_LOOKASIDE_FLAGS;
- typedef enum _FSRTL_CHANGE_BACKING_TYPE {
- ChangeDataControlArea,
- ChangeImageControlArea,
- ChangeSharedCacheMap
- } FSRTL_CHANGE_BACKING_TYPE, *PFSRTL_CHANGE_BACKING_TYPE;
- #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
- typedef struct _FSRTL_PER_FILE_CONTEXT {
- LIST_ENTRY Links;
- PVOID OwnerId;
- PVOID InstanceId;
- PFREE_FUNCTION FreeCallback;
- } FSRTL_PER_FILE_CONTEXT, *PFSRTL_PER_FILE_CONTEXT;
- typedef struct _FSRTL_PER_STREAM_CONTEXT {
- LIST_ENTRY Links;
- PVOID OwnerId;
- PVOID InstanceId;
- PFREE_FUNCTION FreeCallback;
- } FSRTL_PER_STREAM_CONTEXT, *PFSRTL_PER_STREAM_CONTEXT;
- #if (NTDDI_VERSION >= NTDDI_WIN2K)
- typedef VOID
- (*PFN_FSRTLTEARDOWNPERSTREAMCONTEXTS) (
- IN PFSRTL_ADVANCED_FCB_HEADER AdvancedHeader);
- #endif
- typedef struct _FSRTL_PER_FILEOBJECT_CONTEXT {
- LIST_ENTRY Links;
- PVOID OwnerId;
- PVOID InstanceId;
- } FSRTL_PER_FILEOBJECT_CONTEXT, *PFSRTL_PER_FILEOBJECT_CONTEXT;
- #define FSRTL_CC_FLUSH_ERROR_FLAG_NO_HARD_ERROR 0x1
- #define FSRTL_CC_FLUSH_ERROR_FLAG_NO_LOG_ENTRY 0x2
- typedef NTSTATUS
- (NTAPI *PCOMPLETE_LOCK_IRP_ROUTINE) (
- IN PVOID Context,
- IN PIRP Irp);
- typedef struct _FILE_LOCK_INFO {
- LARGE_INTEGER StartingByte;
- LARGE_INTEGER Length;
- BOOLEAN ExclusiveLock;
- ULONG Key;
- PFILE_OBJECT FileObject;
- PVOID ProcessId;
- LARGE_INTEGER EndingByte;
- } FILE_LOCK_INFO, *PFILE_LOCK_INFO;
- typedef VOID
- (NTAPI *PUNLOCK_ROUTINE) (
- IN PVOID Context,
- IN PFILE_LOCK_INFO FileLockInfo);
- typedef struct _FILE_LOCK {
- PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine;
- PUNLOCK_ROUTINE UnlockRoutine;
- BOOLEAN FastIoIsQuestionable;
- BOOLEAN SpareC[3];
- PVOID LockInformation;
- FILE_LOCK_INFO LastReturnedLockInfo;
- PVOID LastReturnedLock;
- LONG volatile LockRequestsInProgress;
- } FILE_LOCK, *PFILE_LOCK;
- typedef struct _TUNNEL {
- FAST_MUTEX Mutex;
- PRTL_SPLAY_LINKS Cache;
- LIST_ENTRY TimerQueue;
- USHORT NumEntries;
- } TUNNEL, *PTUNNEL;
- typedef struct _BASE_MCB {
- ULONG MaximumPairCount;
- ULONG PairCount;
- USHORT PoolType;
- USHORT Flags;
- PVOID Mapping;
- } BASE_MCB, *PBASE_MCB;
- typedef struct _LARGE_MCB {
- PKGUARDED_MUTEX GuardedMutex;
- BASE_MCB BaseMcb;
- } LARGE_MCB, *PLARGE_MCB;
- #define MCB_FLAG_RAISE_ON_ALLOCATION_FAILURE 1
- typedef struct _MCB {
- LARGE_MCB DummyFieldThatSizesThisStructureCorrectly;
- } MCB, *PMCB;
- typedef enum _FAST_IO_POSSIBLE {
- FastIoIsNotPossible = 0,
- FastIoIsPossible,
- FastIoIsQuestionable
- } FAST_IO_POSSIBLE;
- typedef struct _EOF_WAIT_BLOCK {
- LIST_ENTRY EofWaitLinks;
- KEVENT Event;
- } EOF_WAIT_BLOCK, *PEOF_WAIT_BLOCK;
- typedef PVOID OPLOCK, *POPLOCK;
- typedef VOID
- (NTAPI *POPLOCK_WAIT_COMPLETE_ROUTINE) (
- IN PVOID Context,
- IN PIRP Irp);
- typedef VOID
- (NTAPI *POPLOCK_FS_PREPOST_IRP) (
- IN PVOID Context,
- IN PIRP Irp);
- #if (NTDDI_VERSION >= NTDDI_VISTASP1)
- #define OPLOCK_FLAG_COMPLETE_IF_OPLOCKED 0x00000001
- #endif
- #if (NTDDI_VERSION >= NTDDI_WIN7)
- #define OPLOCK_FLAG_OPLOCK_KEY_CHECK_ONLY 0x00000002
- #define OPLOCK_FLAG_BACK_OUT_ATOMIC_OPLOCK 0x00000004
- #define OPLOCK_FLAG_IGNORE_OPLOCK_KEYS 0x00000008
- #define OPLOCK_FSCTRL_FLAG_ALL_KEYS_MATCH 0x00000001
- #endif
- #if (NTDDI_VERSION >= NTDDI_WIN7)
- typedef struct _OPLOCK_KEY_ECP_CONTEXT {
- GUID OplockKey;
- ULONG Reserved;
- } OPLOCK_KEY_ECP_CONTEXT, *POPLOCK_KEY_ECP_CONTEXT;
- DEFINE_GUID(GUID_ECP_OPLOCK_KEY, 0x48850596, 0x3050, 0x4be7, 0x98, 0x63, 0xfe, 0xc3, 0x50, 0xce, 0x8d, 0x7f);
- #endif
- typedef PVOID PNOTIFY_SYNC;
- #if (NTDDI_VERSION >= NTDDI_WIN7)
- typedef struct _ECP_HEADER ECP_HEADER, *PECP_HEADER;
- #endif
- typedef BOOLEAN
- (NTAPI *PCHECK_FOR_TRAVERSE_ACCESS) (
- IN PVOID NotifyContext,
- IN PVOID TargetContext OPTIONAL,
- IN PSECURITY_SUBJECT_CONTEXT SubjectContext);
- typedef BOOLEAN
- (NTAPI *PFILTER_REPORT_CHANGE) (
- IN PVOID NotifyContext,
- IN PVOID FilterContext);
- /* FSRTL Functions */
- #define FsRtlEnterFileSystem KeEnterCriticalRegion
- #define FsRtlExitFileSystem KeLeaveCriticalRegion
- #if (NTDDI_VERSION >= NTDDI_WIN2K)
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlCopyRead(
- IN PFILE_OBJECT FileObject,
- IN PLARGE_INTEGER FileOffset,
- IN ULONG Length,
- IN BOOLEAN Wait,
- IN ULONG LockKey,
- OUT PVOID Buffer,
- OUT PIO_STATUS_BLOCK IoStatus,
- IN PDEVICE_OBJECT DeviceObject);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlCopyWrite(
- IN PFILE_OBJECT FileObject,
- IN PLARGE_INTEGER FileOffset,
- IN ULONG Length,
- IN BOOLEAN Wait,
- IN ULONG LockKey,
- IN PVOID Buffer,
- OUT PIO_STATUS_BLOCK IoStatus,
- IN PDEVICE_OBJECT DeviceObject);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlMdlReadDev(
- IN PFILE_OBJECT FileObject,
- IN PLARGE_INTEGER FileOffset,
- IN ULONG Length,
- IN ULONG LockKey,
- OUT PMDL *MdlChain,
- OUT PIO_STATUS_BLOCK IoStatus,
- IN PDEVICE_OBJECT DeviceObject OPTIONAL);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlMdlReadCompleteDev(
- IN PFILE_OBJECT FileObject,
- IN PMDL MdlChain,
- IN PDEVICE_OBJECT DeviceObject OPTIONAL);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlPrepareMdlWriteDev(
- IN PFILE_OBJECT FileObject,
- IN PLARGE_INTEGER FileOffset,
- IN ULONG Length,
- IN ULONG LockKey,
- OUT PMDL *MdlChain,
- OUT PIO_STATUS_BLOCK IoStatus,
- IN PDEVICE_OBJECT DeviceObject);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlMdlWriteCompleteDev(
- IN PFILE_OBJECT FileObject,
- IN PLARGE_INTEGER FileOffset,
- IN PMDL MdlChain,
- IN PDEVICE_OBJECT DeviceObject);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlAcquireFileExclusive(
- IN PFILE_OBJECT FileObject);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlReleaseFile(
- IN PFILE_OBJECT FileObject);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlGetFileSize(
- IN PFILE_OBJECT FileObject,
- OUT PLARGE_INTEGER FileSize);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlIsTotalDeviceFailure(
- IN NTSTATUS Status);
- NTKERNELAPI
- PFILE_LOCK
- NTAPI
- FsRtlAllocateFileLock(
- IN PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine OPTIONAL,
- IN PUNLOCK_ROUTINE UnlockRoutine OPTIONAL);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlFreeFileLock(
- IN PFILE_LOCK FileLock);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlInitializeFileLock(
- IN PFILE_LOCK FileLock,
- IN PCOMPLETE_LOCK_IRP_ROUTINE CompleteLockIrpRoutine OPTIONAL,
- IN PUNLOCK_ROUTINE UnlockRoutine OPTIONAL);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlUninitializeFileLock(
- IN PFILE_LOCK FileLock);
- /*
- FsRtlProcessFileLock:
- ret:
- -STATUS_INVALID_DEVICE_REQUEST
- -STATUS_RANGE_NOT_LOCKED from unlock routines.
- -STATUS_PENDING, STATUS_LOCK_NOT_GRANTED from FsRtlPrivateLock
- (redirected IoStatus->Status).
- Internals:
- -switch ( Irp->CurrentStackLocation->MinorFunction )
- lock: return FsRtlPrivateLock;
- unlocksingle: return FsRtlFastUnlockSingle;
- unlockall: return FsRtlFastUnlockAll;
- unlockallbykey: return FsRtlFastUnlockAllByKey;
- default: IofCompleteRequest with STATUS_INVALID_DEVICE_REQUEST;
- return STATUS_INVALID_DEVICE_REQUEST;
- -'AllwaysZero' is passed thru as 'AllwaysZero' to lock / unlock routines.
- -'Irp' is passet thru as 'Irp' to FsRtlPrivateLock.
- */
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlProcessFileLock(
- IN PFILE_LOCK FileLock,
- IN PIRP Irp,
- IN PVOID Context OPTIONAL);
- /*
- FsRtlCheckLockForReadAccess:
- All this really does is pick out the lock parameters from the irp (io stack
- location?), get IoGetRequestorProcess, and pass values on to
- FsRtlFastCheckLockForRead.
- */
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlCheckLockForReadAccess(
- IN PFILE_LOCK FileLock,
- IN PIRP Irp);
- /*
- FsRtlCheckLockForWriteAccess:
- All this really does is pick out the lock parameters from the irp (io stack
- location?), get IoGetRequestorProcess, and pass values on to
- FsRtlFastCheckLockForWrite.
- */
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlCheckLockForWriteAccess(
- IN PFILE_LOCK FileLock,
- IN PIRP Irp);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlFastCheckLockForRead(
- IN PFILE_LOCK FileLock,
- IN PLARGE_INTEGER FileOffset,
- IN PLARGE_INTEGER Length,
- IN ULONG Key,
- IN PFILE_OBJECT FileObject,
- IN PVOID Process);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlFastCheckLockForWrite(
- IN PFILE_LOCK FileLock,
- IN PLARGE_INTEGER FileOffset,
- IN PLARGE_INTEGER Length,
- IN ULONG Key,
- IN PFILE_OBJECT FileObject,
- IN PVOID Process);
- /*
- FsRtlGetNextFileLock:
- ret: NULL if no more locks
- Internals:
- FsRtlGetNextFileLock uses FileLock->LastReturnedLockInfo and
- FileLock->LastReturnedLock as storage.
- LastReturnedLock is a pointer to the 'raw' lock inkl. double linked
- list, and FsRtlGetNextFileLock needs this to get next lock on subsequent
- calls with Restart = FALSE.
- */
- NTKERNELAPI
- PFILE_LOCK_INFO
- NTAPI
- FsRtlGetNextFileLock(
- IN PFILE_LOCK FileLock,
- IN BOOLEAN Restart);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlFastUnlockSingle(
- IN PFILE_LOCK FileLock,
- IN PFILE_OBJECT FileObject,
- IN PLARGE_INTEGER FileOffset,
- IN PLARGE_INTEGER Length,
- IN PEPROCESS Process,
- IN ULONG Key,
- IN PVOID Context OPTIONAL,
- IN BOOLEAN AlreadySynchronized);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlFastUnlockAll(
- IN PFILE_LOCK FileLock,
- IN PFILE_OBJECT FileObject,
- IN PEPROCESS Process,
- IN PVOID Context OPTIONAL);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlFastUnlockAllByKey(
- IN PFILE_LOCK FileLock,
- IN PFILE_OBJECT FileObject,
- IN PEPROCESS Process,
- IN ULONG Key,
- IN PVOID Context OPTIONAL);
- /*
- FsRtlPrivateLock:
- ret: IoStatus->Status: STATUS_PENDING, STATUS_LOCK_NOT_GRANTED
- Internals:
- -Calls IoCompleteRequest if Irp
- -Uses exception handling / ExRaiseStatus with STATUS_INSUFFICIENT_RESOURCES
- */
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlPrivateLock(
- IN PFILE_LOCK FileLock,
- IN PFILE_OBJECT FileObject,
- IN PLARGE_INTEGER FileOffset,
- IN PLARGE_INTEGER Length,
- IN PEPROCESS Process,
- IN ULONG Key,
- IN BOOLEAN FailImmediately,
- IN BOOLEAN ExclusiveLock,
- OUT PIO_STATUS_BLOCK IoStatus,
- IN PIRP Irp OPTIONAL,
- IN PVOID Context,
- IN BOOLEAN AlreadySynchronized);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlInitializeTunnelCache(
- IN PTUNNEL Cache);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlAddToTunnelCache(
- IN PTUNNEL Cache,
- IN ULONGLONG DirectoryKey,
- IN PUNICODE_STRING ShortName,
- IN PUNICODE_STRING LongName,
- IN BOOLEAN KeyByShortName,
- IN ULONG DataLength,
- IN PVOID Data);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlFindInTunnelCache(
- IN PTUNNEL Cache,
- IN ULONGLONG DirectoryKey,
- IN PUNICODE_STRING Name,
- OUT PUNICODE_STRING ShortName,
- OUT PUNICODE_STRING LongName,
- IN OUT PULONG DataLength,
- OUT PVOID Data);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlDeleteKeyFromTunnelCache(
- IN PTUNNEL Cache,
- IN ULONGLONG DirectoryKey);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlDeleteTunnelCache(
- IN PTUNNEL Cache);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlDissectDbcs(
- IN ANSI_STRING Name,
- OUT PANSI_STRING FirstPart,
- OUT PANSI_STRING RemainingPart);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlDoesDbcsContainWildCards(
- IN PANSI_STRING Name);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlIsDbcsInExpression(
- IN PANSI_STRING Expression,
- IN PANSI_STRING Name);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlIsFatDbcsLegal(
- IN ANSI_STRING DbcsName,
- IN BOOLEAN WildCardsPermissible,
- IN BOOLEAN PathNamePermissible,
- IN BOOLEAN LeadingBackslashPermissible);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlIsHpfsDbcsLegal(
- IN ANSI_STRING DbcsName,
- IN BOOLEAN WildCardsPermissible,
- IN BOOLEAN PathNamePermissible,
- IN BOOLEAN LeadingBackslashPermissible);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlNormalizeNtstatus(
- IN NTSTATUS Exception,
- IN NTSTATUS GenericException);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlIsNtstatusExpected(
- IN NTSTATUS Ntstatus);
- NTKERNELAPI
- PERESOURCE
- NTAPI
- FsRtlAllocateResource(
- VOID);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlInitializeLargeMcb(
- IN PLARGE_MCB Mcb,
- IN POOL_TYPE PoolType);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlUninitializeLargeMcb(
- IN PLARGE_MCB Mcb);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlResetLargeMcb(
- IN PLARGE_MCB Mcb,
- IN BOOLEAN SelfSynchronized);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlTruncateLargeMcb(
- IN PLARGE_MCB Mcb,
- IN LONGLONG Vbn);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlAddLargeMcbEntry(
- IN PLARGE_MCB Mcb,
- IN LONGLONG Vbn,
- IN LONGLONG Lbn,
- IN LONGLONG SectorCount);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlRemoveLargeMcbEntry(
- IN PLARGE_MCB Mcb,
- IN LONGLONG Vbn,
- IN LONGLONG SectorCount);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlLookupLargeMcbEntry(
- IN PLARGE_MCB Mcb,
- IN LONGLONG Vbn,
- OUT PLONGLONG Lbn OPTIONAL,
- OUT PLONGLONG SectorCountFromLbn OPTIONAL,
- OUT PLONGLONG StartingLbn OPTIONAL,
- OUT PLONGLONG SectorCountFromStartingLbn OPTIONAL,
- OUT PULONG Index OPTIONAL);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlLookupLastLargeMcbEntry(
- IN PLARGE_MCB Mcb,
- OUT PLONGLONG Vbn,
- OUT PLONGLONG Lbn);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlLookupLastLargeMcbEntryAndIndex(
- IN PLARGE_MCB OpaqueMcb,
- OUT PLONGLONG LargeVbn,
- OUT PLONGLONG LargeLbn,
- OUT PULONG Index);
- NTKERNELAPI
- ULONG
- NTAPI
- FsRtlNumberOfRunsInLargeMcb(
- IN PLARGE_MCB Mcb);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlGetNextLargeMcbEntry(
- IN PLARGE_MCB Mcb,
- IN ULONG RunIndex,
- OUT PLONGLONG Vbn,
- OUT PLONGLONG Lbn,
- OUT PLONGLONG SectorCount);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlSplitLargeMcb(
- IN PLARGE_MCB Mcb,
- IN LONGLONG Vbn,
- IN LONGLONG Amount);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlInitializeMcb(
- IN PMCB Mcb,
- IN POOL_TYPE PoolType);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlUninitializeMcb(
- IN PMCB Mcb);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlTruncateMcb(
- IN PMCB Mcb,
- IN VBN Vbn);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlAddMcbEntry(
- IN PMCB Mcb,
- IN VBN Vbn,
- IN LBN Lbn,
- IN ULONG SectorCount);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlRemoveMcbEntry(
- IN PMCB Mcb,
- IN VBN Vbn,
- IN ULONG SectorCount);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlLookupMcbEntry(
- IN PMCB Mcb,
- IN VBN Vbn,
- OUT PLBN Lbn,
- OUT PULONG SectorCount OPTIONAL,
- OUT PULONG Index);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlLookupLastMcbEntry(
- IN PMCB Mcb,
- OUT PVBN Vbn,
- OUT PLBN Lbn);
- NTKERNELAPI
- ULONG
- NTAPI
- FsRtlNumberOfRunsInMcb(
- IN PMCB Mcb);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlGetNextMcbEntry(
- IN PMCB Mcb,
- IN ULONG RunIndex,
- OUT PVBN Vbn,
- OUT PLBN Lbn,
- OUT PULONG SectorCount);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlBalanceReads(
- IN PDEVICE_OBJECT TargetDevice);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlInitializeOplock(
- IN OUT POPLOCK Oplock);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlUninitializeOplock(
- IN OUT POPLOCK Oplock);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlOplockFsctrl(
- IN POPLOCK Oplock,
- IN PIRP Irp,
- IN ULONG OpenCount);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlCheckOplock(
- IN POPLOCK Oplock,
- IN PIRP Irp,
- IN PVOID Context,
- IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL,
- IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlOplockIsFastIoPossible(
- IN POPLOCK Oplock);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlCurrentBatchOplock(
- IN POPLOCK Oplock);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlNotifyVolumeEvent(
- IN PFILE_OBJECT FileObject,
- IN ULONG EventCode);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlNotifyInitializeSync(
- IN PNOTIFY_SYNC *NotifySync);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlNotifyUninitializeSync(
- IN PNOTIFY_SYNC *NotifySync);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlNotifyFullChangeDirectory(
- IN PNOTIFY_SYNC NotifySync,
- IN PLIST_ENTRY NotifyList,
- IN PVOID FsContext,
- IN PSTRING FullDirectoryName,
- IN BOOLEAN WatchTree,
- IN BOOLEAN IgnoreBuffer,
- IN ULONG CompletionFilter,
- IN PIRP NotifyIrp OPTIONAL,
- IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL,
- IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlNotifyFilterReportChange(
- IN PNOTIFY_SYNC NotifySync,
- IN PLIST_ENTRY NotifyList,
- IN PSTRING FullTargetName,
- IN USHORT TargetNameOffset,
- IN PSTRING StreamName OPTIONAL,
- IN PSTRING NormalizedParentName OPTIONAL,
- IN ULONG FilterMatch,
- IN ULONG Action,
- IN PVOID TargetContext OPTIONAL,
- IN PVOID FilterContext OPTIONAL);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlNotifyFullReportChange(
- IN PNOTIFY_SYNC NotifySync,
- IN PLIST_ENTRY NotifyList,
- IN PSTRING FullTargetName,
- IN USHORT TargetNameOffset,
- IN PSTRING StreamName OPTIONAL,
- IN PSTRING NormalizedParentName OPTIONAL,
- IN ULONG FilterMatch,
- IN ULONG Action,
- IN PVOID TargetContext OPTIONAL);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlNotifyCleanup(
- IN PNOTIFY_SYNC NotifySync,
- IN PLIST_ENTRY NotifyList,
- IN PVOID FsContext);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlDissectName(
- IN UNICODE_STRING Name,
- OUT PUNICODE_STRING FirstPart,
- OUT PUNICODE_STRING RemainingPart);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlDoesNameContainWildCards(
- IN PUNICODE_STRING Name);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlAreNamesEqual(
- IN PCUNICODE_STRING Name1,
- IN PCUNICODE_STRING Name2,
- IN BOOLEAN IgnoreCase,
- IN PCWCH UpcaseTable OPTIONAL);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlIsNameInExpression(
- IN PUNICODE_STRING Expression,
- IN PUNICODE_STRING Name,
- IN BOOLEAN IgnoreCase,
- IN PWCHAR UpcaseTable OPTIONAL);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlPostPagingFileStackOverflow(
- IN PVOID Context,
- IN PKEVENT Event,
- IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlPostStackOverflow (
- IN PVOID Context,
- IN PKEVENT Event,
- IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlRegisterUncProvider(
- OUT PHANDLE MupHandle,
- IN PUNICODE_STRING RedirectorDeviceName,
- IN BOOLEAN MailslotsSupported);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlDeregisterUncProvider(
- IN HANDLE Handle);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlTeardownPerStreamContexts(
- IN PFSRTL_ADVANCED_FCB_HEADER AdvancedHeader);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlCreateSectionForDataScan(
- OUT PHANDLE SectionHandle,
- OUT PVOID *SectionObject,
- OUT PLARGE_INTEGER SectionFileSize OPTIONAL,
- IN PFILE_OBJECT FileObject,
- IN ACCESS_MASK DesiredAccess,
- IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
- IN PLARGE_INTEGER MaximumSize OPTIONAL,
- IN ULONG SectionPageProtection,
- IN ULONG AllocationAttributes,
- IN ULONG Flags);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
- #if (NTDDI_VERSION >= NTDDI_WINXP)
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlNotifyFilterChangeDirectory(
- IN PNOTIFY_SYNC NotifySync,
- IN PLIST_ENTRY NotifyList,
- IN PVOID FsContext,
- IN PSTRING FullDirectoryName,
- IN BOOLEAN WatchTree,
- IN BOOLEAN IgnoreBuffer,
- IN ULONG CompletionFilter,
- IN PIRP NotifyIrp OPTIONAL,
- IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL,
- IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL,
- IN PFILTER_REPORT_CHANGE FilterCallback OPTIONAL);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlInsertPerStreamContext(
- IN PFSRTL_ADVANCED_FCB_HEADER PerStreamContext,
- IN PFSRTL_PER_STREAM_CONTEXT Ptr);
- NTKERNELAPI
- PFSRTL_PER_STREAM_CONTEXT
- NTAPI
- FsRtlLookupPerStreamContextInternal(
- IN PFSRTL_ADVANCED_FCB_HEADER StreamContext,
- IN PVOID OwnerId OPTIONAL,
- IN PVOID InstanceId OPTIONAL);
- NTKERNELAPI
- PFSRTL_PER_STREAM_CONTEXT
- NTAPI
- FsRtlRemovePerStreamContext(
- IN PFSRTL_ADVANCED_FCB_HEADER StreamContext,
- IN PVOID OwnerId OPTIONAL,
- IN PVOID InstanceId OPTIONAL);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlIncrementCcFastReadNotPossible(
- VOID);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlIncrementCcFastReadWait(
- VOID);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlIncrementCcFastReadNoWait(
- VOID);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlIncrementCcFastReadResourceMiss(
- VOID);
- NTKERNELAPI
- LOGICAL
- NTAPI
- FsRtlIsPagingFile(
- IN PFILE_OBJECT FileObject);
- #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
- #if (NTDDI_VERSION >= NTDDI_WS03)
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlInitializeBaseMcb(
- IN PBASE_MCB Mcb,
- IN POOL_TYPE PoolType);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlUninitializeBaseMcb(
- IN PBASE_MCB Mcb);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlResetBaseMcb(
- IN PBASE_MCB Mcb);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlTruncateBaseMcb(
- IN PBASE_MCB Mcb,
- IN LONGLONG Vbn);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlAddBaseMcbEntry(
- IN PBASE_MCB Mcb,
- IN LONGLONG Vbn,
- IN LONGLONG Lbn,
- IN LONGLONG SectorCount);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlRemoveBaseMcbEntry(
- IN PBASE_MCB Mcb,
- IN LONGLONG Vbn,
- IN LONGLONG SectorCount);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlLookupBaseMcbEntry(
- IN PBASE_MCB Mcb,
- IN LONGLONG Vbn,
- OUT PLONGLONG Lbn OPTIONAL,
- OUT PLONGLONG SectorCountFromLbn OPTIONAL,
- OUT PLONGLONG StartingLbn OPTIONAL,
- OUT PLONGLONG SectorCountFromStartingLbn OPTIONAL,
- OUT PULONG Index OPTIONAL);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlLookupLastBaseMcbEntry(
- IN PBASE_MCB Mcb,
- OUT PLONGLONG Vbn,
- OUT PLONGLONG Lbn);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlLookupLastBaseMcbEntryAndIndex(
- IN PBASE_MCB OpaqueMcb,
- IN OUT PLONGLONG LargeVbn,
- IN OUT PLONGLONG LargeLbn,
- IN OUT PULONG Index);
- NTKERNELAPI
- ULONG
- NTAPI
- FsRtlNumberOfRunsInBaseMcb(
- IN PBASE_MCB Mcb);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlGetNextBaseMcbEntry(
- IN PBASE_MCB Mcb,
- IN ULONG RunIndex,
- OUT PLONGLONG Vbn,
- OUT PLONGLONG Lbn,
- OUT PLONGLONG SectorCount);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlSplitBaseMcb(
- IN PBASE_MCB Mcb,
- IN LONGLONG Vbn,
- IN LONGLONG Amount);
- #endif /* (NTDDI_VERSION >= NTDDI_WS03) */
- #if (NTDDI_VERSION >= NTDDI_VISTA)
- BOOLEAN
- NTAPI
- FsRtlInitializeBaseMcbEx(
- IN PBASE_MCB Mcb,
- IN POOL_TYPE PoolType,
- IN USHORT Flags);
- NTSTATUS
- NTAPI
- FsRtlAddBaseMcbEntryEx(
- IN PBASE_MCB Mcb,
- IN LONGLONG Vbn,
- IN LONGLONG Lbn,
- IN LONGLONG SectorCount);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlCurrentOplock(
- IN POPLOCK Oplock);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlOplockBreakToNone(
- IN OUT POPLOCK Oplock,
- IN PIO_STACK_LOCATION IrpSp OPTIONAL,
- IN PIRP Irp,
- IN PVOID Context OPTIONAL,
- IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL,
- IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlNotifyVolumeEventEx(
- IN PFILE_OBJECT FileObject,
- IN ULONG EventCode,
- IN PTARGET_DEVICE_CUSTOM_NOTIFICATION Event);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlNotifyCleanupAll(
- IN PNOTIFY_SYNC NotifySync,
- IN PLIST_ENTRY NotifyList);
- NTSTATUS
- NTAPI
- FsRtlRegisterUncProviderEx(
- OUT PHANDLE MupHandle,
- IN PUNICODE_STRING RedirDevName,
- IN PDEVICE_OBJECT DeviceObject,
- IN ULONG Flags);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlCancellableWaitForSingleObject(
- IN PVOID Object,
- IN PLARGE_INTEGER Timeout OPTIONAL,
- IN PIRP Irp OPTIONAL);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlCancellableWaitForMultipleObjects(
- IN ULONG Count,
- IN PVOID ObjectArray[],
- IN WAIT_TYPE WaitType,
- IN PLARGE_INTEGER Timeout OPTIONAL,
- IN PKWAIT_BLOCK WaitBlockArray OPTIONAL,
- IN PIRP Irp OPTIONAL);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlMupGetProviderInfoFromFileObject(
- IN PFILE_OBJECT pFileObject,
- IN ULONG Level,
- OUT PVOID pBuffer,
- IN OUT PULONG pBufferSize);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlMupGetProviderIdFromName(
- IN PUNICODE_STRING pProviderName,
- OUT PULONG32 pProviderId);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlIncrementCcFastMdlReadWait(
- VOID);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlValidateReparsePointBuffer(
- IN ULONG BufferLength,
- IN PREPARSE_DATA_BUFFER ReparseBuffer);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlRemoveDotsFromPath(
- IN OUT PWSTR OriginalString,
- IN USHORT PathLength,
- OUT USHORT *NewLength);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlAllocateExtraCreateParameterList(
- IN FSRTL_ALLOCATE_ECPLIST_FLAGS Flags,
- OUT PECP_LIST *EcpList);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlFreeExtraCreateParameterList(
- IN PECP_LIST EcpList);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlAllocateExtraCreateParameter(
- IN LPCGUID EcpType,
- IN ULONG SizeOfContext,
- IN FSRTL_ALLOCATE_ECP_FLAGS Flags,
- IN PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK CleanupCallback OPTIONAL,
- IN ULONG PoolTag,
- OUT PVOID *EcpContext);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlFreeExtraCreateParameter(
- IN PVOID EcpContext);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlInitExtraCreateParameterLookasideList(
- IN OUT PVOID Lookaside,
- IN FSRTL_ECP_LOOKASIDE_FLAGS Flags,
- IN SIZE_T Size,
- IN ULONG Tag);
- VOID
- NTAPI
- FsRtlDeleteExtraCreateParameterLookasideList(
- IN OUT PVOID Lookaside,
- IN FSRTL_ECP_LOOKASIDE_FLAGS Flags);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlAllocateExtraCreateParameterFromLookasideList(
- IN LPCGUID EcpType,
- IN ULONG SizeOfContext,
- IN FSRTL_ALLOCATE_ECP_FLAGS Flags,
- IN PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK CleanupCallback OPTIONAL,
- IN OUT PVOID LookasideList,
- OUT PVOID *EcpContext);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlInsertExtraCreateParameter(
- IN OUT PECP_LIST EcpList,
- IN OUT PVOID EcpContext);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlFindExtraCreateParameter(
- IN PECP_LIST EcpList,
- IN LPCGUID EcpType,
- OUT PVOID *EcpContext OPTIONAL,
- OUT ULONG *EcpContextSize OPTIONAL);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlRemoveExtraCreateParameter(
- IN OUT PECP_LIST EcpList,
- IN LPCGUID EcpType,
- OUT PVOID *EcpContext,
- OUT ULONG *EcpContextSize OPTIONAL);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlGetEcpListFromIrp(
- IN PIRP Irp,
- OUT PECP_LIST *EcpList OPTIONAL);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlSetEcpListIntoIrp(
- IN OUT PIRP Irp,
- IN PECP_LIST EcpList);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlGetNextExtraCreateParameter(
- IN PECP_LIST EcpList,
- IN PVOID CurrentEcpContext OPTIONAL,
- OUT LPGUID NextEcpType OPTIONAL,
- OUT PVOID *NextEcpContext OPTIONAL,
- OUT ULONG *NextEcpContextSize OPTIONAL);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlAcknowledgeEcp(
- IN PVOID EcpContext);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlIsEcpAcknowledged(
- IN PVOID EcpContext);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlIsEcpFromUserMode(
- IN PVOID EcpContext);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlChangeBackingFileObject(
- IN PFILE_OBJECT CurrentFileObject OPTIONAL,
- IN PFILE_OBJECT NewFileObject,
- IN FSRTL_CHANGE_BACKING_TYPE ChangeBackingType,
- IN ULONG Flags);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlLogCcFlushError(
- IN PUNICODE_STRING FileName,
- IN PDEVICE_OBJECT DeviceObject,
- IN PSECTION_OBJECT_POINTERS SectionObjectPointer,
- IN NTSTATUS FlushError,
- IN ULONG Flags);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlAreVolumeStartupApplicationsComplete(
- VOID);
- NTKERNELAPI
- ULONG
- NTAPI
- FsRtlQueryMaximumVirtualDiskNestingLevel(
- VOID);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlGetVirtualDiskNestingLevel(
- IN PDEVICE_OBJECT DeviceObject,
- OUT PULONG NestingLevel,
- OUT PULONG NestingFlags OPTIONAL);
- #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
- #if (NTDDI_VERSION >= NTDDI_VISTASP1)
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlCheckOplockEx(
- IN POPLOCK Oplock,
- IN PIRP Irp,
- IN ULONG Flags,
- IN PVOID Context OPTIONAL,
- IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL,
- IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL);
- #endif
- #if (NTDDI_VERSION >= NTDDI_WIN7)
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlAreThereCurrentOrInProgressFileLocks(
- IN PFILE_LOCK FileLock);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlOplockIsSharedRequest(
- IN PIRP Irp);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlOplockBreakH(
- IN POPLOCK Oplock,
- IN PIRP Irp,
- IN ULONG Flags,
- IN PVOID Context OPTIONAL,
- IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL,
- IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlCurrentOplockH(
- IN POPLOCK Oplock);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlOplockBreakToNoneEx(
- IN OUT POPLOCK Oplock,
- IN PIRP Irp,
- IN ULONG Flags,
- IN PVOID Context OPTIONAL,
- IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL,
- IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlOplockFsctrlEx(
- IN POPLOCK Oplock,
- IN PIRP Irp,
- IN ULONG OpenCount,
- IN ULONG Flags);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlOplockKeysEqual(
- IN PFILE_OBJECT Fo1 OPTIONAL,
- IN PFILE_OBJECT Fo2 OPTIONAL);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlInitializeExtraCreateParameterList(
- IN OUT PECP_LIST EcpList);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlInitializeExtraCreateParameter(
- IN PECP_HEADER Ecp,
- IN ULONG EcpFlags,
- IN PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK CleanupCallback OPTIONAL,
- IN ULONG TotalSize,
- IN LPCGUID EcpType,
- IN PVOID ListAllocatedFrom OPTIONAL);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlInsertPerFileContext(
- IN PVOID* PerFileContextPointer,
- IN PFSRTL_PER_FILE_CONTEXT Ptr);
- NTKERNELAPI
- PFSRTL_PER_FILE_CONTEXT
- NTAPI
- FsRtlLookupPerFileContext(
- IN PVOID* PerFileContextPointer,
- IN PVOID OwnerId OPTIONAL,
- IN PVOID InstanceId OPTIONAL);
- NTKERNELAPI
- PFSRTL_PER_FILE_CONTEXT
- NTAPI
- FsRtlRemovePerFileContext(
- IN PVOID* PerFileContextPointer,
- IN PVOID OwnerId OPTIONAL,
- IN PVOID InstanceId OPTIONAL);
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlTeardownPerFileContexts(
- IN PVOID* PerFileContextPointer);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- FsRtlInsertPerFileObjectContext(
- IN PFILE_OBJECT FileObject,
- IN PFSRTL_PER_FILEOBJECT_CONTEXT Ptr);
- NTKERNELAPI
- PFSRTL_PER_FILEOBJECT_CONTEXT
- NTAPI
- FsRtlLookupPerFileObjectContext(
- IN PFILE_OBJECT FileObject,
- IN PVOID OwnerId OPTIONAL,
- IN PVOID InstanceId OPTIONAL);
- NTKERNELAPI
- PFSRTL_PER_FILEOBJECT_CONTEXT
- NTAPI
- FsRtlRemovePerFileObjectContext(
- IN PFILE_OBJECT FileObject,
- IN PVOID OwnerId OPTIONAL,
- IN PVOID InstanceId OPTIONAL);
- #define FsRtlFastLock(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11) ( \
- FsRtlPrivateLock(A1, A2, A3, A4, A5, A6, A7, A8, A9, NULL, A10, A11) \
- )
- #define FsRtlAreThereCurrentFileLocks(FL) ( \
- ((FL)->FastIoIsQuestionable) \
- )
- #define FsRtlIncrementLockRequestsInProgress(FL) { \
- ASSERT( (FL)->LockRequestsInProgress >= 0 ); \
- (void) \
- (InterlockedIncrement((LONG volatile *)&((FL)->LockRequestsInProgress)));\
- }
- #define FsRtlDecrementLockRequestsInProgress(FL) { \
- ASSERT( (FL)->LockRequestsInProgress > 0 ); \
- (void) \
- (InterlockedDecrement((LONG volatile *)&((FL)->LockRequestsInProgress)));\
- }
- /* GCC compatible definition, MS one is retarded */
- extern NTKERNELAPI const UCHAR * const FsRtlLegalAnsiCharacterArray;
- #define LEGAL_ANSI_CHARACTER_ARRAY FsRtlLegalAnsiCharacterArray
- #define FsRtlIsAnsiCharacterWild(C) ( \
- FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], FSRTL_WILD_CHARACTER ) \
- )
- #define FsRtlIsAnsiCharacterLegalFat(C, WILD) ( \
- FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], (FSRTL_FAT_LEGAL) | \
- ((WILD) ? FSRTL_WILD_CHARACTER : 0 )) \
- )
- #define FsRtlIsAnsiCharacterLegalHpfs(C, WILD) ( \
- FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], (FSRTL_HPFS_LEGAL) | \
- ((WILD) ? FSRTL_WILD_CHARACTER : 0 )) \
- )
- #define FsRtlIsAnsiCharacterLegalNtfs(C, WILD) ( \
- FlagOn(FsRtlLegalAnsiCharacterArray[(UCHAR)(C)], (FSRTL_NTFS_LEGAL) | \
- ((WILD) ? FSRTL_WILD_CHARACTER : 0 )) \
- )
- #define FsRtlIsAnsiCharacterLegalNtfsStream(C,WILD_OK) ( \
- FsRtlTestAnsiCharacter((C), TRUE, (WILD_OK), FSRTL_NTFS_STREAM_LEGAL) \
- )
- #define FsRtlIsAnsiCharacterLegal(C,FLAGS) ( \
- FsRtlTestAnsiCharacter((C), TRUE, FALSE, (FLAGS)) \
- )
- #define FsRtlTestAnsiCharacter(C, DEFAULT_RET, WILD_OK, FLAGS) ( \
- ((SCHAR)(C) < 0) ? DEFAULT_RET : \
- FlagOn( LEGAL_ANSI_CHARACTER_ARRAY[(C)], \
- (FLAGS) | \
- ((WILD_OK) ? FSRTL_WILD_CHARACTER : 0) ) \
- )
- #define FsRtlIsLeadDbcsCharacter(DBCS_CHAR) ( \
- (BOOLEAN)((UCHAR)(DBCS_CHAR) < 0x80 ? FALSE : \
- (NLS_MB_CODE_PAGE_TAG && \
- (NLS_OEM_LEAD_BYTE_INFO[(UCHAR)(DBCS_CHAR)] != 0))) \
- )
- #define FsRtlIsUnicodeCharacterWild(C) ( \
- (((C) >= 0x40) ? \
- FALSE : \
- FlagOn(FsRtlLegalAnsiCharacterArray[(C)], FSRTL_WILD_CHARACTER )) \
- )
- #define FsRtlInitPerFileContext( _fc, _owner, _inst, _cb) \
- ((_fc)->OwnerId = (_owner), \
- (_fc)->InstanceId = (_inst), \
- (_fc)->FreeCallback = (_cb))
- #define FsRtlGetPerFileContextPointer(_fo) \
- (FsRtlSupportsPerFileContexts(_fo) ? \
- FsRtlGetPerStreamContextPointer(_fo)->FileContextSupportPointer : \
- NULL)
- #define FsRtlSupportsPerFileContexts(_fo) \
- ((FsRtlGetPerStreamContextPointer(_fo) != NULL) && \
- (FsRtlGetPerStreamContextPointer(_fo)->Version >= FSRTL_FCB_HEADER_V1) && \
- (FsRtlGetPerStreamContextPointer(_fo)->FileContextSupportPointer != NULL))
- #define FsRtlSetupAdvancedHeaderEx( _advhdr, _fmutx, _fctxptr ) \
- { \
- FsRtlSetupAdvancedHeader( _advhdr, _fmutx ); \
- if ((_fctxptr) != NULL) { \
- (_advhdr)->FileContextSupportPointer = (_fctxptr); \
- } \
- }
- #define FsRtlGetPerStreamContextPointer(FO) ( \
- (PFSRTL_ADVANCED_FCB_HEADER)(FO)->FsContext \
- )
- #define FsRtlInitPerStreamContext(PSC, O, I, FC) ( \
- (PSC)->OwnerId = (O), \
- (PSC)->InstanceId = (I), \
- (PSC)->FreeCallback = (FC) \
- )
- #define FsRtlSupportsPerStreamContexts(FO) ( \
- (BOOLEAN)((NULL != FsRtlGetPerStreamContextPointer(FO) && \
- FlagOn(FsRtlGetPerStreamContextPointer(FO)->Flags2, \
- FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS)) \
- )
- #define FsRtlLookupPerStreamContext(_sc, _oid, _iid) \
- (((NULL != (_sc)) && \
- FlagOn((_sc)->Flags2,FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS) && \
- !IsListEmpty(&(_sc)->FilterContexts)) ? \
- FsRtlLookupPerStreamContextInternal((_sc), (_oid), (_iid)) : \
- NULL)
- FORCEINLINE
- VOID
- NTAPI
- FsRtlSetupAdvancedHeader(
- IN PVOID AdvHdr,
- IN PFAST_MUTEX FMutex )
- {
- PFSRTL_ADVANCED_FCB_HEADER localAdvHdr = (PFSRTL_ADVANCED_FCB_HEADER)AdvHdr;
- localAdvHdr->Flags |= FSRTL_FLAG_ADVANCED_HEADER;
- localAdvHdr->Flags2 |= FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS;
- #if (NTDDI_VERSION >= NTDDI_VISTA)
- localAdvHdr->Version = FSRTL_FCB_HEADER_V1;
- #else
- localAdvHdr->Version = FSRTL_FCB_HEADER_V0;
- #endif
- InitializeListHead( &localAdvHdr->FilterContexts );
- if (FMutex != NULL) {
- localAdvHdr->FastMutex = FMutex;
- }
- #if (NTDDI_VERSION >= NTDDI_VISTA)
- *((PULONG_PTR)(&localAdvHdr->PushLock)) = 0;
- localAdvHdr->FileContextSupportPointer = NULL;
- #endif
- }
- #define FsRtlInitPerFileObjectContext(_fc, _owner, _inst) \
- ((_fc)->OwnerId = (_owner), (_fc)->InstanceId = (_inst))
- #define FsRtlCompleteRequest(IRP,STATUS) { \
- (IRP)->IoStatus.Status = (STATUS); \
- IoCompleteRequest( (IRP), IO_DISK_INCREMENT ); \
- }
- /* Common Cache Types */
- #define VACB_MAPPING_GRANULARITY (0x40000)
- #define VACB_OFFSET_SHIFT (18)
- typedef struct _PUBLIC_BCB {
- CSHORT NodeTypeCode;
- CSHORT NodeByteSize;
- ULONG MappedLength;
- LARGE_INTEGER MappedFileOffset;
- } PUBLIC_BCB, *PPUBLIC_BCB;
- typedef struct _CC_FILE_SIZES {
- LARGE_INTEGER AllocationSize;
- LARGE_INTEGER FileSize;
- LARGE_INTEGER ValidDataLength;
- } CC_FILE_SIZES, *PCC_FILE_SIZES;
- typedef BOOLEAN
- (NTAPI *PACQUIRE_FOR_LAZY_WRITE) (
- IN PVOID Context,
- IN BOOLEAN Wait);
- typedef VOID
- (NTAPI *PRELEASE_FROM_LAZY_WRITE) (
- IN PVOID Context);
- typedef BOOLEAN
- (NTAPI *PACQUIRE_FOR_READ_AHEAD) (
- IN PVOID Context,
- IN BOOLEAN Wait);
- typedef VOID
- (NTAPI *PRELEASE_FROM_READ_AHEAD) (
- IN PVOID Context);
- typedef struct _CACHE_MANAGER_CALLBACKS {
- PACQUIRE_FOR_LAZY_WRITE AcquireForLazyWrite;
- PRELEASE_FROM_LAZY_WRITE ReleaseFromLazyWrite;
- PACQUIRE_FOR_READ_AHEAD AcquireForReadAhead;
- PRELEASE_FROM_READ_AHEAD ReleaseFromReadAhead;
- } CACHE_MANAGER_CALLBACKS, *PCACHE_MANAGER_CALLBACKS;
- typedef struct _CACHE_UNINITIALIZE_EVENT {
- struct _CACHE_UNINITIALIZE_EVENT *Next;
- KEVENT Event;
- } CACHE_UNINITIALIZE_EVENT, *PCACHE_UNINITIALIZE_EVENT;
- typedef VOID
- (NTAPI *PDIRTY_PAGE_ROUTINE) (
- IN PFILE_OBJECT FileObject,
- IN PLARGE_INTEGER FileOffset,
- IN ULONG Length,
- IN PLARGE_INTEGER OldestLsn,
- IN PLARGE_INTEGER NewestLsn,
- IN PVOID Context1,
- IN PVOID Context2);
- typedef VOID
- (NTAPI *PFLUSH_TO_LSN) (
- IN PVOID LogHandle,
- IN LARGE_INTEGER Lsn);
- typedef VOID
- (NTAPI *PCC_POST_DEFERRED_WRITE) (
- IN PVOID Context1,
- IN PVOID Context2);
- #define UNINITIALIZE_CACHE_MAPS (1)
- #define DO_NOT_RETRY_PURGE (2)
- #define DO_NOT_PURGE_DIRTY_PAGES (0x4)
- #define CC_FLUSH_AND_PURGE_NO_PURGE (0x1)
- /* Common Cache Functions */
- #define CcIsFileCached(FO) ( \
- ((FO)->SectionObjectPointer != NULL) && \
- (((PSECTION_OBJECT_POINTERS)(FO)->SectionObjectPointer)->SharedCacheMap != NULL) \
- )
- extern ULONG CcFastMdlReadWait;
- #if (NTDDI_VERSION >= NTDDI_WIN2K)
- NTKERNELAPI
- VOID
- NTAPI
- CcInitializeCacheMap(
- IN PFILE_OBJECT FileObject,
- IN PCC_FILE_SIZES FileSizes,
- IN BOOLEAN PinAccess,
- IN PCACHE_MANAGER_CALLBACKS Callbacks,
- IN PVOID LazyWriteContext);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- CcUninitializeCacheMap(
- IN PFILE_OBJECT FileObject,
- IN PLARGE_INTEGER TruncateSize OPTIONAL,
- IN PCACHE_UNINITIALIZE_EVENT UninitializeCompleteEvent OPTIONAL);
- NTKERNELAPI
- VOID
- NTAPI
- CcSetFileSizes(
- IN PFILE_OBJECT FileObject,
- IN PCC_FILE_SIZES FileSizes);
- NTKERNELAPI
- VOID
- NTAPI
- CcSetDirtyPageThreshold(
- IN PFILE_OBJECT FileObject,
- IN ULONG DirtyPageThreshold);
- NTKERNELAPI
- VOID
- NTAPI
- CcFlushCache(
- IN PSECTION_OBJECT_POINTERS SectionObjectPointer,
- IN PLARGE_INTEGER FileOffset OPTIONAL,
- IN ULONG Length,
- OUT PIO_STATUS_BLOCK IoStatus OPTIONAL);
- NTKERNELAPI
- LARGE_INTEGER
- NTAPI
- CcGetFlushedValidData(
- IN PSECTION_OBJECT_POINTERS SectionObjectPointer,
- IN BOOLEAN BcbListHeld);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- CcZeroData(
- IN PFILE_OBJECT FileObject,
- IN PLARGE_INTEGER StartOffset,
- IN PLARGE_INTEGER EndOffset,
- IN BOOLEAN Wait);
- NTKERNELAPI
- PVOID
- NTAPI
- CcRemapBcb(
- IN PVOID Bcb);
- NTKERNELAPI
- VOID
- NTAPI
- CcRepinBcb(
- IN PVOID Bcb);
- NTKERNELAPI
- VOID
- NTAPI
- CcUnpinRepinnedBcb(
- IN PVOID Bcb,
- IN BOOLEAN WriteThrough,
- OUT PIO_STATUS_BLOCK IoStatus);
- NTKERNELAPI
- PFILE_OBJECT
- NTAPI
- CcGetFileObjectFromSectionPtrs(
- IN PSECTION_OBJECT_POINTERS SectionObjectPointer);
- NTKERNELAPI
- PFILE_OBJECT
- NTAPI
- CcGetFileObjectFromBcb(
- IN PVOID Bcb);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- CcCanIWrite(
- IN PFILE_OBJECT FileObject,
- IN ULONG BytesToWrite,
- IN BOOLEAN Wait,
- IN BOOLEAN Retrying);
- NTKERNELAPI
- VOID
- NTAPI
- CcDeferWrite(
- IN PFILE_OBJECT FileObject,
- IN PCC_POST_DEFERRED_WRITE PostRoutine,
- IN PVOID Context1,
- IN PVOID Context2,
- IN ULONG BytesToWrite,
- IN BOOLEAN Retrying);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- CcCopyRead(
- IN PFILE_OBJECT FileObject,
- IN PLARGE_INTEGER FileOffset,
- IN ULONG Length,
- IN BOOLEAN Wait,
- OUT PVOID Buffer,
- OUT PIO_STATUS_BLOCK IoStatus);
- NTKERNELAPI
- VOID
- NTAPI
- CcFastCopyRead(
- IN PFILE_OBJECT FileObject,
- IN ULONG FileOffset,
- IN ULONG Length,
- IN ULONG PageCount,
- OUT PVOID Buffer,
- OUT PIO_STATUS_BLOCK IoStatus);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- CcCopyWrite(
- IN PFILE_OBJECT FileObject,
- IN PLARGE_INTEGER FileOffset,
- IN ULONG Length,
- IN BOOLEAN Wait,
- IN PVOID Buffer);
- NTKERNELAPI
- VOID
- NTAPI
- CcFastCopyWrite(
- IN PFILE_OBJECT FileObject,
- IN ULONG FileOffset,
- IN ULONG Length,
- IN PVOID Buffer);
- NTKERNELAPI
- VOID
- NTAPI
- CcMdlRead(
- IN PFILE_OBJECT FileObject,
- IN PLARGE_INTEGER FileOffset,
- IN ULONG Length,
- OUT PMDL *MdlChain,
- OUT PIO_STATUS_BLOCK IoStatus);
- NTKERNELAPI
- VOID
- NTAPI
- CcMdlReadComplete(
- IN PFILE_OBJECT FileObject,
- IN PMDL MdlChain);
- NTKERNELAPI
- VOID
- NTAPI
- CcPrepareMdlWrite(
- IN PFILE_OBJECT FileObject,
- IN PLARGE_INTEGER FileOffset,
- IN ULONG Length,
- OUT PMDL *MdlChain,
- OUT PIO_STATUS_BLOCK IoStatus);
- NTKERNELAPI
- VOID
- NTAPI
- CcMdlWriteComplete(
- IN PFILE_OBJECT FileObject,
- IN PLARGE_INTEGER FileOffset,
- IN PMDL MdlChain);
- NTKERNELAPI
- VOID
- NTAPI
- CcScheduleReadAhead(
- IN PFILE_OBJECT FileObject,
- IN PLARGE_INTEGER FileOffset,
- IN ULONG Length);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- CcWaitForCurrentLazyWriterActivity(
- VOID);
- NTKERNELAPI
- VOID
- NTAPI
- CcSetReadAheadGranularity(
- IN PFILE_OBJECT FileObject,
- IN ULONG Granularity);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- CcPinRead(
- IN PFILE_OBJECT FileObject,
- IN PLARGE_INTEGER FileOffset,
- IN ULONG Length,
- IN ULONG Flags,
- OUT PVOID *Bcb,
- OUT PVOID *Buffer);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- CcPinMappedData(
- IN PFILE_OBJECT FileObject,
- IN PLARGE_INTEGER FileOffset,
- IN ULONG Length,
- IN ULONG Flags,
- IN OUT PVOID *Bcb);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- CcPreparePinWrite(
- IN PFILE_OBJECT FileObject,
- IN PLARGE_INTEGER FileOffset,
- IN ULONG Length,
- IN BOOLEAN Zero,
- IN ULONG Flags,
- OUT PVOID *Bcb,
- OUT PVOID *Buffer);
- NTKERNELAPI
- VOID
- NTAPI
- CcSetDirtyPinnedData(
- IN PVOID BcbVoid,
- IN PLARGE_INTEGER Lsn OPTIONAL);
- NTKERNELAPI
- VOID
- NTAPI
- CcUnpinData(
- IN PVOID Bcb);
- NTKERNELAPI
- VOID
- NTAPI
- CcSetBcbOwnerPointer(
- IN PVOID Bcb,
- IN PVOID OwnerPointer);
- NTKERNELAPI
- VOID
- NTAPI
- CcUnpinDataForThread(
- IN PVOID Bcb,
- IN ERESOURCE_THREAD ResourceThreadId);
- NTKERNELAPI
- VOID
- NTAPI
- CcSetAdditionalCacheAttributes(
- IN PFILE_OBJECT FileObject,
- IN BOOLEAN DisableReadAhead,
- IN BOOLEAN DisableWriteBehind);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- CcIsThereDirtyData(
- IN PVPB Vpb);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
- #if (NTDDI_VERSION >= NTDDI_WINXP)
- NTKERNELAPI
- VOID
- NTAPI
- CcMdlWriteAbort(
- IN PFILE_OBJECT FileObject,
- IN PMDL MdlChain);
- NTKERNELAPI
- VOID
- NTAPI
- CcSetLogHandleForFile(
- IN PFILE_OBJECT FileObject,
- IN PVOID LogHandle,
- IN PFLUSH_TO_LSN FlushToLsnRoutine);
- NTKERNELAPI
- LARGE_INTEGER
- NTAPI
- CcGetDirtyPages(
- IN PVOID LogHandle,
- IN PDIRTY_PAGE_ROUTINE DirtyPageRoutine,
- IN PVOID Context1,
- IN PVOID Context2);
- #endif
- #if (NTDDI_VERSION >= NTDDI_WINXP)
- NTKERNELAPI
- BOOLEAN
- NTAPI
- CcMapData(
- IN PFILE_OBJECT FileObject,
- IN PLARGE_INTEGER FileOffset,
- IN ULONG Length,
- IN ULONG Flags,
- OUT PVOID *Bcb,
- OUT PVOID *Buffer);
- #elif (NTDDI_VERSION >= NTDDI_WIN2K)
- NTKERNELAPI
- BOOLEAN
- NTAPI
- CcMapData(
- IN PFILE_OBJECT FileObject,
- IN PLARGE_INTEGER FileOffset,
- IN ULONG Length,
- IN BOOLEAN Wait,
- OUT PVOID *Bcb,
- OUT PVOID *Buffer);
- #endif
- #if (NTDDI_VERSION >= NTDDI_VISTA)
- NTKERNELAPI
- NTSTATUS
- NTAPI
- CcSetFileSizesEx(
- IN PFILE_OBJECT FileObject,
- IN PCC_FILE_SIZES FileSizes);
- NTKERNELAPI
- PFILE_OBJECT
- NTAPI
- CcGetFileObjectFromSectionPtrsRef(
- IN PSECTION_OBJECT_POINTERS SectionObjectPointer);
- NTKERNELAPI
- VOID
- NTAPI
- CcSetParallelFlushFile(
- IN PFILE_OBJECT FileObject,
- IN BOOLEAN EnableParallelFlush);
- NTKERNELAPI
- BOOLEAN
- CcIsThereDirtyDataEx(
- IN PVPB Vpb,
- IN PULONG NumberOfDirtyPages OPTIONAL);
- #endif
- #if (NTDDI_VERSION >= NTDDI_WIN7)
- NTKERNELAPI
- VOID
- NTAPI
- CcCoherencyFlushAndPurgeCache(
- IN PSECTION_OBJECT_POINTERS SectionObjectPointer,
- IN PLARGE_INTEGER FileOffset OPTIONAL,
- IN ULONG Length,
- OUT PIO_STATUS_BLOCK IoStatus,
- IN ULONG Flags OPTIONAL);
- #endif
- #define CcGetFileSizePointer(FO) ( \
- ((PLARGE_INTEGER)((FO)->SectionObjectPointer->SharedCacheMap) + 1) \
- )
- #if (NTDDI_VERSION >= NTDDI_VISTA)
- NTKERNELAPI
- BOOLEAN
- NTAPI
- CcPurgeCacheSection(
- IN PSECTION_OBJECT_POINTERS SectionObjectPointer,
- IN PLARGE_INTEGER FileOffset OPTIONAL,
- IN ULONG Length,
- IN ULONG Flags);
- #elif (NTDDI_VERSION >= NTDDI_WIN2K)
- NTKERNELAPI
- BOOLEAN
- NTAPI
- CcPurgeCacheSection(
- IN PSECTION_OBJECT_POINTERS SectionObjectPointer,
- IN PLARGE_INTEGER FileOffset OPTIONAL,
- IN ULONG Length,
- IN BOOLEAN UninitializeCacheMaps);
- #endif
- #if (NTDDI_VERSION >= NTDDI_WIN7)
- NTKERNELAPI
- BOOLEAN
- NTAPI
- CcCopyWriteWontFlush(
- IN PFILE_OBJECT FileObject,
- IN PLARGE_INTEGER FileOffset,
- IN ULONG Length);
- #else
- #define CcCopyWriteWontFlush(FO, FOFF, LEN) ((LEN) <= 0x10000)
- #endif
- #define CcReadAhead(FO, FOFF, LEN) ( \
- if ((LEN) >= 256) { \
- CcScheduleReadAhead((FO), (FOFF), (LEN)); \
- } \
- )
- /******************************************************************************
- * ZwXxx Functions *
- ******************************************************************************/
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwQueryEaFile(
- IN HANDLE FileHandle,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- OUT PVOID Buffer,
- IN ULONG Length,
- IN BOOLEAN ReturnSingleEntry,
- IN PVOID EaList OPTIONAL,
- IN ULONG EaListLength,
- IN PULONG EaIndex OPTIONAL,
- IN BOOLEAN RestartScan);
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwSetEaFile(
- IN HANDLE FileHandle,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- OUT PVOID Buffer,
- IN ULONG Length);
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwDuplicateToken(
- IN HANDLE ExistingTokenHandle,
- IN ACCESS_MASK DesiredAccess,
- IN POBJECT_ATTRIBUTES ObjectAttributes,
- IN BOOLEAN EffectiveOnly,
- IN TOKEN_TYPE TokenType,
- OUT PHANDLE NewTokenHandle);
- #if (NTDDI_VERSION >= NTDDI_WIN2K)
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwQueryObject(
- IN HANDLE Handle OPTIONAL,
- IN OBJECT_INFORMATION_CLASS ObjectInformationClass,
- OUT PVOID ObjectInformation OPTIONAL,
- IN ULONG ObjectInformationLength,
- OUT PULONG ReturnLength OPTIONAL);
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwNotifyChangeKey(
- IN HANDLE KeyHandle,
- IN HANDLE EventHandle OPTIONAL,
- IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
- IN PVOID ApcContext OPTIONAL,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- IN ULONG NotifyFilter,
- IN BOOLEAN WatchSubtree,
- OUT PVOID Buffer,
- IN ULONG BufferLength,
- IN BOOLEAN Asynchronous);
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwCreateEvent(
- OUT PHANDLE EventHandle,
- IN ACCESS_MASK DesiredAccess,
- IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
- IN EVENT_TYPE EventType,
- IN BOOLEAN InitialState);
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwDeleteFile(
- IN POBJECT_ATTRIBUTES ObjectAttributes);
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwQueryDirectoryFile(
- IN HANDLE FileHandle,
- IN HANDLE Event OPTIONAL,
- IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
- IN PVOID ApcContext OPTIONAL,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- OUT PVOID FileInformation,
- IN ULONG Length,
- IN FILE_INFORMATION_CLASS FileInformationClass,
- IN BOOLEAN ReturnSingleEntry,
- IN PUNICODE_STRING FileName OPTIONAL,
- IN BOOLEAN RestartScan);
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwSetVolumeInformationFile(
- IN HANDLE FileHandle,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- IN PVOID FsInformation,
- IN ULONG Length,
- IN FS_INFORMATION_CLASS FsInformationClass);
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwFsControlFile(
- IN HANDLE FileHandle,
- IN HANDLE Event OPTIONAL,
- IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
- IN PVOID ApcContext OPTIONAL,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- IN ULONG FsControlCode,
- IN PVOID InputBuffer OPTIONAL,
- IN ULONG InputBufferLength,
- OUT PVOID OutputBuffer OPTIONAL,
- IN ULONG OutputBufferLength);
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwDuplicateObject(
- IN HANDLE SourceProcessHandle,
- IN HANDLE SourceHandle,
- IN HANDLE TargetProcessHandle OPTIONAL,
- OUT PHANDLE TargetHandle OPTIONAL,
- IN ACCESS_MASK DesiredAccess,
- IN ULONG HandleAttributes,
- IN ULONG Options);
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwOpenDirectoryObject(
- OUT PHANDLE DirectoryHandle,
- IN ACCESS_MASK DesiredAccess,
- IN POBJECT_ATTRIBUTES ObjectAttributes);
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwAllocateVirtualMemory(
- IN HANDLE ProcessHandle,
- IN OUT PVOID *BaseAddress,
- IN ULONG_PTR ZeroBits,
- IN OUT PSIZE_T RegionSize,
- IN ULONG AllocationType,
- IN ULONG Protect);
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwFreeVirtualMemory(
- IN HANDLE ProcessHandle,
- IN OUT PVOID *BaseAddress,
- IN OUT PSIZE_T RegionSize,
- IN ULONG FreeType);
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwWaitForSingleObject(
- IN HANDLE Handle,
- IN BOOLEAN Alertable,
- IN PLARGE_INTEGER Timeout OPTIONAL);
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwSetEvent(
- IN HANDLE EventHandle,
- OUT PLONG PreviousState OPTIONAL);
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwFlushVirtualMemory(
- IN HANDLE ProcessHandle,
- IN OUT PVOID *BaseAddress,
- IN OUT PSIZE_T RegionSize,
- OUT PIO_STATUS_BLOCK IoStatusBlock);
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwQueryInformationToken(
- IN HANDLE TokenHandle,
- IN TOKEN_INFORMATION_CLASS TokenInformationClass,
- OUT PVOID TokenInformation,
- IN ULONG Length,
- OUT PULONG ResultLength);
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwSetSecurityObject(
- IN HANDLE Handle,
- IN SECURITY_INFORMATION SecurityInformation,
- IN PSECURITY_DESCRIPTOR SecurityDescriptor);
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwQuerySecurityObject(
- IN HANDLE FileHandle,
- IN SECURITY_INFORMATION SecurityInformation,
- OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
- IN ULONG Length,
- OUT PULONG ResultLength);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
- #if (NTDDI_VERSION >= NTDDI_WINXP)
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwOpenProcessTokenEx(
- IN HANDLE ProcessHandle,
- IN ACCESS_MASK DesiredAccess,
- IN ULONG HandleAttributes,
- OUT PHANDLE TokenHandle);
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwOpenThreadTokenEx(
- IN HANDLE ThreadHandle,
- IN ACCESS_MASK DesiredAccess,
- IN BOOLEAN OpenAsSelf,
- IN ULONG HandleAttributes,
- OUT PHANDLE TokenHandle);
- #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
- #if (NTDDI_VERSION >= NTDDI_VISTA)
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwLockFile(
- IN HANDLE FileHandle,
- IN HANDLE Event OPTIONAL,
- IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
- IN PVOID ApcContext OPTIONAL,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- IN PLARGE_INTEGER ByteOffset,
- IN PLARGE_INTEGER Length,
- IN ULONG Key,
- IN BOOLEAN FailImmediately,
- IN BOOLEAN ExclusiveLock);
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwUnlockFile(
- IN HANDLE FileHandle,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- IN PLARGE_INTEGER ByteOffset,
- IN PLARGE_INTEGER Length,
- IN ULONG Key);
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwQueryQuotaInformationFile(
- IN HANDLE FileHandle,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- OUT PVOID Buffer,
- IN ULONG Length,
- IN BOOLEAN ReturnSingleEntry,
- IN PVOID SidList,
- IN ULONG SidListLength,
- IN PSID StartSid OPTIONAL,
- IN BOOLEAN RestartScan);
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwSetQuotaInformationFile(
- IN HANDLE FileHandle,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- IN PVOID Buffer,
- IN ULONG Length);
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwFlushBuffersFile(
- IN HANDLE FileHandle,
- OUT PIO_STATUS_BLOCK IoStatusBlock);
- #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
- #if (NTDDI_VERSION >= NTDDI_WIN7)
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwSetInformationToken(
- IN HANDLE TokenHandle,
- IN TOKEN_INFORMATION_CLASS TokenInformationClass,
- IN PVOID TokenInformation,
- IN ULONG TokenInformationLength);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
- /* #if !defined(_X86AMD64_) FIXME : WHAT ?! */
- #if defined(_WIN64)
- C_ASSERT(sizeof(ERESOURCE) == 0x68);
- C_ASSERT(FIELD_OFFSET(ERESOURCE,ActiveCount) == 0x18);
- C_ASSERT(FIELD_OFFSET(ERESOURCE,Flag) == 0x1a);
- #else
- C_ASSERT(sizeof(ERESOURCE) == 0x38);
- C_ASSERT(FIELD_OFFSET(ERESOURCE,ActiveCount) == 0x0c);
- C_ASSERT(FIELD_OFFSET(ERESOURCE,Flag) == 0x0e);
- #endif
- /* #endif */
- #if defined(_IA64_)
- #if (NTDDI_VERSION >= NTDDI_WIN2K)
- //DECLSPEC_DEPRECATED_DDK
- NTHALAPI
- ULONG
- NTAPI
- HalGetDmaAlignmentRequirement(
- VOID);
- #endif
- #endif
- #if defined(_M_IX86) || defined(_M_AMD64)
- #define HalGetDmaAlignmentRequirement() 1L
- #endif
- extern NTKERNELAPI PUSHORT NlsOemLeadByteInfo;
- #define NLS_OEM_LEAD_BYTE_INFO NlsOemLeadByteInfo
- #ifdef NLS_MB_CODE_PAGE_TAG
- #undef NLS_MB_CODE_PAGE_TAG
- #endif
- #define NLS_MB_CODE_PAGE_TAG NlsMbOemCodePageTag
- #if (NTDDI_VERSION >= NTDDI_VISTA)
- typedef enum _NETWORK_OPEN_LOCATION_QUALIFIER {
- NetworkOpenLocationAny,
- NetworkOpenLocationRemote,
- NetworkOpenLocationLoopback
- } NETWORK_OPEN_LOCATION_QUALIFIER;
- typedef enum _NETWORK_OPEN_INTEGRITY_QUALIFIER {
- NetworkOpenIntegrityAny,
- NetworkOpenIntegrityNone,
- NetworkOpenIntegritySigned,
- NetworkOpenIntegrityEncrypted,
- NetworkOpenIntegrityMaximum
- } NETWORK_OPEN_INTEGRITY_QUALIFIER;
- #if (NTDDI_VERSION >= NTDDI_WIN7)
- #define NETWORK_OPEN_ECP_IN_FLAG_DISABLE_HANDLE_COLLAPSING 0x1
- #define NETWORK_OPEN_ECP_IN_FLAG_DISABLE_HANDLE_DURABILITY 0x2
- #define NETWORK_OPEN_ECP_IN_FLAG_FORCE_BUFFERED_SYNCHRONOUS_IO_HACK 0x80000000
- typedef struct _NETWORK_OPEN_ECP_CONTEXT {
- USHORT Size;
- USHORT Reserved;
- _ANONYMOUS_STRUCT struct {
- struct {
- NETWORK_OPEN_LOCATION_QUALIFIER Location;
- NETWORK_OPEN_INTEGRITY_QUALIFIER Integrity;
- ULONG Flags;
- } in;
- struct {
- NETWORK_OPEN_LOCATION_QUALIFIER Location;
- NETWORK_OPEN_INTEGRITY_QUALIFIER Integrity;
- ULONG Flags;
- } out;
- } DUMMYSTRUCTNAME;
- } NETWORK_OPEN_ECP_CONTEXT, *PNETWORK_OPEN_ECP_CONTEXT;
- typedef struct _NETWORK_OPEN_ECP_CONTEXT_V0 {
- USHORT Size;
- USHORT Reserved;
- _ANONYMOUS_STRUCT struct {
- struct {
- NETWORK_OPEN_LOCATION_QUALIFIER Location;
- NETWORK_OPEN_INTEGRITY_QUALIFIER Integrity;
- } in;
- struct {
- NETWORK_OPEN_LOCATION_QUALIFIER Location;
- NETWORK_OPEN_INTEGRITY_QUALIFIER Integrity;
- } out;
- } DUMMYSTRUCTNAME;
- } NETWORK_OPEN_ECP_CONTEXT_V0, *PNETWORK_OPEN_ECP_CONTEXT_V0;
- #elif (NTDDI_VERSION >= NTDDI_VISTA)
- typedef struct _NETWORK_OPEN_ECP_CONTEXT {
- USHORT Size;
- USHORT Reserved;
- _ANONYMOUS_STRUCT struct {
- struct {
- NETWORK_OPEN_LOCATION_QUALIFIER Location;
- NETWORK_OPEN_INTEGRITY_QUALIFIER Integrity;
- } in;
- struct {
- NETWORK_OPEN_LOCATION_QUALIFIER Location;
- NETWORK_OPEN_INTEGRITY_QUALIFIER Integrity;
- } out;
- } DUMMYSTRUCTNAME;
- } NETWORK_OPEN_ECP_CONTEXT, *PNETWORK_OPEN_ECP_CONTEXT;
- #endif
- DEFINE_GUID(GUID_ECP_NETWORK_OPEN_CONTEXT, 0xc584edbf, 0x00df, 0x4d28, 0xb8, 0x84, 0x35, 0xba, 0xca, 0x89, 0x11, 0xe8);
- #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
- #if (NTDDI_VERSION >= NTDDI_VISTA)
- typedef struct _PREFETCH_OPEN_ECP_CONTEXT {
- PVOID Context;
- } PREFETCH_OPEN_ECP_CONTEXT, *PPREFETCH_OPEN_ECP_CONTEXT;
- DEFINE_GUID(GUID_ECP_PREFETCH_OPEN, 0xe1777b21, 0x847e, 0x4837, 0xaa, 0x45, 0x64, 0x16, 0x1d, 0x28, 0x6, 0x55);
- #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
- #if (NTDDI_VERSION >= NTDDI_WIN7)
- DEFINE_GUID (GUID_ECP_NFS_OPEN, 0xf326d30c, 0xe5f8, 0x4fe7, 0xab, 0x74, 0xf5, 0xa3, 0x19, 0x6d, 0x92, 0xdb);
- DEFINE_GUID (GUID_ECP_SRV_OPEN, 0xbebfaebc, 0xaabf, 0x489d, 0x9d, 0x2c, 0xe9, 0xe3, 0x61, 0x10, 0x28, 0x53);
- typedef struct sockaddr_storage *PSOCKADDR_STORAGE_NFS;
- typedef struct _NFS_OPEN_ECP_CONTEXT {
- PUNICODE_STRING ExportAlias;
- PSOCKADDR_STORAGE_NFS ClientSocketAddress;
- } NFS_OPEN_ECP_CONTEXT, *PNFS_OPEN_ECP_CONTEXT, **PPNFS_OPEN_ECP_CONTEXT;
- typedef struct _SRV_OPEN_ECP_CONTEXT {
- PUNICODE_STRING ShareName;
- PSOCKADDR_STORAGE_NFS SocketAddress;
- BOOLEAN OplockBlockState;
- BOOLEAN OplockAppState;
- BOOLEAN OplockFinalState;
- } SRV_OPEN_ECP_CONTEXT, *PSRV_OPEN_ECP_CONTEXT;
- #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
- #define PIN_WAIT (1)
- #define PIN_EXCLUSIVE (2)
- #define PIN_NO_READ (4)
- #define PIN_IF_BCB (8)
- #define PIN_CALLER_TRACKS_DIRTY_DATA (32)
- #define PIN_HIGH_PRIORITY (64)
- #define MAP_WAIT 1
- #define MAP_NO_READ (16)
- #define MAP_HIGH_PRIORITY (64)
- #define IOCTL_REDIR_QUERY_PATH CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 99, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define IOCTL_REDIR_QUERY_PATH_EX CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 100, METHOD_NEITHER, FILE_ANY_ACCESS)
- typedef struct _QUERY_PATH_REQUEST {
- ULONG PathNameLength;
- PIO_SECURITY_CONTEXT SecurityContext;
- WCHAR FilePathName[1];
- } QUERY_PATH_REQUEST, *PQUERY_PATH_REQUEST;
- typedef struct _QUERY_PATH_REQUEST_EX {
- PIO_SECURITY_CONTEXT pSecurityContext;
- ULONG EaLength;
- PVOID pEaBuffer;
- UNICODE_STRING PathName;
- UNICODE_STRING DomainServiceName;
- ULONG_PTR Reserved[ 3 ];
- } QUERY_PATH_REQUEST_EX, *PQUERY_PATH_REQUEST_EX;
- typedef struct _QUERY_PATH_RESPONSE {
- ULONG LengthAccepted;
- } QUERY_PATH_RESPONSE, *PQUERY_PATH_RESPONSE;
- #define VOLSNAPCONTROLTYPE 0x00000053
- #define IOCTL_VOLSNAP_FLUSH_AND_HOLD_WRITES CTL_CODE(VOLSNAPCONTROLTYPE, 0, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
- /* FIXME : These definitions below don't belong here (or anywhere in ddk really) */
- #pragma pack(push,4)
- #ifndef VER_PRODUCTBUILD
- #define VER_PRODUCTBUILD 10000
- #endif
- #include "csq.h"
- extern PACL SePublicDefaultDacl;
- extern PACL SeSystemDefaultDacl;
- #define FS_LFN_APIS 0x00004000
- #define FILE_STORAGE_TYPE_SPECIFIED 0x00000041 /* FILE_DIRECTORY_FILE | FILE_NON_DIRECTORY_FILE */
- #define FILE_STORAGE_TYPE_DEFAULT (StorageTypeDefault << FILE_STORAGE_TYPE_SHIFT)
- #define FILE_STORAGE_TYPE_DIRECTORY (StorageTypeDirectory << FILE_STORAGE_TYPE_SHIFT)
- #define FILE_STORAGE_TYPE_FILE (StorageTypeFile << FILE_STORAGE_TYPE_SHIFT)
- #define FILE_STORAGE_TYPE_DOCFILE (StorageTypeDocfile << FILE_STORAGE_TYPE_SHIFT)
- #define FILE_STORAGE_TYPE_JUNCTION_POINT (StorageTypeJunctionPoint << FILE_STORAGE_TYPE_SHIFT)
- #define FILE_STORAGE_TYPE_CATALOG (StorageTypeCatalog << FILE_STORAGE_TYPE_SHIFT)
- #define FILE_STORAGE_TYPE_STRUCTURED_STORAGE (StorageTypeStructuredStorage << FILE_STORAGE_TYPE_SHIFT)
- #define FILE_STORAGE_TYPE_EMBEDDING (StorageTypeEmbedding << FILE_STORAGE_TYPE_SHIFT)
- #define FILE_STORAGE_TYPE_STREAM (StorageTypeStream << FILE_STORAGE_TYPE_SHIFT)
- #define FILE_MINIMUM_STORAGE_TYPE FILE_STORAGE_TYPE_DEFAULT
- #define FILE_MAXIMUM_STORAGE_TYPE FILE_STORAGE_TYPE_STREAM
- #define FILE_STORAGE_TYPE_MASK 0x000f0000
- #define FILE_STORAGE_TYPE_SHIFT 16
- #define FILE_VC_QUOTAS_LOG_VIOLATIONS 0x00000004
- #ifdef _X86_
- #define HARDWARE_PTE HARDWARE_PTE_X86
- #define PHARDWARE_PTE PHARDWARE_PTE_X86
- #endif
- #define IO_ATTACH_DEVICE_API 0x80000000
- #define IO_TYPE_APC 18
- #define IO_TYPE_DPC 19
- #define IO_TYPE_DEVICE_QUEUE 20
- #define IO_TYPE_EVENT_PAIR 21
- #define IO_TYPE_INTERRUPT 22
- #define IO_TYPE_PROFILE 23
- #define IRP_BEING_VERIFIED 0x10
- #define MAILSLOT_CLASS_FIRSTCLASS 1
- #define MAILSLOT_CLASS_SECONDCLASS 2
- #define MAILSLOT_SIZE_AUTO 0
- #define MEM_DOS_LIM 0x40000000
- #define OB_TYPE_TYPE 1
- #define OB_TYPE_DIRECTORY 2
- #define OB_TYPE_SYMBOLIC_LINK 3
- #define OB_TYPE_TOKEN 4
- #define OB_TYPE_PROCESS 5
- #define OB_TYPE_THREAD 6
- #define OB_TYPE_EVENT 7
- #define OB_TYPE_EVENT_PAIR 8
- #define OB_TYPE_MUTANT 9
- #define OB_TYPE_SEMAPHORE 10
- #define OB_TYPE_TIMER 11
- #define OB_TYPE_PROFILE 12
- #define OB_TYPE_WINDOW_STATION 13
- #define OB_TYPE_DESKTOP 14
- #define OB_TYPE_SECTION 15
- #define OB_TYPE_KEY 16
- #define OB_TYPE_PORT 17
- #define OB_TYPE_ADAPTER 18
- #define OB_TYPE_CONTROLLER 19
- #define OB_TYPE_DEVICE 20
- #define OB_TYPE_DRIVER 21
- #define OB_TYPE_IO_COMPLETION 22
- #define OB_TYPE_FILE 23
- #define SEC_BASED 0x00200000
- /* end winnt.h */
- #define TOKEN_HAS_ADMIN_GROUP 0x08
- #if (VER_PRODUCTBUILD >= 1381)
- #define FSCTL_GET_HFS_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 31, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #endif /* (VER_PRODUCTBUILD >= 1381) */
- #if (VER_PRODUCTBUILD >= 2195)
- #define FSCTL_READ_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 33, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define FSCTL_WRITE_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 34, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define FSCTL_DUMP_PROPERTY_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 37, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define FSCTL_HSM_MSG CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 66, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA)
- #define FSCTL_NSS_CONTROL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 67, METHOD_BUFFERED, FILE_WRITE_DATA)
- #define FSCTL_HSM_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 68, METHOD_NEITHER, FILE_READ_DATA | FILE_WRITE_DATA)
- #define FSCTL_NSS_RCONTROL CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 70, METHOD_BUFFERED, FILE_READ_DATA)
- #endif /* (VER_PRODUCTBUILD >= 2195) */
- #define FSCTL_NETWORK_SET_CONFIGURATION_INFO CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 102, METHOD_IN_DIRECT, FILE_ANY_ACCESS)
- #define FSCTL_NETWORK_GET_CONFIGURATION_INFO CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 103, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
- #define FSCTL_NETWORK_GET_CONNECTION_INFO CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 104, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define FSCTL_NETWORK_ENUMERATE_CONNECTIONS CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 105, METHOD_NEITHER, FILE_ANY_ACCESS)
- #define FSCTL_NETWORK_DELETE_CONNECTION CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 107, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_NETWORK_GET_STATISTICS CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 116, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_NETWORK_SET_DOMAIN_NAME CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 120, METHOD_BUFFERED, FILE_ANY_ACCESS)
- #define FSCTL_NETWORK_REMOTE_BOOT_INIT_SCRT CTL_CODE(FILE_DEVICE_NETWORK_FILE_SYSTEM, 250, METHOD_BUFFERED, FILE_ANY_ACCESS)
- typedef enum _FILE_STORAGE_TYPE {
- StorageTypeDefault = 1,
- StorageTypeDirectory,
- StorageTypeFile,
- StorageTypeJunctionPoint,
- StorageTypeCatalog,
- StorageTypeStructuredStorage,
- StorageTypeEmbedding,
- StorageTypeStream
- } FILE_STORAGE_TYPE;
- typedef struct _OBJECT_BASIC_INFORMATION
- {
- ULONG Attributes;
- ACCESS_MASK GrantedAccess;
- ULONG HandleCount;
- ULONG PointerCount;
- ULONG PagedPoolCharge;
- ULONG NonPagedPoolCharge;
- ULONG Reserved[ 3 ];
- ULONG NameInfoSize;
- ULONG TypeInfoSize;
- ULONG SecurityDescriptorSize;
- LARGE_INTEGER CreationTime;
- } OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION;
- typedef struct _BITMAP_RANGE {
- LIST_ENTRY Links;
- LONGLONG BasePage;
- ULONG FirstDirtyPage;
- ULONG LastDirtyPage;
- ULONG DirtyPages;
- PULONG Bitmap;
- } BITMAP_RANGE, *PBITMAP_RANGE;
- typedef struct _FILE_COPY_ON_WRITE_INFORMATION {
- BOOLEAN ReplaceIfExists;
- HANDLE RootDirectory;
- ULONG FileNameLength;
- WCHAR FileName[1];
- } FILE_COPY_ON_WRITE_INFORMATION, *PFILE_COPY_ON_WRITE_INFORMATION;
- typedef struct _FILE_FULL_DIRECTORY_INFORMATION {
- ULONG NextEntryOffset;
- ULONG FileIndex;
- LARGE_INTEGER CreationTime;
- LARGE_INTEGER LastAccessTime;
- LARGE_INTEGER LastWriteTime;
- LARGE_INTEGER ChangeTime;
- LARGE_INTEGER EndOfFile;
- LARGE_INTEGER AllocationSize;
- ULONG FileAttributes;
- ULONG FileNameLength;
- ULONG EaSize;
- WCHAR FileName[ANYSIZE_ARRAY];
- } FILE_FULL_DIRECTORY_INFORMATION, *PFILE_FULL_DIRECTORY_INFORMATION;
- /* raw internal file lock struct returned from FsRtlGetNextFileLock */
- typedef struct _FILE_SHARED_LOCK_ENTRY {
- PVOID Unknown1;
- PVOID Unknown2;
- FILE_LOCK_INFO FileLock;
- } FILE_SHARED_LOCK_ENTRY, *PFILE_SHARED_LOCK_ENTRY;
- /* raw internal file lock struct returned from FsRtlGetNextFileLock */
- typedef struct _FILE_EXCLUSIVE_LOCK_ENTRY {
- LIST_ENTRY ListEntry;
- PVOID Unknown1;
- PVOID Unknown2;
- FILE_LOCK_INFO FileLock;
- } FILE_EXCLUSIVE_LOCK_ENTRY, *PFILE_EXCLUSIVE_LOCK_ENTRY;
- typedef struct _FILE_MAILSLOT_PEEK_BUFFER {
- ULONG ReadDataAvailable;
- ULONG NumberOfMessages;
- ULONG MessageLength;
- } FILE_MAILSLOT_PEEK_BUFFER, *PFILE_MAILSLOT_PEEK_BUFFER;
- typedef struct _FILE_OLE_CLASSID_INFORMATION {
- GUID ClassId;
- } FILE_OLE_CLASSID_INFORMATION, *PFILE_OLE_CLASSID_INFORMATION;
- typedef struct _FILE_OLE_ALL_INFORMATION {
- FILE_BASIC_INFORMATION BasicInformation;
- FILE_STANDARD_INFORMATION StandardInformation;
- FILE_INTERNAL_INFORMATION InternalInformation;
- FILE_EA_INFORMATION EaInformation;
- FILE_ACCESS_INFORMATION AccessInformation;
- FILE_POSITION_INFORMATION PositionInformation;
- FILE_MODE_INFORMATION ModeInformation;
- FILE_ALIGNMENT_INFORMATION AlignmentInformation;
- USN LastChangeUsn;
- USN ReplicationUsn;
- LARGE_INTEGER SecurityChangeTime;
- FILE_OLE_CLASSID_INFORMATION OleClassIdInformation;
- FILE_OBJECTID_INFORMATION ObjectIdInformation;
- FILE_STORAGE_TYPE StorageType;
- ULONG OleStateBits;
- ULONG OleId;
- ULONG NumberOfStreamReferences;
- ULONG StreamIndex;
- ULONG SecurityId;
- BOOLEAN ContentIndexDisable;
- BOOLEAN InheritContentIndexDisable;
- FILE_NAME_INFORMATION NameInformation;
- } FILE_OLE_ALL_INFORMATION, *PFILE_OLE_ALL_INFORMATION;
- typedef struct _FILE_OLE_DIR_INFORMATION {
- ULONG NextEntryOffset;
- ULONG FileIndex;
- LARGE_INTEGER CreationTime;
- LARGE_INTEGER LastAccessTime;
- LARGE_INTEGER LastWriteTime;
- LARGE_INTEGER ChangeTime;
- LARGE_INTEGER EndOfFile;
- LARGE_INTEGER AllocationSize;
- ULONG FileAttributes;
- ULONG FileNameLength;
- FILE_STORAGE_TYPE StorageType;
- GUID OleClassId;
- ULONG OleStateBits;
- BOOLEAN ContentIndexDisable;
- BOOLEAN InheritContentIndexDisable;
- WCHAR FileName[1];
- } FILE_OLE_DIR_INFORMATION, *PFILE_OLE_DIR_INFORMATION;
- typedef struct _FILE_OLE_INFORMATION {
- LARGE_INTEGER SecurityChangeTime;
- FILE_OLE_CLASSID_INFORMATION OleClassIdInformation;
- FILE_OBJECTID_INFORMATION ObjectIdInformation;
- FILE_STORAGE_TYPE StorageType;
- ULONG OleStateBits;
- BOOLEAN ContentIndexDisable;
- BOOLEAN InheritContentIndexDisable;
- } FILE_OLE_INFORMATION, *PFILE_OLE_INFORMATION;
- typedef struct _FILE_OLE_STATE_BITS_INFORMATION {
- ULONG StateBits;
- ULONG StateBitsMask;
- } FILE_OLE_STATE_BITS_INFORMATION, *PFILE_OLE_STATE_BITS_INFORMATION;
- typedef struct _MAPPING_PAIR {
- ULONGLONG Vcn;
- ULONGLONG Lcn;
- } MAPPING_PAIR, *PMAPPING_PAIR;
- typedef struct _GET_RETRIEVAL_DESCRIPTOR {
- ULONG NumberOfPairs;
- ULONGLONG StartVcn;
- MAPPING_PAIR Pair[1];
- } GET_RETRIEVAL_DESCRIPTOR, *PGET_RETRIEVAL_DESCRIPTOR;
- typedef struct _MBCB {
- CSHORT NodeTypeCode;
- CSHORT NodeIsInZone;
- ULONG PagesToWrite;
- ULONG DirtyPages;
- ULONG Reserved;
- LIST_ENTRY BitmapRanges;
- LONGLONG ResumeWritePage;
- BITMAP_RANGE BitmapRange1;
- BITMAP_RANGE BitmapRange2;
- BITMAP_RANGE BitmapRange3;
- } MBCB, *PMBCB;
- typedef struct _MOVEFILE_DESCRIPTOR {
- HANDLE FileHandle;
- ULONG Reserved;
- LARGE_INTEGER StartVcn;
- LARGE_INTEGER TargetLcn;
- ULONG NumVcns;
- ULONG Reserved1;
- } MOVEFILE_DESCRIPTOR, *PMOVEFILE_DESCRIPTOR;
- typedef struct _OBJECT_BASIC_INFO {
- ULONG Attributes;
- ACCESS_MASK GrantedAccess;
- ULONG HandleCount;
- ULONG ReferenceCount;
- ULONG PagedPoolUsage;
- ULONG NonPagedPoolUsage;
- ULONG Reserved[3];
- ULONG NameInformationLength;
- ULONG TypeInformationLength;
- ULONG SecurityDescriptorLength;
- LARGE_INTEGER CreateTime;
- } OBJECT_BASIC_INFO, *POBJECT_BASIC_INFO;
- typedef struct _OBJECT_HANDLE_ATTRIBUTE_INFO {
- BOOLEAN Inherit;
- BOOLEAN ProtectFromClose;
- } OBJECT_HANDLE_ATTRIBUTE_INFO, *POBJECT_HANDLE_ATTRIBUTE_INFO;
- typedef struct _OBJECT_NAME_INFO {
- UNICODE_STRING ObjectName;
- WCHAR ObjectNameBuffer[1];
- } OBJECT_NAME_INFO, *POBJECT_NAME_INFO;
- typedef struct _OBJECT_PROTECTION_INFO {
- BOOLEAN Inherit;
- BOOLEAN ProtectHandle;
- } OBJECT_PROTECTION_INFO, *POBJECT_PROTECTION_INFO;
- typedef struct _OBJECT_TYPE_INFO {
- UNICODE_STRING ObjectTypeName;
- UCHAR Unknown[0x58];
- WCHAR ObjectTypeNameBuffer[1];
- } OBJECT_TYPE_INFO, *POBJECT_TYPE_INFO;
- typedef struct _OBJECT_ALL_TYPES_INFO {
- ULONG NumberOfObjectTypes;
- OBJECT_TYPE_INFO ObjectsTypeInfo[1];
- } OBJECT_ALL_TYPES_INFO, *POBJECT_ALL_TYPES_INFO;
- #if defined(USE_LPC6432)
- #define LPC_CLIENT_ID CLIENT_ID64
- #define LPC_SIZE_T ULONGLONG
- #define LPC_PVOID ULONGLONG
- #define LPC_HANDLE ULONGLONG
- #else
- #define LPC_CLIENT_ID CLIENT_ID
- #define LPC_SIZE_T SIZE_T
- #define LPC_PVOID PVOID
- #define LPC_HANDLE HANDLE
- #endif
- typedef struct _PORT_MESSAGE
- {
- union
- {
- struct
- {
- CSHORT DataLength;
- CSHORT TotalLength;
- } s1;
- ULONG Length;
- } u1;
- union
- {
- struct
- {
- CSHORT Type;
- CSHORT DataInfoOffset;
- } s2;
- ULONG ZeroInit;
- } u2;
- __GNU_EXTENSION union
- {
- LPC_CLIENT_ID ClientId;
- double DoNotUseThisField;
- };
- ULONG MessageId;
- __GNU_EXTENSION union
- {
- LPC_SIZE_T ClientViewSize;
- ULONG CallbackId;
- };
- } PORT_MESSAGE, *PPORT_MESSAGE;
- #define LPC_KERNELMODE_MESSAGE (CSHORT)((USHORT)0x8000)
- typedef struct _PORT_VIEW
- {
- ULONG Length;
- LPC_HANDLE SectionHandle;
- ULONG SectionOffset;
- LPC_SIZE_T ViewSize;
- LPC_PVOID ViewBase;
- LPC_PVOID ViewRemoteBase;
- } PORT_VIEW, *PPORT_VIEW;
- typedef struct _REMOTE_PORT_VIEW
- {
- ULONG Length;
- LPC_SIZE_T ViewSize;
- LPC_PVOID ViewBase;
- } REMOTE_PORT_VIEW, *PREMOTE_PORT_VIEW;
- typedef struct _VAD_HEADER {
- PVOID StartVPN;
- PVOID EndVPN;
- struct _VAD_HEADER* ParentLink;
- struct _VAD_HEADER* LeftLink;
- struct _VAD_HEADER* RightLink;
- ULONG Flags; /* LSB = CommitCharge */
- PVOID ControlArea;
- PVOID FirstProtoPte;
- PVOID LastPTE;
- ULONG Unknown;
- LIST_ENTRY Secured;
- } VAD_HEADER, *PVAD_HEADER;
- NTKERNELAPI
- LARGE_INTEGER
- NTAPI
- CcGetLsnForFileObject (
- IN PFILE_OBJECT FileObject,
- OUT PLARGE_INTEGER OldestLsn OPTIONAL
- );
- NTKERNELAPI
- PVOID
- NTAPI
- FsRtlAllocatePool (
- IN POOL_TYPE PoolType,
- IN ULONG NumberOfBytes
- );
- NTKERNELAPI
- PVOID
- NTAPI
- FsRtlAllocatePoolWithQuota (
- IN POOL_TYPE PoolType,
- IN ULONG NumberOfBytes
- );
- NTKERNELAPI
- PVOID
- NTAPI
- FsRtlAllocatePoolWithQuotaTag (
- IN POOL_TYPE PoolType,
- IN ULONG NumberOfBytes,
- IN ULONG Tag
- );
- NTKERNELAPI
- PVOID
- NTAPI
- FsRtlAllocatePoolWithTag (
- IN POOL_TYPE PoolType,
- IN ULONG NumberOfBytes,
- IN ULONG Tag
- );
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlIsFatDbcsLegal (
- IN ANSI_STRING DbcsName,
- IN BOOLEAN WildCardsPermissible,
- IN BOOLEAN PathNamePermissible,
- IN BOOLEAN LeadingBackslashPermissible
- );
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlMdlReadComplete (
- IN PFILE_OBJECT FileObject,
- IN PMDL MdlChain
- );
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlMdlWriteComplete (
- IN PFILE_OBJECT FileObject,
- IN PLARGE_INTEGER FileOffset,
- IN PMDL MdlChain
- );
- NTKERNELAPI
- VOID
- NTAPI
- FsRtlNotifyChangeDirectory (
- IN PNOTIFY_SYNC NotifySync,
- IN PVOID FsContext,
- IN PSTRING FullDirectoryName,
- IN PLIST_ENTRY NotifyList,
- IN BOOLEAN WatchTree,
- IN ULONG CompletionFilter,
- IN PIRP NotifyIrp
- );
- NTKERNELAPI
- NTSTATUS
- NTAPI
- ObCreateObject (
- IN KPROCESSOR_MODE ObjectAttributesAccessMode OPTIONAL,
- IN POBJECT_TYPE ObjectType,
- IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
- IN KPROCESSOR_MODE AccessMode,
- IN OUT PVOID ParseContext OPTIONAL,
- IN ULONG ObjectSize,
- IN ULONG PagedPoolCharge OPTIONAL,
- IN ULONG NonPagedPoolCharge OPTIONAL,
- OUT PVOID *Object
- );
- NTKERNELAPI
- ULONG
- NTAPI
- ObGetObjectPointerCount (
- IN PVOID Object
- );
- NTKERNELAPI
- NTSTATUS
- NTAPI
- ObReferenceObjectByName (
- IN PUNICODE_STRING ObjectName,
- IN ULONG Attributes,
- IN PACCESS_STATE PassedAccessState OPTIONAL,
- IN ACCESS_MASK DesiredAccess OPTIONAL,
- IN POBJECT_TYPE ObjectType,
- IN KPROCESSOR_MODE AccessMode,
- IN OUT PVOID ParseContext OPTIONAL,
- OUT PVOID *Object
- );
- #define PsDereferenceImpersonationToken(T) \
- {if (ARGUMENT_PRESENT(T)) { \
- (ObDereferenceObject((T))); \
- } else { \
- ; \
- } \
- }
- NTKERNELAPI
- NTSTATUS
- NTAPI
- PsLookupProcessThreadByCid (
- IN PCLIENT_ID Cid,
- OUT PEPROCESS *Process OPTIONAL,
- OUT PETHREAD *Thread
- );
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlSetSaclSecurityDescriptor (
- IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
- IN BOOLEAN SaclPresent,
- IN PACL Sacl,
- IN BOOLEAN SaclDefaulted
- );
- #define SeEnableAccessToExports() SeExports = *(PSE_EXPORTS *)SeExports;
- #if (VER_PRODUCTBUILD >= 2195)
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwAdjustPrivilegesToken (
- IN HANDLE TokenHandle,
- IN BOOLEAN DisableAllPrivileges,
- IN PTOKEN_PRIVILEGES NewState,
- IN ULONG BufferLength,
- OUT PTOKEN_PRIVILEGES PreviousState OPTIONAL,
- OUT PULONG ReturnLength
- );
- #endif /* (VER_PRODUCTBUILD >= 2195) */
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwAlertThread (
- IN HANDLE ThreadHandle
- );
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwAccessCheckAndAuditAlarm (
- IN PUNICODE_STRING SubsystemName,
- IN PVOID HandleId,
- IN PUNICODE_STRING ObjectTypeName,
- IN PUNICODE_STRING ObjectName,
- IN PSECURITY_DESCRIPTOR SecurityDescriptor,
- IN ACCESS_MASK DesiredAccess,
- IN PGENERIC_MAPPING GenericMapping,
- IN BOOLEAN ObjectCreation,
- OUT PACCESS_MASK GrantedAccess,
- OUT PBOOLEAN AccessStatus,
- OUT PBOOLEAN GenerateOnClose
- );
- #if (VER_PRODUCTBUILD >= 2195)
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwCancelIoFile (
- IN HANDLE FileHandle,
- OUT PIO_STATUS_BLOCK IoStatusBlock
- );
- #endif /* (VER_PRODUCTBUILD >= 2195) */
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwClearEvent (
- IN HANDLE EventHandle
- );
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwCloseObjectAuditAlarm (
- IN PUNICODE_STRING SubsystemName,
- IN PVOID HandleId,
- IN BOOLEAN GenerateOnClose
- );
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwCreateSymbolicLinkObject (
- OUT PHANDLE SymbolicLinkHandle,
- IN ACCESS_MASK DesiredAccess,
- IN POBJECT_ATTRIBUTES ObjectAttributes,
- IN PUNICODE_STRING TargetName
- );
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwFlushInstructionCache (
- IN HANDLE ProcessHandle,
- IN PVOID BaseAddress OPTIONAL,
- IN ULONG FlushSize
- );
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwFlushBuffersFile(
- IN HANDLE FileHandle,
- OUT PIO_STATUS_BLOCK IoStatusBlock
- );
- #if (VER_PRODUCTBUILD >= 2195)
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwInitiatePowerAction (
- IN POWER_ACTION SystemAction,
- IN SYSTEM_POWER_STATE MinSystemState,
- IN ULONG Flags,
- IN BOOLEAN Asynchronous
- );
- #endif /* (VER_PRODUCTBUILD >= 2195) */
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwLoadKey (
- IN POBJECT_ATTRIBUTES KeyObjectAttributes,
- IN POBJECT_ATTRIBUTES FileObjectAttributes
- );
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwOpenProcessToken (
- IN HANDLE ProcessHandle,
- IN ACCESS_MASK DesiredAccess,
- OUT PHANDLE TokenHandle
- );
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwOpenThread (
- OUT PHANDLE ThreadHandle,
- IN ACCESS_MASK DesiredAccess,
- IN POBJECT_ATTRIBUTES ObjectAttributes,
- IN PCLIENT_ID ClientId
- );
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwOpenThreadToken (
- IN HANDLE ThreadHandle,
- IN ACCESS_MASK DesiredAccess,
- IN BOOLEAN OpenAsSelf,
- OUT PHANDLE TokenHandle
- );
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwPulseEvent (
- IN HANDLE EventHandle,
- OUT PLONG PreviousState OPTIONAL
- );
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwQueryDefaultLocale (
- IN BOOLEAN ThreadOrSystem,
- OUT PLCID Locale
- );
- #if (VER_PRODUCTBUILD >= 2195)
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwQueryDirectoryObject (
- IN HANDLE DirectoryHandle,
- OUT PVOID Buffer,
- IN ULONG Length,
- IN BOOLEAN ReturnSingleEntry,
- IN BOOLEAN RestartScan,
- IN OUT PULONG Context,
- OUT PULONG ReturnLength OPTIONAL
- );
- #endif /* (VER_PRODUCTBUILD >= 2195) */
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwQueryInformationProcess (
- IN HANDLE ProcessHandle,
- IN PROCESSINFOCLASS ProcessInformationClass,
- OUT PVOID ProcessInformation,
- IN ULONG ProcessInformationLength,
- OUT PULONG ReturnLength OPTIONAL
- );
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwReplaceKey (
- IN POBJECT_ATTRIBUTES NewFileObjectAttributes,
- IN HANDLE KeyHandle,
- IN POBJECT_ATTRIBUTES OldFileObjectAttributes
- );
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwResetEvent (
- IN HANDLE EventHandle,
- OUT PLONG PreviousState OPTIONAL
- );
- #if (VER_PRODUCTBUILD >= 2195)
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwRestoreKey (
- IN HANDLE KeyHandle,
- IN HANDLE FileHandle,
- IN ULONG Flags
- );
- #endif /* (VER_PRODUCTBUILD >= 2195) */
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwSaveKey (
- IN HANDLE KeyHandle,
- IN HANDLE FileHandle
- );
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwSetDefaultLocale (
- IN BOOLEAN ThreadOrSystem,
- IN LCID Locale
- );
- #if (VER_PRODUCTBUILD >= 2195)
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwSetDefaultUILanguage (
- IN LANGID LanguageId
- );
- #endif /* (VER_PRODUCTBUILD >= 2195) */
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwSetInformationProcess (
- IN HANDLE ProcessHandle,
- IN PROCESSINFOCLASS ProcessInformationClass,
- IN PVOID ProcessInformation,
- IN ULONG ProcessInformationLength
- );
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwSetSystemTime (
- IN PLARGE_INTEGER NewTime,
- OUT PLARGE_INTEGER OldTime OPTIONAL
- );
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwUnloadKey (
- IN POBJECT_ATTRIBUTES KeyObjectAttributes
- );
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwWaitForMultipleObjects (
- IN ULONG HandleCount,
- IN PHANDLE Handles,
- IN WAIT_TYPE WaitType,
- IN BOOLEAN Alertable,
- IN PLARGE_INTEGER Timeout OPTIONAL
- );
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwYieldExecution (
- VOID
- );
- #pragma pack(pop)
- #ifdef __cplusplus
- }
- #endif
|