Path: blob/21.2-virgl/src/gallium/auxiliary/util/dbghelp.h
4561 views
/**1* This file has no copyright assigned and is placed in the Public Domain.2* This file is part of the w64 mingw-runtime package.3* No warranty is given; refer to the file DISCLAIMER.PD within this package.4*/5#ifndef _DBGHELP_6#define _DBGHELP_78#ifdef _WIN649#ifndef _IMAGEHLP6410#define _IMAGEHLP6411#endif12#endif1314#ifdef __cplusplus15extern "C" {16#endif1718#define IMAGEAPI DECLSPEC_IMPORT WINAPI19#define DBHLP_DEPRECIATED __declspec(deprecated)2021#define DBHLPAPI IMAGEAPI2223#define IMAGE_SEPARATION (64*1024)2425typedef struct _LOADED_IMAGE {26PSTR ModuleName;27HANDLE hFile;28PUCHAR MappedAddress;29#ifdef _IMAGEHLP6430PIMAGE_NT_HEADERS64 FileHeader;31#else32PIMAGE_NT_HEADERS32 FileHeader;33#endif34PIMAGE_SECTION_HEADER LastRvaSection;35ULONG NumberOfSections;36PIMAGE_SECTION_HEADER Sections;37ULONG Characteristics;38BOOLEAN fSystemImage;39BOOLEAN fDOSImage;40LIST_ENTRY Links;41ULONG SizeOfImage;42} LOADED_IMAGE,*PLOADED_IMAGE;4344#define MAX_SYM_NAME 20004546typedef BOOL (CALLBACK *PFIND_DEBUG_FILE_CALLBACK)(HANDLE FileHandle,PSTR FileName,PVOID CallerData);47typedef BOOL (CALLBACK *PFINDFILEINPATHCALLBACK)(PSTR filename,PVOID context);48typedef BOOL (CALLBACK *PFIND_EXE_FILE_CALLBACK)(HANDLE FileHandle,PSTR FileName,PVOID CallerData);4950typedef BOOL (WINAPI *PSYMBOLSERVERPROC)(LPCSTR,LPCSTR,PVOID,DWORD,DWORD,LPSTR);51typedef BOOL (WINAPI *PSYMBOLSERVEROPENPROC)(VOID);52typedef BOOL (WINAPI *PSYMBOLSERVERCLOSEPROC)(VOID);53typedef BOOL (WINAPI *PSYMBOLSERVERSETOPTIONSPROC)(UINT_PTR,ULONG64);54typedef BOOL (CALLBACK WINAPI *PSYMBOLSERVERCALLBACKPROC)(UINT_PTR action,ULONG64 data,ULONG64 context);55typedef UINT_PTR (WINAPI *PSYMBOLSERVERGETOPTIONSPROC)();56typedef BOOL (WINAPI *PSYMBOLSERVERPINGPROC)(LPCSTR);5758HANDLE IMAGEAPI FindDebugInfoFile(PSTR FileName,PSTR SymbolPath,PSTR DebugFilePath);59HANDLE IMAGEAPI FindDebugInfoFileEx(PSTR FileName,PSTR SymbolPath,PSTR DebugFilePath,PFIND_DEBUG_FILE_CALLBACK Callback,PVOID CallerData);60BOOL IMAGEAPI SymFindFileInPath(HANDLE hprocess,LPSTR SearchPath,LPSTR FileName,PVOID id,DWORD two,DWORD three,DWORD flags,LPSTR FoundFile,PFINDFILEINPATHCALLBACK callback,PVOID context);61HANDLE IMAGEAPI FindExecutableImage(PSTR FileName,PSTR SymbolPath,PSTR ImageFilePath);62HANDLE IMAGEAPI FindExecutableImageEx(PSTR FileName,PSTR SymbolPath,PSTR ImageFilePath,PFIND_EXE_FILE_CALLBACK Callback,PVOID CallerData);63PIMAGE_NT_HEADERS IMAGEAPI ImageNtHeader(PVOID Base);64PVOID IMAGEAPI ImageDirectoryEntryToDataEx(PVOID Base,BOOLEAN MappedAsImage,USHORT DirectoryEntry,PULONG Size,PIMAGE_SECTION_HEADER *FoundHeader);65PVOID IMAGEAPI ImageDirectoryEntryToData(PVOID Base,BOOLEAN MappedAsImage,USHORT DirectoryEntry,PULONG Size);66PIMAGE_SECTION_HEADER IMAGEAPI ImageRvaToSection(PIMAGE_NT_HEADERS NtHeaders,PVOID Base,ULONG Rva);67PVOID IMAGEAPI ImageRvaToVa(PIMAGE_NT_HEADERS NtHeaders,PVOID Base,ULONG Rva,PIMAGE_SECTION_HEADER *LastRvaSection);6869#define SSRVOPT_CALLBACK 0x000170#define SSRVOPT_DWORD 0x000271#define SSRVOPT_DWORDPTR 0x000472#define SSRVOPT_GUIDPTR 0x000873#define SSRVOPT_OLDGUIDPTR 0x001074#define SSRVOPT_UNATTENDED 0x002075#define SSRVOPT_NOCOPY 0x004076#define SSRVOPT_PARENTWIN 0x008077#define SSRVOPT_PARAMTYPE 0x010078#define SSRVOPT_SECURE 0x020079#define SSRVOPT_TRACE 0x040080#define SSRVOPT_SETCONTEXT 0x080081#define SSRVOPT_PROXY 0x100082#define SSRVOPT_DOWNSTREAM_STORE 0x200083#define SSRVOPT_RESET ((ULONG_PTR)-1)8485#define SSRVACTION_TRACE 186#define SSRVACTION_QUERYCANCEL 287#define SSRVACTION_EVENT 38889#ifndef _WIN649091typedef struct _IMAGE_DEBUG_INFORMATION {92LIST_ENTRY List;93DWORD ReservedSize;94PVOID ReservedMappedBase;95USHORT ReservedMachine;96USHORT ReservedCharacteristics;97DWORD ReservedCheckSum;98DWORD ImageBase;99DWORD SizeOfImage;100DWORD ReservedNumberOfSections;101PIMAGE_SECTION_HEADER ReservedSections;102DWORD ReservedExportedNamesSize;103PSTR ReservedExportedNames;104DWORD ReservedNumberOfFunctionTableEntries;105PIMAGE_FUNCTION_ENTRY ReservedFunctionTableEntries;106DWORD ReservedLowestFunctionStartingAddress;107DWORD ReservedHighestFunctionEndingAddress;108DWORD ReservedNumberOfFpoTableEntries;109PFPO_DATA ReservedFpoTableEntries;110DWORD SizeOfCoffSymbols;111PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols;112DWORD ReservedSizeOfCodeViewSymbols;113PVOID ReservedCodeViewSymbols;114PSTR ImageFilePath;115PSTR ImageFileName;116PSTR ReservedDebugFilePath;117DWORD ReservedTimeDateStamp;118BOOL ReservedRomImage;119PIMAGE_DEBUG_DIRECTORY ReservedDebugDirectory;120DWORD ReservedNumberOfDebugDirectories;121DWORD ReservedOriginalFunctionTableBaseAddress;122DWORD Reserved[2 ];123} IMAGE_DEBUG_INFORMATION,*PIMAGE_DEBUG_INFORMATION;124125PIMAGE_DEBUG_INFORMATION IMAGEAPI MapDebugInformation(HANDLE FileHandle,PSTR FileName,PSTR SymbolPath,DWORD ImageBase);126BOOL IMAGEAPI UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION DebugInfo);127#endif128129typedef BOOL (CALLBACK *PENUMDIRTREE_CALLBACK)(LPCSTR FilePath,PVOID CallerData);130131BOOL IMAGEAPI SearchTreeForFile(PSTR RootPath,PSTR InputPathName,PSTR OutputPathBuffer);132BOOL IMAGEAPI EnumDirTree(HANDLE hProcess,PSTR RootPath,PSTR InputPathName,PSTR OutputPathBuffer,PENUMDIRTREE_CALLBACK Callback,PVOID CallbackData);133BOOL IMAGEAPI MakeSureDirectoryPathExists(PCSTR DirPath);134135#define UNDNAME_COMPLETE (0x0000)136#define UNDNAME_NO_LEADING_UNDERSCORES (0x0001)137#define UNDNAME_NO_MS_KEYWORDS (0x0002)138#define UNDNAME_NO_FUNCTION_RETURNS (0x0004)139#define UNDNAME_NO_ALLOCATION_MODEL (0x0008)140#define UNDNAME_NO_ALLOCATION_LANGUAGE (0x0010)141#define UNDNAME_NO_MS_THISTYPE (0x0020)142#define UNDNAME_NO_CV_THISTYPE (0x0040)143#define UNDNAME_NO_THISTYPE (0x0060)144#define UNDNAME_NO_ACCESS_SPECIFIERS (0x0080)145#define UNDNAME_NO_THROW_SIGNATURES (0x0100)146#define UNDNAME_NO_MEMBER_TYPE (0x0200)147#define UNDNAME_NO_RETURN_UDT_MODEL (0x0400)148#define UNDNAME_32_BIT_DECODE (0x0800)149#define UNDNAME_NAME_ONLY (0x1000)150#define UNDNAME_NO_ARGUMENTS (0x2000)151#define UNDNAME_NO_SPECIAL_SYMS (0x4000)152153DWORD IMAGEAPI WINAPI UnDecorateSymbolName(PCSTR DecoratedName,PSTR UnDecoratedName,DWORD UndecoratedLength,DWORD Flags);154155#define DBHHEADER_DEBUGDIRS 0x1156157typedef struct _MODLOAD_DATA {158DWORD ssize;159DWORD ssig;160PVOID data;161DWORD size;162DWORD flags;163} MODLOAD_DATA,*PMODLOAD_DATA;164165typedef enum {166AddrMode1616,AddrMode1632,AddrModeReal,AddrModeFlat167} ADDRESS_MODE;168169typedef struct _tagADDRESS64 {170DWORD64 Offset;171WORD Segment;172ADDRESS_MODE Mode;173} ADDRESS64,*LPADDRESS64;174175#ifdef _IMAGEHLP64176#define ADDRESS ADDRESS64177#define LPADDRESS LPADDRESS64178#else179typedef struct _tagADDRESS {180DWORD Offset;181WORD Segment;182ADDRESS_MODE Mode;183} ADDRESS,*LPADDRESS;184185static __inline void Address32To64(LPADDRESS a32,LPADDRESS64 a64) {186a64->Offset = (ULONG64)(LONG64)(LONG)a32->Offset;187a64->Segment = a32->Segment;188a64->Mode = a32->Mode;189}190191static __inline void Address64To32(LPADDRESS64 a64,LPADDRESS a32) {192a32->Offset = (ULONG)a64->Offset;193a32->Segment = a64->Segment;194a32->Mode = a64->Mode;195}196#endif197198typedef struct _KDHELP64 {199DWORD64 Thread;200DWORD ThCallbackStack;201DWORD ThCallbackBStore;202DWORD NextCallback;203DWORD FramePointer;204DWORD64 KiCallUserMode;205DWORD64 KeUserCallbackDispatcher;206DWORD64 SystemRangeStart;207DWORD64 Reserved[8];208} KDHELP64,*PKDHELP64;209210#ifdef _IMAGEHLP64211#define KDHELP KDHELP64212#define PKDHELP PKDHELP64213#else214typedef struct _KDHELP {215DWORD Thread;216DWORD ThCallbackStack;217DWORD NextCallback;218DWORD FramePointer;219DWORD KiCallUserMode;220DWORD KeUserCallbackDispatcher;221DWORD SystemRangeStart;222DWORD ThCallbackBStore;223DWORD Reserved[8];224} KDHELP,*PKDHELP;225226static __inline void KdHelp32To64(PKDHELP p32,PKDHELP64 p64) {227p64->Thread = p32->Thread;228p64->ThCallbackStack = p32->ThCallbackStack;229p64->NextCallback = p32->NextCallback;230p64->FramePointer = p32->FramePointer;231p64->KiCallUserMode = p32->KiCallUserMode;232p64->KeUserCallbackDispatcher = p32->KeUserCallbackDispatcher;233p64->SystemRangeStart = p32->SystemRangeStart;234}235#endif236237typedef struct _tagSTACKFRAME64 {238ADDRESS64 AddrPC;239ADDRESS64 AddrReturn;240ADDRESS64 AddrFrame;241ADDRESS64 AddrStack;242ADDRESS64 AddrBStore;243PVOID FuncTableEntry;244DWORD64 Params[4];245BOOL Far;246BOOL Virtual;247DWORD64 Reserved[3];248KDHELP64 KdHelp;249} STACKFRAME64,*LPSTACKFRAME64;250251#ifdef _IMAGEHLP64252#define STACKFRAME STACKFRAME64253#define LPSTACKFRAME LPSTACKFRAME64254#else255typedef struct _tagSTACKFRAME {256ADDRESS AddrPC;257ADDRESS AddrReturn;258ADDRESS AddrFrame;259ADDRESS AddrStack;260PVOID FuncTableEntry;261DWORD Params[4];262BOOL Far;263BOOL Virtual;264DWORD Reserved[3];265KDHELP KdHelp;266ADDRESS AddrBStore;267} STACKFRAME,*LPSTACKFRAME;268#endif269270typedef BOOL (WINAPI *PREAD_PROCESS_MEMORY_ROUTINE64)(HANDLE hProcess,DWORD64 qwBaseAddress,PVOID lpBuffer,DWORD nSize,LPDWORD lpNumberOfBytesRead);271typedef PVOID (WINAPI *PFUNCTION_TABLE_ACCESS_ROUTINE64)(HANDLE hProcess,DWORD64 AddrBase);272typedef DWORD64 (WINAPI *PGET_MODULE_BASE_ROUTINE64)(HANDLE hProcess,DWORD64 Address);273typedef DWORD64 (WINAPI *PTRANSLATE_ADDRESS_ROUTINE64)(HANDLE hProcess,HANDLE hThread,LPADDRESS64 lpaddr);274275BOOL 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);276277#ifdef _IMAGEHLP64278#define PREAD_PROCESS_MEMORY_ROUTINE PREAD_PROCESS_MEMORY_ROUTINE64279#define PFUNCTION_TABLE_ACCESS_ROUTINE PFUNCTION_TABLE_ACCESS_ROUTINE64280#define PGET_MODULE_BASE_ROUTINE PGET_MODULE_BASE_ROUTINE64281#define PTRANSLATE_ADDRESS_ROUTINE PTRANSLATE_ADDRESS_ROUTINE64282#define StackWalk StackWalk64283#else284typedef BOOL (WINAPI *PREAD_PROCESS_MEMORY_ROUTINE)(HANDLE hProcess,DWORD lpBaseAddress,PVOID lpBuffer,DWORD nSize,PDWORD lpNumberOfBytesRead);285typedef PVOID (WINAPI *PFUNCTION_TABLE_ACCESS_ROUTINE)(HANDLE hProcess,DWORD AddrBase);286typedef DWORD (WINAPI *PGET_MODULE_BASE_ROUTINE)(HANDLE hProcess,DWORD Address);287typedef DWORD (WINAPI *PTRANSLATE_ADDRESS_ROUTINE)(HANDLE hProcess,HANDLE hThread,LPADDRESS lpaddr);288289BOOL 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);290#endif291292#define API_VERSION_NUMBER 9293294typedef struct API_VERSION {295USHORT MajorVersion;296USHORT MinorVersion;297USHORT Revision;298USHORT Reserved;299} API_VERSION,*LPAPI_VERSION;300301LPAPI_VERSION IMAGEAPI ImagehlpApiVersion(VOID);302LPAPI_VERSION IMAGEAPI ImagehlpApiVersionEx(LPAPI_VERSION AppVersion);303DWORD IMAGEAPI GetTimestampForLoadedLibrary(HMODULE Module);304305typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK64)(PSTR ModuleName,DWORD64 BaseOfDll,PVOID UserContext);306typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64)(PSTR SymbolName,DWORD64 SymbolAddress,ULONG SymbolSize,PVOID UserContext);307typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64W)(PWSTR SymbolName,DWORD64 SymbolAddress,ULONG SymbolSize,PVOID UserContext);308typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK64)(PSTR ModuleName,DWORD64 ModuleBase,ULONG ModuleSize,PVOID UserContext);309typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK64)(HANDLE hProcess,ULONG ActionCode,ULONG64 CallbackData,ULONG64 UserContext);310typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK)(HANDLE hProcess,DWORD AddrBase,PVOID UserContext);311typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK64)(HANDLE hProcess,ULONG64 AddrBase,ULONG64 UserContext);312313#ifdef _IMAGEHLP64314#define PSYM_ENUMMODULES_CALLBACK PSYM_ENUMMODULES_CALLBACK64315#define PSYM_ENUMSYMBOLS_CALLBACK PSYM_ENUMSYMBOLS_CALLBACK64316#define PSYM_ENUMSYMBOLS_CALLBACKW PSYM_ENUMSYMBOLS_CALLBACK64W317#define PENUMLOADED_MODULES_CALLBACK PENUMLOADED_MODULES_CALLBACK64318#define PSYMBOL_REGISTERED_CALLBACK PSYMBOL_REGISTERED_CALLBACK64319#define PSYMBOL_FUNCENTRY_CALLBACK PSYMBOL_FUNCENTRY_CALLBACK64320#else321typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK)(PSTR ModuleName,ULONG BaseOfDll,PVOID UserContext);322typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)(PSTR SymbolName,ULONG SymbolAddress,ULONG SymbolSize,PVOID UserContext);323typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACKW)(PWSTR SymbolName,ULONG SymbolAddress,ULONG SymbolSize,PVOID UserContext);324typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK)(PSTR ModuleName,ULONG ModuleBase,ULONG ModuleSize,PVOID UserContext);325typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK)(HANDLE hProcess,ULONG ActionCode,PVOID CallbackData,PVOID UserContext);326#endif327328#define SYMFLAG_VALUEPRESENT 0x00000001329#define SYMFLAG_REGISTER 0x00000008330#define SYMFLAG_REGREL 0x00000010331#define SYMFLAG_FRAMEREL 0x00000020332#define SYMFLAG_PARAMETER 0x00000040333#define SYMFLAG_LOCAL 0x00000080334#define SYMFLAG_CONSTANT 0x00000100335#define SYMFLAG_EXPORT 0x00000200336#define SYMFLAG_FORWARDER 0x00000400337#define SYMFLAG_FUNCTION 0x00000800338#define SYMFLAG_VIRTUAL 0x00001000339#define SYMFLAG_THUNK 0x00002000340#define SYMFLAG_TLSREL 0x00004000341342typedef enum {343SymNone = 0,SymCoff,SymCv,SymPdb,SymExport,SymDeferred,SymSym,SymDia,SymVirtual,NumSymTypes344} SYM_TYPE;345346typedef struct _IMAGEHLP_SYMBOL64 {347DWORD SizeOfStruct;348DWORD64 Address;349DWORD Size;350DWORD Flags;351DWORD MaxNameLength;352CHAR Name[1];353} IMAGEHLP_SYMBOL64,*PIMAGEHLP_SYMBOL64;354355typedef struct _IMAGEHLP_SYMBOL64_PACKAGE {356IMAGEHLP_SYMBOL64 sym;357CHAR name[MAX_SYM_NAME + 1];358} IMAGEHLP_SYMBOL64_PACKAGE,*PIMAGEHLP_SYMBOL64_PACKAGE;359360#ifdef _IMAGEHLP64361362#define IMAGEHLP_SYMBOL IMAGEHLP_SYMBOL64363#define PIMAGEHLP_SYMBOL PIMAGEHLP_SYMBOL64364#define IMAGEHLP_SYMBOL_PACKAGE IMAGEHLP_SYMBOL64_PACKAGE365#define PIMAGEHLP_SYMBOL_PACKAGE PIMAGEHLP_SYMBOL64_PACKAGE366#else367368typedef struct _IMAGEHLP_SYMBOL {369DWORD SizeOfStruct;370DWORD Address;371DWORD Size;372DWORD Flags;373DWORD MaxNameLength;374CHAR Name[1];375} IMAGEHLP_SYMBOL,*PIMAGEHLP_SYMBOL;376377typedef struct _IMAGEHLP_SYMBOL_PACKAGE {378IMAGEHLP_SYMBOL sym;379CHAR name[MAX_SYM_NAME + 1];380} IMAGEHLP_SYMBOL_PACKAGE,*PIMAGEHLP_SYMBOL_PACKAGE;381#endif382383typedef struct _IMAGEHLP_MODULE64 {384DWORD SizeOfStruct;385DWORD64 BaseOfImage;386DWORD ImageSize;387DWORD TimeDateStamp;388DWORD CheckSum;389DWORD NumSyms;390SYM_TYPE SymType;391CHAR ModuleName[32];392CHAR ImageName[256];393CHAR LoadedImageName[256];394CHAR LoadedPdbName[256];395DWORD CVSig;396CHAR CVData[MAX_PATH*3];397DWORD PdbSig;398GUID PdbSig70;399DWORD PdbAge;400BOOL PdbUnmatched;401BOOL DbgUnmatched;402BOOL LineNumbers;403BOOL GlobalSymbols;404BOOL TypeInfo;405} IMAGEHLP_MODULE64,*PIMAGEHLP_MODULE64;406407typedef struct _IMAGEHLP_MODULE64W {408DWORD SizeOfStruct;409DWORD64 BaseOfImage;410DWORD ImageSize;411DWORD TimeDateStamp;412DWORD CheckSum;413DWORD NumSyms;414SYM_TYPE SymType;415WCHAR ModuleName[32];416WCHAR ImageName[256];417WCHAR LoadedImageName[256];418WCHAR LoadedPdbName[256];419DWORD CVSig;420WCHAR CVData[MAX_PATH*3];421DWORD PdbSig;422GUID PdbSig70;423DWORD PdbAge;424BOOL PdbUnmatched;425BOOL DbgUnmatched;426BOOL LineNumbers;427BOOL GlobalSymbols;428BOOL TypeInfo;429} IMAGEHLP_MODULEW64,*PIMAGEHLP_MODULEW64;430431#ifdef _IMAGEHLP64432#define IMAGEHLP_MODULE IMAGEHLP_MODULE64433#define PIMAGEHLP_MODULE PIMAGEHLP_MODULE64434#define IMAGEHLP_MODULEW IMAGEHLP_MODULEW64435#define PIMAGEHLP_MODULEW PIMAGEHLP_MODULEW64436#else437typedef struct _IMAGEHLP_MODULE {438DWORD SizeOfStruct;439DWORD BaseOfImage;440DWORD ImageSize;441DWORD TimeDateStamp;442DWORD CheckSum;443DWORD NumSyms;444SYM_TYPE SymType;445CHAR ModuleName[32];446CHAR ImageName[256];447CHAR LoadedImageName[256];448} IMAGEHLP_MODULE,*PIMAGEHLP_MODULE;449450typedef struct _IMAGEHLP_MODULEW {451DWORD SizeOfStruct;452DWORD BaseOfImage;453DWORD ImageSize;454DWORD TimeDateStamp;455DWORD CheckSum;456DWORD NumSyms;457SYM_TYPE SymType;458WCHAR ModuleName[32];459WCHAR ImageName[256];460WCHAR LoadedImageName[256];461} IMAGEHLP_MODULEW,*PIMAGEHLP_MODULEW;462#endif463464typedef struct _IMAGEHLP_LINE64 {465DWORD SizeOfStruct;466PVOID Key;467DWORD LineNumber;468PCHAR FileName;469DWORD64 Address;470} IMAGEHLP_LINE64,*PIMAGEHLP_LINE64;471472#ifdef _IMAGEHLP64473#define IMAGEHLP_LINE IMAGEHLP_LINE64474#define PIMAGEHLP_LINE PIMAGEHLP_LINE64475#else476typedef struct _IMAGEHLP_LINE {477DWORD SizeOfStruct;478PVOID Key;479DWORD LineNumber;480PCHAR FileName;481DWORD Address;482} IMAGEHLP_LINE,*PIMAGEHLP_LINE;483#endif484485typedef struct _SOURCEFILE {486DWORD64 ModBase;487PCHAR FileName;488} SOURCEFILE,*PSOURCEFILE;489490#define CBA_DEFERRED_SYMBOL_LOAD_START 0x00000001491#define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE 0x00000002492#define CBA_DEFERRED_SYMBOL_LOAD_FAILURE 0x00000003493#define CBA_SYMBOLS_UNLOADED 0x00000004494#define CBA_DUPLICATE_SYMBOL 0x00000005495#define CBA_READ_MEMORY 0x00000006496#define CBA_DEFERRED_SYMBOL_LOAD_CANCEL 0x00000007497#define CBA_SET_OPTIONS 0x00000008498#define CBA_EVENT 0x00000010499#define CBA_DEFERRED_SYMBOL_LOAD_PARTIAL 0x00000020500#define CBA_DEBUG_INFO 0x10000000501502typedef struct _IMAGEHLP_CBA_READ_MEMORY {503DWORD64 addr;504PVOID buf;505DWORD bytes;506DWORD *bytesread;507} IMAGEHLP_CBA_READ_MEMORY,*PIMAGEHLP_CBA_READ_MEMORY;508509enum {510sevInfo = 0,sevProblem,sevAttn,sevFatal,sevMax511};512513typedef struct _IMAGEHLP_CBA_EVENT {514DWORD severity;515DWORD code;516PCHAR desc;517PVOID object;518} IMAGEHLP_CBA_EVENT,*PIMAGEHLP_CBA_EVENT;519520typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD64 {521DWORD SizeOfStruct;522DWORD64 BaseOfImage;523DWORD CheckSum;524DWORD TimeDateStamp;525CHAR FileName[MAX_PATH];526BOOLEAN Reparse;527HANDLE hFile;528DWORD Flags;529} IMAGEHLP_DEFERRED_SYMBOL_LOAD64,*PIMAGEHLP_DEFERRED_SYMBOL_LOAD64;530531#define DSLFLAG_MISMATCHED_PDB 0x1532#define DSLFLAG_MISMATCHED_DBG 0x2533534#ifdef _IMAGEHLP64535#define IMAGEHLP_DEFERRED_SYMBOL_LOAD IMAGEHLP_DEFERRED_SYMBOL_LOAD64536#define PIMAGEHLP_DEFERRED_SYMBOL_LOAD PIMAGEHLP_DEFERRED_SYMBOL_LOAD64537#else538typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD {539DWORD SizeOfStruct;540DWORD BaseOfImage;541DWORD CheckSum;542DWORD TimeDateStamp;543CHAR FileName[MAX_PATH];544BOOLEAN Reparse;545HANDLE hFile;546} IMAGEHLP_DEFERRED_SYMBOL_LOAD,*PIMAGEHLP_DEFERRED_SYMBOL_LOAD;547#endif548549typedef struct _IMAGEHLP_DUPLICATE_SYMBOL64 {550DWORD SizeOfStruct;551DWORD NumberOfDups;552PIMAGEHLP_SYMBOL64 Symbol;553DWORD SelectedSymbol;554} IMAGEHLP_DUPLICATE_SYMBOL64,*PIMAGEHLP_DUPLICATE_SYMBOL64;555556#ifdef _IMAGEHLP64557#define IMAGEHLP_DUPLICATE_SYMBOL IMAGEHLP_DUPLICATE_SYMBOL64558#define PIMAGEHLP_DUPLICATE_SYMBOL PIMAGEHLP_DUPLICATE_SYMBOL64559#else560typedef struct _IMAGEHLP_DUPLICATE_SYMBOL {561DWORD SizeOfStruct;562DWORD NumberOfDups;563PIMAGEHLP_SYMBOL Symbol;564DWORD SelectedSymbol;565} IMAGEHLP_DUPLICATE_SYMBOL,*PIMAGEHLP_DUPLICATE_SYMBOL;566#endif567568BOOL IMAGEAPI SymSetParentWindow(HWND hwnd);569PCHAR IMAGEAPI SymSetHomeDirectory(PCSTR dir);570PCHAR IMAGEAPI SymGetHomeDirectory(DWORD type,PSTR dir,size_t size);571572enum {573hdBase = 0,hdSym,hdSrc,hdMax574};575576#define SYMOPT_CASE_INSENSITIVE 0x00000001577#define SYMOPT_UNDNAME 0x00000002578#define SYMOPT_DEFERRED_LOADS 0x00000004579#define SYMOPT_NO_CPP 0x00000008580#define SYMOPT_LOAD_LINES 0x00000010581#define SYMOPT_OMAP_FIND_NEAREST 0x00000020582#define SYMOPT_LOAD_ANYTHING 0x00000040583#define SYMOPT_IGNORE_CVREC 0x00000080584#define SYMOPT_NO_UNQUALIFIED_LOADS 0x00000100585#define SYMOPT_FAIL_CRITICAL_ERRORS 0x00000200586#define SYMOPT_EXACT_SYMBOLS 0x00000400587#define SYMOPT_ALLOW_ABSOLUTE_SYMBOLS 0x00000800588#define SYMOPT_IGNORE_NT_SYMPATH 0x00001000589#define SYMOPT_INCLUDE_32BIT_MODULES 0x00002000590#define SYMOPT_PUBLICS_ONLY 0x00004000591#define SYMOPT_NO_PUBLICS 0x00008000592#define SYMOPT_AUTO_PUBLICS 0x00010000593#define SYMOPT_NO_IMAGE_SEARCH 0x00020000594#define SYMOPT_SECURE 0x00040000595#define SYMOPT_NO_PROMPTS 0x00080000596597#define SYMOPT_DEBUG 0x80000000598599DWORD IMAGEAPI SymSetOptions(DWORD SymOptions);600DWORD IMAGEAPI SymGetOptions(VOID);601BOOL IMAGEAPI SymCleanup(HANDLE hProcess);602BOOL IMAGEAPI SymMatchString(LPSTR string,LPSTR expression,BOOL fCase);603604typedef BOOL (CALLBACK *PSYM_ENUMSOURCFILES_CALLBACK)(PSOURCEFILE pSourceFile,PVOID UserContext);605606BOOL IMAGEAPI SymEnumSourceFiles(HANDLE hProcess,ULONG64 ModBase,LPSTR Mask,PSYM_ENUMSOURCFILES_CALLBACK cbSrcFiles,PVOID UserContext);607BOOL IMAGEAPI SymEnumerateModules64(HANDLE hProcess,PSYM_ENUMMODULES_CALLBACK64 EnumModulesCallback,PVOID UserContext);608609#ifdef _IMAGEHLP64610#define SymEnumerateModules SymEnumerateModules64611#else612BOOL IMAGEAPI SymEnumerateModules(HANDLE hProcess,PSYM_ENUMMODULES_CALLBACK EnumModulesCallback,PVOID UserContext);613#endif614615BOOL IMAGEAPI SymEnumerateSymbols64(HANDLE hProcess,DWORD64 BaseOfDll,PSYM_ENUMSYMBOLS_CALLBACK64 EnumSymbolsCallback,PVOID UserContext);616BOOL IMAGEAPI SymEnumerateSymbolsW64(HANDLE hProcess,DWORD64 BaseOfDll,PSYM_ENUMSYMBOLS_CALLBACK64W EnumSymbolsCallback,PVOID UserContext);617618#ifdef _IMAGEHLP64619#define SymEnumerateSymbols SymEnumerateSymbols64620#define SymEnumerateSymbolsW SymEnumerateSymbolsW64621#else622BOOL IMAGEAPI SymEnumerateSymbols(HANDLE hProcess,DWORD BaseOfDll,PSYM_ENUMSYMBOLS_CALLBACK EnumSymbolsCallback,PVOID UserContext);623BOOL IMAGEAPI SymEnumerateSymbolsW(HANDLE hProcess,DWORD BaseOfDll,PSYM_ENUMSYMBOLS_CALLBACKW EnumSymbolsCallback,PVOID UserContext);624#endif625626BOOL IMAGEAPI EnumerateLoadedModules64(HANDLE hProcess,PENUMLOADED_MODULES_CALLBACK64 EnumLoadedModulesCallback,PVOID UserContext);627#ifdef _IMAGEHLP64628#define EnumerateLoadedModules EnumerateLoadedModules64629#else630BOOL IMAGEAPI EnumerateLoadedModules(HANDLE hProcess,PENUMLOADED_MODULES_CALLBACK EnumLoadedModulesCallback,PVOID UserContext);631#endif632633PVOID IMAGEAPI SymFunctionTableAccess64(HANDLE hProcess,DWORD64 AddrBase);634635#ifdef _IMAGEHLP64636#define SymFunctionTableAccess SymFunctionTableAccess64637#else638PVOID IMAGEAPI SymFunctionTableAccess(HANDLE hProcess,DWORD AddrBase);639#endif640641BOOL IMAGEAPI SymGetModuleInfo64(HANDLE hProcess,DWORD64 qwAddr,PIMAGEHLP_MODULE64 ModuleInfo);642BOOL IMAGEAPI SymGetModuleInfoW64(HANDLE hProcess,DWORD64 qwAddr,PIMAGEHLP_MODULEW64 ModuleInfo);643644#ifdef _IMAGEHLP64645#define SymGetModuleInfo SymGetModuleInfo64646#define SymGetModuleInfoW SymGetModuleInfoW64647#else648BOOL IMAGEAPI SymGetModuleInfo(HANDLE hProcess,DWORD dwAddr,PIMAGEHLP_MODULE ModuleInfo);649BOOL IMAGEAPI SymGetModuleInfoW(HANDLE hProcess,DWORD dwAddr,PIMAGEHLP_MODULEW ModuleInfo);650#endif651652DWORD64 IMAGEAPI SymGetModuleBase64(HANDLE hProcess,DWORD64 qwAddr);653654#ifdef _IMAGEHLP64655#define SymGetModuleBase SymGetModuleBase64656#else657DWORD IMAGEAPI SymGetModuleBase(HANDLE hProcess,DWORD dwAddr);658#endif659660BOOL IMAGEAPI SymGetSymNext64(HANDLE hProcess,PIMAGEHLP_SYMBOL64 Symbol);661662#ifdef _IMAGEHLP64663#define SymGetSymNext SymGetSymNext64664#else665BOOL IMAGEAPI SymGetSymNext(HANDLE hProcess,PIMAGEHLP_SYMBOL Symbol);666#endif667668BOOL IMAGEAPI SymGetSymPrev64(HANDLE hProcess,PIMAGEHLP_SYMBOL64 Symbol);669670#ifdef _IMAGEHLP64671#define SymGetSymPrev SymGetSymPrev64672#else673BOOL IMAGEAPI SymGetSymPrev(HANDLE hProcess,PIMAGEHLP_SYMBOL Symbol);674#endif675676typedef struct _SRCCODEINFO {677DWORD SizeOfStruct;678PVOID Key;679DWORD64 ModBase;680CHAR Obj[MAX_PATH + 1];681CHAR FileName[MAX_PATH + 1];682DWORD LineNumber;683DWORD64 Address;684} SRCCODEINFO,*PSRCCODEINFO;685686typedef BOOL (CALLBACK *PSYM_ENUMLINES_CALLBACK)(PSRCCODEINFO LineInfo,PVOID UserContext);687688BOOL IMAGEAPI SymEnumLines(HANDLE hProcess,ULONG64 Base,PCSTR Obj,PCSTR File,PSYM_ENUMLINES_CALLBACK EnumLinesCallback,PVOID UserContext);689BOOL IMAGEAPI SymGetLineFromAddr64(HANDLE hProcess,DWORD64 qwAddr,PDWORD pdwDisplacement,PIMAGEHLP_LINE64 Line64);690691#ifdef _IMAGEHLP64692#define SymGetLineFromAddr SymGetLineFromAddr64693#else694BOOL IMAGEAPI SymGetLineFromAddr(HANDLE hProcess,DWORD dwAddr,PDWORD pdwDisplacement,PIMAGEHLP_LINE Line);695#endif696697BOOL IMAGEAPI SymGetLineFromName64(HANDLE hProcess,PSTR ModuleName,PSTR FileName,DWORD dwLineNumber,PLONG plDisplacement,PIMAGEHLP_LINE64 Line);698699#ifdef _IMAGEHLP64700#define SymGetLineFromName SymGetLineFromName64701#else702BOOL IMAGEAPI SymGetLineFromName(HANDLE hProcess,PSTR ModuleName,PSTR FileName,DWORD dwLineNumber,PLONG plDisplacement,PIMAGEHLP_LINE Line);703#endif704705BOOL IMAGEAPI SymGetLineNext64(HANDLE hProcess,PIMAGEHLP_LINE64 Line);706707#ifdef _IMAGEHLP64708#define SymGetLineNext SymGetLineNext64709#else710BOOL IMAGEAPI SymGetLineNext(HANDLE hProcess,PIMAGEHLP_LINE Line);711#endif712713BOOL IMAGEAPI SymGetLinePrev64(HANDLE hProcess,PIMAGEHLP_LINE64 Line);714715#ifdef _IMAGEHLP64716#define SymGetLinePrev SymGetLinePrev64717#else718BOOL IMAGEAPI SymGetLinePrev(HANDLE hProcess,PIMAGEHLP_LINE Line);719#endif720721BOOL IMAGEAPI SymMatchFileName(PSTR FileName,PSTR Match,PSTR *FileNameStop,PSTR *MatchStop);722BOOL IMAGEAPI SymInitialize(HANDLE hProcess,PSTR UserSearchPath,BOOL fInvadeProcess);723BOOL IMAGEAPI SymGetSearchPath(HANDLE hProcess,PSTR SearchPath,DWORD SearchPathLength);724BOOL IMAGEAPI SymSetSearchPath(HANDLE hProcess,PSTR SearchPath);725DWORD64 IMAGEAPI SymLoadModule64(HANDLE hProcess,HANDLE hFile,PSTR ImageName,PSTR ModuleName,DWORD64 BaseOfDll,DWORD SizeOfDll);726727#define SLMFLAG_VIRTUAL 0x1728729DWORD64 IMAGEAPI SymLoadModuleEx(HANDLE hProcess,HANDLE hFile,PSTR ImageName,PSTR ModuleName,DWORD64 BaseOfDll,DWORD DllSize,PMODLOAD_DATA Data,DWORD Flags);730731#ifdef _IMAGEHLP64732#define SymLoadModule SymLoadModule64733#else734DWORD IMAGEAPI SymLoadModule(HANDLE hProcess,HANDLE hFile,PSTR ImageName,PSTR ModuleName,DWORD BaseOfDll,DWORD SizeOfDll);735#endif736737BOOL IMAGEAPI SymUnloadModule64(HANDLE hProcess,DWORD64 BaseOfDll);738739#ifdef _IMAGEHLP64740#define SymUnloadModule SymUnloadModule64741#else742BOOL IMAGEAPI SymUnloadModule(HANDLE hProcess,DWORD BaseOfDll);743#endif744745BOOL IMAGEAPI SymUnDName64(PIMAGEHLP_SYMBOL64 sym,PSTR UnDecName,DWORD UnDecNameLength);746747#ifdef _IMAGEHLP64748#define SymUnDName SymUnDName64749#else750BOOL IMAGEAPI SymUnDName(PIMAGEHLP_SYMBOL sym,PSTR UnDecName,DWORD UnDecNameLength);751#endif752753BOOL IMAGEAPI SymRegisterCallback64(HANDLE hProcess,PSYMBOL_REGISTERED_CALLBACK64 CallbackFunction,ULONG64 UserContext);754755BOOL IMAGEAPI SymRegisterFunctionEntryCallback64(HANDLE hProcess,PSYMBOL_FUNCENTRY_CALLBACK64 CallbackFunction,ULONG64 UserContext);756757#ifdef _IMAGEHLP64758#define SymRegisterCallback SymRegisterCallback64759#define SymRegisterFunctionEntryCallback SymRegisterFunctionEntryCallback64760#else761BOOL IMAGEAPI SymRegisterCallback(HANDLE hProcess,PSYMBOL_REGISTERED_CALLBACK CallbackFunction,PVOID UserContext);762BOOL IMAGEAPI SymRegisterFunctionEntryCallback(HANDLE hProcess,PSYMBOL_FUNCENTRY_CALLBACK CallbackFunction,PVOID UserContext);763#endif764765typedef struct _IMAGEHLP_SYMBOL_SRC {766DWORD sizeofstruct;767DWORD type;768char file[MAX_PATH];769} IMAGEHLP_SYMBOL_SRC,*PIMAGEHLP_SYMBOL_SRC;770771typedef struct _MODULE_TYPE_INFO {772USHORT dataLength;773USHORT leaf;774BYTE data[1];775} MODULE_TYPE_INFO,*PMODULE_TYPE_INFO;776777typedef struct _SYMBOL_INFO {778ULONG SizeOfStruct;779ULONG TypeIndex;780ULONG64 Reserved[2];781ULONG info;782ULONG Size;783ULONG64 ModBase;784ULONG Flags;785ULONG64 Value;786ULONG64 Address;787ULONG Register;788ULONG Scope;789ULONG Tag;790ULONG NameLen;791ULONG MaxNameLen;792CHAR Name[1];793} SYMBOL_INFO,*PSYMBOL_INFO;794795typedef struct _SYMBOL_INFO_PACKAGE {796SYMBOL_INFO si;797CHAR name[MAX_SYM_NAME + 1];798} SYMBOL_INFO_PACKAGE,*PSYMBOL_INFO_PACKAGE;799800typedef struct _IMAGEHLP_STACK_FRAME801{802ULONG64 InstructionOffset;803ULONG64 ReturnOffset;804ULONG64 FrameOffset;805ULONG64 StackOffset;806ULONG64 BackingStoreOffset;807ULONG64 FuncTableEntry;808ULONG64 Params[4];809ULONG64 Reserved[5];810BOOL Virtual;811ULONG Reserved2;812} IMAGEHLP_STACK_FRAME,*PIMAGEHLP_STACK_FRAME;813814typedef VOID IMAGEHLP_CONTEXT,*PIMAGEHLP_CONTEXT;815816BOOL IMAGEAPI SymSetContext(HANDLE hProcess,PIMAGEHLP_STACK_FRAME StackFrame,PIMAGEHLP_CONTEXT Context);817BOOL IMAGEAPI SymFromAddr(HANDLE hProcess,DWORD64 Address,PDWORD64 Displacement,PSYMBOL_INFO Symbol);818BOOL IMAGEAPI SymFromToken(HANDLE hProcess,DWORD64 Base,DWORD Token,PSYMBOL_INFO Symbol);819BOOL IMAGEAPI SymFromName(HANDLE hProcess,LPSTR Name,PSYMBOL_INFO Symbol);820821typedef BOOL (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACK)(PSYMBOL_INFO pSymInfo,ULONG SymbolSize,PVOID UserContext);822823BOOL IMAGEAPI SymEnumSymbols(HANDLE hProcess,ULONG64 BaseOfDll,PCSTR Mask,PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,PVOID UserContext);824BOOL IMAGEAPI SymEnumSymbolsForAddr(HANDLE hProcess,DWORD64 Address,PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,PVOID UserContext);825826#define SYMENUMFLAG_FULLSRCH 1827#define SYMENUMFLAG_SPEEDSRCH 2828829typedef enum _IMAGEHLP_SYMBOL_TYPE_INFO {830TI_GET_SYMTAG,TI_GET_SYMNAME,TI_GET_LENGTH,TI_GET_TYPE,TI_GET_TYPEID,TI_GET_BASETYPE,TI_GET_ARRAYINDEXTYPEID,TI_FINDCHILDREN,831TI_GET_DATAKIND,TI_GET_ADDRESSOFFSET,TI_GET_OFFSET,TI_GET_VALUE,TI_GET_COUNT,TI_GET_CHILDRENCOUNT,TI_GET_BITPOSITION,TI_GET_VIRTUALBASECLASS,832TI_GET_VIRTUALTABLESHAPEID,TI_GET_VIRTUALBASEPOINTEROFFSET,TI_GET_CLASSPARENTID,TI_GET_NESTED,TI_GET_SYMINDEX,TI_GET_LEXICALPARENT,833TI_GET_ADDRESS,TI_GET_THISADJUST,TI_GET_UDTKIND,TI_IS_EQUIV_TO,TI_GET_CALLING_CONVENTION834} IMAGEHLP_SYMBOL_TYPE_INFO;835836typedef struct _TI_FINDCHILDREN_PARAMS {837ULONG Count;838ULONG Start;839ULONG ChildId[1];840} TI_FINDCHILDREN_PARAMS;841842BOOL IMAGEAPI SymGetTypeInfo(HANDLE hProcess,DWORD64 ModBase,ULONG TypeId,IMAGEHLP_SYMBOL_TYPE_INFO GetType,PVOID pInfo);843BOOL IMAGEAPI SymEnumTypes(HANDLE hProcess,ULONG64 BaseOfDll,PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,PVOID UserContext);844BOOL IMAGEAPI SymGetTypeFromName(HANDLE hProcess,ULONG64 BaseOfDll,LPSTR Name,PSYMBOL_INFO Symbol);845BOOL IMAGEAPI SymAddSymbol(HANDLE hProcess,ULONG64 BaseOfDll,PCSTR Name,DWORD64 Address,DWORD Size,DWORD Flags);846BOOL IMAGEAPI SymDeleteSymbol(HANDLE hProcess,ULONG64 BaseOfDll,PCSTR Name,DWORD64 Address,DWORD Flags);847848typedef BOOL (WINAPI *PDBGHELP_CREATE_USER_DUMP_CALLBACK)(DWORD DataType,PVOID *Data,LPDWORD DataLength,PVOID UserData);849850BOOL WINAPI DbgHelpCreateUserDump(LPSTR FileName,PDBGHELP_CREATE_USER_DUMP_CALLBACK Callback,PVOID UserData);851BOOL WINAPI DbgHelpCreateUserDumpW(LPWSTR FileName,PDBGHELP_CREATE_USER_DUMP_CALLBACK Callback,PVOID UserData);852BOOL IMAGEAPI SymGetSymFromAddr64(HANDLE hProcess,DWORD64 qwAddr,PDWORD64 pdwDisplacement,PIMAGEHLP_SYMBOL64 Symbol);853854#ifdef _IMAGEHLP64855#define SymGetSymFromAddr SymGetSymFromAddr64856#else857BOOL IMAGEAPI SymGetSymFromAddr(HANDLE hProcess,DWORD dwAddr,PDWORD pdwDisplacement,PIMAGEHLP_SYMBOL Symbol);858#endif859860BOOL IMAGEAPI SymGetSymFromName64(HANDLE hProcess,PSTR Name,PIMAGEHLP_SYMBOL64 Symbol);861862#ifdef _IMAGEHLP64863#define SymGetSymFromName SymGetSymFromName64864#else865BOOL IMAGEAPI SymGetSymFromName(HANDLE hProcess,PSTR Name,PIMAGEHLP_SYMBOL Symbol);866#endif867868DBHLP_DEPRECIATED BOOL IMAGEAPI FindFileInPath(HANDLE hprocess,LPSTR SearchPath,LPSTR FileName,PVOID id,DWORD two,DWORD three,DWORD flags,LPSTR FilePath);869DBHLP_DEPRECIATED BOOL IMAGEAPI FindFileInSearchPath(HANDLE hprocess,LPSTR SearchPath,LPSTR FileName,DWORD one,DWORD two,DWORD three,LPSTR FilePath);870DBHLP_DEPRECIATED BOOL IMAGEAPI SymEnumSym(HANDLE hProcess,ULONG64 BaseOfDll,PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,PVOID UserContext);871872#define SYMF_OMAP_GENERATED 0x00000001873#define SYMF_OMAP_MODIFIED 0x00000002874#define SYMF_REGISTER 0x00000008875#define SYMF_REGREL 0x00000010876#define SYMF_FRAMEREL 0x00000020877#define SYMF_PARAMETER 0x00000040878#define SYMF_LOCAL 0x00000080879#define SYMF_CONSTANT 0x00000100880#define SYMF_EXPORT 0x00000200881#define SYMF_FORWARDER 0x00000400882#define SYMF_FUNCTION 0x00000800883#define SYMF_VIRTUAL 0x00001000884#define SYMF_THUNK 0x00002000885#define SYMF_TLSREL 0x00004000886887#define IMAGEHLP_SYMBOL_INFO_VALUEPRESENT 1888#define IMAGEHLP_SYMBOL_INFO_REGISTER SYMF_REGISTER889#define IMAGEHLP_SYMBOL_INFO_REGRELATIVE SYMF_REGREL890#define IMAGEHLP_SYMBOL_INFO_FRAMERELATIVE SYMF_FRAMEREL891#define IMAGEHLP_SYMBOL_INFO_PARAMETER SYMF_PARAMETER892#define IMAGEHLP_SYMBOL_INFO_LOCAL SYMF_LOCAL893#define IMAGEHLP_SYMBOL_INFO_CONSTANT SYMF_CONSTANT894#define IMAGEHLP_SYMBOL_FUNCTION SYMF_FUNCTION895#define IMAGEHLP_SYMBOL_VIRTUAL SYMF_VIRTUAL896#define IMAGEHLP_SYMBOL_THUNK SYMF_THUNK897#define IMAGEHLP_SYMBOL_INFO_TLSRELATIVE SYMF_TLSREL898899#include <pshpack4.h>900901#define MINIDUMP_SIGNATURE ('PMDM')902#define MINIDUMP_VERSION (42899)903typedef DWORD RVA;904typedef ULONG64 RVA64;905906typedef struct _MINIDUMP_LOCATION_DESCRIPTOR {907ULONG32 DataSize;908RVA Rva;909} MINIDUMP_LOCATION_DESCRIPTOR;910911typedef struct _MINIDUMP_LOCATION_DESCRIPTOR64 {912ULONG64 DataSize;913RVA64 Rva;914} MINIDUMP_LOCATION_DESCRIPTOR64;915916typedef struct _MINIDUMP_MEMORY_DESCRIPTOR {917ULONG64 StartOfMemoryRange;918MINIDUMP_LOCATION_DESCRIPTOR Memory;919} MINIDUMP_MEMORY_DESCRIPTOR,*PMINIDUMP_MEMORY_DESCRIPTOR;920921typedef struct _MINIDUMP_MEMORY_DESCRIPTOR64 {922ULONG64 StartOfMemoryRange;923ULONG64 DataSize;924} MINIDUMP_MEMORY_DESCRIPTOR64,*PMINIDUMP_MEMORY_DESCRIPTOR64;925926typedef struct _MINIDUMP_HEADER {927ULONG32 Signature;928ULONG32 Version;929ULONG32 NumberOfStreams;930RVA StreamDirectoryRva;931ULONG32 CheckSum;932union {933ULONG32 Reserved;934ULONG32 TimeDateStamp;935} DUMMYUNIONNAME;936ULONG64 Flags;937} MINIDUMP_HEADER,*PMINIDUMP_HEADER;938939typedef struct _MINIDUMP_DIRECTORY {940ULONG32 StreamType;941MINIDUMP_LOCATION_DESCRIPTOR Location;942} MINIDUMP_DIRECTORY,*PMINIDUMP_DIRECTORY;943944typedef struct _MINIDUMP_STRING {945ULONG32 Length;946WCHAR Buffer [0];947} MINIDUMP_STRING,*PMINIDUMP_STRING;948949typedef enum _MINIDUMP_STREAM_TYPE {950UnusedStream = 0,ReservedStream0 = 1,ReservedStream1 = 2,ThreadListStream = 3,ModuleListStream = 4,MemoryListStream = 5,951ExceptionStream = 6,SystemInfoStream = 7,ThreadExListStream = 8,Memory64ListStream = 9,CommentStreamA = 10,CommentStreamW = 11,952HandleDataStream = 12,FunctionTableStream = 13,UnloadedModuleListStream = 14,MiscInfoStream = 15,LastReservedStream = 0xffff953} MINIDUMP_STREAM_TYPE;954955typedef union _CPU_INFORMATION {956struct {957ULONG32 VendorId [3 ];958ULONG32 VersionInformation;959ULONG32 FeatureInformation;960ULONG32 AMDExtendedCpuFeatures;961} X86CpuInfo;962struct {963ULONG64 ProcessorFeatures [2 ];964} OtherCpuInfo;965} CPU_INFORMATION,*PCPU_INFORMATION;966967typedef struct _MINIDUMP_SYSTEM_INFO {968USHORT ProcessorArchitecture;969USHORT ProcessorLevel;970USHORT ProcessorRevision;971union {972USHORT Reserved0;973struct {974UCHAR NumberOfProcessors;975UCHAR ProductType;976} DUMMYSTRUCTNAME;977} DUMMYUNIONNAME;978ULONG32 MajorVersion;979ULONG32 MinorVersion;980ULONG32 BuildNumber;981ULONG32 PlatformId;982RVA CSDVersionRva;983union {984ULONG32 Reserved1;985struct {986USHORT SuiteMask;987USHORT Reserved2;988} DUMMYSTRUCTNAME;989} DUMMYUNIONNAME1;990CPU_INFORMATION Cpu;991} MINIDUMP_SYSTEM_INFO,*PMINIDUMP_SYSTEM_INFO;992993C_ASSERT (sizeof (((PPROCESS_INFORMATION)0)->dwThreadId)==4);994995typedef struct _MINIDUMP_THREAD {996ULONG32 ThreadId;997ULONG32 SuspendCount;998ULONG32 PriorityClass;999ULONG32 Priority;1000ULONG64 Teb;1001MINIDUMP_MEMORY_DESCRIPTOR Stack;1002MINIDUMP_LOCATION_DESCRIPTOR ThreadContext;1003} MINIDUMP_THREAD,*PMINIDUMP_THREAD;10041005typedef struct _MINIDUMP_THREAD_LIST {1006ULONG32 NumberOfThreads;1007MINIDUMP_THREAD Threads [0];1008} MINIDUMP_THREAD_LIST,*PMINIDUMP_THREAD_LIST;10091010typedef struct _MINIDUMP_THREAD_EX {1011ULONG32 ThreadId;1012ULONG32 SuspendCount;1013ULONG32 PriorityClass;1014ULONG32 Priority;1015ULONG64 Teb;1016MINIDUMP_MEMORY_DESCRIPTOR Stack;1017MINIDUMP_LOCATION_DESCRIPTOR ThreadContext;1018MINIDUMP_MEMORY_DESCRIPTOR BackingStore;1019} MINIDUMP_THREAD_EX,*PMINIDUMP_THREAD_EX;10201021typedef struct _MINIDUMP_THREAD_EX_LIST {1022ULONG32 NumberOfThreads;1023MINIDUMP_THREAD_EX Threads [0];1024} MINIDUMP_THREAD_EX_LIST,*PMINIDUMP_THREAD_EX_LIST;10251026typedef struct _MINIDUMP_EXCEPTION {1027ULONG32 ExceptionCode;1028ULONG32 ExceptionFlags;1029ULONG64 ExceptionRecord;1030ULONG64 ExceptionAddress;1031ULONG32 NumberParameters;1032ULONG32 __unusedAlignment;1033ULONG64 ExceptionInformation [EXCEPTION_MAXIMUM_PARAMETERS ];1034} MINIDUMP_EXCEPTION,*PMINIDUMP_EXCEPTION;10351036typedef struct MINIDUMP_EXCEPTION_STREAM {1037ULONG32 ThreadId;1038ULONG32 __alignment;1039MINIDUMP_EXCEPTION ExceptionRecord;1040MINIDUMP_LOCATION_DESCRIPTOR ThreadContext;1041} MINIDUMP_EXCEPTION_STREAM,*PMINIDUMP_EXCEPTION_STREAM;10421043typedef struct _MINIDUMP_MODULE {1044ULONG64 BaseOfImage;1045ULONG32 SizeOfImage;1046ULONG32 CheckSum;1047ULONG32 TimeDateStamp;1048RVA ModuleNameRva;1049VS_FIXEDFILEINFO VersionInfo;1050MINIDUMP_LOCATION_DESCRIPTOR CvRecord;1051MINIDUMP_LOCATION_DESCRIPTOR MiscRecord;1052ULONG64 Reserved0;1053ULONG64 Reserved1;1054} MINIDUMP_MODULE,*PMINIDUMP_MODULE;10551056typedef struct _MINIDUMP_MODULE_LIST {1057ULONG32 NumberOfModules;1058MINIDUMP_MODULE Modules [0 ];1059} MINIDUMP_MODULE_LIST,*PMINIDUMP_MODULE_LIST;10601061typedef struct _MINIDUMP_MEMORY_LIST {1062ULONG32 NumberOfMemoryRanges;1063MINIDUMP_MEMORY_DESCRIPTOR MemoryRanges [0];1064} MINIDUMP_MEMORY_LIST,*PMINIDUMP_MEMORY_LIST;10651066typedef struct _MINIDUMP_MEMORY64_LIST {1067ULONG64 NumberOfMemoryRanges;1068RVA64 BaseRva;1069MINIDUMP_MEMORY_DESCRIPTOR64 MemoryRanges [0];1070} MINIDUMP_MEMORY64_LIST,*PMINIDUMP_MEMORY64_LIST;10711072typedef struct _MINIDUMP_EXCEPTION_INFORMATION {1073DWORD ThreadId;1074PEXCEPTION_POINTERS ExceptionPointers;1075BOOL ClientPointers;1076} MINIDUMP_EXCEPTION_INFORMATION,*PMINIDUMP_EXCEPTION_INFORMATION;10771078typedef struct _MINIDUMP_EXCEPTION_INFORMATION64 {1079DWORD ThreadId;1080ULONG64 ExceptionRecord;1081ULONG64 ContextRecord;1082BOOL ClientPointers;1083} MINIDUMP_EXCEPTION_INFORMATION64,*PMINIDUMP_EXCEPTION_INFORMATION64;10841085typedef struct _MINIDUMP_HANDLE_DESCRIPTOR {1086ULONG64 Handle;1087RVA TypeNameRva;1088RVA ObjectNameRva;1089ULONG32 Attributes;1090ULONG32 GrantedAccess;1091ULONG32 HandleCount;1092ULONG32 PointerCount;1093} MINIDUMP_HANDLE_DESCRIPTOR,*PMINIDUMP_HANDLE_DESCRIPTOR;10941095typedef struct _MINIDUMP_HANDLE_DATA_STREAM {1096ULONG32 SizeOfHeader;1097ULONG32 SizeOfDescriptor;1098ULONG32 NumberOfDescriptors;1099ULONG32 Reserved;1100} MINIDUMP_HANDLE_DATA_STREAM,*PMINIDUMP_HANDLE_DATA_STREAM;11011102typedef struct _MINIDUMP_FUNCTION_TABLE_DESCRIPTOR {1103ULONG64 MinimumAddress;1104ULONG64 MaximumAddress;1105ULONG64 BaseAddress;1106ULONG32 EntryCount;1107ULONG32 SizeOfAlignPad;1108} MINIDUMP_FUNCTION_TABLE_DESCRIPTOR,*PMINIDUMP_FUNCTION_TABLE_DESCRIPTOR;11091110typedef struct _MINIDUMP_FUNCTION_TABLE_STREAM {1111ULONG32 SizeOfHeader;1112ULONG32 SizeOfDescriptor;1113ULONG32 SizeOfNativeDescriptor;1114ULONG32 SizeOfFunctionEntry;1115ULONG32 NumberOfDescriptors;1116ULONG32 SizeOfAlignPad;1117} MINIDUMP_FUNCTION_TABLE_STREAM,*PMINIDUMP_FUNCTION_TABLE_STREAM;11181119typedef struct _MINIDUMP_UNLOADED_MODULE {1120ULONG64 BaseOfImage;1121ULONG32 SizeOfImage;1122ULONG32 CheckSum;1123ULONG32 TimeDateStamp;1124RVA ModuleNameRva;1125} MINIDUMP_UNLOADED_MODULE,*PMINIDUMP_UNLOADED_MODULE;11261127typedef struct _MINIDUMP_UNLOADED_MODULE_LIST {1128ULONG32 SizeOfHeader;1129ULONG32 SizeOfEntry;1130ULONG32 NumberOfEntries;1131} MINIDUMP_UNLOADED_MODULE_LIST,*PMINIDUMP_UNLOADED_MODULE_LIST;11321133#define MINIDUMP_MISC1_PROCESS_ID 0x000000011134#define MINIDUMP_MISC1_PROCESS_TIMES 0x0000000211351136typedef struct _MINIDUMP_MISC_INFO {1137ULONG32 SizeOfInfo;1138ULONG32 Flags1;1139ULONG32 ProcessId;1140ULONG32 ProcessCreateTime;1141ULONG32 ProcessUserTime;1142ULONG32 ProcessKernelTime;1143} MINIDUMP_MISC_INFO,*PMINIDUMP_MISC_INFO;11441145typedef struct _MINIDUMP_USER_RECORD {1146ULONG32 Type;1147MINIDUMP_LOCATION_DESCRIPTOR Memory;1148} MINIDUMP_USER_RECORD,*PMINIDUMP_USER_RECORD;11491150typedef struct _MINIDUMP_USER_STREAM {1151ULONG32 Type;1152ULONG BufferSize;1153PVOID Buffer;1154} MINIDUMP_USER_STREAM,*PMINIDUMP_USER_STREAM;11551156typedef struct _MINIDUMP_USER_STREAM_INFORMATION {1157ULONG UserStreamCount;1158PMINIDUMP_USER_STREAM UserStreamArray;1159} MINIDUMP_USER_STREAM_INFORMATION,*PMINIDUMP_USER_STREAM_INFORMATION;11601161typedef enum _MINIDUMP_CALLBACK_TYPE {1162ModuleCallback,ThreadCallback,ThreadExCallback,IncludeThreadCallback,IncludeModuleCallback,MemoryCallback1163} MINIDUMP_CALLBACK_TYPE;11641165typedef struct _MINIDUMP_THREAD_CALLBACK {1166ULONG ThreadId;1167HANDLE ThreadHandle;1168CONTEXT Context;1169ULONG SizeOfContext;1170ULONG64 StackBase;1171ULONG64 StackEnd;1172} MINIDUMP_THREAD_CALLBACK,*PMINIDUMP_THREAD_CALLBACK;11731174typedef struct _MINIDUMP_THREAD_EX_CALLBACK {1175ULONG ThreadId;1176HANDLE ThreadHandle;1177CONTEXT Context;1178ULONG SizeOfContext;1179ULONG64 StackBase;1180ULONG64 StackEnd;1181ULONG64 BackingStoreBase;1182ULONG64 BackingStoreEnd;1183} MINIDUMP_THREAD_EX_CALLBACK,*PMINIDUMP_THREAD_EX_CALLBACK;11841185typedef struct _MINIDUMP_INCLUDE_THREAD_CALLBACK {1186ULONG ThreadId;1187} MINIDUMP_INCLUDE_THREAD_CALLBACK,*PMINIDUMP_INCLUDE_THREAD_CALLBACK;11881189typedef enum _THREAD_WRITE_FLAGS {1190ThreadWriteThread = 0x0001,ThreadWriteStack = 0x0002,ThreadWriteContext = 0x0004,ThreadWriteBackingStore = 0x0008,1191ThreadWriteInstructionWindow = 0x0010,ThreadWriteThreadData = 0x00201192} THREAD_WRITE_FLAGS;11931194typedef struct _MINIDUMP_MODULE_CALLBACK {1195PWCHAR FullPath;1196ULONG64 BaseOfImage;1197ULONG SizeOfImage;1198ULONG CheckSum;1199ULONG TimeDateStamp;1200VS_FIXEDFILEINFO VersionInfo;1201PVOID CvRecord;1202ULONG SizeOfCvRecord;1203PVOID MiscRecord;1204ULONG SizeOfMiscRecord;1205} MINIDUMP_MODULE_CALLBACK,*PMINIDUMP_MODULE_CALLBACK;12061207typedef struct _MINIDUMP_INCLUDE_MODULE_CALLBACK {1208ULONG64 BaseOfImage;1209} MINIDUMP_INCLUDE_MODULE_CALLBACK,*PMINIDUMP_INCLUDE_MODULE_CALLBACK;12101211typedef enum _MODULE_WRITE_FLAGS {1212ModuleWriteModule = 0x0001,ModuleWriteDataSeg = 0x0002,ModuleWriteMiscRecord = 0x0004,ModuleWriteCvRecord = 0x0008,1213ModuleReferencedByMemory = 0x00101214} MODULE_WRITE_FLAGS;12151216typedef struct _MINIDUMP_CALLBACK_INPUT {1217ULONG ProcessId;1218HANDLE ProcessHandle;1219ULONG CallbackType;1220union {1221MINIDUMP_THREAD_CALLBACK Thread;1222MINIDUMP_THREAD_EX_CALLBACK ThreadEx;1223MINIDUMP_MODULE_CALLBACK Module;1224MINIDUMP_INCLUDE_THREAD_CALLBACK IncludeThread;1225MINIDUMP_INCLUDE_MODULE_CALLBACK IncludeModule;1226} DUMMYUNIONNAME;1227} MINIDUMP_CALLBACK_INPUT,*PMINIDUMP_CALLBACK_INPUT;12281229typedef struct _MINIDUMP_CALLBACK_OUTPUT {1230union {1231ULONG ModuleWriteFlags;1232ULONG ThreadWriteFlags;1233struct {1234ULONG64 MemoryBase;1235ULONG MemorySize;1236} DUMMYSTRUCTNAME;1237} DUMMYUNIONNAME;1238} MINIDUMP_CALLBACK_OUTPUT,*PMINIDUMP_CALLBACK_OUTPUT;12391240typedef enum _MINIDUMP_TYPE {1241MiniDumpNormal = 0x0000,MiniDumpWithDataSegs = 0x0001,MiniDumpWithFullMemory = 0x0002,MiniDumpWithHandleData = 0x0004,1242MiniDumpFilterMemory = 0x0008,MiniDumpScanMemory = 0x0010,MiniDumpWithUnloadedModules = 0x0020,MiniDumpWithIndirectlyReferencedMemory = 0x0040,1243MiniDumpFilterModulePaths = 0x0080,MiniDumpWithProcessThreadData = 0x0100,MiniDumpWithPrivateReadWriteMemory = 0x0200,1244MiniDumpWithoutOptionalData = 0x04001245} MINIDUMP_TYPE;12461247typedef BOOL (WINAPI *MINIDUMP_CALLBACK_ROUTINE)(PVOID CallbackParam,CONST PMINIDUMP_CALLBACK_INPUT CallbackInput,PMINIDUMP_CALLBACK_OUTPUT CallbackOutput);12481249typedef struct _MINIDUMP_CALLBACK_INFORMATION {1250MINIDUMP_CALLBACK_ROUTINE CallbackRoutine;1251PVOID CallbackParam;1252} MINIDUMP_CALLBACK_INFORMATION,*PMINIDUMP_CALLBACK_INFORMATION;12531254#define RVA_TO_ADDR(Mapping,Rva) ((PVOID)(((ULONG_PTR) (Mapping)) + (Rva)))12551256BOOL 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);1257BOOL WINAPI MiniDumpReadDumpStream(PVOID BaseOfDump,ULONG StreamNumber,PMINIDUMP_DIRECTORY *Dir,PVOID *StreamPointer,ULONG *StreamSize);12581259#include <poppack.h>12601261#ifdef __cplusplus1262}1263#endif1264#endif126512661267