12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774 |
- /*
- * ntddk.h
- *
- * Windows NT Device Driver 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 _NTDDK_
- #if !defined(_NTHAL_) && !defined(_NTIFS_)
- #define _NTDDK_INCLUDED_
- #define _DDK_DRIVER_
- #endif
- /* Dependencies */
- #define NT_INCLUDED
- #define _CTYPE_DISABLE_MACROS
- #include <wdm.h>
- #include <excpt.h>
- #include <ntdef.h>
- #include <ntstatus.h>
- #include <mce.h>
- #include <bugcodes.h>
- #include <ntiologc.h>
- #include <stdarg.h> // FIXME
- #include <basetyps.h> // FIXME
- #ifdef __cplusplus
- extern "C" {
- #endif
- /* GUID and UUID */
- #ifndef _NTLSA_IFS_
- #ifndef _NTLSA_AUDIT_
- #define _NTLSA_AUDIT_
- #ifndef GUID_DEFINED
- #include <guiddef.h>
- #endif
- #endif /* _NTLSA_AUDIT_ */
- #endif /* _NTLSA_IFS_ */
- typedef GUID UUID;
- struct _LOADER_PARAMETER_BLOCK;
- struct _CREATE_DISK;
- struct _DRIVE_LAYOUT_INFORMATION_EX;
- struct _SET_PARTITION_INFORMATION_EX;
- struct _DISK_GEOMETRY_EX;
- typedef struct _BUS_HANDLER *PBUS_HANDLER;
- typedef struct _DEVICE_HANDLER_OBJECT *PDEVICE_HANDLER_OBJECT;
- #if defined(_NTHAL_INCLUDED_)
- typedef struct _KAFFINITY_EX *PKAFFINITY_EX;
- #endif
- typedef struct _PEB *PPEB;
- #ifndef _NTIMAGE_
- typedef struct _IMAGE_NT_HEADERS *PIMAGE_NT_HEADERS32;
- typedef struct _IMAGE_NT_HEADERS64 *PIMAGE_NT_HEADERS64;
- #ifdef _WIN64
- typedef PIMAGE_NT_HEADERS64 PIMAGE_NT_HEADERS;
- #else
- typedef PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS;
- #endif
- #endif /* _NTIMAGE_ */
- /******************************************************************************
- * Executive Types *
- ******************************************************************************/
- typedef struct _ZONE_SEGMENT_HEADER {
- SINGLE_LIST_ENTRY SegmentList;
- PVOID Reserved;
- } ZONE_SEGMENT_HEADER, *PZONE_SEGMENT_HEADER;
- typedef struct _ZONE_HEADER {
- SINGLE_LIST_ENTRY FreeList;
- SINGLE_LIST_ENTRY SegmentList;
- ULONG BlockSize;
- ULONG TotalSegmentSize;
- } ZONE_HEADER, *PZONE_HEADER;
- #define PROTECTED_POOL 0x80000000
- /******************************************************************************
- * I/O Manager Types *
- ******************************************************************************/
- /* DEVICE_OBJECT.Flags */
- #define DO_DEVICE_HAS_NAME 0x00000040
- #define DO_SYSTEM_BOOT_PARTITION 0x00000100
- #define DO_LONG_TERM_REQUESTS 0x00000200
- #define DO_NEVER_LAST_DEVICE 0x00000400
- #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
- #ifndef _ARC_DDK_
- #define _ARC_DDK_
- typedef enum _CONFIGURATION_TYPE {
- ArcSystem,
- CentralProcessor,
- FloatingPointProcessor,
- PrimaryIcache,
- PrimaryDcache,
- SecondaryIcache,
- SecondaryDcache,
- SecondaryCache,
- EisaAdapter,
- TcAdapter,
- ScsiAdapter,
- DtiAdapter,
- MultiFunctionAdapter,
- DiskController,
- TapeController,
- CdromController,
- WormController,
- SerialController,
- NetworkController,
- DisplayController,
- ParallelController,
- PointerController,
- KeyboardController,
- AudioController,
- OtherController,
- DiskPeripheral,
- FloppyDiskPeripheral,
- TapePeripheral,
- ModemPeripheral,
- MonitorPeripheral,
- PrinterPeripheral,
- PointerPeripheral,
- KeyboardPeripheral,
- TerminalPeripheral,
- OtherPeripheral,
- LinePeripheral,
- NetworkPeripheral,
- SystemMemory,
- DockingInformation,
- RealModeIrqRoutingTable,
- RealModePCIEnumeration,
- MaximumType
- } CONFIGURATION_TYPE, *PCONFIGURATION_TYPE;
- #endif /* !_ARC_DDK_ */
- /*
- ** IRP function codes
- */
- #define IRP_MN_QUERY_DIRECTORY 0x01
- #define IRP_MN_NOTIFY_CHANGE_DIRECTORY 0x02
- #define IRP_MN_USER_FS_REQUEST 0x00
- #define IRP_MN_MOUNT_VOLUME 0x01
- #define IRP_MN_VERIFY_VOLUME 0x02
- #define IRP_MN_LOAD_FILE_SYSTEM 0x03
- #define IRP_MN_TRACK_LINK 0x04
- #define IRP_MN_KERNEL_CALL 0x04
- #define IRP_MN_LOCK 0x01
- #define IRP_MN_UNLOCK_SINGLE 0x02
- #define IRP_MN_UNLOCK_ALL 0x03
- #define IRP_MN_UNLOCK_ALL_BY_KEY 0x04
- #define IRP_MN_FLUSH_AND_PURGE 0x01
- #define IRP_MN_NORMAL 0x00
- #define IRP_MN_DPC 0x01
- #define IRP_MN_MDL 0x02
- #define IRP_MN_COMPLETE 0x04
- #define IRP_MN_COMPRESSED 0x08
- #define IRP_MN_MDL_DPC (IRP_MN_MDL | IRP_MN_DPC)
- #define IRP_MN_COMPLETE_MDL (IRP_MN_COMPLETE | IRP_MN_MDL)
- #define IRP_MN_COMPLETE_MDL_DPC (IRP_MN_COMPLETE_MDL | IRP_MN_DPC)
- #define IRP_MN_QUERY_LEGACY_BUS_INFORMATION 0x18
- #define IO_CHECK_CREATE_PARAMETERS 0x0200
- #define IO_ATTACH_DEVICE 0x0400
- #define IO_IGNORE_SHARE_ACCESS_CHECK 0x0800
- typedef NTSTATUS
- (NTAPI *PIO_QUERY_DEVICE_ROUTINE)(
- IN PVOID Context,
- IN PUNICODE_STRING PathName,
- IN INTERFACE_TYPE BusType,
- IN ULONG BusNumber,
- IN PKEY_VALUE_FULL_INFORMATION *BusInformation,
- IN CONFIGURATION_TYPE ControllerType,
- IN ULONG ControllerNumber,
- IN PKEY_VALUE_FULL_INFORMATION *ControllerInformation,
- IN CONFIGURATION_TYPE PeripheralType,
- IN ULONG PeripheralNumber,
- IN PKEY_VALUE_FULL_INFORMATION *PeripheralInformation);
- typedef enum _IO_QUERY_DEVICE_DATA_FORMAT {
- IoQueryDeviceIdentifier = 0,
- IoQueryDeviceConfigurationData,
- IoQueryDeviceComponentInformation,
- IoQueryDeviceMaxData
- } IO_QUERY_DEVICE_DATA_FORMAT, *PIO_QUERY_DEVICE_DATA_FORMAT;
- typedef VOID
- (NTAPI *PDRIVER_REINITIALIZE)(
- IN struct _DRIVER_OBJECT *DriverObject,
- IN PVOID Context OPTIONAL,
- IN ULONG Count);
- typedef struct _CONTROLLER_OBJECT {
- CSHORT Type;
- CSHORT Size;
- PVOID ControllerExtension;
- KDEVICE_QUEUE DeviceWaitQueue;
- ULONG Spare1;
- LARGE_INTEGER Spare2;
- } CONTROLLER_OBJECT, *PCONTROLLER_OBJECT;
- #define DRVO_REINIT_REGISTERED 0x00000008
- #define DRVO_INITIALIZED 0x00000010
- #define DRVO_BOOTREINIT_REGISTERED 0x00000020
- #define DRVO_LEGACY_RESOURCES 0x00000040
- typedef struct _CONFIGURATION_INFORMATION {
- ULONG DiskCount;
- ULONG FloppyCount;
- ULONG CdRomCount;
- ULONG TapeCount;
- ULONG ScsiPortCount;
- ULONG SerialCount;
- ULONG ParallelCount;
- BOOLEAN AtDiskPrimaryAddressClaimed;
- BOOLEAN AtDiskSecondaryAddressClaimed;
- ULONG Version;
- ULONG MediumChangerCount;
- } CONFIGURATION_INFORMATION, *PCONFIGURATION_INFORMATION;
- typedef struct _DISK_SIGNATURE {
- ULONG PartitionStyle;
- _ANONYMOUS_UNION union {
- struct {
- ULONG Signature;
- ULONG CheckSum;
- } Mbr;
- struct {
- GUID DiskId;
- } Gpt;
- } DUMMYUNIONNAME;
- } DISK_SIGNATURE, *PDISK_SIGNATURE;
- typedef struct _TXN_PARAMETER_BLOCK {
- USHORT Length;
- USHORT TxFsContext;
- PVOID TransactionObject;
- } TXN_PARAMETER_BLOCK, *PTXN_PARAMETER_BLOCK;
- #define TXF_MINIVERSION_DEFAULT_VIEW (0xFFFE)
- typedef struct _IO_DRIVER_CREATE_CONTEXT {
- CSHORT Size;
- struct _ECP_LIST *ExtraCreateParameter;
- PVOID DeviceObjectHint;
- PTXN_PARAMETER_BLOCK TxnParameters;
- } IO_DRIVER_CREATE_CONTEXT, *PIO_DRIVER_CREATE_CONTEXT;
- typedef struct _AGP_TARGET_BUS_INTERFACE_STANDARD {
- USHORT Size;
- USHORT Version;
- PVOID Context;
- PINTERFACE_REFERENCE InterfaceReference;
- PINTERFACE_DEREFERENCE InterfaceDereference;
- PGET_SET_DEVICE_DATA SetBusData;
- PGET_SET_DEVICE_DATA GetBusData;
- UCHAR CapabilityID;
- } AGP_TARGET_BUS_INTERFACE_STANDARD, *PAGP_TARGET_BUS_INTERFACE_STANDARD;
- typedef NTSTATUS
- (NTAPI *PGET_LOCATION_STRING)(
- IN OUT PVOID Context OPTIONAL,
- OUT PWCHAR *LocationStrings);
- typedef struct _PNP_LOCATION_INTERFACE {
- USHORT Size;
- USHORT Version;
- PVOID Context;
- PINTERFACE_REFERENCE InterfaceReference;
- PINTERFACE_DEREFERENCE InterfaceDereference;
- PGET_LOCATION_STRING GetLocationString;
- } PNP_LOCATION_INTERFACE, *PPNP_LOCATION_INTERFACE;
- typedef enum _ARBITER_ACTION {
- ArbiterActionTestAllocation,
- ArbiterActionRetestAllocation,
- ArbiterActionCommitAllocation,
- ArbiterActionRollbackAllocation,
- ArbiterActionQueryAllocatedResources,
- ArbiterActionWriteReservedResources,
- ArbiterActionQueryConflict,
- ArbiterActionQueryArbitrate,
- ArbiterActionAddReserved,
- ArbiterActionBootAllocation
- } ARBITER_ACTION, *PARBITER_ACTION;
- typedef struct _ARBITER_CONFLICT_INFO {
- PDEVICE_OBJECT OwningObject;
- ULONGLONG Start;
- ULONGLONG End;
- } ARBITER_CONFLICT_INFO, *PARBITER_CONFLICT_INFO;
- typedef struct _ARBITER_TEST_ALLOCATION_PARAMETERS {
- IN OUT PLIST_ENTRY ArbitrationList;
- IN ULONG AllocateFromCount;
- IN PCM_PARTIAL_RESOURCE_DESCRIPTOR AllocateFrom;
- } ARBITER_TEST_ALLOCATION_PARAMETERS, *PARBITER_TEST_ALLOCATION_PARAMETERS;
- typedef struct _ARBITER_RETEST_ALLOCATION_PARAMETERS {
- IN OUT PLIST_ENTRY ArbitrationList;
- IN ULONG AllocateFromCount;
- IN PCM_PARTIAL_RESOURCE_DESCRIPTOR AllocateFrom;
- } ARBITER_RETEST_ALLOCATION_PARAMETERS, *PARBITER_RETEST_ALLOCATION_PARAMETERS;
- typedef struct _ARBITER_BOOT_ALLOCATION_PARAMETERS {
- IN OUT PLIST_ENTRY ArbitrationList;
- } ARBITER_BOOT_ALLOCATION_PARAMETERS, *PARBITER_BOOT_ALLOCATION_PARAMETERS;
- typedef struct _ARBITER_QUERY_ALLOCATED_RESOURCES_PARAMETERS {
- OUT PCM_PARTIAL_RESOURCE_LIST *AllocatedResources;
- } ARBITER_QUERY_ALLOCATED_RESOURCES_PARAMETERS, *PARBITER_QUERY_ALLOCATED_RESOURCES_PARAMETERS;
- typedef struct _ARBITER_QUERY_CONFLICT_PARAMETERS {
- IN PDEVICE_OBJECT PhysicalDeviceObject;
- IN PIO_RESOURCE_DESCRIPTOR ConflictingResource;
- OUT PULONG ConflictCount;
- OUT PARBITER_CONFLICT_INFO *Conflicts;
- } ARBITER_QUERY_CONFLICT_PARAMETERS, *PARBITER_QUERY_CONFLICT_PARAMETERS;
- typedef struct _ARBITER_QUERY_ARBITRATE_PARAMETERS {
- IN PLIST_ENTRY ArbitrationList;
- } ARBITER_QUERY_ARBITRATE_PARAMETERS, *PARBITER_QUERY_ARBITRATE_PARAMETERS;
- typedef struct _ARBITER_ADD_RESERVED_PARAMETERS {
- IN PDEVICE_OBJECT ReserveDevice;
- } ARBITER_ADD_RESERVED_PARAMETERS, *PARBITER_ADD_RESERVED_PARAMETERS;
- typedef struct _ARBITER_PARAMETERS {
- union {
- ARBITER_TEST_ALLOCATION_PARAMETERS TestAllocation;
- ARBITER_RETEST_ALLOCATION_PARAMETERS RetestAllocation;
- ARBITER_BOOT_ALLOCATION_PARAMETERS BootAllocation;
- ARBITER_QUERY_ALLOCATED_RESOURCES_PARAMETERS QueryAllocatedResources;
- ARBITER_QUERY_CONFLICT_PARAMETERS QueryConflict;
- ARBITER_QUERY_ARBITRATE_PARAMETERS QueryArbitrate;
- ARBITER_ADD_RESERVED_PARAMETERS AddReserved;
- } Parameters;
- } ARBITER_PARAMETERS, *PARBITER_PARAMETERS;
- typedef enum _ARBITER_REQUEST_SOURCE {
- ArbiterRequestUndefined = -1,
- ArbiterRequestLegacyReported,
- ArbiterRequestHalReported,
- ArbiterRequestLegacyAssigned,
- ArbiterRequestPnpDetected,
- ArbiterRequestPnpEnumerated
- } ARBITER_REQUEST_SOURCE;
- typedef enum _ARBITER_RESULT {
- ArbiterResultUndefined = -1,
- ArbiterResultSuccess,
- ArbiterResultExternalConflict,
- ArbiterResultNullRequest
- } ARBITER_RESULT;
- #define ARBITER_FLAG_BOOT_CONFIG 0x00000001
- typedef struct _ARBITER_LIST_ENTRY {
- LIST_ENTRY ListEntry;
- ULONG AlternativeCount;
- PIO_RESOURCE_DESCRIPTOR Alternatives;
- PDEVICE_OBJECT PhysicalDeviceObject;
- ARBITER_REQUEST_SOURCE RequestSource;
- ULONG Flags;
- LONG_PTR WorkSpace;
- INTERFACE_TYPE InterfaceType;
- ULONG SlotNumber;
- ULONG BusNumber;
- PCM_PARTIAL_RESOURCE_DESCRIPTOR Assignment;
- PIO_RESOURCE_DESCRIPTOR SelectedAlternative;
- ARBITER_RESULT Result;
- } ARBITER_LIST_ENTRY, *PARBITER_LIST_ENTRY;
- typedef NTSTATUS
- (NTAPI *PARBITER_HANDLER)(
- IN OUT PVOID Context,
- IN ARBITER_ACTION Action,
- IN OUT PARBITER_PARAMETERS Parameters);
- #define ARBITER_PARTIAL 0x00000001
- typedef struct _ARBITER_INTERFACE {
- USHORT Size;
- USHORT Version;
- PVOID Context;
- PINTERFACE_REFERENCE InterfaceReference;
- PINTERFACE_DEREFERENCE InterfaceDereference;
- PARBITER_HANDLER ArbiterHandler;
- ULONG Flags;
- } ARBITER_INTERFACE, *PARBITER_INTERFACE;
- typedef enum _RESOURCE_TRANSLATION_DIRECTION {
- TranslateChildToParent,
- TranslateParentToChild
- } RESOURCE_TRANSLATION_DIRECTION;
- typedef NTSTATUS
- (NTAPI *PTRANSLATE_RESOURCE_HANDLER)(
- IN OUT PVOID Context OPTIONAL,
- IN PCM_PARTIAL_RESOURCE_DESCRIPTOR Source,
- IN RESOURCE_TRANSLATION_DIRECTION Direction,
- IN ULONG AlternativesCount OPTIONAL,
- IN IO_RESOURCE_DESCRIPTOR Alternatives[],
- IN PDEVICE_OBJECT PhysicalDeviceObject,
- OUT PCM_PARTIAL_RESOURCE_DESCRIPTOR Target);
- typedef NTSTATUS
- (NTAPI *PTRANSLATE_RESOURCE_REQUIREMENTS_HANDLER)(
- IN OUT PVOID Context OPTIONAL,
- IN PIO_RESOURCE_DESCRIPTOR Source,
- IN PDEVICE_OBJECT PhysicalDeviceObject,
- OUT PULONG TargetCount,
- OUT PIO_RESOURCE_DESCRIPTOR *Target);
- typedef struct _TRANSLATOR_INTERFACE {
- USHORT Size;
- USHORT Version;
- PVOID Context;
- PINTERFACE_REFERENCE InterfaceReference;
- PINTERFACE_DEREFERENCE InterfaceDereference;
- PTRANSLATE_RESOURCE_HANDLER TranslateResources;
- PTRANSLATE_RESOURCE_REQUIREMENTS_HANDLER TranslateResourceRequirements;
- } TRANSLATOR_INTERFACE, *PTRANSLATOR_INTERFACE;
- typedef struct _PCI_AGP_CAPABILITY {
- PCI_CAPABILITIES_HEADER Header;
- USHORT Minor:4;
- USHORT Major:4;
- USHORT Rsvd1:8;
- struct _PCI_AGP_STATUS {
- ULONG Rate:3;
- ULONG Agp3Mode:1;
- ULONG FastWrite:1;
- ULONG FourGB:1;
- ULONG HostTransDisable:1;
- ULONG Gart64:1;
- ULONG ITA_Coherent:1;
- ULONG SideBandAddressing:1;
- ULONG CalibrationCycle:3;
- ULONG AsyncRequestSize:3;
- ULONG Rsvd1:1;
- ULONG Isoch:1;
- ULONG Rsvd2:6;
- ULONG RequestQueueDepthMaximum:8;
- } AGPStatus;
- struct _PCI_AGP_COMMAND {
- ULONG Rate:3;
- ULONG Rsvd1:1;
- ULONG FastWriteEnable:1;
- ULONG FourGBEnable:1;
- ULONG Rsvd2:1;
- ULONG Gart64:1;
- ULONG AGPEnable:1;
- ULONG SBAEnable:1;
- ULONG CalibrationCycle:3;
- ULONG AsyncReqSize:3;
- ULONG Rsvd3:8;
- ULONG RequestQueueDepth:8;
- } AGPCommand;
- } PCI_AGP_CAPABILITY, *PPCI_AGP_CAPABILITY;
- typedef enum _EXTENDED_AGP_REGISTER {
- IsochStatus,
- AgpControl,
- ApertureSize,
- AperturePageSize,
- GartLow,
- GartHigh,
- IsochCommand
- } EXTENDED_AGP_REGISTER, *PEXTENDED_AGP_REGISTER;
- typedef struct _PCI_AGP_ISOCH_STATUS {
- ULONG ErrorCode:2;
- ULONG Rsvd1:1;
- ULONG Isoch_L:3;
- ULONG Isoch_Y:2;
- ULONG Isoch_N:8;
- ULONG Rsvd2:16;
- } PCI_AGP_ISOCH_STATUS, *PPCI_AGP_ISOCH_STATUS;
- typedef struct _PCI_AGP_CONTROL {
- ULONG Rsvd1:7;
- ULONG GTLB_Enable:1;
- ULONG AP_Enable:1;
- ULONG CAL_Disable:1;
- ULONG Rsvd2:22;
- } PCI_AGP_CONTROL, *PPCI_AGP_CONTROL;
- typedef struct _PCI_AGP_APERTURE_PAGE_SIZE {
- USHORT PageSizeMask:11;
- USHORT Rsvd1:1;
- USHORT PageSizeSelect:4;
- } PCI_AGP_APERTURE_PAGE_SIZE, *PPCI_AGP_APERTURE_PAGE_SIZE;
- typedef struct _PCI_AGP_ISOCH_COMMAND {
- USHORT Rsvd1:6;
- USHORT Isoch_Y:2;
- USHORT Isoch_N:8;
- } PCI_AGP_ISOCH_COMMAND, *PPCI_AGP_ISOCH_COMMAND;
- typedef struct PCI_AGP_EXTENDED_CAPABILITY {
- PCI_AGP_ISOCH_STATUS IsochStatus;
- PCI_AGP_CONTROL AgpControl;
- USHORT ApertureSize;
- PCI_AGP_APERTURE_PAGE_SIZE AperturePageSize;
- ULONG GartLow;
- ULONG GartHigh;
- PCI_AGP_ISOCH_COMMAND IsochCommand;
- } PCI_AGP_EXTENDED_CAPABILITY, *PPCI_AGP_EXTENDED_CAPABILITY;
- #define PCI_AGP_RATE_1X 0x1
- #define PCI_AGP_RATE_2X 0x2
- #define PCI_AGP_RATE_4X 0x4
- #define PCIX_MODE_CONVENTIONAL_PCI 0x0
- #define PCIX_MODE1_66MHZ 0x1
- #define PCIX_MODE1_100MHZ 0x2
- #define PCIX_MODE1_133MHZ 0x3
- #define PCIX_MODE2_266_66MHZ 0x9
- #define PCIX_MODE2_266_100MHZ 0xA
- #define PCIX_MODE2_266_133MHZ 0xB
- #define PCIX_MODE2_533_66MHZ 0xD
- #define PCIX_MODE2_533_100MHZ 0xE
- #define PCIX_MODE2_533_133MHZ 0xF
- #define PCIX_VERSION_MODE1_ONLY 0x0
- #define PCIX_VERSION_MODE2_ECC 0x1
- #define PCIX_VERSION_DUAL_MODE_ECC 0x2
- typedef struct _PCIX_BRIDGE_CAPABILITY {
- PCI_CAPABILITIES_HEADER Header;
- union {
- _ANONYMOUS_STRUCT struct {
- USHORT Bus64Bit:1;
- USHORT Bus133MHzCapable:1;
- USHORT SplitCompletionDiscarded:1;
- USHORT UnexpectedSplitCompletion:1;
- USHORT SplitCompletionOverrun:1;
- USHORT SplitRequestDelayed:1;
- USHORT BusModeFrequency:4;
- USHORT Rsvd:2;
- USHORT Version:2;
- USHORT Bus266MHzCapable:1;
- USHORT Bus533MHzCapable:1;
- } DUMMYSTRUCTNAME;
- USHORT AsUSHORT;
- } SecondaryStatus;
- union {
- _ANONYMOUS_STRUCT struct {
- ULONG FunctionNumber:3;
- ULONG DeviceNumber:5;
- ULONG BusNumber:8;
- ULONG Device64Bit:1;
- ULONG Device133MHzCapable:1;
- ULONG SplitCompletionDiscarded:1;
- ULONG UnexpectedSplitCompletion:1;
- ULONG SplitCompletionOverrun:1;
- ULONG SplitRequestDelayed:1;
- ULONG Rsvd:7;
- ULONG DIMCapable:1;
- ULONG Device266MHzCapable:1;
- ULONG Device533MHzCapable:1;
- } DUMMYSTRUCTNAME;
- ULONG AsULONG;
- } BridgeStatus;
- USHORT UpstreamSplitTransactionCapacity;
- USHORT UpstreamSplitTransactionLimit;
- USHORT DownstreamSplitTransactionCapacity;
- USHORT DownstreamSplitTransactionLimit;
- union {
- _ANONYMOUS_STRUCT struct {
- ULONG SelectSecondaryRegisters:1;
- ULONG ErrorPresentInOtherBank:1;
- ULONG AdditionalCorrectableError:1;
- ULONG AdditionalUncorrectableError:1;
- ULONG ErrorPhase:3;
- ULONG ErrorCorrected:1;
- ULONG Syndrome:8;
- ULONG ErrorFirstCommand:4;
- ULONG ErrorSecondCommand:4;
- ULONG ErrorUpperAttributes:4;
- ULONG ControlUpdateEnable:1;
- ULONG Rsvd:1;
- ULONG DisableSingleBitCorrection:1;
- ULONG EccMode:1;
- } DUMMYSTRUCTNAME;
- ULONG AsULONG;
- } EccControlStatus;
- ULONG EccFirstAddress;
- ULONG EccSecondAddress;
- ULONG EccAttribute;
- } PCIX_BRIDGE_CAPABILITY, *PPCIX_BRIDGE_CAPABILITY;
- typedef struct _PCI_SUBSYSTEM_IDS_CAPABILITY {
- PCI_CAPABILITIES_HEADER Header;
- USHORT Reserved;
- USHORT SubVendorID;
- USHORT SubSystemID;
- } PCI_SUBSYSTEM_IDS_CAPABILITY, *PPCI_SUBSYSTEM_IDS_CAPABILITY;
- #define OSC_FIRMWARE_FAILURE 0x02
- #define OSC_UNRECOGNIZED_UUID 0x04
- #define OSC_UNRECOGNIZED_REVISION 0x08
- #define OSC_CAPABILITIES_MASKED 0x10
- #define PCI_ROOT_BUS_OSC_METHOD_CAPABILITY_REVISION 0x01
- typedef struct _PCI_ROOT_BUS_OSC_SUPPORT_FIELD {
- union {
- _ANONYMOUS_STRUCT struct {
- ULONG ExtendedConfigOpRegions:1;
- ULONG ActiveStatePowerManagement:1;
- ULONG ClockPowerManagement:1;
- ULONG SegmentGroups:1;
- ULONG MessageSignaledInterrupts:1;
- ULONG WindowsHardwareErrorArchitecture:1;
- ULONG Reserved:26;
- } DUMMYSTRUCTNAME;
- ULONG AsULONG;
- } u;
- } PCI_ROOT_BUS_OSC_SUPPORT_FIELD, *PPCI_ROOT_BUS_OSC_SUPPORT_FIELD;
- typedef struct _PCI_ROOT_BUS_OSC_CONTROL_FIELD {
- union {
- _ANONYMOUS_STRUCT struct {
- ULONG ExpressNativeHotPlug:1;
- ULONG ShpcNativeHotPlug:1;
- ULONG ExpressNativePME:1;
- ULONG ExpressAdvancedErrorReporting:1;
- ULONG ExpressCapabilityStructure:1;
- ULONG Reserved:27;
- } DUMMYSTRUCTNAME;
- ULONG AsULONG;
- } u;
- } PCI_ROOT_BUS_OSC_CONTROL_FIELD, *PPCI_ROOT_BUS_OSC_CONTROL_FIELD;
- typedef enum _PCI_HARDWARE_INTERFACE {
- PciConventional,
- PciXMode1,
- PciXMode2,
- PciExpress
- } PCI_HARDWARE_INTERFACE, *PPCI_HARDWARE_INTERFACE;
- typedef enum {
- BusWidth32Bits,
- BusWidth64Bits
- } PCI_BUS_WIDTH;
- typedef struct _PCI_ROOT_BUS_HARDWARE_CAPABILITY {
- PCI_HARDWARE_INTERFACE SecondaryInterface;
- _ANONYMOUS_STRUCT struct {
- BOOLEAN BusCapabilitiesFound;
- ULONG CurrentSpeedAndMode;
- ULONG SupportedSpeedsAndModes;
- BOOLEAN DeviceIDMessagingCapable;
- PCI_BUS_WIDTH SecondaryBusWidth;
- } DUMMYSTRUCTNAME;
- PCI_ROOT_BUS_OSC_SUPPORT_FIELD OscFeatureSupport;
- PCI_ROOT_BUS_OSC_CONTROL_FIELD OscControlRequest;
- PCI_ROOT_BUS_OSC_CONTROL_FIELD OscControlGranted;
- } PCI_ROOT_BUS_HARDWARE_CAPABILITY, *PPCI_ROOT_BUS_HARDWARE_CAPABILITY;
- typedef union _PCI_EXPRESS_CAPABILITIES_REGISTER {
- _ANONYMOUS_STRUCT struct {
- USHORT CapabilityVersion:4;
- USHORT DeviceType:4;
- USHORT SlotImplemented:1;
- USHORT InterruptMessageNumber:5;
- USHORT Rsvd:2;
- } DUMMYSTRUCTNAME;
- USHORT AsUSHORT;
- } PCI_EXPRESS_CAPABILITIES_REGISTER, *PPCI_EXPRESS_CAPABILITIES_REGISTER;
- typedef union _PCI_EXPRESS_DEVICE_CAPABILITIES_REGISTER {
- _ANONYMOUS_STRUCT struct {
- ULONG MaxPayloadSizeSupported:3;
- ULONG PhantomFunctionsSupported:2;
- ULONG ExtendedTagSupported:1;
- ULONG L0sAcceptableLatency:3;
- ULONG L1AcceptableLatency:3;
- ULONG Undefined:3;
- ULONG RoleBasedErrorReporting:1;
- ULONG Rsvd1:2;
- ULONG CapturedSlotPowerLimit:8;
- ULONG CapturedSlotPowerLimitScale:2;
- ULONG Rsvd2:4;
- } DUMMYSTRUCTNAME;
- ULONG AsULONG;
- } PCI_EXPRESS_DEVICE_CAPABILITIES_REGISTER, *PPCI_EXPRESS_DEVICE_CAPABILITIES_REGISTER;
- #define PCI_EXPRESS_AER_DEVICE_CONTROL_MASK 0x07;
- typedef union _PCI_EXPRESS_DEVICE_CONTROL_REGISTER {
- _ANONYMOUS_STRUCT struct {
- USHORT CorrectableErrorEnable:1;
- USHORT NonFatalErrorEnable:1;
- USHORT FatalErrorEnable:1;
- USHORT UnsupportedRequestErrorEnable:1;
- USHORT EnableRelaxedOrder:1;
- USHORT MaxPayloadSize:3;
- USHORT ExtendedTagEnable:1;
- USHORT PhantomFunctionsEnable:1;
- USHORT AuxPowerEnable:1;
- USHORT NoSnoopEnable:1;
- USHORT MaxReadRequestSize:3;
- USHORT BridgeConfigRetryEnable:1;
- } DUMMYSTRUCTNAME;
- USHORT AsUSHORT;
- } PCI_EXPRESS_DEVICE_CONTROL_REGISTER, *PPCI_EXPRESS_DEVICE_CONTROL_REGISTER;
- #define PCI_EXPRESS_AER_DEVICE_STATUS_MASK 0x0F;
- typedef union _PCI_EXPRESS_DEVICE_STATUS_REGISTER {
- _ANONYMOUS_STRUCT struct {
- USHORT CorrectableErrorDetected:1;
- USHORT NonFatalErrorDetected:1;
- USHORT FatalErrorDetected:1;
- USHORT UnsupportedRequestDetected:1;
- USHORT AuxPowerDetected:1;
- USHORT TransactionsPending:1;
- USHORT Rsvd:10;
- } DUMMYSTRUCTNAME;
- USHORT AsUSHORT;
- } PCI_EXPRESS_DEVICE_STATUS_REGISTER, *PPCI_EXPRESS_DEVICE_STATUS_REGISTER;
- typedef union _PCI_EXPRESS_LINK_CAPABILITIES_REGISTER {
- _ANONYMOUS_STRUCT struct {
- ULONG MaximumLinkSpeed:4;
- ULONG MaximumLinkWidth:6;
- ULONG ActiveStatePMSupport:2;
- ULONG L0sExitLatency:3;
- ULONG L1ExitLatency:3;
- ULONG ClockPowerManagement:1;
- ULONG SurpriseDownErrorReportingCapable:1;
- ULONG DataLinkLayerActiveReportingCapable:1;
- ULONG Rsvd:3;
- ULONG PortNumber:8;
- } DUMMYSTRUCTNAME;
- ULONG AsULONG;
- } PCI_EXPRESS_LINK_CAPABILITIES_REGISTER, *PPCI_EXPRESS_LINK_CAPABILITIES_REGISTER;
- typedef union _PCI_EXPRESS_LINK_CONTROL_REGISTER {
- _ANONYMOUS_STRUCT struct {
- USHORT ActiveStatePMControl:2;
- USHORT Rsvd1:1;
- USHORT ReadCompletionBoundary:1;
- USHORT LinkDisable:1;
- USHORT RetrainLink:1;
- USHORT CommonClockConfig:1;
- USHORT ExtendedSynch:1;
- USHORT EnableClockPowerManagement:1;
- USHORT Rsvd2:7;
- } DUMMYSTRUCTNAME;
- USHORT AsUSHORT;
- } PCI_EXPRESS_LINK_CONTROL_REGISTER, *PPCI_EXPRESS_LINK_CONTROL_REGISTER;
- typedef union _PCI_EXPRESS_LINK_STATUS_REGISTER {
- _ANONYMOUS_STRUCT struct {
- USHORT LinkSpeed:4;
- USHORT LinkWidth:6;
- USHORT Undefined:1;
- USHORT LinkTraining:1;
- USHORT SlotClockConfig:1;
- USHORT DataLinkLayerActive:1;
- USHORT Rsvd:2;
- } DUMMYSTRUCTNAME;
- USHORT AsUSHORT;
- } PCI_EXPRESS_LINK_STATUS_REGISTER, *PPCI_EXPRESS_LINK_STATUS_REGISTER;
- typedef union _PCI_EXPRESS_SLOT_CAPABILITIES_REGISTER {
- _ANONYMOUS_STRUCT struct {
- ULONG AttentionButtonPresent:1;
- ULONG PowerControllerPresent:1;
- ULONG MRLSensorPresent:1;
- ULONG AttentionIndicatorPresent:1;
- ULONG PowerIndicatorPresent:1;
- ULONG HotPlugSurprise:1;
- ULONG HotPlugCapable:1;
- ULONG SlotPowerLimit:8;
- ULONG SlotPowerLimitScale:2;
- ULONG ElectromechanicalLockPresent:1;
- ULONG NoCommandCompletedSupport:1;
- ULONG PhysicalSlotNumber:13;
- } DUMMYSTRUCTNAME;
- ULONG AsULONG;
- } PCI_EXPRESS_SLOT_CAPABILITIES_REGISTER, *PPCI_EXPRESS_SLOT_CAPABILITIES_REGISTER;
- typedef union _PCI_EXPRESS_SLOT_CONTROL_REGISTER {
- _ANONYMOUS_STRUCT struct {
- USHORT AttentionButtonEnable:1;
- USHORT PowerFaultDetectEnable:1;
- USHORT MRLSensorEnable:1;
- USHORT PresenceDetectEnable:1;
- USHORT CommandCompletedEnable:1;
- USHORT HotPlugInterruptEnable:1;
- USHORT AttentionIndicatorControl:2;
- USHORT PowerIndicatorControl:2;
- USHORT PowerControllerControl:1;
- USHORT ElectromechanicalLockControl:1;
- USHORT DataLinkStateChangeEnable:1;
- USHORT Rsvd:3;
- } DUMMYSTRUCTNAME;
- USHORT AsUSHORT;
- } PCI_EXPRESS_SLOT_CONTROL_REGISTER, *PPCI_EXPRESS_SLOT_CONTROL_REGISTER;
- typedef union _PCI_EXPRESS_SLOT_STATUS_REGISTER {
- _ANONYMOUS_STRUCT struct {
- USHORT AttentionButtonPressed:1;
- USHORT PowerFaultDetected:1;
- USHORT MRLSensorChanged:1;
- USHORT PresenceDetectChanged:1;
- USHORT CommandCompleted:1;
- USHORT MRLSensorState:1;
- USHORT PresenceDetectState:1;
- USHORT ElectromechanicalLockEngaged:1;
- USHORT DataLinkStateChanged:1;
- USHORT Rsvd:7;
- } DUMMYSTRUCTNAME;
- USHORT AsUSHORT;
- } PCI_EXPRESS_SLOT_STATUS_REGISTER, *PPCI_EXPRESS_SLOT_STATUS_REGISTER;
- typedef union _PCI_EXPRESS_ROOT_CONTROL_REGISTER {
- _ANONYMOUS_STRUCT struct {
- USHORT CorrectableSerrEnable:1;
- USHORT NonFatalSerrEnable:1;
- USHORT FatalSerrEnable:1;
- USHORT PMEInterruptEnable:1;
- USHORT CRSSoftwareVisibilityEnable:1;
- USHORT Rsvd:11;
- } DUMMYSTRUCTNAME;
- USHORT AsUSHORT;
- } PCI_EXPRESS_ROOT_CONTROL_REGISTER, *PPCI_EXPRESS_ROOT_CONTROL_REGISTER;
- typedef union _PCI_EXPRESS_ROOT_CAPABILITIES_REGISTER {
- _ANONYMOUS_STRUCT struct {
- USHORT CRSSoftwareVisibility:1;
- USHORT Rsvd:15;
- } DUMMYSTRUCTNAME;
- USHORT AsUSHORT;
- } PCI_EXPRESS_ROOT_CAPABILITIES_REGISTER, *PPCI_EXPRESS_ROOT_CAPABILITIES_REGISTER;
- typedef union _PCI_EXPRESS_ROOT_STATUS_REGISTER {
- _ANONYMOUS_STRUCT struct {
- ULONG PMERequestorId:16;
- ULONG PMEStatus:1;
- ULONG PMEPending:1;
- ULONG Rsvd:14;
- } DUMMYSTRUCTNAME;
- ULONG AsULONG;
- } PCI_EXPRESS_ROOT_STATUS_REGISTER, *PPCI_EXPRESS_ROOT_STATUS_REGISTER;
- typedef struct _PCI_EXPRESS_CAPABILITY {
- PCI_CAPABILITIES_HEADER Header;
- PCI_EXPRESS_CAPABILITIES_REGISTER ExpressCapabilities;
- PCI_EXPRESS_DEVICE_CAPABILITIES_REGISTER DeviceCapabilities;
- PCI_EXPRESS_DEVICE_CONTROL_REGISTER DeviceControl;
- PCI_EXPRESS_DEVICE_STATUS_REGISTER DeviceStatus;
- PCI_EXPRESS_LINK_CAPABILITIES_REGISTER LinkCapabilities;
- PCI_EXPRESS_LINK_CONTROL_REGISTER LinkControl;
- PCI_EXPRESS_LINK_STATUS_REGISTER LinkStatus;
- PCI_EXPRESS_SLOT_CAPABILITIES_REGISTER SlotCapabilities;
- PCI_EXPRESS_SLOT_CONTROL_REGISTER SlotControl;
- PCI_EXPRESS_SLOT_STATUS_REGISTER SlotStatus;
- PCI_EXPRESS_ROOT_CONTROL_REGISTER RootControl;
- PCI_EXPRESS_ROOT_CAPABILITIES_REGISTER RootCapabilities;
- PCI_EXPRESS_ROOT_STATUS_REGISTER RootStatus;
- } PCI_EXPRESS_CAPABILITY, *PPCI_EXPRESS_CAPABILITY;
- typedef enum {
- MRLClosed = 0,
- MRLOpen
- } PCI_EXPRESS_MRL_STATE;
- typedef enum {
- SlotEmpty = 0,
- CardPresent
- } PCI_EXPRESS_CARD_PRESENCE;
- typedef enum {
- IndicatorOn = 1,
- IndicatorBlink,
- IndicatorOff
- } PCI_EXPRESS_INDICATOR_STATE;
- typedef enum {
- PowerOn = 0,
- PowerOff
- } PCI_EXPRESS_POWER_STATE;
- typedef enum {
- L0sEntrySupport = 1,
- L0sAndL1EntrySupport = 3
- } PCI_EXPRESS_ASPM_SUPPORT;
- typedef enum {
- L0sAndL1EntryDisabled,
- L0sEntryEnabled,
- L1EntryEnabled,
- L0sAndL1EntryEnabled
- } PCI_EXPRESS_ASPM_CONTROL;
- typedef enum {
- L0s_Below64ns = 0,
- L0s_64ns_128ns,
- L0s_128ns_256ns,
- L0s_256ns_512ns,
- L0s_512ns_1us,
- L0s_1us_2us,
- L0s_2us_4us,
- L0s_Above4us
- } PCI_EXPRESS_L0s_EXIT_LATENCY;
- typedef enum {
- L1_Below1us = 0,
- L1_1us_2us,
- L1_2us_4us,
- L1_4us_8us,
- L1_8us_16us,
- L1_16us_32us,
- L1_32us_64us,
- L1_Above64us
- } PCI_EXPRESS_L1_EXIT_LATENCY;
- typedef enum {
- PciExpressEndpoint = 0,
- PciExpressLegacyEndpoint,
- PciExpressRootPort = 4,
- PciExpressUpstreamSwitchPort,
- PciExpressDownstreamSwitchPort,
- PciExpressToPciXBridge,
- PciXToExpressBridge,
- PciExpressRootComplexIntegratedEndpoint,
- PciExpressRootComplexEventCollector
- } PCI_EXPRESS_DEVICE_TYPE;
- typedef enum {
- MaxPayload128Bytes = 0,
- MaxPayload256Bytes,
- MaxPayload512Bytes,
- MaxPayload1024Bytes,
- MaxPayload2048Bytes,
- MaxPayload4096Bytes
- } PCI_EXPRESS_MAX_PAYLOAD_SIZE;
- typedef union _PCI_EXPRESS_PME_REQUESTOR_ID {
- _ANONYMOUS_STRUCT struct {
- USHORT FunctionNumber:3;
- USHORT DeviceNumber:5;
- USHORT BusNumber:8;
- } DUMMYSTRUCTNAME;
- USHORT AsUSHORT;
- } PCI_EXPRESS_PME_REQUESTOR_ID, *PPCI_EXPRESS_PME_REQUESTOR_ID;
- typedef enum _PHYSICAL_COUNTER_RESOURCE_DESCRIPTOR_TYPE {
- ResourceTypeSingle = 0,
- ResourceTypeRange,
- ResourceTypeExtendedCounterConfiguration,
- ResourceTypeOverflow,
- ResourceTypeMax
- } PHYSICAL_COUNTER_RESOURCE_DESCRIPTOR_TYPE;
- typedef struct _PHYSICAL_COUNTER_RESOURCE_DESCRIPTOR {
- PHYSICAL_COUNTER_RESOURCE_DESCRIPTOR_TYPE Type;
- ULONG Flags;
- union {
- ULONG CounterIndex;
- ULONG ExtendedRegisterAddress;
- struct {
- ULONG Begin;
- ULONG End;
- } Range;
- } u;
- } PHYSICAL_COUNTER_RESOURCE_DESCRIPTOR, *PPHYSICAL_COUNTER_RESOURCE_DESCRIPTOR;
- typedef struct _PHYSICAL_COUNTER_RESOURCE_LIST {
- ULONG Count;
- PHYSICAL_COUNTER_RESOURCE_DESCRIPTOR Descriptors[ANYSIZE_ARRAY];
- } PHYSICAL_COUNTER_RESOURCE_LIST, *PPHYSICAL_COUNTER_RESOURCE_LIST;
- typedef VOID
- (NTAPI *PciPin2Line)(
- IN struct _BUS_HANDLER *BusHandler,
- IN struct _BUS_HANDLER *RootHandler,
- IN PCI_SLOT_NUMBER SlotNumber,
- IN PPCI_COMMON_CONFIG PciData);
- typedef VOID
- (NTAPI *PciLine2Pin)(
- IN struct _BUS_HANDLER *BusHandler,
- IN struct _BUS_HANDLER *RootHandler,
- IN PCI_SLOT_NUMBER SlotNumber,
- IN PPCI_COMMON_CONFIG PciNewData,
- IN PPCI_COMMON_CONFIG PciOldData);
- typedef VOID
- (NTAPI *PciReadWriteConfig)(
- IN struct _BUS_HANDLER *BusHandler,
- IN PCI_SLOT_NUMBER Slot,
- IN PVOID Buffer,
- IN ULONG Offset,
- IN ULONG Length);
- #define PCI_DATA_TAG ' ICP'
- #define PCI_DATA_VERSION 1
- typedef struct _PCIBUSDATA {
- ULONG Tag;
- ULONG Version;
- PciReadWriteConfig ReadConfig;
- PciReadWriteConfig WriteConfig;
- PciPin2Line Pin2Line;
- PciLine2Pin Line2Pin;
- PCI_SLOT_NUMBER ParentSlot;
- PVOID Reserved[4];
- } PCIBUSDATA, *PPCIBUSDATA;
- #ifndef _PCIINTRF_X_
- #define _PCIINTRF_X_
- typedef ULONG
- (NTAPI *PCI_READ_WRITE_CONFIG)(
- IN PVOID Context,
- IN ULONG BusOffset,
- IN ULONG Slot,
- IN PVOID Buffer,
- IN ULONG Offset,
- IN ULONG Length);
- typedef VOID
- (NTAPI *PCI_PIN_TO_LINE)(
- IN PVOID Context,
- IN PPCI_COMMON_CONFIG PciData);
- typedef VOID
- (NTAPI *PCI_LINE_TO_PIN)(
- IN PVOID Context,
- IN PPCI_COMMON_CONFIG PciNewData,
- IN PPCI_COMMON_CONFIG PciOldData);
- typedef VOID
- (NTAPI *PCI_ROOT_BUS_CAPABILITY)(
- IN PVOID Context,
- OUT PPCI_ROOT_BUS_HARDWARE_CAPABILITY HardwareCapability);
- typedef VOID
- (NTAPI *PCI_EXPRESS_WAKE_CONTROL)(
- IN PVOID Context,
- IN BOOLEAN EnableWake);
- typedef struct _PCI_BUS_INTERFACE_STANDARD {
- USHORT Size;
- USHORT Version;
- PVOID Context;
- PINTERFACE_REFERENCE InterfaceReference;
- PINTERFACE_DEREFERENCE InterfaceDereference;
- PCI_READ_WRITE_CONFIG ReadConfig;
- PCI_READ_WRITE_CONFIG WriteConfig;
- PCI_PIN_TO_LINE PinToLine;
- PCI_LINE_TO_PIN LineToPin;
- PCI_ROOT_BUS_CAPABILITY RootBusCapability;
- PCI_EXPRESS_WAKE_CONTROL ExpressWakeControl;
- } PCI_BUS_INTERFACE_STANDARD, *PPCI_BUS_INTERFACE_STANDARD;
- #define PCI_BUS_INTERFACE_STANDARD_VERSION 1
- #endif /* _PCIINTRF_X_ */
- #if (NTDDI_VERSION >= NTDDI_WIN7)
- #define FILE_CHARACTERISTICS_EXPECT_ORDERLY_REMOVAL_EX 0x00004000
- #define FILE_CHARACTERISTICS_EXPECT_SURPRISE_REMOVAL_EX 0x00008000
- #define FILE_CHARACTERISTICS_REMOVAL_POLICY_MASK_EX \
- (FILE_CHARACTERISTICS_EXPECT_ORDERLY_REMOVAL_EX | \
- FILE_CHARACTERISTICS_EXPECT_SURPRISE_REMOVAL_EX)
- #define FILE_CHARACTERISTICS_EXPECT_ORDERLY_REMOVAL_DEPRECATED 0x00000200
- #define FILE_CHARACTERISTICS_EXPECT_SURPRISE_REMOVAL_DEPRECATED 0x00000300
- #define FILE_CHARACTERISTICS_REMOVAL_POLICY_MASK_DEPRECATED 0x00000300
- #else
- #define FILE_CHARACTERISTICS_EXPECT_ORDERLY_REMOVAL 0x00000200
- #define FILE_CHARACTERISTICS_EXPECT_SURPRISE_REMOVAL 0x00000300
- #define FILE_CHARACTERISTICS_REMOVAL_POLICY_MASK 0x00000300
- #define FILE_CHARACTERISTICS_EXPECT_ORDERLY_REMOVAL_EX FILE_CHARACTERISTICS_EXPECT_ORDERLY_REMOVAL
- #define FILE_CHARACTERISTICS_EXPECT_SURPRISE_REMOVAL_EX FILE_CHARACTERISTICS_EXPECT_SURPRISE_REMOVAL
- #define FILE_CHARACTERISTICS_REMOVAL_POLICY_MASK_EX FILE_CHARACTERISTICS_REMOVAL_POLICY_MASK
- #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
- #define FILE_CHARACTERISTICS_PROPAGATED (FILE_REMOVABLE_MEDIA | \
- FILE_READ_ONLY_DEVICE | \
- FILE_FLOPPY_DISKETTE | \
- FILE_WRITE_ONCE_MEDIA | \
- FILE_DEVICE_SECURE_OPEN)
- typedef struct _FILE_ALIGNMENT_INFORMATION {
- ULONG AlignmentRequirement;
- } FILE_ALIGNMENT_INFORMATION, *PFILE_ALIGNMENT_INFORMATION;
- typedef struct _FILE_NAME_INFORMATION {
- ULONG FileNameLength;
- WCHAR FileName[1];
- } FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;
- typedef struct _FILE_ATTRIBUTE_TAG_INFORMATION {
- ULONG FileAttributes;
- ULONG ReparseTag;
- } FILE_ATTRIBUTE_TAG_INFORMATION, *PFILE_ATTRIBUTE_TAG_INFORMATION;
- typedef struct _FILE_DISPOSITION_INFORMATION {
- BOOLEAN DeleteFile;
- } FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION;
- typedef struct _FILE_END_OF_FILE_INFORMATION {
- LARGE_INTEGER EndOfFile;
- } FILE_END_OF_FILE_INFORMATION, *PFILE_END_OF_FILE_INFORMATION;
- typedef struct _FILE_VALID_DATA_LENGTH_INFORMATION {
- LARGE_INTEGER ValidDataLength;
- } FILE_VALID_DATA_LENGTH_INFORMATION, *PFILE_VALID_DATA_LENGTH_INFORMATION;
- typedef struct _FILE_FS_LABEL_INFORMATION {
- ULONG VolumeLabelLength;
- WCHAR VolumeLabel[1];
- } FILE_FS_LABEL_INFORMATION, *PFILE_FS_LABEL_INFORMATION;
- typedef struct _FILE_FS_VOLUME_INFORMATION {
- LARGE_INTEGER VolumeCreationTime;
- ULONG VolumeSerialNumber;
- ULONG VolumeLabelLength;
- BOOLEAN SupportsObjects;
- WCHAR VolumeLabel[1];
- } FILE_FS_VOLUME_INFORMATION, *PFILE_FS_VOLUME_INFORMATION;
- typedef struct _FILE_FS_SIZE_INFORMATION {
- LARGE_INTEGER TotalAllocationUnits;
- LARGE_INTEGER AvailableAllocationUnits;
- ULONG SectorsPerAllocationUnit;
- ULONG BytesPerSector;
- } FILE_FS_SIZE_INFORMATION, *PFILE_FS_SIZE_INFORMATION;
- typedef struct _FILE_FS_FULL_SIZE_INFORMATION {
- LARGE_INTEGER TotalAllocationUnits;
- LARGE_INTEGER CallerAvailableAllocationUnits;
- LARGE_INTEGER ActualAvailableAllocationUnits;
- ULONG SectorsPerAllocationUnit;
- ULONG BytesPerSector;
- } FILE_FS_FULL_SIZE_INFORMATION, *PFILE_FS_FULL_SIZE_INFORMATION;
- typedef struct _FILE_FS_OBJECTID_INFORMATION {
- UCHAR ObjectId[16];
- UCHAR ExtendedInfo[48];
- } FILE_FS_OBJECTID_INFORMATION, *PFILE_FS_OBJECTID_INFORMATION;
- typedef union _FILE_SEGMENT_ELEMENT {
- PVOID64 Buffer;
- ULONGLONG Alignment;
- }FILE_SEGMENT_ELEMENT, *PFILE_SEGMENT_ELEMENT;
- #define IOCTL_AVIO_ALLOCATE_STREAM CTL_CODE(FILE_DEVICE_AVIO, 1, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
- #define IOCTL_AVIO_FREE_STREAM CTL_CODE(FILE_DEVICE_AVIO, 2, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
- #define IOCTL_AVIO_MODIFY_STREAM CTL_CODE(FILE_DEVICE_AVIO, 3, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
- typedef enum _BUS_DATA_TYPE {
- ConfigurationSpaceUndefined = -1,
- Cmos,
- EisaConfiguration,
- Pos,
- CbusConfiguration,
- PCIConfiguration,
- VMEConfiguration,
- NuBusConfiguration,
- PCMCIAConfiguration,
- MPIConfiguration,
- MPSAConfiguration,
- PNPISAConfiguration,
- SgiInternalConfiguration,
- MaximumBusDataType
- } BUS_DATA_TYPE, *PBUS_DATA_TYPE;
- /* Some Server 2003 DDK definitions */
- #define PCI_INT_ROUTE_INTRF_STANDARD_VER 1
- typedef NTSTATUS
- (NTAPI *PLEGACY_DEVICE_DETECTION_HANDLER)(
- IN PVOID Context,
- IN INTERFACE_TYPE LegacyBusType,
- IN ULONG BusNumber,
- IN ULONG SlotNumber,
- OUT PDEVICE_OBJECT *PhysicalDeviceObject);
- typedef struct _ROUTING_TOKEN {
- PVOID LinkNode;
- ULONG StaticVector;
- UCHAR Flags;
- } ROUTING_TOKEN, *PROUTING_TOKEN;
- typedef NTSTATUS
- (NTAPI *PGET_INTERRUPT_ROUTING)(
- IN PDEVICE_OBJECT Pdo,
- OUT ULONG *Bus,
- OUT ULONG *PciSlot,
- OUT UCHAR *InterruptLine,
- OUT UCHAR *InterruptPin,
- OUT UCHAR *ClassCode,
- OUT UCHAR *SubClassCode,
- OUT PDEVICE_OBJECT *ParentPdo,
- OUT ROUTING_TOKEN *RoutingToken,
- OUT UCHAR *Flags);
- typedef NTSTATUS
- (NTAPI *PSET_INTERRUPT_ROUTING_TOKEN)(
- IN PDEVICE_OBJECT Pdo,
- IN PROUTING_TOKEN RoutingToken);
- typedef VOID
- (NTAPI *PUPDATE_INTERRUPT_LINE)(
- IN PDEVICE_OBJECT Pdo,
- IN UCHAR LineRegister);
- typedef struct _INT_ROUTE_INTERFACE_STANDARD {
- USHORT Size;
- USHORT Version;
- PVOID Context;
- PINTERFACE_REFERENCE InterfaceReference;
- PINTERFACE_DEREFERENCE InterfaceDereference;
- PGET_INTERRUPT_ROUTING GetInterruptRouting;
- PSET_INTERRUPT_ROUTING_TOKEN SetInterruptRoutingToken;
- PUPDATE_INTERRUPT_LINE UpdateInterruptLine;
- } INT_ROUTE_INTERFACE_STANDARD, *PINT_ROUTE_INTERFACE_STANDARD;
- typedef struct _LEGACY_DEVICE_DETECTION_INTERFACE {
- USHORT Size;
- USHORT Version;
- PVOID Context;
- PINTERFACE_REFERENCE InterfaceReference;
- PINTERFACE_DEREFERENCE InterfaceDereference;
- PLEGACY_DEVICE_DETECTION_HANDLER LegacyDeviceDetection;
- } LEGACY_DEVICE_DETECTION_INTERFACE, *PLEGACY_DEVICE_DETECTION_INTERFACE;
- /* FIXME : These definitions don't exist in public headers */
- #define PCI_CB_INTRF_VERSION 1
- #define PCI_PME_INTRF_STANDARD_VER 1
- #define PNP_LOCATION_INTERFACE_VERSION 1
- DEFINE_GUID(GUID_PCI_CARDBUS_INTERFACE_PRIVATE, 0xcca82f31, 0x54d6, 0x11d1, 0x82, 0x24, 0x00, 0xa0, 0xc9, 0x32, 0x43, 0x85);
- DEFINE_GUID(GUID_PCI_PME_INTERFACE, 0xaac7e6ac, 0xbb0b, 0x11d2, 0xb4, 0x84, 0x00, 0xc0, 0x4f, 0x72, 0xde, 0x8b);
- typedef NTSTATUS
- (NTAPI *PCARDBUSADD)(
- IN PDEVICE_OBJECT DeviceObject,
- IN OUT PVOID *DeviceContext);
- typedef NTSTATUS
- (NTAPI *PCARDBUSDELETE)(
- IN PVOID DeviceContext);
- typedef NTSTATUS
- (NTAPI *PCARDBUSPCIDISPATCH)(
- IN PVOID DeviceContext,
- IN PIRP Irp);
- typedef VOID
- (NTAPI *PPME_SET_PME_ENABLE)(
- IN PDEVICE_OBJECT Pdo,
- IN BOOLEAN PmeEnable);
- typedef VOID
- (NTAPI *PPME_CLEAR_PME_STATUS)(
- IN PDEVICE_OBJECT Pdo);
- typedef VOID
- (NTAPI *PPME_GET_INFORMATION)(
- IN PDEVICE_OBJECT Pdo,
- OUT PBOOLEAN PmeCapable,
- OUT PBOOLEAN PmeStatus,
- OUT PBOOLEAN PmeEnable);
- typedef struct _PCI_CARDBUS_INTERFACE_PRIVATE {
- USHORT Size;
- USHORT Version;
- PVOID Context;
- PINTERFACE_REFERENCE InterfaceReference;
- PINTERFACE_DEREFERENCE InterfaceDereference;
- PDRIVER_OBJECT DriverObject;
- PCARDBUSADD AddCardBus;
- PCARDBUSDELETE DeleteCardBus;
- PCARDBUSPCIDISPATCH DispatchPnp;
- } PCI_CARDBUS_INTERFACE_PRIVATE, *PPCI_CARDBUS_INTERFACE_PRIVATE;
- typedef struct _PCI_PME_INTERFACE {
- USHORT Size;
- USHORT Version;
- PVOID Context;
- PINTERFACE_REFERENCE InterfaceReference;
- PINTERFACE_DEREFERENCE InterfaceDereference;
- PPME_GET_INFORMATION GetPmeInformation;
- PPME_CLEAR_PME_STATUS ClearPmeStatus;
- PPME_SET_PME_ENABLE UpdateEnable;
- } PCI_PME_INTERFACE, *PPCI_PME_INTERFACE;
- /* Hardware Abstraction Layer Types */
- typedef BOOLEAN
- (NTAPI *PHAL_RESET_DISPLAY_PARAMETERS)(
- IN ULONG Columns,
- IN ULONG Rows);
- typedef PBUS_HANDLER
- (FASTCALL *pHalHandlerForBus)(
- IN INTERFACE_TYPE InterfaceType,
- IN ULONG BusNumber);
- typedef VOID
- (FASTCALL *pHalReferenceBusHandler)(
- IN PBUS_HANDLER BusHandler);
- typedef enum _HAL_QUERY_INFORMATION_CLASS {
- HalInstalledBusInformation,
- HalProfileSourceInformation,
- HalInformationClassUnused1,
- HalPowerInformation,
- HalProcessorSpeedInformation,
- HalCallbackInformation,
- HalMapRegisterInformation,
- HalMcaLogInformation,
- HalFrameBufferCachingInformation,
- HalDisplayBiosInformation,
- HalProcessorFeatureInformation,
- HalNumaTopologyInterface,
- HalErrorInformation,
- HalCmcLogInformation,
- HalCpeLogInformation,
- HalQueryMcaInterface,
- HalQueryAMLIIllegalIOPortAddresses,
- HalQueryMaxHotPlugMemoryAddress,
- HalPartitionIpiInterface,
- HalPlatformInformation,
- HalQueryProfileSourceList,
- HalInitLogInformation,
- HalFrequencyInformation,
- HalProcessorBrandString,
- HalHypervisorInformation,
- HalPlatformTimerInformation,
- HalAcpiAuditInformation
- } HAL_QUERY_INFORMATION_CLASS, *PHAL_QUERY_INFORMATION_CLASS;
- typedef enum _HAL_SET_INFORMATION_CLASS {
- HalProfileSourceInterval,
- HalProfileSourceInterruptHandler,
- HalMcaRegisterDriver,
- HalKernelErrorHandler,
- HalCmcRegisterDriver,
- HalCpeRegisterDriver,
- HalMcaLog,
- HalCmcLog,
- HalCpeLog,
- HalGenerateCmcInterrupt,
- HalProfileSourceTimerHandler,
- HalEnlightenment,
- HalProfileDpgoSourceInterruptHandler
- } HAL_SET_INFORMATION_CLASS, *PHAL_SET_INFORMATION_CLASS;
- typedef NTSTATUS
- (NTAPI *pHalQuerySystemInformation)(
- IN HAL_QUERY_INFORMATION_CLASS InformationClass,
- IN ULONG BufferSize,
- IN OUT PVOID Buffer,
- OUT PULONG ReturnedLength);
- typedef NTSTATUS
- (NTAPI *pHalSetSystemInformation)(
- IN HAL_SET_INFORMATION_CLASS InformationClass,
- IN ULONG BufferSize,
- IN PVOID Buffer);
- typedef VOID
- (FASTCALL *pHalExamineMBR)(
- IN PDEVICE_OBJECT DeviceObject,
- IN ULONG SectorSize,
- IN ULONG MBRTypeIdentifier,
- OUT PVOID *Buffer);
- typedef NTSTATUS
- (FASTCALL *pHalIoReadPartitionTable)(
- IN PDEVICE_OBJECT DeviceObject,
- IN ULONG SectorSize,
- IN BOOLEAN ReturnRecognizedPartitions,
- OUT struct _DRIVE_LAYOUT_INFORMATION **PartitionBuffer);
- typedef NTSTATUS
- (FASTCALL *pHalIoSetPartitionInformation)(
- IN PDEVICE_OBJECT DeviceObject,
- IN ULONG SectorSize,
- IN ULONG PartitionNumber,
- IN ULONG PartitionType);
- typedef NTSTATUS
- (FASTCALL *pHalIoWritePartitionTable)(
- IN PDEVICE_OBJECT DeviceObject,
- IN ULONG SectorSize,
- IN ULONG SectorsPerTrack,
- IN ULONG NumberOfHeads,
- IN struct _DRIVE_LAYOUT_INFORMATION *PartitionBuffer);
- typedef NTSTATUS
- (NTAPI *pHalQueryBusSlots)(
- IN PBUS_HANDLER BusHandler,
- IN ULONG BufferSize,
- OUT PULONG SlotNumbers,
- OUT PULONG ReturnedLength);
- typedef NTSTATUS
- (NTAPI *pHalInitPnpDriver)(
- VOID);
- typedef struct _PM_DISPATCH_TABLE {
- ULONG Signature;
- ULONG Version;
- PVOID Function[1];
- } PM_DISPATCH_TABLE, *PPM_DISPATCH_TABLE;
- typedef NTSTATUS
- (NTAPI *pHalInitPowerManagement)(
- IN PPM_DISPATCH_TABLE PmDriverDispatchTable,
- OUT PPM_DISPATCH_TABLE *PmHalDispatchTable);
- typedef struct _DMA_ADAPTER*
- (NTAPI *pHalGetDmaAdapter)(
- IN PVOID Context,
- IN struct _DEVICE_DESCRIPTION *DeviceDescriptor,
- OUT PULONG NumberOfMapRegisters);
- typedef NTSTATUS
- (NTAPI *pHalGetInterruptTranslator)(
- IN INTERFACE_TYPE ParentInterfaceType,
- IN ULONG ParentBusNumber,
- IN INTERFACE_TYPE BridgeInterfaceType,
- IN USHORT Size,
- IN USHORT Version,
- OUT PTRANSLATOR_INTERFACE Translator,
- OUT PULONG BridgeBusNumber);
- typedef NTSTATUS
- (NTAPI *pHalStartMirroring)(
- VOID);
- typedef NTSTATUS
- (NTAPI *pHalEndMirroring)(
- IN ULONG PassNumber);
- typedef NTSTATUS
- (NTAPI *pHalMirrorPhysicalMemory)(
- IN PHYSICAL_ADDRESS PhysicalAddress,
- IN LARGE_INTEGER NumberOfBytes);
- typedef NTSTATUS
- (NTAPI *pHalMirrorVerify)(
- IN PHYSICAL_ADDRESS PhysicalAddress,
- IN LARGE_INTEGER NumberOfBytes);
- typedef BOOLEAN
- (NTAPI *pHalTranslateBusAddress)(
- IN INTERFACE_TYPE InterfaceType,
- IN ULONG BusNumber,
- IN PHYSICAL_ADDRESS BusAddress,
- IN OUT PULONG AddressSpace,
- OUT PPHYSICAL_ADDRESS TranslatedAddress);
- typedef NTSTATUS
- (NTAPI *pHalAssignSlotResources)(
- IN PUNICODE_STRING RegistryPath,
- IN PUNICODE_STRING DriverClassName OPTIONAL,
- IN PDRIVER_OBJECT DriverObject,
- IN PDEVICE_OBJECT DeviceObject,
- IN INTERFACE_TYPE BusType,
- IN ULONG BusNumber,
- IN ULONG SlotNumber,
- IN OUT PCM_RESOURCE_LIST *AllocatedResources);
- typedef VOID
- (NTAPI *pHalHaltSystem)(
- VOID);
- typedef BOOLEAN
- (NTAPI *pHalResetDisplay)(
- VOID);
- typedef struct _MAP_REGISTER_ENTRY {
- PVOID MapRegister;
- BOOLEAN WriteToDevice;
- } MAP_REGISTER_ENTRY, *PMAP_REGISTER_ENTRY;
- typedef UCHAR
- (NTAPI *pHalVectorToIDTEntry)(
- ULONG Vector);
- typedef BOOLEAN
- (NTAPI *pHalFindBusAddressTranslation)(
- IN PHYSICAL_ADDRESS BusAddress,
- IN OUT PULONG AddressSpace,
- OUT PPHYSICAL_ADDRESS TranslatedAddress,
- IN OUT PULONG_PTR Context,
- IN BOOLEAN NextBus);
- typedef VOID
- (NTAPI *pHalEndOfBoot)(
- VOID);
- typedef PVOID
- (NTAPI *pHalGetAcpiTable)(
- IN ULONG Signature,
- IN PCSTR OemId OPTIONAL,
- IN PCSTR OemTableId OPTIONAL);
- #if defined(_IA64_)
- typedef NTSTATUS
- (*pHalGetErrorCapList)(
- IN OUT PULONG CapsListLength,
- IN OUT PUCHAR ErrorCapList);
- typedef NTSTATUS
- (*pHalInjectError)(
- IN ULONG BufferLength,
- IN PUCHAR Buffer);
- #endif
- typedef VOID
- (NTAPI *PCI_ERROR_HANDLER_CALLBACK)(
- VOID);
- typedef VOID
- (NTAPI *pHalSetPciErrorHandlerCallback)(
- IN PCI_ERROR_HANDLER_CALLBACK Callback);
- #if 1 /* Not present in WDK 7600 */
- typedef VOID
- (FASTCALL *pHalIoAssignDriveLetters)(
- IN struct _LOADER_PARAMETER_BLOCK *LoaderBlock,
- IN PSTRING NtDeviceName,
- OUT PUCHAR NtSystemPath,
- OUT PSTRING NtSystemPathString);
- #endif
- typedef struct {
- ULONG Version;
- pHalQuerySystemInformation HalQuerySystemInformation;
- pHalSetSystemInformation HalSetSystemInformation;
- pHalQueryBusSlots HalQueryBusSlots;
- ULONG Spare1;
- pHalExamineMBR HalExamineMBR;
- #if 1 /* Not present in WDK 7600 */
- pHalIoAssignDriveLetters HalIoAssignDriveLetters;
- #endif
- pHalIoReadPartitionTable HalIoReadPartitionTable;
- pHalIoSetPartitionInformation HalIoSetPartitionInformation;
- pHalIoWritePartitionTable HalIoWritePartitionTable;
- pHalHandlerForBus HalReferenceHandlerForBus;
- pHalReferenceBusHandler HalReferenceBusHandler;
- pHalReferenceBusHandler HalDereferenceBusHandler;
- pHalInitPnpDriver HalInitPnpDriver;
- pHalInitPowerManagement HalInitPowerManagement;
- pHalGetDmaAdapter HalGetDmaAdapter;
- pHalGetInterruptTranslator HalGetInterruptTranslator;
- pHalStartMirroring HalStartMirroring;
- pHalEndMirroring HalEndMirroring;
- pHalMirrorPhysicalMemory HalMirrorPhysicalMemory;
- pHalEndOfBoot HalEndOfBoot;
- pHalMirrorVerify HalMirrorVerify;
- pHalGetAcpiTable HalGetCachedAcpiTable;
- pHalSetPciErrorHandlerCallback HalSetPciErrorHandlerCallback;
- #if defined(_IA64_)
- pHalGetErrorCapList HalGetErrorCapList;
- pHalInjectError HalInjectError;
- #endif
- } HAL_DISPATCH, *PHAL_DISPATCH;
- /* GCC/MSVC and WDK compatible declaration */
- extern NTKERNELAPI HAL_DISPATCH HalDispatchTable;
- #if defined(_NTOSKRNL_) || defined(_BLDR_)
- #define HALDISPATCH (&HalDispatchTable)
- #else
- /* This is a WDK compatibility definition */
- #define HalDispatchTable (&HalDispatchTable)
- #define HALDISPATCH HalDispatchTable
- #endif
- #define HAL_DISPATCH_VERSION 3 /* FIXME: when to use 4? */
- #define HalDispatchTableVersion HALDISPATCH->Version
- #define HalQuerySystemInformation HALDISPATCH->HalQuerySystemInformation
- #define HalSetSystemInformation HALDISPATCH->HalSetSystemInformation
- #define HalQueryBusSlots HALDISPATCH->HalQueryBusSlots
- #define HalReferenceHandlerForBus HALDISPATCH->HalReferenceHandlerForBus
- #define HalReferenceBusHandler HALDISPATCH->HalReferenceBusHandler
- #define HalDereferenceBusHandler HALDISPATCH->HalDereferenceBusHandler
- #define HalInitPnpDriver HALDISPATCH->HalInitPnpDriver
- #define HalInitPowerManagement HALDISPATCH->HalInitPowerManagement
- #define HalGetDmaAdapter HALDISPATCH->HalGetDmaAdapter
- #define HalGetInterruptTranslator HALDISPATCH->HalGetInterruptTranslator
- #define HalStartMirroring HALDISPATCH->HalStartMirroring
- #define HalEndMirroring HALDISPATCH->HalEndMirroring
- #define HalMirrorPhysicalMemory HALDISPATCH->HalMirrorPhysicalMemory
- #define HalEndOfBoot HALDISPATCH->HalEndOfBoot
- #define HalMirrorVerify HALDISPATCH->HalMirrorVerify
- #define HalGetCachedAcpiTable HALDISPATCH->HalGetCachedAcpiTable
- #define HalSetPciErrorHandlerCallback HALDISPATCH->HalSetPciErrorHandlerCallback
- #if defined(_IA64_)
- #define HalGetErrorCapList HALDISPATCH->HalGetErrorCapList
- #define HalInjectError HALDISPATCH->HalInjectError
- #endif
- typedef struct _HAL_BUS_INFORMATION {
- INTERFACE_TYPE BusType;
- BUS_DATA_TYPE ConfigurationType;
- ULONG BusNumber;
- ULONG Reserved;
- } HAL_BUS_INFORMATION, *PHAL_BUS_INFORMATION;
- typedef struct _HAL_PROFILE_SOURCE_INFORMATION {
- KPROFILE_SOURCE Source;
- BOOLEAN Supported;
- ULONG Interval;
- } HAL_PROFILE_SOURCE_INFORMATION, *PHAL_PROFILE_SOURCE_INFORMATION;
- typedef struct _HAL_PROFILE_SOURCE_INFORMATION_EX {
- KPROFILE_SOURCE Source;
- BOOLEAN Supported;
- ULONG_PTR Interval;
- ULONG_PTR DefInterval;
- ULONG_PTR MaxInterval;
- ULONG_PTR MinInterval;
- } HAL_PROFILE_SOURCE_INFORMATION_EX, *PHAL_PROFILE_SOURCE_INFORMATION_EX;
- typedef struct _HAL_PROFILE_SOURCE_INTERVAL {
- KPROFILE_SOURCE Source;
- ULONG_PTR Interval;
- } HAL_PROFILE_SOURCE_INTERVAL, *PHAL_PROFILE_SOURCE_INTERVAL;
- typedef struct _HAL_PROFILE_SOURCE_LIST {
- KPROFILE_SOURCE Source;
- PWSTR Description;
- } HAL_PROFILE_SOURCE_LIST, *PHAL_PROFILE_SOURCE_LIST;
- typedef enum _HAL_DISPLAY_BIOS_INFORMATION {
- HalDisplayInt10Bios,
- HalDisplayEmulatedBios,
- HalDisplayNoBios
- } HAL_DISPLAY_BIOS_INFORMATION, *PHAL_DISPLAY_BIOS_INFORMATION;
- typedef struct _HAL_POWER_INFORMATION {
- ULONG TBD;
- } HAL_POWER_INFORMATION, *PHAL_POWER_INFORMATION;
- typedef struct _HAL_PROCESSOR_SPEED_INFO {
- ULONG ProcessorSpeed;
- } HAL_PROCESSOR_SPEED_INFORMATION, *PHAL_PROCESSOR_SPEED_INFORMATION;
- typedef struct _HAL_CALLBACKS {
- PCALLBACK_OBJECT SetSystemInformation;
- PCALLBACK_OBJECT BusCheck;
- } HAL_CALLBACKS, *PHAL_CALLBACKS;
- typedef struct _HAL_PROCESSOR_FEATURE {
- ULONG UsableFeatureBits;
- } HAL_PROCESSOR_FEATURE;
- typedef NTSTATUS
- (NTAPI *PHALIOREADWRITEHANDLER)(
- IN BOOLEAN fRead,
- IN ULONG dwAddr,
- IN ULONG dwSize,
- IN OUT PULONG pdwData);
- typedef struct _HAL_AMLI_BAD_IO_ADDRESS_LIST {
- ULONG BadAddrBegin;
- ULONG BadAddrSize;
- ULONG OSVersionTrigger;
- PHALIOREADWRITEHANDLER IOHandler;
- } HAL_AMLI_BAD_IO_ADDRESS_LIST, *PHAL_AMLI_BAD_IO_ADDRESS_LIST;
- #if defined(_X86_) || defined(_IA64_) || defined(_AMD64_)
- typedef VOID
- (NTAPI *PHALMCAINTERFACELOCK)(
- VOID);
- typedef VOID
- (NTAPI *PHALMCAINTERFACEUNLOCK)(
- VOID);
- typedef NTSTATUS
- (NTAPI *PHALMCAINTERFACEREADREGISTER)(
- IN UCHAR BankNumber,
- IN OUT PVOID Exception);
- typedef struct _HAL_MCA_INTERFACE {
- PHALMCAINTERFACELOCK Lock;
- PHALMCAINTERFACEUNLOCK Unlock;
- PHALMCAINTERFACEREADREGISTER ReadRegister;
- } HAL_MCA_INTERFACE;
- typedef enum {
- ApicDestinationModePhysical = 1,
- ApicDestinationModeLogicalFlat,
- ApicDestinationModeLogicalClustered,
- ApicDestinationModeUnknown
- } HAL_APIC_DESTINATION_MODE, *PHAL_APIC_DESTINATION_MODE;
- #if defined(_AMD64_)
- struct _KTRAP_FRAME;
- struct _KEXCEPTION_FRAME;
- typedef ERROR_SEVERITY
- (NTAPI *PDRIVER_EXCPTN_CALLBACK)(
- IN PVOID Context,
- IN struct _KTRAP_FRAME *TrapFrame,
- IN struct _KEXCEPTION_FRAME *ExceptionFrame,
- IN PMCA_EXCEPTION Exception);
- #endif
- #if defined(_X86_) || defined(_IA64_)
- typedef
- #if defined(_IA64_)
- ERROR_SEVERITY
- #else
- VOID
- #endif
- (NTAPI *PDRIVER_EXCPTN_CALLBACK)(
- IN PVOID Context,
- IN PMCA_EXCEPTION BankLog);
- #endif
- typedef PDRIVER_EXCPTN_CALLBACK PDRIVER_MCA_EXCEPTION_CALLBACK;
- typedef struct _MCA_DRIVER_INFO {
- PDRIVER_MCA_EXCEPTION_CALLBACK ExceptionCallback;
- PKDEFERRED_ROUTINE DpcCallback;
- PVOID DeviceContext;
- } MCA_DRIVER_INFO, *PMCA_DRIVER_INFO;
- typedef struct _HAL_ERROR_INFO {
- ULONG Version;
- ULONG InitMaxSize;
- ULONG McaMaxSize;
- ULONG McaPreviousEventsCount;
- ULONG McaCorrectedEventsCount;
- ULONG McaKernelDeliveryFails;
- ULONG McaDriverDpcQueueFails;
- ULONG McaReserved;
- ULONG CmcMaxSize;
- ULONG CmcPollingInterval;
- ULONG CmcInterruptsCount;
- ULONG CmcKernelDeliveryFails;
- ULONG CmcDriverDpcQueueFails;
- ULONG CmcGetStateFails;
- ULONG CmcClearStateFails;
- ULONG CmcReserved;
- ULONGLONG CmcLogId;
- ULONG CpeMaxSize;
- ULONG CpePollingInterval;
- ULONG CpeInterruptsCount;
- ULONG CpeKernelDeliveryFails;
- ULONG CpeDriverDpcQueueFails;
- ULONG CpeGetStateFails;
- ULONG CpeClearStateFails;
- ULONG CpeInterruptSources;
- ULONGLONG CpeLogId;
- ULONGLONG KernelReserved[4];
- } HAL_ERROR_INFO, *PHAL_ERROR_INFO;
- #define HAL_MCE_INTERRUPTS_BASED ((ULONG)-1)
- #define HAL_MCE_DISABLED ((ULONG)0)
- #define HAL_CMC_INTERRUPTS_BASED HAL_MCE_INTERRUPTS_BASED
- #define HAL_CMC_DISABLED HAL_MCE_DISABLED
- #define HAL_CPE_INTERRUPTS_BASED HAL_MCE_INTERRUPTS_BASED
- #define HAL_CPE_DISABLED HAL_MCE_DISABLED
- #define HAL_MCA_INTERRUPTS_BASED HAL_MCE_INTERRUPTS_BASED
- #define HAL_MCA_DISABLED HAL_MCE_DISABLED
- typedef VOID
- (NTAPI *PDRIVER_CMC_EXCEPTION_CALLBACK)(
- IN PVOID Context,
- IN PCMC_EXCEPTION CmcLog);
- typedef VOID
- (NTAPI *PDRIVER_CPE_EXCEPTION_CALLBACK)(
- IN PVOID Context,
- IN PCPE_EXCEPTION CmcLog);
- typedef struct _CMC_DRIVER_INFO {
- PDRIVER_CMC_EXCEPTION_CALLBACK ExceptionCallback;
- PKDEFERRED_ROUTINE DpcCallback;
- PVOID DeviceContext;
- } CMC_DRIVER_INFO, *PCMC_DRIVER_INFO;
- typedef struct _CPE_DRIVER_INFO {
- PDRIVER_CPE_EXCEPTION_CALLBACK ExceptionCallback;
- PKDEFERRED_ROUTINE DpcCallback;
- PVOID DeviceContext;
- } CPE_DRIVER_INFO, *PCPE_DRIVER_INFO;
- #endif // defined(_X86_) || defined(_IA64_) || defined(_AMD64_)
- #if defined(_IA64_)
- typedef NTSTATUS
- (*HALSENDCROSSPARTITIONIPI)(
- IN USHORT ProcessorID,
- IN UCHAR HardwareVector);
- typedef NTSTATUS
- (*HALRESERVECROSSPARTITIONINTERRUPTVECTOR)(
- OUT PULONG Vector,
- OUT PKIRQL Irql,
- IN OUT PGROUP_AFFINITY Affinity,
- OUT PUCHAR HardwareVector);
- typedef VOID
- (*HALFREECROSSPARTITIONINTERRUPTVECTOR)(
- IN ULONG Vector,
- IN PGROUP_AFFINITY Affinity);
- typedef struct _HAL_CROSS_PARTITION_IPI_INTERFACE {
- HALSENDCROSSPARTITIONIPI HalSendCrossPartitionIpi;
- HALRESERVECROSSPARTITIONINTERRUPTVECTOR HalReserveCrossPartitionInterruptVector;
- HALFREECROSSPARTITIONINTERRUPTVECTOR HalFreeCrossPartitionInterruptVector;
- } HAL_CROSS_PARTITION_IPI_INTERFACE;
- #define HAL_CROSS_PARTITION_IPI_INTERFACE_MINIMUM_SIZE \
- FIELD_OFFSET(HAL_CROSS_PARTITION_IPI_INTERFACE, \
- HalFreeCrossPartitionInterruptVector)
- #endif /* defined(_IA64_) */
- typedef struct _HAL_PLATFORM_INFORMATION {
- ULONG PlatformFlags;
- } HAL_PLATFORM_INFORMATION, *PHAL_PLATFORM_INFORMATION;
- #define HAL_PLATFORM_DISABLE_WRITE_COMBINING 0x01L
- #define HAL_PLATFORM_DISABLE_PTCG 0x04L
- #define HAL_PLATFORM_DISABLE_UC_MAIN_MEMORY 0x08L
- #define HAL_PLATFORM_ENABLE_WRITE_COMBINING_MMIO 0x10L
- #define HAL_PLATFORM_ACPI_TABLES_CACHED 0x20L
- /******************************************************************************
- * Kernel Types *
- ******************************************************************************/
- #define NX_SUPPORT_POLICY_ALWAYSOFF 0
- #define NX_SUPPORT_POLICY_ALWAYSON 1
- #define NX_SUPPORT_POLICY_OPTIN 2
- #define NX_SUPPORT_POLICY_OPTOUT 3
- typedef VOID
- (NTAPI *PEXPAND_STACK_CALLOUT)(
- IN PVOID Parameter OPTIONAL);
- typedef VOID
- (NTAPI *PTIMER_APC_ROUTINE)(
- IN PVOID TimerContext,
- IN ULONG TimerLowValue,
- IN LONG TimerHighValue);
- typedef enum _TIMER_SET_INFORMATION_CLASS {
- TimerSetCoalescableTimer,
- MaxTimerInfoClass
- } TIMER_SET_INFORMATION_CLASS;
- #if (NTDDI_VERSION >= NTDDI_WIN7)
- typedef struct _TIMER_SET_COALESCABLE_TIMER_INFO {
- IN LARGE_INTEGER DueTime;
- IN PTIMER_APC_ROUTINE TimerApcRoutine OPTIONAL;
- IN PVOID TimerContext OPTIONAL;
- IN struct _COUNTED_REASON_CONTEXT *WakeContext OPTIONAL;
- IN ULONG Period OPTIONAL;
- IN ULONG TolerableDelay;
- OUT PBOOLEAN PreviousState OPTIONAL;
- } TIMER_SET_COALESCABLE_TIMER_INFO, *PTIMER_SET_COALESCABLE_TIMER_INFO;
- #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
- #define XSTATE_LEGACY_FLOATING_POINT 0
- #define XSTATE_LEGACY_SSE 1
- #define XSTATE_GSSE 2
- #define XSTATE_MASK_LEGACY_FLOATING_POINT (1i64 << (XSTATE_LEGACY_FLOATING_POINT))
- #define XSTATE_MASK_LEGACY_SSE (1i64 << (XSTATE_LEGACY_SSE))
- #define XSTATE_MASK_LEGACY (XSTATE_MASK_LEGACY_FLOATING_POINT | XSTATE_MASK_LEGACY_SSE)
- #define XSTATE_MASK_GSSE (1i64 << (XSTATE_GSSE))
- #define MAXIMUM_XSTATE_FEATURES 64
- typedef struct _XSTATE_FEATURE {
- ULONG Offset;
- ULONG Size;
- } XSTATE_FEATURE, *PXSTATE_FEATURE;
- typedef struct _XSTATE_CONFIGURATION {
- ULONG64 EnabledFeatures;
- ULONG Size;
- ULONG OptimizedSave:1;
- XSTATE_FEATURE Features[MAXIMUM_XSTATE_FEATURES];
- } XSTATE_CONFIGURATION, *PXSTATE_CONFIGURATION;
- #define MAX_WOW64_SHARED_ENTRIES 16
- typedef struct _KUSER_SHARED_DATA {
- ULONG TickCountLowDeprecated;
- ULONG TickCountMultiplier;
- volatile KSYSTEM_TIME InterruptTime;
- volatile KSYSTEM_TIME SystemTime;
- volatile KSYSTEM_TIME TimeZoneBias;
- USHORT ImageNumberLow;
- USHORT ImageNumberHigh;
- WCHAR NtSystemRoot[260];
- ULONG MaxStackTraceDepth;
- ULONG CryptoExponent;
- ULONG TimeZoneId;
- ULONG LargePageMinimum;
- ULONG Reserved2[7];
- NT_PRODUCT_TYPE NtProductType;
- BOOLEAN ProductTypeIsValid;
- ULONG NtMajorVersion;
- ULONG NtMinorVersion;
- BOOLEAN ProcessorFeatures[PROCESSOR_FEATURE_MAX];
- ULONG Reserved1;
- ULONG Reserved3;
- volatile ULONG TimeSlip;
- ALTERNATIVE_ARCHITECTURE_TYPE AlternativeArchitecture;
- ULONG AltArchitecturePad[1];
- LARGE_INTEGER SystemExpirationDate;
- ULONG SuiteMask;
- BOOLEAN KdDebuggerEnabled;
- #if (NTDDI_VERSION >= NTDDI_WINXPSP2)
- UCHAR NXSupportPolicy;
- #endif
- volatile ULONG ActiveConsoleId;
- volatile ULONG DismountCount;
- ULONG ComPlusPackage;
- ULONG LastSystemRITEventTickCount;
- ULONG NumberOfPhysicalPages;
- BOOLEAN SafeBootMode;
- #if (NTDDI_VERSION >= NTDDI_WIN7)
- _ANONYMOUS_UNION union {
- UCHAR TscQpcData;
- _ANONYMOUS_STRUCT struct {
- UCHAR TscQpcEnabled:1;
- UCHAR TscQpcSpareFlag:1;
- UCHAR TscQpcShift:6;
- } DUMMYSTRUCTNAME;
- } DUMMYUNIONNAME;
- UCHAR TscQpcPad[2];
- #endif
- #if (NTDDI_VERSION >= NTDDI_VISTA)
- _ANONYMOUS_UNION union {
- ULONG SharedDataFlags;
- _ANONYMOUS_STRUCT struct {
- ULONG DbgErrorPortPresent:1;
- ULONG DbgElevationEnabled:1;
- ULONG DbgVirtEnabled:1;
- ULONG DbgInstallerDetectEnabled:1;
- ULONG DbgSystemDllRelocated:1;
- ULONG DbgDynProcessorEnabled:1;
- ULONG DbgSEHValidationEnabled:1;
- ULONG SpareBits:25;
- } DUMMYSTRUCTNAME2;
- } DUMMYUNIONNAME2;
- #else
- ULONG TraceLogging;
- #endif
- ULONG DataFlagsPad[1];
- ULONGLONG TestRetInstruction;
- ULONG SystemCall;
- ULONG SystemCallReturn;
- ULONGLONG SystemCallPad[3];
- _ANONYMOUS_UNION union {
- volatile KSYSTEM_TIME TickCount;
- volatile ULONG64 TickCountQuad;
- _ANONYMOUS_STRUCT struct {
- ULONG ReservedTickCountOverlay[3];
- ULONG TickCountPad[1];
- } DUMMYSTRUCTNAME;
- } DUMMYUNIONNAME3;
- ULONG Cookie;
- ULONG CookiePad[1];
- #if (NTDDI_VERSION >= NTDDI_WS03)
- LONGLONG ConsoleSessionForegroundProcessId;
- ULONG Wow64SharedInformation[MAX_WOW64_SHARED_ENTRIES];
- #endif
- #if (NTDDI_VERSION >= NTDDI_VISTA)
- #if (NTDDI_VERSION >= NTDDI_WIN7)
- USHORT UserModeGlobalLogger[16];
- #else
- USHORT UserModeGlobalLogger[8];
- ULONG HeapTracingPid[2];
- ULONG CritSecTracingPid[2];
- #endif
- ULONG ImageFileExecutionOptions;
- #if (NTDDI_VERSION >= NTDDI_VISTASP1)
- ULONG LangGenerationCount;
- #else
- /* 4 bytes padding */
- #endif
- ULONGLONG Reserved5;
- volatile ULONG64 InterruptTimeBias;
- #endif
- #if (NTDDI_VERSION >= NTDDI_WIN7)
- volatile ULONG64 TscQpcBias;
- volatile ULONG ActiveProcessorCount;
- volatile USHORT ActiveGroupCount;
- USHORT Reserved4;
- volatile ULONG AitSamplingValue;
- volatile ULONG AppCompatFlag;
- ULONGLONG SystemDllNativeRelocation;
- ULONG SystemDllWowRelocation;
- ULONG XStatePad[1];
- XSTATE_CONFIGURATION XState;
- #endif
- } KUSER_SHARED_DATA, *PKUSER_SHARED_DATA;
- #if (NTDDI_VERSION >= NTDDI_VISTA)
- extern NTSYSAPI volatile CCHAR KeNumberProcessors;
- #elif (NTDDI_VERSION >= NTDDI_WINXP)
- extern NTSYSAPI CCHAR KeNumberProcessors;
- #else
- extern PCCHAR KeNumberProcessors;
- #endif
- /******************************************************************************
- * Kernel Debugger Types *
- ******************************************************************************/
- typedef struct _DEBUG_DEVICE_ADDRESS {
- UCHAR Type;
- BOOLEAN Valid;
- UCHAR Reserved[2];
- PUCHAR TranslatedAddress;
- ULONG Length;
- } DEBUG_DEVICE_ADDRESS, *PDEBUG_DEVICE_ADDRESS;
- typedef struct _DEBUG_MEMORY_REQUIREMENTS {
- PHYSICAL_ADDRESS Start;
- PHYSICAL_ADDRESS MaxEnd;
- PVOID VirtualAddress;
- ULONG Length;
- BOOLEAN Cached;
- BOOLEAN Aligned;
- } DEBUG_MEMORY_REQUIREMENTS, *PDEBUG_MEMORY_REQUIREMENTS;
- typedef struct _DEBUG_DEVICE_DESCRIPTOR {
- ULONG Bus;
- ULONG Slot;
- USHORT Segment;
- USHORT VendorID;
- USHORT DeviceID;
- UCHAR BaseClass;
- UCHAR SubClass;
- UCHAR ProgIf;
- BOOLEAN Initialized;
- BOOLEAN Configured;
- DEBUG_DEVICE_ADDRESS BaseAddress[6];
- DEBUG_MEMORY_REQUIREMENTS Memory;
- } DEBUG_DEVICE_DESCRIPTOR, *PDEBUG_DEVICE_DESCRIPTOR;
- typedef NTSTATUS
- (NTAPI *pKdSetupPciDeviceForDebugging)(
- IN PVOID LoaderBlock OPTIONAL,
- IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice);
- typedef NTSTATUS
- (NTAPI *pKdReleasePciDeviceForDebugging)(
- IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice);
- typedef PVOID
- (NTAPI *pKdGetAcpiTablePhase0)(
- IN struct _LOADER_PARAMETER_BLOCK *LoaderBlock,
- IN ULONG Signature);
- typedef VOID
- (NTAPI *pKdCheckPowerButton)(
- VOID);
- #if (NTDDI_VERSION >= NTDDI_VISTA)
- typedef PVOID
- (NTAPI *pKdMapPhysicalMemory64)(
- IN PHYSICAL_ADDRESS PhysicalAddress,
- IN ULONG NumberPages,
- IN BOOLEAN FlushCurrentTLB);
- typedef VOID
- (NTAPI *pKdUnmapVirtualAddress)(
- IN PVOID VirtualAddress,
- IN ULONG NumberPages,
- IN BOOLEAN FlushCurrentTLB);
- #else
- typedef PVOID
- (NTAPI *pKdMapPhysicalMemory64)(
- IN PHYSICAL_ADDRESS PhysicalAddress,
- IN ULONG NumberPages);
- typedef VOID
- (NTAPI *pKdUnmapVirtualAddress)(
- IN PVOID VirtualAddress,
- IN ULONG NumberPages);
- #endif
- typedef ULONG
- (NTAPI *pKdGetPciDataByOffset)(
- IN ULONG BusNumber,
- IN ULONG SlotNumber,
- OUT PVOID Buffer,
- IN ULONG Offset,
- IN ULONG Length);
- typedef ULONG
- (NTAPI *pKdSetPciDataByOffset)(
- IN ULONG BusNumber,
- IN ULONG SlotNumber,
- IN PVOID Buffer,
- IN ULONG Offset,
- IN ULONG Length);
- /******************************************************************************
- * Memory manager Types *
- ******************************************************************************/
- typedef struct _PHYSICAL_MEMORY_RANGE {
- PHYSICAL_ADDRESS BaseAddress;
- LARGE_INTEGER NumberOfBytes;
- } PHYSICAL_MEMORY_RANGE, *PPHYSICAL_MEMORY_RANGE;
- typedef NTSTATUS
- (NTAPI *PMM_ROTATE_COPY_CALLBACK_FUNCTION)(
- IN PMDL DestinationMdl,
- IN PMDL SourceMdl,
- IN PVOID Context);
- typedef enum _MM_ROTATE_DIRECTION {
- MmToFrameBuffer,
- MmToFrameBufferNoCopy,
- MmToRegularMemory,
- MmToRegularMemoryNoCopy,
- MmMaximumRotateDirection
- } MM_ROTATE_DIRECTION, *PMM_ROTATE_DIRECTION;
- /******************************************************************************
- * Process Manager Types *
- ******************************************************************************/
- #define QUOTA_LIMITS_HARDWS_MIN_ENABLE 0x00000001
- #define QUOTA_LIMITS_HARDWS_MIN_DISABLE 0x00000002
- #define QUOTA_LIMITS_HARDWS_MAX_ENABLE 0x00000004
- #define QUOTA_LIMITS_HARDWS_MAX_DISABLE 0x00000008
- #define QUOTA_LIMITS_USE_DEFAULT_LIMITS 0x00000010
- typedef struct _QUOTA_LIMITS {
- SIZE_T PagedPoolLimit;
- SIZE_T NonPagedPoolLimit;
- SIZE_T MinimumWorkingSetSize;
- SIZE_T MaximumWorkingSetSize;
- SIZE_T PagefileLimit;
- LARGE_INTEGER TimeLimit;
- } QUOTA_LIMITS, *PQUOTA_LIMITS;
- typedef union _RATE_QUOTA_LIMIT {
- ULONG RateData;
- _ANONYMOUS_STRUCT struct {
- ULONG RatePercent:7;
- ULONG Reserved0:25;
- } DUMMYSTRUCTNAME;
- } RATE_QUOTA_LIMIT, *PRATE_QUOTA_LIMIT;
- typedef struct _QUOTA_LIMITS_EX {
- SIZE_T PagedPoolLimit;
- SIZE_T NonPagedPoolLimit;
- SIZE_T MinimumWorkingSetSize;
- SIZE_T MaximumWorkingSetSize;
- SIZE_T PagefileLimit;
- LARGE_INTEGER TimeLimit;
- SIZE_T WorkingSetLimit;
- SIZE_T Reserved2;
- SIZE_T Reserved3;
- SIZE_T Reserved4;
- ULONG Flags;
- RATE_QUOTA_LIMIT CpuRateLimit;
- } QUOTA_LIMITS_EX, *PQUOTA_LIMITS_EX;
- typedef struct _IO_COUNTERS {
- ULONGLONG ReadOperationCount;
- ULONGLONG WriteOperationCount;
- ULONGLONG OtherOperationCount;
- ULONGLONG ReadTransferCount;
- ULONGLONG WriteTransferCount;
- ULONGLONG OtherTransferCount;
- } IO_COUNTERS, *PIO_COUNTERS;
- typedef struct _VM_COUNTERS {
- SIZE_T PeakVirtualSize;
- SIZE_T VirtualSize;
- ULONG PageFaultCount;
- SIZE_T PeakWorkingSetSize;
- SIZE_T WorkingSetSize;
- SIZE_T QuotaPeakPagedPoolUsage;
- SIZE_T QuotaPagedPoolUsage;
- SIZE_T QuotaPeakNonPagedPoolUsage;
- SIZE_T QuotaNonPagedPoolUsage;
- SIZE_T PagefileUsage;
- SIZE_T PeakPagefileUsage;
- } VM_COUNTERS, *PVM_COUNTERS;
- typedef struct _VM_COUNTERS_EX {
- SIZE_T PeakVirtualSize;
- SIZE_T VirtualSize;
- ULONG PageFaultCount;
- SIZE_T PeakWorkingSetSize;
- SIZE_T WorkingSetSize;
- SIZE_T QuotaPeakPagedPoolUsage;
- SIZE_T QuotaPagedPoolUsage;
- SIZE_T QuotaPeakNonPagedPoolUsage;
- SIZE_T QuotaNonPagedPoolUsage;
- SIZE_T PagefileUsage;
- SIZE_T PeakPagefileUsage;
- SIZE_T PrivateUsage;
- } VM_COUNTERS_EX, *PVM_COUNTERS_EX;
- #define MAX_HW_COUNTERS 16
- #define THREAD_PROFILING_FLAG_DISPATCH 0x00000001
- typedef enum _HARDWARE_COUNTER_TYPE {
- PMCCounter,
- MaxHardwareCounterType
- } HARDWARE_COUNTER_TYPE, *PHARDWARE_COUNTER_TYPE;
- typedef struct _HARDWARE_COUNTER {
- HARDWARE_COUNTER_TYPE Type;
- ULONG Reserved;
- ULONG64 Index;
- } HARDWARE_COUNTER, *PHARDWARE_COUNTER;
- typedef struct _POOLED_USAGE_AND_LIMITS {
- SIZE_T PeakPagedPoolUsage;
- SIZE_T PagedPoolUsage;
- SIZE_T PagedPoolLimit;
- SIZE_T PeakNonPagedPoolUsage;
- SIZE_T NonPagedPoolUsage;
- SIZE_T NonPagedPoolLimit;
- SIZE_T PeakPagefileUsage;
- SIZE_T PagefileUsage;
- SIZE_T PagefileLimit;
- } POOLED_USAGE_AND_LIMITS, *PPOOLED_USAGE_AND_LIMITS;
- typedef struct _PROCESS_ACCESS_TOKEN {
- HANDLE Token;
- HANDLE Thread;
- } PROCESS_ACCESS_TOKEN, *PPROCESS_ACCESS_TOKEN;
- #define PROCESS_EXCEPTION_PORT_ALL_STATE_BITS 0x00000003UL
- #define PROCESS_EXCEPTION_PORT_ALL_STATE_FLAGS ((ULONG_PTR)((1UL << PROCESS_EXCEPTION_PORT_ALL_STATE_BITS) - 1))
- typedef struct _PROCESS_EXCEPTION_PORT {
- IN HANDLE ExceptionPortHandle;
- IN OUT ULONG StateFlags;
- } PROCESS_EXCEPTION_PORT, *PPROCESS_EXCEPTION_PORT;
- typedef VOID
- (NTAPI *PCREATE_PROCESS_NOTIFY_ROUTINE)(
- IN HANDLE ParentId,
- IN HANDLE ProcessId,
- IN BOOLEAN Create);
- typedef struct _PS_CREATE_NOTIFY_INFO {
- IN SIZE_T Size;
- _ANONYMOUS_UNION union {
- IN ULONG Flags;
- _ANONYMOUS_STRUCT struct {
- IN ULONG FileOpenNameAvailable:1;
- IN ULONG Reserved:31;
- } DUMMYSTRUCTNAME;
- } DUMMYUNIONNAME;
- IN HANDLE ParentProcessId;
- IN CLIENT_ID CreatingThreadId;
- IN OUT struct _FILE_OBJECT *FileObject;
- IN PCUNICODE_STRING ImageFileName;
- IN PCUNICODE_STRING CommandLine OPTIONAL;
- IN OUT NTSTATUS CreationStatus;
- } PS_CREATE_NOTIFY_INFO, *PPS_CREATE_NOTIFY_INFO;
- typedef VOID
- (NTAPI *PCREATE_PROCESS_NOTIFY_ROUTINE_EX)(
- IN OUT PEPROCESS Process,
- IN HANDLE ProcessId,
- IN PPS_CREATE_NOTIFY_INFO CreateInfo OPTIONAL);
- typedef VOID
- (NTAPI *PCREATE_THREAD_NOTIFY_ROUTINE)(
- IN HANDLE ProcessId,
- IN HANDLE ThreadId,
- IN BOOLEAN Create);
- #define IMAGE_ADDRESSING_MODE_32BIT 3
- typedef struct _IMAGE_INFO {
- _ANONYMOUS_UNION union {
- ULONG Properties;
- _ANONYMOUS_STRUCT struct {
- ULONG ImageAddressingMode:8;
- ULONG SystemModeImage:1;
- ULONG ImageMappedToAllPids:1;
- ULONG ExtendedInfoPresent:1;
- ULONG Reserved:21;
- } DUMMYSTRUCTNAME;
- } DUMMYUNIONNAME;
- PVOID ImageBase;
- ULONG ImageSelector;
- SIZE_T ImageSize;
- ULONG ImageSectionNumber;
- } IMAGE_INFO, *PIMAGE_INFO;
- typedef struct _IMAGE_INFO_EX {
- SIZE_T Size;
- IMAGE_INFO ImageInfo;
- struct _FILE_OBJECT *FileObject;
- } IMAGE_INFO_EX, *PIMAGE_INFO_EX;
- typedef VOID
- (NTAPI *PLOAD_IMAGE_NOTIFY_ROUTINE)(
- IN PUNICODE_STRING FullImageName,
- IN HANDLE ProcessId,
- IN PIMAGE_INFO ImageInfo);
- #define THREAD_CSWITCH_PMU_DISABLE FALSE
- #define THREAD_CSWITCH_PMU_ENABLE TRUE
- #define PROCESS_LUID_DOSDEVICES_ONLY 0x00000001
- #define PROCESS_HANDLE_TRACING_MAX_STACKS 16
- typedef struct _NT_TIB {
- struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList;
- PVOID StackBase;
- PVOID StackLimit;
- PVOID SubSystemTib;
- _ANONYMOUS_UNION union {
- PVOID FiberData;
- ULONG Version;
- } DUMMYUNIONNAME;
- PVOID ArbitraryUserPointer;
- struct _NT_TIB *Self;
- } NT_TIB, *PNT_TIB;
- typedef struct _NT_TIB32 {
- ULONG ExceptionList;
- ULONG StackBase;
- ULONG StackLimit;
- ULONG SubSystemTib;
- _ANONYMOUS_UNION union {
- ULONG FiberData;
- ULONG Version;
- } DUMMYUNIONNAME;
- ULONG ArbitraryUserPointer;
- ULONG Self;
- } NT_TIB32,*PNT_TIB32;
- typedef struct _NT_TIB64 {
- ULONG64 ExceptionList;
- ULONG64 StackBase;
- ULONG64 StackLimit;
- ULONG64 SubSystemTib;
- _ANONYMOUS_UNION union {
- ULONG64 FiberData;
- ULONG Version;
- } DUMMYUNIONNAME;
- ULONG64 ArbitraryUserPointer;
- ULONG64 Self;
- } NT_TIB64,*PNT_TIB64;
- typedef enum _PROCESSINFOCLASS {
- ProcessBasicInformation,
- ProcessQuotaLimits,
- ProcessIoCounters,
- ProcessVmCounters,
- ProcessTimes,
- ProcessBasePriority,
- ProcessRaisePriority,
- ProcessDebugPort,
- ProcessExceptionPort,
- ProcessAccessToken,
- ProcessLdtInformation,
- ProcessLdtSize,
- ProcessDefaultHardErrorMode,
- ProcessIoPortHandlers,
- ProcessPooledUsageAndLimits,
- ProcessWorkingSetWatch,
- ProcessUserModeIOPL,
- ProcessEnableAlignmentFaultFixup,
- ProcessPriorityClass,
- ProcessWx86Information,
- ProcessHandleCount,
- ProcessAffinityMask,
- ProcessPriorityBoost,
- ProcessDeviceMap,
- ProcessSessionInformation,
- ProcessForegroundInformation,
- ProcessWow64Information,
- ProcessImageFileName,
- ProcessLUIDDeviceMapsEnabled,
- ProcessBreakOnTermination,
- ProcessDebugObjectHandle,
- ProcessDebugFlags,
- ProcessHandleTracing,
- ProcessIoPriority,
- ProcessExecuteFlags,
- ProcessTlsInformation,
- ProcessCookie,
- ProcessImageInformation,
- ProcessCycleTime,
- ProcessPagePriority,
- ProcessInstrumentationCallback,
- ProcessThreadStackAllocation,
- ProcessWorkingSetWatchEx,
- ProcessImageFileNameWin32,
- ProcessImageFileMapping,
- ProcessAffinityUpdateMode,
- ProcessMemoryAllocationMode,
- ProcessGroupInformation,
- ProcessTokenVirtualizationEnabled,
- ProcessConsoleHostProcess,
- ProcessWindowInformation,
- MaxProcessInfoClass
- } PROCESSINFOCLASS;
- typedef enum _THREADINFOCLASS {
- ThreadBasicInformation,
- ThreadTimes,
- ThreadPriority,
- ThreadBasePriority,
- ThreadAffinityMask,
- ThreadImpersonationToken,
- ThreadDescriptorTableEntry,
- ThreadEnableAlignmentFaultFixup,
- ThreadEventPair_Reusable,
- ThreadQuerySetWin32StartAddress,
- ThreadZeroTlsCell,
- ThreadPerformanceCount,
- ThreadAmILastThread,
- ThreadIdealProcessor,
- ThreadPriorityBoost,
- ThreadSetTlsArrayAddress,
- ThreadIsIoPending,
- ThreadHideFromDebugger,
- ThreadBreakOnTermination,
- ThreadSwitchLegacyState,
- ThreadIsTerminated,
- ThreadLastSystemCall,
- ThreadIoPriority,
- ThreadCycleTime,
- ThreadPagePriority,
- ThreadActualBasePriority,
- ThreadTebInformation,
- ThreadCSwitchMon,
- ThreadCSwitchPmu,
- ThreadWow64Context,
- ThreadGroupInformation,
- ThreadUmsInformation,
- ThreadCounterProfiling,
- ThreadIdealProcessorEx,
- MaxThreadInfoClass
- } THREADINFOCLASS;
- typedef struct _PAGE_PRIORITY_INFORMATION {
- ULONG PagePriority;
- } PAGE_PRIORITY_INFORMATION, *PPAGE_PRIORITY_INFORMATION;
- typedef struct _PROCESS_WS_WATCH_INFORMATION {
- PVOID FaultingPc;
- PVOID FaultingVa;
- } PROCESS_WS_WATCH_INFORMATION, *PPROCESS_WS_WATCH_INFORMATION;
- typedef struct _PROCESS_BASIC_INFORMATION {
- NTSTATUS ExitStatus;
- struct _PEB *PebBaseAddress;
- ULONG_PTR AffinityMask;
- KPRIORITY BasePriority;
- ULONG_PTR UniqueProcessId;
- ULONG_PTR InheritedFromUniqueProcessId;
- } PROCESS_BASIC_INFORMATION,*PPROCESS_BASIC_INFORMATION;
- typedef struct _PROCESS_EXTENDED_BASIC_INFORMATION {
- SIZE_T Size;
- PROCESS_BASIC_INFORMATION BasicInfo;
- _ANONYMOUS_UNION union {
- ULONG Flags;
- _ANONYMOUS_STRUCT struct {
- ULONG IsProtectedProcess:1;
- ULONG IsWow64Process:1;
- ULONG IsProcessDeleting:1;
- ULONG IsCrossSessionCreate:1;
- ULONG SpareBits:28;
- } DUMMYSTRUCTNAME;
- } DUMMYUNIONNAME;
- } PROCESS_EXTENDED_BASIC_INFORMATION, *PPROCESS_EXTENDED_BASIC_INFORMATION;
- typedef struct _PROCESS_DEVICEMAP_INFORMATION {
- _ANONYMOUS_UNION union {
- struct {
- HANDLE DirectoryHandle;
- } Set;
- struct {
- ULONG DriveMap;
- UCHAR DriveType[32];
- } Query;
- } DUMMYUNIONNAME;
- } PROCESS_DEVICEMAP_INFORMATION, *PPROCESS_DEVICEMAP_INFORMATION;
- typedef struct _PROCESS_DEVICEMAP_INFORMATION_EX {
- _ANONYMOUS_UNION union {
- struct {
- HANDLE DirectoryHandle;
- } Set;
- struct {
- ULONG DriveMap;
- UCHAR DriveType[32];
- } Query;
- } DUMMYUNIONNAME;
- ULONG Flags;
- } PROCESS_DEVICEMAP_INFORMATION_EX, *PPROCESS_DEVICEMAP_INFORMATION_EX;
- typedef struct _PROCESS_SESSION_INFORMATION {
- ULONG SessionId;
- } PROCESS_SESSION_INFORMATION, *PPROCESS_SESSION_INFORMATION;
- typedef struct _PROCESS_HANDLE_TRACING_ENABLE {
- ULONG Flags;
- } PROCESS_HANDLE_TRACING_ENABLE, *PPROCESS_HANDLE_TRACING_ENABLE;
- typedef struct _PROCESS_HANDLE_TRACING_ENABLE_EX {
- ULONG Flags;
- ULONG TotalSlots;
- } PROCESS_HANDLE_TRACING_ENABLE_EX, *PPROCESS_HANDLE_TRACING_ENABLE_EX;
- typedef struct _PROCESS_HANDLE_TRACING_ENTRY {
- HANDLE Handle;
- CLIENT_ID ClientId;
- ULONG Type;
- PVOID Stacks[PROCESS_HANDLE_TRACING_MAX_STACKS];
- } PROCESS_HANDLE_TRACING_ENTRY, *PPROCESS_HANDLE_TRACING_ENTRY;
- typedef struct _PROCESS_HANDLE_TRACING_QUERY {
- HANDLE Handle;
- ULONG TotalTraces;
- PROCESS_HANDLE_TRACING_ENTRY HandleTrace[1];
- } PROCESS_HANDLE_TRACING_QUERY, *PPROCESS_HANDLE_TRACING_QUERY;
- extern NTKERNELAPI PEPROCESS PsInitialSystemProcess;
- /******************************************************************************
- * Runtime Library Types *
- ******************************************************************************/
- #ifndef _RTL_RUN_ONCE_DEF
- #define _RTL_RUN_ONCE_DEF
- #define RTL_RUN_ONCE_INIT {0}
- #define RTL_RUN_ONCE_CHECK_ONLY 0x00000001UL
- #define RTL_RUN_ONCE_ASYNC 0x00000002UL
- #define RTL_RUN_ONCE_INIT_FAILED 0x00000004UL
- #define RTL_RUN_ONCE_CTX_RESERVED_BITS 2
- #define RTL_HASH_ALLOCATED_HEADER 0x00000001
- #define RTL_HASH_RESERVED_SIGNATURE 0
- /* RtlVerifyVersionInfo() ComparisonType */
- #define VER_EQUAL 1
- #define VER_GREATER 2
- #define VER_GREATER_EQUAL 3
- #define VER_LESS 4
- #define VER_LESS_EQUAL 5
- #define VER_AND 6
- #define VER_OR 7
- #define VER_CONDITION_MASK 7
- #define VER_NUM_BITS_PER_CONDITION_MASK 3
- /* RtlVerifyVersionInfo() TypeMask */
- #define VER_MINORVERSION 0x0000001
- #define VER_MAJORVERSION 0x0000002
- #define VER_BUILDNUMBER 0x0000004
- #define VER_PLATFORMID 0x0000008
- #define VER_SERVICEPACKMINOR 0x0000010
- #define VER_SERVICEPACKMAJOR 0x0000020
- #define VER_SUITENAME 0x0000040
- #define VER_PRODUCT_TYPE 0x0000080
- #define VER_NT_WORKSTATION 0x0000001
- #define VER_NT_DOMAIN_CONTROLLER 0x0000002
- #define VER_NT_SERVER 0x0000003
- #define VER_PLATFORM_WIN32s 0
- #define VER_PLATFORM_WIN32_WINDOWS 1
- #define VER_PLATFORM_WIN32_NT 2
- typedef union _RTL_RUN_ONCE {
- PVOID Ptr;
- } RTL_RUN_ONCE, *PRTL_RUN_ONCE;
- typedef ULONG /* LOGICAL */
- (NTAPI *PRTL_RUN_ONCE_INIT_FN) (
- IN OUT PRTL_RUN_ONCE RunOnce,
- IN OUT PVOID Parameter OPTIONAL,
- IN OUT PVOID *Context OPTIONAL);
- #endif /* _RTL_RUN_ONCE_DEF */
- typedef enum _TABLE_SEARCH_RESULT {
- TableEmptyTree,
- TableFoundNode,
- TableInsertAsLeft,
- TableInsertAsRight
- } TABLE_SEARCH_RESULT;
- typedef enum _RTL_GENERIC_COMPARE_RESULTS {
- GenericLessThan,
- GenericGreaterThan,
- GenericEqual
- } RTL_GENERIC_COMPARE_RESULTS;
- // Forwarder
- struct _RTL_AVL_TABLE;
- typedef RTL_GENERIC_COMPARE_RESULTS
- (NTAPI *PRTL_AVL_COMPARE_ROUTINE) (
- IN struct _RTL_AVL_TABLE *Table,
- IN PVOID FirstStruct,
- IN PVOID SecondStruct);
- typedef PVOID
- (NTAPI *PRTL_AVL_ALLOCATE_ROUTINE) (
- IN struct _RTL_AVL_TABLE *Table,
- IN CLONG ByteSize);
- typedef VOID
- (NTAPI *PRTL_AVL_FREE_ROUTINE) (
- IN struct _RTL_AVL_TABLE *Table,
- IN PVOID Buffer);
- typedef NTSTATUS
- (NTAPI *PRTL_AVL_MATCH_FUNCTION) (
- IN struct _RTL_AVL_TABLE *Table,
- IN PVOID UserData,
- IN PVOID MatchData);
- typedef struct _RTL_BALANCED_LINKS {
- struct _RTL_BALANCED_LINKS *Parent;
- struct _RTL_BALANCED_LINKS *LeftChild;
- struct _RTL_BALANCED_LINKS *RightChild;
- CHAR Balance;
- UCHAR Reserved[3];
- } RTL_BALANCED_LINKS, *PRTL_BALANCED_LINKS;
- typedef struct _RTL_AVL_TABLE {
- RTL_BALANCED_LINKS BalancedRoot;
- PVOID OrderedPointer;
- ULONG WhichOrderedElement;
- ULONG NumberGenericTableElements;
- ULONG DepthOfTree;
- PRTL_BALANCED_LINKS RestartKey;
- ULONG DeleteCount;
- PRTL_AVL_COMPARE_ROUTINE CompareRoutine;
- PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine;
- PRTL_AVL_FREE_ROUTINE FreeRoutine;
- PVOID TableContext;
- } RTL_AVL_TABLE, *PRTL_AVL_TABLE;
- #ifndef RTL_USE_AVL_TABLES
- struct _RTL_GENERIC_TABLE;
- typedef RTL_GENERIC_COMPARE_RESULTS
- (NTAPI *PRTL_GENERIC_COMPARE_ROUTINE) (
- IN struct _RTL_GENERIC_TABLE *Table,
- IN PVOID FirstStruct,
- IN PVOID SecondStruct);
- typedef PVOID
- (NTAPI *PRTL_GENERIC_ALLOCATE_ROUTINE) (
- IN struct _RTL_GENERIC_TABLE *Table,
- IN CLONG ByteSize);
- typedef VOID
- (NTAPI *PRTL_GENERIC_FREE_ROUTINE) (
- IN struct _RTL_GENERIC_TABLE *Table,
- IN PVOID Buffer);
- typedef struct _RTL_SPLAY_LINKS {
- struct _RTL_SPLAY_LINKS *Parent;
- struct _RTL_SPLAY_LINKS *LeftChild;
- struct _RTL_SPLAY_LINKS *RightChild;
- } RTL_SPLAY_LINKS, *PRTL_SPLAY_LINKS;
- typedef struct _RTL_GENERIC_TABLE {
- PRTL_SPLAY_LINKS TableRoot;
- LIST_ENTRY InsertOrderList;
- PLIST_ENTRY OrderedPointer;
- ULONG WhichOrderedElement;
- ULONG NumberGenericTableElements;
- PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine;
- PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine;
- PRTL_GENERIC_FREE_ROUTINE FreeRoutine;
- PVOID TableContext;
- } RTL_GENERIC_TABLE, *PRTL_GENERIC_TABLE;
- #endif /* !RTL_USE_AVL_TABLES */
- #ifdef RTL_USE_AVL_TABLES
- #undef PRTL_GENERIC_COMPARE_ROUTINE
- #undef RTL_GENERIC_COMPARE_ROUTINE
- #undef PRTL_GENERIC_ALLOCATE_ROUTINE
- #undef RTL_GENERIC_ALLOCATE_ROUTINE
- #undef PRTL_GENERIC_FREE_ROUTINE
- #undef RTL_GENERIC_FREE_ROUTINE
- #undef RTL_GENERIC_TABLE
- #undef PRTL_GENERIC_TABLE
- #define PRTL_GENERIC_COMPARE_ROUTINE PRTL_AVL_COMPARE_ROUTINE
- #define RTL_GENERIC_COMPARE_ROUTINE RTL_AVL_COMPARE_ROUTINE
- #define PRTL_GENERIC_ALLOCATE_ROUTINE PRTL_AVL_ALLOCATE_ROUTINE
- #define RTL_GENERIC_ALLOCATE_ROUTINE RTL_AVL_ALLOCATE_ROUTINE
- #define PRTL_GENERIC_FREE_ROUTINE PRTL_AVL_FREE_ROUTINE
- #define RTL_GENERIC_FREE_ROUTINE RTL_AVL_FREE_ROUTINE
- #define RTL_GENERIC_TABLE RTL_AVL_TABLE
- #define PRTL_GENERIC_TABLE PRTL_AVL_TABLE
- #endif /* RTL_USE_AVL_TABLES */
- typedef struct _RTL_DYNAMIC_HASH_TABLE_ENTRY {
- LIST_ENTRY Linkage;
- ULONG_PTR Signature;
- } RTL_DYNAMIC_HASH_TABLE_ENTRY, *PRTL_DYNAMIC_HASH_TABLE_ENTRY;
- typedef struct _RTL_DYNAMIC_HASH_TABLE_CONTEXT {
- PLIST_ENTRY ChainHead;
- PLIST_ENTRY PrevLinkage;
- ULONG_PTR Signature;
- } RTL_DYNAMIC_HASH_TABLE_CONTEXT, *PRTL_DYNAMIC_HASH_TABLE_CONTEXT;
- typedef struct _RTL_DYNAMIC_HASH_TABLE_ENUMERATOR {
- RTL_DYNAMIC_HASH_TABLE_ENTRY HashEntry;
- PLIST_ENTRY ChainHead;
- ULONG BucketIndex;
- } RTL_DYNAMIC_HASH_TABLE_ENUMERATOR, *PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR;
- typedef struct _RTL_DYNAMIC_HASH_TABLE {
- ULONG Flags;
- ULONG Shift;
- ULONG TableSize;
- ULONG Pivot;
- ULONG DivisorMask;
- ULONG NumEntries;
- ULONG NonEmptyBuckets;
- ULONG NumEnumerators;
- PVOID Directory;
- } RTL_DYNAMIC_HASH_TABLE, *PRTL_DYNAMIC_HASH_TABLE;
- typedef struct _OSVERSIONINFOA {
- ULONG dwOSVersionInfoSize;
- ULONG dwMajorVersion;
- ULONG dwMinorVersion;
- ULONG dwBuildNumber;
- ULONG dwPlatformId;
- CHAR szCSDVersion[128];
- } OSVERSIONINFOA, *POSVERSIONINFOA, *LPOSVERSIONINFOA;
- typedef struct _OSVERSIONINFOW {
- ULONG dwOSVersionInfoSize;
- ULONG dwMajorVersion;
- ULONG dwMinorVersion;
- ULONG dwBuildNumber;
- ULONG dwPlatformId;
- WCHAR szCSDVersion[128];
- } OSVERSIONINFOW, *POSVERSIONINFOW, *LPOSVERSIONINFOW, RTL_OSVERSIONINFOW, *PRTL_OSVERSIONINFOW;
- typedef struct _OSVERSIONINFOEXA {
- ULONG dwOSVersionInfoSize;
- ULONG dwMajorVersion;
- ULONG dwMinorVersion;
- ULONG dwBuildNumber;
- ULONG dwPlatformId;
- CHAR szCSDVersion[128];
- USHORT wServicePackMajor;
- USHORT wServicePackMinor;
- USHORT wSuiteMask;
- UCHAR wProductType;
- UCHAR wReserved;
- } OSVERSIONINFOEXA, *POSVERSIONINFOEXA, *LPOSVERSIONINFOEXA;
- typedef struct _OSVERSIONINFOEXW {
- ULONG dwOSVersionInfoSize;
- ULONG dwMajorVersion;
- ULONG dwMinorVersion;
- ULONG dwBuildNumber;
- ULONG dwPlatformId;
- WCHAR szCSDVersion[128];
- USHORT wServicePackMajor;
- USHORT wServicePackMinor;
- USHORT wSuiteMask;
- UCHAR wProductType;
- UCHAR wReserved;
- } OSVERSIONINFOEXW, *POSVERSIONINFOEXW, *LPOSVERSIONINFOEXW, RTL_OSVERSIONINFOEXW, *PRTL_OSVERSIONINFOEXW;
- #ifdef UNICODE
- typedef OSVERSIONINFOEXW OSVERSIONINFOEX;
- typedef POSVERSIONINFOEXW POSVERSIONINFOEX;
- typedef LPOSVERSIONINFOEXW LPOSVERSIONINFOEX;
- typedef OSVERSIONINFOW OSVERSIONINFO;
- typedef POSVERSIONINFOW POSVERSIONINFO;
- typedef LPOSVERSIONINFOW LPOSVERSIONINFO;
- #else
- typedef OSVERSIONINFOEXA OSVERSIONINFOEX;
- typedef POSVERSIONINFOEXA POSVERSIONINFOEX;
- typedef LPOSVERSIONINFOEXA LPOSVERSIONINFOEX;
- typedef OSVERSIONINFOA OSVERSIONINFO;
- typedef POSVERSIONINFOA POSVERSIONINFO;
- typedef LPOSVERSIONINFOA LPOSVERSIONINFO;
- #endif /* UNICODE */
- #define HASH_ENTRY_KEY(x) ((x)->Signature)
- /******************************************************************************
- * Security Manager Types *
- ******************************************************************************/
- #define SE_UNSOLICITED_INPUT_PRIVILEGE 6
- typedef enum _WELL_KNOWN_SID_TYPE {
- WinNullSid = 0,
- WinWorldSid = 1,
- WinLocalSid = 2,
- WinCreatorOwnerSid = 3,
- WinCreatorGroupSid = 4,
- WinCreatorOwnerServerSid = 5,
- WinCreatorGroupServerSid = 6,
- WinNtAuthoritySid = 7,
- WinDialupSid = 8,
- WinNetworkSid = 9,
- WinBatchSid = 10,
- WinInteractiveSid = 11,
- WinServiceSid = 12,
- WinAnonymousSid = 13,
- WinProxySid = 14,
- WinEnterpriseControllersSid = 15,
- WinSelfSid = 16,
- WinAuthenticatedUserSid = 17,
- WinRestrictedCodeSid = 18,
- WinTerminalServerSid = 19,
- WinRemoteLogonIdSid = 20,
- WinLogonIdsSid = 21,
- WinLocalSystemSid = 22,
- WinLocalServiceSid = 23,
- WinNetworkServiceSid = 24,
- WinBuiltinDomainSid = 25,
- WinBuiltinAdministratorsSid = 26,
- WinBuiltinUsersSid = 27,
- WinBuiltinGuestsSid = 28,
- WinBuiltinPowerUsersSid = 29,
- WinBuiltinAccountOperatorsSid = 30,
- WinBuiltinSystemOperatorsSid = 31,
- WinBuiltinPrintOperatorsSid = 32,
- WinBuiltinBackupOperatorsSid = 33,
- WinBuiltinReplicatorSid = 34,
- WinBuiltinPreWindows2000CompatibleAccessSid = 35,
- WinBuiltinRemoteDesktopUsersSid = 36,
- WinBuiltinNetworkConfigurationOperatorsSid = 37,
- WinAccountAdministratorSid = 38,
- WinAccountGuestSid = 39,
- WinAccountKrbtgtSid = 40,
- WinAccountDomainAdminsSid = 41,
- WinAccountDomainUsersSid = 42,
- WinAccountDomainGuestsSid = 43,
- WinAccountComputersSid = 44,
- WinAccountControllersSid = 45,
- WinAccountCertAdminsSid = 46,
- WinAccountSchemaAdminsSid = 47,
- WinAccountEnterpriseAdminsSid = 48,
- WinAccountPolicyAdminsSid = 49,
- WinAccountRasAndIasServersSid = 50,
- WinNTLMAuthenticationSid = 51,
- WinDigestAuthenticationSid = 52,
- WinSChannelAuthenticationSid = 53,
- WinThisOrganizationSid = 54,
- WinOtherOrganizationSid = 55,
- WinBuiltinIncomingForestTrustBuildersSid = 56,
- WinBuiltinPerfMonitoringUsersSid = 57,
- WinBuiltinPerfLoggingUsersSid = 58,
- WinBuiltinAuthorizationAccessSid = 59,
- WinBuiltinTerminalServerLicenseServersSid = 60,
- WinBuiltinDCOMUsersSid = 61,
- WinBuiltinIUsersSid = 62,
- WinIUserSid = 63,
- WinBuiltinCryptoOperatorsSid = 64,
- WinUntrustedLabelSid = 65,
- WinLowLabelSid = 66,
- WinMediumLabelSid = 67,
- WinHighLabelSid = 68,
- WinSystemLabelSid = 69,
- WinWriteRestrictedCodeSid = 70,
- WinCreatorOwnerRightsSid = 71,
- WinCacheablePrincipalsGroupSid = 72,
- WinNonCacheablePrincipalsGroupSid = 73,
- WinEnterpriseReadonlyControllersSid = 74,
- WinAccountReadonlyControllersSid = 75,
- WinBuiltinEventLogReadersGroup = 76,
- WinNewEnterpriseReadonlyControllersSid = 77,
- WinBuiltinCertSvcDComAccessGroup = 78,
- WinMediumPlusLabelSid = 79,
- WinLocalLogonSid = 80,
- WinConsoleLogonSid = 81,
- WinThisOrganizationCertificateSid = 82,
- } WELL_KNOWN_SID_TYPE;
- #if defined(_M_IX86)
- #define PAUSE_PROCESSOR YieldProcessor();
- #define KERNEL_STACK_SIZE 12288
- #define KERNEL_LARGE_STACK_SIZE 61440
- #define KERNEL_LARGE_STACK_COMMIT 12288
- #define SIZE_OF_80387_REGISTERS 80
- #if !defined(RC_INVOKED)
- #define CONTEXT_i386 0x10000
- #define CONTEXT_i486 0x10000
- #define CONTEXT_CONTROL (CONTEXT_i386|0x00000001L)
- #define CONTEXT_INTEGER (CONTEXT_i386|0x00000002L)
- #define CONTEXT_SEGMENTS (CONTEXT_i386|0x00000004L)
- #define CONTEXT_FLOATING_POINT (CONTEXT_i386|0x00000008L)
- #define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386|0x00000010L)
- #define CONTEXT_EXTENDED_REGISTERS (CONTEXT_i386|0x00000020L)
- #define CONTEXT_FULL (CONTEXT_CONTROL|CONTEXT_INTEGER|CONTEXT_SEGMENTS)
- #define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | \
- CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS | \
- CONTEXT_EXTENDED_REGISTERS)
- #define CONTEXT_XSTATE (CONTEXT_i386 | 0x00000040L)
- #endif /* !defined(RC_INVOKED) */
- typedef struct _FLOATING_SAVE_AREA {
- ULONG ControlWord;
- ULONG StatusWord;
- ULONG TagWord;
- ULONG ErrorOffset;
- ULONG ErrorSelector;
- ULONG DataOffset;
- ULONG DataSelector;
- UCHAR RegisterArea[SIZE_OF_80387_REGISTERS];
- ULONG Cr0NpxState;
- } FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA;
- #include "pshpack4.h"
- typedef struct _CONTEXT {
- ULONG ContextFlags;
- ULONG Dr0;
- ULONG Dr1;
- ULONG Dr2;
- ULONG Dr3;
- ULONG Dr6;
- ULONG Dr7;
- FLOATING_SAVE_AREA FloatSave;
- ULONG SegGs;
- ULONG SegFs;
- ULONG SegEs;
- ULONG SegDs;
- ULONG Edi;
- ULONG Esi;
- ULONG Ebx;
- ULONG Edx;
- ULONG Ecx;
- ULONG Eax;
- ULONG Ebp;
- ULONG Eip;
- ULONG SegCs;
- ULONG EFlags;
- ULONG Esp;
- ULONG SegSs;
- UCHAR ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION];
- } CONTEXT;
- #include "poppack.h"
- #define KeGetPcr() PCR
- #define PCR_MINOR_VERSION 1
- #define PCR_MAJOR_VERSION 1
- typedef struct _KPCR {
- union {
- NT_TIB NtTib;
- struct {
- struct _EXCEPTION_REGISTRATION_RECORD *Used_ExceptionList;
- PVOID Used_StackBase;
- PVOID Spare2;
- PVOID TssCopy;
- ULONG ContextSwitches;
- KAFFINITY SetMemberCopy;
- PVOID Used_Self;
- };
- };
- struct _KPCR *SelfPcr;
- struct _KPRCB *Prcb;
- KIRQL Irql;
- ULONG IRR;
- ULONG IrrActive;
- ULONG IDR;
- PVOID KdVersionBlock;
- struct _KIDTENTRY *IDT;
- struct _KGDTENTRY *GDT;
- struct _KTSS *TSS;
- USHORT MajorVersion;
- USHORT MinorVersion;
- KAFFINITY SetMember;
- ULONG StallScaleFactor;
- UCHAR SpareUnused;
- UCHAR Number;
- UCHAR Spare0;
- UCHAR SecondLevelCacheAssociativity;
- ULONG VdmAlert;
- ULONG KernelReserved[14];
- ULONG SecondLevelCacheSize;
- ULONG HalReserved[16];
- } KPCR, *PKPCR;
- FORCEINLINE
- ULONG
- KeGetCurrentProcessorNumber(VOID)
- {
- return (ULONG)__readfsbyte(FIELD_OFFSET(KPCR, Number));
- }
- extern NTKERNELAPI PVOID MmHighestUserAddress;
- extern NTKERNELAPI PVOID MmSystemRangeStart;
- extern NTKERNELAPI ULONG MmUserProbeAddress;
- #define MM_HIGHEST_USER_ADDRESS MmHighestUserAddress
- #define MM_SYSTEM_RANGE_START MmSystemRangeStart
- #if defined(_LOCAL_COPY_USER_PROBE_ADDRESS_)
- #define MM_USER_PROBE_ADDRESS _LOCAL_COPY_USER_PROBE_ADDRESS_
- extern ULONG _LOCAL_COPY_USER_PROBE_ADDRESS_;
- #else
- #define MM_USER_PROBE_ADDRESS MmUserProbeAddress
- #endif
- #define MM_LOWEST_USER_ADDRESS (PVOID)0x10000
- #define MM_KSEG0_BASE MM_SYSTEM_RANGE_START
- #define MM_SYSTEM_SPACE_END 0xFFFFFFFF
- #if !defined (_X86PAE_)
- #define MM_LOWEST_SYSTEM_ADDRESS (PVOID)0xC0800000
- #else
- #define MM_LOWEST_SYSTEM_ADDRESS (PVOID)0xC0C00000
- #endif
- #elif defined(_M_AMD64)
- #define PAUSE_PROCESSOR YieldProcessor();
- #define KERNEL_STACK_SIZE 0x6000
- #define KERNEL_LARGE_STACK_SIZE 0x12000
- #define KERNEL_LARGE_STACK_COMMIT KERNEL_STACK_SIZE
- #define KERNEL_MCA_EXCEPTION_STACK_SIZE 0x2000
- #define EXCEPTION_READ_FAULT 0
- #define EXCEPTION_WRITE_FAULT 1
- #define EXCEPTION_EXECUTE_FAULT 8
- #if !defined(RC_INVOKED)
- #define CONTEXT_AMD64 0x100000
- #define CONTEXT_CONTROL (CONTEXT_AMD64 | 0x1L)
- #define CONTEXT_INTEGER (CONTEXT_AMD64 | 0x2L)
- #define CONTEXT_SEGMENTS (CONTEXT_AMD64 | 0x4L)
- #define CONTEXT_FLOATING_POINT (CONTEXT_AMD64 | 0x8L)
- #define CONTEXT_DEBUG_REGISTERS (CONTEXT_AMD64 | 0x10L)
- #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT)
- #define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS)
- #define CONTEXT_XSTATE (CONTEXT_AMD64 | 0x20L)
- #define CONTEXT_EXCEPTION_ACTIVE 0x8000000
- #define CONTEXT_SERVICE_ACTIVE 0x10000000
- #define CONTEXT_EXCEPTION_REQUEST 0x40000000
- #define CONTEXT_EXCEPTION_REPORTING 0x80000000
- #endif /* !defined(RC_INVOKED) */
- #define INITIAL_MXCSR 0x1f80
- #define INITIAL_FPCSR 0x027f
- typedef struct DECLSPEC_ALIGN(16) _CONTEXT {
- ULONG64 P1Home;
- ULONG64 P2Home;
- ULONG64 P3Home;
- ULONG64 P4Home;
- ULONG64 P5Home;
- ULONG64 P6Home;
- ULONG ContextFlags;
- ULONG MxCsr;
- USHORT SegCs;
- USHORT SegDs;
- USHORT SegEs;
- USHORT SegFs;
- USHORT SegGs;
- USHORT SegSs;
- ULONG EFlags;
- ULONG64 Dr0;
- ULONG64 Dr1;
- ULONG64 Dr2;
- ULONG64 Dr3;
- ULONG64 Dr6;
- ULONG64 Dr7;
- ULONG64 Rax;
- ULONG64 Rcx;
- ULONG64 Rdx;
- ULONG64 Rbx;
- ULONG64 Rsp;
- ULONG64 Rbp;
- ULONG64 Rsi;
- ULONG64 Rdi;
- ULONG64 R8;
- ULONG64 R9;
- ULONG64 R10;
- ULONG64 R11;
- ULONG64 R12;
- ULONG64 R13;
- ULONG64 R14;
- ULONG64 R15;
- ULONG64 Rip;
- _ANONYMOUS_UNION union {
- XMM_SAVE_AREA32 FltSave;
- _ANONYMOUS_STRUCT struct {
- M128A Header[2];
- M128A Legacy[8];
- M128A Xmm0;
- M128A Xmm1;
- M128A Xmm2;
- M128A Xmm3;
- M128A Xmm4;
- M128A Xmm5;
- M128A Xmm6;
- M128A Xmm7;
- M128A Xmm8;
- M128A Xmm9;
- M128A Xmm10;
- M128A Xmm11;
- M128A Xmm12;
- M128A Xmm13;
- M128A Xmm14;
- M128A Xmm15;
- } DUMMYSTRUCTNAME;
- } DUMMYUNIONNAME;
- M128A VectorRegister[26];
- ULONG64 VectorControl;
- ULONG64 DebugControl;
- ULONG64 LastBranchToRip;
- ULONG64 LastBranchFromRip;
- ULONG64 LastExceptionToRip;
- ULONG64 LastExceptionFromRip;
- } CONTEXT;
- #define PCR_MINOR_VERSION 1
- #define PCR_MAJOR_VERSION 1
- typedef struct _KPCR {
- _ANONYMOUS_UNION union {
- NT_TIB NtTib;
- _ANONYMOUS_STRUCT struct {
- union _KGDTENTRY64 *GdtBase;
- struct _KTSS64 *TssBase;
- ULONG64 UserRsp;
- struct _KPCR *Self;
- struct _KPRCB *CurrentPrcb;
- PKSPIN_LOCK_QUEUE LockArray;
- PVOID Used_Self;
- };
- };
- union _KIDTENTRY64 *IdtBase;
- ULONG64 Unused[2];
- KIRQL Irql;
- UCHAR SecondLevelCacheAssociativity;
- UCHAR ObsoleteNumber;
- UCHAR Fill0;
- ULONG Unused0[3];
- USHORT MajorVersion;
- USHORT MinorVersion;
- ULONG StallScaleFactor;
- PVOID Unused1[3];
- ULONG KernelReserved[15];
- ULONG SecondLevelCacheSize;
- ULONG HalReserved[16];
- ULONG Unused2;
- PVOID KdVersionBlock;
- PVOID Unused3;
- ULONG PcrAlign1[24];
- } KPCR, *PKPCR;
- FORCEINLINE
- PKPCR
- KeGetPcr(VOID)
- {
- return (PKPCR)__readgsqword(FIELD_OFFSET(KPCR, Self));
- }
- FORCEINLINE
- ULONG
- KeGetCurrentProcessorNumber(VOID)
- {
- return (ULONG)__readgsword(0x184);
- }
- #define PTI_SHIFT 12L
- #define PDI_SHIFT 21L
- #define PPI_SHIFT 30L
- #define PXI_SHIFT 39L
- #define PTE_PER_PAGE 512
- #define PDE_PER_PAGE 512
- #define PPE_PER_PAGE 512
- #define PXE_PER_PAGE 512
- #define PTI_MASK_AMD64 (PTE_PER_PAGE - 1)
- #define PDI_MASK_AMD64 (PDE_PER_PAGE - 1)
- #define PPI_MASK (PPE_PER_PAGE - 1)
- #define PXI_MASK (PXE_PER_PAGE - 1)
- #define PXE_BASE 0xFFFFF6FB7DBED000ULL
- #define PXE_SELFMAP 0xFFFFF6FB7DBEDF68ULL
- #define PPE_BASE 0xFFFFF6FB7DA00000ULL
- #define PDE_BASE 0xFFFFF6FB40000000ULL
- #define PTE_BASE 0xFFFFF68000000000ULL
- #define PXE_TOP 0xFFFFF6FB7DBEDFFFULL
- #define PPE_TOP 0xFFFFF6FB7DBFFFFFULL
- #define PDE_TOP 0xFFFFF6FB7FFFFFFFULL
- #define PTE_TOP 0xFFFFF6FFFFFFFFFFULL
- extern NTKERNELAPI PVOID MmHighestUserAddress;
- extern NTKERNELAPI PVOID MmSystemRangeStart;
- extern NTKERNELAPI ULONG64 MmUserProbeAddress;
- #define MM_HIGHEST_USER_ADDRESS MmHighestUserAddress
- #define MM_SYSTEM_RANGE_START MmSystemRangeStart
- #define MM_USER_PROBE_ADDRESS MmUserProbeAddress
- #define MM_LOWEST_USER_ADDRESS (PVOID)0x10000
- #define MM_LOWEST_SYSTEM_ADDRESS (PVOID)0xFFFF080000000000ULL
- #elif defined(_M_IA64)
- #elif defined(_M_PPC)
- #elif defined(_M_MIPS)
- #elif defined(_M_ARM)
- #else
- #error Unknown Architecture
- #endif
- /******************************************************************************
- * Executive Functions *
- ******************************************************************************/
- static __inline PVOID
- ExAllocateFromZone(
- IN PZONE_HEADER Zone)
- {
- PVOID Result = (PVOID)Zone->FreeList.Next;
- if (Zone->FreeList.Next)
- Zone->FreeList.Next = Zone->FreeList.Next->Next;
- return Result;
- }
- static __inline PVOID
- ExFreeToZone(
- IN PZONE_HEADER Zone,
- IN PVOID Block)
- {
- ((PSINGLE_LIST_ENTRY) Block)->Next = Zone->FreeList.Next;
- Zone->FreeList.Next = ((PSINGLE_LIST_ENTRY) Block);
- return ((PSINGLE_LIST_ENTRY) Block)->Next;
- }
- /*
- * PVOID
- * ExInterlockedAllocateFromZone(
- * IN PZONE_HEADER Zone,
- * IN PKSPIN_LOCK Lock)
- */
- #define ExInterlockedAllocateFromZone(Zone, Lock) \
- ((PVOID) ExInterlockedPopEntryList(&Zone->FreeList, Lock))
- /* PVOID
- * ExInterlockedFreeToZone(
- * IN PZONE_HEADER Zone,
- * IN PVOID Block,
- * IN PKSPIN_LOCK Lock);
- */
- #define ExInterlockedFreeToZone(Zone, Block, Lock) \
- ExInterlockedPushEntryList(&(Zone)->FreeList, (PSINGLE_LIST_ENTRY)(Block), Lock)
- /*
- * BOOLEAN
- * ExIsFullZone(
- * IN PZONE_HEADER Zone)
- */
- #define ExIsFullZone(Zone) \
- ((Zone)->FreeList.Next == (PSINGLE_LIST_ENTRY) NULL)
- /* BOOLEAN
- * ExIsObjectInFirstZoneSegment(
- * IN PZONE_HEADER Zone,
- * IN PVOID Object);
- */
- #define ExIsObjectInFirstZoneSegment(Zone,Object) \
- ((BOOLEAN)( ((PUCHAR)(Object) >= (PUCHAR)(Zone)->SegmentList.Next) && \
- ((PUCHAR)(Object) < (PUCHAR)(Zone)->SegmentList.Next + \
- (Zone)->TotalSegmentSize)) )
- #define ExAcquireResourceExclusive ExAcquireResourceExclusiveLite
- #define ExAcquireResourceShared ExAcquireResourceSharedLite
- #define ExConvertExclusiveToShared ExConvertExclusiveToSharedLite
- #define ExDeleteResource ExDeleteResourceLite
- #define ExInitializeResource ExInitializeResourceLite
- #define ExIsResourceAcquiredExclusive ExIsResourceAcquiredExclusiveLite
- #define ExIsResourceAcquiredShared ExIsResourceAcquiredSharedLite
- #define ExIsResourceAcquired ExIsResourceAcquiredSharedLite
- #define ExReleaseResourceForThread ExReleaseResourceForThreadLite
- #ifndef _M_IX86
- #define RESULT_ZERO 0
- #define RESULT_NEGATIVE 1
- #define RESULT_POSITIVE 2
- #endif
- typedef enum _INTERLOCKED_RESULT {
- ResultNegative = RESULT_NEGATIVE,
- ResultZero = RESULT_ZERO,
- ResultPositive = RESULT_POSITIVE
- } INTERLOCKED_RESULT;
- #ifdef _X86_
- NTKERNELAPI
- INTERLOCKED_RESULT
- FASTCALL
- Exfi386InterlockedIncrementLong(
- IN OUT LONG volatile *Addend);
- NTKERNELAPI
- INTERLOCKED_RESULT
- FASTCALL
- Exfi386InterlockedDecrementLong(
- IN PLONG Addend);
- NTKERNELAPI
- ULONG
- FASTCALL
- Exfi386InterlockedExchangeUlong(
- IN PULONG Target,
- IN ULONG Value);
- #endif
- #if (NTDDI_VERSION >= NTDDI_WIN2K)
- NTKERNELAPI
- NTSTATUS
- NTAPI
- ExExtendZone(
- IN OUT PZONE_HEADER Zone,
- IN OUT PVOID Segment,
- IN ULONG SegmentSize);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- ExInitializeZone(
- OUT PZONE_HEADER Zone,
- IN ULONG BlockSize,
- IN OUT PVOID InitialSegment,
- IN ULONG InitialSegmentSize);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- ExInterlockedExtendZone(
- IN OUT PZONE_HEADER Zone,
- IN OUT PVOID Segment,
- IN ULONG SegmentSize,
- IN OUT PKSPIN_LOCK Lock);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- ExUuidCreate(
- OUT UUID *Uuid);
- NTKERNELAPI
- DECLSPEC_NORETURN
- VOID
- NTAPI
- ExRaiseAccessViolation(VOID);
- NTKERNELAPI
- DECLSPEC_NORETURN
- VOID
- NTAPI
- ExRaiseDatatypeMisalignment(VOID);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
- /* Hardware Abstraction Layer Functions */
- #if (NTDDI_VERSION >= NTDDI_WIN2K)
- #if defined(USE_DMA_MACROS) && !defined(_NTHAL_) && (defined(_NTDDK_) || defined(_NTDRIVER_)) || defined(_WDM_INCLUDED_)
- /* Nothing here */
- #else /* USE_DMA_MACROS ... */
- //DECLSPEC_DEPRECATED_DDK
- NTHALAPI
- VOID
- NTAPI
- IoFreeAdapterChannel(
- IN PADAPTER_OBJECT AdapterObject);
- //DECLSPEC_DEPRECATED_DDK
- NTHALAPI
- BOOLEAN
- NTAPI
- IoFlushAdapterBuffers(
- IN PADAPTER_OBJECT AdapterObject,
- IN PMDL Mdl,
- IN PVOID MapRegisterBase,
- IN PVOID CurrentVa,
- IN ULONG Length,
- IN BOOLEAN WriteToDevice);
- //DECLSPEC_DEPRECATED_DDK
- NTHALAPI
- VOID
- NTAPI
- IoFreeMapRegisters(
- IN PADAPTER_OBJECT AdapterObject,
- IN PVOID MapRegisterBase,
- IN ULONG NumberOfMapRegisters);
- //DECLSPEC_DEPRECATED_DDK
- NTHALAPI
- PVOID
- NTAPI
- HalAllocateCommonBuffer(
- IN PADAPTER_OBJECT AdapterObject,
- IN ULONG Length,
- OUT PPHYSICAL_ADDRESS LogicalAddress,
- IN BOOLEAN CacheEnabled);
- //DECLSPEC_DEPRECATED_DDK
- NTHALAPI
- VOID
- NTAPI
- HalFreeCommonBuffer(
- IN PADAPTER_OBJECT AdapterObject,
- IN ULONG Length,
- IN PHYSICAL_ADDRESS LogicalAddress,
- IN PVOID VirtualAddress,
- IN BOOLEAN CacheEnabled);
- //DECLSPEC_DEPRECATED_DDK
- NTHALAPI
- ULONG
- NTAPI
- HalReadDmaCounter(
- IN PADAPTER_OBJECT AdapterObject);
- NTHALAPI
- NTSTATUS
- NTAPI
- HalAllocateAdapterChannel(
- IN PADAPTER_OBJECT AdapterObject,
- IN PWAIT_CONTEXT_BLOCK Wcb,
- IN ULONG NumberOfMapRegisters,
- IN PDRIVER_CONTROL ExecutionRoutine);
- #endif /* USE_DMA_MACROS ... */
- #if !defined(NO_LEGACY_DRIVERS)
- NTHALAPI
- NTSTATUS
- NTAPI
- HalAssignSlotResources(
- IN PUNICODE_STRING RegistryPath,
- IN PUNICODE_STRING DriverClassName,
- IN PDRIVER_OBJECT DriverObject,
- IN PDEVICE_OBJECT DeviceObject,
- IN INTERFACE_TYPE BusType,
- IN ULONG BusNumber,
- IN ULONG SlotNumber,
- IN OUT PCM_RESOURCE_LIST *AllocatedResources);
- NTHALAPI
- ULONG
- NTAPI
- HalGetInterruptVector(
- IN INTERFACE_TYPE InterfaceType,
- IN ULONG BusNumber,
- IN ULONG BusInterruptLevel,
- IN ULONG BusInterruptVector,
- OUT PKIRQL Irql,
- OUT PKAFFINITY Affinity);
- NTHALAPI
- ULONG
- NTAPI
- HalSetBusData(
- IN BUS_DATA_TYPE BusDataType,
- IN ULONG BusNumber,
- IN ULONG SlotNumber,
- IN PVOID Buffer,
- IN ULONG Length);
- NTHALAPI
- ULONG
- NTAPI
- HalGetBusData(
- IN BUS_DATA_TYPE BusDataType,
- IN ULONG BusNumber,
- IN ULONG SlotNumber,
- OUT PVOID Buffer,
- IN ULONG Length);
- NTHALAPI
- BOOLEAN
- NTAPI
- HalMakeBeep(
- IN ULONG Frequency);
- #endif /* !defined(NO_LEGACY_DRIVERS) */
- NTHALAPI
- PADAPTER_OBJECT
- NTAPI
- HalGetAdapter(
- IN PDEVICE_DESCRIPTION DeviceDescription,
- OUT PULONG NumberOfMapRegisters);
- VOID
- NTAPI
- HalPutDmaAdapter(
- IN PADAPTER_OBJECT DmaAdapter);
- NTHALAPI
- VOID
- NTAPI
- HalAcquireDisplayOwnership(
- IN PHAL_RESET_DISPLAY_PARAMETERS ResetDisplayParameters);
- NTHALAPI
- ULONG
- NTAPI
- HalGetBusDataByOffset(
- IN BUS_DATA_TYPE BusDataType,
- IN ULONG BusNumber,
- IN ULONG SlotNumber,
- OUT PVOID Buffer,
- IN ULONG Offset,
- IN ULONG Length);
- NTHALAPI
- ULONG
- NTAPI
- HalSetBusDataByOffset(
- IN BUS_DATA_TYPE BusDataType,
- IN ULONG BusNumber,
- IN ULONG SlotNumber,
- IN PVOID Buffer,
- IN ULONG Offset,
- IN ULONG Length);
- NTHALAPI
- BOOLEAN
- NTAPI
- HalTranslateBusAddress(
- IN INTERFACE_TYPE InterfaceType,
- IN ULONG BusNumber,
- IN PHYSICAL_ADDRESS BusAddress,
- IN OUT PULONG AddressSpace,
- OUT PPHYSICAL_ADDRESS TranslatedAddress);
- NTHALAPI
- PVOID
- NTAPI
- HalAllocateCrashDumpRegisters(
- IN PADAPTER_OBJECT AdapterObject,
- IN OUT PULONG NumberOfMapRegisters);
- NTSTATUS
- NTAPI
- HalGetScatterGatherList(
- IN PADAPTER_OBJECT DmaAdapter,
- IN PDEVICE_OBJECT DeviceObject,
- IN PMDL Mdl,
- IN PVOID CurrentVa,
- IN ULONG Length,
- IN PDRIVER_LIST_CONTROL ExecutionRoutine,
- IN PVOID Context,
- IN BOOLEAN WriteToDevice);
- VOID
- NTAPI
- HalPutScatterGatherList(
- IN PADAPTER_OBJECT DmaAdapter,
- IN PSCATTER_GATHER_LIST ScatterGather,
- IN BOOLEAN WriteToDevice);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
- #if (NTDDI_VERSION >= NTDDI_WINXP)
- NTKERNELAPI
- VOID
- FASTCALL
- HalExamineMBR(
- IN PDEVICE_OBJECT DeviceObject,
- IN ULONG SectorSize,
- IN ULONG MBRTypeIdentifier,
- OUT PVOID *Buffer);
- #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
- #if (NTDDI_VERSION >= NTDDI_WIN7)
- NTSTATUS
- NTAPI
- HalAllocateHardwareCounters(
- IN PGROUP_AFFINITY GroupAffinty,
- IN ULONG GroupCount,
- IN PPHYSICAL_COUNTER_RESOURCE_LIST ResourceList,
- OUT PHANDLE CounterSetHandle);
- NTSTATUS
- NTAPI
- HalFreeHardwareCounters(
- IN HANDLE CounterSetHandle);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
- #if defined(_IA64_)
- #if (NTDDI_VERSION >= NTDDI_WIN2K)
- NTHALAPI
- ULONG
- NTAPI
- HalGetDmaAlignmentRequirement(VOID);
- #endif
- #endif /* defined(_IA64_) */
- #if defined(_M_IX86) || defined(_M_AMD64)
- #define HalGetDmaAlignmentRequirement() 1L
- #endif
- #if (NTDDI_VERSION >= NTDDI_WIN7)
- typedef struct _WHEA_ERROR_SOURCE_DESCRIPTOR *PWHEA_ERROR_SOURCE_DESCRIPTOR;
- typedef struct _WHEA_ERROR_RECORD *PWHEA_ERROR_RECORD;
- NTHALAPI
- VOID
- NTAPI
- HalBugCheckSystem(
- IN PWHEA_ERROR_SOURCE_DESCRIPTOR ErrorSource,
- IN PWHEA_ERROR_RECORD ErrorRecord);
- #else
- typedef struct _WHEA_ERROR_RECORD *PWHEA_ERROR_RECORD;
- NTHALAPI
- VOID
- NTAPI
- HalBugCheckSystem(
- IN PWHEA_ERROR_RECORD ErrorRecord);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
- /******************************************************************************
- * I/O Manager Functions *
- ******************************************************************************/
- /*
- * VOID IoAssignArcName(
- * IN PUNICODE_STRING ArcName,
- * IN PUNICODE_STRING DeviceName);
- */
- #define IoAssignArcName(_ArcName, _DeviceName) ( \
- IoCreateSymbolicLink((_ArcName), (_DeviceName)))
- /*
- * VOID
- * IoDeassignArcName(
- * IN PUNICODE_STRING ArcName)
- */
- #define IoDeassignArcName IoDeleteSymbolicLink
- FORCEINLINE
- VOID
- NTAPI
- IoInitializeDriverCreateContext(
- PIO_DRIVER_CREATE_CONTEXT DriverContext)
- {
- RtlZeroMemory(DriverContext, sizeof(IO_DRIVER_CREATE_CONTEXT));
- DriverContext->Size = sizeof(IO_DRIVER_CREATE_CONTEXT);
- }
- #if (NTDDI_VERSION >= NTDDI_WIN2K)
- #if !(defined(USE_DMA_MACROS) && (defined(_NTDDK_) || defined(_NTDRIVER_)) || defined(_WDM_INCLUDED_))
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoAllocateAdapterChannel(
- IN PADAPTER_OBJECT AdapterObject,
- IN PDEVICE_OBJECT DeviceObject,
- IN ULONG NumberOfMapRegisters,
- IN PDRIVER_CONTROL ExecutionRoutine,
- IN PVOID Context);
- #endif
- #if !defined(DMA_MACROS_DEFINED)
- //DECLSPEC_DEPRECATED_DDK
- NTHALAPI
- PHYSICAL_ADDRESS
- NTAPI
- IoMapTransfer(
- IN PADAPTER_OBJECT AdapterObject,
- IN PMDL Mdl,
- IN PVOID MapRegisterBase,
- IN PVOID CurrentVa,
- IN OUT PULONG Length,
- IN BOOLEAN WriteToDevice);
- #endif
- NTKERNELAPI
- VOID
- NTAPI
- IoAllocateController(
- IN PCONTROLLER_OBJECT ControllerObject,
- IN PDEVICE_OBJECT DeviceObject,
- IN PDRIVER_CONTROL ExecutionRoutine,
- IN PVOID Context OPTIONAL);
- NTKERNELAPI
- PCONTROLLER_OBJECT
- NTAPI
- IoCreateController(
- IN ULONG Size);
- NTKERNELAPI
- VOID
- NTAPI
- IoDeleteController(
- IN PCONTROLLER_OBJECT ControllerObject);
- NTKERNELAPI
- VOID
- NTAPI
- IoFreeController(
- IN PCONTROLLER_OBJECT ControllerObject);
- NTKERNELAPI
- PCONFIGURATION_INFORMATION
- NTAPI
- IoGetConfigurationInformation(VOID);
- NTKERNELAPI
- PDEVICE_OBJECT
- NTAPI
- IoGetDeviceToVerify(
- IN PETHREAD Thread);
- NTKERNELAPI
- VOID
- NTAPI
- IoCancelFileOpen(
- IN PDEVICE_OBJECT DeviceObject,
- IN PFILE_OBJECT FileObject);
- NTKERNELAPI
- PGENERIC_MAPPING
- NTAPI
- IoGetFileObjectGenericMapping(VOID);
- NTKERNELAPI
- PIRP
- NTAPI
- IoMakeAssociatedIrp(
- IN PIRP Irp,
- IN CCHAR StackSize);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoQueryDeviceDescription(
- IN PINTERFACE_TYPE BusType OPTIONAL,
- IN PULONG BusNumber OPTIONAL,
- IN PCONFIGURATION_TYPE ControllerType OPTIONAL,
- IN PULONG ControllerNumber OPTIONAL,
- IN PCONFIGURATION_TYPE PeripheralType OPTIONAL,
- IN PULONG PeripheralNumber OPTIONAL,
- IN PIO_QUERY_DEVICE_ROUTINE CalloutRoutine,
- IN OUT PVOID Context OPTIONAL);
- NTKERNELAPI
- VOID
- NTAPI
- IoRaiseHardError(
- IN PIRP Irp,
- IN PVPB Vpb OPTIONAL,
- IN PDEVICE_OBJECT RealDeviceObject);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- IoRaiseInformationalHardError(
- IN NTSTATUS ErrorStatus,
- IN PUNICODE_STRING String OPTIONAL,
- IN PKTHREAD Thread OPTIONAL);
- NTKERNELAPI
- VOID
- NTAPI
- IoRegisterBootDriverReinitialization(
- IN PDRIVER_OBJECT DriverObject,
- IN PDRIVER_REINITIALIZE DriverReinitializationRoutine,
- IN PVOID Context OPTIONAL);
- NTKERNELAPI
- VOID
- NTAPI
- IoRegisterDriverReinitialization(
- IN PDRIVER_OBJECT DriverObject,
- IN PDRIVER_REINITIALIZE DriverReinitializationRoutine,
- IN PVOID Context OPTIONAL);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoAttachDeviceByPointer(
- IN PDEVICE_OBJECT SourceDevice,
- IN PDEVICE_OBJECT TargetDevice);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoReportDetectedDevice(
- IN PDRIVER_OBJECT DriverObject,
- IN INTERFACE_TYPE LegacyBusType,
- IN ULONG BusNumber,
- IN ULONG SlotNumber,
- IN PCM_RESOURCE_LIST ResourceList OPTIONAL,
- IN PIO_RESOURCE_REQUIREMENTS_LIST ResourceRequirements OPTIONAL,
- IN BOOLEAN ResourceAssigned,
- IN OUT PDEVICE_OBJECT *DeviceObject OPTIONAL);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoReportResourceForDetection(
- IN PDRIVER_OBJECT DriverObject,
- IN PCM_RESOURCE_LIST DriverList OPTIONAL,
- IN ULONG DriverListSize OPTIONAL,
- IN PDEVICE_OBJECT DeviceObject OPTIONAL,
- IN PCM_RESOURCE_LIST DeviceList OPTIONAL,
- IN ULONG DeviceListSize OPTIONAL,
- OUT PBOOLEAN ConflictDetected);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoReportResourceUsage(
- IN PUNICODE_STRING DriverClassName OPTIONAL,
- IN PDRIVER_OBJECT DriverObject,
- IN PCM_RESOURCE_LIST DriverList OPTIONAL,
- IN ULONG DriverListSize OPTIONAL,
- IN PDEVICE_OBJECT DeviceObject,
- IN PCM_RESOURCE_LIST DeviceList OPTIONAL,
- IN ULONG DeviceListSize OPTIONAL,
- IN BOOLEAN OverrideConflict,
- OUT PBOOLEAN ConflictDetected);
- NTKERNELAPI
- VOID
- NTAPI
- IoSetHardErrorOrVerifyDevice(
- IN PIRP Irp,
- IN PDEVICE_OBJECT DeviceObject);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoAssignResources(
- IN PUNICODE_STRING RegistryPath,
- IN PUNICODE_STRING DriverClassName OPTIONAL,
- IN PDRIVER_OBJECT DriverObject,
- IN PDEVICE_OBJECT DeviceObject OPTIONAL,
- IN PIO_RESOURCE_REQUIREMENTS_LIST RequestedResources OPTIONAL,
- IN OUT PCM_RESOURCE_LIST *AllocatedResources);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- IoSetThreadHardErrorMode(
- IN BOOLEAN EnableHardErrors);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
- #if (NTDDI_VERSION >= NTDDI_WIN2KSP3)
- NTKERNELAPI
- BOOLEAN
- NTAPI
- IoIsFileOriginRemote(
- IN PFILE_OBJECT FileObject);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoSetFileOrigin(
- IN PFILE_OBJECT FileObject,
- IN BOOLEAN Remote);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN2KSP3) */
- #if (NTDDI_VERSION >= NTDDI_WINXP)
- NTKERNELAPI
- NTSTATUS
- FASTCALL
- IoReadPartitionTable(
- IN PDEVICE_OBJECT DeviceObject,
- IN ULONG SectorSize,
- IN BOOLEAN ReturnRecognizedPartitions,
- OUT struct _DRIVE_LAYOUT_INFORMATION **PartitionBuffer);
- NTKERNELAPI
- NTSTATUS
- FASTCALL
- IoSetPartitionInformation(
- IN PDEVICE_OBJECT DeviceObject,
- IN ULONG SectorSize,
- IN ULONG PartitionNumber,
- IN ULONG PartitionType);
- NTKERNELAPI
- NTSTATUS
- FASTCALL
- IoWritePartitionTable(
- IN PDEVICE_OBJECT DeviceObject,
- IN ULONG SectorSize,
- IN ULONG SectorsPerTrack,
- IN ULONG NumberOfHeads,
- IN struct _DRIVE_LAYOUT_INFORMATION *PartitionBuffer);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoCreateDisk(
- IN PDEVICE_OBJECT DeviceObject,
- IN struct _CREATE_DISK* Disk OPTIONAL);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoReadDiskSignature(
- IN PDEVICE_OBJECT DeviceObject,
- IN ULONG BytesPerSector,
- OUT PDISK_SIGNATURE Signature);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoReadPartitionTableEx(
- IN PDEVICE_OBJECT DeviceObject,
- OUT struct _DRIVE_LAYOUT_INFORMATION_EX **PartitionBuffer);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoSetPartitionInformationEx(
- IN PDEVICE_OBJECT DeviceObject,
- IN ULONG PartitionNumber,
- IN struct _SET_PARTITION_INFORMATION_EX *PartitionInfo);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoSetSystemPartition(
- IN PUNICODE_STRING VolumeNameString);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoVerifyPartitionTable(
- IN PDEVICE_OBJECT DeviceObject,
- IN BOOLEAN FixErrors);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoVolumeDeviceToDosName(
- IN PVOID VolumeDeviceObject,
- OUT PUNICODE_STRING DosName);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoWritePartitionTableEx(
- IN PDEVICE_OBJECT DeviceObject,
- IN struct _DRIVE_LAYOUT_INFORMATION_EX *DriveLayout);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoCreateFileSpecifyDeviceObjectHint(
- 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 Disposition,
- IN ULONG CreateOptions,
- IN PVOID EaBuffer OPTIONAL,
- IN ULONG EaLength,
- IN CREATE_FILE_TYPE CreateFileType,
- IN PVOID InternalParameters OPTIONAL,
- IN ULONG Options,
- IN PVOID DeviceObject OPTIONAL);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoAttachDeviceToDeviceStackSafe(
- IN PDEVICE_OBJECT SourceDevice,
- IN PDEVICE_OBJECT TargetDevice,
- OUT PDEVICE_OBJECT *AttachedToDeviceObject);
- #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
- #if (NTDDI_VERSION >= NTDDI_WS03)
- NTKERNELAPI
- IO_PAGING_PRIORITY
- FASTCALL
- IoGetPagingIoPriority(
- IN PIRP Irp);
- #endif /* (NTDDI_VERSION >= NTDDI_WS03) */
- #if (NTDDI_VERSION >= NTDDI_WS03SP1)
- BOOLEAN
- NTAPI
- IoTranslateBusAddress(
- IN INTERFACE_TYPE InterfaceType,
- IN ULONG BusNumber,
- IN PHYSICAL_ADDRESS BusAddress,
- IN OUT PULONG AddressSpace,
- OUT PPHYSICAL_ADDRESS TranslatedAddress);
- #endif /* (NTDDI_VERSION >= NTDDI_WS03SP1) */
- #if (NTDDI_VERSION >= NTDDI_VISTA)
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoUpdateDiskGeometry(
- IN PDEVICE_OBJECT DeviceObject,
- IN struct _DISK_GEOMETRY_EX* OldDiskGeometry,
- IN struct _DISK_GEOMETRY_EX* NewDiskGeometry);
- PTXN_PARAMETER_BLOCK
- NTAPI
- IoGetTransactionParameterBlock(
- IN PFILE_OBJECT FileObject);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- IoCreateFileEx(
- 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 Disposition,
- IN ULONG CreateOptions,
- IN PVOID EaBuffer OPTIONAL,
- IN ULONG EaLength,
- IN CREATE_FILE_TYPE CreateFileType,
- IN PVOID InternalParameters OPTIONAL,
- IN ULONG Options,
- IN PIO_DRIVER_CREATE_CONTEXT DriverContext OPTIONAL);
- NTSTATUS
- NTAPI
- IoSetIrpExtraCreateParameter(
- IN OUT PIRP Irp,
- IN struct _ECP_LIST *ExtraCreateParameter);
- VOID
- NTAPI
- IoClearIrpExtraCreateParameter(
- IN OUT PIRP Irp);
- NTSTATUS
- NTAPI
- IoGetIrpExtraCreateParameter(
- IN PIRP Irp,
- OUT struct _ECP_LIST **ExtraCreateParameter OPTIONAL);
- BOOLEAN
- NTAPI
- IoIsFileObjectIgnoringSharing(
- IN PFILE_OBJECT FileObject);
- #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
- #if (NTDDI_VERSION >= NTDDI_WIN7)
- NTSTATUS
- NTAPI
- IoSetFileObjectIgnoreSharing(
- IN PFILE_OBJECT FileObject);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
- /******************************************************************************
- * Kernel Debugger Functions *
- ******************************************************************************/
- NTSYSAPI
- ULONG
- NTAPI
- DbgPrompt(
- IN PCCH Prompt,
- OUT PCH Response,
- IN ULONG MaximumResponseLength);
- /******************************************************************************
- * Kernel Functions *
- ******************************************************************************/
- NTKERNELAPI
- VOID
- FASTCALL
- KeInvalidateRangeAllCaches(
- IN PVOID BaseAddress,
- IN ULONG Length);
- #if (NTDDI_VERSION >= NTDDI_WIN2K)
- NTKERNELAPI
- VOID
- NTAPI
- KeSetImportanceDpc(
- IN OUT PRKDPC Dpc,
- IN KDPC_IMPORTANCE Importance);
- NTKERNELAPI
- LONG
- NTAPI
- KePulseEvent(
- IN OUT PRKEVENT Event,
- IN KPRIORITY Increment,
- IN BOOLEAN Wait);
- NTKERNELAPI
- LONG
- NTAPI
- KeSetBasePriorityThread(
- IN OUT PRKTHREAD Thread,
- IN LONG Increment);
- NTKERNELAPI
- VOID
- NTAPI
- KeEnterCriticalRegion(VOID);
- NTKERNELAPI
- VOID
- NTAPI
- KeLeaveCriticalRegion(VOID);
- NTKERNELAPI
- DECLSPEC_NORETURN
- VOID
- NTAPI
- KeBugCheck(
- IN ULONG BugCheckCode);
- #if defined(SINGLE_GROUP_LEGACY_API)
- NTKERNELAPI
- VOID
- NTAPI
- KeSetTargetProcessorDpc(
- IN OUT PRKDPC Dpc,
- IN CCHAR Number);
- NTKERNELAPI
- KAFFINITY
- NTAPI
- KeQueryActiveProcessors(VOID);
- #endif /* defined(SINGLE_GROUP_LEGACY_API) */
- #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
- #if (NTDDI_VERSION >= NTDDI_WINXP)
- NTKERNELAPI
- BOOLEAN
- NTAPI
- KeAreApcsDisabled(VOID);
- #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
- #if (NTDDI_VERSION >= NTDDI_WS03)
- NTKERNELAPI
- BOOLEAN
- NTAPI
- KeInvalidateAllCaches(VOID);
- #endif /* (NTDDI_VERSION >= NTDDI_WS03) */
- #if (NTDDI_VERSION >= NTDDI_WS03SP1)
- NTKERNELAPI
- NTSTATUS
- NTAPI
- KeExpandKernelStackAndCallout(
- IN PEXPAND_STACK_CALLOUT Callout,
- IN PVOID Parameter OPTIONAL,
- IN SIZE_T Size);
- NTKERNELAPI
- VOID
- NTAPI
- KeEnterGuardedRegion(VOID);
- NTKERNELAPI
- VOID
- NTAPI
- KeLeaveGuardedRegion(VOID);
- #endif /* (NTDDI_VERSION >= NTDDI_WS03SP1) */
- #if (NTDDI_VERSION >= NTDDI_VISTA)
- #if defined(SINGLE_GROUP_LEGACY_API)
- NTKERNELAPI
- ULONG
- NTAPI
- KeQueryActiveProcessorCount(
- OUT PKAFFINITY ActiveProcessors OPTIONAL);
- NTKERNELAPI
- ULONG
- NTAPI
- KeQueryMaximumProcessorCount(VOID);
- #endif /* SINGLE_GROUP_LEGACY_API */
- #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
- #if (NTDDI_VERSION >= NTDDI_WIN7)
- NTKERNELAPI
- ULONG
- NTAPI
- KeQueryActiveProcessorCountEx(
- IN USHORT GroupNumber);
- NTKERNELAPI
- ULONG
- NTAPI
- KeQueryMaximumProcessorCountEx(
- IN USHORT GroupNumber);
- NTKERNELAPI
- USHORT
- NTAPI
- KeQueryActiveGroupCount(VOID);
- NTKERNELAPI
- USHORT
- NTAPI
- KeQueryMaximumGroupCount(VOID);
- NTKERNELAPI
- KAFFINITY
- NTAPI
- KeQueryGroupAffinity(
- IN USHORT GroupNumber);
- NTKERNELAPI
- ULONG
- NTAPI
- KeGetCurrentProcessorNumberEx(
- OUT PPROCESSOR_NUMBER ProcNumber OPTIONAL);
- NTKERNELAPI
- VOID
- NTAPI
- KeQueryNodeActiveAffinity(
- IN USHORT NodeNumber,
- OUT PGROUP_AFFINITY Affinity OPTIONAL,
- OUT PUSHORT Count OPTIONAL);
- NTKERNELAPI
- USHORT
- NTAPI
- KeQueryNodeMaximumProcessorCount(
- IN USHORT NodeNumber);
- NTKERNELAPI
- USHORT
- NTAPI
- KeQueryHighestNodeNumber(VOID);
- NTKERNELAPI
- USHORT
- NTAPI
- KeGetCurrentNodeNumber(VOID);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- KeQueryLogicalProcessorRelationship(
- IN PPROCESSOR_NUMBER ProcessorNumber OPTIONAL,
- IN LOGICAL_PROCESSOR_RELATIONSHIP RelationshipType,
- OUT PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX Information OPTIONAL,
- IN OUT PULONG Length);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- KeSetHardwareCounterConfiguration(
- IN PHARDWARE_COUNTER CounterArray,
- IN ULONG Count);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- KeQueryHardwareCounterConfiguration(
- OUT PHARDWARE_COUNTER CounterArray,
- IN ULONG MaximumCount,
- OUT PULONG Count);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
- /******************************************************************************
- * Memory manager Functions *
- ******************************************************************************/
- #if (NTDDI_VERSION >= NTDDI_WIN2K)
- NTKERNELAPI
- PPHYSICAL_MEMORY_RANGE
- NTAPI
- MmGetPhysicalMemoryRanges(VOID);
- NTKERNELAPI
- PHYSICAL_ADDRESS
- NTAPI
- MmGetPhysicalAddress(
- IN PVOID BaseAddress);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- MmIsNonPagedSystemAddressValid(
- IN PVOID VirtualAddress);
- NTKERNELAPI
- PVOID
- NTAPI
- MmAllocateNonCachedMemory(
- IN SIZE_T NumberOfBytes);
- NTKERNELAPI
- VOID
- NTAPI
- MmFreeNonCachedMemory(
- IN PVOID BaseAddress,
- IN SIZE_T NumberOfBytes);
- NTKERNELAPI
- PVOID
- NTAPI
- MmGetVirtualForPhysical(
- IN PHYSICAL_ADDRESS PhysicalAddress);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- MmMapUserAddressesToPage(
- IN PVOID BaseAddress,
- IN SIZE_T NumberOfBytes,
- IN PVOID PageAddress);
- NTKERNELAPI
- PVOID
- NTAPI
- MmMapVideoDisplay(
- IN PHYSICAL_ADDRESS PhysicalAddress,
- IN SIZE_T NumberOfBytes,
- IN MEMORY_CACHING_TYPE CacheType);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- MmMapViewInSessionSpace(
- IN PVOID Section,
- OUT PVOID *MappedBase,
- IN OUT PSIZE_T ViewSize);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- MmMapViewInSystemSpace(
- IN PVOID Section,
- OUT PVOID *MappedBase,
- IN OUT PSIZE_T ViewSize);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- MmIsAddressValid(
- IN PVOID VirtualAddress);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- MmIsThisAnNtAsSystem(VOID);
- NTKERNELAPI
- VOID
- NTAPI
- MmLockPagableSectionByHandle(
- IN PVOID ImageSectionHandle);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- MmUnmapViewInSessionSpace(
- IN PVOID MappedBase);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- MmUnmapViewInSystemSpace(
- IN PVOID MappedBase);
- NTKERNELAPI
- VOID
- NTAPI
- MmUnsecureVirtualMemory(
- IN HANDLE SecureHandle);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- MmRemovePhysicalMemory(
- IN PPHYSICAL_ADDRESS StartAddress,
- IN OUT PLARGE_INTEGER NumberOfBytes);
- NTKERNELAPI
- HANDLE
- NTAPI
- MmSecureVirtualMemory(
- IN PVOID Address,
- IN SIZE_T Size,
- IN ULONG ProbeMode);
- NTKERNELAPI
- VOID
- NTAPI
- MmUnmapVideoDisplay(
- IN PVOID BaseAddress,
- IN SIZE_T NumberOfBytes);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- MmAddPhysicalMemory(
- IN PPHYSICAL_ADDRESS StartAddress,
- IN OUT PLARGE_INTEGER NumberOfBytes);
- NTKERNELAPI
- PVOID
- NTAPI
- MmAllocateContiguousMemory(
- IN SIZE_T NumberOfBytes,
- IN PHYSICAL_ADDRESS HighestAcceptableAddress);
- NTKERNELAPI
- PVOID
- NTAPI
- MmAllocateContiguousMemorySpecifyCache(
- IN SIZE_T NumberOfBytes,
- IN PHYSICAL_ADDRESS LowestAcceptableAddress,
- IN PHYSICAL_ADDRESS HighestAcceptableAddress,
- IN PHYSICAL_ADDRESS BoundaryAddressMultiple OPTIONAL,
- IN MEMORY_CACHING_TYPE CacheType);
- NTKERNELAPI
- PVOID
- NTAPI
- MmAllocateContiguousMemorySpecifyCacheNode(
- IN SIZE_T NumberOfBytes,
- IN PHYSICAL_ADDRESS LowestAcceptableAddress,
- IN PHYSICAL_ADDRESS HighestAcceptableAddress,
- IN PHYSICAL_ADDRESS BoundaryAddressMultiple OPTIONAL,
- IN MEMORY_CACHING_TYPE CacheType,
- IN NODE_REQUIREMENT PreferredNode);
- NTKERNELAPI
- VOID
- NTAPI
- MmFreeContiguousMemory(
- IN PVOID BaseAddress);
- NTKERNELAPI
- VOID
- NTAPI
- MmFreeContiguousMemorySpecifyCache(
- IN PVOID BaseAddress,
- IN SIZE_T NumberOfBytes,
- IN MEMORY_CACHING_TYPE CacheType);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
- #if (NTDDI_VERSION >= NTDDI_WS03)
- NTKERNELAPI
- NTSTATUS
- NTAPI
- MmCreateMirror(VOID);
- #endif /* (NTDDI_VERSION >= NTDDI_WS03) */
- #if (NTDDI_VERSION >= NTDDI_VISTA)
- NTSTATUS
- NTAPI
- MmRotatePhysicalView(
- IN PVOID VirtualAddress,
- IN OUT PSIZE_T NumberOfBytes,
- IN PMDLX NewMdl OPTIONAL,
- IN MM_ROTATE_DIRECTION Direction,
- IN PMM_ROTATE_COPY_CALLBACK_FUNCTION CopyFunction,
- IN PVOID Context OPTIONAL);
- #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
- /******************************************************************************
- * Process Manager Functions *
- ******************************************************************************/
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtOpenProcess(
- OUT PHANDLE ProcessHandle,
- IN ACCESS_MASK DesiredAccess,
- IN POBJECT_ATTRIBUTES ObjectAttributes,
- IN PCLIENT_ID ClientId OPTIONAL);
- NTSYSCALLAPI
- NTSTATUS
- NTAPI
- NtQueryInformationProcess(
- IN HANDLE ProcessHandle,
- IN PROCESSINFOCLASS ProcessInformationClass,
- OUT PVOID ProcessInformation OPTIONAL,
- IN ULONG ProcessInformationLength,
- OUT PULONG ReturnLength OPTIONAL);
- #if (NTDDI_VERSION >= NTDDI_WIN2K)
- NTKERNELAPI
- NTSTATUS
- NTAPI
- PsSetCreateProcessNotifyRoutine(
- IN PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine,
- IN BOOLEAN Remove);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- PsSetCreateThreadNotifyRoutine(
- IN PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- PsSetLoadImageNotifyRoutine(
- IN PLOAD_IMAGE_NOTIFY_ROUTINE NotifyRoutine);
- NTKERNELAPI
- HANDLE
- NTAPI
- PsGetCurrentProcessId(VOID);
- NTKERNELAPI
- HANDLE
- NTAPI
- PsGetCurrentThreadId(VOID);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- PsGetVersion(
- OUT PULONG MajorVersion OPTIONAL,
- OUT PULONG MinorVersion OPTIONAL,
- OUT PULONG BuildNumber OPTIONAL,
- OUT PUNICODE_STRING CSDVersion OPTIONAL);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
- #if (NTDDI_VERSION >= NTDDI_WINXP)
- NTKERNELAPI
- HANDLE
- NTAPI
- PsGetProcessId(
- IN PEPROCESS Process);
- NTKERNELAPI
- HANDLE
- NTAPI
- PsGetThreadId(
- IN PETHREAD Thread);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- PsRemoveCreateThreadNotifyRoutine(
- IN PCREATE_THREAD_NOTIFY_ROUTINE NotifyRoutine);
- NTKERNELAPI
- NTSTATUS
- NTAPI
- PsRemoveLoadImageNotifyRoutine(
- IN PLOAD_IMAGE_NOTIFY_ROUTINE NotifyRoutine);
- NTKERNELAPI
- LONGLONG
- NTAPI
- PsGetProcessCreateTimeQuadPart(
- IN PEPROCESS Process);
- #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
- #if (NTDDI_VERSION >= NTDDI_WS03)
- NTKERNELAPI
- HANDLE
- NTAPI
- PsGetThreadProcessId(
- IN PETHREAD Thread);
- #endif /* (NTDDI_VERSION >= NTDDI_WS03) */
- #if (NTDDI_VERSION >= NTDDI_VISTA)
- NTKERNELAPI
- BOOLEAN
- NTAPI
- PsSetCurrentThreadPrefetching(
- IN BOOLEAN Prefetching);
- NTKERNELAPI
- BOOLEAN
- NTAPI
- PsIsCurrentThreadPrefetching(VOID);
- #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
- #if (NTDDI_VERSION >= NTDDI_VISTASP1)
- NTKERNELAPI
- NTSTATUS
- NTAPI
- PsSetCreateProcessNotifyRoutineEx(
- IN PCREATE_PROCESS_NOTIFY_ROUTINE_EX NotifyRoutine,
- IN BOOLEAN Remove);
- #endif /* (NTDDI_VERSION >= NTDDI_VISTASP1) */
- /******************************************************************************
- * Runtime Library Functions *
- ******************************************************************************/
- #if (NTDDI_VERSION >= NTDDI_WIN2K)
- #ifndef RTL_USE_AVL_TABLES
- NTSYSAPI
- VOID
- NTAPI
- RtlInitializeGenericTable(
- OUT PRTL_GENERIC_TABLE Table,
- IN PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine,
- IN PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine,
- IN PRTL_GENERIC_FREE_ROUTINE FreeRoutine,
- IN PVOID TableContext OPTIONAL);
- NTSYSAPI
- PVOID
- NTAPI
- RtlInsertElementGenericTable(
- IN PRTL_GENERIC_TABLE Table,
- IN PVOID Buffer,
- IN CLONG BufferSize,
- OUT PBOOLEAN NewElement OPTIONAL);
- NTSYSAPI
- PVOID
- NTAPI
- RtlInsertElementGenericTableFull(
- IN PRTL_GENERIC_TABLE Table,
- IN PVOID Buffer,
- IN CLONG BufferSize,
- OUT PBOOLEAN NewElement OPTIONAL,
- IN PVOID NodeOrParent,
- IN TABLE_SEARCH_RESULT SearchResult);
- NTSYSAPI
- BOOLEAN
- NTAPI
- RtlDeleteElementGenericTable(
- IN PRTL_GENERIC_TABLE Table,
- IN PVOID Buffer);
- NTSYSAPI
- PVOID
- NTAPI
- RtlLookupElementGenericTable(
- IN PRTL_GENERIC_TABLE Table,
- IN PVOID Buffer);
- NTSYSAPI
- PVOID
- NTAPI
- RtlLookupElementGenericTableFull(
- IN PRTL_GENERIC_TABLE Table,
- IN PVOID Buffer,
- OUT PVOID *NodeOrParent,
- OUT TABLE_SEARCH_RESULT *SearchResult);
- NTSYSAPI
- PVOID
- NTAPI
- RtlEnumerateGenericTable(
- IN PRTL_GENERIC_TABLE Table,
- IN BOOLEAN Restart);
- NTSYSAPI
- PVOID
- NTAPI
- RtlEnumerateGenericTableWithoutSplaying(
- IN PRTL_GENERIC_TABLE Table,
- IN OUT PVOID *RestartKey);
- NTSYSAPI
- PVOID
- NTAPI
- RtlGetElementGenericTable(
- IN PRTL_GENERIC_TABLE Table,
- IN ULONG I);
- NTSYSAPI
- ULONG
- NTAPI
- RtlNumberGenericTableElements(
- IN PRTL_GENERIC_TABLE Table);
- NTSYSAPI
- BOOLEAN
- NTAPI
- RtlIsGenericTableEmpty(
- IN PRTL_GENERIC_TABLE Table);
- #endif /* !RTL_USE_AVL_TABLES */
- #define RTL_STACK_WALKING_MODE_FRAMES_TO_SKIP_SHIFT 8
- NTSYSAPI
- PRTL_SPLAY_LINKS
- NTAPI
- RtlSplay(
- IN OUT PRTL_SPLAY_LINKS Links);
- NTSYSAPI
- PRTL_SPLAY_LINKS
- NTAPI
- RtlDelete(
- IN PRTL_SPLAY_LINKS Links);
- NTSYSAPI
- VOID
- NTAPI
- RtlDeleteNoSplay(
- IN PRTL_SPLAY_LINKS Links,
- IN OUT PRTL_SPLAY_LINKS *Root);
- NTSYSAPI
- PRTL_SPLAY_LINKS
- NTAPI
- RtlSubtreeSuccessor(
- IN PRTL_SPLAY_LINKS Links);
- NTSYSAPI
- PRTL_SPLAY_LINKS
- NTAPI
- RtlSubtreePredecessor(
- IN PRTL_SPLAY_LINKS Links);
- NTSYSAPI
- PRTL_SPLAY_LINKS
- NTAPI
- RtlRealSuccessor(
- IN PRTL_SPLAY_LINKS Links);
- NTSYSAPI
- PRTL_SPLAY_LINKS
- NTAPI
- RtlRealPredecessor(
- IN PRTL_SPLAY_LINKS Links);
- NTSYSAPI
- BOOLEAN
- NTAPI
- RtlPrefixUnicodeString(
- IN PCUNICODE_STRING String1,
- IN PCUNICODE_STRING String2,
- IN BOOLEAN CaseInSensitive);
- NTSYSAPI
- VOID
- NTAPI
- RtlUpperString(
- IN OUT PSTRING DestinationString,
- IN const PSTRING SourceString);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlUpcaseUnicodeString(
- IN OUT PUNICODE_STRING DestinationString,
- IN PCUNICODE_STRING SourceString,
- IN BOOLEAN AllocateDestinationString);
- NTSYSAPI
- VOID
- NTAPI
- RtlMapGenericMask(
- IN OUT PACCESS_MASK AccessMask,
- IN PGENERIC_MAPPING GenericMapping);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlVolumeDeviceToDosName(
- IN PVOID VolumeDeviceObject,
- OUT PUNICODE_STRING DosName);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlGetVersion(
- IN OUT PRTL_OSVERSIONINFOW lpVersionInformation);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlVerifyVersionInfo(
- IN PRTL_OSVERSIONINFOEXW VersionInfo,
- IN ULONG TypeMask,
- IN ULONGLONG ConditionMask);
- NTSYSAPI
- LONG
- NTAPI
- RtlCompareString(
- IN const PSTRING String1,
- IN const PSTRING String2,
- IN BOOLEAN CaseInSensitive);
- NTSYSAPI
- VOID
- NTAPI
- RtlCopyString(
- OUT PSTRING DestinationString,
- IN const PSTRING SourceString OPTIONAL);
- NTSYSAPI
- BOOLEAN
- NTAPI
- RtlEqualString(
- IN const PSTRING String1,
- IN const PSTRING String2,
- IN BOOLEAN CaseInSensitive);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlCharToInteger(
- IN PCSZ String,
- IN ULONG Base OPTIONAL,
- OUT PULONG Value);
- NTSYSAPI
- CHAR
- NTAPI
- RtlUpperChar(
- IN CHAR Character);
- NTSYSAPI
- ULONG
- NTAPI
- RtlWalkFrameChain(
- OUT PVOID *Callers,
- IN ULONG Count,
- IN ULONG Flags);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
- #if (NTDDI_VERSION >= NTDDI_WINXP)
- NTSYSAPI
- VOID
- NTAPI
- RtlInitializeGenericTableAvl(
- OUT PRTL_AVL_TABLE Table,
- IN PRTL_AVL_COMPARE_ROUTINE CompareRoutine,
- IN PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine,
- IN PRTL_AVL_FREE_ROUTINE FreeRoutine,
- IN PVOID TableContext OPTIONAL);
- NTSYSAPI
- PVOID
- NTAPI
- RtlInsertElementGenericTableAvl(
- IN PRTL_AVL_TABLE Table,
- IN PVOID Buffer,
- IN CLONG BufferSize,
- OUT PBOOLEAN NewElement OPTIONAL);
- NTSYSAPI
- PVOID
- NTAPI
- RtlInsertElementGenericTableFullAvl(
- IN PRTL_AVL_TABLE Table,
- IN PVOID Buffer,
- IN CLONG BufferSize,
- OUT PBOOLEAN NewElement OPTIONAL,
- IN PVOID NodeOrParent,
- IN TABLE_SEARCH_RESULT SearchResult);
- NTSYSAPI
- BOOLEAN
- NTAPI
- RtlDeleteElementGenericTableAvl(
- IN PRTL_AVL_TABLE Table,
- IN PVOID Buffer);
- NTSYSAPI
- PVOID
- NTAPI
- RtlLookupElementGenericTableAvl(
- IN PRTL_AVL_TABLE Table,
- IN PVOID Buffer);
- NTSYSAPI
- PVOID
- NTAPI
- RtlLookupElementGenericTableFullAvl(
- IN PRTL_AVL_TABLE Table,
- IN PVOID Buffer,
- OUT PVOID *NodeOrParent,
- OUT TABLE_SEARCH_RESULT *SearchResult);
- NTSYSAPI
- PVOID
- NTAPI
- RtlEnumerateGenericTableAvl(
- IN PRTL_AVL_TABLE Table,
- IN BOOLEAN Restart);
- NTSYSAPI
- PVOID
- NTAPI
- RtlEnumerateGenericTableWithoutSplayingAvl(
- IN PRTL_AVL_TABLE Table,
- IN OUT PVOID *RestartKey);
- NTSYSAPI
- PVOID
- NTAPI
- RtlLookupFirstMatchingElementGenericTableAvl(
- IN PRTL_AVL_TABLE Table,
- IN PVOID Buffer,
- OUT PVOID *RestartKey);
- NTSYSAPI
- PVOID
- NTAPI
- RtlEnumerateGenericTableLikeADirectory(
- IN PRTL_AVL_TABLE Table,
- IN PRTL_AVL_MATCH_FUNCTION MatchFunction OPTIONAL,
- IN PVOID MatchData OPTIONAL,
- IN ULONG NextFlag,
- IN OUT PVOID *RestartKey,
- IN OUT PULONG DeleteCount,
- IN PVOID Buffer);
- NTSYSAPI
- PVOID
- NTAPI
- RtlGetElementGenericTableAvl(
- IN PRTL_AVL_TABLE Table,
- IN ULONG I);
- NTSYSAPI
- ULONG
- NTAPI
- RtlNumberGenericTableElementsAvl(
- IN PRTL_AVL_TABLE Table);
- NTSYSAPI
- BOOLEAN
- NTAPI
- RtlIsGenericTableEmptyAvl(
- IN PRTL_AVL_TABLE Table);
- #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
- #if (NTDDI_VERSION >= NTDDI_VISTA)
- NTSYSAPI
- VOID
- NTAPI
- RtlRunOnceInitialize(
- OUT PRTL_RUN_ONCE RunOnce);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlRunOnceExecuteOnce(
- IN OUT PRTL_RUN_ONCE RunOnce,
- IN PRTL_RUN_ONCE_INIT_FN InitFn,
- IN OUT PVOID Parameter OPTIONAL,
- OUT PVOID *Context OPTIONAL);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlRunOnceBeginInitialize(
- IN OUT PRTL_RUN_ONCE RunOnce,
- IN ULONG Flags,
- OUT PVOID *Context OPTIONAL);
- NTSYSAPI
- NTSTATUS
- NTAPI
- RtlRunOnceComplete(
- IN OUT PRTL_RUN_ONCE RunOnce,
- IN ULONG Flags,
- IN PVOID Context OPTIONAL);
- NTSYSAPI
- BOOLEAN
- NTAPI
- RtlGetProductInfo(
- IN ULONG OSMajorVersion,
- IN ULONG OSMinorVersion,
- IN ULONG SpMajorVersion,
- IN ULONG SpMinorVersion,
- OUT PULONG ReturnedProductType);
- #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
- #if (NTDDI_VERSION >= NTDDI_WIN7)
- NTSYSAPI
- BOOLEAN
- NTAPI
- RtlCreateHashTable(
- IN OUT PRTL_DYNAMIC_HASH_TABLE *HashTable OPTIONAL,
- IN ULONG Shift,
- IN ULONG Flags);
- NTSYSAPI
- VOID
- NTAPI
- RtlDeleteHashTable(
- IN PRTL_DYNAMIC_HASH_TABLE HashTable);
- NTSYSAPI
- BOOLEAN
- NTAPI
- RtlInsertEntryHashTable(
- IN PRTL_DYNAMIC_HASH_TABLE HashTable,
- IN PRTL_DYNAMIC_HASH_TABLE_ENTRY Entry,
- IN ULONG_PTR Signature,
- IN OUT PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context OPTIONAL);
- NTSYSAPI
- BOOLEAN
- NTAPI
- RtlRemoveEntryHashTable(
- IN PRTL_DYNAMIC_HASH_TABLE HashTable,
- IN PRTL_DYNAMIC_HASH_TABLE_ENTRY Entry,
- IN OUT PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context OPTIONAL);
- NTSYSAPI
- PRTL_DYNAMIC_HASH_TABLE_ENTRY
- NTAPI
- RtlLookupEntryHashTable(
- IN PRTL_DYNAMIC_HASH_TABLE HashTable,
- IN ULONG_PTR Signature,
- OUT PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context OPTIONAL);
- NTSYSAPI
- PRTL_DYNAMIC_HASH_TABLE_ENTRY
- NTAPI
- RtlGetNextEntryHashTable(
- IN PRTL_DYNAMIC_HASH_TABLE HashTable,
- IN PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context);
- NTSYSAPI
- BOOLEAN
- NTAPI
- RtlInitEnumerationHashTable(
- IN PRTL_DYNAMIC_HASH_TABLE HashTable,
- OUT PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator);
- NTSYSAPI
- PRTL_DYNAMIC_HASH_TABLE_ENTRY
- NTAPI
- RtlEnumerateEntryHashTable(
- IN PRTL_DYNAMIC_HASH_TABLE HashTable,
- IN OUT PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator);
- NTSYSAPI
- VOID
- NTAPI
- RtlEndEnumerationHashTable(
- IN PRTL_DYNAMIC_HASH_TABLE HashTable,
- IN OUT PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator);
- NTSYSAPI
- BOOLEAN
- NTAPI
- RtlInitWeakEnumerationHashTable(
- IN PRTL_DYNAMIC_HASH_TABLE HashTable,
- OUT PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator);
- NTSYSAPI
- PRTL_DYNAMIC_HASH_TABLE_ENTRY
- NTAPI
- RtlWeaklyEnumerateEntryHashTable(
- IN PRTL_DYNAMIC_HASH_TABLE HashTable,
- IN OUT PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator);
- NTSYSAPI
- VOID
- NTAPI
- RtlEndWeakEnumerationHashTable(
- IN PRTL_DYNAMIC_HASH_TABLE HashTable,
- IN OUT PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator);
- NTSYSAPI
- BOOLEAN
- NTAPI
- RtlExpandHashTable(
- IN PRTL_DYNAMIC_HASH_TABLE HashTable);
- NTSYSAPI
- BOOLEAN
- NTAPI
- RtlContractHashTable(
- IN PRTL_DYNAMIC_HASH_TABLE HashTable);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
- #if defined(_AMD64_) || defined(_IA64_)
- //DECLSPEC_DEPRECATED_DDK_WINXP
- FORCEINLINE
- LARGE_INTEGER
- NTAPI_INLINE
- RtlLargeIntegerDivide(
- IN LARGE_INTEGER Dividend,
- IN LARGE_INTEGER Divisor,
- OUT PLARGE_INTEGER Remainder OPTIONAL)
- {
- LARGE_INTEGER ret;
- ret.QuadPart = Dividend.QuadPart / Divisor.QuadPart;
- if (Remainder)
- Remainder->QuadPart = Dividend.QuadPart % Divisor.QuadPart;
- return ret;
- }
- #else
- #if (NTDDI_VERSION >= NTDDI_WIN2K)
- NTSYSAPI
- LARGE_INTEGER
- NTAPI
- RtlLargeIntegerDivide(
- IN LARGE_INTEGER Dividend,
- IN LARGE_INTEGER Divisor,
- OUT PLARGE_INTEGER Remainder OPTIONAL);
- #endif
- #endif /* defined(_AMD64_) || defined(_IA64_) */
- #ifdef RTL_USE_AVL_TABLES
- #define RtlInitializeGenericTable RtlInitializeGenericTableAvl
- #define RtlInsertElementGenericTable RtlInsertElementGenericTableAvl
- #define RtlInsertElementGenericTableFull RtlInsertElementGenericTableFullAvl
- #define RtlDeleteElementGenericTable RtlDeleteElementGenericTableAvl
- #define RtlLookupElementGenericTable RtlLookupElementGenericTableAvl
- #define RtlLookupElementGenericTableFull RtlLookupElementGenericTableFullAvl
- #define RtlEnumerateGenericTable RtlEnumerateGenericTableAvl
- #define RtlEnumerateGenericTableWithoutSplaying RtlEnumerateGenericTableWithoutSplayingAvl
- #define RtlGetElementGenericTable RtlGetElementGenericTableAvl
- #define RtlNumberGenericTableElements RtlNumberGenericTableElementsAvl
- #define RtlIsGenericTableEmpty RtlIsGenericTableEmptyAvl
- #endif /* RTL_USE_AVL_TABLES */
- #define RtlInitializeSplayLinks(Links) { \
- PRTL_SPLAY_LINKS _SplayLinks; \
- _SplayLinks = (PRTL_SPLAY_LINKS)(Links); \
- _SplayLinks->Parent = _SplayLinks; \
- _SplayLinks->LeftChild = NULL; \
- _SplayLinks->RightChild = NULL; \
- }
- #define RtlIsLeftChild(Links) \
- (RtlLeftChild(RtlParent(Links)) == (PRTL_SPLAY_LINKS)(Links))
- #define RtlIsRightChild(Links) \
- (RtlRightChild(RtlParent(Links)) == (PRTL_SPLAY_LINKS)(Links))
- #define RtlRightChild(Links) \
- ((PRTL_SPLAY_LINKS)(Links))->RightChild
- #define RtlIsRoot(Links) \
- (RtlParent(Links) == (PRTL_SPLAY_LINKS)(Links))
- #define RtlLeftChild(Links) \
- ((PRTL_SPLAY_LINKS)(Links))->LeftChild
- #define RtlParent(Links) \
- ((PRTL_SPLAY_LINKS)(Links))->Parent
- #define RtlInsertAsLeftChild(ParentLinks,ChildLinks) \
- { \
- PRTL_SPLAY_LINKS _SplayParent; \
- PRTL_SPLAY_LINKS _SplayChild; \
- _SplayParent = (PRTL_SPLAY_LINKS)(ParentLinks); \
- _SplayChild = (PRTL_SPLAY_LINKS)(ChildLinks); \
- _SplayParent->LeftChild = _SplayChild; \
- _SplayChild->Parent = _SplayParent; \
- }
- #define RtlInsertAsRightChild(ParentLinks,ChildLinks) \
- { \
- PRTL_SPLAY_LINKS _SplayParent; \
- PRTL_SPLAY_LINKS _SplayChild; \
- _SplayParent = (PRTL_SPLAY_LINKS)(ParentLinks); \
- _SplayChild = (PRTL_SPLAY_LINKS)(ChildLinks); \
- _SplayParent->RightChild = _SplayChild; \
- _SplayChild->Parent = _SplayParent; \
- }
- #if !defined(MIDL_PASS)
- FORCEINLINE
- LUID
- NTAPI_INLINE
- RtlConvertLongToLuid(
- IN LONG Val)
- {
- LUID Luid;
- LARGE_INTEGER Temp;
- Temp.QuadPart = Val;
- Luid.LowPart = Temp.u.LowPart;
- Luid.HighPart = Temp.u.HighPart;
- return Luid;
- }
- FORCEINLINE
- LUID
- NTAPI_INLINE
- RtlConvertUlongToLuid(
- IN ULONG Val)
- {
- LUID Luid;
- Luid.LowPart = Val;
- Luid.HighPart = 0;
- return Luid;
- }
- #endif /* !defined(MIDL_PASS) */
- #if (defined(_M_AMD64) || defined(_M_IA64)) && !defined(_REALLY_GET_CALLERS_CALLER_)
- #define RtlGetCallersAddress(CallersAddress, CallersCaller) \
- *CallersAddress = (PVOID)_ReturnAddress(); \
- *CallersCaller = NULL;
- #else
- #if (NTDDI_VERSION >= NTDDI_WIN2K)
- NTSYSAPI
- VOID
- NTAPI
- RtlGetCallersAddress(
- OUT PVOID *CallersAddress,
- OUT PVOID *CallersCaller);
- #endif
- #endif
- #if !defined(MIDL_PASS) && !defined(SORTPP_PASS)
- #if (NTDDI_VERSION >= NTDDI_WIN7)
- FORCEINLINE
- VOID
- NTAPI
- RtlInitHashTableContext(
- IN OUT PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context)
- {
- Context->ChainHead = NULL;
- Context->PrevLinkage = NULL;
- }
- FORCEINLINE
- VOID
- NTAPI
- RtlInitHashTableContextFromEnumerator(
- IN OUT PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context,
- IN PRTL_DYNAMIC_HASH_TABLE_ENUMERATOR Enumerator)
- {
- Context->ChainHead = Enumerator->ChainHead;
- Context->PrevLinkage = Enumerator->HashEntry.Linkage.Blink;
- }
- FORCEINLINE
- VOID
- NTAPI
- RtlReleaseHashTableContext(
- IN OUT PRTL_DYNAMIC_HASH_TABLE_CONTEXT Context)
- {
- UNREFERENCED_PARAMETER(Context);
- return;
- }
- FORCEINLINE
- ULONG
- NTAPI
- RtlTotalBucketsHashTable(
- IN PRTL_DYNAMIC_HASH_TABLE HashTable)
- {
- return HashTable->TableSize;
- }
- FORCEINLINE
- ULONG
- NTAPI
- RtlNonEmptyBucketsHashTable(
- IN PRTL_DYNAMIC_HASH_TABLE HashTable)
- {
- return HashTable->NonEmptyBuckets;
- }
- FORCEINLINE
- ULONG
- NTAPI
- RtlEmptyBucketsHashTable(
- IN PRTL_DYNAMIC_HASH_TABLE HashTable)
- {
- return HashTable->TableSize - HashTable->NonEmptyBuckets;
- }
- FORCEINLINE
- ULONG
- NTAPI
- RtlTotalEntriesHashTable(
- IN PRTL_DYNAMIC_HASH_TABLE HashTable)
- {
- return HashTable->NumEntries;
- }
- FORCEINLINE
- ULONG
- NTAPI
- RtlActiveEnumeratorsHashTable(
- IN PRTL_DYNAMIC_HASH_TABLE HashTable)
- {
- return HashTable->NumEnumerators;
- }
- #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
- #endif /* !defined(MIDL_PASS) && !defined(SORTPP_PASS) */
- /******************************************************************************
- * Security Manager Functions *
- ******************************************************************************/
- #if (NTDDI_VERSION >= NTDDI_WIN2K)
- NTKERNELAPI
- BOOLEAN
- NTAPI
- SeSinglePrivilegeCheck(
- IN LUID PrivilegeValue,
- IN KPROCESSOR_MODE PreviousMode);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
- /******************************************************************************
- * ZwXxx Functions *
- ******************************************************************************/
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwAllocateLocallyUniqueId(
- OUT PLUID Luid);
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwTerminateProcess(
- IN HANDLE ProcessHandle OPTIONAL,
- IN NTSTATUS ExitStatus);
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwOpenProcess(
- OUT PHANDLE ProcessHandle,
- IN ACCESS_MASK DesiredAccess,
- IN POBJECT_ATTRIBUTES ObjectAttributes,
- IN PCLIENT_ID ClientId OPTIONAL);
- #if (NTDDI_VERSION >= NTDDI_WIN2K)
- NTSTATUS
- NTAPI
- ZwCancelTimer(
- IN HANDLE TimerHandle,
- OUT PBOOLEAN CurrentState OPTIONAL);
- NTSTATUS
- NTAPI
- ZwCreateTimer(
- OUT PHANDLE TimerHandle,
- IN ACCESS_MASK DesiredAccess,
- IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
- IN TIMER_TYPE TimerType);
- NTSTATUS
- NTAPI
- ZwOpenTimer(
- OUT PHANDLE TimerHandle,
- IN ACCESS_MASK DesiredAccess,
- IN POBJECT_ATTRIBUTES ObjectAttributes);
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwSetInformationThread(
- IN HANDLE ThreadHandle,
- IN THREADINFOCLASS ThreadInformationClass,
- IN PVOID ThreadInformation,
- IN ULONG ThreadInformationLength);
- NTSTATUS
- NTAPI
- ZwSetTimer(
- IN HANDLE TimerHandle,
- IN PLARGE_INTEGER DueTime,
- IN PTIMER_APC_ROUTINE TimerApcRoutine OPTIONAL,
- IN PVOID TimerContext OPTIONAL,
- IN BOOLEAN ResumeTimer,
- IN LONG Period OPTIONAL,
- OUT PBOOLEAN PreviousState OPTIONAL);
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwDisplayString(
- IN PUNICODE_STRING String);
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwPowerInformation(
- IN POWER_INFORMATION_LEVEL PowerInformationLevel,
- IN PVOID InputBuffer OPTIONAL,
- IN ULONG InputBufferLength,
- OUT PVOID OutputBuffer OPTIONAL,
- IN ULONG OutputBufferLength);
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwQueryVolumeInformationFile(
- IN HANDLE FileHandle,
- OUT PIO_STATUS_BLOCK IoStatusBlock,
- OUT PVOID FsInformation,
- IN ULONG Length,
- IN FS_INFORMATION_CLASS FsInformationClass);
- NTSYSAPI
- NTSTATUS
- NTAPI
- ZwDeviceIoControlFile(
- 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);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN2K) */
- #if (NTDDI_VERSION >= NTDDI_WIN7)
- NTSTATUS
- NTAPI
- ZwSetTimerEx(
- IN HANDLE TimerHandle,
- IN TIMER_SET_INFORMATION_CLASS TimerSetInformationClass,
- IN OUT PVOID TimerSetInformation,
- IN ULONG TimerSetInformationLength);
- #endif /* (NTDDI_VERSION >= NTDDI_WIN7) */
- /* UNSORTED */
- #define VER_SET_CONDITION(ConditionMask, TypeBitMask, ComparisonType) \
- ((ConditionMask) = VerSetConditionMask((ConditionMask), \
- (TypeBitMask), (ComparisonType)))
- #if (NTDDI_VERSION >= NTDDI_WIN2K)
- NTSYSAPI
- ULONGLONG
- NTAPI
- VerSetConditionMask(
- IN ULONGLONG ConditionMask,
- IN ULONG TypeMask,
- IN UCHAR Condition);
- #endif
- typedef struct _KERNEL_USER_TIMES {
- LARGE_INTEGER CreateTime;
- LARGE_INTEGER ExitTime;
- LARGE_INTEGER KernelTime;
- LARGE_INTEGER UserTime;
- } KERNEL_USER_TIMES, *PKERNEL_USER_TIMES;
- /* NtXxx Functions */
- typedef enum _SYSTEM_FIRMWARE_TABLE_ACTION {
- SystemFirmwareTable_Enumerate,
- SystemFirmwareTable_Get
- } SYSTEM_FIRMWARE_TABLE_ACTION;
- typedef struct _SYSTEM_FIRMWARE_TABLE_INFORMATION {
- ULONG ProviderSignature;
- SYSTEM_FIRMWARE_TABLE_ACTION Action;
- ULONG TableID;
- ULONG TableBufferLength;
- UCHAR TableBuffer[ANYSIZE_ARRAY];
- } SYSTEM_FIRMWARE_TABLE_INFORMATION, *PSYSTEM_FIRMWARE_TABLE_INFORMATION;
- typedef NTSTATUS
- (__cdecl *PFNFTH)(
- IN OUT PSYSTEM_FIRMWARE_TABLE_INFORMATION SystemFirmwareTableInfo);
- typedef struct _SYSTEM_FIRMWARE_TABLE_HANDLER {
- ULONG ProviderSignature;
- BOOLEAN Register;
- PFNFTH FirmwareTableHandler;
- PVOID DriverObject;
- } SYSTEM_FIRMWARE_TABLE_HANDLER, *PSYSTEM_FIRMWARE_TABLE_HANDLER;
- typedef ULONG_PTR
- (NTAPI *PDRIVER_VERIFIER_THUNK_ROUTINE)(
- IN PVOID Context);
- typedef struct _DRIVER_VERIFIER_THUNK_PAIRS {
- PDRIVER_VERIFIER_THUNK_ROUTINE PristineRoutine;
- PDRIVER_VERIFIER_THUNK_ROUTINE NewRoutine;
- } DRIVER_VERIFIER_THUNK_PAIRS, *PDRIVER_VERIFIER_THUNK_PAIRS;
- #define DRIVER_VERIFIER_SPECIAL_POOLING 0x0001
- #define DRIVER_VERIFIER_FORCE_IRQL_CHECKING 0x0002
- #define DRIVER_VERIFIER_INJECT_ALLOCATION_FAILURES 0x0004
- #define DRIVER_VERIFIER_TRACK_POOL_ALLOCATIONS 0x0008
- #define DRIVER_VERIFIER_IO_CHECKING 0x0010
- #define SHARED_GLOBAL_FLAGS_ERROR_PORT_V 0x0
- #define SHARED_GLOBAL_FLAGS_ERROR_PORT (1UL << SHARED_GLOBAL_FLAGS_ERROR_PORT_V)
- #define SHARED_GLOBAL_FLAGS_ELEVATION_ENABLED_V 0x1
- #define SHARED_GLOBAL_FLAGS_ELEVATION_ENABLED (1UL << SHARED_GLOBAL_FLAGS_ELEVATION_ENABLED_V)
- #define SHARED_GLOBAL_FLAGS_VIRT_ENABLED_V 0x2
- #define SHARED_GLOBAL_FLAGS_VIRT_ENABLED (1UL << SHARED_GLOBAL_FLAGS_VIRT_ENABLED_V)
- #define SHARED_GLOBAL_FLAGS_INSTALLER_DETECT_ENABLED_V 0x3
- #define SHARED_GLOBAL_FLAGS_INSTALLER_DETECT_ENABLED \
- (1UL << SHARED_GLOBAL_FLAGS_INSTALLER_DETECT_ENABLED_V)
- #define SHARED_GLOBAL_FLAGS_SPARE_V 0x4
- #define SHARED_GLOBAL_FLAGS_SPARE \
- (1UL << SHARED_GLOBAL_FLAGS_SPARE_V)
- #define SHARED_GLOBAL_FLAGS_DYNAMIC_PROC_ENABLED_V 0x5
- #define SHARED_GLOBAL_FLAGS_DYNAMIC_PROC_ENABLED \
- (1UL << SHARED_GLOBAL_FLAGS_DYNAMIC_PROC_ENABLED_V)
- #define SHARED_GLOBAL_FLAGS_SEH_VALIDATION_ENABLED_V 0x6
- #define SHARED_GLOBAL_FLAGS_SEH_VALIDATION_ENABLED \
- (1UL << SHARED_GLOBAL_FLAGS_SEH_VALIDATION_ENABLED_V)
- #define EX_INIT_BITS(Flags, Bit) \
- *((Flags)) |= (Bit) // Safe to use before concurrently accessible
- #define EX_TEST_SET_BIT(Flags, Bit) \
- InterlockedBitTestAndSet ((PLONG)(Flags), (Bit))
- #define EX_TEST_CLEAR_BIT(Flags, Bit) \
- InterlockedBitTestAndReset ((PLONG)(Flags), (Bit))
- #define PCCARD_MAP_ERROR 0x01
- #define PCCARD_DEVICE_PCI 0x10
- #define PCCARD_SCAN_DISABLED 0x01
- #define PCCARD_MAP_ZERO 0x02
- #define PCCARD_NO_TIMER 0x03
- #define PCCARD_NO_PIC 0x04
- #define PCCARD_NO_LEGACY_BASE 0x05
- #define PCCARD_DUP_LEGACY_BASE 0x06
- #define PCCARD_NO_CONTROLLERS 0x07
- #define MAXIMUM_EXPANSION_SIZE (KERNEL_LARGE_STACK_SIZE - (PAGE_SIZE / 2))
- /* Filesystem runtime library routines */
- #if (NTDDI_VERSION >= NTDDI_WIN2K)
- NTKERNELAPI
- BOOLEAN
- NTAPI
- FsRtlIsTotalDeviceFailure(
- IN NTSTATUS Status);
- #endif
- #ifdef __cplusplus
- }
- #endif
|