12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397 |
- {******************************************************************************}
- { }
- { Image Help API interface Unit for Object Pascal }
- { }
- { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
- { Corporation. All Rights Reserved. }
- { }
- { The original file is: imagehlp.h, released August 2001. The original Pascal }
- { code is: ImageHelp.pas, released December 2000. The initial developer of the }
- { Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
- { }
- { Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
- { Marcel van Brakel. All Rights Reserved. }
- { }
- { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
- { }
- { You may retrieve the latest version of this file at the Project JEDI }
- { APILIB home page, located at http://jedi-apilib.sourceforge.net }
- { }
- { The contents of this file are used with permission, subject to the Mozilla }
- { Public License Version 1.1 (the "License"); you may not use this file except }
- { in compliance with the License. You may obtain a copy of the License at }
- { http://www.mozilla.org/MPL/MPL-1.1.html }
- { }
- { Software distributed under the License is distributed on an "AS IS" basis, }
- { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
- { the specific language governing rights and limitations under the License. }
- { }
- { Alternatively, the contents of this file may be used under the terms of the }
- { GNU Lesser General Public License (the "LGPL License"), in which case the }
- { provisions of the LGPL License are applicable instead of those above. }
- { If you wish to allow use of your version of this file only under the terms }
- { of the LGPL License and not to allow others to use your version of this file }
- { under the MPL, indicate your decision by deleting the provisions above and }
- { replace them with the notice and other provisions required by the LGPL }
- { License. If you do not delete the provisions above, a recipient may use }
- { your version of this file under either the MPL or the LGPL License. }
- { }
- { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
- { }
- {******************************************************************************}
- // $Id: JwaImageHlp.pas,v 1.10 2005/09/06 16:36:50 marquardt Exp $
- unit JwaImageHlp;
- {$WEAKPACKAGEUNIT}
- {$HPPEMIT ''}
- {$HPPEMIT '#include "ImageHlp.h"'}
- {$HPPEMIT ''}
- {$I jediapilib.inc}
- interface
- uses
- Windows, JwaWindows;
- const
- IMAGE_SEPARATION = 64*1024;
- {$EXTERNALSYM IMAGE_SEPARATION}
- type
- PLOADED_IMAGE = ^LOADED_IMAGE;
- {$EXTERNALSYM PLOADED_IMAGE}
- _LOADED_IMAGE = record
- ModuleName: PSTR;
- hFile: HANDLE;
- MappedAddress: PUCHAR;
- FileHeader: PIMAGE_NT_HEADERS32;
- LastRvaSection: PIMAGE_SECTION_HEADER;
- NumberOfSections: ULONG;
- Sections: PIMAGE_SECTION_HEADER;
- Characteristics: ULONG;
- fSystemImage: ByteBool;
- fDOSImage: ByteBool;
- Links: LIST_ENTRY;
- SizeOfImage: ULONG;
- end;
- {$EXTERNALSYM _LOADED_IMAGE}
- LOADED_IMAGE = _LOADED_IMAGE;
- {$EXTERNALSYM LOADED_IMAGE}
- TLoadedImage = LOADED_IMAGE;
- PLoadedImage = PLOADED_IMAGE;
- const
- MAX_SYM_NAME = 2000;
- {$EXTERNALSYM MAX_SYM_NAME}
- function BindImage(ImageName, DllPath, SymbolPath: PSTR): BOOL; stdcall;
- {$EXTERNALSYM BindImage}
- type
- _IMAGEHLP_STATUS_REASON = (
- BindOutOfMemory,
- BindRvaToVaFailed,
- BindNoRoomInImage,
- BindImportModuleFailed,
- BindImportProcedureFailed,
- BindImportModule,
- BindImportProcedure,
- BindForwarder,
- BindForwarderNOT,
- BindImageModified,
- BindExpandFileHeaders,
- BindImageComplete,
- BindMismatchedSymbols,
- BindSymbolsNotUpdated,
- BindImportProcedure32,
- BindImportProcedure64,
- BindForwarder32,
- BindForwarder64,
- BindForwarderNOT32,
- BindForwarderNOT64);
- {$EXTERNALSYM _IMAGEHLP_STATUS_REASON}
- IMAGEHLP_STATUS_REASON = _IMAGEHLP_STATUS_REASON;
- {$EXTERNALSYM IMAGEHLP_STATUS_REASON}
- TImageHlpStatusReason = IMAGEHLP_STATUS_REASON;
- PIMAGEHLP_STATUS_ROUTINE = function(Reason: IMAGEHLP_STATUS_REASON;
- ImageName, DllName: PSTR; Va, Parameter: ULONG_PTR): BOOL; stdcall;
- {$EXTERNALSYM PIMAGEHLP_STATUS_ROUTINE}
- PImageHlpStatusRoutine = PIMAGEHLP_STATUS_ROUTINE;
- PIMAGEHLP_STATUS_ROUTINE32 = function(Reason: IMAGEHLP_STATUS_REASON; ImageName, DllName: PSTR;
- Va: ULONG; Parameter: ULONG_PTR): BOOL; stdcall;
- {$EXTERNALSYM PIMAGEHLP_STATUS_ROUTINE32}
- PImageHlpStatusRoutine23 = PIMAGEHLP_STATUS_ROUTINE32;
- PIMAGEHLP_STATUS_ROUTINE64 = function(Reason: IMAGEHLP_STATUS_REASON; ImageName, DllName: PSTR;
- Va: ULONG64; Parameter: ULONG_PTR): BOOL; stdcall;
- {$EXTERNALSYM PIMAGEHLP_STATUS_ROUTINE64}
- PImageHlpStatusRoutine64 = PIMAGEHLP_STATUS_ROUTINE64;
- function BindImageEx(Flags: DWORD; ImageName, DllPath, SymbolPath: PSTR;
- StatusRoutine: PIMAGEHLP_STATUS_ROUTINE): BOOL; stdcall;
- {$EXTERNALSYM BindImageEx}
- const
- BIND_NO_BOUND_IMPORTS = $00000001;
- {$EXTERNALSYM BIND_NO_BOUND_IMPORTS}
- BIND_NO_UPDATE = $00000002;
- {$EXTERNALSYM BIND_NO_UPDATE}
- BIND_ALL_IMAGES = $00000004;
- {$EXTERNALSYM BIND_ALL_IMAGES}
- BIND_CACHE_IMPORT_DLLS = $00000008; // Cache dll's across calls to BindImageEx (same as NT 3.1->NT 4.0)
- {$EXTERNALSYM BIND_CACHE_IMPORT_DLLS}
- BIND_REPORT_64BIT_VA = $00000010;
- {$EXTERNALSYM BIND_REPORT_64BIT_VA}
- function ReBaseImage(CurrentImageName: PSTR; SymbolPath: PSTR; fReBase: BOOL;
- fRebaseSysfileOk: BOOL; fGoingDown: BOOL; CheckImageSize: ULONG;
- var OldImageSize: ULONG; var OldImageBase: ULONG_PTR; var NewImageSize: ULONG;
- var NewImageBase: ULONG_PTR; TimeStamp: ULONG): BOOL; stdcall;
- {$EXTERNALSYM ReBaseImage}
- function ReBaseImage64(CurrentImageName: PSTR; SymbolPath: PSTR; fReBase: BOOL;
- fRebaseSysfileOk: BOOL; fGoingDown: BOOL; CheckImageSize: ULONG;
- var OldImageSize: ULONG; var OldImageBase: ULONG64; var NewImageSize: ULONG;
- var NewImageBase: ULONG64; TimeStamp: ULONG): BOOL; stdcall;
- {$EXTERNALSYM ReBaseImage64}
- //
- // Define checksum return codes.
- //
- const
- CHECKSUM_SUCCESS = 0;
- {$EXTERNALSYM CHECKSUM_SUCCESS}
- CHECKSUM_OPEN_FAILURE = 1;
- {$EXTERNALSYM CHECKSUM_OPEN_FAILURE}
- CHECKSUM_MAP_FAILURE = 2;
- {$EXTERNALSYM CHECKSUM_MAP_FAILURE}
- CHECKSUM_MAPVIEW_FAILURE = 3;
- {$EXTERNALSYM CHECKSUM_MAPVIEW_FAILURE}
- CHECKSUM_UNICODE_FAILURE = 4;
- {$EXTERNALSYM CHECKSUM_UNICODE_FAILURE}
- // Define Splitsym flags.
- SPLITSYM_REMOVE_PRIVATE = $00000001; // Remove CV types/symbols and Fixup debug
- {$EXTERNALSYM SPLITSYM_REMOVE_PRIVATE}
- // Used for creating .dbg files that ship
- // as part of the product.
- SPLITSYM_EXTRACT_ALL = $00000002; // Extract all debug info from image.
- {$EXTERNALSYM SPLITSYM_EXTRACT_ALL}
- // Normally, FPO is left in the image
- // to allow stack traces through the code.
- // Using this switch is similar to linking
- // with -debug:none except the .dbg file
- // exists...
- SPLITSYM_SYMBOLPATH_IS_SRC = $00000004; // The SymbolFilePath contains an alternate
- {$EXTERNALSYM SPLITSYM_SYMBOLPATH_IS_SRC}
- // path to locate the pdb.
- //
- // Define checksum function prototypes.
- //
- function CheckSumMappedFile(BaseAddress: PVOID; FileLength: DWORD;
- var HeaderSum, CheckSum: DWORD): PIMAGE_NT_HEADERS; stdcall;
- {$EXTERNALSYM CheckSumMappedFile}
- function MapFileAndCheckSumA(Filename: PSTR; var HeaderSum, CheckSum: DWORD): DWORD; stdcall;
- {$EXTERNALSYM MapFileAndCheckSumA}
- function MapFileAndCheckSumW(Filename: PWSTR; var HeaderSum, CheckSum: DWORD): DWORD; stdcall;
- {$EXTERNALSYM MapFileAndCheckSumW}
- function MapFileAndCheckSum(Filename: PTSTR; var HeaderSum, CheckSum: DWORD): DWORD; stdcall;
- {$EXTERNALSYM MapFileAndCheckSum}
- function GetImageConfigInformation(const LoadedImage: LOADED_IMAGE;
- var ImageConfigInformation: IMAGE_LOAD_CONFIG_DIRECTORY): BOOL; stdcall;
- {$EXTERNALSYM GetImageConfigInformation}
- function GetImageUnusedHeaderBytes(const LoadedImage: LOADED_IMAGE;
- var SizeUnusedHeaderBytes: DWORD): DWORD; stdcall;
- {$EXTERNALSYM GetImageUnusedHeaderBytes}
- function SetImageConfigInformation(const LoadedImage: LOADED_IMAGE;
- const ImageConfigInformation: IMAGE_LOAD_CONFIG_DIRECTORY): BOOL; stdcall;
- {$EXTERNALSYM SetImageConfigInformation}
- // Image Integrity API's
- const
- CERT_PE_IMAGE_DIGEST_DEBUG_INFO = $01;
- {$EXTERNALSYM CERT_PE_IMAGE_DIGEST_DEBUG_INFO}
- CERT_PE_IMAGE_DIGEST_RESOURCES = $02;
- {$EXTERNALSYM CERT_PE_IMAGE_DIGEST_RESOURCES}
- CERT_PE_IMAGE_DIGEST_ALL_IMPORT_INFO = $04;
- {$EXTERNALSYM CERT_PE_IMAGE_DIGEST_ALL_IMPORT_INFO}
- CERT_PE_IMAGE_DIGEST_NON_PE_INFO = $08; // include data outside the PE image
- {$EXTERNALSYM CERT_PE_IMAGE_DIGEST_NON_PE_INFO}
- CERT_SECTION_TYPE_ANY = $FF; // Any Certificate type
- {$EXTERNALSYM CERT_SECTION_TYPE_ANY}
- type
- DIGEST_HANDLE = PVOID;
- {$EXTERNALSYM DIGEST_HANDLE}
- TDigestHandle = DIGEST_HANDLE;
- DIGEST_FUNCTION = function(refdata: DIGEST_HANDLE; pData: PBYTE; dwLength: DWORD): BOOL; stdcall;
- {$EXTERNALSYM DIGEST_FUNCTION}
- TDigestFunction = DIGEST_FUNCTION;
- function ImageGetDigestStream(FileHandle: HANDLE; DigestLevel: DWORD;
- DigestFunction: DIGEST_FUNCTION; DigestHandle: DIGEST_HANDLE): BOOL; stdcall;
- {$EXTERNALSYM ImageGetDigestStream}
- function ImageAddCertificate(FileHandle: HANDLE; Certificate: PWinCertificate;
- var Index: DWORD): BOOL; stdcall;
- {$EXTERNALSYM ImageAddCertificate}
- function ImageRemoveCertificate(FileHandle: HANDLE; Index: DWORD): BOOL; stdcall;
- {$EXTERNALSYM ImageRemoveCertificate}
- function ImageEnumerateCertificates(FileHandle: HANDLE; TypeFilter: WORD;
- var CertificateCount: DWORD; Indices: PDWORD; IndexCount: DWORD): BOOL; stdcall;
- {$EXTERNALSYM ImageEnumerateCertificates}
- function ImageGetCertificateData(FileHandle: HANDLE; CertificateIndex: DWORD;
- Certificate: PWinCertificate; var RequiredLength: DWORD): BOOL; stdcall;
- {$EXTERNALSYM ImageGetCertificateData}
- function ImageGetCertificateHeader(FileHandle: HANDLE; CertificateIndex: DWORD;
- Certificateheader: PWinCertificate): BOOL; stdcall;
- {$EXTERNALSYM ImageGetCertificateHeader}
- function ImageLoad(DllName: PSTR; DllPath: PSTR): PLOADED_IMAGE; stdcall;
- {$EXTERNALSYM ImageLoad}
- function ImageUnload(const LoadedImage: LOADED_IMAGE): BOOL; stdcall;
- {$EXTERNALSYM ImageUnload}
- function MapAndLoad(ImageName, DllPath: PSTR; var LoadedImage: LOADED_IMAGE;
- DotDll: BOOL; ReadOnly: BOOL): BOOL; stdcall;
- {$EXTERNALSYM MapAndLoad}
- function UnMapAndLoad(const LoadedImage: LOADED_IMAGE): BOOL; stdcall;
- {$EXTERNALSYM UnMapAndLoad}
- function TouchFileTimes(FileHandle: HANDLE; pSystemTime: PSYSTEMTIME): BOOL; stdcall;
- {$EXTERNALSYM TouchFileTimes}
- function SplitSymbols(ImageName, SymbolsPath, SymbolFilePath: PSTR; Flags: DWORD): BOOL; stdcall;
- {$EXTERNALSYM SplitSymbols}
- function UpdateDebugInfoFile(ImageFileName, SymbolPath, DebugFilePath: PSTR;
- const NtHeaders: IMAGE_NT_HEADERS32): BOOL; stdcall;
- {$EXTERNALSYM UpdateDebugInfoFile}
- function UpdateDebugInfoFileEx(ImageFileName, SymbolPath, DebugFilePath: PSTR;
- const NtHeaders: IMAGE_NT_HEADERS32; OldChecksum: DWORD): BOOL; stdcall;
- {$EXTERNALSYM UpdateDebugInfoFileEx}
- function FindDebugInfoFile(FileName, SymbolPath, DebugFilePath: PSTR): HANDLE; stdcall;
- {$EXTERNALSYM FindDebugInfoFile}
- type
- PFIND_DEBUG_FILE_CALLBACK = function(FileHandle: HANDLE; FileName: PSTR;
- CallerData: PVOID): BOOL; stdcall;
- {$EXTERNALSYM PFIND_DEBUG_FILE_CALLBACK}
- PFindDebugFileCallback = PFIND_DEBUG_FILE_CALLBACK;
- function FindDebugInfoFileEx(FileName, SymbolPath, DebugFilePath: PSTR;
- Callback: PFIND_DEBUG_FILE_CALLBACK; CallerData: PVOID): HANDLE; stdcall;
- {$EXTERNALSYM FindDebugInfoFileEx}
- type
- PFINDFILEINPATHCALLBACK = function(filename: PSTR; context: PVOID): BOOL; stdcall;
- {$EXTERNALSYM PFINDFILEINPATHCALLBACK}
- function SymFindFileInPath(hprocess: HANDLE; SearchPath, FileName: LPSTR; id: PVOID; two, three, flags: DWORD;
- FoundFile: LPSTR; callback: PFINDFILEINPATHCALLBACK; context: PVOID): BOOL; stdcall;
- {$EXTERNALSYM SymFindFileInPath}
- function FindExecutableImage(FileName, SymbolPath, ImageFilePath: PSTR): HANDLE; stdcall;
- {$EXTERNALSYM FindExecutableImage}
- type
- PFIND_EXE_FILE_CALLBACK = function(FileHandle: HANDLE; FileName: PSTR;
- CallerData: PVOID): BOOL; stdcall;
- {$EXTERNALSYM PFIND_EXE_FILE_CALLBACK}
- PFindExeFileCallback = PFIND_EXE_FILE_CALLBACK;
- function FindExecutableImageEx(FileName, SymbolPath, ImageFilePath: PSTR;
- Callback: PFIND_EXE_FILE_CALLBACK; CallerData: PVOID): HANDLE; stdcall;
- {$EXTERNALSYM FindExecutableImageEx}
- function ImageNtHeader(Base: PVOID): PIMAGE_NT_HEADERS; stdcall;
- {$EXTERNALSYM ImageNtHeader}
- function ImageDirectoryEntryToDataEx(Base: PVOID; MappedAsImage: ByteBool;
- DirectoryEntry: USHORT; var Size: ULONG; var FoundHeader: PIMAGE_SECTION_HEADER): PVOID; stdcall;
- {$EXTERNALSYM ImageDirectoryEntryToDataEx}
- function ImageDirectoryEntryToData(Base: PVOID; MappedAsImage: ByteBool;
- DirectoryEntry: USHORT; var Size: ULONG): PVOID; stdcall;
- {$EXTERNALSYM ImageDirectoryEntryToData}
- function ImageRvaToSection(NtHeaders: PIMAGE_NT_HEADERS; Base: PVOID; Rva: ULONG): PIMAGE_SECTION_HEADER; stdcall;
- {$EXTERNALSYM ImageRvaToSection}
- function ImageRvaToVa(NtHeaders: PIMAGE_NT_HEADERS; Base: PVOID; Rva: ULONG;
- var LastRvaSection: PIMAGE_SECTION_HEADER): PVOID; stdcall;
- {$EXTERNALSYM ImageRvaToVa}
- // Symbol server exports
- type
- PSYMBOLSERVERPROC = function(a1, a2: LPCSTR; a3: PVOID; a4, a5: DWORD; a6: LPSTR): BOOL; stdcall;
- {$EXTERNALSYM PSYMBOLSERVERPROC}
- PSYMBOLSERVEROPENPROC = function: BOOL; stdcall;
- {$EXTERNALSYM PSYMBOLSERVEROPENPROC}
- PSYMBOLSERVERCLOSEPROC = function: BOOL; stdcall;
- {$EXTERNALSYM PSYMBOLSERVERCLOSEPROC}
- PSYMBOLSERVERSETOPTIONSPROC = function(a1: UINT_PTR; a2: ULONG64): BOOL; stdcall;
- {$EXTERNALSYM PSYMBOLSERVERSETOPTIONSPROC}
- PSYMBOLSERVERCALLBACKPROC = function(action: UINT_PTR; data: ULONG64; context: ULONG64): BOOL; stdcall;
- {$EXTERNALSYM PSYMBOLSERVERCALLBACKPROC}
- PSYMBOLSERVERGETOPTIONSPROC = function: UINT_PTR; stdcall;
- {$EXTERNALSYM PSYMBOLSERVERGETOPTIONSPROC}
- PSYMBOLSERVERPINGPROC = function(a1: LPCSTR): BOOL; stdcall;
- {$EXTERNALSYM PSYMBOLSERVERPINGPROC}
- const
- SSRVOPT_CALLBACK = $01;
- {$EXTERNALSYM SSRVOPT_CALLBACK}
- SSRVOPT_DWORD = $02;
- {$EXTERNALSYM SSRVOPT_DWORD}
- SSRVOPT_DWORDPTR = $04;
- {$EXTERNALSYM SSRVOPT_DWORDPTR}
- SSRVOPT_GUIDPTR = $08;
- {$EXTERNALSYM SSRVOPT_GUIDPTR}
- SSRVOPT_OLDGUIDPTR = $10;
- {$EXTERNALSYM SSRVOPT_OLDGUIDPTR}
- SSRVOPT_UNATTENDED = $20;
- {$EXTERNALSYM SSRVOPT_UNATTENDED}
- SSRVOPT_RESET = ULONG_PTR(-1);
- {$EXTERNALSYM SSRVOPT_RESET}
- SSRVACTION_TRACE = 1;
- {$EXTERNALSYM SSRVACTION_TRACE}
- // This api won't be ported to Win64 - Fix your code.
- type
- PIMAGE_DEBUG_INFORMATION = ^IMAGE_DEBUG_INFORMATION;
- {$EXTERNALSYM PIMAGE_DEBUG_INFORMATION}
- _IMAGE_DEBUG_INFORMATION = record
- List: LIST_ENTRY;
- ReservedSize: DWORD;
- ReservedMappedBase: PVOID;
- ReservedMachine: USHORT;
- ReservedCharacteristics: USHORT;
- ReservedCheckSum: DWORD;
- ImageBase: DWORD;
- SizeOfImage: DWORD;
- ReservedNumberOfSections: DWORD;
- ReservedSections: PIMAGE_SECTION_HEADER;
- ReservedExportedNamesSize: DWORD;
- ReservedExportedNames: PSTR;
- ReservedNumberOfFunctionTableEntries: DWORD;
- ReservedFunctionTableEntries: PIMAGE_FUNCTION_ENTRY;
- ReservedLowestFunctionStartingAddress: DWORD;
- ReservedHighestFunctionEndingAddress: DWORD;
- ReservedNumberOfFpoTableEntries: DWORD;
- ReservedFpoTableEntries: PFPO_DATA;
- SizeOfCoffSymbols: DWORD;
- CoffSymbols: PIMAGE_COFF_SYMBOLS_HEADER;
- ReservedSizeOfCodeViewSymbols: DWORD;
- ReservedCodeViewSymbols: PVOID;
- ImageFilePath: PSTR;
- ImageFileName: PSTR;
- ReservedDebugFilePath: PSTR;
- ReservedTimeDateStamp: DWORD;
- ReservedRomImage: BOOL;
- ReservedDebugDirectory: PIMAGE_DEBUG_DIRECTORY;
- ReservedNumberOfDebugDirectories: DWORD;
- ReservedOriginalFunctionTableBaseAddress: DWORD;
- Reserved: array [0..1] of DWORD;
- end;
- {$EXTERNALSYM _IMAGE_DEBUG_INFORMATION}
- IMAGE_DEBUG_INFORMATION = _IMAGE_DEBUG_INFORMATION;
- {$EXTERNALSYM IMAGE_DEBUG_INFORMATION}
- TImageDebugInformation = IMAGE_DEBUG_INFORMATION;
- PImageDebugInformation = PIMAGE_DEBUG_INFORMATION;
- function MapDebugInformation(FileHandle: HANDLE; FileName, SymbolPath: PSTR;
- ImageBase: DWORD): PIMAGE_DEBUG_INFORMATION; stdcall;
- {$EXTERNALSYM MapDebugInformation}
- function UnmapDebugInformation(DebugInfo: PIMAGE_DEBUG_INFORMATION): BOOL; stdcall;
- {$EXTERNALSYM UnmapDebugInformation}
- function SearchTreeForFile(RootPath, InputPathName, OutputPathBuffer: PSTR): BOOL; stdcall;
- {$EXTERNALSYM SearchTreeForFile}
- type
- PENUMDIRTREE_CALLBACK = function(FilePath: LPCSTR; CallerData: PVOID): BOOL; stdcall;
- {$EXTERNALSYM PENUMDIRTREE_CALLBACK}
- PEnumDirTreeCallback = PENUMDIRTREE_CALLBACK;
- function EnumDirTree(hProcess: HANDLE; RootPath, InputPathName, OutputPathBuffer: PSTR;
- Callback: PENUMDIRTREE_CALLBACK; CallbackData: PVOID): BOOL; stdcall;
- {$EXTERNALSYM EnumDirTree}
- function MakeSureDirectoryPathExists(DirPath: PCSTR): BOOL; stdcall;
- {$EXTERNALSYM MakeSureDirectoryPathExists}
- //
- // UnDecorateSymbolName Flags
- //
- const
- UNDNAME_COMPLETE = $0000; // Enable full undecoration
- {$EXTERNALSYM UNDNAME_COMPLETE}
- UNDNAME_NO_LEADING_UNDERSCORES = $0001; // Remove leading underscores from MS extended keywords
- {$EXTERNALSYM UNDNAME_NO_LEADING_UNDERSCORES}
- UNDNAME_NO_MS_KEYWORDS = $0002; // Disable expansion of MS extended keywords
- {$EXTERNALSYM UNDNAME_NO_MS_KEYWORDS}
- UNDNAME_NO_FUNCTION_RETURNS = $0004; // Disable expansion of return type for primary declaration
- {$EXTERNALSYM UNDNAME_NO_FUNCTION_RETURNS}
- UNDNAME_NO_ALLOCATION_MODEL = $0008; // Disable expansion of the declaration model
- {$EXTERNALSYM UNDNAME_NO_ALLOCATION_MODEL}
- UNDNAME_NO_ALLOCATION_LANGUAGE = $0010; // Disable expansion of the declaration language specifier
- {$EXTERNALSYM UNDNAME_NO_ALLOCATION_LANGUAGE}
- UNDNAME_NO_MS_THISTYPE = $0020; // NYI Disable expansion of MS keywords on the 'this' type for primary declaration
- {$EXTERNALSYM UNDNAME_NO_MS_THISTYPE}
- UNDNAME_NO_CV_THISTYPE = $0040; // NYI Disable expansion of CV modifiers on the 'this' type for primary declaration
- {$EXTERNALSYM UNDNAME_NO_CV_THISTYPE}
- UNDNAME_NO_THISTYPE = $0060; // Disable all modifiers on the 'this' type
- {$EXTERNALSYM UNDNAME_NO_THISTYPE}
- UNDNAME_NO_ACCESS_SPECIFIERS = $0080; // Disable expansion of access specifiers for members
- {$EXTERNALSYM UNDNAME_NO_ACCESS_SPECIFIERS}
- UNDNAME_NO_THROW_SIGNATURES = $0100; // Disable expansion of 'throw-signatures' for functions and pointers to functions
- {$EXTERNALSYM UNDNAME_NO_THROW_SIGNATURES}
- UNDNAME_NO_MEMBER_TYPE = $0200; // Disable expansion of 'static' or 'virtual'ness of members
- {$EXTERNALSYM UNDNAME_NO_MEMBER_TYPE}
- UNDNAME_NO_RETURN_UDT_MODEL = $0400; // Disable expansion of MS model for UDT returns
- {$EXTERNALSYM UNDNAME_NO_RETURN_UDT_MODEL}
- UNDNAME_32_BIT_DECODE = $0800; // Undecorate 32-bit decorated names
- {$EXTERNALSYM UNDNAME_32_BIT_DECODE}
- UNDNAME_NAME_ONLY = $1000; // Crack only the name for primary declaration;
- {$EXTERNALSYM UNDNAME_NAME_ONLY}
- // return just [scope::]name. Does expand template params
- UNDNAME_NO_ARGUMENTS = $2000; // Don't undecorate arguments to function
- {$EXTERNALSYM UNDNAME_NO_ARGUMENTS}
- UNDNAME_NO_SPECIAL_SYMS = $4000; // Don't undecorate special names (v-table, vcall, vector xxx, metatype, etc)
- {$EXTERNALSYM UNDNAME_NO_SPECIAL_SYMS}
- function UnDecorateSymbolName(DecoratedName: PCSTR; UnDecoratedName: PSTR;
- UndecoratedLength: DWORD; Flags: DWORD): DWORD; stdcall;
- {$EXTERNALSYM UnDecorateSymbolName}
- //
- // these values are used for synthesized file types
- // that can be passed in as image headers instead of
- // the standard ones from ntimage.h
- //
- const
- DBHHEADER_DEBUGDIRS = $1;
- {$EXTERNALSYM DBHHEADER_DEBUGDIRS}
- type
- _MODLOAD_DATA = record
- ssize: DWORD; // size of this struct
- ssig: DWORD; // signature identifying the passed data
- data: PVOID; // pointer to passed data
- size: DWORD; // size of passed data
- flags: DWORD; // options
- end;
- {$EXTERNALSYM _MODLOAD_DATA}
- MODLOAD_DATA = _MODLOAD_DATA;
- {$EXTERNALSYM MODLOAD_DATA}
- PMODLOAD_DATA = ^MODLOAD_DATA;
- {$EXTERNALSYM PMODLOAD_DATA}
- TModLoadData = MODLOAD_DATA;
- PModLoadData = PMODLOAD_DATA;
- //
- // StackWalking API
- //
- type
- ADDRESS_MODE = (
- AddrMode1616,
- AddrMode1632,
- AddrModeReal,
- AddrModeFlat);
- {$EXTERNALSYM ADDRESS_MODE}
- TAddressMode = ADDRESS_MODE;
- LPADDRESS64 = ^ADDRESS64;
- {$EXTERNALSYM PADDRESS64}
- _tagADDRESS64 = record
- Offset: DWORD64;
- Segment: WORD;
- Mode: ADDRESS_MODE;
- end;
- {$EXTERNALSYM _tagADDRESS64}
- ADDRESS64 = _tagADDRESS64;
- {$EXTERNALSYM ADDRESS64}
- TAddress64 = ADDRESS64;
- PAddress64 = LPADDRESS64;
- LPADDRESS = ^ADDRESS;
- {$EXTERNALSYM PADDRESS}
- _tagADDRESS = record
- Offset: DWORD;
- Segment: WORD;
- Mode: ADDRESS_MODE;
- end;
- {$EXTERNALSYM _tagADDRESS}
- ADDRESS = _tagADDRESS;
- {$EXTERNALSYM ADDRESS}
- TAddress = ADDRESS;
- PAddress = LPADDRESS;
- procedure Address32To64(a32: LPADDRESS; a64: LPADDRESS64);
- {$EXTERNALSYM Address32To64}
- procedure Address64To32(a64: LPADDRESS64; a32: LPADDRESS);
- {$EXTERNALSYM Address64To32}
- //
- // This structure is included in the STACKFRAME structure,
- // and is used to trace through usermode callbacks in a thread's
- // kernel stack. The values must be copied by the kernel debugger
- // from the DBGKD_GET_VERSION and WAIT_STATE_CHANGE packets.
- //
- //
- // New KDHELP structure for 64 bit system support.
- // This structure is preferred in new code.
- //
- type
- PKDHELP64 = ^KDHELP64;
- {$EXTERNALSYM PKDHELP64}
- _KDHELP64 = record
- //
- // address of kernel thread object, as provided in the
- // WAIT_STATE_CHANGE packet.
- //
- Thread: DWORD64;
- //
- // offset in thread object to pointer to the current callback frame
- // in kernel stack.
- //
- ThCallbackStack: DWORD;
- //
- // offset in thread object to pointer to the current callback backing
- // store frame in kernel stack.
- //
- ThCallbackBStore: DWORD;
- //
- // offsets to values in frame:
- //
- // address of next callback frame
- NextCallback: DWORD;
- // address of saved frame pointer (if applicable)
- FramePointer: DWORD;
- //
- // Address of the kernel function that calls out to user mode
- //
- KiCallUserMode: DWORD64;
- //
- // Address of the user mode dispatcher function
- //
- KeUserCallbackDispatcher: DWORD64;
- //
- // Lowest kernel mode address
- //
- SystemRangeStart: DWORD64;
- Reserved: array [0..7] of DWORD64;
- end;
- {$EXTERNALSYM _KDHELP64}
- KDHELP64 = _KDHELP64;
- {$EXTERNALSYM KDHELP64}
- TKdHelp64 = KDHELP64;
- //PKdHelp64 = PKDHELP64;
- PKDHELP = ^KDHELP;
- {$EXTERNALSYM PKDHELP}
- _KDHELP = record
- //
- // address of kernel thread object, as provided in the
- // WAIT_STATE_CHANGE packet.
- //
- Thread: DWORD;
- //
- // offset in thread object to pointer to the current callback frame
- // in kernel stack.
- //
- ThCallbackStack: DWORD;
- //
- // offsets to values in frame:
- //
- // address of next callback frame
- NextCallback: DWORD;
- // address of saved frame pointer (if applicable)
- FramePointer: DWORD;
- //
- // Address of the kernel function that calls out to user mode
- //
- KiCallUserMode: DWORD;
- //
- // Address of the user mode dispatcher function
- //
- KeUserCallbackDispatcher: DWORD;
- //
- // Lowest kernel mode address
- //
- SystemRangeStart: DWORD;
- //
- // offset in thread object to pointer to the current callback backing
- // store frame in kernel stack.
- //
- ThCallbackBStore: DWORD;
- Reserved: array [0..7] of DWORD;
- end;
- {$EXTERNALSYM _KDHELP}
- KDHELP = _KDHELP;
- {$EXTERNALSYM KDHELP}
- TKdHelp = KDHELP;
- //PKdHelp = PKDHELP;
- procedure KdHelp32To64(p32: PKDHELP; p64: PKDHELP64);
- {$EXTERNALSYM KdHelp32To64}
- type
- LPSTACKFRAME64 = ^STACKFRAME64;
- {$EXTERNALSYM LPSTACKFRAME64}
- _tagSTACKFRAME64 = record
- AddrPC: ADDRESS64; // program counter
- AddrReturn: ADDRESS64; // return address
- AddrFrame: ADDRESS64; // frame pointer
- AddrStack: ADDRESS64; // stack pointer
- AddrBStore: ADDRESS64; // backing store pointer
- FuncTableEntry: PVOID; // pointer to pdata/fpo or NULL
- Params: array [0..3] of DWORD64; // possible arguments to the function
- Far: BOOL; // WOW far call
- Virtual: BOOL; // is this a virtual frame?
- Reserved: array [0..2] of DWORD64;
- KdHelp: KDHELP64;
- end;
- {$EXTERNALSYM _tagSTACKFRAME64}
- STACKFRAME64 = _tagSTACKFRAME64;
- {$EXTERNALSYM STACKFRAME64}
- TStackFrame64 = STACKFRAME64;
- PStackFrame64 = LPSTACKFRAME64;
- LPSTACKFRAME = ^STACKFRAME;
- {$EXTERNALSYM LPSTACKFRAME}
- _tagSTACKFRAME = record
- AddrPC: ADDRESS; // program counter
- AddrReturn: ADDRESS; // return address
- AddrFrame: ADDRESS; // frame pointer
- AddrStack: ADDRESS; // stack pointer
- FuncTableEntry: PVOID; // pointer to pdata/fpo or NULL
- Params: array [0..3] of DWORD; // possible arguments to the function
- Far: BOOL; // WOW far call
- Virtual: BOOL; // is this a virtual frame?
- Reserved: array [0..2] of DWORD;
- KdHelp: KDHELP;
- AddrBStore: ADDRESS; // backing store pointer
- end;
- {$EXTERNALSYM _tagSTACKFRAME}
- STACKFRAME = _tagSTACKFRAME;
- {$EXTERNALSYM STACKFRAME}
- TStackFrame = STACKFRAME;
- PStackFrame = LPSTACKFRAME;
- PREAD_PROCESS_MEMORY_ROUTINE64 = function(hProcess: HANDLE; qwBaseAddress: DWORD64;
- lpBuffer: PVOID; nSize: DWORD; var lpNumberOfBytesRead: DWORD): BOOL; stdcall;
- {$EXTERNALSYM PREAD_PROCESS_MEMORY_ROUTINE64}
- PReadProcessMemoryRoutine64 = PREAD_PROCESS_MEMORY_ROUTINE64;
- PFUNCTION_TABLE_ACCESS_ROUTINE64 = function(hProcess: HANDLE;
- AddrBase: DWORD64): PVOID; stdcall;
- {$EXTERNALSYM PFUNCTION_TABLE_ACCESS_ROUTINE64}
- PFunctionTableAccessRoutine64 = PFUNCTION_TABLE_ACCESS_ROUTINE64;
- PGET_MODULE_BASE_ROUTINE64 = function(hProcess: HANDLE;
- Address: DWORD64): DWORD64; stdcall;
- {$EXTERNALSYM PGET_MODULE_BASE_ROUTINE64}
- PGetModuleBaseRoutine64 = PGET_MODULE_BASE_ROUTINE64;
- PTRANSLATE_ADDRESS_ROUTINE64 = function(hProcess: HANDLE; hThread: HANDLE;
- const lpaddr: ADDRESS64): DWORD64; stdcall;
- {$EXTERNALSYM PTRANSLATE_ADDRESS_ROUTINE64}
- PTranslateAddressRoutine64 = PTRANSLATE_ADDRESS_ROUTINE64;
- function StackWalk64(MachineType: DWORD; hProcess: HANDLE; hThread: HANDLE;
- var StackFrame: STACKFRAME64; ContextRecord: PVOID;
- ReadMemoryRoutine: PREAD_PROCESS_MEMORY_ROUTINE64;
- FunctionTableAccessRoutine: PFUNCTION_TABLE_ACCESS_ROUTINE64;
- GetModuleBaseRoutine: PGET_MODULE_BASE_ROUTINE64;
- TranslateAddress: PTRANSLATE_ADDRESS_ROUTINE64): BOOL; stdcall;
- {$EXTERNALSYM StackWalk64}
- type
- PREAD_PROCESS_MEMORY_ROUTINE = function(hProcess: HANDLE;
- lpBaseAddress: DWORD; lpBuffer: PVOID; nSize: DWORD;
- var lpNumberOfBytesRead: DWORD): BOOL; stdcall;
- {$EXTERNALSYM PREAD_PROCESS_MEMORY_ROUTINE}
- PreadProcessMemoryRoutine = PREAD_PROCESS_MEMORY_ROUTINE;
- PFUNCTION_TABLE_ACCESS_ROUTINE = function(hProcess: HANDLE; AddrBase: DWORD): PVOID; stdcall;
- {$EXTERNALSYM PFUNCTION_TABLE_ACCESS_ROUTINE}
- PFunctionTableAccessRoutine = PFUNCTION_TABLE_ACCESS_ROUTINE;
- PGET_MODULE_BASE_ROUTINE = function(hProcess: HANDLE; Address: DWORD): DWORD; stdcall;
- {$EXTERNALSYM PGET_MODULE_BASE_ROUTINE}
- PGetModuleBaseRoutine = PGET_MODULE_BASE_ROUTINE;
- PTRANSLATE_ADDRESS_ROUTINE = function(hProcess: HANDLE; hThread: HANDLE;
- const lpaddr: ADDRESS): DWORD; stdcall;
- {$EXTERNALSYM PTRANSLATE_ADDRESS_ROUTINE}
- PTranslateAddressRoutine = PTRANSLATE_ADDRESS_ROUTINE;
- function StackWalk(MachineType: DWORD; hProcess: HANDLE; hThread: HANDLE;
- var StackFrame: STACKFRAME; ContextRecord: PVOID;
- ReadMemoryRoutine: PREAD_PROCESS_MEMORY_ROUTINE;
- FunctionTableAccessRoutine: PFUNCTION_TABLE_ACCESS_ROUTINE;
- GetModuleBaseRoutine: PGET_MODULE_BASE_ROUTINE;
- TranslateAddress: PTRANSLATE_ADDRESS_ROUTINE): BOOL; stdcall;
- {$EXTERNALSYM StackWalk}
- const
- API_VERSION_NUMBER = 9;
- {$EXTERNALSYM API_VERSION_NUMBER}
- type
- LPAPI_VERSION = ^API_VERSION;
- {$EXTERNALSYM LPAPI_VERSION}
- API_VERSION = record
- MajorVersion: USHORT;
- MinorVersion: USHORT;
- Revision: USHORT;
- Reserved: USHORT;
- end;
- {$EXTERNALSYM API_VERSION}
- TApiVersion = API_VERSION;
- PApiVersion = LPAPI_VERSION;
- function ImagehlpApiVersion: LPAPI_VERSION; stdcall;
- {$EXTERNALSYM ImagehlpApiVersion}
- function ImagehlpApiVersionEx(const AppVersion: API_VERSION): LPAPI_VERSION; stdcall;
- {$EXTERNALSYM ImagehlpApiVersionEx}
- function GetTimestampForLoadedLibrary(Module: HMODULE): DWORD; stdcall;
- {$EXTERNALSYM GetTimestampForLoadedLibrary}
- //
- // typedefs for function pointers
- //
- type
- PSYM_ENUMMODULES_CALLBACK64 = function(ModuleName: PSTR; BaseOfDll: DWORD64;
- UserContext: PVOID): BOOL; stdcall;
- {$EXTERNALSYM PSYM_ENUMMODULES_CALLBACK64}
- PSymEnummodulesCallback64 = PSYM_ENUMMODULES_CALLBACK64;
- PSYM_ENUMSYMBOLS_CALLBACK64 = function(SymbolName: PSTR; SymbolAddress: DWORD64;
- SymbolSize: ULONG; UserContext: PVOID): BOOL; stdcall;
- {$EXTERNALSYM PSYM_ENUMSYMBOLS_CALLBACK64}
- PSymEnumsymbolsCallback64 = PSYM_ENUMSYMBOLS_CALLBACK64;
- PSYM_ENUMSYMBOLS_CALLBACK64W = function(SymbolName: PWSTR;
- SymbolAddress: DWORD64; SymbolSize: ULONG; UserContext: PVOID): BOOL; stdcall;
- {$EXTERNALSYM PSYM_ENUMSYMBOLS_CALLBACK64W}
- PSymEnumsymbolsCallback64w = PSYM_ENUMSYMBOLS_CALLBACK64W;
- PENUMLOADED_MODULES_CALLBACK64 = function(ModuleName: PSTR;
- ModuleBase: DWORD64; ModuleSize: ULONG; UserContext: PVOID): BOOL; stdcall;
- {$EXTERNALSYM PENUMLOADED_MODULES_CALLBACK64}
- PSnumloadedModulesCallback64 = PENUMLOADED_MODULES_CALLBACK64;
- PSYMBOL_REGISTERED_CALLBACK64 = function(hProcess: HANDLE; ActionCode: ULONG;
- CallbackData: ULONG64; UserContext: ULONG64): BOOL; stdcall;
- {$EXTERNALSYM PSYMBOL_REGISTERED_CALLBACK64}
- PSymbolRegisteredCallback64 = PSYMBOL_REGISTERED_CALLBACK64;
- PSYMBOL_FUNCENTRY_CALLBACK = function(hProcess: HANDLE; AddrBase: DWORD;
- UserContext: PVOID): PVOID; stdcall;
- {$EXTERNALSYM PSYMBOL_FUNCENTRY_CALLBACK}
- PSymbolFuncentryCallback = PSYMBOL_FUNCENTRY_CALLBACK;
- PSYMBOL_FUNCENTRY_CALLBACK64 = function(hProcess: HANDLE; AddrBase: ULONG64;
- UserContext: ULONG64): PVOID; stdcall;
- {$EXTERNALSYM PSYMBOL_FUNCENTRY_CALLBACK64}
- PSymbolFuncentryCallback64 = PSYMBOL_FUNCENTRY_CALLBACK64;
- PSYM_ENUMMODULES_CALLBACK = function(ModuleName: PSTR; BaseOfDll: ULONG;
- UserContext: PVOID): BOOL; stdcall;
- {$EXTERNALSYM PSYM_ENUMMODULES_CALLBACK}
- PSymEnummodulesCallback = PSYM_ENUMMODULES_CALLBACK;
- PSYM_ENUMSYMBOLS_CALLBACK = function(SymbolName: PSTR; SymbolAddress: ULONG;
- SymbolSize: ULONG; UserContext: PVOID): BOOL; stdcall;
- {$EXTERNALSYM PSYM_ENUMSYMBOLS_CALLBACK}
- PSymEnumsymbolsCallback = PSYM_ENUMSYMBOLS_CALLBACK;
- PSYM_ENUMSYMBOLS_CALLBACKW = function(SymbolName: PWSTR; SymbolAddress: ULONG;
- SymbolSize: ULONG; UserContext: PVOID): BOOL; stdcall;
- {$EXTERNALSYM PSYM_ENUMSYMBOLS_CALLBACKW}
- PSymEnumsymbolsCallbackw = PSYM_ENUMSYMBOLS_CALLBACKW;
- PENUMLOADED_MODULES_CALLBACK = function(ModuleName: PSTR; ModuleBase: ULONG;
- ModuleSize: ULONG; UserContext: PVOID): BOOL; stdcall;
- {$EXTERNALSYM PENUMLOADED_MODULES_CALLBACK}
- PEnumloadedModulesCallback = PENUMLOADED_MODULES_CALLBACK;
- PSYMBOL_REGISTERED_CALLBACK = function(hProcess: HANDLE; ActionCode: ULONG;
- CallbackData: PVOID; UserContext: PVOID): BOOL; stdcall;
- {$EXTERNALSYM PSYMBOL_REGISTERED_CALLBACK}
- PSymbolRegisteredCallback = PSYMBOL_REGISTERED_CALLBACK;
- //
- // flags found in SYMBOL_INFO.Flags
- //
- const
- SYMFLAG_VALUEPRESENT = $00000001;
- {$EXTERNALSYM SYMFLAG_VALUEPRESENT}
- SYMFLAG_REGISTER = $00000008;
- {$EXTERNALSYM SYMFLAG_REGISTER}
- SYMFLAG_REGREL = $00000010;
- {$EXTERNALSYM SYMFLAG_REGREL}
- SYMFLAG_FRAMEREL = $00000020;
- {$EXTERNALSYM SYMFLAG_FRAMEREL}
- SYMFLAG_PARAMETER = $00000040;
- {$EXTERNALSYM SYMFLAG_PARAMETER}
- SYMFLAG_LOCAL = $00000080;
- {$EXTERNALSYM SYMFLAG_LOCAL}
- SYMFLAG_CONSTANT = $00000100;
- {$EXTERNALSYM SYMFLAG_CONSTANT}
- SYMFLAG_EXPORT = $00000200;
- {$EXTERNALSYM SYMFLAG_EXPORT}
- SYMFLAG_FORWARDER = $00000400;
- {$EXTERNALSYM SYMFLAG_FORWARDER}
- SYMFLAG_FUNCTION = $00000800;
- {$EXTERNALSYM SYMFLAG_FUNCTION}
- SYMFLAG_VIRTUAL = $00001000;
- {$EXTERNALSYM SYMFLAG_VIRTUAL}
- SYMFLAG_THUNK = $00002000;
- {$EXTERNALSYM SYMFLAG_THUNK}
- SYMFLAG_TLSREL = $00004000;
- {$EXTERNALSYM SYMFLAG_TLSREL}
- //
- // symbol type enumeration
- //
- type
- SYM_TYPE = (
- SymNone,
- SymCoff,
- SymCv,
- SymPdb,
- SymExport,
- SymDeferred,
- SymSym, // .sym file
- SymDia,
- SymVirtual,
- NumSymTypes);
- {$EXTERNALSYM SYM_TYPE}
- TSymType = SYM_TYPE;
- //
- // symbol data structure
- //
- PIMAGEHLP_SYMBOL64 = ^IMAGEHLP_SYMBOL64;
- {$EXTERNALSYM PIMAGEHLP_SYMBOL64}
- _IMAGEHLP_SYMBOL64 = record
- SizeOfStruct: DWORD; // set to sizeof(IMAGEHLP_SYMBOL64)
- Address: DWORD64; // virtual address including dll base address
- Size: DWORD; // estimated size of symbol, can be zero
- Flags: DWORD; // info about the symbols, see the SYMF defines
- MaxNameLength: DWORD; // maximum size of symbol name in 'Name'
- Name: array [0..0] of CHAR; // symbol name (null terminated string)
- end;
- {$EXTERNALSYM _IMAGEHLP_SYMBOL64}
- IMAGEHLP_SYMBOL64 = _IMAGEHLP_SYMBOL64;
- {$EXTERNALSYM IMAGEHLP_SYMBOL64}
- TImageHlpSymbol64 = IMAGEHLP_SYMBOL64;
- PImageHlpSymbol64 = PIMAGEHLP_SYMBOL64;
- _IMAGEHLP_SYMBOL64_PACKAGE = record
- sym: IMAGEHLP_SYMBOL64;
- name: array [0..MAX_SYM_NAME] of CHAR;
- end;
- {$EXTERNALSYM _IMAGEHLP_SYMBOL64_PACKAGE}
- IMAGEHLP_SYMBOL64_PACKAGE = _IMAGEHLP_SYMBOL64_PACKAGE;
- {$EXTERNALSYM IMAGEHLP_SYMBOL64_PACKAGE}
- PIMAGEHLP_SYMBOL64_PACKAGE = ^IMAGEHLP_SYMBOL64_PACKAGE;
- {$EXTERNALSYM PIMAGEHLP_SYMBOL64_PACKAGE}
- TImageHlpSymbol64Package = IMAGEHLP_SYMBOL64_PACKAGE;
- PImageHlpSymbol64Package = PIMAGEHLP_SYMBOL64_PACKAGE;
- //#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)
- //
- //#define IMAGEHLP_SYMBOL IMAGEHLP_SYMBOL64
- //#define PIMAGEHLP_SYMBOL PIMAGEHLP_SYMBOL64
- //#define IMAGEHLP_SYMBOL_PACKAGE IMAGEHLP_SYMBOL64_PACKAGE
- //#define PIMAGEHLP_SYMBOL_PACKAGE PIMAGEHLP_SYMBOL64_PACKAGE
- //
- //#else
- PIMAGEHLP_SYMBOL = ^IMAGEHLP_SYMBOL;
- {$EXTERNALSYM PIMAGEHLP_SYMBOL}
- _IMAGEHLP_SYMBOL = record
- SizeOfStruct: DWORD; // set to sizeof(IMAGEHLP_SYMBOL)
- Address: DWORD; // virtual address including dll base address
- Size: DWORD; // estimated size of symbol, can be zero
- Flags: DWORD; // info about the symbols, see the SYMF defines
- MaxNameLength: DWORD; // maximum size of symbol name in 'Name'
- Name: array [0..0] of CHAR; // symbol name (null terminated string)
- end;
- {$EXTERNALSYM _IMAGEHLP_SYMBOL}
- IMAGEHLP_SYMBOL = _IMAGEHLP_SYMBOL;
- {$EXTERNALSYM IMAGEHLP_SYMBOL}
- TImageHlpSymbol = IMAGEHLP_SYMBOL;
- PImageHlpSymbol = PIMAGEHLP_SYMBOL;
- _IMAGEHLP_SYMBOL_PACKAGE = record
- sym: IMAGEHLP_SYMBOL;
- name: array [0..MAX_SYM_NAME] of CHAR;
- end;
- {$EXTERNALSYM _IMAGEHLP_SYMBOL_PACKAGE}
- IMAGEHLP_SYMBOL_PACKAGE = _IMAGEHLP_SYMBOL_PACKAGE;
- {$EXTERNALSYM IMAGEHLP_SYMBOL_PACKAGE}
- PIMAGEHLP_SYMBOL_PACKAGE = ^IMAGEHLP_SYMBOL_PACKAGE;
- {$EXTERNALSYM PIMAGEHLP_SYMBOL_PACKAGE}
- TImageHlpSymbolPackage = IMAGEHLP_SYMBOL_PACKAGE;
- PImageHlpSymbolPackage = PIMAGEHLP_SYMBOL_PACKAGE;
- //#endif
- //
- // module data structure
- //
- PIMAGEHLP_MODULE64 = ^IMAGEHLP_MODULE64;
- {$EXTERNALSYM PIMAGEHLP_MODULE64}
- _IMAGEHLP_MODULE64 = record
- SizeOfStruct: DWORD; // set to sizeof(IMAGEHLP_MODULE64)
- BaseOfImage: DWORD64; // base load address of module
- ImageSize: DWORD; // virtual size of the loaded module
- TimeDateStamp: DWORD; // date/time stamp from pe header
- CheckSum: DWORD; // checksum from the pe header
- NumSyms: DWORD; // number of symbols in the symbol table
- SymType: SYM_TYPE; // type of symbols loaded
- ModuleName: array [0..3] of CHAR; // module name
- ImageName: array [0..255] of CHAR; // image name
- LoadedImageName: array [0..255] of CHAR; // symbol file name
- end;
- {$EXTERNALSYM _IMAGEHLP_MODULE64}
- IMAGEHLP_MODULE64 = _IMAGEHLP_MODULE64;
- {$EXTERNALSYM IMAGEHLP_MODULE64}
- TImageHlpModule64 = IMAGEHLP_MODULE64;
- PImageHlpModule64 = PIMAGEHLP_MODULE64;
- PIMAGEHLP_MODULEW64 = ^IMAGEHLP_MODULEW64;
- {$EXTERNALSYM PIMAGEHLP_MODULEW64}
- _IMAGEHLP_MODULE64W = record
- SizeOfStruct: DWORD; // set to sizeof(IMAGEHLP_MODULE64)
- BaseOfImage: DWORD64; // base load address of module
- ImageSize: DWORD; // virtual size of the loaded module
- TimeDateStamp: DWORD; // date/time stamp from pe header
- CheckSum: DWORD; // checksum from the pe header
- NumSyms: DWORD; // number of symbols in the symbol table
- SymType: SYM_TYPE; // type of symbols loaded
- ModuleName: array [0..31] of WCHAR; // module name
- ImageName: array [0..255] of WCHAR; // image name
- LoadedImageName: array [0..255] of WCHAR; // symbol file name
- end;
- {$EXTERNALSYM _IMAGEHLP_MODULE64W}
- IMAGEHLP_MODULEW64 = _IMAGEHLP_MODULE64W;
- {$EXTERNALSYM IMAGEHLP_MODULEW64}
- TImageHlpModuleW64 = IMAGEHLP_MODULEW64;
- PImageHlpModuleW64 = PIMAGEHLP_MODULEW64;
- PIMAGEHLP_MODULE = ^IMAGEHLP_MODULE;
- {$EXTERNALSYM PIMAGEHLP_MODULE}
- _IMAGEHLP_MODULE = record
- SizeOfStruct: DWORD; // set to sizeof(IMAGEHLP_MODULE)
- BaseOfImage: DWORD; // base load address of module
- ImageSize: DWORD; // virtual size of the loaded module
- TimeDateStamp: DWORD; // date/time stamp from pe header
- CheckSum: DWORD; // checksum from the pe header
- NumSyms: DWORD; // number of symbols in the symbol table
- SymType: SYM_TYPE; // type of symbols loaded
- ModuleName: array [0..31] of CHAR; // module name
- ImageName: array [0..255] of CHAR; // image name
- LoadedImageName: array [0..255] of CHAR; // symbol file name
- end;
- {$EXTERNALSYM _IMAGEHLP_MODULE}
- IMAGEHLP_MODULE = _IMAGEHLP_MODULE;
- {$EXTERNALSYM IMAGEHLP_MODULE}
- TImageHlpModule = IMAGEHLP_MODULE;
- PImageHlpModule = PIMAGEHLP_MODULE;
- PIMAGEHLP_MODULEW = ^IMAGEHLP_MODULEW;
- {$EXTERNALSYM PIMAGEHLP_MODULEW}
- _IMAGEHLP_MODULEW = record
- SizeOfStruct: DWORD; // set to sizeof(IMAGEHLP_MODULE)
- BaseOfImage: DWORD; // base load address of module
- ImageSize: DWORD; // virtual size of the loaded module
- TimeDateStamp: DWORD; // date/time stamp from pe header
- CheckSum: DWORD; // checksum from the pe header
- NumSyms: DWORD; // number of symbols in the symbol table
- SymType: SYM_TYPE; // type of symbols loaded
- ModuleName: array [0..31] of WCHAR; // module name
- ImageName: array [0..255] of WCHAR; // image name
- LoadedImageName: array [0..255] of WCHAR; // symbol file name
- end;
- {$EXTERNALSYM _IMAGEHLP_MODULEW}
- IMAGEHLP_MODULEW = _IMAGEHLP_MODULEW;
- {$EXTERNALSYM IMAGEHLP_MODULEW}
- TImageHlpModuleW = IMAGEHLP_MODULEW;
- PImageHlpModuleW = PIMAGEHLP_MODULEW;
- //
- // source file line data structure
- //
- PIMAGEHLP_LINE64 = ^IMAGEHLP_LINE64;
- {$EXTERNALSYM PIMAGEHLP_LINE64}
- _IMAGEHLP_LINE64 = record
- SizeOfStruct: DWORD; // set to sizeof(IMAGEHLP_LINE64)
- Key: PVOID; // internal
- LineNumber: DWORD; // line number in file
- FileName: PCHAR; // full filename
- Address: DWORD64; // first instruction of line
- end;
- {$EXTERNALSYM _IMAGEHLP_LINE64}
- IMAGEHLP_LINE64 = _IMAGEHLP_LINE64;
- {$EXTERNALSYM IMAGEHLP_LINE64}
- TImageHlpLine64 = IMAGEHLP_LINE64;
- PImageHlpLine64 = PIMAGEHLP_LINE64;
- PIMAGEHLP_LINE = ^IMAGEHLP_LINE;
- {$EXTERNALSYM PIMAGEHLP_LINE}
- _IMAGEHLP_LINE = record
- SizeOfStruct: DWORD; // set to sizeof(IMAGEHLP_LINE)
- Key: PVOID; // internal
- LineNumber: DWORD; // line number in file
- FileName: PCHAR; // full filename
- Address: DWORD; // first instruction of line
- end;
- {$EXTERNALSYM _IMAGEHLP_LINE}
- IMAGEHLP_LINE = _IMAGEHLP_LINE;
- {$EXTERNALSYM IMAGEHLP_LINE}
- TImageHlpLine = IMAGEHLP_LINE;
- PImageHlpLine = PIMAGEHLP_LINE;
- //
- // source file structure
- //
- type
- _SOURCEFILE = record
- ModBase: DWORD64; // base address of loaded module
- FileName: PCHAR; // full filename of source
- end;
- {$EXTERNALSYM _SOURCEFILE}
- SOURCEFILE = _SOURCEFILE;
- {$EXTERNALSYM SOURCEFILE}
- PSOURCEFILE = ^SOURCEFILE;
- {$EXTERNALSYM PSOURCEFILE}
- TSourceFile = SOURCEFILE;
- //
- // data structures used for registered symbol callbacks
- //
- const
- CBA_DEFERRED_SYMBOL_LOAD_START = $00000001;
- {$EXTERNALSYM CBA_DEFERRED_SYMBOL_LOAD_START}
- CBA_DEFERRED_SYMBOL_LOAD_COMPLETE = $00000002;
- {$EXTERNALSYM CBA_DEFERRED_SYMBOL_LOAD_COMPLETE}
- CBA_DEFERRED_SYMBOL_LOAD_FAILURE = $00000003;
- {$EXTERNALSYM CBA_DEFERRED_SYMBOL_LOAD_FAILURE}
- CBA_SYMBOLS_UNLOADED = $00000004;
- {$EXTERNALSYM CBA_SYMBOLS_UNLOADED}
- CBA_DUPLICATE_SYMBOL = $00000005;
- {$EXTERNALSYM CBA_DUPLICATE_SYMBOL}
- CBA_READ_MEMORY = $00000006;
- {$EXTERNALSYM CBA_READ_MEMORY}
- CBA_DEFERRED_SYMBOL_LOAD_CANCEL = $00000007;
- {$EXTERNALSYM CBA_DEFERRED_SYMBOL_LOAD_CANCEL}
- CBA_SET_OPTIONS = $00000008;
- {$EXTERNALSYM CBA_SET_OPTIONS}
- CBA_EVENT = $00000010;
- {$EXTERNALSYM CBA_EVENT}
- CBA_DEFERRED_SYMBOL_LOAD_PARTIAL = $00000020;
- {$EXTERNALSYM CBA_DEFERRED_SYMBOL_LOAD_PARTIAL}
- CBA_DEBUG_INFO = $10000000;
- {$EXTERNALSYM CBA_DEBUG_INFO}
- type
- PIMAGEHLP_CBA_READ_MEMORY = ^IMAGEHLP_CBA_READ_MEMORY;
- {$EXTERNALSYM PIMAGEHLP_CBA_READ_MEMORY}
- _IMAGEHLP_CBA_READ_MEMORY = record
- addr: DWORD64; // address to read from
- buf: PVOID; // buffer to read to
- bytes: DWORD; // amount of bytes to read
- bytesread: LPDWORD; // pointer to store amount of bytes read
- end;
- {$EXTERNALSYM _IMAGEHLP_CBA_READ_MEMORY}
- IMAGEHLP_CBA_READ_MEMORY = _IMAGEHLP_CBA_READ_MEMORY;
- {$EXTERNALSYM IMAGEHLP_CBA_READ_MEMORY}
- TImageHlpCbaReadMemory = IMAGEHLP_CBA_READ_MEMORY;
- PImageHlpCbaReadMemory = PIMAGEHLP_CBA_READ_MEMORY;
- const
- sevInfo = 0;
- {$EXTERNALSYM sevInfo}
- sevProblem = 1;
- {$EXTERNALSYM sevProblem}
- sevAttn = 2;
- {$EXTERNALSYM sevAttn}
- sevFatal = 3;
- {$EXTERNALSYM sevFatal}
- sevMax = 4; // unused
- {$EXTERNALSYM sevMax}
- type
- _IMAGEHLP_CBA_EVENT = record
- severity: DWORD; // values from sevInfo to sevFatal
- code: DWORD; // numerical code IDs the error
- desc: PCHAR; // may contain a text description of the error
- object_: PVOID; // value dependant upon the error code
- end;
- {$EXTERNALSYM _IMAGEHLP_CBA_EVENT}
- IMAGEHLP_CBA_EVENT = _IMAGEHLP_CBA_EVENT;
- {$EXTERNALSYM IMAGEHLP_CBA_EVENT}
- PIMAGEHLP_CBA_EVENT = ^IMAGEHLP_CBA_EVENT;
- {$EXTERNALSYM PIMAGEHLP_CBA_EVENT}
- TImageHlpCbaEvent = IMAGEHLP_CBA_EVENT;
- PImageHlpCbaEvent = PIMAGEHLP_CBA_EVENT;
- PIMAGEHLP_DEFERRED_SYMBOL_LOAD64 = ^IMAGEHLP_DEFERRED_SYMBOL_LOAD64;
- {$EXTERNALSYM PIMAGEHLP_DEFERRED_SYMBOL_LOAD64}
- _IMAGEHLP_DEFERRED_SYMBOL_LOAD64 = record
- SizeOfStruct: DWORD; // set to sizeof(IMAGEHLP_DEFERRED_SYMBOL_LOAD64)
- BaseOfImage: DWORD64; // base load address of module
- CheckSum: DWORD; // checksum from the pe header
- TimeDateStamp: DWORD; // date/time stamp from pe header
- FileName: array [0..MAX_PATH - 1] of CHAR; // symbols file or image name
- Reparse: ByteBool; // load failure reparse
- hFile: HANDLE; // file handle, if passed
- Flags: DWORD; //
- end;
- {$EXTERNALSYM _IMAGEHLP_DEFERRED_SYMBOL_LOAD64}
- IMAGEHLP_DEFERRED_SYMBOL_LOAD64 = _IMAGEHLP_DEFERRED_SYMBOL_LOAD64;
- {$EXTERNALSYM IMAGEHLP_DEFERRED_SYMBOL_LOAD64}
- TImageHlpDeferredSymbolLoad64 = IMAGEHLP_DEFERRED_SYMBOL_LOAD64;
- PImageHlpDeferredSymbolLoad64 = PIMAGEHLP_DEFERRED_SYMBOL_LOAD64;
- const
- DSLFLAG_MISMATCHED_PDB = $1;
- {$EXTERNALSYM DSLFLAG_MISMATCHED_PDB}
- DSLFLAG_MISMATCHED_DBG = $2;
- {$EXTERNALSYM DSLFLAG_MISMATCHED_DBG}
- type
- PIMAGEHLP_DEFERRED_SYMBOL_LOAD = ^IMAGEHLP_DEFERRED_SYMBOL_LOAD;
- {$EXTERNALSYM PIMAGEHLP_DEFERRED_SYMBOL_LOAD}
- _IMAGEHLP_DEFERRED_SYMBOL_LOAD = record
- SizeOfStruct: DWORD; // set to sizeof(IMAGEHLP_DEFERRED_SYMBOL_LOAD)
- BaseOfImage: DWORD; // base load address of module
- CheckSum: DWORD; // checksum from the pe header
- TimeDateStamp: DWORD; // date/time stamp from pe header
- FileName: array [0..MAX_PATH - 1] of CHAR; // symbols file or image name
- Reparse: ByteBool; // load failure reparse
- hFile: HANDLE; // file handle, if passed
- end;
- {$EXTERNALSYM _IMAGEHLP_DEFERRED_SYMBOL_LOAD}
- IMAGEHLP_DEFERRED_SYMBOL_LOAD = _IMAGEHLP_DEFERRED_SYMBOL_LOAD;
- {$EXTERNALSYM IMAGEHLP_DEFERRED_SYMBOL_LOAD}
- TImageHlpDeferredSymbolLoad = IMAGEHLP_DEFERRED_SYMBOL_LOAD;
- PImageHlpDeferredSymbolLoad = PIMAGEHLP_DEFERRED_SYMBOL_LOAD;
- PIMAGEHLP_DUPLICATE_SYMBOL64 = ^IMAGEHLP_DUPLICATE_SYMBOL64;
- {$EXTERNALSYM PIMAGEHLP_DUPLICATE_SYMBOL64}
- _IMAGEHLP_DUPLICATE_SYMBOL64 = record
- SizeOfStruct: DWORD; // set to sizeof(IMAGEHLP_DUPLICATE_SYMBOL64)
- NumberOfDups: DWORD; // number of duplicates in the Symbol array
- Symbol: PIMAGEHLP_SYMBOL64; // array of duplicate symbols
- SelectedSymbol: DWORD; // symbol selected (-1 to start)
- end;
- {$EXTERNALSYM _IMAGEHLP_DUPLICATE_SYMBOL64}
- IMAGEHLP_DUPLICATE_SYMBOL64 = _IMAGEHLP_DUPLICATE_SYMBOL64;
- {$EXTERNALSYM IMAGEHLP_DUPLICATE_SYMBOL64}
- TImageHlpDuplicateSymbol64 = IMAGEHLP_DUPLICATE_SYMBOL64;
- PImageHlpDuplicateSymbol64 = PIMAGEHLP_DUPLICATE_SYMBOL64;
- PIMAGEHLP_DUPLICATE_SYMBOL = ^IMAGEHLP_DUPLICATE_SYMBOL;
- {$EXTERNALSYM PIMAGEHLP_DUPLICATE_SYMBOL}
- _IMAGEHLP_DUPLICATE_SYMBOL = record
- SizeOfStruct: DWORD; // set to sizeof(IMAGEHLP_DUPLICATE_SYMBOL)
- NumberOfDups: DWORD; // number of duplicates in the Symbol array
- Symbol: PIMAGEHLP_SYMBOL; // array of duplicate symbols
- SelectedSymbol: DWORD; // symbol selected (-1 to start)
- end;
- {$EXTERNALSYM _IMAGEHLP_DUPLICATE_SYMBOL}
- IMAGEHLP_DUPLICATE_SYMBOL = _IMAGEHLP_DUPLICATE_SYMBOL;
- {$EXTERNALSYM IMAGEHLP_DUPLICATE_SYMBOL}
- TImageHlpDuplicateSymbol = IMAGEHLP_DUPLICATE_SYMBOL;
- PImageHlpDuplicateSymbol = PIMAGEHLP_DUPLICATE_SYMBOL;
- // If dbghelp ever needs to display graphical UI, it will use this as the parent window.
- //BOOL
- //SymSetParentWindow(
- // HWND hwnd
- // );
- //
- // options that are set/returned by SymSetOptions() & SymGetOptions()
- // these are used as a mask
- //
- const
- SYMOPT_CASE_INSENSITIVE = $00000001;
- {$EXTERNALSYM SYMOPT_CASE_INSENSITIVE}
- SYMOPT_UNDNAME = $00000002;
- {$EXTERNALSYM SYMOPT_UNDNAME}
- SYMOPT_DEFERRED_LOADS = $00000004;
- {$EXTERNALSYM SYMOPT_DEFERRED_LOADS}
- SYMOPT_NO_CPP = $00000008;
- {$EXTERNALSYM SYMOPT_NO_CPP}
- SYMOPT_LOAD_LINES = $00000010;
- {$EXTERNALSYM SYMOPT_LOAD_LINES}
- SYMOPT_OMAP_FIND_NEAREST = $00000020;
- {$EXTERNALSYM SYMOPT_OMAP_FIND_NEAREST}
- SYMOPT_LOAD_ANYTHING = $00000040;
- {$EXTERNALSYM SYMOPT_LOAD_ANYTHING}
- SYMOPT_IGNORE_CVREC = $00000080;
- {$EXTERNALSYM SYMOPT_IGNORE_CVREC}
- SYMOPT_NO_UNQUALIFIED_LOADS = $00000100;
- {$EXTERNALSYM SYMOPT_NO_UNQUALIFIED_LOADS}
- SYMOPT_FAIL_CRITICAL_ERRORS = $00000200;
- {$EXTERNALSYM SYMOPT_FAIL_CRITICAL_ERRORS}
- SYMOPT_EXACT_SYMBOLS = $00000400;
- {$EXTERNALSYM SYMOPT_EXACT_SYMBOLS}
- SYMOPT_ALLOW_ABSOLUTE_SYMBOLS = $00000800;
- {$EXTERNALSYM SYMOPT_ALLOW_ABSOLUTE_SYMBOLS}
- SYMOPT_IGNORE_NT_SYMPATH = $00001000;
- {$EXTERNALSYM SYMOPT_IGNORE_NT_SYMPATH}
- SYMOPT_INCLUDE_32BIT_MODULES = $00002000;
- {$EXTERNALSYM SYMOPT_INCLUDE_32BIT_MODULES}
- SYMOPT_PUBLICS_ONLY = $00004000;
- {$EXTERNALSYM SYMOPT_PUBLICS_ONLY}
- SYMOPT_NO_PUBLICS = $00008000;
- {$EXTERNALSYM SYMOPT_NO_PUBLICS}
- SYMOPT_AUTO_PUBLICS = $00010000;
- {$EXTERNALSYM SYMOPT_AUTO_PUBLICS}
- SYMOPT_NO_IMAGE_SEARCH = $00020000;
- {$EXTERNALSYM SYMOPT_NO_IMAGE_SEARCH}
- SYMOPT_SECURE = $00040000;
- {$EXTERNALSYM SYMOPT_SECURE}
- SYMOPT_DEBUG = DWORD($80000000);
- {$EXTERNALSYM SYMOPT_DEBUG}
- function SymSetOptions(SymOptions: DWORD): DWORD; stdcall;
- {$EXTERNALSYM SymSetOptions}
- function SymGetOptions: DWORD; stdcall;
- {$EXTERNALSYM SymGetOptions}
- function SymCleanup(hProcess: HANDLE): BOOL; stdcall;
- {$EXTERNALSYM SymCleanup}
- function SymMatchString(string_, expression: LPSTR; fCase: BOOL): BOOL; stdcall;
- {$EXTERNALSYM SymMatchString}
- type
- PSYM_ENUMSOURCFILES_CALLBACK = function(pSourceFile: PSOURCEFILE; UserContext: PVOID): BOOL; stdcall;
- {$EXTERNALSYM PSYM_ENUMSOURCFILES_CALLBACK}
- PSymEnumSourceFilesCallback = PSYM_ENUMSOURCFILES_CALLBACK;
- function SymEnumSourceFiles(hProcess: HANDLE; ModBase: ULONG64; Mask: LPSTR;
- cbSrcFiles: PSYM_ENUMSOURCFILES_CALLBACK; UserContext: PVOID): BOOL; stdcall;
- {$EXTERNALSYM SymEnumSourceFiles}
- function SymEnumerateModules64(hProcess: HANDLE; EnumModulesCallback: PSYM_ENUMMODULES_CALLBACK64;
- UserContext: PVOID): BOOL; stdcall;
- {$EXTERNALSYM SymEnumerateModules64}
- function SymEnumerateModules(hProcess: HANDLE; EnumModulesCallback: PSYM_ENUMMODULES_CALLBACK;
- UserContext: PVOID): BOOL; stdcall;
- {$EXTERNALSYM SymEnumerateModules}
- function SymEnumerateSymbols64(hProcess: HANDLE; BaseOfDll: DWORD64;
- EnumSymbolsCallback: PSYM_ENUMSYMBOLS_CALLBACK64; UserContext: PVOID): BOOL; stdcall;
- {$EXTERNALSYM SymEnumerateSymbols64}
- function SymEnumerateSymbolsW64(hProcess: HANDLE; BaseOfDll: DWORD64;
- EnumSymbolsCallback: PSYM_ENUMSYMBOLS_CALLBACK64W; UserContext: PVOID): BOOL; stdcall;
- {$EXTERNALSYM SymEnumerateSymbolsW64}
- function SymEnumerateSymbols(hProcess: HANDLE; BaseOfDll: DWORD;
- EnumSymbolsCallback: PSYM_ENUMSYMBOLS_CALLBACK; UserContext: PVOID): BOOL; stdcall;
- {$EXTERNALSYM SymEnumerateSymbols}
- function SymEnumerateSymbolsW(hProcess: HANDLE; BaseOfDll: DWORD;
- EnumSymbolsCallback: PSYM_ENUMSYMBOLS_CALLBACKW; UserContext: PVOID): BOOL; stdcall;
- {$EXTERNALSYM SymEnumerateSymbolsW}
- function EnumerateLoadedModules64(hProcess: HANDLE; EnumLoadedModulesCallback: PENUMLOADED_MODULES_CALLBACK64;
- UserContext: PVOID): BOOL; stdcall;
- {$EXTERNALSYM EnumerateLoadedModules64}
- function EnumerateLoadedModules(hProcess: HANDLE; EnumLoadedModulesCallback: PENUMLOADED_MODULES_CALLBACK;
- UserContext: PVOID): BOOL; stdcall;
- {$EXTERNALSYM EnumerateLoadedModules}
- function SymFunctionTableAccess64(hProcess: HANDLE; AddrBase: DWORD64): PVOID; stdcall;
- {$EXTERNALSYM SymFunctionTableAccess64}
- function SymFunctionTableAccess(hProcess: HANDLE; AddrBase: DWORD): PVOID; stdcall;
- {$EXTERNALSYM SymFunctionTableAccess}
- function SymGetModuleInfo64(hProcess: HANDLE; qwAddr: DWORD64;
- var ModuleInfo: IMAGEHLP_MODULE64): BOOL; stdcall;
- {$EXTERNALSYM SymGetModuleInfo64}
- function SymGetModuleInfoW64(hProcess: HANDLE; qwAddr: DWORD64;
- var ModuleInfo: IMAGEHLP_MODULEW64): BOOL; stdcall;
- {$EXTERNALSYM SymGetModuleInfoW64}
- function SymGetModuleInfo(hProcess: HANDLE; dwAddr: DWORD;
- var ModuleInfo: IMAGEHLP_MODULE): BOOL; stdcall;
- {$EXTERNALSYM SymGetModuleInfo}
- function SymGetModuleInfoW(hProcess: HANDLE; dwAddr: DWORD;
- var ModuleInfo: IMAGEHLP_MODULEW): BOOL; stdcall;
- {$EXTERNALSYM SymGetModuleInfoW}
- function SymGetModuleBase64(hProcess: HANDLE; qwAddr: DWORD64): DWORD64; stdcall;
- {$EXTERNALSYM SymGetModuleBase64}
- function SymGetModuleBase(hProcess: HANDLE; dwAddr: DWORD): DWORD; stdcall;
- {$EXTERNALSYM SymGetModuleBase}
- function SymGetSymNext64(hProcess: HANDLE; var Symbol: IMAGEHLP_SYMBOL64): BOOL; stdcall;
- {$EXTERNALSYM SymGetSymNext64}
- function SymGetSymNext(hProcess: HANDLE; var Symbol: IMAGEHLP_SYMBOL): BOOL; stdcall;
- {$EXTERNALSYM SymGetSymNext}
- function SymGetSymPrev64(hProcess: HANDLE; var Symbol: IMAGEHLP_SYMBOL64): BOOL; stdcall;
- {$EXTERNALSYM SymGetSymPrev64}
- function SymGetSymPrev(hProcess: HANDLE; var Symbol: IMAGEHLP_SYMBOL): BOOL; stdcall;
- {$EXTERNALSYM SymGetSymPrev}
- function SymGetLineFromAddr64(hProcess: HANDLE; qwAddr: DWORD64;
- var pdwDisplacement: DWORD; var Line64: IMAGEHLP_LINE64): BOOL; stdcall;
- {$EXTERNALSYM SymGetLineFromAddr64}
- function SymGetLineFromAddr(hProcess: HANDLE; dwAddr: DWORD;
- var pdwDisplacement: DWORD; var Line: IMAGEHLP_LINE): BOOL; stdcall;
- {$EXTERNALSYM SymGetLineFromAddr}
- function SymGetLineFromName64(hProcess: HANDLE; ModuleName: PSTR; FileName: PSTR;
- dwLineNumber: DWORD; var plDisplacement: LONG; var Line: IMAGEHLP_LINE64): BOOL; stdcall;
- {$EXTERNALSYM SymGetLineFromName64}
- function SymGetLineFromName(hProcess: HANDLE; ModuleName: PSTR; FileName: PSTR;
- dwLineNumber: DWORD; var plDisplacement: LONG; var Line: IMAGEHLP_LINE): BOOL; stdcall;
- {$EXTERNALSYM SymGetLineFromName}
- function SymGetLineNext64(hProcess: HANDLE; var Line: IMAGEHLP_LINE64): BOOL; stdcall;
- {$EXTERNALSYM SymGetLineNext64}
- function SymGetLineNext(hProcess: HANDLE; var Line: IMAGEHLP_LINE): BOOL; stdcall;
- {$EXTERNALSYM SymGetLineNext}
- function SymGetLinePrev64(hProcess: HANDLE; var Line: IMAGEHLP_LINE64): BOOL; stdcall;
- {$EXTERNALSYM SymGetLinePrev64}
- function SymGetLinePrev(hProcess: HANDLE; var Line: IMAGEHLP_LINE): BOOL; stdcall;
- {$EXTERNALSYM SymGetLinePrev}
- function SymMatchFileName(FileName, Match: PSTR; var FileNameStop, MatchStop: PSTR): BOOL; stdcall;
- {$EXTERNALSYM SymMatchFileName}
- function SymInitialize(hProcess: HANDLE; UserSearchPath: PSTR; fInvadeProcess: BOOL): BOOL; stdcall;
- {$EXTERNALSYM SymInitialize}
- function SymGetSearchPath(hProcess: HANDLE; SearchPath: PSTR; SearchPathLength: DWORD): BOOL; stdcall;
- {$EXTERNALSYM SymGetSearchPath}
- function SymSetSearchPath(hProcess: HANDLE; SearchPath: PSTR): BOOL; stdcall;
- {$EXTERNALSYM SymSetSearchPath}
- function SymLoadModule64(hProcess, hFile: HANDLE; ImageName, ModuleName: PSTR;
- BaseOfDll: DWORD64; SizeOfDll: DWORD): DWORD64; stdcall;
- {$EXTERNALSYM SymLoadModule64}
- const
- SLMFLAG_VIRTUAL = $1;
- {$EXTERNALSYM SLMFLAG_VIRTUAL}
- function SymLoadModuleEx(hProcess, hFile: HANDLE; ImageName, ModuleName: PSTR; BaseOfDll: DWORD64;
- DllSize: DWORD; Data: PMODLOAD_DATA; Flag: DWORD): DWORD64; stdcall;
- {$EXTERNALSYM SymLoadModuleEx}
- function SymLoadModule(hProcess, hFile: HANDLE; ImageName, ModuleName: PSTR;
- BaseOfDll: DWORD; SizeOfDll: DWORD): DWORD; stdcall;
- {$EXTERNALSYM SymLoadModule}
- function SymUnloadModule64(hProcess: HANDLE; BaseOfDll: DWORD64): BOOL; stdcall;
- {$EXTERNALSYM SymUnloadModule64}
- function SymUnloadModule(hProcess: HANDLE; BaseOfDll: DWORD): BOOL; stdcall;
- {$EXTERNALSYM SymUnloadModule}
- function SymUnDName64(const sym: IMAGEHLP_SYMBOL64; UnDecName: PSTR;
- UnDecNameLength: DWORD): BOOL; stdcall;
- {$EXTERNALSYM SymUnDName64}
- function SymUnDName(const sym: IMAGEHLP_SYMBOL; UnDecName: PSTR;
- UnDecNameLength: DWORD): BOOL; stdcall;
- {$EXTERNALSYM SymUnDName}
- function SymRegisterCallback64(hProcess: HANDLE; CallbackFunction: PSYMBOL_REGISTERED_CALLBACK64;
- UserContext: ULONG64): BOOL; stdcall;
- {$EXTERNALSYM SymRegisterCallback64}
- function SymRegisterFunctionEntryCallback64(hProcess: HANDLE; CallbackFunction: PSYMBOL_FUNCENTRY_CALLBACK64;
- UserContext: ULONG64): BOOL; stdcall;
- {$EXTERNALSYM SymRegisterFunctionEntryCallback64}
- function SymRegisterCallback(hProcess: HANDLE; CallbackFunction: PSYMBOL_REGISTERED_CALLBACK;
- UserContext: PVOID): BOOL; stdcall;
- {$EXTERNALSYM SymRegisterCallback}
- function SymRegisterFunctionEntryCallback(hProcess: HANDLE; CallbackFunction: PSYMBOL_FUNCENTRY_CALLBACK;
- UserContext: PVOID): BOOL; stdcall;
- {$EXTERNALSYM SymRegisterFunctionEntryCallback}
- type
- PIMAGEHLP_SYMBOL_SRC = ^IMAGEHLP_SYMBOL_SRC;
- {$EXTERNALSYM PIMAGEHLP_SYMBOL_SRC}
- _IMAGEHLP_SYMBOL_SRC = record
- sizeofstruct: DWORD;
- type_: DWORD;
- file_: array [0..MAX_PATH - 1] of Char;
- end;
- {$EXTERNALSYM _IMAGEHLP_SYMBOL_SRC}
- IMAGEHLP_SYMBOL_SRC = _IMAGEHLP_SYMBOL_SRC;
- {$EXTERNALSYM IMAGEHLP_SYMBOL_SRC}
- TImageHlpSymbolSrc = IMAGEHLP_SYMBOL_SRC;
- PImageHlpSymbolSrc = PIMAGEHLP_SYMBOL_SRC;
- PMODULE_TYPE_INFO = ^MODULE_TYPE_INFO;
- {$EXTERNALSYM PMODULE_TYPE_INFO}
- _MODULE_TYPE_INFO = record
- dataLength: USHORT;
- leaf: USHORT;
- data: array [0..0] of BYTE;
- end;
- {$EXTERNALSYM _MODULE_TYPE_INFO}
- MODULE_TYPE_INFO = _MODULE_TYPE_INFO;
- {$EXTERNALSYM MODULE_TYPE_INFO}
- TModuleTypeInfo = MODULE_TYPE_INFO;
- PModuleTypeInfo = PMODULE_TYPE_INFO;
- type
- PSYMBOL_INFO = ^SYMBOL_INFO;
- {$EXTERNALSYM PSYMBOL_INFO}
- _SYMBOL_INFO = record
- SizeOfStruct: ULONG;
- TypeIndex: ULONG; // Type Index of symbol
- Reserved: array [0..1] of ULONG64;
- Info: ULONG;
- Size: ULONG;
- ModBase: ULONG64; // Base Address of module comtaining this symbol
- Flags: ULONG;
- Value: ULONG64; // Value of symbol, ValuePresent should be 1
- Address: ULONG64; // Address of symbol including base address of module
- Register_: ULONG; // register holding value or pointer to value
- Scope: ULONG; // scope of the symbol
- Tag: ULONG; // pdb classification
- NameLen: ULONG; // Actual length of name
- MaxNameLen: ULONG;
- Name: array [0..0] of CHAR; // Name of symbol
- end;
- {$EXTERNALSYM _SYMBOL_INFO}
- SYMBOL_INFO = _SYMBOL_INFO;
- {$EXTERNALSYM SYMBOL_INFO}
- TSymbolInfo = SYMBOL_INFO;
- PSymbolInfo = PSYMBOL_INFO;
- _SYMBOL_INFO_PACKAGE = record
- si: SYMBOL_INFO;
- name: array [0..MAX_SYM_NAME] of CHAR;
- end;
- {$EXTERNALSYM _SYMBOL_INFO_PACKAGE}
- SYMBOL_INFO_PACKAGE = _SYMBOL_INFO_PACKAGE;
- {$EXTERNALSYM SYMBOL_INFO_PACKAGE}
- PSYMBOL_INFO_PACKAGE = ^SYMBOL_INFO_PACKAGE;
- {$EXTERNALSYM PSYMBOL_INFO_PACKAGE}
- TSymbolInfoPackage = SYMBOL_INFO_PACKAGE;
- PSymbolInfoPackage = PSYMBOL_INFO_PACKAGE;
- PIMAGEHLP_STACK_FRAME = ^IMAGEHLP_STACK_FRAME;
- {$EXTERNALSYM PIMAGEHLP_STACK_FRAME}
- _IMAGEHLP_STACK_FRAME = record
- InstructionOffset: ULONG64;
- ReturnOffset: ULONG64;
- FrameOffset: ULONG64;
- StackOffset: ULONG64;
- BackingStoreOffset: ULONG64;
- FuncTableEntry: ULONG64;
- Params: array [0..3] of ULONG64;
- Reserved: array [0..4] of ULONG64;
- Virtual_: BOOL;
- Reserved2: ULONG;
- end;
- {$EXTERNALSYM _IMAGEHLP_STACK_FRAME}
- IMAGEHLP_STACK_FRAME = _IMAGEHLP_STACK_FRAME;
- {$EXTERNALSYM IMAGEHLP_STACK_FRAME}
- TImageHlpStackFrame = IMAGEHLP_STACK_FRAME;
- PImageHlpStackFrame = PIMAGEHLP_STACK_FRAME;
- IMAGEHLP_CONTEXT = LPVOID;
- {$EXTERNALSYM IMAGEHLP_CONTEXT}
- PIMAGEHLP_CONTEXT = ^IMAGEHLP_CONTEXT;
- {$EXTERNALSYM PIMAGEHLP_CONTEXT}
- TImageHlpContext = IMAGEHLP_CONTEXT;
- PImageHlpContext = PIMAGEHLP_CONTEXT;
- function SymSetContext(hProcess: HANDLE; StackFrame: PIMAGEHLP_STACK_FRAME; Context: PIMAGEHLP_CONTEXT): BOOL; stdcall;
- {$EXTERNALSYM SymSetContext}
- function SymFromAddr(hProcess: HANDLE; Address: DWORD64; Displacement: PDWORD64; Symbol: PSYMBOL_INFO): BOOL; stdcall;
- {$EXTERNALSYM SymFromAddr}
- // While SymFromName will provide a symbol from a name,
- // SymEnumSymbols can provide the same matching information
- // for ALL symbols with a matching name, even regular
- // expressions. That way you can search across modules
- // and differentiate between identically named symbols.
- function SymFromName(hProcess: HANDLE; Name: LPSTR; Symbol: PSYMBOL_INFO): BOOL; stdcall;
- {$EXTERNALSYM SymFromName}
- type
- PSYM_ENUMERATESYMBOLS_CALLBACK = function(pSymInfo: PSYMBOL_INFO; SymbolSize: ULONG; UserContext: PVOID): BOOL; stdcall;
- {$EXTERNALSYM PSYM_ENUMERATESYMBOLS_CALLBACK}
- PSymEnumerateSymbolsCallback = PSYM_ENUMERATESYMBOLS_CALLBACK;
- function SymEnumSymbols(hProcess: HANDLE; BaseOfDll: ULONG64; Mask: PCSTR; EnumSymbolsCallback: PSYM_ENUMERATESYMBOLS_CALLBACK; UserContext: PVOID): BOOL; stdcall;
- {$EXTERNALSYM SymEnumSymbols}
- function SymEnumSymbolsForAddr(hProcess: HANDLE; Address: DWORD64;
- EnumSymbolsCallback: PSYM_ENUMERATESYMBOLS_CALLBACK; UserContext: PVOID): BOOL; stdcall;
- {$EXTERNALSYM SymEnumSymbolsForAddr}
- type
- _IMAGEHLP_SYMBOL_TYPE_INFO = (
- TI_GET_SYMTAG,
- TI_GET_SYMNAME,
- TI_GET_LENGTH,
- TI_GET_TYPE,
- TI_GET_TYPEID,
- TI_GET_BASETYPE,
- TI_GET_ARRAYINDEXTYPEID,
- TI_FINDCHILDREN,
- TI_GET_DATAKIND,
- TI_GET_ADDRESSOFFSET,
- TI_GET_OFFSET,
- TI_GET_VALUE,
- TI_GET_COUNT,
- TI_GET_CHILDRENCOUNT,
- TI_GET_BITPOSITION,
- TI_GET_VIRTUALBASECLASS,
- TI_GET_VIRTUALTABLESHAPEID,
- TI_GET_VIRTUALBASEPOINTEROFFSET,
- TI_GET_CLASSPARENTID,
- TI_GET_NESTED,
- TI_GET_SYMINDEX,
- TI_GET_LEXICALPARENT,
- TI_GET_ADDRESS,
- TI_GET_THISADJUST,
- TI_GET_UDTKIND,
- TI_IS_EQUIV_TO,
- TI_GET_CALLING_CONVENTION);
- {$EXTERNALSYM _IMAGEHLP_SYMBOL_TYPE_INFO}
- IMAGEHLP_SYMBOL_TYPE_INFO = _IMAGEHLP_SYMBOL_TYPE_INFO;
- {$EXTERNALSYM IMAGEHLP_SYMBOL_TYPE_INFO}
- TImageHlpSymbolTypeInfo = IMAGEHLP_SYMBOL_TYPE_INFO;
- PTI_FINDCHILDREN_PARAMS = ^TI_FINDCHILDREN_PARAMS;
- {$EXTERNALSYM PTI_FINDCHILDREN_PARAMS}
- _TI_FINDCHILDREN_PARAMS = record
- Count: ULONG;
- Start: ULONG;
- ChildId: array [0..0] of ULONG;
- end;
- {$EXTERNALSYM _TI_FINDCHILDREN_PARAMS}
- TI_FINDCHILDREN_PARAMS = _TI_FINDCHILDREN_PARAMS;
- {$EXTERNALSYM TI_FINDCHILDREN_PARAMS}
- TTiFindChildrenParams = TI_FINDCHILDREN_PARAMS;
- PTiFindChildrenParams = PTI_FINDCHILDREN_PARAMS;
- function SymGetTypeInfo(hProcess: HANDLE; ModBase: DWORD64; TypeId: ULONG; GetType: IMAGEHLP_SYMBOL_TYPE_INFO; pInfo: PVOID): BOOL; stdcall;
- {$EXTERNALSYM SymGetTypeInfo}
- function SymEnumTypes(hProcess: HANDLE; BaseOfDll: ULONG64; EnumSymbolsCallback: PSYM_ENUMERATESYMBOLS_CALLBACK; UserContext: PVOID): BOOL; stdcall;
- {$EXTERNALSYM SymEnumTypes}
- function SymGetTypeFromName(hProcess: HANDLE; BaseOfDll: ULONG64; Name: LPSTR; Symbol: PSYMBOL_INFO): BOOL; stdcall;
- {$EXTERNALSYM SymGetTypeFromName}
- function SymAddSymbol(hProcess: HANDLE; BaseOfDll: ULONG64; Name: PCSTR; Address: DWORD64; Size, Flags: DWORD): BOOL; stdcall;
- {$EXTERNALSYM SymAddSymbol}
- function SymDeleteSymbol(hProcess: HANDLE; BaseOfDll: ULONG64; Name: PCSTR; Address: DWORD64; Flags: DWORD): BOOL; stdcall;
- {$EXTERNALSYM SymDeleteSymbol}
- //
- // Full user-mode dump creation.
- //
- type
- PDBGHELP_CREATE_USER_DUMP_CALLBACK = function(DataType: DWORD; var Data: PVOID; DataLength: LPDWORD; UserData: PVOID): BOOL; stdcall;
- {$EXTERNALSYM PDBGHELP_CREATE_USER_DUMP_CALLBACK}
- PDbgHelpCreateUserDumpCallback = PDBGHELP_CREATE_USER_DUMP_CALLBACK;
- function DbgHelpCreateUserDump(FileName: LPSTR; Callback: PDBGHELP_CREATE_USER_DUMP_CALLBACK; UserData: PVOID): BOOL; stdcall;
- {$EXTERNALSYM DbgHelpCreateUserDump}
- function DbgHelpCreateUserDumpW(FileName: LPWSTR; Callback: PDBGHELP_CREATE_USER_DUMP_CALLBACK; UserData: PVOID): BOOL; stdcall;
- {$EXTERNALSYM DbgHelpCreateUserDumpW}
- // -----------------------------------------------------------------
- // The following 4 legacy APIs are fully supported, but newer
- // ones are recommended. SymFromName and SymFromAddr provide
- // much more detailed info on the returned symbol.
- function SymGetSymFromAddr64(hProcess: HANDLE; qwAddr: DWORD64; pdwDisplacement: PDWORD64; Symbol: PIMAGEHLP_SYMBOL64): BOOL; stdcall;
- {$EXTERNALSYM SymGetSymFromAddr64}
- function SymGetSymFromAddr(hProcess: HANDLE; dwAddr: DWORD; pdwDisplacement: PDWORD; Symbol: PIMAGEHLP_SYMBOL): BOOL; stdcall;
- {$EXTERNALSYM SymGetSymFromAddr}
- // While following two APIs will provide a symbol from a name,
- // SymEnumSymbols can provide the same matching information
- // for ALL symbols with a matching name, even regular
- // expressions. That way you can search across modules
- // and differentiate between identically named symbols.
- function SymGetSymFromName64(hProcess: HANDLE; Name: PSTR; Symbol: PIMAGEHLP_SYMBOL64): BOOL; stdcall;
- {$EXTERNALSYM SymGetSymFromName64}
- function SymGetSymFromName(hProcess: HANDLE; Name: PSTR; Symbol: PIMAGEHLP_SYMBOL): BOOL; stdcall;
- {$EXTERNALSYM SymGetSymFromName}
- // -----------------------------------------------------------------
- // The following APIs exist only for backwards compatibility
- // with a pre-release version documented in an MSDN release.
- // You should use SymFindFileInPath if you want to maintain
- // future compatibility.
- function FindFileInPath(hprocess: HANDLE; SearchPath: LPSTR; FileName: LPSTR; id: PVOID; two: DWORD; three: DWORD; flags: DWORD; FilePath: LPSTR): BOOL; stdcall;
- {$EXTERNALSYM FindFileInPath}
- // You should use SymFindFileInPath if you want to maintain
- // future compatibility.
- function FindFileInSearchPath(hprocess: HANDLE; SearchPath: LPSTR; FileName: LPSTR; one: DWORD; two: DWORD; three: DWORD; FilePath: LPSTR): BOOL; stdcall;
- {$EXTERNALSYM FindFileInSearchPath}
- function SymEnumSym(hProcess: HANDLE; BaseOfDll: ULONG64; EnumSymbolsCallback: PSYM_ENUMERATESYMBOLS_CALLBACK; UserContext: PVOID): BOOL; stdcall;
- {$EXTERNALSYM SymEnumSym}
- // These values should not be used.
- // They have been replaced by SYMFLAG_ values.
- const
- SYMF_OMAP_GENERATED = $00000001;
- SYMF_OMAP_MODIFIED = $00000002;
- SYMF_REGISTER = $00000008;
- SYMF_REGREL = $00000010;
- SYMF_FRAMEREL = $00000020;
- SYMF_PARAMETER = $00000040;
- SYMF_LOCAL = $00000080;
- SYMF_CONSTANT = $00000100;
- SYMF_EXPORT = $00000200;
- SYMF_FORWARDER = $00000400;
- SYMF_FUNCTION = $00000800;
- SYMF_VIRTUAL = $00001000;
- SYMF_THUNK = $00002000;
- SYMF_TLSREL = $00004000;
- // These values should also not be used.
- // They have been replaced by SYMFLAG_ values.
- IMAGEHLP_SYMBOL_INFO_VALUEPRESENT = 1;
- IMAGEHLP_SYMBOL_INFO_REGISTER = SYMF_REGISTER; // 0x0008
- IMAGEHLP_SYMBOL_INFO_REGRELATIVE = SYMF_REGREL; // 0x0010
- IMAGEHLP_SYMBOL_INFO_FRAMERELATIVE = SYMF_FRAMEREL; // 0x0020
- IMAGEHLP_SYMBOL_INFO_PARAMETER = SYMF_PARAMETER; // 0x0040
- IMAGEHLP_SYMBOL_INFO_LOCAL = SYMF_LOCAL; // 0x0080
- IMAGEHLP_SYMBOL_INFO_CONSTANT = SYMF_CONSTANT; // 0x0100
- IMAGEHLP_SYMBOL_FUNCTION = SYMF_FUNCTION; // 0x0800
- IMAGEHLP_SYMBOL_VIRTUAL = SYMF_VIRTUAL; // 0x1000
- IMAGEHLP_SYMBOL_THUNK = SYMF_THUNK; // 0x2000
- IMAGEHLP_SYMBOL_INFO_TLSRELATIVE = SYMF_TLSREL; // 0x4000
- const
- MINIDUMP_SIGNATURE = 'PMDM';
- {$EXTERNALSYM MINIDUMP_SIGNATURE}
- MINIDUMP_VERSION = 42899;
- {$EXTERNALSYM MINIDUMP_VERSION}
- type
- RVA = DWORD;
- {$EXTERNALSYM RVA}
- RVA64 = ULONG64;
- {$EXTERNALSYM RVA64}
- _MINIDUMP_LOCATION_DESCRIPTOR = record
- DataSize: ULONG32;
- Rva: RVA;
- end;
- {$EXTERNALSYM _MINIDUMP_LOCATION_DESCRIPTOR}
- MINIDUMP_LOCATION_DESCRIPTOR = _MINIDUMP_LOCATION_DESCRIPTOR;
- {$EXTERNALSYM MINIDUMP_LOCATION_DESCRIPTOR}
- TMinidumpLocationDescriptor = MINIDUMP_LOCATION_DESCRIPTOR;
- PMinidumpLocationDescriptor = ^MINIDUMP_LOCATION_DESCRIPTOR;
- _MINIDUMP_LOCATION_DESCRIPTOR64 = record
- DataSize: ULONG64;
- Rva: RVA64;
- end;
- {$EXTERNALSYM _MINIDUMP_LOCATION_DESCRIPTOR64}
- MINIDUMP_LOCATION_DESCRIPTOR64 = _MINIDUMP_LOCATION_DESCRIPTOR64;
- {$EXTERNALSYM MINIDUMP_LOCATION_DESCRIPTOR64}
- TMinidumpLocationDescriptor64 = MINIDUMP_LOCATION_DESCRIPTOR64;
- PMinidumpLocationDescriptor64 = ^MINIDUMP_LOCATION_DESCRIPTOR64;
- PMINIDUMP_MEMORY_DESCRIPTOR = ^MINIDUMP_MEMORY_DESCRIPTOR;
- {$EXTERNALSYM PMINIDUMP_MEMORY_DESCRIPTOR}
- _MINIDUMP_MEMORY_DESCRIPTOR = record
- StartOfMemoryRange: ULONG64;
- Memory: MINIDUMP_LOCATION_DESCRIPTOR;
- end;
- {$EXTERNALSYM _MINIDUMP_MEMORY_DESCRIPTOR}
- MINIDUMP_MEMORY_DESCRIPTOR = _MINIDUMP_MEMORY_DESCRIPTOR;
- {$EXTERNALSYM MINIDUMP_MEMORY_DESCRIPTOR}
- TMinidumpMemoryDescriptor = MINIDUMP_MEMORY_DESCRIPTOR;
- PMinidumpMemoryDescriptor = PMINIDUMP_MEMORY_DESCRIPTOR;
- // DESCRIPTOR64 is used for full-memory minidumps where
- // all of the raw memory is laid out sequentially at the
- // end of the dump. There is no need for individual RVAs
- // as the RVA is the base RVA plus the sum of the preceeding
- // data blocks.
- PMINIDUMP_MEMORY_DESCRIPTOR64 = ^MINIDUMP_MEMORY_DESCRIPTOR64;
- {$EXTERNALSYM PMINIDUMP_MEMORY_DESCRIPTOR64}
- _MINIDUMP_MEMORY_DESCRIPTOR64 = record
- StartOfMemoryRange: ULONG64;
- DataSize: ULONG64;
- end;
- {$EXTERNALSYM _MINIDUMP_MEMORY_DESCRIPTOR64}
- MINIDUMP_MEMORY_DESCRIPTOR64 = _MINIDUMP_MEMORY_DESCRIPTOR64;
- {$EXTERNALSYM MINIDUMP_MEMORY_DESCRIPTOR64}
- TMinidumpMemoryDescriptor64 = MINIDUMP_MEMORY_DESCRIPTOR64;
- PMinidumpMemoryDescriptor64 = PMINIDUMP_MEMORY_DESCRIPTOR64;
- PMINIDUMP_HEADER = ^MINIDUMP_HEADER;
- {$EXTERNALSYM PMINIDUMP_HEADER}
- _MINIDUMP_HEADER = record
- Signature: ULONG32;
- Version: ULONG32;
- NumberOfStreams: ULONG32;
- StreamDirectoryRva: RVA;
- CheckSum: ULONG32;
- U: record
- case Integer of
- 0: (Reserved: ULONG32);
- 1: (TimeDateStamp: ULONG32);
- end;
- Flags: ULONG64;
- end;
- {$EXTERNALSYM _MINIDUMP_HEADER}
- MINIDUMP_HEADER = _MINIDUMP_HEADER;
- {$EXTERNALSYM MINIDUMP_HEADER}
- TMinidumpHeader = MINIDUMP_HEADER;
- PMinidumpHeader = PMINIDUMP_HEADER;
- //
- // The MINIDUMP_HEADER field StreamDirectoryRva points to
- // an array of MINIDUMP_DIRECTORY structures.
- //
- PMINIDUMP_DIRECTORY = ^MINIDUMP_DIRECTORY;
- {$EXTERNALSYM PMINIDUMP_DIRECTORY}
- _MINIDUMP_DIRECTORY = record
- StreamType: ULONG32;
- Location: MINIDUMP_LOCATION_DESCRIPTOR;
- end;
- {$EXTERNALSYM _MINIDUMP_DIRECTORY}
- MINIDUMP_DIRECTORY = _MINIDUMP_DIRECTORY;
- {$EXTERNALSYM MINIDUMP_DIRECTORY}
- TMinidumpDirectory = MINIDUMP_DIRECTORY;
- PMinidumpDirectory = PMINIDUMP_DIRECTORY;
- PMINIDUMP_STRING = ^MINIDUMP_STRING;
- {$EXTERNALSYM PMINIDUMP_STRING}
- _MINIDUMP_STRING = record
- Length: ULONG32; // Length in bytes of the string
- Buffer: PWCHAR; // Variable size buffer
- end;
- {$EXTERNALSYM _MINIDUMP_STRING}
- MINIDUMP_STRING = _MINIDUMP_STRING;
- {$EXTERNALSYM MINIDUMP_STRING}
- TMinidumpString = MINIDUMP_STRING;
- PMinidumpString = PMINIDUMP_STRING;
- //
- // The MINIDUMP_DIRECTORY field StreamType may be one of the following types.
- // Types will be added in the future, so if a program reading the minidump
- // header encounters a stream type it does not understand it should ignore
- // the data altogether. Any tag above LastReservedStream will not be used by
- // the system and is reserved for program-specific information.
- //
- const
- UnusedStream = 0;
- {$EXTERNALSYM UnusedStream}
- ReservedStream0 = 1;
- {$EXTERNALSYM ReservedStream0}
- ReservedStream1 = 2;
- {$EXTERNALSYM ReservedStream1}
- ThreadListStream = 3;
- {$EXTERNALSYM ThreadListStream}
- ModuleListStream = 4;
- {$EXTERNALSYM ModuleListStream}
- MemoryListStream = 5;
- {$EXTERNALSYM MemoryListStream}
- ExceptionStream = 6;
- {$EXTERNALSYM ExceptionStream}
- SystemInfoStream = 7;
- {$EXTERNALSYM SystemInfoStream}
- ThreadExListStream = 8;
- {$EXTERNALSYM ThreadExListStream}
- Memory64ListStream = 9;
- {$EXTERNALSYM Memory64ListStream}
- CommentStreamA = 10;
- {$EXTERNALSYM CommentStreamA}
- CommentStreamW = 11;
- {$EXTERNALSYM CommentStreamW}
- HandleDataStream = 12;
- {$EXTERNALSYM HandleDataStream}
- FunctionTableStream = 13;
- {$EXTERNALSYM FunctionTableStream}
- UnloadedModuleListStream = 14;
- {$EXTERNALSYM UnloadedModuleListStream}
- MiscInfoStream = 15;
- {$EXTERNALSYM MiscInfoStream}
- LastReservedStream = $ffff;
- {$EXTERNALSYM LastReservedStream}
- type
- _MINIDUMP_STREAM_TYPE = DWORD;
- {$EXTERNALSYM MINIDUMP_STREAM_TYPE}
- MINIDUMP_STREAM_TYPE = _MINIDUMP_STREAM_TYPE;
- {$EXTERNALSYM _MINIDUMP_STREAM_TYPE}
- TMinidumpStreamType = MINIDUMP_STREAM_TYPE;
- //
- // The minidump system information contains processor and
- // Operating System specific information.
- //
- type
- _CPU_INFORMATION = record
- case Integer of
- //
- // X86 platforms use CPUID function to obtain processor information.
- //
- 0: (
- //
- // CPUID Subfunction 0, register EAX (VendorId [0]),
- // EBX (VendorId [1]) and ECX (VendorId [2]).
- //
- VendorId: array [0..2] of ULONG32;
- //
- // CPUID Subfunction 1, register EAX
- //
- VersionInformation: ULONG32;
- //
- // CPUID Subfunction 1, register EDX
- //
- FeatureInformation: ULONG32;
- //
- // CPUID, Subfunction 80000001, register EBX. This will only
- // be obtained if the vendor id is "AuthenticAMD".
- //
- AMDExtendedCpuFeatures: ULONG32);
- //
- // Non-x86 platforms use processor feature flags.
- //
- 1: (
- ProcessorFeatures: array [0..1] of ULONG64);
- end;
- _MINIDUMP_SYSTEM_INFO = record
- //
- // ProcessorArchitecture, ProcessorLevel and ProcessorRevision are all
- // taken from the SYSTEM_INFO structure obtained by GetSystemInfo( ).
- //
- ProcessorArchitecture: USHORT;
- ProcessorLevel: USHORT;
- ProcessorRevision: USHORT;
- U: record
- case Integer of
- 0: (Reserved0: USHORT);
- 1: (
- NumberOfProcessors: UCHAR;
- ProductType: UCHAR);
- end;
- //
- // MajorVersion, MinorVersion, BuildNumber, PlatformId and
- // CSDVersion are all taken from the OSVERSIONINFO structure
- // returned by GetVersionEx( ).
- //
- MajorVersion: ULONG32;
- MinorVersion: ULONG32;
- BuildNumber: ULONG32;
- PlatformId: ULONG32;
- //
- // RVA to a CSDVersion string in the string table.
- //
- CSDVersionRva: RVA;
- U2: record
- case Integer of
- 0: (Reserved1: ULONG32);
- 1: (
- SuiteMask: USHORT;
- Reserved2: USHORT);
- end;
-
- //
- // CPU information is obtained from one of two places.
- //
- // 1) On x86 computers, CPU_INFORMATION is obtained from the CPUID
- // instruction. You must use the X86 portion of the union for X86
- // computers.
- //
- // 2) On non-x86 architectures, CPU_INFORMATION is obtained by calling
- // IsProcessorFeatureSupported().
- //
- Cpu: _CPU_INFORMATION;
- end;
- {$EXTERNALSYM _MINIDUMP_SYSTEM_INFO}
- MINIDUMP_SYSTEM_INFO = _MINIDUMP_SYSTEM_INFO;
- {$EXTERNALSYM MINIDUMP_SYSTEM_INFO}
- PMINIDUMP_SYSTEM_INFO = ^MINIDUMP_SYSTEM_INFO;
- {$EXTERNALSYM PMINIDUMP_SYSTEM_INFO}
- TMinidumpSystemInfo = MINIDUMP_SYSTEM_INFO;
- PMinidumpSystemInfo = PMINIDUMP_SYSTEM_INFO;
- CPU_INFORMATION = _CPU_INFORMATION;
- {$EXTERNALSYM CPU_INFORMATION}
- PCPU_INFORMATION = CPU_INFORMATION;
- {$EXTERNALSYM PCPU_INFORMATION}
- //
- // The minidump thread contains standard thread
- // information plus an RVA to the memory for this
- // thread and an RVA to the CONTEXT structure for
- // this thread.
- //
- //
- // ThreadId must be 4 bytes on all architectures.
- //
- // C_ASSERT (sizeof ( ((PPROCESS_INFORMATION)0)->dwThreadId ) == 4);
- type
- PMINIDUMP_THREAD = ^MINIDUMP_THREAD;
- {$EXTERNALSYM PMINIDUMP_THREAD}
- _MINIDUMP_THREAD = record
- ThreadId: ULONG32;
- SuspendCount: ULONG32;
- PriorityClass: ULONG32;
- Priority: ULONG32;
- Teb: ULONG64;
- Stack: MINIDUMP_MEMORY_DESCRIPTOR;
- ThreadContext: MINIDUMP_LOCATION_DESCRIPTOR;
- end;
- {$EXTERNALSYM _MINIDUMP_THREAD}
- MINIDUMP_THREAD = _MINIDUMP_THREAD;
- {$EXTERNALSYM MINIDUMP_THREAD}
- TMinidumpThread = MINIDUMP_THREAD;
- PMinidumpThread = PMINIDUMP_THREAD;
- //
- // The thread list is a container of threads.
- //
- PMINIDUMP_THREAD_LIST = ^MINIDUMP_THREAD_LIST;
- {$EXTERNALSYM PMINIDUMP_THREAD_LIST}
- _MINIDUMP_THREAD_LIST = record
- NumberOfThreads: ULONG32;
- Threads: array [0..0] of MINIDUMP_THREAD;
- end;
- {$EXTERNALSYM _MINIDUMP_THREAD_LIST}
- MINIDUMP_THREAD_LIST = _MINIDUMP_THREAD_LIST;
- {$EXTERNALSYM MINIDUMP_THREAD_LIST}
- TMinidumpThreadList = MINIDUMP_THREAD_LIST;
- PMinidumpThreadList = PMINIDUMP_THREAD_LIST;
- PMINIDUMP_THREAD_EX = ^MINIDUMP_THREAD_EX;
- {$EXTERNALSYM PMINIDUMP_THREAD_EX}
- _MINIDUMP_THREAD_EX = record
- ThreadId: ULONG32;
- SuspendCount: ULONG32;
- PriorityClass: ULONG32;
- Priority: ULONG32;
- Teb: ULONG64;
- Stack: MINIDUMP_MEMORY_DESCRIPTOR;
- ThreadContext: MINIDUMP_LOCATION_DESCRIPTOR;
- BackingStore: MINIDUMP_MEMORY_DESCRIPTOR;
- end;
- {$EXTERNALSYM _MINIDUMP_THREAD_EX}
- MINIDUMP_THREAD_EX = _MINIDUMP_THREAD_EX;
- {$EXTERNALSYM MINIDUMP_THREAD_EX}
- TMinidumpThreadEx = MINIDUMP_THREAD_EX;
- PMinidumpThreadEx = PMINIDUMP_THREAD_EX;
- //
- // The thread list is a container of threads.
- //
- PMINIDUMP_THREAD_EX_LIST = ^MINIDUMP_THREAD_EX_LIST;
- {$EXTERNALSYM PMINIDUMP_THREAD_EX_LIST}
- _MINIDUMP_THREAD_EX_LIST = record
- NumberOfThreads: ULONG32;
- Threads: array [0..0] of MINIDUMP_THREAD_EX;
- end;
- {$EXTERNALSYM _MINIDUMP_THREAD_EX_LIST}
- MINIDUMP_THREAD_EX_LIST = _MINIDUMP_THREAD_EX_LIST;
- {$EXTERNALSYM MINIDUMP_THREAD_EX_LIST}
- TMinidumpThreadExList = MINIDUMP_THREAD_EX_LIST;
- PMinidumpThreadExList = PMINIDUMP_THREAD_EX_LIST;
- //
- // The MINIDUMP_EXCEPTION is the same as EXCEPTION on Win64.
- //
- PMINIDUMP_EXCEPTION = ^MINIDUMP_EXCEPTION;
- {$EXTERNALSYM PMINIDUMP_EXCEPTION}
- _MINIDUMP_EXCEPTION = record
- ExceptionCode: ULONG32;
- ExceptionFlags: ULONG32;
- ExceptionRecord: ULONG64;
- ExceptionAddress: ULONG64;
- NumberParameters: ULONG32;
- __unusedAlignment: ULONG32;
- ExceptionInformation: array [0..EXCEPTION_MAXIMUM_PARAMETERS - 1] of ULONG64;
- end;
- {$EXTERNALSYM _MINIDUMP_EXCEPTION}
- MINIDUMP_EXCEPTION = _MINIDUMP_EXCEPTION;
- {$EXTERNALSYM MINIDUMP_EXCEPTION}
- TMinidumpException = MINIDUMP_EXCEPTION;
- PMinidumpException = PMINIDUMP_EXCEPTION;
- //
- // The exception information stream contains the id of the thread that caused
- // the exception (ThreadId), the exception record for the exception
- // (ExceptionRecord) and an RVA to the thread context where the exception
- // occured.
- //
- PMINIDUMP_EXCEPTION_STREAM = ^MINIDUMP_EXCEPTION_STREAM;
- {$EXTERNALSYM PMINIDUMP_EXCEPTION_STREAM}
- _MINIDUMP_EXCEPTION_STREAM = record
- ThreadId: ULONG32;
- __alignment: ULONG32;
- ExceptionRecord: MINIDUMP_EXCEPTION;
- ThreadContext: MINIDUMP_LOCATION_DESCRIPTOR;
- end;
- {$EXTERNALSYM _MINIDUMP_EXCEPTION_STREAM}
- MINIDUMP_EXCEPTION_STREAM = _MINIDUMP_EXCEPTION_STREAM;
- {$EXTERNALSYM MINIDUMP_EXCEPTION_STREAM}
- TMinidumpExceptionStream = MINIDUMP_EXCEPTION_STREAM;
- PMinidumpExceptionStream = PMINIDUMP_EXCEPTION_STREAM;
- //
- // The MINIDUMP_MODULE contains information about a
- // a specific module. It includes the CheckSum and
- // the TimeDateStamp for the module so the module
- // can be reloaded during the analysis phase.
- //
- PMINIDUMP_MODULE = ^MINIDUMP_MODULE;
- {$EXTERNALSYM PMINIDUMP_MODULE}
- _MINIDUMP_MODULE = record
- BaseOfImage: ULONG64;
- SizeOfImage: ULONG32;
- CheckSum: ULONG32;
- TimeDateStamp: ULONG32;
- ModuleNameRva: RVA;
- VersionInfo: VS_FIXEDFILEINFO;
- CvRecord: MINIDUMP_LOCATION_DESCRIPTOR;
- MiscRecord: MINIDUMP_LOCATION_DESCRIPTOR;
- Reserved0: ULONG64; // Reserved for future use.
- Reserved1: ULONG64; // Reserved for future use.
- end;
- {$EXTERNALSYM _MINIDUMP_MODULE}
- MINIDUMP_MODULE = _MINIDUMP_MODULE;
- {$EXTERNALSYM MINIDUMP_MODULE}
- TMinidumpModule = MINIDUMP_MODULE;
- PMinidumpModule = PMINIDUMP_MODULE;
- //
- // The minidump module list is a container for modules.
- //
- PMINIDUMP_MODULE_LIST = ^MINIDUMP_MODULE_LIST;
- {$EXTERNALSYM PMINIDUMP_MODULE_LIST}
- _MINIDUMP_MODULE_LIST = record
- NumberOfModules: ULONG32;
- Modules: array [0..0] of MINIDUMP_MODULE;
- end;
- {$EXTERNALSYM _MINIDUMP_MODULE_LIST}
- MINIDUMP_MODULE_LIST = _MINIDUMP_MODULE_LIST;
- {$EXTERNALSYM MINIDUMP_MODULE_LIST}
- TMinidumpModuleList = MINIDUMP_MODULE_LIST;
- PMinidumpModuleList = PMINIDUMP_MODULE_LIST;
- //
- // Memory Ranges
- //
- PMINIDUMP_MEMORY_LIST = ^MINIDUMP_MEMORY_LIST;
- {$EXTERNALSYM PMINIDUMP_MEMORY_LIST}
- _MINIDUMP_MEMORY_LIST = record
- NumberOfMemoryRanges: ULONG32;
- MemoryRanges: array [0..0] of MINIDUMP_MEMORY_DESCRIPTOR;
- end;
- {$EXTERNALSYM _MINIDUMP_MEMORY_LIST}
- MINIDUMP_MEMORY_LIST = _MINIDUMP_MEMORY_LIST;
- {$EXTERNALSYM MINIDUMP_MEMORY_LIST}
- TMinidumpMemoryList = MINIDUMP_MEMORY_LIST;
- PMinidumpMemoryList = PMINIDUMP_MEMORY_LIST;
- PMINIDUMP_MEMORY64_LIST = ^MINIDUMP_MEMORY64_LIST;
- {$EXTERNALSYM PMINIDUMP_MEMORY64_LIST}
- _MINIDUMP_MEMORY64_LIST = record
- NumberOfMemoryRanges: ULONG64;
- BaseRva: RVA64;
- MemoryRanges: array [0..0] of MINIDUMP_MEMORY_DESCRIPTOR64;
- end;
- {$EXTERNALSYM _MINIDUMP_MEMORY64_LIST}
- MINIDUMP_MEMORY64_LIST = _MINIDUMP_MEMORY64_LIST;
- {$EXTERNALSYM MINIDUMP_MEMORY64_LIST}
- TMinidumpMemory64List = MINIDUMP_MEMORY64_LIST;
- PMinidumpMemory64List = PMINIDUMP_MEMORY64_LIST;
- //
- // Support for user supplied exception information.
- //
- PMINIDUMP_EXCEPTION_INFORMATION = ^MINIDUMP_EXCEPTION_INFORMATION;
- {$EXTERNALSYM PMINIDUMP_EXCEPTION_INFORMATION}
- _MINIDUMP_EXCEPTION_INFORMATION = record
- ThreadId: DWORD;
- ExceptionPointers: PEXCEPTION_POINTERS;
- ClientPointers: BOOL;
- end;
- {$EXTERNALSYM _MINIDUMP_EXCEPTION_INFORMATION}
- MINIDUMP_EXCEPTION_INFORMATION = _MINIDUMP_EXCEPTION_INFORMATION;
- {$EXTERNALSYM MINIDUMP_EXCEPTION_INFORMATION}
- TMinidumpExceptionInformation = MINIDUMP_EXCEPTION_INFORMATION;
- PMinidumpExceptionInformation = PMINIDUMP_EXCEPTION_INFORMATION;
- //
- // Support for capturing system handle state at the time of the dump.
- //
- PMINIDUMP_HANDLE_DESCRIPTOR = ^MINIDUMP_HANDLE_DESCRIPTOR;
- {$EXTERNALSYM PMINIDUMP_HANDLE_DESCRIPTOR}
- _MINIDUMP_HANDLE_DESCRIPTOR = record
- Handle: ULONG64;
- TypeNameRva: RVA;
- ObjectNameRva: RVA;
- Attributes: ULONG32;
- GrantedAccess: ULONG32;
- HandleCount: ULONG32;
- PointerCount: ULONG32;
- end;
- {$EXTERNALSYM _MINIDUMP_HANDLE_DESCRIPTOR}
- MINIDUMP_HANDLE_DESCRIPTOR = _MINIDUMP_HANDLE_DESCRIPTOR;
- {$EXTERNALSYM MINIDUMP_HANDLE_DESCRIPTOR}
- TMinidumpHandleDescriptor = MINIDUMP_HANDLE_DESCRIPTOR;
- PMinidumpHandleDescriptor = PMINIDUMP_HANDLE_DESCRIPTOR;
- PMINIDUMP_HANDLE_DATA_STREAM = ^MINIDUMP_HANDLE_DATA_STREAM;
- {$EXTERNALSYM PMINIDUMP_HANDLE_DATA_STREAM}
- _MINIDUMP_HANDLE_DATA_STREAM = record
- SizeOfHeader: ULONG32;
- SizeOfDescriptor: ULONG32;
- NumberOfDescriptors: ULONG32;
- Reserved: ULONG32;
- end;
- {$EXTERNALSYM _MINIDUMP_HANDLE_DATA_STREAM}
- MINIDUMP_HANDLE_DATA_STREAM = _MINIDUMP_HANDLE_DATA_STREAM;
- {$EXTERNALSYM MINIDUMP_HANDLE_DATA_STREAM}
- TMinidumpHandleDataStream = MINIDUMP_HANDLE_DATA_STREAM;
- PMinidumpHandleDataStream = PMINIDUMP_HANDLE_DATA_STREAM;
- //
- // Support for capturing dynamic function table state at the time of the dump.
- //
- PMINIDUMP_FUNCTION_TABLE_DESCRIPTOR = ^MINIDUMP_FUNCTION_TABLE_DESCRIPTOR;
- {$EXTERNALSYM PMINIDUMP_FUNCTION_TABLE_DESCRIPTOR}
- _MINIDUMP_FUNCTION_TABLE_DESCRIPTOR = record
- MinimumAddress: ULONG64;
- MaximumAddress: ULONG64;
- BaseAddress: ULONG64;
- EntryCount: ULONG32;
- SizeOfAlignPad: ULONG32;
- end;
- {$EXTERNALSYM _MINIDUMP_FUNCTION_TABLE_DESCRIPTOR}
- MINIDUMP_FUNCTION_TABLE_DESCRIPTOR = _MINIDUMP_FUNCTION_TABLE_DESCRIPTOR;
- {$EXTERNALSYM MINIDUMP_FUNCTION_TABLE_DESCRIPTOR}
- TMinidumpFunctionTableDescriptor = MINIDUMP_FUNCTION_TABLE_DESCRIPTOR;
- PMinidumpFunctionTableDescriptor = PMINIDUMP_FUNCTION_TABLE_DESCRIPTOR;
- PMINIDUMP_FUNCTION_TABLE_STREAM = ^MINIDUMP_FUNCTION_TABLE_STREAM;
- {$EXTERNALSYM PMINIDUMP_FUNCTION_TABLE_STREAM}
- _MINIDUMP_FUNCTION_TABLE_STREAM = record
- SizeOfHeader: ULONG32;
- SizeOfDescriptor: ULONG32;
- SizeOfNativeDescriptor: ULONG32;
- SizeOfFunctionEntry: ULONG32;
- NumberOfDescriptors: ULONG32;
- SizeOfAlignPad: ULONG32;
- end;
- {$EXTERNALSYM _MINIDUMP_FUNCTION_TABLE_STREAM}
- MINIDUMP_FUNCTION_TABLE_STREAM = _MINIDUMP_FUNCTION_TABLE_STREAM;
- {$EXTERNALSYM MINIDUMP_FUNCTION_TABLE_STREAM}
- TMinidumpFunctionTableStream = MINIDUMP_FUNCTION_TABLE_STREAM;
- PMinidumpFunctionTableStream = PMINIDUMP_FUNCTION_TABLE_STREAM;
- //
- // The MINIDUMP_UNLOADED_MODULE contains information about a
- // a specific module that was previously loaded but no
- // longer is. This can help with diagnosing problems where
- // callers attempt to call code that is no longer loaded.
- //
- _MINIDUMP_UNLOADED_MODULE = record
- BaseOfImage: ULONG64;
- SizeOfImage: ULONG32;
- CheckSum: ULONG32;
- TimeDateStamp: ULONG32;
- ModuleNameRva: RVA;
- end;
- {$EXTERNALSYM _MINIDUMP_UNLOADED_MODULE}
- MINIDUMP_UNLOADED_MODULE = _MINIDUMP_UNLOADED_MODULE;
- {$EXTERNALSYM MINIDUMP_UNLOADED_MODULE}
- PMINIDUMP_UNLOADED_MODULE = ^MINIDUMP_UNLOADED_MODULE;
- {$EXTERNALSYM PMINIDUMP_UNLOADED_MODULE}
- TMiniDumpUnloadedModule = MINIDUMP_UNLOADED_MODULE;
- PMiniDumpUnloadedModule = PMINIDUMP_UNLOADED_MODULE;
- //
- // The minidump unloaded module list is a container for unloaded modules.
- //
- _MINIDUMP_UNLOADED_MODULE_LIST = record
- SizeOfHeader: ULONG32;
- SizeOfEntry: ULONG32;
- NumberOfEntries: ULONG32;
- end;
- {$EXTERNALSYM _MINIDUMP_UNLOADED_MODULE_LIST}
- MINIDUMP_UNLOADED_MODULE_LIST = _MINIDUMP_UNLOADED_MODULE_LIST;
- {$EXTERNALSYM MINIDUMP_UNLOADED_MODULE_LIST}
- PMINIDUMP_UNLOADED_MODULE_LIST = ^MINIDUMP_UNLOADED_MODULE_LIST;
- {$EXTERNALSYM PMINIDUMP_UNLOADED_MODULE_LIST}
- TMiniDumpUnloadedModuleList = MINIDUMP_UNLOADED_MODULE_LIST;
- PMiniDumpUnloadedModuleList = PMINIDUMP_UNLOADED_MODULE_LIST;
- //
- // The miscellaneous information stream contains a variety
- // of small pieces of information. A member is valid if
- // it's within the available size and its corresponding
- // bit is set.
- //
- const
- MINIDUMP_MISC1_PROCESS_ID = $00000001;
- {$EXTERNALSYM MINIDUMP_MISC1_PROCESS_ID}
- MINIDUMP_MISC1_PROCESS_TIMES = $00000002;
- {$EXTERNALSYM MINIDUMP_MISC1_PROCESS_TIMES}
- type
- _MINIDUMP_MISC_INFO = record
- SizeOfInfo: ULONG32;
- Flags1: ULONG32;
- ProcessId: ULONG32;
- ProcessCreateTime: ULONG32;
- ProcessUserTime: ULONG32;
- ProcessKernelTime: ULONG32;
- end;
- {$EXTERNALSYM _MINIDUMP_MISC_INFO}
- MINIDUMP_MISC_INFO = _MINIDUMP_MISC_INFO;
- {$EXTERNALSYM MINIDUMP_MISC_INFO}
- PMINIDUMP_MISC_INFO = ^MINIDUMP_MISC_INFO;
- {$EXTERNALSYM PMINIDUMP_MISC_INFO}
- TMiniDumpMiscInfo = MINIDUMP_MISC_INFO;
- PMiniDumpMiscInfo = PMINIDUMP_MISC_INFO;
- //
- // Support for arbitrary user-defined information.
- //
- PMINIDUMP_USER_RECORD = ^MINIDUMP_USER_RECORD;
- {$EXTERNALSYM PMINIDUMP_USER_RECORD}
- _MINIDUMP_USER_RECORD = record
- Type_: ULONG32;
- Memory: MINIDUMP_LOCATION_DESCRIPTOR;
- end;
- {$EXTERNALSYM _MINIDUMP_USER_RECORD}
- MINIDUMP_USER_RECORD = _MINIDUMP_USER_RECORD;
- {$EXTERNALSYM MINIDUMP_USER_RECORD}
- TMinidumpUserRecord = MINIDUMP_USER_RECORD;
- PMinidumpUserRecord = PMINIDUMP_USER_RECORD;
- PMINIDUMP_USER_STREAM = ^MINIDUMP_USER_STREAM;
- {$EXTERNALSYM PMINIDUMP_USER_STREAM}
- _MINIDUMP_USER_STREAM = record
- Type_: ULONG32;
- BufferSize: ULONG;
- Buffer: PVOID;
- end;
- {$EXTERNALSYM _MINIDUMP_USER_STREAM}
- MINIDUMP_USER_STREAM = _MINIDUMP_USER_STREAM;
- {$EXTERNALSYM MINIDUMP_USER_STREAM}
- TMinidumpUserStream = MINIDUMP_USER_STREAM;
- PMinidumpUserStream = PMINIDUMP_USER_STREAM;
- PMINIDUMP_USER_STREAM_INFORMATION = ^MINIDUMP_USER_STREAM_INFORMATION;
- {$EXTERNALSYM PMINIDUMP_USER_STREAM_INFORMATION}
- _MINIDUMP_USER_STREAM_INFORMATION = record
- UserStreamCount: ULONG;
- UserStreamArray: PMINIDUMP_USER_STREAM;
- end;
- {$EXTERNALSYM _MINIDUMP_USER_STREAM_INFORMATION}
- MINIDUMP_USER_STREAM_INFORMATION = _MINIDUMP_USER_STREAM_INFORMATION;
- {$EXTERNALSYM MINIDUMP_USER_STREAM_INFORMATION}
- TMinidumpUserStreamInformation = MINIDUMP_USER_STREAM_INFORMATION;
- PMinidumpUserStreamInformation = PMINIDUMP_USER_STREAM_INFORMATION;
- //
- // Callback support.
- //
- _MINIDUMP_CALLBACK_TYPE = (
- ModuleCallback,
- ThreadCallback,
- ThreadExCallback,
- IncludeThreadCallback,
- IncludeModuleCallback);
- {$EXTERNALSYM _MINIDUMP_CALLBACK_TYPE}
- MINIDUMP_CALLBACK_TYPE = _MINIDUMP_CALLBACK_TYPE;
- {$EXTERNALSYM MINIDUMP_CALLBACK_TYPE}
- TMinidumpCallbackType = MINIDUMP_CALLBACK_TYPE;
- PMINIDUMP_THREAD_CALLBACK = ^MINIDUMP_THREAD_CALLBACK;
- {$EXTERNALSYM PMINIDUMP_THREAD_CALLBACK}
- _MINIDUMP_THREAD_CALLBACK = record
- ThreadId: ULONG;
- ThreadHandle: HANDLE;
- Context: CONTEXT;
- SizeOfContext: ULONG;
- StackBase: ULONG64;
- StackEnd: ULONG64;
- end;
- {$EXTERNALSYM _MINIDUMP_THREAD_CALLBACK}
- MINIDUMP_THREAD_CALLBACK = _MINIDUMP_THREAD_CALLBACK;
- {$EXTERNALSYM MINIDUMP_THREAD_CALLBACK}
- TMinidumpThreadCallback = MINIDUMP_THREAD_CALLBACK;
- PMinidumpThreadCallback = PMINIDUMP_THREAD_CALLBACK;
- PMINIDUMP_THREAD_EX_CALLBACK = ^MINIDUMP_THREAD_EX_CALLBACK;
- {$EXTERNALSYM PMINIDUMP_THREAD_EX_CALLBACK}
- _MINIDUMP_THREAD_EX_CALLBACK = record
- ThreadId: ULONG;
- ThreadHandle: HANDLE;
- Context: CONTEXT;
- SizeOfContext: ULONG;
- StackBase: ULONG64;
- StackEnd: ULONG64;
- BackingStoreBase: ULONG64;
- BackingStoreEnd: ULONG64;
- end;
- {$EXTERNALSYM _MINIDUMP_THREAD_EX_CALLBACK}
- MINIDUMP_THREAD_EX_CALLBACK = _MINIDUMP_THREAD_EX_CALLBACK;
- {$EXTERNALSYM MINIDUMP_THREAD_EX_CALLBACK}
- TMinidumpThreadExCallback = MINIDUMP_THREAD_EX_CALLBACK;
- PMinidumpThreadExCallback = PMINIDUMP_THREAD_EX_CALLBACK;
- PMINIDUMP_INCLUDE_THREAD_CALLBACK = ^MINIDUMP_INCLUDE_THREAD_CALLBACK;
- {$EXTERNALSYM PMINIDUMP_INCLUDE_THREAD_CALLBACK}
- _MINIDUMP_INCLUDE_THREAD_CALLBACK = record
- ThreadId: ULONG;
- end;
- {$EXTERNALSYM _MINIDUMP_INCLUDE_THREAD_CALLBACK}
- MINIDUMP_INCLUDE_THREAD_CALLBACK = _MINIDUMP_INCLUDE_THREAD_CALLBACK;
- {$EXTERNALSYM MINIDUMP_INCLUDE_THREAD_CALLBACK}
- TMinidumpIncludeThreadCallback = MINIDUMP_INCLUDE_THREAD_CALLBACK;
- PMinidumpIncludeThreadCallback = PMINIDUMP_INCLUDE_THREAD_CALLBACK;
- const
- ThreadWriteThread = $0001;
- {$EXTERNALSYM ThreadWriteThread}
- ThreadWriteStack = $0002;
- {$EXTERNALSYM ThreadWriteStack}
- ThreadWriteContext = $0004;
- {$EXTERNALSYM ThreadWriteContext}
- ThreadWriteBackingStore = $0008;
- {$EXTERNALSYM ThreadWriteBackingStore}
- ThreadWriteInstructionWindow = $0010;
- {$EXTERNALSYM ThreadWriteInstructionWindow}
- ThreadWriteThreadData = $0020;
- {$EXTERNALSYM ThreadWriteThreadData}
- type
- _THREAD_WRITE_FLAGS = DWORD;
- {$EXTERNALSYM _THREAD_WRITE_FLAGS}
- THREAD_WRITE_FLAGS = _THREAD_WRITE_FLAGS;
- {$EXTERNALSYM THREAD_WRITE_FLAGS}
- TThreadWriteFlags = THREAD_WRITE_FLAGS;
- type
- PMINIDUMP_MODULE_CALLBACK = ^MINIDUMP_MODULE_CALLBACK;
- {$EXTERNALSYM PMINIDUMP_MODULE_CALLBACK}
- _MINIDUMP_MODULE_CALLBACK = record
- FullPath: PWCHAR;
- BaseOfImage: ULONG64;
- SizeOfImage: ULONG;
- CheckSum: ULONG;
- TimeDateStamp: ULONG;
- VersionInfo: VS_FIXEDFILEINFO;
- CvRecord: PVOID;
- SizeOfCvRecord: ULONG;
- MiscRecord: PVOID;
- SizeOfMiscRecord: ULONG;
- end;
- {$EXTERNALSYM _MINIDUMP_MODULE_CALLBACK}
- MINIDUMP_MODULE_CALLBACK = _MINIDUMP_MODULE_CALLBACK;
- {$EXTERNALSYM MINIDUMP_MODULE_CALLBACK}
- TMinidumpModuleCallback = MINIDUMP_MODULE_CALLBACK;
- PMinidumpModuleCallback = PMINIDUMP_MODULE_CALLBACK;
- PMINIDUMP_INCLUDE_MODULE_CALLBACK = ^MINIDUMP_INCLUDE_MODULE_CALLBACK;
- {$EXTERNALSYM PMINIDUMP_INCLUDE_MODULE_CALLBACK}
- _MINIDUMP_INCLUDE_MODULE_CALLBACK = record
- BaseOfImage: ULONG64;
- end;
- {$EXTERNALSYM _MINIDUMP_INCLUDE_MODULE_CALLBACK}
- MINIDUMP_INCLUDE_MODULE_CALLBACK = _MINIDUMP_INCLUDE_MODULE_CALLBACK;
- {$EXTERNALSYM MINIDUMP_INCLUDE_MODULE_CALLBACK}
- TMinidumpIncludeModuleCallback = MINIDUMP_INCLUDE_MODULE_CALLBACK;
- PMinidumpIncludeModuleCallback = PMINIDUMP_INCLUDE_MODULE_CALLBACK;
- const
- ModuleWriteModule = $0001;
- {$EXTERNALSYM ModuleWriteModule}
- ModuleWriteDataSeg = $0002;
- {$EXTERNALSYM ModuleWriteDataSeg}
- ModuleWriteMiscRecord = $0004;
- {$EXTERNALSYM ModuleWriteMiscRecord}
- ModuleWriteCvRecord = $0008;
- {$EXTERNALSYM ModuleWriteCvRecord}
- ModuleReferencedByMemory = $0010;
- {$EXTERNALSYM ModuleReferencedByMemory}
- type
- _MODULE_WRITE_FLAGS = DWORD;
- {$EXTERNALSYM _MODULE_WRITE_FLAGS}
- MODULE_WRITE_FLAGS = _MODULE_WRITE_FLAGS;
- {$EXTERNALSYM MODULE_WRITE_FLAGS}
- TModuleWriteFlags = MODULE_WRITE_FLAGS;
- _MINIDUMP_CALLBACK_INPUT = record
- ProcessId: ULONG;
- ProcessHandle: HANDLE;
- CallbackType: ULONG;
- case Integer of
- 0: (Thread: MINIDUMP_THREAD_CALLBACK);
- 1: (ThreadEx: MINIDUMP_THREAD_EX_CALLBACK);
- 2: (Module: MINIDUMP_MODULE_CALLBACK);
- 3: (IncludeThread: MINIDUMP_INCLUDE_THREAD_CALLBACK);
- 4: (IncludeModule: MINIDUMP_INCLUDE_MODULE_CALLBACK);
- end;
- {$EXTERNALSYM _MINIDUMP_CALLBACK_INPUT}
- MINIDUMP_CALLBACK_INPUT = _MINIDUMP_CALLBACK_INPUT;
- {$EXTERNALSYM MINIDUMP_CALLBACK_INPUT}
- PMINIDUMP_CALLBACK_INPUT = ^MINIDUMP_CALLBACK_INPUT;
- {$EXTERNALSYM PMINIDUMP_CALLBACK_INPUT}
- TminidumpCallbackInput = MINIDUMP_CALLBACK_INPUT;
- PMINIDUMP_CALLBACK_OUTPUT = ^MINIDUMP_CALLBACK_OUTPUT;
- {$EXTERNALSYM PMINIDUMP_CALLBACK_OUTPUT}
- _MINIDUMP_CALLBACK_OUTPUT = record
- case Integer of
- 0: (ModuleWriteFlags: ULONG);
- 1: (ThreadWriteFlags: ULONG);
- end;
- {$EXTERNALSYM _MINIDUMP_CALLBACK_OUTPUT}
- MINIDUMP_CALLBACK_OUTPUT = _MINIDUMP_CALLBACK_OUTPUT;
- {$EXTERNALSYM MINIDUMP_CALLBACK_OUTPUT}
- TMinidumpCallbackOutput = MINIDUMP_CALLBACK_OUTPUT;
- PMinidumpCallbackOutput = PMINIDUMP_CALLBACK_OUTPUT;
- //
- // A normal minidump contains just the information
- // necessary to capture stack traces for all of the
- // existing threads in a process.
- //
- // A minidump with data segments includes all of the data
- // sections from loaded modules in order to capture
- // global variable contents. This can make the dump much
- // larger if many modules have global data.
- //
- // A minidump with full memory includes all of the accessible
- // memory in the process and can be very large. A minidump
- // with full memory always has the raw memory data at the end
- // of the dump so that the initial structures in the dump can
- // be mapped directly without having to include the raw
- // memory information.
- //
- // Stack and backing store memory can be filtered to remove
- // data unnecessary for stack walking. This can improve
- // compression of stacks and also deletes data that may
- // be private and should not be stored in a dump.
- // Memory can also be scanned to see what modules are
- // referenced by stack and backing store memory to allow
- // omission of other modules to reduce dump size.
- // In either of these modes the ModuleReferencedByMemory flag
- // is set for all modules referenced before the base
- // module callbacks occur.
- //
- // On some operating systems a list of modules that were
- // recently unloaded is kept in addition to the currently
- // loaded module list. This information can be saved in
- // the dump if desired.
- //
- // Stack and backing store memory can be scanned for referenced
- // pages in order to pick up data referenced by locals or other
- // stack memory. This can increase the size of a dump significantly.
- //
- // Module paths may contain undesired information such as user names
- // or other important directory names so they can be stripped. This
- // option reduces the ability to locate the proper image later
- // and should only be used in certain situations.
- //
- // Complete operating system per-process and per-thread information can
- // be gathered and stored in the dump.
- //
- // The virtual address space can be scanned for various types
- // of memory to be included in the dump.
- //
- const
- MiniDumpNormal = $0000;
- {$EXTERNALSYM MiniDumpNormal}
- MiniDumpWithDataSegs = $0001;
- {$EXTERNALSYM MiniDumpWithDataSegs}
- MiniDumpWithFullMemory = $0002;
- {$EXTERNALSYM MiniDumpWithFullMemory}
- MiniDumpWithHandleData = $0004;
- {$EXTERNALSYM MiniDumpWithHandleData}
- MiniDumpFilterMemory = $0008;
- {$EXTERNALSYM MiniDumpFilterMemory}
- MiniDumpScanMemory = $0010;
- {$EXTERNALSYM MiniDumpScanMemory}
- MiniDumpWithUnloadedModules = $0020;
- {$EXTERNALSYM MiniDumpWithUnloadedModules}
- MiniDumpWithIndirectlyReferencedMemory = $0040;
- {$EXTERNALSYM MiniDumpWithIndirectlyReferencedMemory}
- MiniDumpFilterModulePaths = $0080;
- {$EXTERNALSYM MiniDumpFilterModulePaths}
- MiniDumpWithProcessThreadData = $0100;
- {$EXTERNALSYM MiniDumpWithProcessThreadData}
- MiniDumpWithPrivateReadWriteMemory = $0200;
- {$EXTERNALSYM MiniDumpWithPrivateReadWriteMemory}
- type
- _MINIDUMP_TYPE = DWORD;
- {$EXTERNALSYM _MINIDUMP_TYPE}
- MINIDUMP_TYPE = _MINIDUMP_TYPE;
- {$EXTERNALSYM MINIDUMP_TYPE}
- TMinidumpType = MINIDUMP_TYPE;
- //
- // The minidump callback should modify the FieldsToWrite parameter to reflect
- // what portions of the specified thread or module should be written to the
- // file.
- //
- MINIDUMP_CALLBACK_ROUTINE = function(CallbackParam: PVOID; CallbackInput: PMINIDUMP_CALLBACK_INPUT;
- CallbackOutput: PMINIDUMP_CALLBACK_OUTPUT): BOOL; stdcall;
- {$EXTERNALSYM MINIDUMP_CALLBACK_ROUTINE}
- TMinidumpCallbackRoutine = MINIDUMP_CALLBACK_ROUTINE;
- PMINIDUMP_CALLBACK_INFORMATION = ^MINIDUMP_CALLBACK_INFORMATION;
- {$EXTERNALSYM PMINIDUMP_CALLBACK_INFORMATION}
- _MINIDUMP_CALLBACK_INFORMATION = record
- CallbackRoutine: MINIDUMP_CALLBACK_ROUTINE;
- CallbackParam: PVOID;
- end;
- {$EXTERNALSYM _MINIDUMP_CALLBACK_INFORMATION}
- MINIDUMP_CALLBACK_INFORMATION = _MINIDUMP_CALLBACK_INFORMATION;
- {$EXTERNALSYM MINIDUMP_CALLBACK_INFORMATION}
- TMinidumpCallbackInformation = MINIDUMP_CALLBACK_INFORMATION;
- PMinidumpCallbackInformation = PMINIDUMP_CALLBACK_INFORMATION;
- //++
- //
- // PVOID
- // RVA_TO_ADDR(
- // PVOID Mapping,
- // ULONG Rva
- // )
- //
- // Routine Description:
- //
- // Map an RVA that is contained within a mapped file to it's associated
- // flat address.
- //
- // Arguments:
- //
- // Mapping - Base address of mapped file containing the RVA.
- //
- // Rva - An Rva to fixup.
- //
- // Return Values:
- //
- // A pointer to the desired data.
- //
- //--
- function RVA_TO_ADDR(Mapping, Rva: Pointer): Pointer;
- {$EXTERNALSYM RVA_TO_ADDR}
- function MiniDumpWriteDump(hProcess: HANDLE; ProcessId: DWORD; hFile: HANDLE; DumpType: MINIDUMP_TYPE; ExceptionParam: PMINIDUMP_EXCEPTION_INFORMATION; UserStreamParam: PMINIDUMP_USER_STREAM_INFORMATION; CallbackParam: PMINIDUMP_CALLBACK_INFORMATION): BOOL; stdcall;
- {$EXTERNALSYM MiniDumpWriteDump}
- function MiniDumpReadDumpStream(BaseOfDump: PVOID; StreamNumber: ULONG; var Dir: PMINIDUMP_DIRECTORY; var StreamPointer: PVOID; var StreamSize: ULONG): BOOL; stdcall;
- {$EXTERNALSYM MiniDumpReadDumpStream}
- implementation
- uses
- JwaWinDLLNames;
- procedure Address32To64(a32: LPADDRESS; a64: LPADDRESS64);
- begin
- a64^.Offset := {ULONG64(LONG64(LONG(}a32^.Offset{)))};
- a64^.Segment := a32^.Segment;
- a64^.Mode := a32^.Mode;
- end;
- procedure Address64To32(a64: LPADDRESS64; a32: LPADDRESS);
- begin
- a32^.Offset := ULONG(a64^.Offset);
- a32^.Segment := a64^.Segment;
- a32^.Mode := a64^.Mode;
- end;
- procedure KdHelp32To64(p32: PKDHELP; p64: PKDHELP64);
- begin
- p64^.Thread := p32^.Thread;
- p64^.ThCallbackStack := p32^.ThCallbackStack;
- p64^.NextCallback := p32^.NextCallback;
- p64^.FramePointer := p32^.FramePointer;
- p64^.KiCallUserMode := p32^.KiCallUserMode;
- p64^.KeUserCallbackDispatcher := p32^.KeUserCallbackDispatcher;
- p64^.SystemRangeStart := p32^.SystemRangeStart;
- end;
- function RVA_TO_ADDR(Mapping, Rva: Pointer): Pointer;
- begin
- Result := Pointer(Cardinal(Mapping) + Cardinal(Rva));
- end;
- {$IFDEF DYNAMIC_LINK}
- var
- _BindImage: Pointer;
- function BindImage;
- begin
- GetProcedureAddress(_BindImage, ImageHlpLib, 'BindImage');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BindImage]
- end;
- end;
- var
- _BindImageEx: Pointer;
- function BindImageEx;
- begin
- GetProcedureAddress(_BindImageEx, ImageHlpLib, 'BindImageEx');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BindImageEx]
- end;
- end;
- var
- _ReBaseImage: Pointer;
- function ReBaseImage;
- begin
- GetProcedureAddress(_ReBaseImage, ImageHlpLib, 'ReBaseImage');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_ReBaseImage]
- end;
- end;
- var
- _ReBaseImage64: Pointer;
- function ReBaseImage64;
- begin
- GetProcedureAddress(_ReBaseImage64, ImageHlpLib, 'ReBaseImage64');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_ReBaseImage64]
- end;
- end;
- var
- _CheckSumMappedFile: Pointer;
- function CheckSumMappedFile;
- begin
- GetProcedureAddress(_CheckSumMappedFile, ImageHlpLib, 'CheckSumMappedFile');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_CheckSumMappedFile]
- end;
- end;
- var
- _MapFileAndCheckSumA: Pointer;
- function MapFileAndCheckSumA;
- begin
- GetProcedureAddress(_MapFileAndCheckSumA, ImageHlpLib, 'MapFileAndCheckSumA');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_MapFileAndCheckSumA]
- end;
- end;
- var
- _MapFileAndCheckSumW: Pointer;
- function MapFileAndCheckSumW;
- begin
- GetProcedureAddress(_MapFileAndCheckSumW, ImageHlpLib, 'MapFileAndCheckSumW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_MapFileAndCheckSumW]
- end;
- end;
- var
- _MapFileAndCheckSum: Pointer;
- function MapFileAndCheckSum;
- begin
- GetProcedureAddress(_MapFileAndCheckSum, ImageHlpLib, 'MapFileAndCheckSum' + AWSuffix);
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_MapFileAndCheckSum]
- end;
- end;
- var
- _GetImageConfigInformation: Pointer;
- function GetImageConfigInformation;
- begin
- GetProcedureAddress(_GetImageConfigInformation, ImageHlpLib, 'GetImageConfigInformation');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_GetImageConfigInformation]
- end;
- end;
- var
- _GetImageUnusedHeaderBytes: Pointer;
- function GetImageUnusedHeaderBytes;
- begin
- GetProcedureAddress(_GetImageUnusedHeaderBytes, ImageHlpLib, 'GetImageUnusedHeaderBytes');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_GetImageUnusedHeaderBytes]
- end;
- end;
- var
- _SetImageConfigInformation: Pointer;
- function SetImageConfigInformation;
- begin
- GetProcedureAddress(_SetImageConfigInformation, ImageHlpLib, 'SetImageConfigInformation');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SetImageConfigInformation]
- end;
- end;
- var
- _ImageGetDigestStream: Pointer;
- function ImageGetDigestStream;
- begin
- GetProcedureAddress(_ImageGetDigestStream, ImageHlpLib, 'ImageGetDigestStream');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_ImageGetDigestStream]
- end;
- end;
- var
- _ImageAddCertificate: Pointer;
- function ImageAddCertificate;
- begin
- GetProcedureAddress(_ImageAddCertificate, ImageHlpLib, 'ImageAddCertificate');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_ImageAddCertificate]
- end;
- end;
- var
- _ImageRemoveCertificate: Pointer;
- function ImageRemoveCertificate;
- begin
- GetProcedureAddress(_ImageRemoveCertificate, ImageHlpLib, 'ImageRemoveCertificate');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_ImageRemoveCertificate]
- end;
- end;
- var
- _ImageEnumerateCertificates: Pointer;
- function ImageEnumerateCertificates;
- begin
- GetProcedureAddress(_ImageEnumerateCertificates, ImageHlpLib, 'ImageEnumerateCertificates');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_ImageEnumerateCertificates]
- end;
- end;
- var
- _ImageGetCertificateData: Pointer;
- function ImageGetCertificateData;
- begin
- GetProcedureAddress(_ImageGetCertificateData, ImageHlpLib, 'ImageGetCertificateData');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_ImageGetCertificateData]
- end;
- end;
- var
- _ImageGetCertificateHeader: Pointer;
- function ImageGetCertificateHeader;
- begin
- GetProcedureAddress(_ImageGetCertificateHeader, ImageHlpLib, 'ImageGetCertificateHeader');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_ImageGetCertificateHeader]
- end;
- end;
- var
- _ImageLoad: Pointer;
- function ImageLoad;
- begin
- GetProcedureAddress(_ImageLoad, ImageHlpLib, 'ImageLoad');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_ImageLoad]
- end;
- end;
- var
- _ImageUnload: Pointer;
- function ImageUnload;
- begin
- GetProcedureAddress(_ImageUnload, ImageHlpLib, 'ImageUnload');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_ImageUnload]
- end;
- end;
- var
- _MapAndLoad: Pointer;
- function MapAndLoad;
- begin
- GetProcedureAddress(_MapAndLoad, ImageHlpLib, 'MapAndLoad');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_MapAndLoad]
- end;
- end;
- var
- _UnMapAndLoad: Pointer;
- function UnMapAndLoad;
- begin
- GetProcedureAddress(_UnMapAndLoad, ImageHlpLib, 'UnMapAndLoad');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_UnMapAndLoad]
- end;
- end;
- var
- _TouchFileTimes: Pointer;
- function TouchFileTimes;
- begin
- GetProcedureAddress(_TouchFileTimes, ImageHlpLib, 'TouchFileTimes');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_TouchFileTimes]
- end;
- end;
- var
- _SplitSymbols: Pointer;
- function SplitSymbols;
- begin
- GetProcedureAddress(_SplitSymbols, ImageHlpLib, 'SplitSymbols');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SplitSymbols]
- end;
- end;
- var
- _UpdateDebugInfoFile: Pointer;
- function UpdateDebugInfoFile;
- begin
- GetProcedureAddress(_UpdateDebugInfoFile, ImageHlpLib, 'UpdateDebugInfoFile');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_UpdateDebugInfoFile]
- end;
- end;
- var
- _UpdateDebugInfoFileEx: Pointer;
- function UpdateDebugInfoFileEx;
- begin
- GetProcedureAddress(_UpdateDebugInfoFileEx, ImageHlpLib, 'UpdateDebugInfoFileEx');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_UpdateDebugInfoFileEx]
- end;
- end;
- var
- _FindDebugInfoFile: Pointer;
- function FindDebugInfoFile;
- begin
- GetProcedureAddress(_FindDebugInfoFile, ImageHlpLib, 'FindDebugInfoFile');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_FindDebugInfoFile]
- end;
- end;
- var
- _FindDebugInfoFileEx: Pointer;
- function FindDebugInfoFileEx;
- begin
- GetProcedureAddress(_FindDebugInfoFileEx, ImageHlpLib, 'FindDebugInfoFileEx');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_FindDebugInfoFileEx]
- end;
- end;
- var
- _SymFindFileInPath: Pointer;
- function SymFindFileInPath;
- begin
- GetProcedureAddress(_SymFindFileInPath, ImageHlpLib, 'SymFindFileInPath');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymFindFileInPath]
- end;
- end;
- var
- _FindExecutableImage: Pointer;
- function FindExecutableImage;
- begin
- GetProcedureAddress(_FindExecutableImage, ImageHlpLib, 'FindExecutableImage');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_FindExecutableImage]
- end;
- end;
- var
- _FindExecutableImageEx: Pointer;
- function FindExecutableImageEx;
- begin
- GetProcedureAddress(_FindExecutableImageEx, ImageHlpLib, 'FindExecutableImageEx');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_FindExecutableImageEx]
- end;
- end;
- var
- _ImageNtHeader: Pointer;
- function ImageNtHeader;
- begin
- GetProcedureAddress(_ImageNtHeader, ImageHlpLib, 'ImageNtHeader');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_ImageNtHeader]
- end;
- end;
- var
- _ImageDirectoryEntryToDataEx: Pointer;
- function ImageDirectoryEntryToDataEx;
- begin
- GetProcedureAddress(_ImageDirectoryEntryToDataEx, ImageHlpLib, 'ImageDirectoryEntryToDataEx');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_ImageDirectoryEntryToDataEx]
- end;
- end;
- var
- _ImageDirectoryEntryToData: Pointer;
- function ImageDirectoryEntryToData;
- begin
- GetProcedureAddress(_ImageDirectoryEntryToData, ImageHlpLib, 'ImageDirectoryEntryToData');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_ImageDirectoryEntryToData]
- end;
- end;
- var
- _ImageRvaToSection: Pointer;
- function ImageRvaToSection;
- begin
- GetProcedureAddress(_ImageRvaToSection, ImageHlpLib, 'ImageRvaToSection');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_ImageRvaToSection]
- end;
- end;
- var
- _ImageRvaToVa: Pointer;
- function ImageRvaToVa;
- begin
- GetProcedureAddress(_ImageRvaToVa, ImageHlpLib, 'ImageRvaToVa');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_ImageRvaToVa]
- end;
- end;
- var
- _MapDebugInformation: Pointer;
- function MapDebugInformation;
- begin
- GetProcedureAddress(_MapDebugInformation, ImageHlpLib, 'MapDebugInformation');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_MapDebugInformation]
- end;
- end;
- var
- _UnmapDebugInformation: Pointer;
- function UnmapDebugInformation;
- begin
- GetProcedureAddress(_UnmapDebugInformation, ImageHlpLib, 'UnmapDebugInformation');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_UnmapDebugInformation]
- end;
- end;
- var
- _SearchTreeForFile: Pointer;
- function SearchTreeForFile;
- begin
- GetProcedureAddress(_SearchTreeForFile, ImageHlpLib, 'SearchTreeForFile');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SearchTreeForFile]
- end;
- end;
- var
- _EnumDirTree: Pointer;
- function EnumDirTree;
- begin
- GetProcedureAddress(_EnumDirTree, ImageHlpLib, 'EnumDirTree');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_EnumDirTree]
- end;
- end;
- var
- _MakeSureDirectoryPathExists: Pointer;
- function MakeSureDirectoryPathExists;
- begin
- GetProcedureAddress(_MakeSureDirectoryPathExists, ImageHlpLib, 'MakeSureDirectoryPathExists');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_MakeSureDirectoryPathExists]
- end;
- end;
- var
- _UnDecorateSymbolName: Pointer;
- function UnDecorateSymbolName;
- begin
- GetProcedureAddress(_UnDecorateSymbolName, ImageHlpLib, 'UnDecorateSymbolName');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_UnDecorateSymbolName]
- end;
- end;
- var
- _StackWalk64: Pointer;
- function StackWalk64;
- begin
- GetProcedureAddress(_StackWalk64, ImageHlpLib, 'StackWalk64');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_StackWalk64]
- end;
- end;
- var
- _StackWalk: Pointer;
- function StackWalk;
- begin
- GetProcedureAddress(_StackWalk, ImageHlpLib, 'StackWalk');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_StackWalk]
- end;
- end;
- var
- _ImagehlpApiVersion: Pointer;
- function ImagehlpApiVersion;
- begin
- GetProcedureAddress(_ImagehlpApiVersion, ImageHlpLib, 'ImagehlpApiVersion');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_ImagehlpApiVersion]
- end;
- end;
- var
- _ImagehlpApiVersionEx: Pointer;
- function ImagehlpApiVersionEx;
- begin
- GetProcedureAddress(_ImagehlpApiVersionEx, ImageHlpLib, 'ImagehlpApiVersionEx');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_ImagehlpApiVersionEx]
- end;
- end;
- var
- _GetTimestampForLoadedLibrary: Pointer;
- function GetTimestampForLoadedLibrary;
- begin
- GetProcedureAddress(_GetTimestampForLoadedLibrary, ImageHlpLib, 'GetTimestampForLoadedLibrary');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_GetTimestampForLoadedLibrary]
- end;
- end;
- var
- _SymSetOptions: Pointer;
- function SymSetOptions;
- begin
- GetProcedureAddress(_SymSetOptions, ImageHlpLib, 'SymSetOptions');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymSetOptions]
- end;
- end;
- var
- _SymGetOptions: Pointer;
- function SymGetOptions;
- begin
- GetProcedureAddress(_SymGetOptions, ImageHlpLib, 'SymGetOptions');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymGetOptions]
- end;
- end;
- var
- _SymCleanup: Pointer;
- function SymCleanup;
- begin
- GetProcedureAddress(_SymCleanup, ImageHlpLib, 'SymCleanup');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymCleanup]
- end;
- end;
- var
- _SymMatchString: Pointer;
- function SymMatchString;
- begin
- GetProcedureAddress(_SymMatchString, ImageHlpLib, 'SymMatchString');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymMatchString]
- end;
- end;
- var
- _SymEnumSourceFiles: Pointer;
- function SymEnumSourceFiles;
- begin
- GetProcedureAddress(_SymEnumSourceFiles, ImageHlpLib, 'SymEnumSourceFiles');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymEnumSourceFiles]
- end;
- end;
- var
- _SymEnumerateModules64: Pointer;
- function SymEnumerateModules64;
- begin
- GetProcedureAddress(_SymEnumerateModules64, ImageHlpLib, 'SymEnumerateModules64');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymEnumerateModules64]
- end;
- end;
- var
- _SymEnumerateModules: Pointer;
- function SymEnumerateModules;
- begin
- GetProcedureAddress(_SymEnumerateModules, ImageHlpLib, 'SymEnumerateModules');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymEnumerateModules]
- end;
- end;
- var
- _SymEnumerateSymbols64: Pointer;
- function SymEnumerateSymbols64;
- begin
- GetProcedureAddress(_SymEnumerateSymbols64, ImageHlpLib, 'SymEnumerateSymbols64');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymEnumerateSymbols64]
- end;
- end;
- var
- _SymEnumerateSymbolsW64: Pointer;
- function SymEnumerateSymbolsW64;
- begin
- GetProcedureAddress(_SymEnumerateSymbolsW64, ImageHlpLib, 'SymEnumerateSymbolsW64');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymEnumerateSymbolsW64]
- end;
- end;
- var
- _SymEnumerateSymbols: Pointer;
- function SymEnumerateSymbols;
- begin
- GetProcedureAddress(_SymEnumerateSymbols, ImageHlpLib, 'SymEnumerateSymbols');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymEnumerateSymbols]
- end;
- end;
- var
- _SymEnumerateSymbolsW: Pointer;
- function SymEnumerateSymbolsW;
- begin
- GetProcedureAddress(_SymEnumerateSymbolsW, ImageHlpLib, 'SymEnumerateSymbolsW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymEnumerateSymbolsW]
- end;
- end;
- var
- _EnumerateLoadedModules64: Pointer;
- function EnumerateLoadedModules64;
- begin
- GetProcedureAddress(_EnumerateLoadedModules64, ImageHlpLib, 'EnumerateLoadedModules64');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_EnumerateLoadedModules64]
- end;
- end;
- var
- _EnumerateLoadedModules: Pointer;
- function EnumerateLoadedModules;
- begin
- GetProcedureAddress(_EnumerateLoadedModules, ImageHlpLib, 'EnumerateLoadedModules');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_EnumerateLoadedModules]
- end;
- end;
- var
- _SymFunctionTableAccess64: Pointer;
- function SymFunctionTableAccess64;
- begin
- GetProcedureAddress(_SymFunctionTableAccess64, ImageHlpLib, 'SymFunctionTableAccess64');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymFunctionTableAccess64]
- end;
- end;
- var
- _SymFunctionTableAccess: Pointer;
- function SymFunctionTableAccess;
- begin
- GetProcedureAddress(_SymFunctionTableAccess, ImageHlpLib, 'SymFunctionTableAccess');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymFunctionTableAccess]
- end;
- end;
- var
- _SymGetModuleInfo64: Pointer;
- function SymGetModuleInfo64;
- begin
- GetProcedureAddress(_SymGetModuleInfo64, ImageHlpLib, 'SymGetModuleInfo64');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymGetModuleInfo64]
- end;
- end;
- var
- _SymGetModuleInfoW64: Pointer;
- function SymGetModuleInfoW64;
- begin
- GetProcedureAddress(_SymGetModuleInfoW64, ImageHlpLib, 'SymGetModuleInfoW64');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymGetModuleInfoW64]
- end;
- end;
- var
- _SymGetModuleInfo: Pointer;
- function SymGetModuleInfo;
- begin
- GetProcedureAddress(_SymGetModuleInfo, ImageHlpLib, 'SymGetModuleInfo');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymGetModuleInfo]
- end;
- end;
- var
- _SymGetModuleInfoW: Pointer;
- function SymGetModuleInfoW;
- begin
- GetProcedureAddress(_SymGetModuleInfoW, ImageHlpLib, 'SymGetModuleInfoW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymGetModuleInfoW]
- end;
- end;
- var
- _SymGetModuleBase64: Pointer;
- function SymGetModuleBase64;
- begin
- GetProcedureAddress(_SymGetModuleBase64, ImageHlpLib, 'SymGetModuleBase64');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymGetModuleBase64]
- end;
- end;
- var
- _SymGetModuleBase: Pointer;
- function SymGetModuleBase;
- begin
- GetProcedureAddress(_SymGetModuleBase, ImageHlpLib, 'SymGetModuleBase');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymGetModuleBase]
- end;
- end;
- var
- _SymGetSymNext64: Pointer;
- function SymGetSymNext64;
- begin
- GetProcedureAddress(_SymGetSymNext64, ImageHlpLib, 'SymGetSymNext64');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymGetSymNext64]
- end;
- end;
- var
- _SymGetSymNext: Pointer;
- function SymGetSymNext;
- begin
- GetProcedureAddress(_SymGetSymNext, ImageHlpLib, 'SymGetSymNext');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymGetSymNext]
- end;
- end;
- var
- _SymGetSymPrev64: Pointer;
- function SymGetSymPrev64;
- begin
- GetProcedureAddress(_SymGetSymPrev64, ImageHlpLib, 'SymGetSymPrev64');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymGetSymPrev64]
- end;
- end;
- var
- _SymGetSymPrev: Pointer;
- function SymGetSymPrev;
- begin
- GetProcedureAddress(_SymGetSymPrev, ImageHlpLib, 'SymGetSymPrev');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymGetSymPrev]
- end;
- end;
- var
- _SymGetLineFromAddr64: Pointer;
- function SymGetLineFromAddr64;
- begin
- GetProcedureAddress(_SymGetLineFromAddr64, ImageHlpLib, 'SymGetLineFromAddr64');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymGetLineFromAddr64]
- end;
- end;
- var
- _SymGetLineFromAddr: Pointer;
- function SymGetLineFromAddr;
- begin
- GetProcedureAddress(_SymGetLineFromAddr, ImageHlpLib, 'SymGetLineFromAddr');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymGetLineFromAddr]
- end;
- end;
- var
- _SymGetLineFromName64: Pointer;
- function SymGetLineFromName64;
- begin
- GetProcedureAddress(_SymGetLineFromName64, ImageHlpLib, 'SymGetLineFromName64');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymGetLineFromName64]
- end;
- end;
- var
- _SymGetLineFromName: Pointer;
- function SymGetLineFromName;
- begin
- GetProcedureAddress(_SymGetLineFromName, ImageHlpLib, 'SymGetLineFromName');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymGetLineFromName]
- end;
- end;
- var
- _SymGetLineNext64: Pointer;
- function SymGetLineNext64;
- begin
- GetProcedureAddress(_SymGetLineNext64, ImageHlpLib, 'SymGetLineNext64');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymGetLineNext64]
- end;
- end;
- var
- _SymGetLineNext: Pointer;
- function SymGetLineNext;
- begin
- GetProcedureAddress(_SymGetLineNext, ImageHlpLib, 'SymGetLineNext');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymGetLineNext]
- end;
- end;
- var
- _SymGetLinePrev64: Pointer;
- function SymGetLinePrev64;
- begin
- GetProcedureAddress(_SymGetLinePrev64, ImageHlpLib, 'SymGetLinePrev64');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymGetLinePrev64]
- end;
- end;
- var
- _SymGetLinePrev: Pointer;
- function SymGetLinePrev;
- begin
- GetProcedureAddress(_SymGetLinePrev, ImageHlpLib, 'SymGetLinePrev');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymGetLinePrev]
- end;
- end;
- var
- _SymMatchFileName: Pointer;
- function SymMatchFileName;
- begin
- GetProcedureAddress(_SymMatchFileName, ImageHlpLib, 'SymMatchFileName');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymMatchFileName]
- end;
- end;
- var
- _SymInitialize: Pointer;
- function SymInitialize;
- begin
- GetProcedureAddress(_SymInitialize, ImageHlpLib, 'SymInitialize');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymInitialize]
- end;
- end;
- var
- _SymGetSearchPath: Pointer;
- function SymGetSearchPath;
- begin
- GetProcedureAddress(_SymGetSearchPath, ImageHlpLib, 'SymGetSearchPath');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymGetSearchPath]
- end;
- end;
- var
- _SymSetSearchPath: Pointer;
- function SymSetSearchPath;
- begin
- GetProcedureAddress(_SymSetSearchPath, ImageHlpLib, 'SymSetSearchPath');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymSetSearchPath]
- end;
- end;
- var
- _SymLoadModuleEx: Pointer;
- function SymLoadModuleEx;
- begin
- GetProcedureAddress(_SymLoadModuleEx, ImageHlpLib, 'SymLoadModuleEx');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymLoadModuleEx]
- end;
- end;
- var
- _SymLoadModule64: Pointer;
- function SymLoadModule64;
- begin
- GetProcedureAddress(_SymLoadModule64, ImageHlpLib, 'SymLoadModule64');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymLoadModule64]
- end;
- end;
- var
- _SymLoadModule: Pointer;
- function SymLoadModule;
- begin
- GetProcedureAddress(_SymLoadModule, ImageHlpLib, 'SymLoadModule');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymLoadModule]
- end;
- end;
- var
- _SymUnloadModule64: Pointer;
- function SymUnloadModule64;
- begin
- GetProcedureAddress(_SymUnloadModule64, ImageHlpLib, 'SymUnloadModule64');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymUnloadModule64]
- end;
- end;
- var
- _SymUnloadModule: Pointer;
- function SymUnloadModule;
- begin
- GetProcedureAddress(_SymUnloadModule, ImageHlpLib, 'SymUnloadModule');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymUnloadModule]
- end;
- end;
- var
- _SymUnDName64: Pointer;
- function SymUnDName64;
- begin
- GetProcedureAddress(_SymUnDName64, ImageHlpLib, 'SymUnDName64');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymUnDName64]
- end;
- end;
- var
- _SymUnDName: Pointer;
- function SymUnDName;
- begin
- GetProcedureAddress(_SymUnDName, ImageHlpLib, 'SymUnDName');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymUnDName]
- end;
- end;
- var
- _SymRegisterCallback64: Pointer;
- function SymRegisterCallback64;
- begin
- GetProcedureAddress(_SymRegisterCallback64, ImageHlpLib, 'SymRegisterCallback64');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymRegisterCallback64]
- end;
- end;
- var
- _SymRegFuncEntryCallback64: Pointer;
- function SymRegisterFunctionEntryCallback64;
- begin
- GetProcedureAddress(_SymRegFuncEntryCallback64, ImageHlpLib, 'SymRegisterFunctionEntryCallback64');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymRegFuncEntryCallback64]
- end;
- end;
- var
- _SymRegisterCallback: Pointer;
- function SymRegisterCallback;
- begin
- GetProcedureAddress(_SymRegisterCallback, ImageHlpLib, 'SymRegisterCallback');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymRegisterCallback]
- end;
- end;
- var
- _SymRegisterFuncEntryCallback: Pointer;
- function SymRegisterFunctionEntryCallback;
- begin
- GetProcedureAddress(_SymRegisterFuncEntryCallback, ImageHlpLib, 'SymRegisterFunctionEntryCallback');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymRegisterFuncEntryCallback]
- end;
- end;
- var
- _SymSetContext: Pointer;
- function SymSetContext;
- begin
- GetProcedureAddress(_SymSetContext, ImageHlpLib, 'SymSetContext');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymSetContext]
- end;
- end;
- var
- _SymFromAddr: Pointer;
- function SymFromAddr;
- begin
- GetProcedureAddress(_SymFromAddr, ImageHlpLib, 'SymFromAddr');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymFromAddr]
- end;
- end;
- var
- _SymFromName: Pointer;
- function SymFromName;
- begin
- GetProcedureAddress(_SymFromName, ImageHlpLib, 'SymFromName');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymFromName]
- end;
- end;
- var
- _SymEnumSymbolsForAddr: Pointer;
- function SymEnumSymbolsForAddr;
- begin
- GetProcedureAddress(_SymEnumSymbolsForAddr, ImageHlpLib, 'SymEnumSymbolsForAddr');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymEnumSymbolsForAddr]
- end;
- end;
- var
- _SymEnumSymbols: Pointer;
- function SymEnumSymbols;
- begin
- GetProcedureAddress(_SymEnumSymbols, ImageHlpLib, 'SymEnumSymbols');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymEnumSymbols]
- end;
- end;
- var
- _SymGetTypeInfo: Pointer;
- function SymGetTypeInfo;
- begin
- GetProcedureAddress(_SymGetTypeInfo, ImageHlpLib, 'SymGetTypeInfo');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymGetTypeInfo]
- end;
- end;
- var
- _SymEnumTypes: Pointer;
- function SymEnumTypes;
- begin
- GetProcedureAddress(_SymEnumTypes, ImageHlpLib, 'SymEnumTypes');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymEnumTypes]
- end;
- end;
- var
- _SymGetTypeFromName: Pointer;
- function SymGetTypeFromName;
- begin
- GetProcedureAddress(_SymGetTypeFromName, ImageHlpLib, 'SymGetTypeFromName');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymGetTypeFromName]
- end;
- end;
- var
- _SymAddSymbol: Pointer;
- function SymAddSymbol;
- begin
- GetProcedureAddress(_SymAddSymbol, ImageHlpLib, 'SymAddSymbol');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymAddSymbol]
- end;
- end;
- var
- _SymDeleteSymbol: Pointer;
- function SymDeleteSymbol;
- begin
- GetProcedureAddress(_SymDeleteSymbol, ImageHlpLib, 'SymDeleteSymbol');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymDeleteSymbol]
- end;
- end;
- var
- _DbgHelpCreateUserDump: Pointer;
- function DbgHelpCreateUserDump;
- begin
- GetProcedureAddress(_DbgHelpCreateUserDump, ImageHlpLib, 'DbgHelpCreateUserDump');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_DbgHelpCreateUserDump]
- end;
- end;
- var
- _DbgHelpCreateUserDumpW: Pointer;
- function DbgHelpCreateUserDumpW;
- begin
- GetProcedureAddress(_DbgHelpCreateUserDumpW, ImageHlpLib, 'DbgHelpCreateUserDumpW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_DbgHelpCreateUserDumpW]
- end;
- end;
- var
- _SymGetSymFromAddr64: Pointer;
- function SymGetSymFromAddr64;
- begin
- GetProcedureAddress(_SymGetSymFromAddr64, ImageHlpLib, 'SymGetSymFromAddr64');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymGetSymFromAddr64]
- end;
- end;
- var
- _SymGetSymFromAddr: Pointer;
- function SymGetSymFromAddr;
- begin
- GetProcedureAddress(_SymGetSymFromAddr, ImageHlpLib, 'SymGetSymFromAddr');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymGetSymFromAddr]
- end;
- end;
- var
- _SymGetSymFromName64: Pointer;
- function SymGetSymFromName64;
- begin
- GetProcedureAddress(_SymGetSymFromName64, ImageHlpLib, 'SymGetSymFromName64');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymGetSymFromName64]
- end;
- end;
- var
- _SymGetSymFromName: Pointer;
- function SymGetSymFromName;
- begin
- GetProcedureAddress(_SymGetSymFromName, ImageHlpLib, 'SymGetSymFromName');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymGetSymFromName]
- end;
- end;
- var
- _FindFileInPath: Pointer;
- function FindFileInPath;
- begin
- GetProcedureAddress(_FindFileInPath, ImageHlpLib, 'FindFileInPath');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_FindFileInPath]
- end;
- end;
- var
- _FindFileInSearchPath: Pointer;
- function FindFileInSearchPath;
- begin
- GetProcedureAddress(_FindFileInSearchPath, ImageHlpLib, 'FindFileInSearchPath');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_FindFileInSearchPath]
- end;
- end;
- var
- _SymEnumSym: Pointer;
- function SymEnumSym;
- begin
- GetProcedureAddress(_SymEnumSym, ImageHlpLib, 'SymEnumSym');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_SymEnumSym]
- end;
- end;
- var
- _MiniDumpWriteDump: Pointer;
- function MiniDumpWriteDump;
- begin
- GetProcedureAddress(_MiniDumpWriteDump, ImageHlpLib, 'MiniDumpWriteDump');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_MiniDumpWriteDump]
- end;
- end;
- var
- _MiniDumpReadDumpStream: Pointer;
- function MiniDumpReadDumpStream;
- begin
- GetProcedureAddress(_MiniDumpReadDumpStream, ImageHlpLib, 'MiniDumpReadDumpStream');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_MiniDumpReadDumpStream]
- end;
- end;
- {$ELSE}
- function BindImage; external ImageHlpLib name 'BindImage';
- function BindImageEx; external ImageHlpLib name 'BindImageEx';
- function ReBaseImage; external ImageHlpLib name 'ReBaseImage';
- function ReBaseImage64; external ImageHlpLib name 'ReBaseImage64';
- function CheckSumMappedFile; external ImageHlpLib name 'CheckSumMappedFile';
- function MapFileAndCheckSumA; external ImageHlpLib name 'MapFileAndCheckSumA';
- function MapFileAndCheckSumW; external ImageHlpLib name 'MapFileAndCheckSumW';
- function MapFileAndCheckSum; external ImageHlpLib name 'MapFileAndCheckSum' + AWSuffix;
- function GetImageConfigInformation; external ImageHlpLib name 'GetImageConfigInformation';
- function GetImageUnusedHeaderBytes; external ImageHlpLib name 'GetImageUnusedHeaderBytes';
- function SetImageConfigInformation; external ImageHlpLib name 'SetImageConfigInformation';
- function ImageGetDigestStream; external ImageHlpLib name 'ImageGetDigestStream';
- function ImageAddCertificate; external ImageHlpLib name 'ImageAddCertificate';
- function ImageRemoveCertificate; external ImageHlpLib name 'ImageRemoveCertificate';
- function ImageEnumerateCertificates; external ImageHlpLib name 'ImageEnumerateCertificates';
- function ImageGetCertificateData; external ImageHlpLib name 'ImageGetCertificateData';
- function ImageGetCertificateHeader; external ImageHlpLib name 'ImageGetCertificateHeader';
- function ImageLoad; external ImageHlpLib name 'ImageLoad';
- function ImageUnload; external ImageHlpLib name 'ImageUnload';
- function MapAndLoad; external ImageHlpLib name 'MapAndLoad';
- function UnMapAndLoad; external ImageHlpLib name 'UnMapAndLoad';
- function TouchFileTimes; external ImageHlpLib name 'TouchFileTimes';
- function SplitSymbols; external ImageHlpLib name 'SplitSymbols';
- function UpdateDebugInfoFile; external ImageHlpLib name 'UpdateDebugInfoFile';
- function UpdateDebugInfoFileEx; external ImageHlpLib name 'UpdateDebugInfoFileEx';
- function FindDebugInfoFile; external ImageHlpLib name 'FindDebugInfoFile';
- function FindDebugInfoFileEx; external ImageHlpLib name 'FindDebugInfoFileEx';
- function SymFindFileInPath; external ImageHlpLib name 'SymFindFileInPath';
- function FindExecutableImage; external ImageHlpLib name 'FindExecutableImage';
- function FindExecutableImageEx; external ImageHlpLib name 'FindExecutableImageEx';
- function ImageNtHeader; external ImageHlpLib name 'ImageNtHeader';
- function ImageDirectoryEntryToDataEx; external ImageHlpLib name 'ImageDirectoryEntryToDataEx';
- function ImageDirectoryEntryToData; external ImageHlpLib name 'ImageDirectoryEntryToData';
- function ImageRvaToSection; external ImageHlpLib name 'ImageRvaToSection';
- function ImageRvaToVa; external ImageHlpLib name 'ImageRvaToVa';
- function MapDebugInformation; external ImageHlpLib name 'MapDebugInformation';
- function UnmapDebugInformation; external ImageHlpLib name 'UnmapDebugInformation';
- function SearchTreeForFile; external ImageHlpLib name 'SearchTreeForFile';
- function EnumDirTree; external ImageHlpLib name 'EnumDirTree';
- function MakeSureDirectoryPathExists; external ImageHlpLib name 'MakeSureDirectoryPathExists';
- function UnDecorateSymbolName; external ImageHlpLib name 'UnDecorateSymbolName';
- function StackWalk64; external ImageHlpLib name 'StackWalk64';
- function StackWalk; external ImageHlpLib name 'StackWalk';
- function ImagehlpApiVersion; external ImageHlpLib name 'ImagehlpApiVersion';
- function ImagehlpApiVersionEx; external ImageHlpLib name 'ImagehlpApiVersionEx';
- function GetTimestampForLoadedLibrary; external ImageHlpLib name 'GetTimestampForLoadedLibrary';
- function SymSetOptions; external ImageHlpLib name 'SymSetOptions';
- function SymGetOptions; external ImageHlpLib name 'SymGetOptions';
- function SymCleanup; external ImageHlpLib name 'SymCleanup';
- function SymMatchString; external ImageHlpLib name 'SymMatchString';
- function SymEnumSourceFiles; external ImageHlpLib name 'SymEnumSourceFiles';
- function SymEnumerateModules64; external ImageHlpLib name 'SymEnumerateModules64';
- function SymEnumerateModules; external ImageHlpLib name 'SymEnumerateModules';
- function SymEnumerateSymbols64; external ImageHlpLib name 'SymEnumerateSymbols64';
- function SymEnumerateSymbolsW64; external ImageHlpLib name 'SymEnumerateSymbolsW64';
- function SymEnumerateSymbols; external ImageHlpLib name 'SymEnumerateSymbols';
- function SymEnumerateSymbolsW; external ImageHlpLib name 'SymEnumerateSymbolsW';
- function EnumerateLoadedModules64; external ImageHlpLib name 'EnumerateLoadedModules64';
- function EnumerateLoadedModules; external ImageHlpLib name 'EnumerateLoadedModules';
- function SymFunctionTableAccess64; external ImageHlpLib name 'SymFunctionTableAccess64';
- function SymFunctionTableAccess; external ImageHlpLib name 'SymFunctionTableAccess';
- function SymGetModuleInfo64; external ImageHlpLib name 'SymGetModuleInfo64';
- function SymGetModuleInfoW64; external ImageHlpLib name 'SymGetModuleInfoW64';
- function SymGetModuleInfo; external ImageHlpLib name 'SymGetModuleInfo';
- function SymGetModuleInfoW; external ImageHlpLib name 'SymGetModuleInfoW';
- function SymGetModuleBase64; external ImageHlpLib name 'SymGetModuleBase64';
- function SymGetModuleBase; external ImageHlpLib name 'SymGetModuleBase';
- function SymGetSymNext64; external ImageHlpLib name 'SymGetSymNext64';
- function SymGetSymNext; external ImageHlpLib name 'SymGetSymNext';
- function SymGetSymPrev64; external ImageHlpLib name 'SymGetSymPrev64';
- function SymGetSymPrev; external ImageHlpLib name 'SymGetSymPrev';
- function SymGetLineFromAddr64; external ImageHlpLib name 'SymGetLineFromAddr64';
- function SymGetLineFromAddr; external ImageHlpLib name 'SymGetLineFromAddr';
- function SymGetLineFromName64; external ImageHlpLib name 'SymGetLineFromName64';
- function SymGetLineFromName; external ImageHlpLib name 'SymGetLineFromName';
- function SymGetLineNext64; external ImageHlpLib name 'SymGetLineNext64';
- function SymGetLineNext; external ImageHlpLib name 'SymGetLineNext';
- function SymGetLinePrev64; external ImageHlpLib name 'SymGetLinePrev64';
- function SymGetLinePrev; external ImageHlpLib name 'SymGetLinePrev';
- function SymMatchFileName; external ImageHlpLib name 'SymMatchFileName';
- function SymInitialize; external ImageHlpLib name 'SymInitialize';
- function SymGetSearchPath; external ImageHlpLib name 'SymGetSearchPath';
- function SymSetSearchPath; external ImageHlpLib name 'SymSetSearchPath';
- function SymLoadModuleEx; external ImageHlpLib name 'SymLoadModuleEx';
- function SymLoadModule64; external ImageHlpLib name 'SymLoadModule64';
- function SymLoadModule; external ImageHlpLib name 'SymLoadModule';
- function SymUnloadModule64; external ImageHlpLib name 'SymUnloadModule64';
- function SymUnloadModule; external ImageHlpLib name 'SymUnloadModule';
- function SymUnDName64; external ImageHlpLib name 'SymUnDName64';
- function SymUnDName; external ImageHlpLib name 'SymUnDName';
- function SymRegisterCallback64; external ImageHlpLib name 'SymRegisterCallback64';
- function SymRegisterFunctionEntryCallback64; external ImageHlpLib name 'SymRegisterFunctionEntryCallback64';
- function SymRegisterCallback; external ImageHlpLib name 'SymRegisterCallback';
- function SymRegisterFunctionEntryCallback; external ImageHlpLib name 'SymRegisterFunctionEntryCallback';
- function SymSetContext; external ImageHlpLib name 'SymSetContext';
- function SymFromAddr; external ImageHlpLib name 'SymFromAddr';
- function SymFromName; external ImageHlpLib name 'SymFromName';
- function SymEnumSymbolsForAddr; external ImageHlpLib name 'SymEnumSymbolsForAddr';
- function SymEnumSymbols; external ImageHlpLib name 'SymEnumSymbols';
- function SymGetTypeInfo; external ImageHlpLib name 'SymGetTypeInfo';
- function SymEnumTypes; external ImageHlpLib name 'SymEnumTypes';
- function SymGetTypeFromName; external ImageHlpLib name 'SymGetTypeFromName';
- function SymAddSymbol; external ImageHlpLib name 'SymAddSymbol';
- function SymDeleteSymbol; external ImageHlpLib name 'SymDeleteSymbol';
- function DbgHelpCreateUserDump; external ImageHlpLib name 'DbgHelpCreateUserDump';
- function DbgHelpCreateUserDumpW; external ImageHlpLib name 'DbgHelpCreateUserDumpW';
- function SymGetSymFromAddr64; external ImageHlpLib name 'SymGetSymFromAddr64';
- function SymGetSymFromAddr; external ImageHlpLib name 'SymGetSymFromAddr';
- function SymGetSymFromName64; external ImageHlpLib name 'SymGetSymFromName64';
- function SymGetSymFromName; external ImageHlpLib name 'SymGetSymFromName';
- function FindFileInPath; external ImageHlpLib name 'FindFileInPath';
- function FindFileInSearchPath; external ImageHlpLib name 'FindFileInSearchPath';
- function SymEnumSym; external ImageHlpLib name 'SymEnumSym';
- function MiniDumpWriteDump; external ImageHlpLib name 'MiniDumpWriteDump';
- function MiniDumpReadDumpStream; external ImageHlpLib name 'MiniDumpReadDumpStream';
- {$ENDIF DYNAMIC_LINK}
- end.
|