imagehlp.pp 77 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606
  1. {
  2. This file is part of the Free Pascal run time library.
  3. Copyright (c) 1999-2005 by Marco van de Voort
  4. member of the Free Pascal development team.
  5. See the file COPYING.FPC, included in this distribution,
  6. for details about the copyright.
  7. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  10. Notes
  11. - some callback types had Pxxx naming in the original header.
  12. Since that is a-typical, I can't predict how Borland did
  13. handle that. If you have problems, add a bugreport.
  14. - some anonymous unions were not representable in FPC. As a first approx
  15. I added a dummy nested record union.
  16. }
  17. unit imagehlp;
  18. Interface
  19. Uses Windows;
  20. {$packrecords 8}
  21. {$ifdef win64}
  22. {$define imagehlp64}
  23. {$endif}
  24. {$ifdef FPC_OS_UNICODE}
  25. {$define UNICODE}
  26. {$endif}
  27. Const
  28. IMAGE_SEPARATION = 64*1024;
  29. DBHHEADER_DEBUGDIRS = $1;
  30. API_VERSION_NUMBER = 9;
  31. SLMFLAG_VIRTUAL = $1;
  32. MINIDUMP_SIGNATURE = 'PMDM'; // dword value?
  33. MINIDUMP_VERSION = 42899;
  34. External_Library = 'imagehlp.dll';
  35. MAX_SYM_NAME = 2000;
  36. BIND_NO_BOUND_IMPORTS = $00000001;
  37. BIND_NO_UPDATE = $00000002;
  38. BIND_ALL_IMAGES = $00000004;
  39. BIND_CACHE_IMPORT_DLLS = $00000008; // Cache dll's across
  40. // calls to BindImageEx
  41. // (same as NT 3.1->NT 4.0)
  42. BIND_REPORT_64BIT_VA = $00000010;
  43. CHECKSUM_SUCCESS = 0;
  44. CHECKSUM_OPEN_FAILURE = 1;
  45. CHECKSUM_MAP_FAILURE = 2;
  46. CHECKSUM_MAPVIEW_FAILURE = 3;
  47. CHECKSUM_UNICODE_FAILURE = 4;
  48. SPLITSYM_REMOVE_PRIVATE = $00000001; // Remove CV types/symbols and Fixup debug
  49. // Used for creating .dbg files that ship
  50. // as part of the product.
  51. SPLITSYM_EXTRACT_ALL = $00000002; // Extract all debug info from image.
  52. // Normally, FPO is left/* IN */ the image
  53. // to allow stack traces through the code.
  54. // Using this switch is similar to linking
  55. // with -debug:none except the .dbg file
  56. // exists...
  57. SPLITSYM_SYMBOLPATH_IS_SRC = $00000004; // The SymbolFilePath contains an alternate
  58. // path to locate the pdb.
  59. CERT_PE_IMAGE_DIGEST_DEBUG_INFO = $01;
  60. CERT_PE_IMAGE_DIGEST_RESOURCES = $02;
  61. CERT_PE_IMAGE_DIGEST_ALL_IMPORT_INFO = $04;
  62. CERT_PE_IMAGE_DIGEST_NON_PE_INFO = $08; // include data outside the PE image
  63. CERT_SECTION_TYPE_ANY = $FF; // Any Certificate type
  64. SSRVOPT_CALLBACK = $0001;
  65. SSRVOPT_DWORD = $0002;
  66. SSRVOPT_DWORDPTR = $0004;
  67. SSRVOPT_GUIDPTR = $0008;
  68. SSRVOPT_OLDGUIDPTR = $0010;
  69. SSRVOPT_UNATTENDED = $0020;
  70. SSRVOPT_NOCOPY = $0040;
  71. SSRVOPT_PARENTWIN = $0080;
  72. SSRVOPT_PARAMTYPE = $0100;
  73. SSRVOPT_SECURE = $0200;
  74. SSRVOPT_TRACE = $0400;
  75. SSRVOPT_SETCONTEXT = $0800;
  76. SSRVOPT_PROXY = $1000;
  77. SSRVOPT_DOWNSTREAM_STORE = $2000;
  78. SSRVOPT_RESET = ULONG_PTR(-1);
  79. SSRVACTION_TRACE = 1;
  80. SSRVACTION_QUERYCANCEL = 2;
  81. SSRVACTION_EVENT = 3;
  82. UNDNAME_COMPLETE = $0000; // Enable full undecoration
  83. UNDNAME_NO_LEADING_UNDERSCORES = $0001; // Remove leading underscores from MS extended keywords
  84. UNDNAME_NO_MS_KEYWORDS = $0002; // Disable expansion of MS extended keywords
  85. UNDNAME_NO_FUNCTION_RETURNS = $0004; // Disable expansion of return type for primary declaration
  86. UNDNAME_NO_ALLOCATION_MODEL = $0008; // Disable expansion of the declaration model
  87. UNDNAME_NO_ALLOCATION_LANGUAGE = $0010; // Disable expansion of the declaration language specifier
  88. UNDNAME_NO_MS_THISTYPE = $0020; // NYI Disable expansion of MS keywords on the 'this' type for primary declaration
  89. UNDNAME_NO_CV_THISTYPE = $0040; // NYI Disable expansion of CV modifiers on the 'this' type for primary declaration
  90. UNDNAME_NO_THISTYPE = $0060; // Disable all modifiers on the 'this' type
  91. UNDNAME_NO_ACCESS_SPECIFIERS = $0080; // Disable expansion of access specifiers for members
  92. UNDNAME_NO_THROW_SIGNATURES = $0100; // Disable expansion of 'throw-signatures' for functions and pointers to functions
  93. UNDNAME_NO_MEMBER_TYPE = $0200; // Disable expansion of 'static' or 'virtual'ness of members
  94. UNDNAME_NO_RETURN_UDT_MODEL = $0400; // Disable expansion of MS model for UDT returns
  95. UNDNAME_32_BIT_DECODE = $0800; // Undecorate 32-bit decorated names
  96. UNDNAME_NAME_ONLY = $1000; // Crack only the name for primary declaration;
  97. // return just [scope::]name. Does expand template params
  98. UNDNAME_NO_ARGUMENTS = $2000; // Don't undecorate arguments to function
  99. UNDNAME_NO_SPECIAL_SYMS = $4000; // Don't undecorate special names (v-table, vcall, vector xxx, metatype, etc)
  100. SYMFLAG_VALUEPRESENT = $00000001;
  101. SYMFLAG_REGISTER = $00000008;
  102. SYMFLAG_REGREL = $00000010;
  103. SYMFLAG_FRAMEREL = $00000020;
  104. SYMFLAG_PARAMETER = $00000040;
  105. SYMFLAG_LOCAL = $00000080;
  106. SYMFLAG_CONSTANT = $00000100;
  107. SYMFLAG_EXPORT = $00000200;
  108. SYMFLAG_FORWARDER = $00000400;
  109. SYMFLAG_FUNCTION = $00000800;
  110. SYMFLAG_VIRTUAL = $00001000;
  111. SYMFLAG_THUNK = $00002000;
  112. SYMFLAG_TLSREL = $00004000;
  113. CBA_DEFERRED_SYMBOL_LOAD_START = $00000001;
  114. CBA_DEFERRED_SYMBOL_LOAD_COMPLETE = $00000002;
  115. CBA_DEFERRED_SYMBOL_LOAD_FAILURE = $00000003;
  116. CBA_SYMBOLS_UNLOADED = $00000004;
  117. CBA_DUPLICATE_SYMBOL = $00000005;
  118. CBA_READ_MEMORY = $00000006;
  119. CBA_DEFERRED_SYMBOL_LOAD_CANCEL = $00000007;
  120. CBA_SET_OPTIONS = $00000008;
  121. CBA_EVENT = $00000010;
  122. CBA_DEFERRED_SYMBOL_LOAD_PARTIAL = $00000020;
  123. CBA_DEBUG_INFO = $10000000;
  124. DSLFLAG_MISMATCHED_PDB = $1;
  125. DSLFLAG_MISMATCHED_DBG = $2;
  126. SYMOPT_CASE_INSENSITIVE = $00000001;
  127. SYMOPT_UNDNAME = $00000002;
  128. SYMOPT_DEFERRED_LOADS = $00000004;
  129. SYMOPT_NO_CPP = $00000008;
  130. SYMOPT_LOAD_LINES = $00000010;
  131. SYMOPT_OMAP_FIND_NEAREST = $00000020;
  132. SYMOPT_LOAD_ANYTHING = $00000040;
  133. SYMOPT_IGNORE_CVREC = $00000080;
  134. SYMOPT_NO_UNQUALIFIED_LOADS = $00000100;
  135. SYMOPT_FAIL_CRITICAL_ERRORS = $00000200;
  136. SYMOPT_EXACT_SYMBOLS = $00000400;
  137. SYMOPT_ALLOW_ABSOLUTE_SYMBOLS = $00000800;
  138. SYMOPT_IGNORE_NT_SYMPATH = $00001000;
  139. SYMOPT_INCLUDE_32BIT_MODULES = $00002000;
  140. SYMOPT_PUBLICS_ONLY = $00004000;
  141. SYMOPT_NO_PUBLICS = $00008000;
  142. SYMOPT_AUTO_PUBLICS = $00010000;
  143. SYMOPT_NO_IMAGE_SEARCH = $00020000;
  144. SYMOPT_SECURE = $00040000;
  145. SYMOPT_NO_PROMPTS = $00080000;
  146. SYMOPT_DEBUG = $80000000;
  147. SYMENUMFLAG_FULLSRCH = 1;
  148. SYMENUMFLAG_SPEEDSRCH = 2;
  149. SYMF_OMAP_GENERATED = $00000001;
  150. SYMF_OMAP_MODIFIED = $00000002;
  151. SYMF_REGISTER = $00000008;
  152. SYMF_REGREL = $00000010;
  153. SYMF_FRAMEREL = $00000020;
  154. SYMF_PARAMETER = $00000040;
  155. SYMF_LOCAL = $00000080;
  156. SYMF_CONSTANT = $00000100;
  157. SYMF_EXPORT = $00000200;
  158. SYMF_FORWARDER = $00000400;
  159. SYMF_FUNCTION = $00000800;
  160. SYMF_VIRTUAL = $00001000;
  161. SYMF_THUNK = $00002000;
  162. SYMF_TLSREL = $00004000;
  163. // These values should also not be used.
  164. // They have been replaced by SYMFLAG_ values.
  165. IMAGEHLP_SYMBOL_INFO_VALUEPRESENT = 1;
  166. IMAGEHLP_SYMBOL_INFO_REGISTER = SYMF_REGISTER ; // = $0008
  167. IMAGEHLP_SYMBOL_INFO_REGRELATIVE = SYMF_REGREL ; // = $0010
  168. IMAGEHLP_SYMBOL_INFO_FRAMERELATIVE = SYMF_FRAMEREL ; // = $0020
  169. IMAGEHLP_SYMBOL_INFO_PARAMETER = SYMF_PARAMETER ; // = $0040
  170. IMAGEHLP_SYMBOL_INFO_LOCAL = SYMF_LOCAL ; // = $0080
  171. IMAGEHLP_SYMBOL_INFO_CONSTANT = SYMF_CONSTANT ; // = $0100
  172. IMAGEHLP_SYMBOL_FUNCTION = SYMF_FUNCTION; // = $0800
  173. IMAGEHLP_SYMBOL_VIRTUAL = SYMF_VIRTUAL; // = $1000
  174. IMAGEHLP_SYMBOL_THUNK = SYMF_THUNK ; // = $2000
  175. IMAGEHLP_SYMBOL_INFO_TLSRELATIVE = SYMF_TLSREL; // = $4000
  176. MINIDUMP_MISC1_PROCESS_ID = $00000001;
  177. MINIDUMP_MISC1_PROCESS_TIMES = $00000002;
  178. Type
  179. DIGEST_HANDLE = POINTER;
  180. TDIGEST_HANDLE = DIGEST_HANDLE;
  181. PRVA = ^TRVA;
  182. TRVA = dword;
  183. RVA = TRVA;
  184. ULONG64 = QWORD; // to windows unit ?
  185. ULONG32 = CARDINAL;
  186. PRVA64 = ^TRVA64;
  187. TRVA64 = ULONG64;
  188. RVA64 = TRVA64;
  189. PPSTR = ^PSTR;
  190. _IMAGEHLP_STATUS_REASON =(
  191. BindOutOfMemory,
  192. BindRvaToVaFailed,
  193. BindNoRoomInImage,
  194. BindImportModuleFailed,
  195. BindImportProcedureFailed,
  196. BindImportModule,
  197. BindImportProcedure,
  198. BindForwarder,
  199. BindForwarderNOT,
  200. BindImageModified,
  201. BindExpandFileHeaders,
  202. BindImageComplete,
  203. BindMismatchedSymbols,
  204. BindSymbolsNotUpdated,
  205. BindImportProcedure32,
  206. BindImportProcedure64,
  207. BindForwarder32,
  208. BindForwarder64,
  209. BindForwarderNOT32,
  210. BindForwarderNOT64);
  211. IMAGEHLP_STATUS_REASON = _IMAGEHLP_STATUS_REASON;
  212. TIMAGEHLP_STATUS_REASON = _IMAGEHLP_STATUS_REASON;
  213. ADDRESS_MODE =(
  214. AddrMode1616,
  215. AddrMode1632,
  216. AddrModeReal,
  217. AddrModeFlat);
  218. TADDRESS_MODE = ADDRESS_MODE;
  219. SYM_TYPE =(
  220. SymNone = 0,
  221. SymCoff,
  222. SymCv,
  223. SymPdb,
  224. SymExport,
  225. SymDeferred,
  226. SymSym, // .sym file
  227. SymDia,
  228. SymVirtual,
  229. NumSymTypes);
  230. TSYM_TYPE = SYM_TYPE;
  231. _IMAGEHLP_SYMBOL_TYPE_INFO = (
  232. TI_GET_SYMTAG,
  233. TI_GET_SYMNAME,
  234. TI_GET_LENGTH,
  235. TI_GET_TYPE,
  236. TI_GET_TYPEID,
  237. TI_GET_BASETYPE,
  238. TI_GET_ARRAYINDEXTYPEID,
  239. TI_FINDCHILDREN,
  240. TI_GET_DATAKIND,
  241. TI_GET_ADDRESSOFFSET,
  242. TI_GET_OFFSET,
  243. TI_GET_VALUE,
  244. TI_GET_COUNT,
  245. TI_GET_CHILDRENCOUNT,
  246. TI_GET_BITPOSITION,
  247. TI_GET_VIRTUALBASECLASS,
  248. TI_GET_VIRTUALTABLESHAPEID,
  249. TI_GET_VIRTUALBASEPOINTEROFFSET,
  250. TI_GET_CLASSPARENTID,
  251. TI_GET_NESTED,
  252. TI_GET_SYMINDEX,
  253. TI_GET_LEXICALPARENT,
  254. TI_GET_ADDRESS,
  255. TI_GET_THISADJUST,
  256. TI_GET_UDTKIND,
  257. TI_IS_EQUIV_TO,
  258. TI_GET_CALLING_CONVENTION);
  259. IMAGEHLP_SYMBOL_TYPE_INFO = _IMAGEHLP_SYMBOL_TYPE_INFO;
  260. TIMAGEHLP_SYMBOL_TYPE_INFO = _IMAGEHLP_SYMBOL_TYPE_INFO;
  261. _MINIDUMP_STREAM_TYPE = (
  262. UnusedStream = 0,
  263. ReservedStream0 = 1,
  264. ReservedStream1 = 2,
  265. ThreadListStream = 3,
  266. ModuleListStream = 4,
  267. MemoryListStream = 5,
  268. ExceptionStream = 6,
  269. SystemInfoStream = 7,
  270. ThreadExListStream = 8,
  271. Memory64ListStream = 9,
  272. CommentStreamA = 10,
  273. CommentStreamW = 11,
  274. HandleDataStream = 12,
  275. FunctionTableStream = 13,
  276. UnloadedModuleListStream = 14,
  277. MiscInfoStream = 15,
  278. LastReservedStream = $ffff);
  279. MINIDUMP_STREAM_TYPE = _MINIDUMP_STREAM_TYPE;
  280. _MINIDUMP_CALLBACK_TYPE =(
  281. ModuleCallback,
  282. ThreadCallback,
  283. ThreadExCallback,
  284. IncludeThreadCallback,
  285. IncludeModuleCallback,
  286. MemoryCallback);
  287. MINIDUMP_CALLBACK_TYPE = _MINIDUMP_CALLBACK_TYPE;
  288. _THREAD_WRITE_FLAGS =(
  289. ThreadWriteThread = $0001,
  290. ThreadWriteStack = $0002,
  291. ThreadWriteContext = $0004,
  292. ThreadWriteBackingStore = $0008,
  293. ThreadWriteInstructionWindow = $0010,
  294. ThreadWriteThreadData = $0020);
  295. THREAD_WRITE_FLAGS = _THREAD_WRITE_FLAGS;
  296. _MODULE_WRITE_FLAGS =(
  297. ModuleWriteModule = $0001,
  298. ModuleWriteDataSeg = $0002,
  299. ModuleWriteMiscRecord = $0004,
  300. ModuleWriteCvRecord = $0008,
  301. ModuleReferencedByMemory = $0010);
  302. MODULE_WRITE_FLAGS = _MODULE_WRITE_FLAGS;
  303. tagan = (
  304. sevInfo = 0,
  305. sevProblem,
  306. sevAttn,
  307. sevFatal,
  308. sevMax );
  309. Anonymous = (
  310. hdBase = 0, // root directory for dbghelp
  311. hdSym, // where symbols are stored
  312. hdSrc, // where source is stored
  313. hdMax // end marker
  314. );
  315. _MINIDUMP_TYPE = (
  316. MiniDumpNormal = $0000,
  317. MiniDumpWithDataSegs = $0001,
  318. MiniDumpWithFullMemory = $0002,
  319. MiniDumpWithHandleData = $0004,
  320. MiniDumpFilterMemory = $0008,
  321. MiniDumpScanMemory = $0010,
  322. MiniDumpWithUnloadedModules = $0020,
  323. MiniDumpWithIndirectlyReferencedMemory = $0040,
  324. MiniDumpFilterModulePaths = $0080,
  325. MiniDumpWithProcessThreadData = $0100,
  326. MiniDumpWithPrivateReadWriteMemory = $0200,
  327. MiniDumpWithoutOPTIONALData = $0400);
  328. MINIDUMP_TYPE = _MINIDUMP_TYPE;
  329. TMINIDUMP_TYPE = _MINIDUMP_TYPE;
  330. TLOADED_IMAGE = record
  331. ModuleName : PSTR;
  332. hFile : THANDLE;
  333. MappedAddress : PUCHAR;
  334. {$ifdef IMAGEHLP64}
  335. FileHeader : PIMAGE_NT_HEADERS64;
  336. {$else}
  337. FileHeader : PIMAGE_NT_HEADERS32;
  338. {$endif}
  339. LastRvaSection : PIMAGE_SECTION_HEADER;
  340. NumberOfSections : ULONG;
  341. Sections : PIMAGE_SECTION_HEADER;
  342. Characteristics : ULONG;
  343. fSystemImage : bytebool;
  344. fDOSImage : bytebool;
  345. Links : TLISTENTRY;
  346. SizeOfImage : ULONG;
  347. end;
  348. LOADED_IMAGE = TLOADED_IMAGE;
  349. PLOADED_IMAGE = ^TLOADED_IMAGE;
  350. PPLOADED_IMAGE = ^PLOADED_IMAGE;
  351. {$ifndef win64}
  352. PIMAGE_DEBUG_INFORMATION = ^TIMAGE_DEBUG_INFORMATION;
  353. TIMAGE_DEBUG_INFORMATION = record
  354. List : TLISTENTRY;
  355. ReservedSize : DWORD;
  356. ReservedMappedBase : POINTER;
  357. ReservedMachine : USHORT;
  358. ReservedCharacteristics : USHORT;
  359. ReservedCheckSum : DWORD;
  360. ImageBase : DWORD;
  361. SizeOfImage : DWORD;
  362. ReservedNumberOfSections : DWORD;
  363. ReservedSections : PIMAGE_SECTION_HEADER;
  364. ReservedExportedNamesSize : DWORD;
  365. ReservedExportedNames : PSTR;
  366. ReservedNumberOfFunctionTableEntries : DWORD;
  367. ReservedFunctionTableEntries : PIMAGE_FUNCTION_ENTRY;
  368. ReservedLowestFunctionStartingAddress : DWORD;
  369. ReservedHighestFunctionEndingAddress : DWORD;
  370. ReservedNumberOfFpoTableEntries : DWORD;
  371. ReservedFpoTableEntries : PFPO_DATA;
  372. SizeOfCoffSymbols : DWORD;
  373. CoffSymbols : PIMAGE_COFF_SYMBOLS_HEADER;
  374. ReservedSizeOfCodeViewSymbols : DWORD;
  375. ReservedCodeViewSymbols : pointer;
  376. ImageFilePath : PSTR;
  377. ImageFileName : PSTR;
  378. ReservedDebugFilePath : PSTR;
  379. ReservedTimeDateStamp : DWORD;
  380. ReservedRomImage : bool;
  381. ReservedDebugDirectory : PIMAGE_DEBUG_DIRECTORY;
  382. ReservedNumberOfDebugDirectories : DWORD;
  383. ReservedOriginalFunctionTableBaseAddress : DWORD;
  384. Reserved : array[0..1] of DWORD;
  385. end;
  386. IMAGE_DEBUG_INFORMATION = TIMAGE_DEBUG_INFORMATION;
  387. {$ENDIF}
  388. PMODLOAD_DATA = ^TMODLOAD_DATA;
  389. TMODLOAD_DATA = record
  390. ssize : DWORD;
  391. ssig : DWORD;
  392. data : POINTER;
  393. _size : DWORD;
  394. flags : DWORD;
  395. end;
  396. MODLOAD_DATA = TMODLOAD_DATA;
  397. tagADDRESS64 = record
  398. Offset : dword64;
  399. Segment : word;
  400. Mode : TADDRESS_MODE;
  401. end;
  402. TADDRESS64 = tagADDRESS64;
  403. PADDRESS64 = ^TADDRESS64;
  404. LPADDRESS64 = PADDRESS64;
  405. {$IFDEF IMAGEHLP64}
  406. TADDRESS=TADDRESS64;
  407. PADDRESS=PADDRESS64;
  408. LPADDRESS=PADDRESS64;
  409. {$ELSE}
  410. tagADDRESS = record
  411. Offset : dword;
  412. Segment : word;
  413. Mode : TADDRESS_MODE;
  414. end;
  415. TADDRESS = tagADDRESS;
  416. PADDRESS = ^TADDRESS;
  417. LPADDRESS = PADDRESS;
  418. {$ENDIF}
  419. PKDHELP64 = ^TKDHELP64;
  420. TKDHELP64 = record
  421. Thread : DWORD64;
  422. ThCallbackStack : DWORD;
  423. ThCallbackBStore : DWORD;
  424. NextCallback : DWORD;
  425. FramePointer : DWORD;
  426. KiCallUserMode : DWORD64;
  427. KeUserCallbackDispatcher : DWORD64;
  428. SystemRangeStart : DWORD64;
  429. Reserved : array[0..7] of DWORD64;
  430. end;
  431. KDHELP64 = TKDHELP64;
  432. {$IFDEF IMAGEHLP64}
  433. TKDHELP = KDHELP64;
  434. KDHELP = KDHELP64;
  435. PKDHELP = PKDHELP64;
  436. {$ELSE}
  437. PKDHELP = ^TKDHELP;
  438. TKDHELP = record
  439. Thread : DWORD;
  440. ThCallbackStack : DWORD;
  441. NextCallback : DWORD;
  442. FramePointer : DWORD;
  443. KiCallUserMode : DWORD;
  444. KeUserCallbackDispatcher : DWORD;
  445. SystemRangeStart : DWORD;
  446. ThCallbackBStore : DWORD;
  447. Reserved : array[0..7] of DWORD;
  448. end;
  449. KDHELP = TKDHELP;
  450. {$ENDIF}
  451. tagSTACKFRAME64 = record
  452. AddrPC : TADDRESS64;
  453. AddrReturn : TADDRESS64;
  454. AddrFrame : TADDRESS64;
  455. AddrStack : TADDRESS64;
  456. AddrBStore : TADDRESS64;
  457. FuncTableEntry : POINTER;
  458. Params : array[0..3] of DWORD64;
  459. Far : BOOL;
  460. Virtual : BOOL;
  461. Reserved : array[0..2] of DWORD64;
  462. KdHelp : TKDHELP64;
  463. end;
  464. TSTACKFRAME64 = tagSTACKFRAME64;
  465. PSTACKFRAME64 = ^TSTACKFRAME64;
  466. LPSTACKFRAME64= ^TSTACKFRAME64;
  467. {$IFDEF IMAGEHLP64}
  468. STACKFRAME = TSTACKFRAME64;
  469. LPSTACKFRAME = LPSTACKFRAME64;
  470. TSTACKFRAME = TSTACKFRAME64;
  471. PSTACKFRAME = PSTACKFRAME64;
  472. {$ELSE}
  473. tagSTACKFRAME = record
  474. AddrPC : TADDRESS;
  475. AddrReturn : TADDRESS;
  476. AddrFrame : TADDRESS;
  477. AddrStack : TADDRESS;
  478. FuncTableEntry : POINTER;
  479. Params : array[0..3] of DWORD;
  480. _Far : BOOL;
  481. _Virtual : BOOL;
  482. Reserved : array[0..2] of DWORD;
  483. KdHelp : TKDHELP;
  484. AddrBStore : TADDRESS;
  485. end;
  486. TSTACKFRAME = tagSTACKFRAME;
  487. PSTACKFRAME = ^TSTACKFRAME;
  488. LPSTACKFRAME= ^TSTACKFRAME;
  489. {$ENDIF}
  490. PAPI_VERSION = ^TAPI_VERSION;
  491. LPAPI_VERSION= PAPI_VERSION;
  492. TAPI_VERSION = record
  493. MajorVersion : ushort;
  494. MinorVersion : ushort;
  495. Revision : ushort;
  496. Reserved : ushort;
  497. end;
  498. API_VERSION = TAPI_VERSION;
  499. PIMAGEHLP_SYMBOL64 = ^TIMAGEHLP_SYMBOL64;
  500. TIMAGEHLP_SYMBOL64 = record
  501. SizeOfStruct : dword;
  502. Address : dword64;
  503. Size : dword;
  504. Flags : dword;
  505. MaxNameLength : dword;
  506. Name : array[0..0] of TCHAR;
  507. end;
  508. IMAGEHLP_SYMBOL64 = TIMAGEHLP_SYMBOL64;
  509. LPIMAGEHLP_SYMBOL64 = PIMAGEHLP_SYMBOL64;
  510. PIMAGEHLP_SYMBOL64_PACKAGE = ^TIMAGEHLP_SYMBOL64_PACKAGE;
  511. TIMAGEHLP_SYMBOL64_PACKAGE = record
  512. sym : TIMAGEHLP_SYMBOL64;
  513. name : array[0..(MAX_SYM_NAME+1)-1] of TCHAR;
  514. end;
  515. IMAGEHLP_SYMBOL64_PACKAGE = TIMAGEHLP_SYMBOL64_PACKAGE;
  516. LPIMAGEHLP_SYMBOL64_PACKAGE = ^TIMAGEHLP_SYMBOL64_PACKAGE;
  517. {$IFDEF IMAGEHLP64}
  518. IMAGEHLP_SYMBOL = IMAGEHLP_SYMBOL64;
  519. TIMAGEHLP_SYMBOL = IMAGEHLP_SYMBOL64;
  520. PIMAGEHLP_SYMBOL = PIMAGEHLP_SYMBOL64;
  521. TIMAGEHLP_SYMBOL_PACKAGE = IMAGEHLP_SYMBOL64_PACKAGE;
  522. IMAGEHLP_SYMBOL_PACKAGE = IMAGEHLP_SYMBOL64_PACKAGE;
  523. PIMAGEHLP_SYMBOL_PACKAGE= PIMAGEHLP_SYMBOL64_PACKAGE;
  524. {$ELSE}
  525. PIMAGEHLP_SYMBOL = ^TIMAGEHLP_SYMBOL;
  526. TIMAGEHLP_SYMBOL = record
  527. SizeOfStruct : dword;
  528. Address : dword;
  529. Size : dword;
  530. Flags : dword;
  531. MaxNameLength : dword;
  532. Name : array[0..0] of TCHAR;
  533. end;
  534. IMAGEHLP_SYMBOL = TIMAGEHLP_SYMBOL;
  535. LPIMAGEHLP_SYMBOL = PIMAGEHLP_SYMBOL;
  536. PIMAGEHLP_SYMBOL_PACKAGE = ^TIMAGEHLP_SYMBOL_PACKAGE;
  537. TIMAGEHLP_SYMBOL_PACKAGE = record
  538. sym : TIMAGEHLP_SYMBOL;
  539. name : array[0..(MAX_SYM_NAME+1)-1] of TCHAR;
  540. end;
  541. IMAGEHLP_SYMBOL_PACKAGE = TIMAGEHLP_SYMBOL_PACKAGE;
  542. LPIMAGEHLP_SYMBOL_PACKAGE = PIMAGEHLP_SYMBOL_PACKAGE;
  543. {$ENDIF}
  544. PIMAGEHLP_MODULE64 = ^TIMAGEHLP_MODULE64;
  545. TIMAGEHLP_MODULE64 = record
  546. SizeOfStruct : dword;
  547. BaseOfImage : dword64;
  548. ImageSize : dword;
  549. TimeDateStamp : dword;
  550. CheckSum : dword;
  551. NumSyms : dword;
  552. SymType : TSYM_TYPE;
  553. ModuleName : array[0..31] of TCHAR;
  554. ImageName : array[0..255] of TCHAR;
  555. LoadedImageName : array[0..255] of TCHAR;
  556. LoadedPdbName : array[0..255] of TCHAR;
  557. CVSig : dword;
  558. CVData : array[0..(MAX_PATH*3)-1] of TCHAR;
  559. PdbSig : dword;
  560. PdbSig70 : TGUID;
  561. PdbAge : dword;
  562. PdbUnmatched : bool;
  563. DbgUnmatched : bool;
  564. LineNumbers : bool;
  565. GlobalSymbols : bool;
  566. TypeInfo : bool;
  567. end;
  568. IMAGEHLP_MODULE64 = TIMAGEHLP_MODULE64;
  569. PIMAGEHLP_MODULE64W = ^TIMAGEHLP_MODULE64W;
  570. TIMAGEHLP_MODULE64W = record
  571. SizeOfStruct : dword;
  572. BaseOfImage : dword64;
  573. ImageSize : dword;
  574. TimeDateStamp : dword;
  575. CheckSum : dword;
  576. NumSyms : dword;
  577. SymType : TSYM_TYPE;
  578. ModuleName : array[0..31] of wchar;
  579. ImageName : array[0..255] of wchar;
  580. LoadedImageName : array[0..255] of wchar;
  581. LoadedPdbName : array[0..255] of wchar;
  582. CVSig : dword;
  583. CVData : array[0..(MAX_PATH*3)-1] of wchar;
  584. PdbSig : dword;
  585. PdbSig70 : TGUID;
  586. PdbAge : dword;
  587. PdbUnmatched : bool;
  588. DbgUnmatched : bool;
  589. LineNumbers : bool;
  590. GlobalSymbols : bool;
  591. TypeInfo : bool;
  592. end;
  593. IMAGEHLP_MODULE64W = TIMAGEHLP_MODULE64W;
  594. LPIMAGEHLP_MODULE64W = PIMAGEHLP_MODULE64W;
  595. IMAGEHLP_MODULEW64 = TIMAGEHLP_MODULE64W;
  596. TIMAGEHLP_MODULEW64 = TIMAGEHLP_MODULE64W;
  597. PIMAGEHLP_MODULEW64 = PIMAGEHLP_MODULE64W;
  598. {$IFDEF IMAGEHLP64}
  599. IMAGEHLP_MODULE = TIMAGEHLP_MODULE64;
  600. LPIMAGEHLP_MODULE = PIMAGEHLP_MODULE64;
  601. IMAGEHLP_MODULEW = TIMAGEHLP_MODULE64W;
  602. LPIMAGEHLP_MODULEW = PIMAGEHLP_MODULE64W;
  603. {$ELSE}
  604. PIMAGEHLP_MODULE = ^TIMAGEHLP_MODULE;
  605. TIMAGEHLP_MODULE = record
  606. SizeOfStruct : dword;
  607. BaseOfImage : dword;
  608. ImageSize : dword;
  609. TimeDateStamp : dword;
  610. CheckSum : dword;
  611. NumSyms : dword;
  612. SymType : TSYM_TYPE;
  613. ModuleName : array[0..31] of TCHAR;
  614. ImageName : array[0..255] of TCHAR;
  615. LoadedImageName : array[0..255] of TCHAR;
  616. end;
  617. IMAGEHLP_MODULE = TIMAGEHLP_MODULE;
  618. LPIMAGEHLP_MODULE = PIMAGEHLP_MODULE;
  619. PIMAGEHLP_MODULEW = ^TIMAGEHLP_MODULEW;
  620. TIMAGEHLP_MODULEW = record
  621. SizeOfStruct : dword;
  622. BaseOfImage : dword;
  623. ImageSize : dword;
  624. TimeDateStamp : dword;
  625. CheckSum : dword;
  626. NumSyms : dword;
  627. SymType : TSYM_TYPE;
  628. ModuleName : array[0..31] of wchar;
  629. ImageName : array[0..255] of wchar;
  630. LoadedImageName : array[0..255] of wchar;
  631. end;
  632. IMAGEHLP_MODULEW = TIMAGEHLP_MODULEW;
  633. LPIMAGEHLP_MODULEW = PIMAGEHLP_MODULEW;
  634. {$ENDIF}
  635. PIMAGEHLP_LINE64 = ^TIMAGEHLP_LINE64;
  636. TIMAGEHLP_LINE64 = record
  637. SizeOfStruct : dword;
  638. Key : pointer;
  639. LineNumber : dword;
  640. FileName : pchar;
  641. Address : dword64;
  642. end;
  643. IMAGEHLP_LINE64 = TIMAGEHLP_LINE64;
  644. LPIMAGEHLP_LINE64 = PIMAGEHLP_LINE64;
  645. {$ifdef IMAGEHLP64}
  646. IMAGEHLP_LINE = IMAGEHLP_LINE64;
  647. TIMAGEHLP_LINE = IMAGEHLP_LINE64;
  648. PIMAGEHLP_LINE = PIMAGEHLP_LINE64;
  649. LPIMAGEHLP_LINE = PIMAGEHLP_LINE64;
  650. {$else}
  651. PIMAGEHLP_LINE = ^TIMAGEHLP_LINE;
  652. TIMAGEHLP_LINE = record
  653. SizeOfStruct : dword;
  654. Key : pointer;
  655. LineNumber : dword;
  656. FileName : pchar;
  657. Address : dword;
  658. end;
  659. IMAGEHLP_LINE = TIMAGEHLP_LINE;
  660. LPIMAGEHLP_LINE = PIMAGEHLP_LINE;
  661. {$endif}
  662. PSOURCEFILE = ^TSOURCEFILE;
  663. TSOURCEFILE = record
  664. ModBase : dword64;
  665. FileName : pchar;
  666. end;
  667. PIMAGEHLP_CBA_READ_MEMORY = ^TIMAGEHLP_CBA_READ_MEMORY;
  668. TIMAGEHLP_CBA_READ_MEMORY = record
  669. addr : dword64;
  670. buf : pointer;
  671. bytes : dword;
  672. bytesread : PDWORD;
  673. end;
  674. IMAGEHLP_CBA_READ_MEMORY = TIMAGEHLP_CBA_READ_MEMORY;
  675. LPIMAGEHLP_CBA_READ_MEMORY = PIMAGEHLP_CBA_READ_MEMORY;
  676. PIMAGEHLP_CBA_EVENT = ^TIMAGEHLP_CBA_EVENT;
  677. TIMAGEHLP_CBA_EVENT = record
  678. severity : dword;
  679. code : dword;
  680. desc : pchar;
  681. _object : pointer;
  682. end;
  683. IMAGEHLP_CBA_EVENT = TIMAGEHLP_CBA_EVENT;
  684. LPIMAGEHLP_CBA_EVENT = PIMAGEHLP_CBA_EVENT;
  685. PIMAGEHLP_DEFERRED_SYMBOL_LOAD64 = ^TIMAGEHLP_DEFERRED_SYMBOL_LOAD64;
  686. TIMAGEHLP_DEFERRED_SYMBOL_LOAD64 = record
  687. SizeOfStruct : dword;
  688. BaseOfImage : dword64;
  689. CheckSum : dword;
  690. TimeDateStamp : dword;
  691. FileName : array[0..(MAX_PATH)-1] of TCHAR;
  692. Reparse : bytebool;
  693. hFile : THANDLE;
  694. Flags : dword;
  695. end;
  696. IMAGEHLP_DEFERRED_SYMBOL_LOAD64 = TIMAGEHLP_DEFERRED_SYMBOL_LOAD64;
  697. LPIMAGEHLP_DEFERRED_SYMBOL_LOAD64 = PIMAGEHLP_DEFERRED_SYMBOL_LOAD64;
  698. {$ifdef IMAGEHLP64}
  699. IMAGEHLP_DEFERRED_SYMBOL_LOAD = IMAGEHLP_DEFERRED_SYMBOL_LOAD64;
  700. TIMAGEHLP_DEFERRED_SYMBOL_LOAD = IMAGEHLP_DEFERRED_SYMBOL_LOAD64;
  701. PIMAGEHLP_DEFERRED_SYMBOL_LOAD = PIMAGEHLP_DEFERRED_SYMBOL_LOAD64;
  702. {$else}
  703. PIMAGEHLP_DEFERRED_SYMBOL_LOAD = ^TIMAGEHLP_DEFERRED_SYMBOL_LOAD;
  704. TIMAGEHLP_DEFERRED_SYMBOL_LOAD = record
  705. SizeOfStruct : dword;
  706. BaseOfImage : dword;
  707. CheckSum : dword;
  708. TimeDateStamp : dword;
  709. FileName : array[0..(MAX_PATH)-1] of TCHAR;
  710. Reparse : bytebool;
  711. hFile : THANDLE;
  712. end;
  713. IMAGEHLP_DEFERRED_SYMBOL_LOAD = TIMAGEHLP_DEFERRED_SYMBOL_LOAD;
  714. LPIMAGEHLP_DEFERRED_SYMBOL_LOAD = PIMAGEHLP_DEFERRED_SYMBOL_LOAD;
  715. {$endif}
  716. PIMAGEHLP_DUPLICATE_SYMBOL64 = ^TIMAGEHLP_DUPLICATE_SYMBOL64;
  717. TIMAGEHLP_DUPLICATE_SYMBOL64 = record
  718. SizeOfStruct : dword;
  719. NumberOfDups : dword;
  720. Symbol : PIMAGEHLP_SYMBOL64;
  721. SelectedSymbol : dword;
  722. end;
  723. IMAGEHLP_DUPLICATE_SYMBOL64 = TIMAGEHLP_DUPLICATE_SYMBOL64;
  724. LPIMAGEHLP_DUPLICATE_SYMBOL64 = PIMAGEHLP_DUPLICATE_SYMBOL64;
  725. {$ifdef IMAGEHLP64}
  726. IMAGEHLP_DUPLICATE_SYMBOL = IMAGEHLP_DUPLICATE_SYMBOL64;
  727. PIMAGEHLP_DUPLICATE_SYMBOL = PIMAGEHLP_DUPLICATE_SYMBOL64;
  728. TIMAGEHLP_DUPLICATE_SYMBOL = IMAGEHLP_DUPLICATE_SYMBOL64;
  729. LPIMAGEHLP_DUPLICATE_SYMBOL = PIMAGEHLP_DUPLICATE_SYMBOL64;
  730. {$else}
  731. PIMAGEHLP_DUPLICATE_SYMBOL = ^TIMAGEHLP_DUPLICATE_SYMBOL;
  732. TIMAGEHLP_DUPLICATE_SYMBOL = record
  733. SizeOfStruct : dword;
  734. NumberOfDups : dword;
  735. Symbol : PIMAGEHLP_SYMBOL;
  736. SelectedSymbol : dword;
  737. end;
  738. IMAGEHLP_DUPLICATE_SYMBOL = TIMAGEHLP_DUPLICATE_SYMBOL;
  739. LPIMAGEHLP_DUPLICATE_SYMBOL = PIMAGEHLP_DUPLICATE_SYMBOL;
  740. {$endif}
  741. PSRCCODEINFO = ^TSRCCODEINFO;
  742. TSRCCODEINFO = record
  743. SizeOfStruct : dword;
  744. Key : pointer;
  745. ModBase : dword64;
  746. Obj : array[0..(MAX_PATH+1)-1] of TCHAR;
  747. FileName : array[0..(MAX_PATH+1)-1] of TCHAR;
  748. LineNumber : dword;
  749. Address : dword64;
  750. end;
  751. SRCCODEINFO = TSRCCODEINFO;
  752. LPSRCCODEINFO = PSRCCODEINFO;
  753. PIMAGEHLP_SYMBOL_SRC = ^TIMAGEHLP_SYMBOL_SRC;
  754. TIMAGEHLP_SYMBOL_SRC = record
  755. sizeofstruct : dword;
  756. _type : dword;
  757. _file : array[0..(MAX_PATH)-1] of char;
  758. end;
  759. IMAGEHLP_SYMBOL_SRC = TIMAGEHLP_SYMBOL_SRC;
  760. LPIMAGEHLP_SYMBOL_SRC = PIMAGEHLP_SYMBOL_SRC;
  761. PMODULE_TYPE_INFO = ^TMODULE_TYPE_INFO;
  762. TMODULE_TYPE_INFO = record
  763. dataLength : USHORT;
  764. leaf : USHORT;
  765. data : array[0..0] of TBYTE;
  766. end;
  767. MODULE_TYPE_INFO = TMODULE_TYPE_INFO;
  768. LPMODULE_TYPE_INFO = PMODULE_TYPE_INFO;
  769. PSYMBOL_INFO = ^TSYMBOL_INFO;
  770. TSYMBOL_INFO = record
  771. SizeOfStruct : ULONG;
  772. TypeIndex : ULONG;
  773. Reserved : array[0..1] of ULONG64;
  774. info : ULONG;
  775. Size : ULONG;
  776. ModBase : ULONG64;
  777. Flags : ULONG;
  778. Value : ULONG64;
  779. Address : ULONG64;
  780. Register : ULONG;
  781. Scope : ULONG;
  782. Tag : ULONG;
  783. NameLen : ULONG;
  784. MaxNameLen : ULONG;
  785. Name : array[0..0] of TCHAR;
  786. end;
  787. SYMBOL_INFO = TSYMBOL_INFO;
  788. LPSYMBOL_INFO = PSYMBOL_INFO;
  789. PSYMBOL_INFO_PACKAGE = ^TSYMBOL_INFO_PACKAGE;
  790. TSYMBOL_INFO_PACKAGE = record
  791. si : TSYMBOL_INFO;
  792. name : array[0..(MAX_SYM_NAME+1)-1] of TCHAR;
  793. end;
  794. SYMBOL_INFO_PACKAGE = TSYMBOL_INFO_PACKAGE;
  795. LPSYMBOL_INFO_PACKAGE = PSYMBOL_INFO_PACKAGE;
  796. PIMAGEHLP_STACK_FRAME = ^TIMAGEHLP_STACK_FRAME;
  797. TIMAGEHLP_STACK_FRAME = record
  798. InstructionOffset : ULONG64;
  799. ReturnOffset : ULONG64;
  800. FrameOffset : ULONG64;
  801. StackOffset : ULONG64;
  802. BackingStoreOffset : ULONG64;
  803. FuncTableEntry : ULONG64;
  804. Params : array[0..3] of ULONG64;
  805. Reserved : array[0..4] of ULONG64;
  806. Virtual : BOOL;
  807. Reserved2 : ULONG;
  808. end;
  809. IMAGEHLP_STACK_FRAME = TIMAGEHLP_STACK_FRAME;
  810. LPIMAGEHLP_STACK_FRAME = PIMAGEHLP_STACK_FRAME;
  811. PIMAGEHLP_CONTEXT = ^TIMAGEHLP_CONTEXT;
  812. TIMAGEHLP_CONTEXT = pointer;
  813. PPIMAGEHLP_CONTEXT = ^PIMAGEHLP_CONTEXT;
  814. PTI_FINDCHILDREN_PARAMS = ^TTI_FINDCHILDREN_PARAMS;
  815. TTI_FINDCHILDREN_PARAMS = record
  816. Count : ULONG;
  817. Start : ULONG;
  818. ChildId : array[0..0] of ULONG;
  819. end;
  820. PMINIDUMP_LOCATION_DESCRIPTOR = ^TMINIDUMP_LOCATION_DESCRIPTOR;
  821. TMINIDUMP_LOCATION_DESCRIPTOR = record
  822. DataSize : ULONG32;
  823. Rva : TRVA;
  824. end;
  825. MINIDUMP_LOCATION_DESCRIPTOR = TMINIDUMP_LOCATION_DESCRIPTOR ;
  826. PMINIDUMP_LOCATION_DESCRIPTOR64 = ^TMINIDUMP_LOCATION_DESCRIPTOR64;
  827. TMINIDUMP_LOCATION_DESCRIPTOR64 = record
  828. DataSize : ULONG64;
  829. Rva : TRVA64;
  830. end;
  831. MINIDUMP_LOCATION_DESCRIPTOR64 = TMINIDUMP_LOCATION_DESCRIPTOR64;
  832. PMINIDUMP_MEMORY_DESCRIPTOR = ^TMINIDUMP_MEMORY_DESCRIPTOR;
  833. TMINIDUMP_MEMORY_DESCRIPTOR = record
  834. StartOfMemoryRange : ULONG64;
  835. Memory : TMINIDUMP_LOCATION_DESCRIPTOR;
  836. end;
  837. MINIDUMP_MEMORY_DESCRIPTOR = TMINIDUMP_MEMORY_DESCRIPTOR;
  838. LPMINIDUMP_MEMORY_DESCRIPTOR = PMINIDUMP_MEMORY_DESCRIPTOR;
  839. PMINIDUMP_MEMORY_DESCRIPTOR64 = ^TMINIDUMP_MEMORY_DESCRIPTOR64;
  840. TMINIDUMP_MEMORY_DESCRIPTOR64 = record
  841. StartOfMemoryRange : ULONG64;
  842. DataSize : ULONG64;
  843. end;
  844. MINIDUMP_MEMORY_DESCRIPTOR64 = TMINIDUMP_MEMORY_DESCRIPTOR64;
  845. LPMINIDUMP_MEMORY_DESCRIPTOR64 = PMINIDUMP_MEMORY_DESCRIPTOR64;
  846. PMINIDUMP_HEADER = ^TMINIDUMP_HEADER;
  847. TMINIDUMP_HEADER = record
  848. Signature : ULONG32;
  849. Version : ULONG32;
  850. NumberOfStreams : ULONG32;
  851. StreamDirectoryRva : TRVA;
  852. CheckSum : ULONG32;
  853. a : packed record
  854. case longint of
  855. 0 : ( Reserved : ULONG32 );
  856. 1 : ( TimeDateStamp : ULONG32 );
  857. end;
  858. Flags : ULONG64;
  859. end;
  860. MINIDUMP_HEADER = TMINIDUMP_HEADER;
  861. LPMINIDUMP_HEADER = PMINIDUMP_HEADER;
  862. PMINIDUMP_DIRECTORY = ^TMINIDUMP_DIRECTORY;
  863. TMINIDUMP_DIRECTORY = record
  864. StreamType : ULONG32;
  865. Location : TMINIDUMP_LOCATION_DESCRIPTOR;
  866. end;
  867. MINIDUMP_DIRECTORY = TMINIDUMP_DIRECTORY;
  868. LPMINIDUMP_DIRECTORY = PMINIDUMP_DIRECTORY;
  869. PPMINIDUMP_DIRECTORY = ^PMINIDUMP_DIRECTORY;
  870. PMINIDUMP_STRING = ^TMINIDUMP_STRING;
  871. TMINIDUMP_STRING = record
  872. Length : ULONG32;
  873. Buffer : array[0..0] of WCHAR;
  874. end;
  875. MINIDUMP_STRING = TMINIDUMP_STRING;
  876. LPMINIDUMP_STRING = PMINIDUMP_STRING;
  877. PCPU_INFORMATION = ^TCPU_INFORMATION;
  878. TCPU_INFORMATION = record
  879. case longint of
  880. 0 : ( X86CpuInfo : packed record
  881. VendorId : array[0..2] of ULONG32;
  882. VersionInformation : ULONG32;
  883. FeatureInformation : ULONG32;
  884. AMDExtendedCpuFeatures : ULONG32;
  885. end );
  886. 1 : ( OtherCpuInfo : packed record
  887. ProcessorFeatures : array[0..1] of ULONG64;
  888. end );
  889. end;
  890. CPU_INFORMATION = TCPU_INFORMATION;
  891. LPCPU_INFORMATION = PCPU_INFORMATION;
  892. PMINIDUMP_SYSTEM_INFO = ^TMINIDUMP_SYSTEM_INFO;
  893. TMINIDUMP_SYSTEM_INFO = record
  894. ProcessorArchitecture : USHORT;
  895. ProcessorLevel : USHORT;
  896. ProcessorRevision : USHORT;
  897. c : packed record
  898. case longint of
  899. 0 : ( Reserved0 : USHORT );
  900. 1 : ( b : packed record
  901. NumberOfProcessors : UCHAR;
  902. ProductType : UCHAR;
  903. end );
  904. end;
  905. MajorVersion : ULONG32;
  906. MinorVersion : ULONG32;
  907. BuildNumber : ULONG32;
  908. PlatformId : ULONG32;
  909. CSDVersionRva : TRVA;
  910. e : packed record
  911. case longint of
  912. 0 : ( Reserved1 : ULONG32 );
  913. 1 : ( d : packed record
  914. SuiteMask : USHORT;
  915. Reserved2 : USHORT;
  916. end );
  917. end;
  918. Cpu : TCPU_INFORMATION;
  919. end;
  920. MINIDUMP_SYSTEM_INFO = TMINIDUMP_SYSTEM_INFO;
  921. LPMINIDUMP_SYSTEM_INFO = PMINIDUMP_SYSTEM_INFO;
  922. PMINIDUMP_THREAD = ^TMINIDUMP_THREAD;
  923. TMINIDUMP_THREAD = record
  924. ThreadId : ULONG32;
  925. SuspendCount : ULONG32;
  926. PriorityClass : ULONG32;
  927. Priority : ULONG32;
  928. Teb : ULONG64;
  929. Stack : TMINIDUMP_MEMORY_DESCRIPTOR;
  930. ThreadContext : TMINIDUMP_LOCATION_DESCRIPTOR;
  931. end;
  932. MINIDUMP_THREAD = TMINIDUMP_THREAD;
  933. LPMINIDUMP_THREAD = PMINIDUMP_THREAD;
  934. PMINIDUMP_THREAD_LIST = ^TMINIDUMP_THREAD_LIST;
  935. TMINIDUMP_THREAD_LIST = record
  936. NumberOfThreads : ULONG32;
  937. Threads : array[0..0] of TMINIDUMP_THREAD;
  938. end;
  939. MINIDUMP_THREAD_LIST = TMINIDUMP_THREAD_LIST;
  940. LPMINIDUMP_THREAD_LIST = PMINIDUMP_THREAD_LIST;
  941. PMINIDUMP_THREAD_EX = ^TMINIDUMP_THREAD_EX;
  942. TMINIDUMP_THREAD_EX = record
  943. ThreadId : ULONG32;
  944. SuspendCount : ULONG32;
  945. PriorityClass : ULONG32;
  946. Priority : ULONG32;
  947. Teb : ULONG64;
  948. Stack : TMINIDUMP_MEMORY_DESCRIPTOR;
  949. ThreadContext : TMINIDUMP_LOCATION_DESCRIPTOR;
  950. BackingStore : TMINIDUMP_MEMORY_DESCRIPTOR;
  951. end;
  952. MINIDUMP_THREAD_EX = PMINIDUMP_THREAD_EX;
  953. LPMINIDUMP_THREAD_EX = PMINIDUMP_THREAD_EX;
  954. PMINIDUMP_THREAD_EX_LIST = ^TMINIDUMP_THREAD_EX_LIST;
  955. TMINIDUMP_THREAD_EX_LIST = record
  956. NumberOfThreads : ULONG32;
  957. Threads : array[0..0] of TMINIDUMP_THREAD_EX;
  958. end;
  959. MINIDUMP_THREAD_EX_LIST = TMINIDUMP_THREAD_EX_LIST;
  960. LPMINIDUMP_THREAD_EX_LIST = PMINIDUMP_THREAD_EX_LIST;
  961. PMINIDUMP_EXCEPTION = ^TMINIDUMP_EXCEPTION;
  962. TMINIDUMP_EXCEPTION = record
  963. ExceptionCode : ULONG32;
  964. ExceptionFlags : ULONG32;
  965. ExceptionRecord : ULONG64;
  966. ExceptionAddress : ULONG64;
  967. NumberParameters : ULONG32;
  968. __unusedAlignment : ULONG32;
  969. ExceptionInformation : array[0..(EXCEPTION_MAXIMUM_PARAMETERS)-1] of ULONG64;
  970. end;
  971. MINIDUMP_EXCEPTION = TMINIDUMP_EXCEPTION;
  972. LPMINIDUMP_EXCEPTION = PMINIDUMP_EXCEPTION;
  973. PMINIDUMP_EXCEPTION_STREAM = ^TMINIDUMP_EXCEPTION_STREAM;
  974. TMINIDUMP_EXCEPTION_STREAM = record
  975. ThreadId : ULONG32;
  976. __alignment : ULONG32;
  977. ExceptionRecord : TMINIDUMP_EXCEPTION;
  978. ThreadContext : TMINIDUMP_LOCATION_DESCRIPTOR;
  979. end;
  980. MINIDUMP_EXCEPTION_STREAM = TMINIDUMP_EXCEPTION_STREAM;
  981. LPMINIDUMP_EXCEPTION_STREAM = PMINIDUMP_EXCEPTION_STREAM;
  982. PMINIDUMP_MODULE = ^TMINIDUMP_MODULE;
  983. TMINIDUMP_MODULE = record
  984. BaseOfImage : ULONG64;
  985. SizeOfImage : ULONG32;
  986. CheckSum : ULONG32;
  987. TimeDateStamp : ULONG32;
  988. ModuleNameRva : TRVA;
  989. VersionInfo : TVSFIXEDFILEINFO;
  990. CvRecord : TMINIDUMP_LOCATION_DESCRIPTOR;
  991. MiscRecord : TMINIDUMP_LOCATION_DESCRIPTOR;
  992. Reserved0 : ULONG64;
  993. Reserved1 : ULONG64;
  994. end;
  995. MINIDUMP_MODULE = TMINIDUMP_MODULE;
  996. LPMINIDUMP_MODULE = PMINIDUMP_MODULE;
  997. PMINIDUMP_MODULE_LIST = ^TMINIDUMP_MODULE_LIST;
  998. TMINIDUMP_MODULE_LIST = record
  999. NumberOfModules : ULONG32;
  1000. Modules : array[0..0] of TMINIDUMP_MODULE;
  1001. end;
  1002. MINIDUMP_MODULE_LIST = TMINIDUMP_MODULE_LIST;
  1003. LPMINIDUMP_MODULE_LIST = PMINIDUMP_MODULE_LIST;
  1004. PMINIDUMP_MEMORY_LIST = ^TMINIDUMP_MEMORY_LIST;
  1005. TMINIDUMP_MEMORY_LIST = record
  1006. NumberOfMemoryRanges : ULONG32;
  1007. MemoryRanges : array[0..0] of TMINIDUMP_MEMORY_DESCRIPTOR;
  1008. end;
  1009. MINIDUMP_MEMORY_LIST = TMINIDUMP_MEMORY_LIST;
  1010. LPMINIDUMP_MEMORY_LIST = PMINIDUMP_MEMORY_LIST;
  1011. PMINIDUMP_MEMORY64_LIST = ^TMINIDUMP_MEMORY64_LIST;
  1012. TMINIDUMP_MEMORY64_LIST = record
  1013. NumberOfMemoryRanges : ULONG64;
  1014. BaseRva : TRVA64;
  1015. MemoryRanges : array[0..0] of TMINIDUMP_MEMORY_DESCRIPTOR64;
  1016. end;
  1017. MINIDUMP_MEMORY64_LIST = TMINIDUMP_MEMORY64_LIST;
  1018. LPMINIDUMP_MEMORY64_LIST = PMINIDUMP_MEMORY64_LIST;
  1019. PMINIDUMP_EXCEPTION_INFORMATION = ^TMINIDUMP_EXCEPTION_INFORMATION;
  1020. TMINIDUMP_EXCEPTION_INFORMATION = record
  1021. ThreadId : dword;
  1022. ExceptionPointers : PEXCEPTION_POINTERS;
  1023. ClientPointers : BOOL;
  1024. end;
  1025. MINIDUMP_EXCEPTION_INFORMATION = TMINIDUMP_EXCEPTION_INFORMATION;
  1026. LPMINIDUMP_EXCEPTION_INFORMATION = PMINIDUMP_EXCEPTION_INFORMATION;
  1027. PMINIDUMP_EXCEPTION_INFORMATION64 = ^TMINIDUMP_EXCEPTION_INFORMATION64;
  1028. TMINIDUMP_EXCEPTION_INFORMATION64 = record
  1029. ThreadId : dword;
  1030. ExceptionRecord : ULONG64;
  1031. ContextRecord : ULONG64;
  1032. ClientPointers : BOOL;
  1033. end;
  1034. MINIDUMP_EXCEPTION_INFORMATION64 = TMINIDUMP_EXCEPTION_INFORMATION64;
  1035. LPMINIDUMP_EXCEPTION_INFORMATION64 = PMINIDUMP_EXCEPTION_INFORMATION64;
  1036. PMINIDUMP_HANDLE_DESCRIPTOR = ^TMINIDUMP_HANDLE_DESCRIPTOR;
  1037. TMINIDUMP_HANDLE_DESCRIPTOR = record
  1038. Handle : ULONG64;
  1039. TypeNameRva : TRVA;
  1040. ObjectNameRva : TRVA;
  1041. Attributes : ULONG32;
  1042. GrantedAccess : ULONG32;
  1043. HandleCount : ULONG32;
  1044. PointerCount : ULONG32;
  1045. end;
  1046. MINIDUMP_HANDLE_DESCRIPTOR = TMINIDUMP_HANDLE_DESCRIPTOR;
  1047. LPMINIDUMP_HANDLE_DESCRIPTOR = PMINIDUMP_HANDLE_DESCRIPTOR;
  1048. PMINIDUMP_HANDLE_DATA_STREAM = ^TMINIDUMP_HANDLE_DATA_STREAM;
  1049. TMINIDUMP_HANDLE_DATA_STREAM = record
  1050. SizeOfHeader : ULONG32;
  1051. SizeOfDescriptor : ULONG32;
  1052. NumberOfDescriptors : ULONG32;
  1053. Reserved : ULONG32;
  1054. end;
  1055. MINIDUMP_HANDLE_DATA_STREAM = TMINIDUMP_HANDLE_DATA_STREAM;
  1056. LPMINIDUMP_HANDLE_DATA_STREAM = PMINIDUMP_HANDLE_DATA_STREAM;
  1057. PMINIDUMP_FUNCTION_TABLE_DESCRIPTOR = ^TMINIDUMP_FUNCTION_TABLE_DESCRIPTOR;
  1058. TMINIDUMP_FUNCTION_TABLE_DESCRIPTOR = record
  1059. MinimumAddress : ULONG64;
  1060. MaximumAddress : ULONG64;
  1061. BaseAddress : ULONG64;
  1062. EntryCount : ULONG32;
  1063. SizeOfAlignPad : ULONG32;
  1064. end;
  1065. MINIDUMP_FUNCTION_TABLE_DESCRIPTOR = TMINIDUMP_FUNCTION_TABLE_DESCRIPTOR;
  1066. LPMINIDUMP_FUNCTION_TABLE_DESCRIPTOR = PMINIDUMP_FUNCTION_TABLE_DESCRIPTOR;
  1067. PMINIDUMP_FUNCTION_TABLE_STREAM = ^TMINIDUMP_FUNCTION_TABLE_STREAM;
  1068. TMINIDUMP_FUNCTION_TABLE_STREAM = record
  1069. SizeOfHeader : ULONG32;
  1070. SizeOfDescriptor : ULONG32;
  1071. SizeOfNativeDescriptor : ULONG32;
  1072. SizeOfFunctionEntry : ULONG32;
  1073. NumberOfDescriptors : ULONG32;
  1074. SizeOfAlignPad : ULONG32;
  1075. end;
  1076. MINIDUMP_FUNCTION_TABLE_STREAM = TMINIDUMP_FUNCTION_TABLE_STREAM;
  1077. LPPMINIDUMP_FUNCTION_TABLE_STREAM = PMINIDUMP_FUNCTION_TABLE_STREAM;
  1078. PMINIDUMP_UNLOADED_MODULE = ^TMINIDUMP_UNLOADED_MODULE;
  1079. TMINIDUMP_UNLOADED_MODULE = record
  1080. BaseOfImage : ULONG64;
  1081. SizeOfImage : ULONG32;
  1082. CheckSum : ULONG32;
  1083. TimeDateStamp : ULONG32;
  1084. ModuleNameRva : TRVA;
  1085. end;
  1086. MINIDUMP_UNLOADED_MODULE = TMINIDUMP_UNLOADED_MODULE;
  1087. LPMINIDUMP_UNLOADED_MODULE = PMINIDUMP_UNLOADED_MODULE;
  1088. PMINIDUMP_UNLOADED_MODULE_LIST = ^TMINIDUMP_UNLOADED_MODULE_LIST;
  1089. TMINIDUMP_UNLOADED_MODULE_LIST = record
  1090. SizeOfHeader : ULONG32;
  1091. SizeOfEntry : ULONG32;
  1092. NumberOfEntries : ULONG32;
  1093. end;
  1094. MINIDUMP_UNLOADED_MODULE_LIST = TMINIDUMP_UNLOADED_MODULE_LIST;
  1095. LPMINIDUMP_UNLOADED_MODULE_LIST = PMINIDUMP_UNLOADED_MODULE_LIST;
  1096. PMINIDUMP_MISC_INFO = ^TMINIDUMP_MISC_INFO;
  1097. TMINIDUMP_MISC_INFO = record
  1098. SizeOfInfo : ULONG32;
  1099. Flags1 : ULONG32;
  1100. ProcessId : ULONG32;
  1101. ProcessCreateTime : ULONG32;
  1102. ProcessUserTime : ULONG32;
  1103. ProcessKernelTime : ULONG32;
  1104. end;
  1105. MINIDUMP_MISC_INFO = TMINIDUMP_MISC_INFO;
  1106. LPMINIDUMP_MISC_INFO = PMINIDUMP_MISC_INFO;
  1107. PMINIDUMP_USER_RECORD = ^TMINIDUMP_USER_RECORD;
  1108. TMINIDUMP_USER_RECORD = record
  1109. _Type : ULONG32;
  1110. Memory : TMINIDUMP_LOCATION_DESCRIPTOR;
  1111. end;
  1112. MINIDUMP_USER_RECORD = TMINIDUMP_USER_RECORD;
  1113. LPMINIDUMP_USER_RECORD = PMINIDUMP_USER_RECORD;
  1114. PMINIDUMP_USER_STREAM = ^TMINIDUMP_USER_STREAM;
  1115. TMINIDUMP_USER_STREAM = record
  1116. _Type : ULONG32;
  1117. BufferSize : ULONG;
  1118. Buffer : pointer;
  1119. end;
  1120. MINIDUMP_USER_STREAM = TMINIDUMP_USER_STREAM;
  1121. LPMINIDUMP_USER_STREAM = PMINIDUMP_USER_STREAM;
  1122. PMINIDUMP_USER_STREAM_INFORMATION = ^TMINIDUMP_USER_STREAM_INFORMATION;
  1123. TMINIDUMP_USER_STREAM_INFORMATION = record
  1124. UserStreamCount : ULONG;
  1125. UserStreamArray : PMINIDUMP_USER_STREAM;
  1126. end;
  1127. MINIDUMP_USER_STREAM_INFORMATION = TMINIDUMP_USER_STREAM_INFORMATION;
  1128. LPMINIDUMP_USER_STREAM_INFORMATION = PMINIDUMP_USER_STREAM_INFORMATION;
  1129. PMINIDUMP_THREAD_CALLBACK = ^TMINIDUMP_THREAD_CALLBACK;
  1130. TMINIDUMP_THREAD_CALLBACK = record
  1131. ThreadId : ULONG;
  1132. ThreadHandle : THANDLE;
  1133. Context : TCONTEXT;
  1134. SizeOfContext : ULONG;
  1135. StackBase : ULONG64;
  1136. StackEnd : ULONG64;
  1137. end;
  1138. MINIDUMP_THREAD_CALLBACK = TMINIDUMP_THREAD_CALLBACK;
  1139. LPMINIDUMP_THREAD_CALLBACK = PMINIDUMP_THREAD_CALLBACK;
  1140. PMINIDUMP_THREAD_EX_CALLBACK = ^TMINIDUMP_THREAD_EX_CALLBACK;
  1141. TMINIDUMP_THREAD_EX_CALLBACK = record
  1142. ThreadId : ULONG;
  1143. ThreadHandle : THANDLE;
  1144. Context : TCONTEXT;
  1145. SizeOfContext : ULONG;
  1146. StackBase : ULONG64;
  1147. StackEnd : ULONG64;
  1148. BackingStoreBase : ULONG64;
  1149. BackingStoreEnd : ULONG64;
  1150. end;
  1151. MINIDUMP_THREAD_EX_CALLBACK = TMINIDUMP_THREAD_EX_CALLBACK;
  1152. LPMINIDUMP_THREAD_EX_CALLBACK = PMINIDUMP_THREAD_EX_CALLBACK;
  1153. PMINIDUMP_INCLUDE_THREAD_CALLBACK = ^TMINIDUMP_INCLUDE_THREAD_CALLBACK;
  1154. TMINIDUMP_INCLUDE_THREAD_CALLBACK = record
  1155. ThreadId : ULONG;
  1156. end;
  1157. MINIDUMP_INCLUDE_THREAD_CALLBACK = TMINIDUMP_INCLUDE_THREAD_CALLBACK;
  1158. LPMINIDUMP_INCLUDE_THREAD_CALLBACK = PMINIDUMP_INCLUDE_THREAD_CALLBACK;
  1159. PMINIDUMP_MODULE_CALLBACK = ^TMINIDUMP_MODULE_CALLBACK;
  1160. TMINIDUMP_MODULE_CALLBACK = record
  1161. FullPath : PWCHAR;
  1162. BaseOfImage : ULONG64;
  1163. SizeOfImage : ULONG;
  1164. CheckSum : ULONG;
  1165. TimeDateStamp : ULONG;
  1166. VersionInfo : TVSFIXEDFILEINFO;
  1167. CvRecord : pointer;
  1168. SizeOfCvRecord : ULONG;
  1169. MiscRecord : pointer;
  1170. SizeOfMiscRecord : ULONG;
  1171. end;
  1172. MINIDUMP_MODULE_CALLBACK = TMINIDUMP_MODULE_CALLBACK;
  1173. LPMINIDUMP_MODULE_CALLBACK = PMINIDUMP_MODULE_CALLBACK;
  1174. PMINIDUMP_INCLUDE_MODULE_CALLBACK = ^TMINIDUMP_INCLUDE_MODULE_CALLBACK;
  1175. TMINIDUMP_INCLUDE_MODULE_CALLBACK = record
  1176. BaseOfImage : ULONG64;
  1177. end;
  1178. MINIDUMP_INCLUDE_MODULE_CALLBACK = TMINIDUMP_INCLUDE_MODULE_CALLBACK;
  1179. LPMINIDUMP_INCLUDE_MODULE_CALLBACK = PMINIDUMP_INCLUDE_MODULE_CALLBACK;
  1180. PMINIDUMP_CALLBACK_INPUT = ^TMINIDUMP_CALLBACK_INPUT;
  1181. TMINIDUMP_CALLBACK_INPUT = record
  1182. ProcessId : ULONG;
  1183. ProcessHandle : THANDLE;
  1184. CallbackType : ULONG;
  1185. anony : packed record
  1186. case longint of
  1187. 0 : ( Thread : TMINIDUMP_THREAD_CALLBACK );
  1188. 1 : ( ThreadEx : TMINIDUMP_THREAD_EX_CALLBACK );
  1189. 2 : ( Module : TMINIDUMP_MODULE_CALLBACK );
  1190. 3 : ( IncludeThread : TMINIDUMP_INCLUDE_THREAD_CALLBACK );
  1191. 4 : ( IncludeModule : TMINIDUMP_INCLUDE_MODULE_CALLBACK );
  1192. end;
  1193. end;
  1194. MINIDUMP_CALLBACK_INPUT = TMINIDUMP_CALLBACK_INPUT;
  1195. LPMINIDUMP_CALLBACK_INPUT = PMINIDUMP_CALLBACK_INPUT;
  1196. PMINIDUMP_CALLBACK_OUTPUT = ^TMINIDUMP_CALLBACK_OUTPUT;
  1197. TMINIDUMP_CALLBACK_OUTPUT = record
  1198. anony3 : packed record
  1199. case longint of
  1200. 0 : ( ModuleWriteFlags : ULONG );
  1201. 1 : ( ThreadWriteFlags : ULONG );
  1202. 2 : ( anony2 : packed record
  1203. MemoryBase : ULONG64;
  1204. MemorySize : ULONG;
  1205. end );
  1206. end;
  1207. end;
  1208. MINIDUMP_CALLBACK_OUTPUT = TMINIDUMP_CALLBACK_OUTPUT;
  1209. LPMINIDUMP_CALLBACK_OUTPUT = PMINIDUMP_CALLBACK_OUTPUT;
  1210. TIMAGEHLP_STATUS_ROUTINE = function (Reason:TIMAGEHLP_STATUS_REASON; ImageName:PSTR; DllName:PSTR; Va:ULONG_PTR; Parameter:ULONG_PTR):BOOL;stdcall;
  1211. TIMAGEHLP_STATUS_ROUTINE32 = function (Reason:TIMAGEHLP_STATUS_REASON; ImageName:PSTR; DllName:PSTR; Va:ULONG; Parameter:ULONG_PTR):BOOL;stdcall;
  1212. TIMAGEHLP_STATUS_ROUTINE64 = function (Reason:TIMAGEHLP_STATUS_REASON; ImageName:PSTR; DllName:PSTR; Va:ULONG64; Parameter:ULONG_PTR):BOOL;stdcall;
  1213. TDIGEST_FUNCTION = function (refdata:TDIGEST_HANDLE; pData:pbyte; dwLength:DWORD):bool;stdcall;
  1214. TFIND_DEBUG_FILE_CALLBACK = function (FileHandle:THANDLE; FileName:PSTR; CallerData:pointer):bool;stdcall; // callback
  1215. TFINDFILEINPATHCALLBACK = function (filename:PSTR; context:pointer):bool;stdcall;
  1216. TFIND_EXE_FILE_CALLBACK = function (FileHandle:THANDLE; FileName:PSTR; CallerData:pointer):bool;stdcall;
  1217. TSYMBOLSERVERPROC = function (para1:LPCSTR; para2:LPCSTR; para3:pointer; para4:DWORD; para5:DWORD; para6:lpstr):bool;stdcall;
  1218. TSYMBOLSERVEROPENPROC = function (para1:pointer):bool;stdcall;
  1219. TSYMBOLSERVERCLOSEPROC = function (para1:pointer):bool;stdcall;
  1220. TSYMBOLSERVERSETOPTIONSPROC= function (para1:UINT_PTR; para2:ULONG64):bool;stdcall;
  1221. TSYMBOLSERVERCALLBACKPROC = function (action:UINT_PTR; data:ULONG64; context:ULONG64):bool;stdcall;
  1222. TSYMBOLSERVERGETOPTIONSPROC= function :UINT_PTR;stdcall;
  1223. TSYMBOLSERVERPINGPROC = function (para1:LPCSTR):bool;stdcall;
  1224. TENUMDIRTREE_CALLBACK = function (FilePath:LPCSTR; CallerData:pointer):bool;stdcall;
  1225. TREAD_PROCESS_MEMORY_ROUTINE64 = function (hProcess:THANDLE; qwBaseAddress:dword64; lpBuffer:pointer; nSize:dword; lpNumberOfBytesRead:lpdword):bool;stdcall;
  1226. TFUNCTION_TABLE_ACCESS_ROUTINE64= function (hProcess:THANDLE; AddrBase:dword64):pointer;stdcall;
  1227. TGET_MODULE_BASE_ROUTINE64 = function (hProcess:THANDLE; Address:dword64):dword64;stdcall;
  1228. TTRANSLATE_ADDRESS_ROUTINE64 = function (hProcess:THANDLE; hThread:THANDLE; lpaddr:LPADDRESS64):dword64;stdcall;
  1229. {$IFDEF IMAGEHLP64}
  1230. TREAD_PROCESS_MEMORY_ROUTINE = TREAD_PROCESS_MEMORY_ROUTINE64 ;
  1231. TFUNCTION_TABLE_ACCESS_ROUTINE = TFUNCTION_TABLE_ACCESS_ROUTINE64;
  1232. TGET_MODULE_BASE_ROUTINE = TGET_MODULE_BASE_ROUTINE64;
  1233. TTRANSLATE_ADDRESS_ROUTINE = TTRANSLATE_ADDRESS_ROUTINE64;
  1234. {$ELSE}
  1235. TREAD_PROCESS_MEMORY_ROUTINE = function (hProcess:THANDLE; lpBaseAddress:dword; lpBuffer:pointer; nSize:dword; lpNumberOfBytesRead:PDWORD):bool;stdcall;
  1236. TFUNCTION_TABLE_ACCESS_ROUTINE = function (hProcess:THANDLE; AddrBase:dword):pointer;stdcall;
  1237. TGET_MODULE_BASE_ROUTINE = function (hProcess:THANDLE; Address:dword):dword;stdcall;
  1238. TTRANSLATE_ADDRESS_ROUTINE = function (hProcess:THANDLE; hThread:THANDLE; lpaddr:LPADDRESS):dword;stdcall;
  1239. {$ENDIF}
  1240. TSYM_ENUMMODULES_CALLBACK64 = function (ModuleName:PSTR; BaseOfDll:dword64; UserContext:pointer):bool;stdcall; {CALLBACK }
  1241. TSYM_ENUMSYMBOLS_CALLBACK64 = function (SymbolName:PSTR; SymbolAddress:dword64; SymbolSize:ULONG; UserContext:pointer):bool;stdcall; {CALLBACK }
  1242. TSYM_ENUMSYMBOLS_CALLBACK64W = function (SymbolName:lpwstr; SymbolAddress:dword64; SymbolSize:ULONG; UserContext:pointer):bool;stdcall; {CALLBACK }
  1243. TENUMLOADED_MODULES_CALLBACK64 = function (ModuleName:PSTR; ModuleBase:dword64; ModuleSize:ULONG; UserContext:pointer):bool;stdcall; {CALLBACK }
  1244. TSYMBOL_REGISTERED_CALLBACK64 = function (hProcess:THANDLE; ActionCode:ULONG; CallbackData:ULONG64; UserContext:ULONG64):bool;stdcall; {CALLBACK }
  1245. TSYMBOL_FUNCENTRY_CALLBACK64 = function (hProcess:THANDLE; AddrBase:ULONG64; UserContext:ULONG64):pointer;stdcall; {CALLBACK }
  1246. {$IFDEF IMAGEHLP64}
  1247. TSYM_ENUMMODULES_CALLBACK = TSYM_ENUMMODULES_CALLBACK64;
  1248. TSYM_ENUMSYMBOLS_CALLBACK = TSYM_ENUMSYMBOLS_CALLBACK64;
  1249. TSYM_ENUMSYMBOLS_CALLBACKW = TSYM_ENUMSYMBOLS_CALLBACK64W;
  1250. TENUMLOADED_MODULES_CALLBACK = TENUMLOADED_MODULES_CALLBACK64;
  1251. TSYMBOL_REGISTERED_CALLBACK = TSYMBOL_REGISTERED_CALLBACK64;
  1252. TSYMBOL_FUNCENTRY_CALLBACK = TSYMBOL_FUNCENTRY_CALLBACK64;
  1253. {$ELSE}
  1254. TSYM_ENUMMODULES_CALLBACK = function (ModuleName:PSTR; BaseOfDll:ULONG; UserContext:pointer):bool;stdcall;
  1255. TSYM_ENUMSYMBOLS_CALLBACK = function (SymbolName:PSTR; SymbolAddress:ULONG; SymbolSize:ULONG; UserContext:pointer):bool;stdcall;
  1256. TSYM_ENUMSYMBOLS_CALLBACKW = function (SymbolName:lpwstr; SymbolAddress:ULONG; SymbolSize:ULONG; UserContext:pointer):bool;stdcall;
  1257. TENUMLOADED_MODULES_CALLBACK = function (ModuleName:PSTR; ModuleBase:ULONG; ModuleSize:ULONG; UserContext:pointer):bool;stdcall;
  1258. TSYMBOL_REGISTERED_CALLBACK = function (hProcess:THANDLE; ActionCode:ULONG; CallbackData:pointer; UserContext:pointer):bool;stdcall;
  1259. TSYMBOL_FUNCENTRY_CALLBACK = function (hProcess:THANDLE; AddrBase:dword; UserContext:pointer):pointer;stdcall; {CALLBACK }
  1260. {$ENDIF}
  1261. TSYM_ENUMSOURCFILES_CALLBACK = function (pSourceFile:PSOURCEFILE; UserContext:pointer):BOOL;stdcall;
  1262. TSYM_ENUMLINES_CALLBACK = function (LineInfo:PSRCCODEINFO; UserContext:pointer):BOOL;stdcall;
  1263. TSYM_ENUMERATESYMBOLS_CALLBACK = function (pSymInfo:PSYMBOL_INFO; SymbolSize:ULONG; UserContext:pointer):BOOL;stdcall;
  1264. TDBGHELP_CREATE_USER_DUMP_CALLBACK = function (DataType:dword; Data:PPOINTER; DataLength:lpdword; UserData:pointer):BOOL;stdcall;
  1265. TMINIDUMP_CALLBACK_ROUTINE = function (CallbackParam:pointer; CallbackInput:PMINIDUMP_CALLBACK_INPUT; CallbackOutput:PMINIDUMP_CALLBACK_OUTPUT):BOOL;stdcall;
  1266. PMINIDUMP_CALLBACK_INFORMATION = ^TMINIDUMP_CALLBACK_INFORMATION;
  1267. TMINIDUMP_CALLBACK_INFORMATION = record
  1268. CallbackRoutine : TMINIDUMP_CALLBACK_ROUTINE;
  1269. CallbackParam : pointer;
  1270. end;
  1271. MINIDUMP_CALLBACK_INFORMATION = TMINIDUMP_CALLBACK_INFORMATION;
  1272. LPMINIDUMP_CALLBACK_INFORMATION = PMINIDUMP_CALLBACK_INFORMATION;
  1273. function BindImage(ImageName:PSTR; DllPath:PSTR; SymbolPath:PSTR):BOOL;stdcall;external External_library name 'BindImage';
  1274. function BindImageEx(Flags:DWORD; ImageName:PSTR; DllPath:PSTR; SymbolPath:PSTR; StatusRoutine:TIMAGEHLP_STATUS_ROUTINE):BOOL;stdcall;external External_library name 'BindImageEx';
  1275. function ReBaseImage(CurrentImageName:PSTR; SymbolPath:PSTR; fReBase:bool; fRebaseSysfileOk:bool; fGoingDown:bool;
  1276. CheckImageSize:ULONG; OldImageSize:PULONG; OldImageBase:PULONG_PTR; NewImageSize:PULONG; NewImageBase:PULONG_PTR;
  1277. TimeStamp:ULONG):bool;stdcall;external External_library name 'ReBaseImage';
  1278. function ReBaseImage64(CurrentImageName:PSTR; SymbolPath:PSTR; fReBase:bool; fRebaseSysfileOk:bool; fGoingDown:bool;
  1279. CheckImageSize:ULONG; OldImageSize:PULONG; OldImageBase:PULONG64; NewImageSize:PULONG; NewImageBase:PULONG64;
  1280. TimeStamp:ULONG):bool;stdcall;external External_library name 'ReBaseImage64';
  1281. function CheckSumMappedFile(BaseAddress:pointer; FileLength:DWORD; HeaderSum:PDWORD; CheckSum:PDWORD):PIMAGE_NT_HEADERS;stdcall;external External_library name 'CheckSumMappedFile';
  1282. function MapFileAndCheckSumA(Filename:PSTR; HeaderSum:PDWORD; CheckSum:PDWORD):DWORD;stdcall;external External_library name 'MapFileAndCheckSumA';
  1283. function MapFileAndCheckSumW(Filename:lpwstr; HeaderSum:PDWORD; CheckSum:PDWORD):DWORD;stdcall;external External_library name 'MapFileAndCheckSumW';
  1284. {$IFDEF UNICODE}
  1285. function MapFileAndCheckSum(Filename:lpwstr; HeaderSum:PDWORD; CheckSum:PDWORD):DWORD;stdcall;external External_library name 'MapFileAndCheckSumW';
  1286. {$ELSE}
  1287. function MapFileAndCheckSum(Filename:PSTR; HeaderSum:PDWORD; CheckSum:PDWORD):DWORD;stdcall;external External_library name 'MapFileAndCheckSumA';
  1288. {$ENDIF}
  1289. function GetImageConfigInformation(LoadedImage:PLOADED_IMAGE; ImageConfigInformation:PIMAGE_LOAD_CONFIG_DIRECTORY):bool;stdcall;external External_library name 'GetImageConfigInformation';
  1290. function GetImageUnusedHeaderBytes(LoadedImage:PLOADED_IMAGE; SizeUnusedHeaderBytes:PDWORD):DWORD;stdcall;external External_library name 'GetImageUnusedHeaderBytes';
  1291. function SetImageConfigInformation(LoadedImage:PLOADED_IMAGE; ImageConfigInformation:PIMAGE_LOAD_CONFIG_DIRECTORY):bool;stdcall;external External_library name 'SetImageConfigInformation';
  1292. function ImageGetDigestStream(FileHandle:THANDLE; DigestLevel:DWORD; DigestFunction:TDIGEST_FUNCTION; DigestHandle:TDIGEST_HANDLE):bool;stdcall;external External_library name 'ImageGetDigestStream';
  1293. function ImageAddCertificate(FileHandle:THANDLE; Certificate:PWINCERTIFICATE; Index:PDWORD):bool;stdcall;external External_library name 'ImageAddCertificate';
  1294. function ImageRemoveCertificate(FileHandle:THANDLE; Index:DWORD):bool;stdcall;external External_library name 'ImageRemoveCertificate';
  1295. function ImageEnumerateCertificates(FileHandle:THANDLE; TypeFilter:word; CertificateCount:PDWORD; Indices:PDWORD; IndexCount:DWORD):bool;stdcall;external External_library name 'ImageEnumerateCertificates';
  1296. function ImageGetCertificateData(FileHandle:THANDLE; CertificateIndex:DWORD; Certificate:PWINCERTIFICATE; RequiredLength:PDWORD):bool;stdcall;external External_library name 'ImageGetCertificateData';
  1297. function ImageGetCertificateHeader(FileHandle:THANDLE; CertificateIndex:DWORD; Certificateheader:PWINCERTIFICATE):bool;stdcall;external External_library name 'ImageGetCertificateHeader';
  1298. function ImageLoad(DllName:PSTR; DllPath:PSTR):PLOADED_IMAGE;stdcall;external External_library name 'ImageLoad';
  1299. function ImageUnload(LoadedImage:PLOADED_IMAGE):bool;stdcall;external External_library name 'ImageUnload';
  1300. function MapAndLoad(ImageName:PSTR; DllPath:PSTR; LoadedImage:PLOADED_IMAGE; DotDll:bool; ReadOnly:BOOL):bool;stdcall;external External_library name 'MapAndLoad';
  1301. function UnMapAndLoad(LoadedImage:PLOADED_IMAGE):bool;stdcall;external External_library name 'UnMapAndLoad';
  1302. function TouchFileTimes(FileHandle:THANDLE; pSystemTime:PSYSTEMTIME):bool;stdcall;external External_library name 'TouchFileTimes';
  1303. function SplitSymbols(ImageName:PSTR; SymbolsPath:PSTR; SymbolFilePath:PSTR; Flags:DWORD):bool;stdcall;external External_library name 'SplitSymbols';
  1304. function UpdateDebugInfoFile(ImageFileName:PSTR; SymbolPath:PSTR; DebugFilePath:PSTR; NtHeaders:PIMAGE_NT_HEADERS32):bool;stdcall;external External_library name 'UpdateDebugInfoFile';
  1305. function UpdateDebugInfoFileEx(ImageFileName:PSTR; SymbolPath:PSTR; DebugFilePath:PSTR; NtHeaders:PIMAGE_NT_HEADERS32; OldChecksum:DWORD):bool;stdcall;external External_library name 'UpdateDebugInfoFileEx';
  1306. function FindDebugInfoFile(FileName:PSTR; SymbolPath:PSTR; DebugFilePath:PSTR):THANDLE;stdcall;external External_library name 'FindDebugInfoFile';
  1307. function FindDebugInfoFileEx(FileName:PSTR; SymbolPath:PSTR; DebugFilePath:PSTR; Callback:TFIND_DEBUG_FILE_CALLBACK; CallerData:pointer):THANDLE;stdcall;external External_library name 'FindDebugInfoFileEx';
  1308. function SymFindFileInPath(hprocess:THANDLE; SearchPath:lpstr; FileName:lpstr; id:pointer; two:DWORD;
  1309. three:DWORD; flags:DWORD; FoundFile:lpstr; callback:TFINDFILEINPATHCALLBACK; context:pointer):bool;stdcall;external External_library name 'SymFindFileInPath';
  1310. function FindExecutableImage(FileName:PSTR; SymbolPath:PSTR; ImageFilePath:PSTR):THANDLE;stdcall;external External_library name 'FindExecutableImage';
  1311. function FindExecutableImageEx(FileName:PSTR; SymbolPath:PSTR; ImageFilePath:PSTR; Callback:TFIND_EXE_FILE_CALLBACK; CallerData:pointer):THANDLE;stdcall;external External_library name 'FindExecutableImageEx';
  1312. function ImageNtHeader(Base:pointer):PIMAGE_NT_HEADERS;stdcall;external External_library name 'ImageNtHeader';
  1313. function ImageDirectoryEntryToDataEx(Base:pointer; MappedAsImage:bytebool; DirectoryEntry:ushort; Size:PULONG; FoundHeader:PPIMAGE_SECTION_HEADER):pointer;stdcall;external External_library name 'ImageDirectoryEntryToDataEx';
  1314. function ImageDirectoryEntryToData(Base:pointer; MappedAsImage:bytebool; DirectoryEntry:ushort; Size:PULONG):pointer;stdcall;external External_library name 'ImageDirectoryEntryToData';
  1315. function ImageRvaToSection(NtHeaders:PIMAGE_NT_HEADERS; Base:pointer; Rva:ULONG):PIMAGE_SECTION_HEADER;stdcall;external External_library name 'ImageRvaToSection';
  1316. function ImageRvaToVa(NtHeaders:PIMAGE_NT_HEADERS; Base:pointer; Rva:ULONG; LastRvaSection:PPIMAGE_SECTION_HEADER):pointer;stdcall;external External_library name 'ImageRvaToVa';
  1317. {$IFNDEF WIN64}
  1318. function MapDebugInformation(FileHandle:THANDLE; FileName:PSTR; SymbolPath:PSTR; ImageBase:dword):PIMAGE_DEBUG_INFORMATION;stdcall;external External_library name 'MapDebugInformation';
  1319. function UnmapDebugInformation(DebugInfo:PIMAGE_DEBUG_INFORMATION):bool;stdcall;external External_library name 'UnmapDebugInformation';
  1320. {$ENDIF}
  1321. function SearchTreeForFile(RootPath:PSTR; InputPathName:PSTR; OutputPathBuffer:PSTR):bool;stdcall;external External_library name 'SearchTreeForFile';
  1322. function EnumDirTree(hProcess:THANDLE; RootPath:PSTR; InputPathName:PSTR; OutputPathBuffer:PSTR; Callback:TENUMDIRTREE_CALLBACK;
  1323. CallbackData:pointer):bool;stdcall;external External_library name 'EnumDirTree';
  1324. function MakeSureDirectoryPathExists(DirPath:LPCSTR):bool;stdcall;external External_library name 'MakeSureDirectoryPathExists';
  1325. function UnDecorateSymbolName(DecoratedName:LPCSTR; UnDecoratedName:PSTR; UndecoratedLength:dword; Flags:dword):dword;stdcall;external External_library name 'UnDecorateSymbolName';
  1326. function StackWalk64(MachineType:dword; hProcess:THANDLE; hThread:THANDLE; StackFrame:LPSTACKFRAME64; ContextRecord:pointer;
  1327. ReadMemoryRoutine:TREAD_PROCESS_MEMORY_ROUTINE64; FunctionTableAccessRoutine:TFUNCTION_TABLE_ACCESS_ROUTINE64; GetModuleBaseRoutine:TGET_MODULE_BASE_ROUTINE64; TranslateAddress:TTRANSLATE_ADDRESS_ROUTINE64):bool;stdcall;external External_library name 'StackWalk64';
  1328. {$IFDEF IMAGEHLP64}
  1329. function StackWalk(MachineType:dword; hProcess:THANDLE; hThread:THANDLE; StackFrame:LPSTACKFRAME64; ContextRecord:pointer;
  1330. ReadMemoryRoutine:TREAD_PROCESS_MEMORY_ROUTINE64; FunctionTableAccessRoutine:TFUNCTION_TABLE_ACCESS_ROUTINE64; GetModuleBaseRoutine:TGET_MODULE_BASE_ROUTINE64; TranslateAddress:TTRANSLATE_ADDRESS_ROUTINE64):bool;stdcall;external External_library name 'StackWalk64';
  1331. {$ELSE}
  1332. function StackWalk(MachineType:dword; hProcess:THANDLE; hThread:THANDLE; StackFrame:LPSTACKFRAME; ContextRecord:pointer;
  1333. ReadMemoryRoutine:TREAD_PROCESS_MEMORY_ROUTINE; FunctionTableAccessRoutine:TFUNCTION_TABLE_ACCESS_ROUTINE; GetModuleBaseRoutine:TGET_MODULE_BASE_ROUTINE; TranslateAddress:TTRANSLATE_ADDRESS_ROUTINE):bool;stdcall;external External_library name 'StackWalk';
  1334. {$ENDIF}
  1335. function ImagehlpApiVersion:LPAPI_VERSION;stdcall;external External_library name 'ImagehlpApiVersion';
  1336. function ImagehlpApiVersionEx(AppVersion:LPAPI_VERSION):LPAPI_VERSION;stdcall;external External_library name 'ImagehlpApiVersionEx';
  1337. function GetTimestampForLoadedLibrary(Module:HMODULE):dword;stdcall;external External_library name 'GetTimestampForLoadedLibrary';
  1338. function SymSetParentWindow(hwnd:HWND):bool;stdcall;external External_library name 'SymSetParentWindow';
  1339. function SymSetHomeDirectory(dir:LPCSTR):pchar;stdcall;external External_library name 'SymSetHomeDirectory';
  1340. function SymGetHomeDirectory(_type:dword; dir:PSTR; size:Tsize):pchar;stdcall;external External_library name 'SymGetHomeDirectory';
  1341. function SymSetOptions(SymOptions:dword):dword;stdcall;external External_library name 'SymSetOptions';
  1342. function SymGetOptions:dword;stdcall;external External_library name 'SymGetOptions';
  1343. function SymCleanup(hProcess:THANDLE):BOOL;stdcall;external External_library name 'SymCleanup';
  1344. function SymMatchString(_string:lpstr; expression:lpstr; fCase:BOOL):BOOL;stdcall;external External_library name 'SymMatchString';
  1345. function SymEnumSourceFiles(hProcess:THANDLE; ModBase:ULONG64; Mask:lpstr; cbSrcFiles:TSYM_ENUMSOURCFILES_CALLBACK; UserContext:pointer):BOOL;stdcall;external External_library name 'SymEnumSourceFiles';
  1346. function SymEnumerateModules64(hProcess:THANDLE; EnumModulesCallback:TSYM_ENUMMODULES_CALLBACK64; UserContext:pointer):BOOL;stdcall;external External_library name 'SymEnumerateModules64';
  1347. function SymEnumerateSymbols64(hProcess:THANDLE; BaseOfDll:dword64; EnumSymbolsCallback:TSYM_ENUMSYMBOLS_CALLBACK64; UserContext:pointer):BOOL;stdcall;external External_library name 'SymEnumerateSymbols64';
  1348. function SymEnumerateSymbolsW64(hProcess:THANDLE; BaseOfDll:dword64; EnumSymbolsCallback:TSYM_ENUMSYMBOLS_CALLBACK64W; UserContext:pointer):BOOL;stdcall;external External_library name 'SymEnumerateSymbolsW64';
  1349. function EnumerateLoadedModules64(hProcess:THANDLE; EnumLoadedModulesCallback:TENUMLOADED_MODULES_CALLBACK64; UserContext:pointer):BOOL;stdcall;external External_library name 'EnumerateLoadedModules64';
  1350. function SymFunctionTableAccess64(hProcess:THANDLE; AddrBase:dword64):pointer;stdcall;external External_library name 'SymFunctionTableAccess64';
  1351. function SymGetModuleInfo64(hProcess:THANDLE; qwAddr:dword64; ModuleInfo:PIMAGEHLP_MODULE64):BOOL;stdcall;external External_library name 'SymGetModuleInfo64';
  1352. function SymGetModuleInfoW64(hProcess:THANDLE; qwAddr:dword64; ModuleInfo:PIMAGEHLP_MODULEW64):BOOL;stdcall;external External_library name 'SymGetModuleInfoW64';
  1353. function SymGetModuleBase64(hProcess:THANDLE; qwAddr:dword64):dword64;stdcall;external External_library name 'SymGetModuleBase64';
  1354. function SymGetSymNext64(hProcess:THANDLE; Symbol:PIMAGEHLP_SYMBOL64):BOOL;stdcall;external External_library name 'SymGetSymNext64';
  1355. function SymGetSymPrev64(hProcess:THANDLE; Symbol:PIMAGEHLP_SYMBOL64):BOOL;stdcall;external External_library name 'SymGetSymPrev64';
  1356. {$ifdef IMAGEHLP64}
  1357. function SymEnumerateModules(hProcess:THANDLE; EnumModulesCallback:TSYM_ENUMMODULES_CALLBACK64; UserContext:pointer):BOOL;stdcall;external External_library name 'SymEnumerateModules64';
  1358. function SymEnumerateSymbols(hProcess:THANDLE; BaseOfDll:dword64; EnumSymbolsCallback:TSYM_ENUMSYMBOLS_CALLBACK64; UserContext:pointer):BOOL;stdcall;external External_library name 'SymEnumerateSymbols64';
  1359. function SymEnumerateSymbolsW(hProcess:THANDLE; BaseOfDll:dword64; EnumSymbolsCallback:TSYM_ENUMSYMBOLS_CALLBACK64W; UserContext:pointer):BOOL;stdcall;external External_library name 'SymEnumerateSymbolsW64';
  1360. function EnumerateLoadedModules(hProcess:THANDLE; EnumLoadedModulesCallback:TENUMLOADED_MODULES_CALLBACK64; UserContext:pointer):BOOL;stdcall;external External_library name 'EnumerateLoadedModules64';
  1361. function SymFunctionTableAccess(hProcess:THANDLE; AddrBase:dword64):pointer;stdcall;external External_library name 'SymFunctionTableAccess64';
  1362. function SymGetModuleInfo(hProcess:THANDLE; qwAddr:dword64; ModuleInfo:PIMAGEHLP_MODULE64):BOOL;stdcall;external External_library name 'SymGetModuleInfo64';
  1363. function SymGetModuleInfoW(hProcess:THANDLE; qwAddr:dword64; ModuleInfo:PIMAGEHLP_MODULEW64):BOOL;stdcall;external External_library name 'SymGetModuleInfoW64';
  1364. function SymGetModuleBase(hProcess:THANDLE; qwAddr:dword64):dword64;stdcall;external External_library name 'SymGetModuleBase64';
  1365. function SymGetSymNext(hProcess:THANDLE; Symbol:PIMAGEHLP_SYMBOL64):BOOL;stdcall;external External_library name 'SymGetSymNext64';
  1366. function SymGetSymPrev(hProcess:THANDLE; Symbol:PIMAGEHLP_SYMBOL64):BOOL;stdcall;external External_library name 'SymGetSymPrev64';
  1367. {$ELSE}
  1368. function SymEnumerateModules(hProcess:THANDLE; EnumModulesCallback:TSYM_ENUMMODULES_CALLBACK; UserContext:pointer):BOOL;stdcall;external External_library name 'SymEnumerateModules';
  1369. function SymEnumerateSymbols(hProcess:THANDLE; BaseOfDll:dword; EnumSymbolsCallback:TSYM_ENUMSYMBOLS_CALLBACK; UserContext:pointer):BOOL;stdcall;external External_library name 'SymEnumerateSymbols';
  1370. function SymEnumerateSymbolsW(hProcess:THANDLE; BaseOfDll:dword; EnumSymbolsCallback:TSYM_ENUMSYMBOLS_CALLBACKW; UserContext:pointer):BOOL;stdcall;external External_library name 'SymEnumerateSymbolsW';
  1371. function EnumerateLoadedModules(hProcess:THANDLE; EnumLoadedModulesCallback:TENUMLOADED_MODULES_CALLBACK; UserContext:pointer):BOOL;stdcall;external External_library name 'EnumerateLoadedModules';
  1372. function SymFunctionTableAccess(hProcess:THANDLE; AddrBase:dword):pointer;stdcall;external External_library name 'SymFunctionTableAccess';
  1373. function SymGetModuleInfo(hProcess:THANDLE; dwAddr:dword; ModuleInfo:PIMAGEHLP_MODULE):BOOL;stdcall;external External_library name 'SymGetModuleInfo';
  1374. function SymGetModuleInfoW(hProcess:THANDLE; dwAddr:dword; ModuleInfo:PIMAGEHLP_MODULEW):BOOL;stdcall;external External_library name 'SymGetModuleInfoW';
  1375. function SymGetSymPrev(hProcess:THANDLE; Symbol:PIMAGEHLP_SYMBOL):BOOL;stdcall;external External_library name 'SymGetSymPrev';
  1376. function SymGetSymNext(hProcess:THANDLE; Symbol:PIMAGEHLP_SYMBOL):BOOL;stdcall;external External_library name 'SymGetSymNext';
  1377. function SymGetModuleBase(hProcess:THANDLE; dwAddr:dword):dword;stdcall;external External_library name 'SymGetModuleBase';
  1378. {$ENDIF}
  1379. function SymGetLineFromAddr64(hProcess:THANDLE; qwAddr:dword64; pdwDisplacement:PDWORD; Line64:PIMAGEHLP_LINE64):BOOL;stdcall;external External_library name 'SymGetLineFromAddr64';
  1380. function SymGetLineFromName64(hProcess:THANDLE; ModuleName:PSTR; FileName:PSTR; dwLineNumber:dword; plDisplacement:PLONG;
  1381. Line:PIMAGEHLP_LINE64):BOOL;stdcall;external External_library name 'SymGetLineFromName64';
  1382. function SymGetLineNext64(hProcess:THANDLE; Line:PIMAGEHLP_LINE64):BOOL;stdcall;external External_library name 'SymGetLineNext64';
  1383. function SymGetLinePrev64(hProcess:THANDLE; Line:PIMAGEHLP_LINE64):BOOL;stdcall;external External_library name 'SymGetLinePrev64';
  1384. function SymLoadModule64(hProcess:THANDLE; hFile:THANDLE; ImageName:PSTR; ModuleName:PSTR; BaseOfDll:dword64;
  1385. SizeOfDll:dword):dword64;stdcall;external External_library name 'SymLoadModule64';
  1386. function SymUnloadModule64(hProcess:THANDLE; BaseOfDll:dword64):BOOL;stdcall;external External_library name 'SymUnloadModule64';
  1387. function SymUnDName64(sym:PIMAGEHLP_SYMBOL64; UnDecName:PSTR; UnDecNameLength:dword):BOOL;stdcall;external External_library name 'SymUnDName64';
  1388. function SymRegisterCallback64(hProcess:THANDLE; CallbackFunction:TSYMBOL_REGISTERED_CALLBACK64; UserContext:ULONG64):BOOL;stdcall;external External_library name 'SymRegisterCallback64';
  1389. function SymRegisterFunctionEntryCallback64(hProcess:THANDLE; CallbackFunction:TSYMBOL_FUNCENTRY_CALLBACK64; UserContext:ULONG64):BOOL;stdcall;external External_library name 'SymRegisterFunctionEntryCallback64';
  1390. {$ifdef IMAGEHLP64}
  1391. function SymGetLineFromAddr(hProcess:THANDLE; qwAddr:dword64; pdwDisplacement:PDWORD; Line64:PIMAGEHLP_LINE64):BOOL;stdcall;external External_library name 'SymGetLineFromAddr64';
  1392. function SymGetLineFromName(hProcess:THANDLE; ModuleName:PSTR; FileName:PSTR; dwLineNumber:dword; plDisplacement:PLONG;
  1393. Line:PIMAGEHLP_LINE64):BOOL;stdcall;external External_library name 'SymGetLineFromName64';
  1394. function SymGetLineNext(hProcess:THANDLE; Line:PIMAGEHLP_LINE64):BOOL;stdcall;external External_library name 'SymGetLineNext64';
  1395. function SymGetLinePrev(hProcess:THANDLE; Line:PIMAGEHLP_LINE64):BOOL;stdcall;external External_library name 'SymGetLinePrev64';
  1396. function SymLoadModule(hProcess:THANDLE; hFile:THANDLE; ImageName:PSTR; ModuleName:PSTR; BaseOfDll:dword64;
  1397. SizeOfDll:dword):dword64;stdcall;external External_library name 'SymLoadModule64';
  1398. function SymUnloadModule(hProcess:THANDLE; BaseOfDll:dword64):BOOL;stdcall;external External_library name 'SymUnloadModule64';
  1399. function SymUnDName(sym:PIMAGEHLP_SYMBOL64; UnDecName:PSTR; UnDecNameLength:dword):BOOL;stdcall;external External_library name 'SymUnDName64';
  1400. function SymRegisterCallback(hProcess:THANDLE; CallbackFunction:TSYMBOL_REGISTERED_CALLBACK64; UserContext:ULONG64):BOOL;stdcall;external External_library name 'SymRegisterCallback64';
  1401. function SymRegisterFunctionEntryCallback(hProcess:THANDLE; CallbackFunction:TSYMBOL_FUNCENTRY_CALLBACK64; UserContext:ULONG64):BOOL;stdcall;external External_library name 'SymRegisterFunctionEntryCallback64';
  1402. {$else}
  1403. function SymGetLineFromAddr(hProcess:THANDLE; dwAddr:dword; pdwDisplacement:PDWORD; Line:PIMAGEHLP_LINE):BOOL;stdcall;external External_library name 'SymGetLineFromAddr';
  1404. function SymGetLineFromName(hProcess:THANDLE; ModuleName:PSTR; FileName:PSTR; dwLineNumber:dword; plDisplacement:PLONG;
  1405. Line:PIMAGEHLP_LINE):BOOL;stdcall;external External_library name 'SymGetLineFromName';
  1406. function SymGetLineNext(hProcess:THANDLE; Line:PIMAGEHLP_LINE):BOOL;stdcall;external External_library name 'SymGetLineNext';
  1407. function SymGetLinePrev(hProcess:THANDLE; Line:PIMAGEHLP_LINE):BOOL;stdcall;external External_library name 'SymGetLinePrev';
  1408. function SymLoadModule(hProcess:THANDLE; hFile:THANDLE; ImageName:PSTR; ModuleName:PSTR; BaseOfDll:dword;
  1409. SizeOfDll:dword):dword;stdcall;external External_library name 'SymLoadModule';
  1410. function SymUnloadModule(hProcess:THANDLE; BaseOfDll:dword):BOOL;stdcall;external External_library name 'SymUnloadModule';
  1411. function SymUnDName(sym:PIMAGEHLP_SYMBOL; UnDecName:PSTR; UnDecNameLength:dword):BOOL;stdcall;external External_library name 'SymUnDName';
  1412. function SymRegisterCallback(hProcess:THANDLE; CallbackFunction:TSYMBOL_REGISTERED_CALLBACK; UserContext:pointer):BOOL;stdcall;external External_library name 'SymRegisterCallback';
  1413. function SymRegisterFunctionEntryCallback(hProcess:THANDLE; CallbackFunction:TSYMBOL_FUNCENTRY_CALLBACK; UserContext:pointer):BOOL;stdcall;external External_library name 'SymRegisterFunctionEntryCallback';
  1414. {$endif}
  1415. function SymEnumLines(hProcess:THANDLE; Base:ULONG64; Obj:LPCSTR; _File:LPCSTR; EnumLinesCallback:TSYM_ENUMLINES_CALLBACK;
  1416. UserContext:pointer):BOOL;stdcall;external External_library name 'SymEnumLines';
  1417. function SymMatchFileName(FileName:PSTR; Match:PSTR; FileNameStop:PPSTR; MatchStop:PPSTR):BOOL;stdcall;external External_library name 'SymMatchFileName';
  1418. function SymInitialize(hProcess:THANDLE; UserSearchPath:PSTR; fInvadeProcess:BOOL):BOOL;stdcall;external External_library name 'SymInitialize';
  1419. function SymGetSearchPath(hProcess:THANDLE; SearchPath:PSTR; SearchPathLength:dword):BOOL;stdcall;external External_library name 'SymGetSearchPath';
  1420. function SymSetSearchPath(hProcess:THANDLE; SearchPath:PSTR):BOOL;stdcall;external External_library name 'SymSetSearchPath';
  1421. function SymLoadModuleEx(hProcess:THANDLE; hFile:THANDLE; ImageName:PSTR; ModuleName:PSTR; BaseOfDll:dword64;
  1422. DllSize:dword; Data:PMODLOAD_DATA; Flags:dword):dword64;stdcall;external External_library name 'SymLoadModuleEx';
  1423. function SymSetContext(hProcess:THANDLE; StackFrame:PIMAGEHLP_STACK_FRAME; Context:PIMAGEHLP_CONTEXT):BOOL;stdcall;external External_library name 'SymSetContext';
  1424. function SymFromAddr(hProcess:THANDLE; Address:dword64; Displacement:PDWORD64; Symbol:PSYMBOL_INFO):BOOL;stdcall;external External_library name 'SymFromAddr';
  1425. function SymFromToken(hProcess:THANDLE; Base:dword64; Token:dword; Symbol:PSYMBOL_INFO):BOOL;stdcall;external External_library name 'SymFromToken';
  1426. function SymFromName(hProcess:THANDLE; Name:lpstr; Symbol:PSYMBOL_INFO):BOOL;stdcall;external External_library name 'SymFromName';
  1427. function SymEnumSymbols(hProcess:THANDLE; BaseOfDll:ULONG64; Mask:LPCSTR; EnumSymbolsCallback:TSYM_ENUMERATESYMBOLS_CALLBACK; UserContext:pointer):BOOL;stdcall;external External_library name 'SymEnumSymbols';
  1428. function SymEnumSymbolsForAddr(hProcess:THANDLE; Address:dword64; EnumSymbolsCallback:TSYM_ENUMERATESYMBOLS_CALLBACK; UserContext:pointer):BOOL;stdcall;external External_library name 'SymEnumSymbolsForAddr';
  1429. function SymGetTypeInfo(hProcess:THANDLE; ModBase:dword64; TypeId:ULONG; GetType:TIMAGEHLP_SYMBOL_TYPE_INFO; pInfo:pointer):BOOL;stdcall;external External_library name 'SymGetTypeInfo';
  1430. function SymEnumTypes(hProcess:THANDLE; BaseOfDll:ULONG64; EnumSymbolsCallback:TSYM_ENUMERATESYMBOLS_CALLBACK; UserContext:pointer):BOOL;stdcall;external External_library name 'SymEnumTypes';
  1431. function SymGetTypeFromName(hProcess:THANDLE; BaseOfDll:ULONG64; Name:lpstr; Symbol:PSYMBOL_INFO):BOOL;stdcall;external External_library name 'SymGetTypeFromName';
  1432. function SymAddSymbol(hProcess:THANDLE; BaseOfDll:ULONG64; Name:LPCSTR; Address:dword64; Size:dword;
  1433. Flags:dword):BOOL;stdcall;external External_library name 'SymAddSymbol';
  1434. function SymDeleteSymbol(hProcess:THANDLE; BaseOfDll:ULONG64; Name:LPCSTR; Address:dword64; Flags:dword):BOOL;stdcall;external External_library name 'SymDeleteSymbol';
  1435. function DbgHelpCreateUserDump(FileName:lpstr; Callback:TDBGHELP_CREATE_USER_DUMP_CALLBACK; UserData:pointer):BOOL;stdcall;external External_library name 'DbgHelpCreateUserDump';
  1436. function DbgHelpCreateUserDumpW(FileName:LPWSTR; Callback:TDBGHELP_CREATE_USER_DUMP_CALLBACK; UserData:pointer):BOOL;stdcall;external External_library name 'DbgHelpCreateUserDumpW';
  1437. function SymGetSymFromAddr64(hProcess:THANDLE; qwAddr:dword64; pdwDisplacement:PDWORD64; Symbol:PIMAGEHLP_SYMBOL64):BOOL;stdcall;external External_library name 'SymGetSymFromAddr64';
  1438. function SymGetSymFromName64(hProcess:THANDLE; Name:PSTR; Symbol:PIMAGEHLP_SYMBOL64):BOOL;stdcall;external External_library name 'SymGetSymFromName64';
  1439. {$ifdef IMAGEHLP64}
  1440. {$else}
  1441. function SymGetSymFromAddr(hProcess:THANDLE; dwAddr:dword; pdwDisplacement:PDWORD; Symbol:PIMAGEHLP_SYMBOL):BOOL;stdcall;external External_library name 'SymGetSymFromAddr';
  1442. function SymGetSymFromName(hProcess:THANDLE; Name:PSTR; Symbol:PIMAGEHLP_SYMBOL):BOOL;stdcall;external External_library name 'SymGetSymFromName';
  1443. {$endif}
  1444. function FindFileInPath(hprocess:THANDLE; SearchPath:lpstr; FileName:lpstr; id:pointer; two:dword;
  1445. three:dword; flags:dword; FilePath:lpstr):BOOL;stdcall;external External_library name 'FindFileInPath';
  1446. function FindFileInSearchPath(hprocess:THANDLE; SearchPath:lpstr; FileName:lpstr; one:dword; two:dword;
  1447. three:dword; FilePath:lpstr):BOOL;stdcall;external External_library name 'FindFileInSearchPath';
  1448. function SymEnumSym(hProcess:THANDLE; BaseOfDll:ULONG64; EnumSymbolsCallback:TSYM_ENUMERATESYMBOLS_CALLBACK; UserContext:pointer):BOOL;stdcall;external External_library name 'SymEnumSym';
  1449. function MiniDumpWriteDump(hProcess:THANDLE; ProcessId:dword; hFile:THANDLE; DumpType:TMINIDUMP_TYPE; ExceptionParam:PMINIDUMP_EXCEPTION_INFORMATION;
  1450. UserStreamParam:PMINIDUMP_USER_STREAM_INFORMATION; CallbackParam:TMINIDUMP_CALLBACK_INFORMATION):BOOL;stdcall;external External_library name 'MiniDumpWriteDump';
  1451. function MiniDumpReadDumpStream(BaseOfDump:pointer; StreamNumber:ULONG; Dir:PPMINIDUMP_DIRECTORY; StreamPointer:PPOINTER; StreamSize:PULONG):BOOL;stdcall;external External_library name 'MiniDumpReadDumpStream';
  1452. function RVA_TO_ADDR(Mapping:ULONG_PTR;RVA:CARDINAL):POINTER; inline;
  1453. procedure Address64To32(a64: LPADDRESS64 ;a32:LPADDRESS); inline;
  1454. Procedure Address32To64(a32: LPADDRESS ;a64:LPADDRESS64); inline;
  1455. procedure KdHelp32To64(p32:PKDHELP;p64:PKDHELP64); inline;
  1456. implementation
  1457. function RVA_TO_ADDR(Mapping:ULONG_PTR;RVA:CARDINAL):POINTER;
  1458. begin
  1459. rva_to_addr:=pointer(ulong_ptr(mapping)+rva);
  1460. end;
  1461. Procedure Address32To64(a32: LPADDRESS ;a64:LPADDRESS64);
  1462. begin
  1463. a64^.Offset := ULONG64(LONG64(LONG(a32^.Offset))); // I assume these multiple typecasts are to avoid sign problems?
  1464. a64^.Segment := a32^.Segment;
  1465. a64^.Mode := a32^.Mode;
  1466. end;
  1467. procedure Address64To32(a64: LPADDRESS64 ;a32:LPADDRESS);
  1468. begin
  1469. a32^.Offset := ULONG(a64^.Offset);
  1470. a32^.Segment:= a64^.Segment;
  1471. a32^.Mode := a64^.Mode;
  1472. end;
  1473. procedure KdHelp32To64(p32:PKDHELP;p64:PKDHELP64);
  1474. begin
  1475. p64^.Thread := p32^.Thread;
  1476. p64^.ThCallbackStack := p32^.ThCallbackStack;
  1477. p64^.NextCallback := p32^.NextCallback;
  1478. p64^.FramePointer := p32^.FramePointer;
  1479. p64^.KiCallUserMode := p32^.KiCallUserMode;
  1480. p64^.KeUserCallbackDispatcher := p32^.KeUserCallbackDispatcher;
  1481. p64^.SystemRangeStart := p32^.SystemRangeStart;
  1482. end;
  1483. end.