12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105 |
- /**
- * This file has no copyright assigned and is placed in the Public Domain.
- * This file is part of the mingw-w64 runtime package.
- * No warranty is given; refer to the file DISCLAIMER.PD within this package.
- */
- #pragma once
- #ifdef __cplusplus
- extern "C" {
- #endif
- typedef WINBOOL (CALLBACK *PFIND_DEBUG_FILE_CALLBACK)(HANDLE FileHandle,PCSTR FileName,PVOID CallerData);
- typedef WINBOOL (CALLBACK *PFIND_DEBUG_FILE_CALLBACKW)(HANDLE FileHandle,PCWSTR FileName,PVOID CallerData);
- typedef WINBOOL (CALLBACK *PFINDFILEINPATHCALLBACK)(PCSTR filename,PVOID context);
- typedef WINBOOL (CALLBACK *PFINDFILEINPATHCALLBACKW)(PCWSTR filename,PVOID context);
- typedef WINBOOL (CALLBACK *PFIND_EXE_FILE_CALLBACK)(HANDLE FileHandle,PCSTR FileName,PVOID CallerData);
- typedef WINBOOL (CALLBACK *PFIND_EXE_FILE_CALLBACKW)(HANDLE FileHandle,PCWSTR FileName,PVOID CallerData);
- typedef WINBOOL (WINAPI *PSYMBOLSERVERPROC)(LPCSTR,LPCSTR,PVOID,DWORD,DWORD,LPSTR);
- typedef WINBOOL (WINAPI *PSYMBOLSERVEROPENPROC)(VOID);
- typedef WINBOOL (WINAPI *PSYMBOLSERVERCLOSEPROC)(VOID);
- typedef WINBOOL (WINAPI *PSYMBOLSERVERSETOPTIONSPROC)(UINT_PTR,ULONG64);
- typedef WINBOOL (CALLBACK WINAPI *PSYMBOLSERVERCALLBACKPROC)(UINT_PTR action,ULONG64 data,ULONG64 context);
- typedef UINT_PTR (WINAPI *PSYMBOLSERVERGETOPTIONSPROC)();
- typedef WINBOOL (WINAPI *PSYMBOLSERVERPINGPROC)(LPCSTR);
- HANDLE IMAGEAPI FindDebugInfoFile(PCSTR FileName,PCSTR SymbolPath,PSTR DebugFilePath);
- HANDLE IMAGEAPI FindDebugInfoFileEx(PCSTR FileName,PCSTR SymbolPath,PSTR DebugFilePath,PFIND_DEBUG_FILE_CALLBACK Callback,PVOID CallerData);
- HANDLE IMAGEAPI FindDebugInfoFileExW(PCWSTR FileName,PCWSTR SymbolPath,PWSTR DebugFilePath,PFIND_DEBUG_FILE_CALLBACKW Callback,PVOID CallerData);
- WINBOOL IMAGEAPI SymFindFileInPath(HANDLE hprocess,PCSTR SearchPath,PCSTR FileName,PVOID id,DWORD two,DWORD three,DWORD flags,LPSTR FoundFile,PFINDFILEINPATHCALLBACK callback,PVOID context);
- WINBOOL IMAGEAPI SymFindFileInPathW(HANDLE hprocess,PCWSTR SearchPath,PCWSTR FileName,PVOID id,DWORD two,DWORD three,DWORD flags,LPSTR FoundFile,PFINDFILEINPATHCALLBACKW callback,PVOID context);
- HANDLE IMAGEAPI FindExecutableImage(PCSTR FileName,PCSTR SymbolPath,PSTR ImageFilePath);
- HANDLE IMAGEAPI FindExecutableImageEx(PCSTR FileName,PCSTR SymbolPath,PSTR ImageFilePath,PFIND_EXE_FILE_CALLBACK Callback,PVOID CallerData);
- HANDLE IMAGEAPI FindExecutableImageExW(PCWSTR FileName,PCWSTR SymbolPath,PWSTR ImageFilePath,PFIND_EXE_FILE_CALLBACKW Callback,PVOID CallerData);
- PIMAGE_NT_HEADERS IMAGEAPI ImageNtHeader(PVOID Base);
- PVOID IMAGEAPI ImageDirectoryEntryToDataEx(PVOID Base,BOOLEAN MappedAsImage,USHORT DirectoryEntry,PULONG Size,PIMAGE_SECTION_HEADER *FoundHeader);
- PVOID IMAGEAPI ImageDirectoryEntryToData(PVOID Base,BOOLEAN MappedAsImage,USHORT DirectoryEntry,PULONG Size);
- PIMAGE_SECTION_HEADER IMAGEAPI ImageRvaToSection(PIMAGE_NT_HEADERS NtHeaders,PVOID Base,ULONG Rva);
- PVOID IMAGEAPI ImageRvaToVa(PIMAGE_NT_HEADERS NtHeaders,PVOID Base,ULONG Rva,PIMAGE_SECTION_HEADER *LastRvaSection);
- #define SSRVOPT_CALLBACK 0x0001
- #define SSRVOPT_DWORD 0x0002
- #define SSRVOPT_DWORDPTR 0x0004
- #define SSRVOPT_GUIDPTR 0x0008
- #define SSRVOPT_OLDGUIDPTR 0x0010
- #define SSRVOPT_UNATTENDED 0x0020
- #define SSRVOPT_NOCOPY 0x0040
- #define SSRVOPT_PARENTWIN 0x0080
- #define SSRVOPT_PARAMTYPE 0x0100
- #define SSRVOPT_SECURE 0x0200
- #define SSRVOPT_TRACE 0x0400
- #define SSRVOPT_SETCONTEXT 0x0800
- #define SSRVOPT_PROXY 0x1000
- #define SSRVOPT_DOWNSTREAM_STORE 0x2000
- #define SSRVOPT_RESET ((ULONG_PTR)-1)
- #define SSRVACTION_TRACE 1
- #define SSRVACTION_QUERYCANCEL 2
- #define SSRVACTION_EVENT 3
- #ifndef _WIN64
- typedef struct _IMAGE_DEBUG_INFORMATION {
- LIST_ENTRY List;
- DWORD ReservedSize;
- PVOID ReservedMappedBase;
- USHORT ReservedMachine;
- USHORT ReservedCharacteristics;
- DWORD ReservedCheckSum;
- DWORD ImageBase;
- DWORD SizeOfImage;
- DWORD ReservedNumberOfSections;
- PIMAGE_SECTION_HEADER ReservedSections;
- DWORD ReservedExportedNamesSize;
- PSTR ReservedExportedNames;
- DWORD ReservedNumberOfFunctionTableEntries;
- PIMAGE_FUNCTION_ENTRY ReservedFunctionTableEntries;
- DWORD ReservedLowestFunctionStartingAddress;
- DWORD ReservedHighestFunctionEndingAddress;
- DWORD ReservedNumberOfFpoTableEntries;
- PFPO_DATA ReservedFpoTableEntries;
- DWORD SizeOfCoffSymbols;
- PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols;
- DWORD ReservedSizeOfCodeViewSymbols;
- PVOID ReservedCodeViewSymbols;
- PSTR ImageFilePath;
- PSTR ImageFileName;
- PSTR ReservedDebugFilePath;
- DWORD ReservedTimeDateStamp;
- WINBOOL ReservedRomImage;
- PIMAGE_DEBUG_DIRECTORY ReservedDebugDirectory;
- DWORD ReservedNumberOfDebugDirectories;
- DWORD ReservedOriginalFunctionTableBaseAddress;
- DWORD Reserved[2];
- } IMAGE_DEBUG_INFORMATION,*PIMAGE_DEBUG_INFORMATION;
- PIMAGE_DEBUG_INFORMATION IMAGEAPI MapDebugInformation(HANDLE FileHandle,PSTR FileName,PSTR SymbolPath,DWORD ImageBase);
- WINBOOL IMAGEAPI UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION DebugInfo);
- #endif
- typedef WINBOOL (CALLBACK *PENUMDIRTREE_CALLBACK)(LPCSTR FilePath,PVOID CallerData);
- WINBOOL IMAGEAPI SearchTreeForFile(PSTR RootPath,PSTR InputPathName,PSTR OutputPathBuffer);
- WINBOOL IMAGEAPI SearchTreeForFileW(PWSTR RootPath,PWSTR InputPathName,PWSTR OutputPathBuffer);
- WINBOOL IMAGEAPI EnumDirTree(HANDLE hProcess,PSTR RootPath,PSTR InputPathName,PSTR OutputPathBuffer,PENUMDIRTREE_CALLBACK Callback,PVOID CallbackData);
- WINBOOL IMAGEAPI MakeSureDirectoryPathExists(PCSTR DirPath);
- #define UNDNAME_COMPLETE (0x0000)
- #define UNDNAME_NO_LEADING_UNDERSCORES (0x0001)
- #define UNDNAME_NO_MS_KEYWORDS (0x0002)
- #define UNDNAME_NO_FUNCTION_RETURNS (0x0004)
- #define UNDNAME_NO_ALLOCATION_MODEL (0x0008)
- #define UNDNAME_NO_ALLOCATION_LANGUAGE (0x0010)
- #define UNDNAME_NO_MS_THISTYPE (0x0020)
- #define UNDNAME_NO_CV_THISTYPE (0x0040)
- #define UNDNAME_NO_THISTYPE (0x0060)
- #define UNDNAME_NO_ACCESS_SPECIFIERS (0x0080)
- #define UNDNAME_NO_THROW_SIGNATURES (0x0100)
- #define UNDNAME_NO_MEMBER_TYPE (0x0200)
- #define UNDNAME_NO_RETURN_UDT_MODEL (0x0400)
- #define UNDNAME_32_BIT_DECODE (0x0800)
- #define UNDNAME_NAME_ONLY (0x1000)
- #define UNDNAME_NO_ARGUMENTS (0x2000)
- #define UNDNAME_NO_SPECIAL_SYMS (0x4000)
- #define UNDNAME_NO_ARGUMENTS (0x2000)
- #define UNDNAME_NO_SPECIAL_SYMS (0x4000)
- DWORD IMAGEAPI WINAPI UnDecorateSymbolName(PCSTR DecoratedName,PSTR UnDecoratedName,DWORD UndecoratedLength,DWORD Flags);
- DWORD IMAGEAPI WINAPI UnDecorateSymbolNameW(PCWSTR DecoratedName,PWSTR UnDecoratedName,DWORD UndecoratedLength,DWORD Flags);
- #ifdef DBGHELP_TRANSLATE_TCHAR
- #define UnDecorateSymbolName UnDecorateSymbolNameW
- #endif
- #define DBHHEADER_DEBUGDIRS 0x1
- #define DBHHEADER_CVMISC 0x2
- typedef struct _MODLOAD_CVMISC {
- DWORD oCV;
- size_t cCV;
- DWORD oMisc;
- size_t cMisc;
- DWORD dtImage;
- DWORD cImage;
- } MODLOAD_CVMISC, *PMODLOAD_CVMISC;
- typedef enum {
- AddrMode1616,
- AddrMode1632,
- AddrModeReal,
- AddrModeFlat
- } ADDRESS_MODE;
- typedef struct _tagADDRESS64 {
- DWORD64 Offset;
- WORD Segment;
- ADDRESS_MODE Mode;
- } ADDRESS64,*LPADDRESS64;
- #ifdef _IMAGEHLP64
- #define ADDRESS ADDRESS64
- #define LPADDRESS LPADDRESS64
- #else
- typedef struct _tagADDRESS {
- DWORD Offset;
- WORD Segment;
- ADDRESS_MODE Mode;
- } ADDRESS,*LPADDRESS;
- static __inline void Address32To64(LPADDRESS a32,LPADDRESS64 a64) {
- a64->Offset = (ULONG64)(LONG64)(LONG)a32->Offset;
- a64->Segment = a32->Segment;
- a64->Mode = a32->Mode;
- }
- static __inline void Address64To32(LPADDRESS64 a64,LPADDRESS a32) {
- a32->Offset = (ULONG)a64->Offset;
- a32->Segment = a64->Segment;
- a32->Mode = a64->Mode;
- }
- #endif
- typedef struct _KDHELP64 {
- DWORD64 Thread;
- DWORD ThCallbackStack;
- DWORD ThCallbackBStore;
- DWORD NextCallback;
- DWORD FramePointer;
- DWORD64 KiCallUserMode;
- DWORD64 KeUserCallbackDispatcher;
- DWORD64 SystemRangeStart;
- DWORD64 KiUserExceptionDispatcher;
- DWORD64 StackBase;
- DWORD64 StackLimit;
- DWORD BuildVersion;
- DWORD RetpolineStubFunctionTableSize;
- DWORD64 RetpolineStubFunctionTable;
- DWORD RetpolineStubOffset;
- DWORD RetpolineStubSize;
- DWORD64 Reserved0[2];
- } KDHELP64,*PKDHELP64;
- #ifdef _IMAGEHLP64
- #define KDHELP KDHELP64
- #define PKDHELP PKDHELP64
- #else
- typedef struct _KDHELP {
- DWORD Thread;
- DWORD ThCallbackStack;
- DWORD NextCallback;
- DWORD FramePointer;
- DWORD KiCallUserMode;
- DWORD KeUserCallbackDispatcher;
- DWORD SystemRangeStart;
- DWORD ThCallbackBStore;
- DWORD KiUserExceptionDispatcher;
- DWORD StackBase;
- DWORD StackLimit;
- DWORD Reserved[5];
- } KDHELP,*PKDHELP;
- static __inline void KdHelp32To64(PKDHELP p32,PKDHELP64 p64) {
- 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;
- p64->KiUserExceptionDispatcher = p32->KiUserExceptionDispatcher;
- p64->StackBase = p32->StackBase;
- p64->StackLimit = p32->StackLimit;
- }
- #endif
- typedef struct _tagSTACKFRAME64 {
- ADDRESS64 AddrPC;
- ADDRESS64 AddrReturn;
- ADDRESS64 AddrFrame;
- ADDRESS64 AddrStack;
- ADDRESS64 AddrBStore;
- PVOID FuncTableEntry;
- DWORD64 Params[4];
- WINBOOL Far;
- WINBOOL Virtual;
- DWORD64 Reserved[3];
- KDHELP64 KdHelp;
- } STACKFRAME64,*LPSTACKFRAME64;
- #define INLINE_FRAME_CONTEXT_INIT 0
- #define INLINE_FRAME_CONTEXT_IGNORE 0xFFFFFFFF
- typedef struct _tagSTACKFRAME_EX {
- ADDRESS64 AddrPC;
- ADDRESS64 AddrReturn;
- ADDRESS64 AddrFrame;
- ADDRESS64 AddrStack;
- ADDRESS64 AddrBStore;
- PVOID FuncTableEntry;
- DWORD64 Params[4];
- WINBOOL Far;
- WINBOOL Virtual;
- DWORD64 Reserved[3];
- KDHELP64 KdHelp;
- DWORD StackFrameSize;
- DWORD InlineFrameContext;
- } STACKFRAME_EX,*LPSTACKFRAME_EX;
- #ifdef _IMAGEHLP64
- #define STACKFRAME STACKFRAME64
- #define LPSTACKFRAME LPSTACKFRAME64
- #else
- typedef struct _tagSTACKFRAME {
- ADDRESS AddrPC;
- ADDRESS AddrReturn;
- ADDRESS AddrFrame;
- ADDRESS AddrStack;
- PVOID FuncTableEntry;
- DWORD Params[4];
- WINBOOL Far;
- WINBOOL Virtual;
- DWORD Reserved[3];
- KDHELP KdHelp;
- ADDRESS AddrBStore;
- } STACKFRAME,*LPSTACKFRAME;
- #endif
- typedef WINBOOL (WINAPI *PREAD_PROCESS_MEMORY_ROUTINE64)(HANDLE hProcess,DWORD64 qwBaseAddress,PVOID lpBuffer,DWORD nSize,LPDWORD lpNumberOfBytesRead);
- typedef PVOID (WINAPI *PFUNCTION_TABLE_ACCESS_ROUTINE64)(HANDLE hProcess,DWORD64 AddrBase);
- typedef DWORD64 (WINAPI *PGET_MODULE_BASE_ROUTINE64)(HANDLE hProcess,DWORD64 Address);
- typedef DWORD64 (WINAPI *PTRANSLATE_ADDRESS_ROUTINE64)(HANDLE hProcess,HANDLE hThread,LPADDRESS64 lpaddr);
- WINBOOL IMAGEAPI StackWalk64(DWORD MachineType,HANDLE hProcess,HANDLE hThread,LPSTACKFRAME64 StackFrame,PVOID ContextRecord,PREAD_PROCESS_MEMORY_ROUTINE64 ReadMemoryRoutine,PFUNCTION_TABLE_ACCESS_ROUTINE64 FunctionTableAccessRoutine,PGET_MODULE_BASE_ROUTINE64
- GetModuleBaseRoutine,PTRANSLATE_ADDRESS_ROUTINE64 TranslateAddress);
- #ifdef _IMAGEHLP64
- #define PREAD_PROCESS_MEMORY_ROUTINE PREAD_PROCESS_MEMORY_ROUTINE64
- #define PFUNCTION_TABLE_ACCESS_ROUTINE PFUNCTION_TABLE_ACCESS_ROUTINE64
- #define PGET_MODULE_BASE_ROUTINE PGET_MODULE_BASE_ROUTINE64
- #define PTRANSLATE_ADDRESS_ROUTINE PTRANSLATE_ADDRESS_ROUTINE64
- #define StackWalk StackWalk64
- #else
- typedef WINBOOL (WINAPI *PREAD_PROCESS_MEMORY_ROUTINE)(HANDLE hProcess,DWORD lpBaseAddress,PVOID lpBuffer,DWORD nSize,PDWORD lpNumberOfBytesRead);
- typedef PVOID (WINAPI *PFUNCTION_TABLE_ACCESS_ROUTINE)(HANDLE hProcess,DWORD AddrBase);
- typedef DWORD (WINAPI *PGET_MODULE_BASE_ROUTINE)(HANDLE hProcess,DWORD Address);
- typedef DWORD (WINAPI *PTRANSLATE_ADDRESS_ROUTINE)(HANDLE hProcess,HANDLE hThread,LPADDRESS lpaddr);
- WINBOOL IMAGEAPI StackWalk(DWORD MachineType,HANDLE hProcess,HANDLE hThread,LPSTACKFRAME StackFrame,PVOID ContextRecord,PREAD_PROCESS_MEMORY_ROUTINE ReadMemoryRoutine,PFUNCTION_TABLE_ACCESS_ROUTINE FunctionTableAccessRoutine,PGET_MODULE_BASE_ROUTINE
- GetModuleBaseRoutine,PTRANSLATE_ADDRESS_ROUTINE TranslateAddress);
- #endif
- #define API_VERSION_NUMBER 11
- typedef struct API_VERSION {
- USHORT MajorVersion;
- USHORT MinorVersion;
- USHORT Revision;
- USHORT Reserved;
- } API_VERSION,*LPAPI_VERSION;
- LPAPI_VERSION IMAGEAPI ImagehlpApiVersion(VOID);
- LPAPI_VERSION IMAGEAPI ImagehlpApiVersionEx(LPAPI_VERSION AppVersion);
- DWORD IMAGEAPI GetTimestampForLoadedLibrary(HMODULE Module);
- typedef WINBOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK64)(PCSTR ModuleName,DWORD64 BaseOfDll,PVOID UserContext);
- typedef WINBOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACKW64)(PCWSTR ModuleName,DWORD64 BaseOfDll,PVOID UserContext);
- typedef WINBOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64)(PCSTR SymbolName,DWORD64 SymbolAddress,ULONG SymbolSize,PVOID UserContext);
- typedef WINBOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64W)(PCWSTR SymbolName,DWORD64 SymbolAddress,ULONG SymbolSize,PVOID UserContext);
- typedef WINBOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK64)(PCSTR ModuleName,DWORD64 ModuleBase,ULONG ModuleSize,PVOID UserContext);
- typedef WINBOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACKW64)(PCWSTR ModuleName,DWORD64 ModuleBase,ULONG ModuleSize,PVOID UserContext);
- typedef WINBOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK64)(HANDLE hProcess,ULONG ActionCode,ULONG64 CallbackData,ULONG64 UserContext);
- typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK)(HANDLE hProcess,DWORD AddrBase,PVOID UserContext);
- typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK64)(HANDLE hProcess,ULONG64 AddrBase,ULONG64 UserContext);
- #ifdef _IMAGEHLP64
- #define PSYM_ENUMMODULES_CALLBACK PSYM_ENUMMODULES_CALLBACK64
- #define PSYM_ENUMSYMBOLS_CALLBACK PSYM_ENUMSYMBOLS_CALLBACK64
- #define PSYM_ENUMSYMBOLS_CALLBACKW PSYM_ENUMSYMBOLS_CALLBACK64W
- #define PENUMLOADED_MODULES_CALLBACK PENUMLOADED_MODULES_CALLBACK64
- #define PSYMBOL_REGISTERED_CALLBACK PSYMBOL_REGISTERED_CALLBACK64
- #define PSYMBOL_FUNCENTRY_CALLBACK PSYMBOL_FUNCENTRY_CALLBACK64
- #else
- typedef WINBOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK)(PCSTR ModuleName,ULONG BaseOfDll,PVOID UserContext);
- typedef WINBOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)(PCSTR SymbolName,ULONG SymbolAddress,ULONG SymbolSize,PVOID UserContext);
- typedef WINBOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACKW)(PCWSTR SymbolName,ULONG SymbolAddress,ULONG SymbolSize,PVOID UserContext);
- typedef WINBOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK)(PCSTR ModuleName,ULONG ModuleBase,ULONG ModuleSize,PVOID UserContext);
- typedef WINBOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK)(HANDLE hProcess,ULONG ActionCode,PVOID CallbackData,PVOID UserContext);
- #endif
- #define SYMFLAG_VALUEPRESENT 0x00000001
- #define SYMFLAG_REGISTER 0x00000008
- #define SYMFLAG_REGREL 0x00000010
- #define SYMFLAG_FRAMEREL 0x00000020
- #define SYMFLAG_PARAMETER 0x00000040
- #define SYMFLAG_LOCAL 0x00000080
- #define SYMFLAG_CONSTANT 0x00000100
- #define SYMFLAG_EXPORT 0x00000200
- #define SYMFLAG_FORWARDER 0x00000400
- #define SYMFLAG_FUNCTION 0x00000800
- #define SYMFLAG_VIRTUAL 0x00001000
- #define SYMFLAG_THUNK 0x00002000
- #define SYMFLAG_TLSREL 0x00004000
- #define SYMFLAG_SLOT 0x00008000
- #define SYMFLAG_ILREL 0x00010000
- #define SYMFLAG_METADATA 0x00020000
- #define SYMFLAG_CLR_TOKEN 0x00040000
- #define SYMFLAG_NULL 0x00080000
- #define SYMFLAG_FUNC_NO_RETURN 0x00100000
- #define SYMFLAG_SYNTHETIC_ZEROBASE 0x00200000
- #define SYMFLAG_PUBLIC_CODE 0x00400000
- #define SYMFLAG_REGREL_ALIASINDIR 0x00800000
- #define SYMFLAG_FIXUP_ARM64X 0x01000000
- #define SYMFLAG_GLOBAL 0x02000000
- #define SYMFLAG_RESET 0x80000000
- typedef enum {
- SymNone = 0,
- SymCoff,
- SymCv,
- SymPdb,
- SymExport,
- SymDeferred,
- SymSym,
- SymDia,
- SymVirtual,
- NumSymTypes
- } SYM_TYPE;
- typedef struct _IMAGEHLP_SYMBOL64 {
- DWORD SizeOfStruct;
- DWORD64 Address;
- DWORD Size;
- DWORD Flags;
- DWORD MaxNameLength;
- CHAR Name[1];
- } IMAGEHLP_SYMBOL64,*PIMAGEHLP_SYMBOL64;
- typedef struct _IMAGEHLP_SYMBOL64_PACKAGE {
- IMAGEHLP_SYMBOL64 sym;
- CHAR name[MAX_SYM_NAME + 1];
- } IMAGEHLP_SYMBOL64_PACKAGE,*PIMAGEHLP_SYMBOL64_PACKAGE;
- #ifdef _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
- typedef struct _IMAGEHLP_SYMBOL {
- DWORD SizeOfStruct;
- DWORD Address;
- DWORD Size;
- DWORD Flags;
- DWORD MaxNameLength;
- CHAR Name[1];
- } IMAGEHLP_SYMBOL,*PIMAGEHLP_SYMBOL;
- typedef struct _IMAGEHLP_SYMBOL_PACKAGE {
- IMAGEHLP_SYMBOL sym;
- CHAR name[MAX_SYM_NAME + 1];
- } IMAGEHLP_SYMBOL_PACKAGE,*PIMAGEHLP_SYMBOL_PACKAGE;
- #endif
- typedef struct _IMAGEHLP_MODULE64 {
- DWORD SizeOfStruct;
- DWORD64 BaseOfImage;
- DWORD ImageSize;
- DWORD TimeDateStamp;
- DWORD CheckSum;
- DWORD NumSyms;
- SYM_TYPE SymType;
- CHAR ModuleName[32];
- CHAR ImageName[256];
- CHAR LoadedImageName[256];
- CHAR LoadedPdbName[256];
- DWORD CVSig;
- CHAR CVData[MAX_PATH*3];
- DWORD PdbSig;
- GUID PdbSig70;
- DWORD PdbAge;
- WINBOOL PdbUnmatched;
- WINBOOL DbgUnmatched;
- WINBOOL LineNumbers;
- WINBOOL GlobalSymbols;
- WINBOOL TypeInfo;
- WINBOOL SourceIndexed;
- WINBOOL Publics;
- DWORD MachineType;
- DWORD Reserved;
- } IMAGEHLP_MODULE64,*PIMAGEHLP_MODULE64;
- typedef struct _IMAGEHLP_MODULE64_EX {
- IMAGEHLP_MODULE64 Module;
- DWORD RegionFlags;
- } IMAGEHLP_MODULE64_EX,*PIMAGEHLP_MODULE64_EX;
- typedef struct _IMAGEHLP_MODULE64W {
- DWORD SizeOfStruct;
- DWORD64 BaseOfImage;
- DWORD ImageSize;
- DWORD TimeDateStamp;
- DWORD CheckSum;
- DWORD NumSyms;
- SYM_TYPE SymType;
- WCHAR ModuleName[32];
- WCHAR ImageName[256];
- WCHAR LoadedImageName[256];
- WCHAR LoadedPdbName[256];
- DWORD CVSig;
- WCHAR CVData[MAX_PATH*3];
- DWORD PdbSig;
- GUID PdbSig70;
- DWORD PdbAge;
- WINBOOL PdbUnmatched;
- WINBOOL DbgUnmatched;
- WINBOOL LineNumbers;
- WINBOOL GlobalSymbols;
- WINBOOL TypeInfo;
- WINBOOL SourceIndexed;
- WINBOOL Publics;
- DWORD MachineType;
- DWORD Reserved;
- } IMAGEHLP_MODULEW64,*PIMAGEHLP_MODULEW64;
- typedef struct _IMAGEHLP_MODULEW64_EX {
- IMAGEHLP_MODULEW64 Module;
- DWORD RegionFlags;
- } IMAGEHLP_MODULEW64_EX,*PIMAGEHLP_MODULEW64_EX;
- #ifdef _IMAGEHLP64
- #define IMAGEHLP_MODULE IMAGEHLP_MODULE64
- #define PIMAGEHLP_MODULE PIMAGEHLP_MODULE64
- #define IMAGEHLP_MODULEW IMAGEHLP_MODULEW64
- #define PIMAGEHLP_MODULEW PIMAGEHLP_MODULEW64
- #else
- typedef struct _IMAGEHLP_MODULE {
- DWORD SizeOfStruct;
- DWORD BaseOfImage;
- DWORD ImageSize;
- DWORD TimeDateStamp;
- DWORD CheckSum;
- DWORD NumSyms;
- SYM_TYPE SymType;
- CHAR ModuleName[32];
- CHAR ImageName[256];
- CHAR LoadedImageName[256];
- } IMAGEHLP_MODULE,*PIMAGEHLP_MODULE;
- typedef struct _IMAGEHLP_MODULEW {
- DWORD SizeOfStruct;
- DWORD BaseOfImage;
- DWORD ImageSize;
- DWORD TimeDateStamp;
- DWORD CheckSum;
- DWORD NumSyms;
- SYM_TYPE SymType;
- WCHAR ModuleName[32];
- WCHAR ImageName[256];
- WCHAR LoadedImageName[256];
- } IMAGEHLP_MODULEW,*PIMAGEHLP_MODULEW;
- #endif
- typedef struct _IMAGEHLP_LINE64 {
- DWORD SizeOfStruct;
- PVOID Key;
- DWORD LineNumber;
- PCHAR FileName;
- DWORD64 Address;
- } IMAGEHLP_LINE64,*PIMAGEHLP_LINE64;
- typedef struct _IMAGEHLP_LINEW64 {
- DWORD SizeOfStruct;
- PVOID Key;
- DWORD LineNumber;
- PWSTR FileName;
- DWORD64 Address;
- } IMAGEHLP_LINEW64, *PIMAGEHLP_LINEW64;
- #ifdef _IMAGEHLP64
- #define IMAGEHLP_LINE IMAGEHLP_LINE64
- #define PIMAGEHLP_LINE PIMAGEHLP_LINE64
- #else
- typedef struct _IMAGEHLP_LINE {
- DWORD SizeOfStruct;
- PVOID Key;
- DWORD LineNumber;
- PCHAR FileName;
- DWORD Address;
- } IMAGEHLP_LINE,*PIMAGEHLP_LINE;
- #endif
- typedef struct _SOURCEFILE {
- DWORD64 ModBase;
- PCHAR FileName;
- } SOURCEFILE,*PSOURCEFILE;
- typedef struct _SOURCEFILEW {
- DWORD64 ModBase;
- PWCHAR FileName;
- } SOURCEFILEW,*PSOURCEFILEW;
- #define CBA_DEFERRED_SYMBOL_LOAD_START 0x00000001
- #define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE 0x00000002
- #define CBA_DEFERRED_SYMBOL_LOAD_FAILURE 0x00000003
- #define CBA_SYMBOLS_UNLOADED 0x00000004
- #define CBA_DUPLICATE_SYMBOL 0x00000005
- #define CBA_READ_MEMORY 0x00000006
- #define CBA_DEFERRED_SYMBOL_LOAD_CANCEL 0x00000007
- #define CBA_SET_OPTIONS 0x00000008
- #define CBA_EVENT 0x00000010
- #define CBA_DEFERRED_SYMBOL_LOAD_PARTIAL 0x00000020
- #define CBA_DEBUG_INFO 0x10000000
- #define CBA_SRCSRV_INFO 0x20000000
- #define CBA_SRCSRV_EVENT 0x40000000
- typedef struct _IMAGEHLP_CBA_READ_MEMORY {
- DWORD64 addr;
- PVOID buf;
- DWORD bytes;
- DWORD *bytesread;
- } IMAGEHLP_CBA_READ_MEMORY,*PIMAGEHLP_CBA_READ_MEMORY;
- enum {
- sevInfo = 0,
- sevProblem,
- sevAttn,
- sevFatal,
- sevMax
- };
- typedef struct _IMAGEHLP_CBA_EVENT {
- DWORD severity;
- DWORD code;
- PCHAR desc;
- PVOID object;
- } IMAGEHLP_CBA_EVENT,*PIMAGEHLP_CBA_EVENT;
- typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD64 {
- DWORD SizeOfStruct;
- DWORD64 BaseOfImage;
- DWORD CheckSum;
- DWORD TimeDateStamp;
- CHAR FileName[MAX_PATH];
- BOOLEAN Reparse;
- HANDLE hFile;
- DWORD Flags;
- } IMAGEHLP_DEFERRED_SYMBOL_LOAD64,*PIMAGEHLP_DEFERRED_SYMBOL_LOAD64;
- #define DSLFLAG_MISMATCHED_PDB 0x1
- #define DSLFLAG_MISMATCHED_DBG 0x2
- #ifdef _IMAGEHLP64
- #define IMAGEHLP_DEFERRED_SYMBOL_LOAD IMAGEHLP_DEFERRED_SYMBOL_LOAD64
- #define PIMAGEHLP_DEFERRED_SYMBOL_LOAD PIMAGEHLP_DEFERRED_SYMBOL_LOAD64
- #else
- typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD {
- DWORD SizeOfStruct;
- DWORD BaseOfImage;
- DWORD CheckSum;
- DWORD TimeDateStamp;
- CHAR FileName[MAX_PATH];
- BOOLEAN Reparse;
- HANDLE hFile;
- } IMAGEHLP_DEFERRED_SYMBOL_LOAD,*PIMAGEHLP_DEFERRED_SYMBOL_LOAD;
- #endif
- typedef struct _IMAGEHLP_DUPLICATE_SYMBOL64 {
- DWORD SizeOfStruct;
- DWORD NumberOfDups;
- PIMAGEHLP_SYMBOL64 Symbol;
- DWORD SelectedSymbol;
- } IMAGEHLP_DUPLICATE_SYMBOL64,*PIMAGEHLP_DUPLICATE_SYMBOL64;
- #ifdef _IMAGEHLP64
- #define IMAGEHLP_DUPLICATE_SYMBOL IMAGEHLP_DUPLICATE_SYMBOL64
- #define PIMAGEHLP_DUPLICATE_SYMBOL PIMAGEHLP_DUPLICATE_SYMBOL64
- #else
- typedef struct _IMAGEHLP_DUPLICATE_SYMBOL {
- DWORD SizeOfStruct;
- DWORD NumberOfDups;
- PIMAGEHLP_SYMBOL Symbol;
- DWORD SelectedSymbol;
- } IMAGEHLP_DUPLICATE_SYMBOL,*PIMAGEHLP_DUPLICATE_SYMBOL;
- #endif
- typedef struct _SYMSRV_INDEX_INFO {
- DWORD sizeofstruct;
- CHAR file[MAX_PATH +1];
- WINBOOL stripped;
- DWORD timestamp;
- DWORD size;
- CHAR dbgfile[MAX_PATH +1];
- CHAR pdbfile[MAX_PATH + 1];
- GUID guid;
- DWORD sig;
- DWORD age;
- } SYMSRV_INDEX_INFO, *PSYMSRV_INDEX_INFO;
- typedef struct _SYMSRV_INDEX_INFOW {
- DWORD sizeofstruct;
- WCHAR file[MAX_PATH +1];
- WINBOOL stripped;
- DWORD timestamp;
- DWORD size;
- WCHAR dbgfile[MAX_PATH +1];
- WCHAR pdbfile[MAX_PATH + 1];
- GUID guid;
- DWORD sig;
- DWORD age;
- } SYMSRV_INDEX_INFOW, *PSYMSRV_INDEX_INFOW;
- WINBOOL IMAGEAPI SymSetParentWindow(HWND hwnd);
- PCHAR IMAGEAPI SymSetHomeDirectory(HANDLE hProcess,PCSTR dir);
- PCHAR IMAGEAPI SymSetHomeDirectoryW(HANDLE hProcess,PCWSTR dir);
- PCHAR IMAGEAPI SymGetHomeDirectory(DWORD type,PSTR dir,size_t size);
- PWCHAR IMAGEAPI SymGetHomeDirectoryW(DWORD type,PWSTR dir,size_t size);
- #define hdBase 0
- #define hdSym 1
- #define hdSrc 2
- #define hdMax 3
- #define SYMOPT_CASE_INSENSITIVE 0x00000001
- #define SYMOPT_UNDNAME 0x00000002
- #define SYMOPT_DEFERRED_LOADS 0x00000004
- #define SYMOPT_NO_CPP 0x00000008
- #define SYMOPT_LOAD_LINES 0x00000010
- #define SYMOPT_OMAP_FIND_NEAREST 0x00000020
- #define SYMOPT_LOAD_ANYTHING 0x00000040
- #define SYMOPT_IGNORE_CVREC 0x00000080
- #define SYMOPT_NO_UNQUALIFIED_LOADS 0x00000100
- #define SYMOPT_FAIL_CRITICAL_ERRORS 0x00000200
- #define SYMOPT_EXACT_SYMBOLS 0x00000400
- #define SYMOPT_ALLOW_ABSOLUTE_SYMBOLS 0x00000800
- #define SYMOPT_IGNORE_NT_SYMPATH 0x00001000
- #define SYMOPT_INCLUDE_32BIT_MODULES 0x00002000
- #define SYMOPT_PUBLICS_ONLY 0x00004000
- #define SYMOPT_NO_PUBLICS 0x00008000
- #define SYMOPT_AUTO_PUBLICS 0x00010000
- #define SYMOPT_NO_IMAGE_SEARCH 0x00020000
- #define SYMOPT_SECURE 0x00040000
- #define SYMOPT_NO_PROMPTS 0x00080000
- #define SYMOPT_ALLOW_ZERO_ADDRESS 0x01000000
- #define SYMOPT_DISABLE_SYMSRV_AUTODETECT 0x02000000
- #define SYMOPT_FAVOR_COMPRESSED 0x00800000
- #define SYMOPT_FLAT_DIRECTORY 0x00400000
- #define SYMOPT_IGNORE_IMAGEDIR 0x00200000
- #define SYMOPT_OVERWRITE 0x00100000
- #define SYMOPT_DEBUG 0x80000000
- DWORD IMAGEAPI SymSetOptions(DWORD SymOptions);
- DWORD IMAGEAPI SymGetOptions(VOID);
- WINBOOL IMAGEAPI SymCleanup(HANDLE hProcess);
- WINBOOL IMAGEAPI SymMatchString(PCSTR string,PCSTR expression,WINBOOL fCase);
- WINBOOL IMAGEAPI SymMatchStringW(PCWSTR string,PCWSTR expression,WINBOOL fCase);
- typedef WINBOOL (CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACK)(PSOURCEFILE pSourceFile,PVOID UserContext);
- typedef WINBOOL (CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACKW)(PSOURCEFILEW pSourceFile,PVOID UserContext);
- #define PSYM_ENUMSOURCFILES_CALLBACK PSYM_ENUMSOURCEFILES_CALLBACK
- WINBOOL IMAGEAPI SymEnumSourceFiles(HANDLE hProcess,ULONG64 ModBase,PCSTR Mask,PSYM_ENUMSOURCEFILES_CALLBACK cbSrcFiles,PVOID UserContext);
- WINBOOL IMAGEAPI SymEnumSourceFilesW(HANDLE hProcess,ULONG64 ModBase,PCWSTR Mask,PSYM_ENUMSOURCEFILES_CALLBACKW cbSrcFiles,PVOID UserContext);
- WINBOOL IMAGEAPI SymEnumerateModules64(HANDLE hProcess,PSYM_ENUMMODULES_CALLBACK64 EnumModulesCallback,PVOID UserContext);
- WINBOOL IMAGEAPI SymEnumerateModulesW64(HANDLE hProcess,PSYM_ENUMMODULES_CALLBACKW64 EnumModulesCallback,PVOID UserContext);
- #ifdef _IMAGEHLP64
- #define SymEnumerateModules SymEnumerateModules64
- #else
- WINBOOL IMAGEAPI SymEnumerateModules(HANDLE hProcess,PSYM_ENUMMODULES_CALLBACK EnumModulesCallback,PVOID UserContext);
- #endif
- WINBOOL IMAGEAPI SymEnumerateSymbols64(HANDLE hProcess,DWORD64 BaseOfDll,PSYM_ENUMSYMBOLS_CALLBACK64 EnumSymbolsCallback,PVOID UserContext);
- WINBOOL IMAGEAPI SymEnumerateSymbolsW64(HANDLE hProcess,DWORD64 BaseOfDll,PSYM_ENUMSYMBOLS_CALLBACK64W EnumSymbolsCallback,PVOID UserContext);
- #ifdef _IMAGEHLP64
- #define SymEnumerateSymbols SymEnumerateSymbols64
- #define SymEnumerateSymbolsW SymEnumerateSymbolsW64
- #else
- WINBOOL IMAGEAPI SymEnumerateSymbols(HANDLE hProcess,DWORD BaseOfDll,PSYM_ENUMSYMBOLS_CALLBACK EnumSymbolsCallback,PVOID UserContext);
- WINBOOL IMAGEAPI SymEnumerateSymbolsW(HANDLE hProcess,DWORD BaseOfDll,PSYM_ENUMSYMBOLS_CALLBACKW EnumSymbolsCallback,PVOID UserContext);
- #endif
- WINBOOL IMAGEAPI EnumerateLoadedModules64(HANDLE hProcess,PENUMLOADED_MODULES_CALLBACK64 EnumLoadedModulesCallback,PVOID UserContext);
- WINBOOL IMAGEAPI EnumerateLoadedModulesW64(HANDLE hProcess,PENUMLOADED_MODULES_CALLBACKW64 EnumLoadedModulesCallback,PVOID UserContext);
- #ifdef DBGHELP_TRANSLATE_TCHAR
- #define EnumerateLoadedModules64 EnumerateLoadedModulesW64
- #endif
- #ifdef _IMAGEHLP64
- #define EnumerateLoadedModules EnumerateLoadedModules64
- #else
- WINBOOL IMAGEAPI EnumerateLoadedModules(HANDLE hProcess,PENUMLOADED_MODULES_CALLBACK EnumLoadedModulesCallback,PVOID UserContext);
- #endif
- PVOID IMAGEAPI SymFunctionTableAccess64(HANDLE hProcess,DWORD64 AddrBase);
- #ifdef _IMAGEHLP64
- #define SymFunctionTableAccess SymFunctionTableAccess64
- #else
- PVOID IMAGEAPI SymFunctionTableAccess(HANDLE hProcess,DWORD AddrBase);
- #endif
- WINBOOL IMAGEAPI SymGetModuleInfo64(HANDLE hProcess,DWORD64 qwAddr,PIMAGEHLP_MODULE64 ModuleInfo);
- WINBOOL IMAGEAPI SymGetModuleInfoW64(HANDLE hProcess,DWORD64 qwAddr,PIMAGEHLP_MODULEW64 ModuleInfo);
- #ifdef _IMAGEHLP64
- #define SymGetModuleInfo SymGetModuleInfo64
- #define SymGetModuleInfoW SymGetModuleInfoW64
- #else
- WINBOOL IMAGEAPI SymGetModuleInfo(HANDLE hProcess,DWORD dwAddr,PIMAGEHLP_MODULE ModuleInfo);
- WINBOOL IMAGEAPI SymGetModuleInfoW(HANDLE hProcess,DWORD dwAddr,PIMAGEHLP_MODULEW ModuleInfo);
- #endif
- DWORD64 IMAGEAPI SymGetModuleBase64(HANDLE hProcess,DWORD64 qwAddr);
- #ifdef _IMAGEHLP64
- #define SymGetModuleBase SymGetModuleBase64
- #else
- DWORD IMAGEAPI SymGetModuleBase(HANDLE hProcess,DWORD dwAddr);
- #endif
- WINBOOL IMAGEAPI SymGetSymNext64(HANDLE hProcess,PIMAGEHLP_SYMBOL64 Symbol);
- #ifdef _IMAGEHLP64
- #define SymGetSymNext SymGetSymNext64
- #else
- WINBOOL IMAGEAPI SymGetSymNext(HANDLE hProcess,PIMAGEHLP_SYMBOL Symbol);
- #endif
- WINBOOL IMAGEAPI SymGetSymPrev64(HANDLE hProcess,PIMAGEHLP_SYMBOL64 Symbol);
- #ifdef _IMAGEHLP64
- #define SymGetSymPrev SymGetSymPrev64
- #else
- WINBOOL IMAGEAPI SymGetSymPrev(HANDLE hProcess,PIMAGEHLP_SYMBOL Symbol);
- #endif
- typedef struct _SRCCODEINFO {
- DWORD SizeOfStruct;
- PVOID Key;
- DWORD64 ModBase;
- CHAR Obj[MAX_PATH + 1];
- CHAR FileName[MAX_PATH + 1];
- DWORD LineNumber;
- DWORD64 Address;
- } SRCCODEINFO,*PSRCCODEINFO;
- typedef struct _SRCCODEINFOW {
- DWORD SizeOfStruct;
- PVOID Key;
- DWORD64 ModBase;
- WCHAR Obj[MAX_PATH + 1];
- WCHAR FileName[MAX_PATH + 1];
- DWORD LineNumber;
- DWORD64 Address;
- } SRCCODEINFOW,*PSRCCODEINFOW;
- typedef WINBOOL (CALLBACK *PSYM_ENUMLINES_CALLBACK)(PSRCCODEINFO LineInfo,PVOID UserContext);
- typedef WINBOOL (CALLBACK *PSYM_ENUMLINES_CALLBACKW)(PSRCCODEINFOW LineInfo,PVOID UserContext);
- WINBOOL IMAGEAPI SymEnumLines(HANDLE hProcess,ULONG64 Base,PCSTR Obj,PCSTR File,PSYM_ENUMLINES_CALLBACK EnumLinesCallback,PVOID UserContext);
- WINBOOL IMAGEAPI SymEnumLinesW(HANDLE hProcess,ULONG64 Base,PCWSTR Obj,PCSTR File,PSYM_ENUMLINES_CALLBACKW EnumLinesCallback,PVOID UserContext);
- WINBOOL IMAGEAPI SymGetLineFromAddr64(HANDLE hProcess,DWORD64 qwAddr,PDWORD pdwDisplacement,PIMAGEHLP_LINE64 Line64);
- WINBOOL IMAGEAPI SymGetLineFromAddrW64(HANDLE hProcess,DWORD64 qwAddr,PDWORD pdwDisplacement,PIMAGEHLP_LINEW64 Line64);
- #ifdef _IMAGEHLP64
- #define SymGetLineFromAddr SymGetLineFromAddr64
- #else
- WINBOOL IMAGEAPI SymGetLineFromAddr(HANDLE hProcess,DWORD dwAddr,PDWORD pdwDisplacement,PIMAGEHLP_LINE Line);
- #endif
- WINBOOL IMAGEAPI SymGetLineFromName64(HANDLE hProcess,PCSTR ModuleName,PCSTR FileName,DWORD dwLineNumber,PLONG plDisplacement,PIMAGEHLP_LINE64 Line);
- WINBOOL IMAGEAPI SymGetLineFromNameW64(HANDLE hProcess,PCWSTR ModuleName,PCWSTR FileName,DWORD dwLineNumber,PLONG plDisplacement,PIMAGEHLP_LINEW64 Line);
- #ifdef _IMAGEHLP64
- #define SymGetLineFromName SymGetLineFromName64
- #else
- WINBOOL IMAGEAPI SymGetLineFromName(HANDLE hProcess,PCSTR ModuleName,PCSTR FileName,DWORD dwLineNumber,PLONG plDisplacement,PIMAGEHLP_LINE Line);
- #endif
- WINBOOL IMAGEAPI SymGetLineNext64(HANDLE hProcess,PIMAGEHLP_LINE64 Line);
- WINBOOL IMAGEAPI SymGetLineNextW64(HANDLE hProcess,PIMAGEHLP_LINEW64 Line);
- #ifdef _IMAGEHLP64
- #define SymGetLineNext SymGetLineNext64
- #else
- WINBOOL IMAGEAPI SymGetLineNext(HANDLE hProcess,PIMAGEHLP_LINE Line);
- #endif
- WINBOOL IMAGEAPI SymGetLinePrev64(HANDLE hProcess,PIMAGEHLP_LINE64 Line);
- WINBOOL IMAGEAPI SymGetLinePrevW64(HANDLE hProcess,PIMAGEHLP_LINEW64 Line);
- #ifdef _IMAGEHLP64
- #define SymGetLinePrev SymGetLinePrev64
- #else
- WINBOOL IMAGEAPI SymGetLinePrev(HANDLE hProcess,PIMAGEHLP_LINE Line);
- #endif
- WINBOOL IMAGEAPI SymMatchFileName(PCSTR FileName,PCSTR Match,PSTR *FileNameStop,PSTR *MatchStop);
- WINBOOL IMAGEAPI SymMatchFileNameW(PCWSTR FileName,PCWSTR Match,PWSTR *FileNameStop,PWSTR *MatchStop);
- WINBOOL IMAGEAPI SymInitialize(HANDLE hProcess,PCSTR UserSearchPath,WINBOOL fInvadeProcess);
- WINBOOL IMAGEAPI SymInitializeW(HANDLE hProcess,PCWSTR UserSearchPath,WINBOOL fInvadeProcess);
- WINBOOL IMAGEAPI SymGetSearchPath(HANDLE hProcess,PSTR SearchPath,DWORD SearchPathLength);
- WINBOOL IMAGEAPI SymGetSearchPathW(HANDLE hProcess,PWSTR SearchPath,DWORD SearchPathLength);
- WINBOOL IMAGEAPI SymSetSearchPath(HANDLE hProcess,PCSTR SearchPath);
- WINBOOL IMAGEAPI SymSetSearchPathW(HANDLE hProcess,PCWSTR SearchPath);
- DWORD64 IMAGEAPI SymLoadModule64(HANDLE hProcess,HANDLE hFile,PCSTR ImageName,PCSTR ModuleName,DWORD64 BaseOfDll,DWORD SizeOfDll);
- #define SLMFLAG_VIRTUAL 0x1
- DWORD64 IMAGEAPI SymLoadModuleEx(HANDLE hProcess,HANDLE hFile,PCSTR ImageName,PCSTR ModuleName,DWORD64 BaseOfDll,DWORD DllSize,PMODLOAD_DATA Data,DWORD Flags);
- DWORD64 IMAGEAPI SymLoadModuleExW(HANDLE hProcess,HANDLE hFile,PCWSTR ImageName,PCWSTR ModuleName,DWORD64 BaseOfDll,DWORD DllSize,PMODLOAD_DATA Data,DWORD Flags);
- #ifdef _IMAGEHLP64
- #define SymLoadModule SymLoadModule64
- #else
- DWORD IMAGEAPI SymLoadModule(HANDLE hProcess,HANDLE hFile,PCSTR ImageName,PCSTR ModuleName,DWORD BaseOfDll,DWORD SizeOfDll);
- #endif
- WINBOOL IMAGEAPI SymUnloadModule64(HANDLE hProcess,DWORD64 BaseOfDll);
- #ifdef _IMAGEHLP64
- #define SymUnloadModule SymUnloadModule64
- #else
- WINBOOL IMAGEAPI SymUnloadModule(HANDLE hProcess,DWORD BaseOfDll);
- #endif
- WINBOOL IMAGEAPI SymUnDName64(PIMAGEHLP_SYMBOL64 sym,PSTR UnDecName,DWORD UnDecNameLength);
- #ifdef _IMAGEHLP64
- #define SymUnDName SymUnDName64
- #else
- WINBOOL IMAGEAPI SymUnDName(PIMAGEHLP_SYMBOL sym,PSTR UnDecName,DWORD UnDecNameLength);
- #endif
- WINBOOL IMAGEAPI SymRegisterCallback64(HANDLE hProcess,PSYMBOL_REGISTERED_CALLBACK64 CallbackFunction,ULONG64 UserContext);
- WINBOOL IMAGEAPI SymRegisterCallback64W(HANDLE hProcess,PSYMBOL_REGISTERED_CALLBACK64 CallbackFunction,ULONG64 UserContext);
- WINBOOL IMAGEAPI SymRegisterFunctionEntryCallback64(HANDLE hProcess,PSYMBOL_FUNCENTRY_CALLBACK64 CallbackFunction,ULONG64 UserContext);
- #ifdef _IMAGEHLP64
- #define SymRegisterCallback SymRegisterCallback64
- #define SymRegisterFunctionEntryCallback SymRegisterFunctionEntryCallback64
- #else
- WINBOOL IMAGEAPI SymRegisterCallback(HANDLE hProcess,PSYMBOL_REGISTERED_CALLBACK CallbackFunction,PVOID UserContext);
- WINBOOL IMAGEAPI SymRegisterFunctionEntryCallback(HANDLE hProcess,PSYMBOL_FUNCENTRY_CALLBACK CallbackFunction,PVOID UserContext);
- #endif
- typedef struct _IMAGEHLP_SYMBOL_SRC {
- DWORD sizeofstruct;
- DWORD type;
- char file[MAX_PATH];
- } IMAGEHLP_SYMBOL_SRC,*PIMAGEHLP_SYMBOL_SRC;
- typedef struct _MODULE_TYPE_INFO {
- USHORT dataLength;
- USHORT leaf;
- BYTE data[1];
- } MODULE_TYPE_INFO,*PMODULE_TYPE_INFO;
- typedef struct _SYMBOL_INFO {
- ULONG SizeOfStruct;
- ULONG TypeIndex;
- ULONG64 Reserved[2];
- ULONG info;
- ULONG Size;
- ULONG64 ModBase;
- ULONG Flags;
- ULONG64 Value;
- ULONG64 Address;
- ULONG Register;
- ULONG Scope;
- ULONG Tag;
- ULONG NameLen;
- ULONG MaxNameLen;
- CHAR Name[1];
- } SYMBOL_INFO,*PSYMBOL_INFO;
- typedef struct _SYMBOL_INFOW {
- ULONG SizeOfStruct;
- ULONG TypeIndex;
- ULONG64 Reserved[2];
- ULONG info;
- ULONG Size;
- ULONG64 ModBase;
- ULONG Flags;
- ULONG64 Value;
- ULONG64 Address;
- ULONG Register;
- ULONG Scope;
- ULONG Tag;
- ULONG NameLen;
- ULONG MaxNameLen;
- WCHAR Name[1];
- } SYMBOL_INFOW,*PSYMBOL_INFOW;
- #define SYMFLAG_CLR_TOKEN 0x00040000
- #define SYMFLAG_CONSTANT 0x00000100
- #define SYMFLAG_EXPORT 0x00000200
- #define SYMFLAG_FORWARDER 0x00000400
- #define SYMFLAG_FRAMEREL 0x00000020
- #define SYMFLAG_FUNCTION 0x00000800
- #define SYMFLAG_ILREL 0x00010000
- #define SYMFLAG_LOCAL 0x00000080
- #define SYMFLAG_METADATA 0x00020000
- #define SYMFLAG_PARAMETER 0x00000040
- #define SYMFLAG_REGISTER 0x00000008
- #define SYMFLAG_REGREL 0x00000010
- #define SYMFLAG_SLOT 0x00008000
- #define SYMFLAG_THUNK 0x00002000
- #define SYMFLAG_TLSREL 0x00004000
- #define SYMFLAG_VALUEPRESENT 0x00000001
- #define SYMFLAG_VIRTUAL 0x00001000
- typedef struct _SYMBOL_INFO_PACKAGE {
- SYMBOL_INFO si;
- CHAR name[MAX_SYM_NAME + 1];
- } SYMBOL_INFO_PACKAGE,*PSYMBOL_INFO_PACKAGE;
- typedef struct _IMAGEHLP_STACK_FRAME {
- ULONG64 InstructionOffset;
- ULONG64 ReturnOffset;
- ULONG64 FrameOffset;
- ULONG64 StackOffset;
- ULONG64 BackingStoreOffset;
- ULONG64 FuncTableEntry;
- ULONG64 Params[4];
- ULONG64 Reserved[5];
- WINBOOL Virtual;
- ULONG Reserved2;
- } IMAGEHLP_STACK_FRAME,*PIMAGEHLP_STACK_FRAME;
- typedef VOID IMAGEHLP_CONTEXT,*PIMAGEHLP_CONTEXT;
- WINBOOL IMAGEAPI SymSetContext(HANDLE hProcess,PIMAGEHLP_STACK_FRAME StackFrame,PIMAGEHLP_CONTEXT Context);
- WINBOOL IMAGEAPI SymFromAddr(HANDLE hProcess,DWORD64 Address,PDWORD64 Displacement,PSYMBOL_INFO Symbol);
- WINBOOL IMAGEAPI SymFromAddrW(HANDLE hProcess,DWORD64 Address,PDWORD64 Displacement,PSYMBOL_INFOW Symbol);
- WINBOOL IMAGEAPI SymFromToken(HANDLE hProcess,DWORD64 Base,DWORD Token,PSYMBOL_INFO Symbol);
- WINBOOL IMAGEAPI SymFromTokenW(HANDLE hProcess,DWORD64 Base,DWORD Token,PSYMBOL_INFOW Symbol);
- WINBOOL IMAGEAPI SymFromName(HANDLE hProcess,PCSTR Name,PSYMBOL_INFO Symbol);
- WINBOOL IMAGEAPI SymFromNameW(HANDLE hProcess,PCWSTR Name,PSYMBOL_INFOW Symbol);
- typedef WINBOOL (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACK)(PSYMBOL_INFO pSymInfo,ULONG SymbolSize,PVOID UserContext);
- typedef WINBOOL (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACKW)(PSYMBOL_INFOW pSymInfo,ULONG SymbolSize,PVOID UserContext);
- WINBOOL IMAGEAPI SymEnumSymbols(HANDLE hProcess,ULONG64 BaseOfDll,PCSTR Mask,PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,PVOID UserContext);
- WINBOOL IMAGEAPI SymEnumSymbolsW(HANDLE hProcess,ULONG64 BaseOfDll,PCWSTR Mask,PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback,PVOID UserContext);
- WINBOOL IMAGEAPI SymEnumSymbolsForAddr(HANDLE hProcess,DWORD64 Address,PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,PVOID UserContext);
- WINBOOL IMAGEAPI SymEnumSymbolsForAddrW(HANDLE hProcess,DWORD64 Address,PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback,PVOID UserContext);
- #define SYMENUMFLAG_FULLSRCH 1
- #define SYMENUMFLAG_SPEEDSRCH 2
- typedef enum _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
- } IMAGEHLP_SYMBOL_TYPE_INFO;
- typedef struct _TI_FINDCHILDREN_PARAMS {
- ULONG Count;
- ULONG Start;
- ULONG ChildId[1];
- } TI_FINDCHILDREN_PARAMS;
- WINBOOL IMAGEAPI SymGetTypeInfo(HANDLE hProcess,DWORD64 ModBase,ULONG TypeId,IMAGEHLP_SYMBOL_TYPE_INFO GetType,PVOID pInfo);
- WINBOOL IMAGEAPI SymEnumTypes(HANDLE hProcess,ULONG64 BaseOfDll,PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,PVOID UserContext);
- WINBOOL IMAGEAPI SymEnumTypesW(HANDLE hProcess,ULONG64 BaseOfDll,PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback,PVOID UserContext);
- WINBOOL IMAGEAPI SymGetTypeFromName(HANDLE hProcess,ULONG64 BaseOfDll,PCSTR Name,PSYMBOL_INFO Symbol);
- WINBOOL IMAGEAPI SymGetTypeFromNameW(HANDLE hProcess,ULONG64 BaseOfDll,PCWSTR Name,PSYMBOL_INFOW Symbol);
- WINBOOL IMAGEAPI SymAddSymbol(HANDLE hProcess,ULONG64 BaseOfDll,PCSTR Name,DWORD64 Address,DWORD Size,DWORD Flags);
- WINBOOL IMAGEAPI SymAddSymbolW(HANDLE hProcess,ULONG64 BaseOfDll,PCWSTR Name,DWORD64 Address,DWORD Size,DWORD Flags);
- WINBOOL IMAGEAPI SymDeleteSymbol(HANDLE hProcess,ULONG64 BaseOfDll,PCSTR Name,DWORD64 Address,DWORD Flags);
- WINBOOL IMAGEAPI SymDeleteSymbolW(HANDLE hProcess,ULONG64 BaseOfDll,PCWSTR Name,DWORD64 Address,DWORD Flags);
- typedef WINBOOL (WINAPI *PDBGHELP_CREATE_USER_DUMP_CALLBACK)(DWORD DataType,PVOID *Data,LPDWORD DataLength,PVOID UserData);
- WINBOOL WINAPI DbgHelpCreateUserDump(LPCSTR FileName,PDBGHELP_CREATE_USER_DUMP_CALLBACK Callback,PVOID UserData);
- WINBOOL WINAPI DbgHelpCreateUserDumpW(LPCWSTR FileName,PDBGHELP_CREATE_USER_DUMP_CALLBACK Callback,PVOID UserData);
- WINBOOL IMAGEAPI SymGetSymFromAddr64(HANDLE hProcess,DWORD64 qwAddr,PDWORD64 pdwDisplacement,PIMAGEHLP_SYMBOL64 Symbol);
- #ifdef _IMAGEHLP64
- #define SymGetSymFromAddr SymGetSymFromAddr64
- #else
- WINBOOL IMAGEAPI SymGetSymFromAddr(HANDLE hProcess,DWORD dwAddr,PDWORD pdwDisplacement,PIMAGEHLP_SYMBOL Symbol);
- #endif
- WINBOOL IMAGEAPI SymGetSymFromName64(HANDLE hProcess,PCSTR Name,PIMAGEHLP_SYMBOL64 Symbol);
- #ifdef _IMAGEHLP64
- #define SymGetSymFromName SymGetSymFromName64
- #else
- WINBOOL IMAGEAPI SymGetSymFromName(HANDLE hProcess,PCSTR Name,PIMAGEHLP_SYMBOL Symbol);
- #endif
- DBHLP_DEPRECIATED WINBOOL IMAGEAPI FindFileInPath(HANDLE hprocess,PCSTR SearchPath,PCSTR FileName,PVOID id,DWORD two,DWORD three,DWORD flags,PSTR FilePath);
- DBHLP_DEPRECIATED WINBOOL IMAGEAPI FindFileInSearchPath(HANDLE hprocess,PCSTR SearchPath,PCSTR FileName,DWORD one,DWORD two,DWORD three,PSTR FilePath);
- DBHLP_DEPRECIATED WINBOOL IMAGEAPI SymEnumSym(HANDLE hProcess,ULONG64 BaseOfDll,PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,PVOID UserContext);
- #ifdef __cplusplus
- }
- #endif
- #define SYMF_OMAP_GENERATED 0x00000001
- #define SYMF_OMAP_MODIFIED 0x00000002
- #define SYMF_REGISTER 0x00000008
- #define SYMF_REGREL 0x00000010
- #define SYMF_FRAMEREL 0x00000020
- #define SYMF_PARAMETER 0x00000040
- #define SYMF_LOCAL 0x00000080
- #define SYMF_CONSTANT 0x00000100
- #define SYMF_EXPORT 0x00000200
- #define SYMF_FORWARDER 0x00000400
- #define SYMF_FUNCTION 0x00000800
- #define SYMF_VIRTUAL 0x00001000
- #define SYMF_THUNK 0x00002000
- #define SYMF_TLSREL 0x00004000
- #define IMAGEHLP_SYMBOL_INFO_VALUEPRESENT 1
- #define IMAGEHLP_SYMBOL_INFO_REGISTER SYMF_REGISTER
- #define IMAGEHLP_SYMBOL_INFO_REGRELATIVE SYMF_REGREL
- #define IMAGEHLP_SYMBOL_INFO_FRAMERELATIVE SYMF_FRAMEREL
- #define IMAGEHLP_SYMBOL_INFO_PARAMETER SYMF_PARAMETER
- #define IMAGEHLP_SYMBOL_INFO_LOCAL SYMF_LOCAL
- #define IMAGEHLP_SYMBOL_INFO_CONSTANT SYMF_CONSTANT
- #define IMAGEHLP_SYMBOL_FUNCTION SYMF_FUNCTION
- #define IMAGEHLP_SYMBOL_VIRTUAL SYMF_VIRTUAL
- #define IMAGEHLP_SYMBOL_THUNK SYMF_THUNK
- #define IMAGEHLP_SYMBOL_INFO_TLSRELATIVE SYMF_TLSREL
- #include <pshpack4.h>
- #define MINIDUMP_SIGNATURE ('PMDM')
- #define MINIDUMP_VERSION (42899)
- typedef DWORD RVA;
- typedef ULONG64 RVA64;
- typedef struct _MINIDUMP_LOCATION_DESCRIPTOR {
- ULONG32 DataSize;
- RVA Rva;
- } MINIDUMP_LOCATION_DESCRIPTOR;
- typedef struct _MINIDUMP_LOCATION_DESCRIPTOR64 {
- ULONG64 DataSize;
- RVA64 Rva;
- } MINIDUMP_LOCATION_DESCRIPTOR64;
- typedef struct _MINIDUMP_MEMORY_DESCRIPTOR {
- ULONG64 StartOfMemoryRange;
- MINIDUMP_LOCATION_DESCRIPTOR Memory;
- } MINIDUMP_MEMORY_DESCRIPTOR,*PMINIDUMP_MEMORY_DESCRIPTOR;
- typedef struct _MINIDUMP_MEMORY_DESCRIPTOR64 {
- ULONG64 StartOfMemoryRange;
- ULONG64 DataSize;
- } MINIDUMP_MEMORY_DESCRIPTOR64,*PMINIDUMP_MEMORY_DESCRIPTOR64;
- typedef struct _MINIDUMP_HEADER {
- ULONG32 Signature;
- ULONG32 Version;
- ULONG32 NumberOfStreams;
- RVA StreamDirectoryRva;
- ULONG32 CheckSum;
- __C89_NAMELESS union {
- ULONG32 Reserved;
- ULONG32 TimeDateStamp;
- };
- ULONG64 Flags;
- } MINIDUMP_HEADER,*PMINIDUMP_HEADER;
- typedef struct _MINIDUMP_DIRECTORY {
- ULONG32 StreamType;
- MINIDUMP_LOCATION_DESCRIPTOR Location;
- } MINIDUMP_DIRECTORY,*PMINIDUMP_DIRECTORY;
- typedef struct _MINIDUMP_STRING {
- ULONG32 Length;
- WCHAR Buffer[0];
- } MINIDUMP_STRING,*PMINIDUMP_STRING;
- typedef enum _MINIDUMP_STREAM_TYPE {
- UnusedStream = 0,
- ReservedStream0 = 1,
- ReservedStream1 = 2,
- ThreadListStream = 3,
- ModuleListStream = 4,
- MemoryListStream = 5,
- ExceptionStream = 6,
- SystemInfoStream = 7,
- ThreadExListStream = 8,
- Memory64ListStream = 9,
- CommentStreamA = 10,
- CommentStreamW = 11,
- HandleDataStream = 12,
- FunctionTableStream = 13,
- UnloadedModuleListStream = 14,
- MiscInfoStream = 15,
- MemoryInfoListStream = 16,
- ThreadInfoListStream = 17,
- HandleOperationListStream = 18,
- TokenStream = 19,
- JavaScriptDataStream = 20,
- SystemMemoryInfoStream = 21,
- ProcessVmCountersStream = 22,
- IptTraceStream = 23,
- ThreadNamesStream = 24,
- ceStreamNull = 0x8000,
- ceStreamSystemInfo = 0x8001,
- ceStreamException = 0x8002,
- ceStreamModuleList = 0x8003,
- ceStreamProcessList = 0x8004,
- ceStreamThreadList = 0x8005,
- ceStreamThreadContextList = 0x8006,
- ceStreamThreadCallStackList = 0x8007,
- ceStreamMemoryVirtualList = 0x8008,
- ceStreamMemoryPhysicalList = 0x8009,
- ceStreamBucketParameters = 0x800a,
- ceStreamProcessModuleMap = 0x800b,
- ceStreamDiagnosisList = 0x800c,
- LastReservedStream = 0xffff
- } MINIDUMP_STREAM_TYPE;
- typedef union _CPU_INFORMATION {
- struct {
- ULONG32 VendorId[3];
- ULONG32 VersionInformation;
- ULONG32 FeatureInformation;
- ULONG32 AMDExtendedCpuFeatures;
- } X86CpuInfo;
- struct {
- ULONG64 ProcessorFeatures[2];
- } OtherCpuInfo;
- } CPU_INFORMATION,*PCPU_INFORMATION;
- typedef struct _MINIDUMP_SYSTEM_INFO {
- USHORT ProcessorArchitecture;
- USHORT ProcessorLevel;
- USHORT ProcessorRevision;
- __C89_NAMELESS union {
- USHORT Reserved0;
- __C89_NAMELESS struct {
- UCHAR NumberOfProcessors;
- UCHAR ProductType;
- };
- };
- ULONG32 MajorVersion;
- ULONG32 MinorVersion;
- ULONG32 BuildNumber;
- ULONG32 PlatformId;
- RVA CSDVersionRva;
- __C89_NAMELESS union {
- ULONG32 Reserved1;
- __C89_NAMELESS struct {
- USHORT SuiteMask;
- USHORT Reserved2;
- };
- };
- CPU_INFORMATION Cpu;
- } MINIDUMP_SYSTEM_INFO,*PMINIDUMP_SYSTEM_INFO;
- C_ASSERT(sizeof(((PPROCESS_INFORMATION)0)->dwThreadId)==4);
- typedef struct _MINIDUMP_THREAD {
- ULONG32 ThreadId;
- ULONG32 SuspendCount;
- ULONG32 PriorityClass;
- ULONG32 Priority;
- ULONG64 Teb;
- MINIDUMP_MEMORY_DESCRIPTOR Stack;
- MINIDUMP_LOCATION_DESCRIPTOR ThreadContext;
- } MINIDUMP_THREAD,*PMINIDUMP_THREAD;
- typedef struct _MINIDUMP_THREAD_LIST {
- ULONG32 NumberOfThreads;
- MINIDUMP_THREAD Threads[0];
- } MINIDUMP_THREAD_LIST,*PMINIDUMP_THREAD_LIST;
- typedef struct _MINIDUMP_THREAD_EX {
- ULONG32 ThreadId;
- ULONG32 SuspendCount;
- ULONG32 PriorityClass;
- ULONG32 Priority;
- ULONG64 Teb;
- MINIDUMP_MEMORY_DESCRIPTOR Stack;
- MINIDUMP_LOCATION_DESCRIPTOR ThreadContext;
- MINIDUMP_MEMORY_DESCRIPTOR BackingStore;
- } MINIDUMP_THREAD_EX,*PMINIDUMP_THREAD_EX;
- typedef struct _MINIDUMP_THREAD_EX_LIST {
- ULONG32 NumberOfThreads;
- MINIDUMP_THREAD_EX Threads[0];
- } MINIDUMP_THREAD_EX_LIST,*PMINIDUMP_THREAD_EX_LIST;
- typedef struct _MINIDUMP_EXCEPTION {
- ULONG32 ExceptionCode;
- ULONG32 ExceptionFlags;
- ULONG64 ExceptionRecord;
- ULONG64 ExceptionAddress;
- ULONG32 NumberParameters;
- ULONG32 __unusedAlignment;
- ULONG64 ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
- } MINIDUMP_EXCEPTION,*PMINIDUMP_EXCEPTION;
- typedef struct MINIDUMP_EXCEPTION_STREAM {
- ULONG32 ThreadId;
- ULONG32 __alignment;
- MINIDUMP_EXCEPTION ExceptionRecord;
- MINIDUMP_LOCATION_DESCRIPTOR ThreadContext;
- } MINIDUMP_EXCEPTION_STREAM,*PMINIDUMP_EXCEPTION_STREAM;
- typedef struct _MINIDUMP_MODULE {
- ULONG64 BaseOfImage;
- ULONG32 SizeOfImage;
- ULONG32 CheckSum;
- ULONG32 TimeDateStamp;
- RVA ModuleNameRva;
- VS_FIXEDFILEINFO VersionInfo;
- MINIDUMP_LOCATION_DESCRIPTOR CvRecord;
- MINIDUMP_LOCATION_DESCRIPTOR MiscRecord;
- ULONG64 Reserved0;
- ULONG64 Reserved1;
- } MINIDUMP_MODULE,*PMINIDUMP_MODULE;
- typedef struct _MINIDUMP_MODULE_LIST {
- ULONG32 NumberOfModules;
- MINIDUMP_MODULE Modules[0];
- } MINIDUMP_MODULE_LIST,*PMINIDUMP_MODULE_LIST;
- typedef struct _MINIDUMP_MEMORY_LIST {
- ULONG32 NumberOfMemoryRanges;
- MINIDUMP_MEMORY_DESCRIPTOR MemoryRanges[0];
- } MINIDUMP_MEMORY_LIST,*PMINIDUMP_MEMORY_LIST;
- typedef struct _MINIDUMP_MEMORY64_LIST {
- ULONG64 NumberOfMemoryRanges;
- RVA64 BaseRva;
- MINIDUMP_MEMORY_DESCRIPTOR64 MemoryRanges[0];
- } MINIDUMP_MEMORY64_LIST,*PMINIDUMP_MEMORY64_LIST;
- typedef struct _MINIDUMP_EXCEPTION_INFORMATION {
- DWORD ThreadId;
- PEXCEPTION_POINTERS ExceptionPointers;
- WINBOOL ClientPointers;
- } MINIDUMP_EXCEPTION_INFORMATION,*PMINIDUMP_EXCEPTION_INFORMATION;
- typedef struct _MINIDUMP_EXCEPTION_INFORMATION64 {
- DWORD ThreadId;
- ULONG64 ExceptionRecord;
- ULONG64 ContextRecord;
- WINBOOL ClientPointers;
- } MINIDUMP_EXCEPTION_INFORMATION64,*PMINIDUMP_EXCEPTION_INFORMATION64;
- typedef enum _MINIDUMP_HANDLE_OBJECT_INFORMATION_TYPE {
- MiniHandleObjectInformationNone,
- MiniThreadInformation1,
- MiniMutantInformation1,
- MiniMutantInformation2,
- MiniProcessInformation1,
- MiniProcessInformation2,
- MiniEventInformation1,
- MiniSectionInformation1,
- MiniSemaphoreInformation1,
- MiniHandleObjectInformationTypeMax
- } MINIDUMP_HANDLE_OBJECT_INFORMATION_TYPE;
- typedef struct _MINIDUMP_HANDLE_OBJECT_INFORMATION {
- RVA NextInfoRva;
- ULONG32 InfoType;
- ULONG32 SizeOfInfo;
- } MINIDUMP_HANDLE_OBJECT_INFORMATION;
- typedef struct _MINIDUMP_HANDLE_DESCRIPTOR {
- ULONG64 Handle;
- RVA TypeNameRva;
- RVA ObjectNameRva;
- ULONG32 Attributes;
- ULONG32 GrantedAccess;
- ULONG32 HandleCount;
- ULONG32 PointerCount;
- } MINIDUMP_HANDLE_DESCRIPTOR,*PMINIDUMP_HANDLE_DESCRIPTOR;
- typedef struct _MINIDUMP_HANDLE_DATA_STREAM {
- ULONG32 SizeOfHeader;
- ULONG32 SizeOfDescriptor;
- ULONG32 NumberOfDescriptors;
- ULONG32 Reserved;
- } MINIDUMP_HANDLE_DATA_STREAM,*PMINIDUMP_HANDLE_DATA_STREAM;
- typedef struct _MINIDUMP_FUNCTION_TABLE_DESCRIPTOR {
- ULONG64 MinimumAddress;
- ULONG64 MaximumAddress;
- ULONG64 BaseAddress;
- ULONG32 EntryCount;
- ULONG32 SizeOfAlignPad;
- } MINIDUMP_FUNCTION_TABLE_DESCRIPTOR,*PMINIDUMP_FUNCTION_TABLE_DESCRIPTOR;
- typedef struct _MINIDUMP_FUNCTION_TABLE_STREAM {
- ULONG32 SizeOfHeader;
- ULONG32 SizeOfDescriptor;
- ULONG32 SizeOfNativeDescriptor;
- ULONG32 SizeOfFunctionEntry;
- ULONG32 NumberOfDescriptors;
- ULONG32 SizeOfAlignPad;
- } MINIDUMP_FUNCTION_TABLE_STREAM,*PMINIDUMP_FUNCTION_TABLE_STREAM;
- typedef struct _MINIDUMP_UNLOADED_MODULE {
- ULONG64 BaseOfImage;
- ULONG32 SizeOfImage;
- ULONG32 CheckSum;
- ULONG32 TimeDateStamp;
- RVA ModuleNameRva;
- } MINIDUMP_UNLOADED_MODULE,*PMINIDUMP_UNLOADED_MODULE;
- typedef struct _MINIDUMP_UNLOADED_MODULE_LIST {
- ULONG32 SizeOfHeader;
- ULONG32 SizeOfEntry;
- ULONG32 NumberOfEntries;
- } MINIDUMP_UNLOADED_MODULE_LIST,*PMINIDUMP_UNLOADED_MODULE_LIST;
- #define MINIDUMP_MISC1_PROCESS_ID 0x00000001
- #define MINIDUMP_MISC1_PROCESS_TIMES 0x00000002
- #define MINIDUMP_MISC1_PROCESSOR_POWER_INFO 0x00000004
- typedef struct _MINIDUMP_MISC_INFO {
- ULONG32 SizeOfInfo;
- ULONG32 Flags1;
- ULONG32 ProcessId;
- ULONG32 ProcessCreateTime;
- ULONG32 ProcessUserTime;
- ULONG32 ProcessKernelTime;
- } MINIDUMP_MISC_INFO,*PMINIDUMP_MISC_INFO;
- typedef struct _MINIDUMP_USER_RECORD {
- ULONG32 Type;
- MINIDUMP_LOCATION_DESCRIPTOR Memory;
- } MINIDUMP_USER_RECORD,*PMINIDUMP_USER_RECORD;
- typedef struct _MINIDUMP_USER_STREAM {
- ULONG32 Type;
- ULONG BufferSize;
- PVOID Buffer;
- } MINIDUMP_USER_STREAM,*PMINIDUMP_USER_STREAM;
- typedef struct _MINIDUMP_USER_STREAM_INFORMATION {
- ULONG UserStreamCount;
- PMINIDUMP_USER_STREAM UserStreamArray;
- } MINIDUMP_USER_STREAM_INFORMATION,*PMINIDUMP_USER_STREAM_INFORMATION;
- typedef enum _MINIDUMP_CALLBACK_TYPE {
- ModuleCallback,
- ThreadCallback,
- ThreadExCallback,
- IncludeThreadCallback,
- IncludeModuleCallback,
- MemoryCallback,
- CancelCallback,
- WriteKernelMinidumpCallback,
- KernelMinidumpStatusCallback,
- RemoveMemoryCallback,
- IncludeVmRegionCallback,
- IoStartCallback,
- IoWriteAllCallback,
- IoFinishCallback,
- ReadMemoryFailureCallback,
- SecondaryFlagsCallback,
- IsProcessSnapshotCallback,
- VmStartCallback,
- VmQueryCallback,
- VmPreReadCallback,
- VmPostReadCallback
- } MINIDUMP_CALLBACK_TYPE;
- typedef struct _MINIDUMP_THREAD_CALLBACK {
- ULONG ThreadId;
- HANDLE ThreadHandle;
- #if defined(__aarch64__)
- ULONG Pad;
- #endif
- CONTEXT Context;
- ULONG SizeOfContext;
- ULONG64 StackBase;
- ULONG64 StackEnd;
- } MINIDUMP_THREAD_CALLBACK,*PMINIDUMP_THREAD_CALLBACK;
- typedef struct _MINIDUMP_THREAD_EX_CALLBACK {
- ULONG ThreadId;
- HANDLE ThreadHandle;
- #if defined(__aarch64__)
- ULONG Pad;
- #endif
- CONTEXT Context;
- ULONG SizeOfContext;
- ULONG64 StackBase;
- ULONG64 StackEnd;
- ULONG64 BackingStoreBase;
- ULONG64 BackingStoreEnd;
- } MINIDUMP_THREAD_EX_CALLBACK,*PMINIDUMP_THREAD_EX_CALLBACK;
- typedef struct _MINIDUMP_INCLUDE_THREAD_CALLBACK {
- ULONG ThreadId;
- } MINIDUMP_INCLUDE_THREAD_CALLBACK,*PMINIDUMP_INCLUDE_THREAD_CALLBACK;
- typedef enum _THREAD_WRITE_FLAGS {
- ThreadWriteThread = 0x0001,
- ThreadWriteStack = 0x0002,
- ThreadWriteContext = 0x0004,
- ThreadWriteBackingStore = 0x0008,
- ThreadWriteInstructionWindow = 0x0010,
- ThreadWriteThreadData = 0x0020,
- ThreadWriteThreadInfo = 0x0040
- } THREAD_WRITE_FLAGS;
- typedef struct _MINIDUMP_MODULE_CALLBACK {
- PWCHAR FullPath;
- ULONG64 BaseOfImage;
- ULONG SizeOfImage;
- ULONG CheckSum;
- ULONG TimeDateStamp;
- VS_FIXEDFILEINFO VersionInfo;
- PVOID CvRecord;
- ULONG SizeOfCvRecord;
- PVOID MiscRecord;
- ULONG SizeOfMiscRecord;
- } MINIDUMP_MODULE_CALLBACK,*PMINIDUMP_MODULE_CALLBACK;
- typedef struct _MINIDUMP_INCLUDE_MODULE_CALLBACK {
- ULONG64 BaseOfImage;
- } MINIDUMP_INCLUDE_MODULE_CALLBACK,*PMINIDUMP_INCLUDE_MODULE_CALLBACK;
- typedef enum _MODULE_WRITE_FLAGS {
- ModuleWriteModule = 0x0001,
- ModuleWriteDataSeg = 0x0002,
- ModuleWriteMiscRecord = 0x0004,
- ModuleWriteCvRecord = 0x0008,
- ModuleReferencedByMemory = 0x0010,
- ModuleWriteTlsData = 0x0020,
- ModuleWriteCodeSegs = 0x0040
- } MODULE_WRITE_FLAGS;
- typedef enum _MINIDUMP_SECONDARY_FLAGS {
- MiniSecondaryWithoutPowerInfo = 0x00000001
- } MINIDUMP_SECONDARY_FLAGS;
- typedef struct _MINIDUMP_CALLBACK_INPUT {
- ULONG ProcessId;
- HANDLE ProcessHandle;
- ULONG CallbackType;
- __C89_NAMELESS union {
- MINIDUMP_THREAD_CALLBACK Thread;
- MINIDUMP_THREAD_EX_CALLBACK ThreadEx;
- MINIDUMP_MODULE_CALLBACK Module;
- MINIDUMP_INCLUDE_THREAD_CALLBACK IncludeThread;
- MINIDUMP_INCLUDE_MODULE_CALLBACK IncludeModule;
- };
- } MINIDUMP_CALLBACK_INPUT,*PMINIDUMP_CALLBACK_INPUT;
- typedef struct _MINIDUMP_MEMORY_INFO {
- ULONG64 BaseAddress;
- ULONG64 AllocationBase;
- ULONG32 AllocationProtect;
- ULONG32 __alignment1;
- ULONG64 RegionSize;
- ULONG32 State;
- ULONG32 Protect;
- ULONG32 Type;
- ULONG32 __alignment2;
- } MINIDUMP_MEMORY_INFO, *PMINIDUMP_MEMORY_INFO;
- typedef struct _MINIDUMP_MISC_INFO_2 {
- ULONG32 SizeOfInfo;
- ULONG32 Flags1;
- ULONG32 ProcessId;
- ULONG32 ProcessCreateTime;
- ULONG32 ProcessUserTime;
- ULONG32 ProcessKernelTime;
- ULONG32 ProcessorMaxMhz;
- ULONG32 ProcessorCurrentMhz;
- ULONG32 ProcessorMhzLimit;
- ULONG32 ProcessorMaxIdleState;
- ULONG32 ProcessorCurrentIdleState;
- } MINIDUMP_MISC_INFO_2, *PMINIDUMP_MISC_INFO_2;
- typedef struct _MINIDUMP_MEMORY_INFO_LIST {
- ULONG SizeOfHeader;
- ULONG SizeOfEntry;
- ULONG64 NumberOfEntries;
- } MINIDUMP_MEMORY_INFO_LIST, *PMINIDUMP_MEMORY_INFO_LIST;
- typedef struct _MINIDUMP_CALLBACK_OUTPUT {
- __C89_NAMELESS union {
- ULONG ModuleWriteFlags;
- ULONG ThreadWriteFlags;
- ULONG SecondaryFlags;
- __C89_NAMELESS struct {
- ULONG64 MemoryBase;
- ULONG MemorySize;
- };
- __C89_NAMELESS struct {
- WINBOOL CheckCancel;
- WINBOOL Cancel;
- };
- HANDLE Handle;
- };
- __C89_NAMELESS struct {
- MINIDUMP_MEMORY_INFO VmRegion;
- WINBOOL Continue;
- };
- HRESULT Status;
- } MINIDUMP_CALLBACK_OUTPUT, *PMINIDUMP_CALLBACK_OUTPUT;
- typedef enum _MINIDUMP_TYPE {
- MiniDumpNormal = 0x00000000,
- MiniDumpWithDataSegs = 0x00000001,
- MiniDumpWithFullMemory = 0x00000002,
- MiniDumpWithHandleData = 0x00000004,
- MiniDumpFilterMemory = 0x00000008,
- MiniDumpScanMemory = 0x00000010,
- MiniDumpWithUnloadedModules = 0x00000020,
- MiniDumpWithIndirectlyReferencedMemory = 0x00000040,
- MiniDumpFilterModulePaths = 0x00000080,
- MiniDumpWithProcessThreadData = 0x00000100,
- MiniDumpWithPrivateReadWriteMemory = 0x00000200,
- MiniDumpWithoutOptionalData = 0x00000400,
- MiniDumpWithFullMemoryInfo = 0x00000800,
- MiniDumpWithThreadInfo = 0x00001000,
- MiniDumpWithCodeSegs = 0x00002000,
- MiniDumpWithoutAuxiliaryState = 0x00004000,
- MiniDumpWithFullAuxiliaryState = 0x00008000,
- MiniDumpWithPrivateWriteCopyMemory = 0x00010000,
- MiniDumpIgnoreInaccessibleMemory = 0x00020000,
- MiniDumpWithTokenInformation = 0x00040000,
- MiniDumpWithModuleHeaders = 0x00080000,
- MiniDumpFilterTriage = 0x00100000,
- MiniDumpWithAvxXStateContext = 0x00200000,
- MiniDumpWithIptTrace = 0x00400000,
- MiniDumpScanInaccessiblePartialPages = 0x00800000,
- MiniDumpValidTypeFlags = 0x00ffffff
- } MINIDUMP_TYPE;
- #define MINIDUMP_THREAD_INFO_ERROR_THREAD 0x00000001
- #define MINIDUMP_THREAD_INFO_WRITING_THREAD 0x00000002
- #define MINIDUMP_THREAD_INFO_EXITED_THREAD 0x00000004
- #define MINIDUMP_THREAD_INFO_INVALID_INFO 0x00000008
- #define MINIDUMP_THREAD_INFO_INVALID_CONTEXT 0x00000010
- #define MINIDUMP_THREAD_INFO_INVALID_TEB 0x00000020
- typedef struct _MINIDUMP_THREAD_INFO {
- ULONG32 ThreadId;
- ULONG32 DumpFlags;
- ULONG32 DumpError;
- ULONG32 ExitStatus;
- ULONG64 CreateTime;
- ULONG64 ExitTime;
- ULONG64 KernelTime;
- ULONG64 UserTime;
- ULONG64 StartAddress;
- ULONG64 Affinity;
- } MINIDUMP_THREAD_INFO, *PMINIDUMP_THREAD_INFO;
- typedef struct _MINIDUMP_THREAD_INFO_LIST {
- ULONG SizeOfHeader;
- ULONG SizeOfEntry;
- ULONG NumberOfEntries;
- } MINIDUMP_THREAD_INFO_LIST, *PMINIDUMP_THREAD_INFO_LIST;
- typedef struct _MINIDUMP_HANDLE_OPERATION_LIST {
- ULONG32 SizeOfHeader;
- ULONG32 SizeOfEntry;
- ULONG32 NumberOfEntries;
- ULONG32 Reserved;
- } MINIDUMP_HANDLE_OPERATION_LIST, *PMINIDUMP_HANDLE_OPERATION_LIST;
- #ifdef __cplusplus
- extern "C" {
- #endif
- typedef WINBOOL (WINAPI *MINIDUMP_CALLBACK_ROUTINE)(PVOID CallbackParam,CONST PMINIDUMP_CALLBACK_INPUT CallbackInput,PMINIDUMP_CALLBACK_OUTPUT CallbackOutput);
- typedef struct _MINIDUMP_CALLBACK_INFORMATION {
- MINIDUMP_CALLBACK_ROUTINE CallbackRoutine;
- PVOID CallbackParam;
- } MINIDUMP_CALLBACK_INFORMATION,*PMINIDUMP_CALLBACK_INFORMATION;
- #define RVA_TO_ADDR(Mapping,Rva) ((PVOID)(((ULONG_PTR) (Mapping)) + (Rva)))
- WINBOOL WINAPI MiniDumpWriteDump(HANDLE hProcess,DWORD ProcessId,HANDLE hFile,MINIDUMP_TYPE DumpType,CONST PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam,CONST PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam,CONST PMINIDUMP_CALLBACK_INFORMATION CallbackParam);
- WINBOOL WINAPI MiniDumpReadDumpStream(PVOID BaseOfDump,ULONG StreamNumber,PMINIDUMP_DIRECTORY *Dir,PVOID *StreamPointer,ULONG *StreamSize);
- WINBOOL WINAPI EnumerateLoadedModulesEx(
- HANDLE hProcess,
- PENUMLOADED_MODULES_CALLBACK64 EnumLoadedModulesCallback,
- PVOID UserContext
- );
- WINBOOL WINAPI EnumerateLoadedModulesExW(
- HANDLE hProcess,
- PENUMLOADED_MODULES_CALLBACKW64 EnumLoadedModulesCallback,
- PVOID UserContext
- );
- WINBOOL WINAPI SymAddSourceStream(
- HANDLE hProcess,
- ULONG64 Base,
- PCSTR StreamFile,
- PBYTE Buffer,
- size_t Size
- );
- WINBOOL WINAPI SymAddSourceStreamW(
- HANDLE hProcess,
- ULONG64 Base,
- PCWSTR StreamFile,
- PBYTE Buffer,
- size_t Size
- );
- WINBOOL WINAPI SymEnumSourceLines(
- HANDLE hProcess,
- ULONG64 Base,
- PCSTR Obj,
- PCSTR File,
- DWORD Line,
- DWORD Flags,
- PSYM_ENUMLINES_CALLBACK EnumLinesCallback,
- PVOID UserContext
- );
- WINBOOL WINAPI SymEnumSourceLinesW(
- HANDLE hProcess,
- ULONG64 Base,
- PCWSTR Obj,
- PCWSTR File,
- DWORD Line,
- DWORD Flags,
- PSYM_ENUMLINES_CALLBACKW EnumLinesCallback,
- PVOID UserContext
- );
- WINBOOL WINAPI SymEnumTypesByName(
- HANDLE hProcess,
- ULONG64 BaseOfDll,
- PCSTR mask,
- PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,
- PVOID UserContext
- );
- WINBOOL WINAPI SymEnumTypesByNameW(
- HANDLE hProcess,
- ULONG64 BaseOfDll,
- PCSTR mask,
- PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback,
- PVOID UserContext
- );
- HANDLE WINAPI SymFindDebugInfoFile(
- HANDLE hProcess,
- PCSTR FileName,
- PSTR DebugFilePath,
- PFIND_DEBUG_FILE_CALLBACK Callback,
- PVOID CallerData
- );
- HANDLE WINAPI SymFindDebugInfoFileW(
- HANDLE hProcess,
- PCWSTR FileName,
- PWSTR DebugFilePath,
- PFIND_DEBUG_FILE_CALLBACKW Callback,
- PVOID CallerData
- );
- HANDLE WINAPI SymFindExecutableImage(
- HANDLE hProcess,
- PCSTR FileName,
- PSTR ImageFilePath,
- PFIND_EXE_FILE_CALLBACK Callback,
- PVOID CallerData
- );
- HANDLE WINAPI SymFindExecutableImageW(
- HANDLE hProcess,
- PCWSTR FileName,
- PWSTR ImageFilePath,
- PFIND_EXE_FILE_CALLBACKW Callback,
- PVOID CallerData
- );
- WINBOOL WINAPI SymFromIndex(
- HANDLE hProcess,
- ULONG64 BaseOfDll,
- DWORD Index,
- PSYMBOL_INFO Symbol
- );
- WINBOOL WINAPI SymFromIndexW(
- HANDLE hProcess,
- ULONG64 BaseOfDll,
- DWORD Index,
- PSYMBOL_INFOW Symbol
- );
- WINBOOL WINAPI SymGetScope(
- HANDLE hProcess,
- ULONG64 BaseOfDll,
- DWORD Index,
- PSYMBOL_INFO Symbol
- );
- WINBOOL WINAPI SymGetScopeW(
- HANDLE hProcess,
- ULONG64 BaseOfDll,
- DWORD Index,
- PSYMBOL_INFOW Symbol
- );
- WINBOOL WINAPI SymGetSourceFileFromToken(
- HANDLE hProcess,
- PVOID Token,
- PCSTR Params,
- PSTR FilePath,
- DWORD Size
- );
- WINBOOL WINAPI SymGetSourceFileFromTokenW(
- HANDLE hProcess,
- PVOID Token,
- PCWSTR Params,
- PWSTR FilePath,
- DWORD Size
- );
- WINBOOL WINAPI SymGetSourceFileToken(
- HANDLE hProcess,
- ULONG64 Base,
- PCSTR FileSpec,
- PVOID *Token,
- DWORD *Size
- );
- WINBOOL WINAPI SymGetSourceFileTokenW(
- HANDLE hProcess,
- ULONG64 Base,
- PCWSTR FileSpec,
- PVOID *Token,
- DWORD *Size
- );
- WINBOOL WINAPI SymGetSourceFile(
- HANDLE hProcess,
- ULONG64 Base,
- PCSTR Params,
- PCSTR FileSpec,
- PSTR FilePath,
- DWORD Size
- );
- WINBOOL WINAPI SymGetSourceFileW(
- HANDLE hProcess,
- ULONG64 Base,
- PCWSTR Params,
- PCWSTR FileSpec,
- PWSTR FilePath,
- DWORD Size
- );
- WINBOOL WINAPI SymGetSourceVarFromToken(
- HANDLE hProcess,
- PVOID Token,
- PCSTR Params,
- PCSTR VarName,
- PSTR Value,
- DWORD Size
- );
- WINBOOL WINAPI SymGetSourceVarFromTokenW(
- HANDLE hProcess,
- PVOID Token,
- PCWSTR Params,
- PCWSTR VarName,
- PWSTR Value,
- DWORD Size
- );
- WINBOOL WINAPI SymGetSymbolFile(
- HANDLE hProcess,
- PCSTR SymPath,
- PCSTR ImageFile,
- DWORD Type,
- PSTR SymbolFile,
- size_t cSymbolFile,
- PSTR DbgFile,
- size_t cDbgFile
- );
- WINBOOL WINAPI SymGetSymbolFileW(
- HANDLE hProcess,
- PCWSTR SymPath,
- PCWSTR ImageFile,
- DWORD Type,
- PWSTR SymbolFile,
- size_t cSymbolFile,
- PWSTR DbgFile,
- size_t cDbgFile
- );
- WINBOOL WINAPI SymNext(
- HANDLE hProcess,
- PSYMBOL_INFO Symbol
- );
- WINBOOL WINAPI SymNextW(
- HANDLE hProcess,
- PSYMBOL_INFOW Symbol
- );
- WINBOOL WINAPI SymPrev(
- HANDLE hProcess,
- PSYMBOL_INFO Symbol
- );
- WINBOOL WINAPI SymPrevW(
- HANDLE hProcess,
- PSYMBOL_INFOW Symbol
- );
- WINBOOL WINAPI SymRefreshModuleList(
- HANDLE hProcess
- );
- #define SYMSEARCH_MASKOBJS 0x01
- #define SYMSEARCH_RECURSE 0x02
- #define SYMSEARCH_GLOBALSONLY 0x04
- #define SYMSEARCH_ALLITEMS 0x08
- WINBOOL WINAPI SymSearch(
- HANDLE hProcess,
- ULONG64 BaseOfDll,
- DWORD Index,
- DWORD SymTag,
- PCSTR Mask,
- DWORD64 Address,
- PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,
- PVOID UserContext,
- DWORD Options
- );
- WINBOOL WINAPI SymSearchW(
- HANDLE hProcess,
- ULONG64 BaseOfDll,
- DWORD Index,
- DWORD SymTag,
- PCWSTR Mask,
- DWORD64 Address,
- PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback,
- PVOID UserContext,
- DWORD Options
- );
- WINBOOL WINAPI SymSrvGetFileIndexString(
- HANDLE hProcess,
- PCSTR SrvPath,
- PCSTR File,
- PSTR Index,
- size_t Size,
- DWORD Flags
- );
- WINBOOL WINAPI SymSrvGetFileIndexStringW(
- HANDLE hProcess,
- PCWSTR SrvPath,
- PCWSTR File,
- PWSTR Index,
- size_t Size,
- DWORD Flags
- );
- #ifdef DBGHELP_TRANSLATE_TCHAR
- #define SymSrvGetFileIndexString SymSrvGetFileIndexStringW
- #endif
- WINBOOL WINAPI SymSrvGetFileIndexInfo(
- PCSTR File,
- PSYMSRV_INDEX_INFO Info,
- DWORD Flags
- );
- WINBOOL WINAPI SymSrvGetFileIndexInfoW(
- PCWSTR File,
- PSYMSRV_INDEX_INFOW Info,
- DWORD Flags
- );
- #ifdef DBGHELP_TRANSLATE_TCHAR
- #define SymSrvGetFileIndexInfo SymSrvGetFileIndexInfoW
- #endif
- WINBOOL WINAPI SymSrvGetFileIndexes(
- PCTSTR File,
- GUID *Id,
- DWORD *Val1,
- DWORD *Val2,
- DWORD Flags
- );
- WINBOOL WINAPI SymSrvGetFileIndexesW(
- PCWSTR File,
- GUID *Id,
- DWORD *Val1,
- DWORD *Val2,
- DWORD Flags
- );
- #ifdef DBGHELP_TRANSLATE_TCHAR
- #define SymSrvGetFileIndexes SymSrvGetFileIndexesW
- #endif
- PCSTR WINAPI SymSrvGetSupplement(
- HANDLE hProcess,
- PCSTR SymPath,
- PCSTR Node,
- PCSTR File
- );
- PCWSTR WINAPI SymSrvGetSupplementW(
- HANDLE hProcess,
- PCWSTR SymPath,
- PCWSTR Node,
- PCWSTR File
- );
- #ifdef DBGHELP_TRANSLATE_TCHAR
- #define SymSrvGetSupplement SymSrvGetSupplementW
- #endif
- WINBOOL WINAPI SymSrvIsStore(
- HANDLE hProcess,
- PCSTR path
- );
- WINBOOL WINAPI SymSrvIsStoreW(
- HANDLE hProcess,
- PCWSTR path
- );
- #ifdef DBGHELP_TRANSLATE_TCHAR
- #define SymSrvIsStore SymSrvIsStoreW
- #endif
- PCSTR WINAPI SymSrvStoreFile(
- HANDLE hProcess,
- PCSTR SrvPath,
- PCSTR File,
- DWORD Flags
- );
- PCWSTR WINAPI SymSrvStoreFileW(
- HANDLE hProcess,
- PCWSTR SrvPath,
- PCWSTR File,
- DWORD Flags
- );
- #define SYMSTOREOPT_COMPRESS 0x01
- #define SYMSTOREOPT_OVERWRITE 0x02
- #define SYMSTOREOPT_RETURNINDEX 0x04
- #define SYMSTOREOPT_POINTER 0x08
- #define SYMSTOREOPT_PASS_IF_EXISTS 0x40
- #ifdef DBGHELP_TRANSLATE_TCHAR
- #define SymSrvStoreFile SymSrvStoreFileW
- #endif
- PCSTR WINAPI SymSrvStoreSupplement(
- HANDLE hProcess,
- const PCTSTR SymPath,
- PCSTR Node,
- PCSTR File,
- DWORD Flags
- );
- PCWSTR WINAPI SymSrvStoreSupplementW(
- HANDLE hProcess,
- const PCWSTR SymPath,
- PCWSTR Node,
- PCWSTR File,
- DWORD Flags
- );
- #ifdef DBGHELP_TRANSLATE_TCHAR
- #define SymSrvStoreSupplement SymSrvStoreSupplementW
- #endif
- PCSTR WINAPI SymSrvDeltaName(
- HANDLE hProcess,
- PCSTR SymPath,
- PCSTR Type,
- PCSTR File1,
- PCSTR File2
- );
- PCWSTR WINAPI SymSrvDeltaNameW(
- HANDLE hProcess,
- PCWSTR SymPath,
- PCWSTR Type,
- PCWSTR File1,
- PCWSTR File2
- );
- #ifdef DBGHELP_TRANSLATE_TCHAR
- #define SymSrvDeltaName SymSrvDeltaNameW
- #endif
- #include <poppack.h>
- #ifdef __cplusplus
- }
- #endif
|