1*61046927SAndroid Build Coastguard Worker /** 2*61046927SAndroid Build Coastguard Worker * This file has no copyright assigned and is placed in the Public Domain. 3*61046927SAndroid Build Coastguard Worker * This file is part of the w64 mingw-runtime package. 4*61046927SAndroid Build Coastguard Worker * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5*61046927SAndroid Build Coastguard Worker */ 6*61046927SAndroid Build Coastguard Worker #ifndef _DBGHELP_ 7*61046927SAndroid Build Coastguard Worker #define _DBGHELP_ 8*61046927SAndroid Build Coastguard Worker 9*61046927SAndroid Build Coastguard Worker #ifdef _WIN64 10*61046927SAndroid Build Coastguard Worker #ifndef _IMAGEHLP64 11*61046927SAndroid Build Coastguard Worker #define _IMAGEHLP64 12*61046927SAndroid Build Coastguard Worker #endif 13*61046927SAndroid Build Coastguard Worker #endif 14*61046927SAndroid Build Coastguard Worker 15*61046927SAndroid Build Coastguard Worker #ifdef __cplusplus 16*61046927SAndroid Build Coastguard Worker extern "C" { 17*61046927SAndroid Build Coastguard Worker #endif 18*61046927SAndroid Build Coastguard Worker 19*61046927SAndroid Build Coastguard Worker #define IMAGEAPI DECLSPEC_IMPORT WINAPI 20*61046927SAndroid Build Coastguard Worker #define DBHLP_DEPRECIATED __declspec(deprecated) 21*61046927SAndroid Build Coastguard Worker 22*61046927SAndroid Build Coastguard Worker #define DBHLPAPI IMAGEAPI 23*61046927SAndroid Build Coastguard Worker 24*61046927SAndroid Build Coastguard Worker #define IMAGE_SEPARATION (64*1024) 25*61046927SAndroid Build Coastguard Worker 26*61046927SAndroid Build Coastguard Worker typedef struct _LOADED_IMAGE { 27*61046927SAndroid Build Coastguard Worker PSTR ModuleName; 28*61046927SAndroid Build Coastguard Worker HANDLE hFile; 29*61046927SAndroid Build Coastguard Worker PUCHAR MappedAddress; 30*61046927SAndroid Build Coastguard Worker #ifdef _IMAGEHLP64 31*61046927SAndroid Build Coastguard Worker PIMAGE_NT_HEADERS64 FileHeader; 32*61046927SAndroid Build Coastguard Worker #else 33*61046927SAndroid Build Coastguard Worker PIMAGE_NT_HEADERS32 FileHeader; 34*61046927SAndroid Build Coastguard Worker #endif 35*61046927SAndroid Build Coastguard Worker PIMAGE_SECTION_HEADER LastRvaSection; 36*61046927SAndroid Build Coastguard Worker ULONG NumberOfSections; 37*61046927SAndroid Build Coastguard Worker PIMAGE_SECTION_HEADER Sections; 38*61046927SAndroid Build Coastguard Worker ULONG Characteristics; 39*61046927SAndroid Build Coastguard Worker BOOLEAN fSystemImage; 40*61046927SAndroid Build Coastguard Worker BOOLEAN fDOSImage; 41*61046927SAndroid Build Coastguard Worker LIST_ENTRY Links; 42*61046927SAndroid Build Coastguard Worker ULONG SizeOfImage; 43*61046927SAndroid Build Coastguard Worker } LOADED_IMAGE,*PLOADED_IMAGE; 44*61046927SAndroid Build Coastguard Worker 45*61046927SAndroid Build Coastguard Worker #define MAX_SYM_NAME 2000 46*61046927SAndroid Build Coastguard Worker 47*61046927SAndroid Build Coastguard Worker typedef BOOL (CALLBACK *PFIND_DEBUG_FILE_CALLBACK)(HANDLE FileHandle,PSTR FileName,PVOID CallerData); 48*61046927SAndroid Build Coastguard Worker typedef BOOL (CALLBACK *PFINDFILEINPATHCALLBACK)(PSTR filename,PVOID context); 49*61046927SAndroid Build Coastguard Worker typedef BOOL (CALLBACK *PFIND_EXE_FILE_CALLBACK)(HANDLE FileHandle,PSTR FileName,PVOID CallerData); 50*61046927SAndroid Build Coastguard Worker 51*61046927SAndroid Build Coastguard Worker typedef BOOL (WINAPI *PSYMBOLSERVERPROC)(LPCSTR,LPCSTR,PVOID,DWORD,DWORD,LPSTR); 52*61046927SAndroid Build Coastguard Worker typedef BOOL (WINAPI *PSYMBOLSERVEROPENPROC)(VOID); 53*61046927SAndroid Build Coastguard Worker typedef BOOL (WINAPI *PSYMBOLSERVERCLOSEPROC)(VOID); 54*61046927SAndroid Build Coastguard Worker typedef BOOL (WINAPI *PSYMBOLSERVERSETOPTIONSPROC)(UINT_PTR,ULONG64); 55*61046927SAndroid Build Coastguard Worker typedef BOOL (CALLBACK WINAPI *PSYMBOLSERVERCALLBACKPROC)(UINT_PTR action,ULONG64 data,ULONG64 context); 56*61046927SAndroid Build Coastguard Worker typedef UINT_PTR (WINAPI *PSYMBOLSERVERGETOPTIONSPROC)(); 57*61046927SAndroid Build Coastguard Worker typedef BOOL (WINAPI *PSYMBOLSERVERPINGPROC)(LPCSTR); 58*61046927SAndroid Build Coastguard Worker 59*61046927SAndroid Build Coastguard Worker HANDLE IMAGEAPI FindDebugInfoFile(PSTR FileName,PSTR SymbolPath,PSTR DebugFilePath); 60*61046927SAndroid Build Coastguard Worker HANDLE IMAGEAPI FindDebugInfoFileEx(PSTR FileName,PSTR SymbolPath,PSTR DebugFilePath,PFIND_DEBUG_FILE_CALLBACK Callback,PVOID CallerData); 61*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymFindFileInPath(HANDLE hprocess,LPSTR SearchPath,LPSTR FileName,PVOID id,DWORD two,DWORD three,DWORD flags,LPSTR FoundFile,PFINDFILEINPATHCALLBACK callback,PVOID context); 62*61046927SAndroid Build Coastguard Worker HANDLE IMAGEAPI FindExecutableImage(PSTR FileName,PSTR SymbolPath,PSTR ImageFilePath); 63*61046927SAndroid Build Coastguard Worker HANDLE IMAGEAPI FindExecutableImageEx(PSTR FileName,PSTR SymbolPath,PSTR ImageFilePath,PFIND_EXE_FILE_CALLBACK Callback,PVOID CallerData); 64*61046927SAndroid Build Coastguard Worker PIMAGE_NT_HEADERS IMAGEAPI ImageNtHeader(PVOID Base); 65*61046927SAndroid Build Coastguard Worker PVOID IMAGEAPI ImageDirectoryEntryToDataEx(PVOID Base,BOOLEAN MappedAsImage,USHORT DirectoryEntry,PULONG Size,PIMAGE_SECTION_HEADER *FoundHeader); 66*61046927SAndroid Build Coastguard Worker PVOID IMAGEAPI ImageDirectoryEntryToData(PVOID Base,BOOLEAN MappedAsImage,USHORT DirectoryEntry,PULONG Size); 67*61046927SAndroid Build Coastguard Worker PIMAGE_SECTION_HEADER IMAGEAPI ImageRvaToSection(PIMAGE_NT_HEADERS NtHeaders,PVOID Base,ULONG Rva); 68*61046927SAndroid Build Coastguard Worker PVOID IMAGEAPI ImageRvaToVa(PIMAGE_NT_HEADERS NtHeaders,PVOID Base,ULONG Rva,PIMAGE_SECTION_HEADER *LastRvaSection); 69*61046927SAndroid Build Coastguard Worker 70*61046927SAndroid Build Coastguard Worker #define SSRVOPT_CALLBACK 0x0001 71*61046927SAndroid Build Coastguard Worker #define SSRVOPT_DWORD 0x0002 72*61046927SAndroid Build Coastguard Worker #define SSRVOPT_DWORDPTR 0x0004 73*61046927SAndroid Build Coastguard Worker #define SSRVOPT_GUIDPTR 0x0008 74*61046927SAndroid Build Coastguard Worker #define SSRVOPT_OLDGUIDPTR 0x0010 75*61046927SAndroid Build Coastguard Worker #define SSRVOPT_UNATTENDED 0x0020 76*61046927SAndroid Build Coastguard Worker #define SSRVOPT_NOCOPY 0x0040 77*61046927SAndroid Build Coastguard Worker #define SSRVOPT_PARENTWIN 0x0080 78*61046927SAndroid Build Coastguard Worker #define SSRVOPT_PARAMTYPE 0x0100 79*61046927SAndroid Build Coastguard Worker #define SSRVOPT_SECURE 0x0200 80*61046927SAndroid Build Coastguard Worker #define SSRVOPT_TRACE 0x0400 81*61046927SAndroid Build Coastguard Worker #define SSRVOPT_SETCONTEXT 0x0800 82*61046927SAndroid Build Coastguard Worker #define SSRVOPT_PROXY 0x1000 83*61046927SAndroid Build Coastguard Worker #define SSRVOPT_DOWNSTREAM_STORE 0x2000 84*61046927SAndroid Build Coastguard Worker #define SSRVOPT_RESET ((ULONG_PTR)-1) 85*61046927SAndroid Build Coastguard Worker 86*61046927SAndroid Build Coastguard Worker #define SSRVACTION_TRACE 1 87*61046927SAndroid Build Coastguard Worker #define SSRVACTION_QUERYCANCEL 2 88*61046927SAndroid Build Coastguard Worker #define SSRVACTION_EVENT 3 89*61046927SAndroid Build Coastguard Worker 90*61046927SAndroid Build Coastguard Worker #ifndef _WIN64 91*61046927SAndroid Build Coastguard Worker 92*61046927SAndroid Build Coastguard Worker typedef struct _IMAGE_DEBUG_INFORMATION { 93*61046927SAndroid Build Coastguard Worker LIST_ENTRY List; 94*61046927SAndroid Build Coastguard Worker DWORD ReservedSize; 95*61046927SAndroid Build Coastguard Worker PVOID ReservedMappedBase; 96*61046927SAndroid Build Coastguard Worker USHORT ReservedMachine; 97*61046927SAndroid Build Coastguard Worker USHORT ReservedCharacteristics; 98*61046927SAndroid Build Coastguard Worker DWORD ReservedCheckSum; 99*61046927SAndroid Build Coastguard Worker DWORD ImageBase; 100*61046927SAndroid Build Coastguard Worker DWORD SizeOfImage; 101*61046927SAndroid Build Coastguard Worker DWORD ReservedNumberOfSections; 102*61046927SAndroid Build Coastguard Worker PIMAGE_SECTION_HEADER ReservedSections; 103*61046927SAndroid Build Coastguard Worker DWORD ReservedExportedNamesSize; 104*61046927SAndroid Build Coastguard Worker PSTR ReservedExportedNames; 105*61046927SAndroid Build Coastguard Worker DWORD ReservedNumberOfFunctionTableEntries; 106*61046927SAndroid Build Coastguard Worker PIMAGE_FUNCTION_ENTRY ReservedFunctionTableEntries; 107*61046927SAndroid Build Coastguard Worker DWORD ReservedLowestFunctionStartingAddress; 108*61046927SAndroid Build Coastguard Worker DWORD ReservedHighestFunctionEndingAddress; 109*61046927SAndroid Build Coastguard Worker DWORD ReservedNumberOfFpoTableEntries; 110*61046927SAndroid Build Coastguard Worker PFPO_DATA ReservedFpoTableEntries; 111*61046927SAndroid Build Coastguard Worker DWORD SizeOfCoffSymbols; 112*61046927SAndroid Build Coastguard Worker PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols; 113*61046927SAndroid Build Coastguard Worker DWORD ReservedSizeOfCodeViewSymbols; 114*61046927SAndroid Build Coastguard Worker PVOID ReservedCodeViewSymbols; 115*61046927SAndroid Build Coastguard Worker PSTR ImageFilePath; 116*61046927SAndroid Build Coastguard Worker PSTR ImageFileName; 117*61046927SAndroid Build Coastguard Worker PSTR ReservedDebugFilePath; 118*61046927SAndroid Build Coastguard Worker DWORD ReservedTimeDateStamp; 119*61046927SAndroid Build Coastguard Worker BOOL ReservedRomImage; 120*61046927SAndroid Build Coastguard Worker PIMAGE_DEBUG_DIRECTORY ReservedDebugDirectory; 121*61046927SAndroid Build Coastguard Worker DWORD ReservedNumberOfDebugDirectories; 122*61046927SAndroid Build Coastguard Worker DWORD ReservedOriginalFunctionTableBaseAddress; 123*61046927SAndroid Build Coastguard Worker DWORD Reserved[2 ]; 124*61046927SAndroid Build Coastguard Worker } IMAGE_DEBUG_INFORMATION,*PIMAGE_DEBUG_INFORMATION; 125*61046927SAndroid Build Coastguard Worker 126*61046927SAndroid Build Coastguard Worker PIMAGE_DEBUG_INFORMATION IMAGEAPI MapDebugInformation(HANDLE FileHandle,PSTR FileName,PSTR SymbolPath,DWORD ImageBase); 127*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION DebugInfo); 128*61046927SAndroid Build Coastguard Worker #endif 129*61046927SAndroid Build Coastguard Worker 130*61046927SAndroid Build Coastguard Worker typedef BOOL (CALLBACK *PENUMDIRTREE_CALLBACK)(LPCSTR FilePath,PVOID CallerData); 131*61046927SAndroid Build Coastguard Worker 132*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SearchTreeForFile(PSTR RootPath,PSTR InputPathName,PSTR OutputPathBuffer); 133*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI EnumDirTree(HANDLE hProcess,PSTR RootPath,PSTR InputPathName,PSTR OutputPathBuffer,PENUMDIRTREE_CALLBACK Callback,PVOID CallbackData); 134*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI MakeSureDirectoryPathExists(PCSTR DirPath); 135*61046927SAndroid Build Coastguard Worker 136*61046927SAndroid Build Coastguard Worker #define UNDNAME_COMPLETE (0x0000) 137*61046927SAndroid Build Coastguard Worker #define UNDNAME_NO_LEADING_UNDERSCORES (0x0001) 138*61046927SAndroid Build Coastguard Worker #define UNDNAME_NO_MS_KEYWORDS (0x0002) 139*61046927SAndroid Build Coastguard Worker #define UNDNAME_NO_FUNCTION_RETURNS (0x0004) 140*61046927SAndroid Build Coastguard Worker #define UNDNAME_NO_ALLOCATION_MODEL (0x0008) 141*61046927SAndroid Build Coastguard Worker #define UNDNAME_NO_ALLOCATION_LANGUAGE (0x0010) 142*61046927SAndroid Build Coastguard Worker #define UNDNAME_NO_MS_THISTYPE (0x0020) 143*61046927SAndroid Build Coastguard Worker #define UNDNAME_NO_CV_THISTYPE (0x0040) 144*61046927SAndroid Build Coastguard Worker #define UNDNAME_NO_THISTYPE (0x0060) 145*61046927SAndroid Build Coastguard Worker #define UNDNAME_NO_ACCESS_SPECIFIERS (0x0080) 146*61046927SAndroid Build Coastguard Worker #define UNDNAME_NO_THROW_SIGNATURES (0x0100) 147*61046927SAndroid Build Coastguard Worker #define UNDNAME_NO_MEMBER_TYPE (0x0200) 148*61046927SAndroid Build Coastguard Worker #define UNDNAME_NO_RETURN_UDT_MODEL (0x0400) 149*61046927SAndroid Build Coastguard Worker #define UNDNAME_32_BIT_DECODE (0x0800) 150*61046927SAndroid Build Coastguard Worker #define UNDNAME_NAME_ONLY (0x1000) 151*61046927SAndroid Build Coastguard Worker #define UNDNAME_NO_ARGUMENTS (0x2000) 152*61046927SAndroid Build Coastguard Worker #define UNDNAME_NO_SPECIAL_SYMS (0x4000) 153*61046927SAndroid Build Coastguard Worker 154*61046927SAndroid Build Coastguard Worker DWORD IMAGEAPI WINAPI UnDecorateSymbolName(PCSTR DecoratedName,PSTR UnDecoratedName,DWORD UndecoratedLength,DWORD Flags); 155*61046927SAndroid Build Coastguard Worker 156*61046927SAndroid Build Coastguard Worker #define DBHHEADER_DEBUGDIRS 0x1 157*61046927SAndroid Build Coastguard Worker 158*61046927SAndroid Build Coastguard Worker typedef struct _MODLOAD_DATA { 159*61046927SAndroid Build Coastguard Worker DWORD ssize; 160*61046927SAndroid Build Coastguard Worker DWORD ssig; 161*61046927SAndroid Build Coastguard Worker PVOID data; 162*61046927SAndroid Build Coastguard Worker DWORD size; 163*61046927SAndroid Build Coastguard Worker DWORD flags; 164*61046927SAndroid Build Coastguard Worker } MODLOAD_DATA,*PMODLOAD_DATA; 165*61046927SAndroid Build Coastguard Worker 166*61046927SAndroid Build Coastguard Worker typedef enum { 167*61046927SAndroid Build Coastguard Worker AddrMode1616,AddrMode1632,AddrModeReal,AddrModeFlat 168*61046927SAndroid Build Coastguard Worker } ADDRESS_MODE; 169*61046927SAndroid Build Coastguard Worker 170*61046927SAndroid Build Coastguard Worker typedef struct _tagADDRESS64 { 171*61046927SAndroid Build Coastguard Worker DWORD64 Offset; 172*61046927SAndroid Build Coastguard Worker WORD Segment; 173*61046927SAndroid Build Coastguard Worker ADDRESS_MODE Mode; 174*61046927SAndroid Build Coastguard Worker } ADDRESS64,*LPADDRESS64; 175*61046927SAndroid Build Coastguard Worker 176*61046927SAndroid Build Coastguard Worker #ifdef _IMAGEHLP64 177*61046927SAndroid Build Coastguard Worker #define ADDRESS ADDRESS64 178*61046927SAndroid Build Coastguard Worker #define LPADDRESS LPADDRESS64 179*61046927SAndroid Build Coastguard Worker #else 180*61046927SAndroid Build Coastguard Worker typedef struct _tagADDRESS { 181*61046927SAndroid Build Coastguard Worker DWORD Offset; 182*61046927SAndroid Build Coastguard Worker WORD Segment; 183*61046927SAndroid Build Coastguard Worker ADDRESS_MODE Mode; 184*61046927SAndroid Build Coastguard Worker } ADDRESS,*LPADDRESS; 185*61046927SAndroid Build Coastguard Worker Address32To64(LPADDRESS a32,LPADDRESS64 a64)186*61046927SAndroid Build Coastguard Worker static __inline void Address32To64(LPADDRESS a32,LPADDRESS64 a64) { 187*61046927SAndroid Build Coastguard Worker a64->Offset = (ULONG64)(LONG64)(LONG)a32->Offset; 188*61046927SAndroid Build Coastguard Worker a64->Segment = a32->Segment; 189*61046927SAndroid Build Coastguard Worker a64->Mode = a32->Mode; 190*61046927SAndroid Build Coastguard Worker } 191*61046927SAndroid Build Coastguard Worker Address64To32(LPADDRESS64 a64,LPADDRESS a32)192*61046927SAndroid Build Coastguard Worker static __inline void Address64To32(LPADDRESS64 a64,LPADDRESS a32) { 193*61046927SAndroid Build Coastguard Worker a32->Offset = (ULONG)a64->Offset; 194*61046927SAndroid Build Coastguard Worker a32->Segment = a64->Segment; 195*61046927SAndroid Build Coastguard Worker a32->Mode = a64->Mode; 196*61046927SAndroid Build Coastguard Worker } 197*61046927SAndroid Build Coastguard Worker #endif 198*61046927SAndroid Build Coastguard Worker 199*61046927SAndroid Build Coastguard Worker typedef struct _KDHELP64 { 200*61046927SAndroid Build Coastguard Worker DWORD64 Thread; 201*61046927SAndroid Build Coastguard Worker DWORD ThCallbackStack; 202*61046927SAndroid Build Coastguard Worker DWORD ThCallbackBStore; 203*61046927SAndroid Build Coastguard Worker DWORD NextCallback; 204*61046927SAndroid Build Coastguard Worker DWORD FramePointer; 205*61046927SAndroid Build Coastguard Worker DWORD64 KiCallUserMode; 206*61046927SAndroid Build Coastguard Worker DWORD64 KeUserCallbackDispatcher; 207*61046927SAndroid Build Coastguard Worker DWORD64 SystemRangeStart; 208*61046927SAndroid Build Coastguard Worker DWORD64 Reserved[8]; 209*61046927SAndroid Build Coastguard Worker } KDHELP64,*PKDHELP64; 210*61046927SAndroid Build Coastguard Worker 211*61046927SAndroid Build Coastguard Worker #ifdef _IMAGEHLP64 212*61046927SAndroid Build Coastguard Worker #define KDHELP KDHELP64 213*61046927SAndroid Build Coastguard Worker #define PKDHELP PKDHELP64 214*61046927SAndroid Build Coastguard Worker #else 215*61046927SAndroid Build Coastguard Worker typedef struct _KDHELP { 216*61046927SAndroid Build Coastguard Worker DWORD Thread; 217*61046927SAndroid Build Coastguard Worker DWORD ThCallbackStack; 218*61046927SAndroid Build Coastguard Worker DWORD NextCallback; 219*61046927SAndroid Build Coastguard Worker DWORD FramePointer; 220*61046927SAndroid Build Coastguard Worker DWORD KiCallUserMode; 221*61046927SAndroid Build Coastguard Worker DWORD KeUserCallbackDispatcher; 222*61046927SAndroid Build Coastguard Worker DWORD SystemRangeStart; 223*61046927SAndroid Build Coastguard Worker DWORD ThCallbackBStore; 224*61046927SAndroid Build Coastguard Worker DWORD Reserved[8]; 225*61046927SAndroid Build Coastguard Worker } KDHELP,*PKDHELP; 226*61046927SAndroid Build Coastguard Worker KdHelp32To64(PKDHELP p32,PKDHELP64 p64)227*61046927SAndroid Build Coastguard Worker static __inline void KdHelp32To64(PKDHELP p32,PKDHELP64 p64) { 228*61046927SAndroid Build Coastguard Worker p64->Thread = p32->Thread; 229*61046927SAndroid Build Coastguard Worker p64->ThCallbackStack = p32->ThCallbackStack; 230*61046927SAndroid Build Coastguard Worker p64->NextCallback = p32->NextCallback; 231*61046927SAndroid Build Coastguard Worker p64->FramePointer = p32->FramePointer; 232*61046927SAndroid Build Coastguard Worker p64->KiCallUserMode = p32->KiCallUserMode; 233*61046927SAndroid Build Coastguard Worker p64->KeUserCallbackDispatcher = p32->KeUserCallbackDispatcher; 234*61046927SAndroid Build Coastguard Worker p64->SystemRangeStart = p32->SystemRangeStart; 235*61046927SAndroid Build Coastguard Worker } 236*61046927SAndroid Build Coastguard Worker #endif 237*61046927SAndroid Build Coastguard Worker 238*61046927SAndroid Build Coastguard Worker typedef struct _tagSTACKFRAME64 { 239*61046927SAndroid Build Coastguard Worker ADDRESS64 AddrPC; 240*61046927SAndroid Build Coastguard Worker ADDRESS64 AddrReturn; 241*61046927SAndroid Build Coastguard Worker ADDRESS64 AddrFrame; 242*61046927SAndroid Build Coastguard Worker ADDRESS64 AddrStack; 243*61046927SAndroid Build Coastguard Worker ADDRESS64 AddrBStore; 244*61046927SAndroid Build Coastguard Worker PVOID FuncTableEntry; 245*61046927SAndroid Build Coastguard Worker DWORD64 Params[4]; 246*61046927SAndroid Build Coastguard Worker BOOL Far; 247*61046927SAndroid Build Coastguard Worker BOOL Virtual; 248*61046927SAndroid Build Coastguard Worker DWORD64 Reserved[3]; 249*61046927SAndroid Build Coastguard Worker KDHELP64 KdHelp; 250*61046927SAndroid Build Coastguard Worker } STACKFRAME64,*LPSTACKFRAME64; 251*61046927SAndroid Build Coastguard Worker 252*61046927SAndroid Build Coastguard Worker #ifdef _IMAGEHLP64 253*61046927SAndroid Build Coastguard Worker #define STACKFRAME STACKFRAME64 254*61046927SAndroid Build Coastguard Worker #define LPSTACKFRAME LPSTACKFRAME64 255*61046927SAndroid Build Coastguard Worker #else 256*61046927SAndroid Build Coastguard Worker typedef struct _tagSTACKFRAME { 257*61046927SAndroid Build Coastguard Worker ADDRESS AddrPC; 258*61046927SAndroid Build Coastguard Worker ADDRESS AddrReturn; 259*61046927SAndroid Build Coastguard Worker ADDRESS AddrFrame; 260*61046927SAndroid Build Coastguard Worker ADDRESS AddrStack; 261*61046927SAndroid Build Coastguard Worker PVOID FuncTableEntry; 262*61046927SAndroid Build Coastguard Worker DWORD Params[4]; 263*61046927SAndroid Build Coastguard Worker BOOL Far; 264*61046927SAndroid Build Coastguard Worker BOOL Virtual; 265*61046927SAndroid Build Coastguard Worker DWORD Reserved[3]; 266*61046927SAndroid Build Coastguard Worker KDHELP KdHelp; 267*61046927SAndroid Build Coastguard Worker ADDRESS AddrBStore; 268*61046927SAndroid Build Coastguard Worker } STACKFRAME,*LPSTACKFRAME; 269*61046927SAndroid Build Coastguard Worker #endif 270*61046927SAndroid Build Coastguard Worker 271*61046927SAndroid Build Coastguard Worker typedef BOOL (WINAPI *PREAD_PROCESS_MEMORY_ROUTINE64)(HANDLE hProcess,DWORD64 qwBaseAddress,PVOID lpBuffer,DWORD nSize,LPDWORD lpNumberOfBytesRead); 272*61046927SAndroid Build Coastguard Worker typedef PVOID (WINAPI *PFUNCTION_TABLE_ACCESS_ROUTINE64)(HANDLE hProcess,DWORD64 AddrBase); 273*61046927SAndroid Build Coastguard Worker typedef DWORD64 (WINAPI *PGET_MODULE_BASE_ROUTINE64)(HANDLE hProcess,DWORD64 Address); 274*61046927SAndroid Build Coastguard Worker typedef DWORD64 (WINAPI *PTRANSLATE_ADDRESS_ROUTINE64)(HANDLE hProcess,HANDLE hThread,LPADDRESS64 lpaddr); 275*61046927SAndroid Build Coastguard Worker 276*61046927SAndroid Build Coastguard Worker BOOL 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); 277*61046927SAndroid Build Coastguard Worker 278*61046927SAndroid Build Coastguard Worker #ifdef _IMAGEHLP64 279*61046927SAndroid Build Coastguard Worker #define PREAD_PROCESS_MEMORY_ROUTINE PREAD_PROCESS_MEMORY_ROUTINE64 280*61046927SAndroid Build Coastguard Worker #define PFUNCTION_TABLE_ACCESS_ROUTINE PFUNCTION_TABLE_ACCESS_ROUTINE64 281*61046927SAndroid Build Coastguard Worker #define PGET_MODULE_BASE_ROUTINE PGET_MODULE_BASE_ROUTINE64 282*61046927SAndroid Build Coastguard Worker #define PTRANSLATE_ADDRESS_ROUTINE PTRANSLATE_ADDRESS_ROUTINE64 283*61046927SAndroid Build Coastguard Worker #define StackWalk StackWalk64 284*61046927SAndroid Build Coastguard Worker #else 285*61046927SAndroid Build Coastguard Worker typedef BOOL (WINAPI *PREAD_PROCESS_MEMORY_ROUTINE)(HANDLE hProcess,DWORD lpBaseAddress,PVOID lpBuffer,DWORD nSize,PDWORD lpNumberOfBytesRead); 286*61046927SAndroid Build Coastguard Worker typedef PVOID (WINAPI *PFUNCTION_TABLE_ACCESS_ROUTINE)(HANDLE hProcess,DWORD AddrBase); 287*61046927SAndroid Build Coastguard Worker typedef DWORD (WINAPI *PGET_MODULE_BASE_ROUTINE)(HANDLE hProcess,DWORD Address); 288*61046927SAndroid Build Coastguard Worker typedef DWORD (WINAPI *PTRANSLATE_ADDRESS_ROUTINE)(HANDLE hProcess,HANDLE hThread,LPADDRESS lpaddr); 289*61046927SAndroid Build Coastguard Worker 290*61046927SAndroid Build Coastguard Worker BOOL 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); 291*61046927SAndroid Build Coastguard Worker #endif 292*61046927SAndroid Build Coastguard Worker 293*61046927SAndroid Build Coastguard Worker #define API_VERSION_NUMBER 9 294*61046927SAndroid Build Coastguard Worker 295*61046927SAndroid Build Coastguard Worker typedef struct API_VERSION { 296*61046927SAndroid Build Coastguard Worker USHORT MajorVersion; 297*61046927SAndroid Build Coastguard Worker USHORT MinorVersion; 298*61046927SAndroid Build Coastguard Worker USHORT Revision; 299*61046927SAndroid Build Coastguard Worker USHORT Reserved; 300*61046927SAndroid Build Coastguard Worker } API_VERSION,*LPAPI_VERSION; 301*61046927SAndroid Build Coastguard Worker 302*61046927SAndroid Build Coastguard Worker LPAPI_VERSION IMAGEAPI ImagehlpApiVersion(VOID); 303*61046927SAndroid Build Coastguard Worker LPAPI_VERSION IMAGEAPI ImagehlpApiVersionEx(LPAPI_VERSION AppVersion); 304*61046927SAndroid Build Coastguard Worker DWORD IMAGEAPI GetTimestampForLoadedLibrary(HMODULE Module); 305*61046927SAndroid Build Coastguard Worker 306*61046927SAndroid Build Coastguard Worker typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK64)(PSTR ModuleName,DWORD64 BaseOfDll,PVOID UserContext); 307*61046927SAndroid Build Coastguard Worker typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64)(PSTR SymbolName,DWORD64 SymbolAddress,ULONG SymbolSize,PVOID UserContext); 308*61046927SAndroid Build Coastguard Worker typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64W)(PWSTR SymbolName,DWORD64 SymbolAddress,ULONG SymbolSize,PVOID UserContext); 309*61046927SAndroid Build Coastguard Worker typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK64)(PSTR ModuleName,DWORD64 ModuleBase,ULONG ModuleSize,PVOID UserContext); 310*61046927SAndroid Build Coastguard Worker typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK64)(HANDLE hProcess,ULONG ActionCode,ULONG64 CallbackData,ULONG64 UserContext); 311*61046927SAndroid Build Coastguard Worker typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK)(HANDLE hProcess,DWORD AddrBase,PVOID UserContext); 312*61046927SAndroid Build Coastguard Worker typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK64)(HANDLE hProcess,ULONG64 AddrBase,ULONG64 UserContext); 313*61046927SAndroid Build Coastguard Worker 314*61046927SAndroid Build Coastguard Worker #ifdef _IMAGEHLP64 315*61046927SAndroid Build Coastguard Worker #define PSYM_ENUMMODULES_CALLBACK PSYM_ENUMMODULES_CALLBACK64 316*61046927SAndroid Build Coastguard Worker #define PSYM_ENUMSYMBOLS_CALLBACK PSYM_ENUMSYMBOLS_CALLBACK64 317*61046927SAndroid Build Coastguard Worker #define PSYM_ENUMSYMBOLS_CALLBACKW PSYM_ENUMSYMBOLS_CALLBACK64W 318*61046927SAndroid Build Coastguard Worker #define PENUMLOADED_MODULES_CALLBACK PENUMLOADED_MODULES_CALLBACK64 319*61046927SAndroid Build Coastguard Worker #define PSYMBOL_REGISTERED_CALLBACK PSYMBOL_REGISTERED_CALLBACK64 320*61046927SAndroid Build Coastguard Worker #define PSYMBOL_FUNCENTRY_CALLBACK PSYMBOL_FUNCENTRY_CALLBACK64 321*61046927SAndroid Build Coastguard Worker #else 322*61046927SAndroid Build Coastguard Worker typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK)(PSTR ModuleName,ULONG BaseOfDll,PVOID UserContext); 323*61046927SAndroid Build Coastguard Worker typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)(PSTR SymbolName,ULONG SymbolAddress,ULONG SymbolSize,PVOID UserContext); 324*61046927SAndroid Build Coastguard Worker typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACKW)(PWSTR SymbolName,ULONG SymbolAddress,ULONG SymbolSize,PVOID UserContext); 325*61046927SAndroid Build Coastguard Worker typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK)(PSTR ModuleName,ULONG ModuleBase,ULONG ModuleSize,PVOID UserContext); 326*61046927SAndroid Build Coastguard Worker typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK)(HANDLE hProcess,ULONG ActionCode,PVOID CallbackData,PVOID UserContext); 327*61046927SAndroid Build Coastguard Worker #endif 328*61046927SAndroid Build Coastguard Worker 329*61046927SAndroid Build Coastguard Worker #define SYMFLAG_VALUEPRESENT 0x00000001 330*61046927SAndroid Build Coastguard Worker #define SYMFLAG_REGISTER 0x00000008 331*61046927SAndroid Build Coastguard Worker #define SYMFLAG_REGREL 0x00000010 332*61046927SAndroid Build Coastguard Worker #define SYMFLAG_FRAMEREL 0x00000020 333*61046927SAndroid Build Coastguard Worker #define SYMFLAG_PARAMETER 0x00000040 334*61046927SAndroid Build Coastguard Worker #define SYMFLAG_LOCAL 0x00000080 335*61046927SAndroid Build Coastguard Worker #define SYMFLAG_CONSTANT 0x00000100 336*61046927SAndroid Build Coastguard Worker #define SYMFLAG_EXPORT 0x00000200 337*61046927SAndroid Build Coastguard Worker #define SYMFLAG_FORWARDER 0x00000400 338*61046927SAndroid Build Coastguard Worker #define SYMFLAG_FUNCTION 0x00000800 339*61046927SAndroid Build Coastguard Worker #define SYMFLAG_VIRTUAL 0x00001000 340*61046927SAndroid Build Coastguard Worker #define SYMFLAG_THUNK 0x00002000 341*61046927SAndroid Build Coastguard Worker #define SYMFLAG_TLSREL 0x00004000 342*61046927SAndroid Build Coastguard Worker 343*61046927SAndroid Build Coastguard Worker typedef enum { 344*61046927SAndroid Build Coastguard Worker SymNone = 0,SymCoff,SymCv,SymPdb,SymExport,SymDeferred,SymSym,SymDia,SymVirtual,NumSymTypes 345*61046927SAndroid Build Coastguard Worker } SYM_TYPE; 346*61046927SAndroid Build Coastguard Worker 347*61046927SAndroid Build Coastguard Worker typedef struct _IMAGEHLP_SYMBOL64 { 348*61046927SAndroid Build Coastguard Worker DWORD SizeOfStruct; 349*61046927SAndroid Build Coastguard Worker DWORD64 Address; 350*61046927SAndroid Build Coastguard Worker DWORD Size; 351*61046927SAndroid Build Coastguard Worker DWORD Flags; 352*61046927SAndroid Build Coastguard Worker DWORD MaxNameLength; 353*61046927SAndroid Build Coastguard Worker CHAR Name[1]; 354*61046927SAndroid Build Coastguard Worker } IMAGEHLP_SYMBOL64,*PIMAGEHLP_SYMBOL64; 355*61046927SAndroid Build Coastguard Worker 356*61046927SAndroid Build Coastguard Worker typedef struct _IMAGEHLP_SYMBOL64_PACKAGE { 357*61046927SAndroid Build Coastguard Worker IMAGEHLP_SYMBOL64 sym; 358*61046927SAndroid Build Coastguard Worker CHAR name[MAX_SYM_NAME + 1]; 359*61046927SAndroid Build Coastguard Worker } IMAGEHLP_SYMBOL64_PACKAGE,*PIMAGEHLP_SYMBOL64_PACKAGE; 360*61046927SAndroid Build Coastguard Worker 361*61046927SAndroid Build Coastguard Worker #ifdef _IMAGEHLP64 362*61046927SAndroid Build Coastguard Worker 363*61046927SAndroid Build Coastguard Worker #define IMAGEHLP_SYMBOL IMAGEHLP_SYMBOL64 364*61046927SAndroid Build Coastguard Worker #define PIMAGEHLP_SYMBOL PIMAGEHLP_SYMBOL64 365*61046927SAndroid Build Coastguard Worker #define IMAGEHLP_SYMBOL_PACKAGE IMAGEHLP_SYMBOL64_PACKAGE 366*61046927SAndroid Build Coastguard Worker #define PIMAGEHLP_SYMBOL_PACKAGE PIMAGEHLP_SYMBOL64_PACKAGE 367*61046927SAndroid Build Coastguard Worker #else 368*61046927SAndroid Build Coastguard Worker 369*61046927SAndroid Build Coastguard Worker typedef struct _IMAGEHLP_SYMBOL { 370*61046927SAndroid Build Coastguard Worker DWORD SizeOfStruct; 371*61046927SAndroid Build Coastguard Worker DWORD Address; 372*61046927SAndroid Build Coastguard Worker DWORD Size; 373*61046927SAndroid Build Coastguard Worker DWORD Flags; 374*61046927SAndroid Build Coastguard Worker DWORD MaxNameLength; 375*61046927SAndroid Build Coastguard Worker CHAR Name[1]; 376*61046927SAndroid Build Coastguard Worker } IMAGEHLP_SYMBOL,*PIMAGEHLP_SYMBOL; 377*61046927SAndroid Build Coastguard Worker 378*61046927SAndroid Build Coastguard Worker typedef struct _IMAGEHLP_SYMBOL_PACKAGE { 379*61046927SAndroid Build Coastguard Worker IMAGEHLP_SYMBOL sym; 380*61046927SAndroid Build Coastguard Worker CHAR name[MAX_SYM_NAME + 1]; 381*61046927SAndroid Build Coastguard Worker } IMAGEHLP_SYMBOL_PACKAGE,*PIMAGEHLP_SYMBOL_PACKAGE; 382*61046927SAndroid Build Coastguard Worker #endif 383*61046927SAndroid Build Coastguard Worker 384*61046927SAndroid Build Coastguard Worker typedef struct _IMAGEHLP_MODULE64 { 385*61046927SAndroid Build Coastguard Worker DWORD SizeOfStruct; 386*61046927SAndroid Build Coastguard Worker DWORD64 BaseOfImage; 387*61046927SAndroid Build Coastguard Worker DWORD ImageSize; 388*61046927SAndroid Build Coastguard Worker DWORD TimeDateStamp; 389*61046927SAndroid Build Coastguard Worker DWORD CheckSum; 390*61046927SAndroid Build Coastguard Worker DWORD NumSyms; 391*61046927SAndroid Build Coastguard Worker SYM_TYPE SymType; 392*61046927SAndroid Build Coastguard Worker CHAR ModuleName[32]; 393*61046927SAndroid Build Coastguard Worker CHAR ImageName[256]; 394*61046927SAndroid Build Coastguard Worker CHAR LoadedImageName[256]; 395*61046927SAndroid Build Coastguard Worker CHAR LoadedPdbName[256]; 396*61046927SAndroid Build Coastguard Worker DWORD CVSig; 397*61046927SAndroid Build Coastguard Worker CHAR CVData[MAX_PATH*3]; 398*61046927SAndroid Build Coastguard Worker DWORD PdbSig; 399*61046927SAndroid Build Coastguard Worker GUID PdbSig70; 400*61046927SAndroid Build Coastguard Worker DWORD PdbAge; 401*61046927SAndroid Build Coastguard Worker BOOL PdbUnmatched; 402*61046927SAndroid Build Coastguard Worker BOOL DbgUnmatched; 403*61046927SAndroid Build Coastguard Worker BOOL LineNumbers; 404*61046927SAndroid Build Coastguard Worker BOOL GlobalSymbols; 405*61046927SAndroid Build Coastguard Worker BOOL TypeInfo; 406*61046927SAndroid Build Coastguard Worker } IMAGEHLP_MODULE64,*PIMAGEHLP_MODULE64; 407*61046927SAndroid Build Coastguard Worker 408*61046927SAndroid Build Coastguard Worker typedef struct _IMAGEHLP_MODULE64W { 409*61046927SAndroid Build Coastguard Worker DWORD SizeOfStruct; 410*61046927SAndroid Build Coastguard Worker DWORD64 BaseOfImage; 411*61046927SAndroid Build Coastguard Worker DWORD ImageSize; 412*61046927SAndroid Build Coastguard Worker DWORD TimeDateStamp; 413*61046927SAndroid Build Coastguard Worker DWORD CheckSum; 414*61046927SAndroid Build Coastguard Worker DWORD NumSyms; 415*61046927SAndroid Build Coastguard Worker SYM_TYPE SymType; 416*61046927SAndroid Build Coastguard Worker WCHAR ModuleName[32]; 417*61046927SAndroid Build Coastguard Worker WCHAR ImageName[256]; 418*61046927SAndroid Build Coastguard Worker WCHAR LoadedImageName[256]; 419*61046927SAndroid Build Coastguard Worker WCHAR LoadedPdbName[256]; 420*61046927SAndroid Build Coastguard Worker DWORD CVSig; 421*61046927SAndroid Build Coastguard Worker WCHAR CVData[MAX_PATH*3]; 422*61046927SAndroid Build Coastguard Worker DWORD PdbSig; 423*61046927SAndroid Build Coastguard Worker GUID PdbSig70; 424*61046927SAndroid Build Coastguard Worker DWORD PdbAge; 425*61046927SAndroid Build Coastguard Worker BOOL PdbUnmatched; 426*61046927SAndroid Build Coastguard Worker BOOL DbgUnmatched; 427*61046927SAndroid Build Coastguard Worker BOOL LineNumbers; 428*61046927SAndroid Build Coastguard Worker BOOL GlobalSymbols; 429*61046927SAndroid Build Coastguard Worker BOOL TypeInfo; 430*61046927SAndroid Build Coastguard Worker } IMAGEHLP_MODULEW64,*PIMAGEHLP_MODULEW64; 431*61046927SAndroid Build Coastguard Worker 432*61046927SAndroid Build Coastguard Worker #ifdef _IMAGEHLP64 433*61046927SAndroid Build Coastguard Worker #define IMAGEHLP_MODULE IMAGEHLP_MODULE64 434*61046927SAndroid Build Coastguard Worker #define PIMAGEHLP_MODULE PIMAGEHLP_MODULE64 435*61046927SAndroid Build Coastguard Worker #define IMAGEHLP_MODULEW IMAGEHLP_MODULEW64 436*61046927SAndroid Build Coastguard Worker #define PIMAGEHLP_MODULEW PIMAGEHLP_MODULEW64 437*61046927SAndroid Build Coastguard Worker #else 438*61046927SAndroid Build Coastguard Worker typedef struct _IMAGEHLP_MODULE { 439*61046927SAndroid Build Coastguard Worker DWORD SizeOfStruct; 440*61046927SAndroid Build Coastguard Worker DWORD BaseOfImage; 441*61046927SAndroid Build Coastguard Worker DWORD ImageSize; 442*61046927SAndroid Build Coastguard Worker DWORD TimeDateStamp; 443*61046927SAndroid Build Coastguard Worker DWORD CheckSum; 444*61046927SAndroid Build Coastguard Worker DWORD NumSyms; 445*61046927SAndroid Build Coastguard Worker SYM_TYPE SymType; 446*61046927SAndroid Build Coastguard Worker CHAR ModuleName[32]; 447*61046927SAndroid Build Coastguard Worker CHAR ImageName[256]; 448*61046927SAndroid Build Coastguard Worker CHAR LoadedImageName[256]; 449*61046927SAndroid Build Coastguard Worker } IMAGEHLP_MODULE,*PIMAGEHLP_MODULE; 450*61046927SAndroid Build Coastguard Worker 451*61046927SAndroid Build Coastguard Worker typedef struct _IMAGEHLP_MODULEW { 452*61046927SAndroid Build Coastguard Worker DWORD SizeOfStruct; 453*61046927SAndroid Build Coastguard Worker DWORD BaseOfImage; 454*61046927SAndroid Build Coastguard Worker DWORD ImageSize; 455*61046927SAndroid Build Coastguard Worker DWORD TimeDateStamp; 456*61046927SAndroid Build Coastguard Worker DWORD CheckSum; 457*61046927SAndroid Build Coastguard Worker DWORD NumSyms; 458*61046927SAndroid Build Coastguard Worker SYM_TYPE SymType; 459*61046927SAndroid Build Coastguard Worker WCHAR ModuleName[32]; 460*61046927SAndroid Build Coastguard Worker WCHAR ImageName[256]; 461*61046927SAndroid Build Coastguard Worker WCHAR LoadedImageName[256]; 462*61046927SAndroid Build Coastguard Worker } IMAGEHLP_MODULEW,*PIMAGEHLP_MODULEW; 463*61046927SAndroid Build Coastguard Worker #endif 464*61046927SAndroid Build Coastguard Worker 465*61046927SAndroid Build Coastguard Worker typedef struct _IMAGEHLP_LINE64 { 466*61046927SAndroid Build Coastguard Worker DWORD SizeOfStruct; 467*61046927SAndroid Build Coastguard Worker PVOID Key; 468*61046927SAndroid Build Coastguard Worker DWORD LineNumber; 469*61046927SAndroid Build Coastguard Worker PCHAR FileName; 470*61046927SAndroid Build Coastguard Worker DWORD64 Address; 471*61046927SAndroid Build Coastguard Worker } IMAGEHLP_LINE64,*PIMAGEHLP_LINE64; 472*61046927SAndroid Build Coastguard Worker 473*61046927SAndroid Build Coastguard Worker #ifdef _IMAGEHLP64 474*61046927SAndroid Build Coastguard Worker #define IMAGEHLP_LINE IMAGEHLP_LINE64 475*61046927SAndroid Build Coastguard Worker #define PIMAGEHLP_LINE PIMAGEHLP_LINE64 476*61046927SAndroid Build Coastguard Worker #else 477*61046927SAndroid Build Coastguard Worker typedef struct _IMAGEHLP_LINE { 478*61046927SAndroid Build Coastguard Worker DWORD SizeOfStruct; 479*61046927SAndroid Build Coastguard Worker PVOID Key; 480*61046927SAndroid Build Coastguard Worker DWORD LineNumber; 481*61046927SAndroid Build Coastguard Worker PCHAR FileName; 482*61046927SAndroid Build Coastguard Worker DWORD Address; 483*61046927SAndroid Build Coastguard Worker } IMAGEHLP_LINE,*PIMAGEHLP_LINE; 484*61046927SAndroid Build Coastguard Worker #endif 485*61046927SAndroid Build Coastguard Worker 486*61046927SAndroid Build Coastguard Worker typedef struct _SOURCEFILE { 487*61046927SAndroid Build Coastguard Worker DWORD64 ModBase; 488*61046927SAndroid Build Coastguard Worker PCHAR FileName; 489*61046927SAndroid Build Coastguard Worker } SOURCEFILE,*PSOURCEFILE; 490*61046927SAndroid Build Coastguard Worker 491*61046927SAndroid Build Coastguard Worker #define CBA_DEFERRED_SYMBOL_LOAD_START 0x00000001 492*61046927SAndroid Build Coastguard Worker #define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE 0x00000002 493*61046927SAndroid Build Coastguard Worker #define CBA_DEFERRED_SYMBOL_LOAD_FAILURE 0x00000003 494*61046927SAndroid Build Coastguard Worker #define CBA_SYMBOLS_UNLOADED 0x00000004 495*61046927SAndroid Build Coastguard Worker #define CBA_DUPLICATE_SYMBOL 0x00000005 496*61046927SAndroid Build Coastguard Worker #define CBA_READ_MEMORY 0x00000006 497*61046927SAndroid Build Coastguard Worker #define CBA_DEFERRED_SYMBOL_LOAD_CANCEL 0x00000007 498*61046927SAndroid Build Coastguard Worker #define CBA_SET_OPTIONS 0x00000008 499*61046927SAndroid Build Coastguard Worker #define CBA_EVENT 0x00000010 500*61046927SAndroid Build Coastguard Worker #define CBA_DEFERRED_SYMBOL_LOAD_PARTIAL 0x00000020 501*61046927SAndroid Build Coastguard Worker #define CBA_DEBUG_INFO 0x10000000 502*61046927SAndroid Build Coastguard Worker 503*61046927SAndroid Build Coastguard Worker typedef struct _IMAGEHLP_CBA_READ_MEMORY { 504*61046927SAndroid Build Coastguard Worker DWORD64 addr; 505*61046927SAndroid Build Coastguard Worker PVOID buf; 506*61046927SAndroid Build Coastguard Worker DWORD bytes; 507*61046927SAndroid Build Coastguard Worker DWORD *bytesread; 508*61046927SAndroid Build Coastguard Worker } IMAGEHLP_CBA_READ_MEMORY,*PIMAGEHLP_CBA_READ_MEMORY; 509*61046927SAndroid Build Coastguard Worker 510*61046927SAndroid Build Coastguard Worker enum { 511*61046927SAndroid Build Coastguard Worker sevInfo = 0,sevProblem,sevAttn,sevFatal,sevMax 512*61046927SAndroid Build Coastguard Worker }; 513*61046927SAndroid Build Coastguard Worker 514*61046927SAndroid Build Coastguard Worker typedef struct _IMAGEHLP_CBA_EVENT { 515*61046927SAndroid Build Coastguard Worker DWORD severity; 516*61046927SAndroid Build Coastguard Worker DWORD code; 517*61046927SAndroid Build Coastguard Worker PCHAR desc; 518*61046927SAndroid Build Coastguard Worker PVOID object; 519*61046927SAndroid Build Coastguard Worker } IMAGEHLP_CBA_EVENT,*PIMAGEHLP_CBA_EVENT; 520*61046927SAndroid Build Coastguard Worker 521*61046927SAndroid Build Coastguard Worker typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD64 { 522*61046927SAndroid Build Coastguard Worker DWORD SizeOfStruct; 523*61046927SAndroid Build Coastguard Worker DWORD64 BaseOfImage; 524*61046927SAndroid Build Coastguard Worker DWORD CheckSum; 525*61046927SAndroid Build Coastguard Worker DWORD TimeDateStamp; 526*61046927SAndroid Build Coastguard Worker CHAR FileName[MAX_PATH]; 527*61046927SAndroid Build Coastguard Worker BOOLEAN Reparse; 528*61046927SAndroid Build Coastguard Worker HANDLE hFile; 529*61046927SAndroid Build Coastguard Worker DWORD Flags; 530*61046927SAndroid Build Coastguard Worker } IMAGEHLP_DEFERRED_SYMBOL_LOAD64,*PIMAGEHLP_DEFERRED_SYMBOL_LOAD64; 531*61046927SAndroid Build Coastguard Worker 532*61046927SAndroid Build Coastguard Worker #define DSLFLAG_MISMATCHED_PDB 0x1 533*61046927SAndroid Build Coastguard Worker #define DSLFLAG_MISMATCHED_DBG 0x2 534*61046927SAndroid Build Coastguard Worker 535*61046927SAndroid Build Coastguard Worker #ifdef _IMAGEHLP64 536*61046927SAndroid Build Coastguard Worker #define IMAGEHLP_DEFERRED_SYMBOL_LOAD IMAGEHLP_DEFERRED_SYMBOL_LOAD64 537*61046927SAndroid Build Coastguard Worker #define PIMAGEHLP_DEFERRED_SYMBOL_LOAD PIMAGEHLP_DEFERRED_SYMBOL_LOAD64 538*61046927SAndroid Build Coastguard Worker #else 539*61046927SAndroid Build Coastguard Worker typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD { 540*61046927SAndroid Build Coastguard Worker DWORD SizeOfStruct; 541*61046927SAndroid Build Coastguard Worker DWORD BaseOfImage; 542*61046927SAndroid Build Coastguard Worker DWORD CheckSum; 543*61046927SAndroid Build Coastguard Worker DWORD TimeDateStamp; 544*61046927SAndroid Build Coastguard Worker CHAR FileName[MAX_PATH]; 545*61046927SAndroid Build Coastguard Worker BOOLEAN Reparse; 546*61046927SAndroid Build Coastguard Worker HANDLE hFile; 547*61046927SAndroid Build Coastguard Worker } IMAGEHLP_DEFERRED_SYMBOL_LOAD,*PIMAGEHLP_DEFERRED_SYMBOL_LOAD; 548*61046927SAndroid Build Coastguard Worker #endif 549*61046927SAndroid Build Coastguard Worker 550*61046927SAndroid Build Coastguard Worker typedef struct _IMAGEHLP_DUPLICATE_SYMBOL64 { 551*61046927SAndroid Build Coastguard Worker DWORD SizeOfStruct; 552*61046927SAndroid Build Coastguard Worker DWORD NumberOfDups; 553*61046927SAndroid Build Coastguard Worker PIMAGEHLP_SYMBOL64 Symbol; 554*61046927SAndroid Build Coastguard Worker DWORD SelectedSymbol; 555*61046927SAndroid Build Coastguard Worker } IMAGEHLP_DUPLICATE_SYMBOL64,*PIMAGEHLP_DUPLICATE_SYMBOL64; 556*61046927SAndroid Build Coastguard Worker 557*61046927SAndroid Build Coastguard Worker #ifdef _IMAGEHLP64 558*61046927SAndroid Build Coastguard Worker #define IMAGEHLP_DUPLICATE_SYMBOL IMAGEHLP_DUPLICATE_SYMBOL64 559*61046927SAndroid Build Coastguard Worker #define PIMAGEHLP_DUPLICATE_SYMBOL PIMAGEHLP_DUPLICATE_SYMBOL64 560*61046927SAndroid Build Coastguard Worker #else 561*61046927SAndroid Build Coastguard Worker typedef struct _IMAGEHLP_DUPLICATE_SYMBOL { 562*61046927SAndroid Build Coastguard Worker DWORD SizeOfStruct; 563*61046927SAndroid Build Coastguard Worker DWORD NumberOfDups; 564*61046927SAndroid Build Coastguard Worker PIMAGEHLP_SYMBOL Symbol; 565*61046927SAndroid Build Coastguard Worker DWORD SelectedSymbol; 566*61046927SAndroid Build Coastguard Worker } IMAGEHLP_DUPLICATE_SYMBOL,*PIMAGEHLP_DUPLICATE_SYMBOL; 567*61046927SAndroid Build Coastguard Worker #endif 568*61046927SAndroid Build Coastguard Worker 569*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymSetParentWindow(HWND hwnd); 570*61046927SAndroid Build Coastguard Worker PCHAR IMAGEAPI SymSetHomeDirectory(PCSTR dir); 571*61046927SAndroid Build Coastguard Worker PCHAR IMAGEAPI SymGetHomeDirectory(DWORD type,PSTR dir,size_t size); 572*61046927SAndroid Build Coastguard Worker 573*61046927SAndroid Build Coastguard Worker enum { 574*61046927SAndroid Build Coastguard Worker hdBase = 0,hdSym,hdSrc,hdMax 575*61046927SAndroid Build Coastguard Worker }; 576*61046927SAndroid Build Coastguard Worker 577*61046927SAndroid Build Coastguard Worker #define SYMOPT_CASE_INSENSITIVE 0x00000001 578*61046927SAndroid Build Coastguard Worker #define SYMOPT_UNDNAME 0x00000002 579*61046927SAndroid Build Coastguard Worker #define SYMOPT_DEFERRED_LOADS 0x00000004 580*61046927SAndroid Build Coastguard Worker #define SYMOPT_NO_CPP 0x00000008 581*61046927SAndroid Build Coastguard Worker #define SYMOPT_LOAD_LINES 0x00000010 582*61046927SAndroid Build Coastguard Worker #define SYMOPT_OMAP_FIND_NEAREST 0x00000020 583*61046927SAndroid Build Coastguard Worker #define SYMOPT_LOAD_ANYTHING 0x00000040 584*61046927SAndroid Build Coastguard Worker #define SYMOPT_IGNORE_CVREC 0x00000080 585*61046927SAndroid Build Coastguard Worker #define SYMOPT_NO_UNQUALIFIED_LOADS 0x00000100 586*61046927SAndroid Build Coastguard Worker #define SYMOPT_FAIL_CRITICAL_ERRORS 0x00000200 587*61046927SAndroid Build Coastguard Worker #define SYMOPT_EXACT_SYMBOLS 0x00000400 588*61046927SAndroid Build Coastguard Worker #define SYMOPT_ALLOW_ABSOLUTE_SYMBOLS 0x00000800 589*61046927SAndroid Build Coastguard Worker #define SYMOPT_IGNORE_NT_SYMPATH 0x00001000 590*61046927SAndroid Build Coastguard Worker #define SYMOPT_INCLUDE_32BIT_MODULES 0x00002000 591*61046927SAndroid Build Coastguard Worker #define SYMOPT_PUBLICS_ONLY 0x00004000 592*61046927SAndroid Build Coastguard Worker #define SYMOPT_NO_PUBLICS 0x00008000 593*61046927SAndroid Build Coastguard Worker #define SYMOPT_AUTO_PUBLICS 0x00010000 594*61046927SAndroid Build Coastguard Worker #define SYMOPT_NO_IMAGE_SEARCH 0x00020000 595*61046927SAndroid Build Coastguard Worker #define SYMOPT_SECURE 0x00040000 596*61046927SAndroid Build Coastguard Worker #define SYMOPT_NO_PROMPTS 0x00080000 597*61046927SAndroid Build Coastguard Worker 598*61046927SAndroid Build Coastguard Worker #define SYMOPT_DEBUG 0x80000000 599*61046927SAndroid Build Coastguard Worker 600*61046927SAndroid Build Coastguard Worker DWORD IMAGEAPI SymSetOptions(DWORD SymOptions); 601*61046927SAndroid Build Coastguard Worker DWORD IMAGEAPI SymGetOptions(VOID); 602*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymCleanup(HANDLE hProcess); 603*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymMatchString(LPSTR string,LPSTR expression,BOOL fCase); 604*61046927SAndroid Build Coastguard Worker 605*61046927SAndroid Build Coastguard Worker typedef BOOL (CALLBACK *PSYM_ENUMSOURCFILES_CALLBACK)(PSOURCEFILE pSourceFile,PVOID UserContext); 606*61046927SAndroid Build Coastguard Worker 607*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymEnumSourceFiles(HANDLE hProcess,ULONG64 ModBase,LPSTR Mask,PSYM_ENUMSOURCFILES_CALLBACK cbSrcFiles,PVOID UserContext); 608*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymEnumerateModules64(HANDLE hProcess,PSYM_ENUMMODULES_CALLBACK64 EnumModulesCallback,PVOID UserContext); 609*61046927SAndroid Build Coastguard Worker 610*61046927SAndroid Build Coastguard Worker #ifdef _IMAGEHLP64 611*61046927SAndroid Build Coastguard Worker #define SymEnumerateModules SymEnumerateModules64 612*61046927SAndroid Build Coastguard Worker #else 613*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymEnumerateModules(HANDLE hProcess,PSYM_ENUMMODULES_CALLBACK EnumModulesCallback,PVOID UserContext); 614*61046927SAndroid Build Coastguard Worker #endif 615*61046927SAndroid Build Coastguard Worker 616*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymEnumerateSymbols64(HANDLE hProcess,DWORD64 BaseOfDll,PSYM_ENUMSYMBOLS_CALLBACK64 EnumSymbolsCallback,PVOID UserContext); 617*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymEnumerateSymbolsW64(HANDLE hProcess,DWORD64 BaseOfDll,PSYM_ENUMSYMBOLS_CALLBACK64W EnumSymbolsCallback,PVOID UserContext); 618*61046927SAndroid Build Coastguard Worker 619*61046927SAndroid Build Coastguard Worker #ifdef _IMAGEHLP64 620*61046927SAndroid Build Coastguard Worker #define SymEnumerateSymbols SymEnumerateSymbols64 621*61046927SAndroid Build Coastguard Worker #define SymEnumerateSymbolsW SymEnumerateSymbolsW64 622*61046927SAndroid Build Coastguard Worker #else 623*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymEnumerateSymbols(HANDLE hProcess,DWORD BaseOfDll,PSYM_ENUMSYMBOLS_CALLBACK EnumSymbolsCallback,PVOID UserContext); 624*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymEnumerateSymbolsW(HANDLE hProcess,DWORD BaseOfDll,PSYM_ENUMSYMBOLS_CALLBACKW EnumSymbolsCallback,PVOID UserContext); 625*61046927SAndroid Build Coastguard Worker #endif 626*61046927SAndroid Build Coastguard Worker 627*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI EnumerateLoadedModules64(HANDLE hProcess,PENUMLOADED_MODULES_CALLBACK64 EnumLoadedModulesCallback,PVOID UserContext); 628*61046927SAndroid Build Coastguard Worker #ifdef _IMAGEHLP64 629*61046927SAndroid Build Coastguard Worker #define EnumerateLoadedModules EnumerateLoadedModules64 630*61046927SAndroid Build Coastguard Worker #else 631*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI EnumerateLoadedModules(HANDLE hProcess,PENUMLOADED_MODULES_CALLBACK EnumLoadedModulesCallback,PVOID UserContext); 632*61046927SAndroid Build Coastguard Worker #endif 633*61046927SAndroid Build Coastguard Worker 634*61046927SAndroid Build Coastguard Worker PVOID IMAGEAPI SymFunctionTableAccess64(HANDLE hProcess,DWORD64 AddrBase); 635*61046927SAndroid Build Coastguard Worker 636*61046927SAndroid Build Coastguard Worker #ifdef _IMAGEHLP64 637*61046927SAndroid Build Coastguard Worker #define SymFunctionTableAccess SymFunctionTableAccess64 638*61046927SAndroid Build Coastguard Worker #else 639*61046927SAndroid Build Coastguard Worker PVOID IMAGEAPI SymFunctionTableAccess(HANDLE hProcess,DWORD AddrBase); 640*61046927SAndroid Build Coastguard Worker #endif 641*61046927SAndroid Build Coastguard Worker 642*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymGetModuleInfo64(HANDLE hProcess,DWORD64 qwAddr,PIMAGEHLP_MODULE64 ModuleInfo); 643*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymGetModuleInfoW64(HANDLE hProcess,DWORD64 qwAddr,PIMAGEHLP_MODULEW64 ModuleInfo); 644*61046927SAndroid Build Coastguard Worker 645*61046927SAndroid Build Coastguard Worker #ifdef _IMAGEHLP64 646*61046927SAndroid Build Coastguard Worker #define SymGetModuleInfo SymGetModuleInfo64 647*61046927SAndroid Build Coastguard Worker #define SymGetModuleInfoW SymGetModuleInfoW64 648*61046927SAndroid Build Coastguard Worker #else 649*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymGetModuleInfo(HANDLE hProcess,DWORD dwAddr,PIMAGEHLP_MODULE ModuleInfo); 650*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymGetModuleInfoW(HANDLE hProcess,DWORD dwAddr,PIMAGEHLP_MODULEW ModuleInfo); 651*61046927SAndroid Build Coastguard Worker #endif 652*61046927SAndroid Build Coastguard Worker 653*61046927SAndroid Build Coastguard Worker DWORD64 IMAGEAPI SymGetModuleBase64(HANDLE hProcess,DWORD64 qwAddr); 654*61046927SAndroid Build Coastguard Worker 655*61046927SAndroid Build Coastguard Worker #ifdef _IMAGEHLP64 656*61046927SAndroid Build Coastguard Worker #define SymGetModuleBase SymGetModuleBase64 657*61046927SAndroid Build Coastguard Worker #else 658*61046927SAndroid Build Coastguard Worker DWORD IMAGEAPI SymGetModuleBase(HANDLE hProcess,DWORD dwAddr); 659*61046927SAndroid Build Coastguard Worker #endif 660*61046927SAndroid Build Coastguard Worker 661*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymGetSymNext64(HANDLE hProcess,PIMAGEHLP_SYMBOL64 Symbol); 662*61046927SAndroid Build Coastguard Worker 663*61046927SAndroid Build Coastguard Worker #ifdef _IMAGEHLP64 664*61046927SAndroid Build Coastguard Worker #define SymGetSymNext SymGetSymNext64 665*61046927SAndroid Build Coastguard Worker #else 666*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymGetSymNext(HANDLE hProcess,PIMAGEHLP_SYMBOL Symbol); 667*61046927SAndroid Build Coastguard Worker #endif 668*61046927SAndroid Build Coastguard Worker 669*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymGetSymPrev64(HANDLE hProcess,PIMAGEHLP_SYMBOL64 Symbol); 670*61046927SAndroid Build Coastguard Worker 671*61046927SAndroid Build Coastguard Worker #ifdef _IMAGEHLP64 672*61046927SAndroid Build Coastguard Worker #define SymGetSymPrev SymGetSymPrev64 673*61046927SAndroid Build Coastguard Worker #else 674*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymGetSymPrev(HANDLE hProcess,PIMAGEHLP_SYMBOL Symbol); 675*61046927SAndroid Build Coastguard Worker #endif 676*61046927SAndroid Build Coastguard Worker 677*61046927SAndroid Build Coastguard Worker typedef struct _SRCCODEINFO { 678*61046927SAndroid Build Coastguard Worker DWORD SizeOfStruct; 679*61046927SAndroid Build Coastguard Worker PVOID Key; 680*61046927SAndroid Build Coastguard Worker DWORD64 ModBase; 681*61046927SAndroid Build Coastguard Worker CHAR Obj[MAX_PATH + 1]; 682*61046927SAndroid Build Coastguard Worker CHAR FileName[MAX_PATH + 1]; 683*61046927SAndroid Build Coastguard Worker DWORD LineNumber; 684*61046927SAndroid Build Coastguard Worker DWORD64 Address; 685*61046927SAndroid Build Coastguard Worker } SRCCODEINFO,*PSRCCODEINFO; 686*61046927SAndroid Build Coastguard Worker 687*61046927SAndroid Build Coastguard Worker typedef BOOL (CALLBACK *PSYM_ENUMLINES_CALLBACK)(PSRCCODEINFO LineInfo,PVOID UserContext); 688*61046927SAndroid Build Coastguard Worker 689*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymEnumLines(HANDLE hProcess,ULONG64 Base,PCSTR Obj,PCSTR File,PSYM_ENUMLINES_CALLBACK EnumLinesCallback,PVOID UserContext); 690*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymGetLineFromAddr64(HANDLE hProcess,DWORD64 qwAddr,PDWORD pdwDisplacement,PIMAGEHLP_LINE64 Line64); 691*61046927SAndroid Build Coastguard Worker 692*61046927SAndroid Build Coastguard Worker #ifdef _IMAGEHLP64 693*61046927SAndroid Build Coastguard Worker #define SymGetLineFromAddr SymGetLineFromAddr64 694*61046927SAndroid Build Coastguard Worker #else 695*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymGetLineFromAddr(HANDLE hProcess,DWORD dwAddr,PDWORD pdwDisplacement,PIMAGEHLP_LINE Line); 696*61046927SAndroid Build Coastguard Worker #endif 697*61046927SAndroid Build Coastguard Worker 698*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymGetLineFromName64(HANDLE hProcess,PSTR ModuleName,PSTR FileName,DWORD dwLineNumber,PLONG plDisplacement,PIMAGEHLP_LINE64 Line); 699*61046927SAndroid Build Coastguard Worker 700*61046927SAndroid Build Coastguard Worker #ifdef _IMAGEHLP64 701*61046927SAndroid Build Coastguard Worker #define SymGetLineFromName SymGetLineFromName64 702*61046927SAndroid Build Coastguard Worker #else 703*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymGetLineFromName(HANDLE hProcess,PSTR ModuleName,PSTR FileName,DWORD dwLineNumber,PLONG plDisplacement,PIMAGEHLP_LINE Line); 704*61046927SAndroid Build Coastguard Worker #endif 705*61046927SAndroid Build Coastguard Worker 706*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymGetLineNext64(HANDLE hProcess,PIMAGEHLP_LINE64 Line); 707*61046927SAndroid Build Coastguard Worker 708*61046927SAndroid Build Coastguard Worker #ifdef _IMAGEHLP64 709*61046927SAndroid Build Coastguard Worker #define SymGetLineNext SymGetLineNext64 710*61046927SAndroid Build Coastguard Worker #else 711*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymGetLineNext(HANDLE hProcess,PIMAGEHLP_LINE Line); 712*61046927SAndroid Build Coastguard Worker #endif 713*61046927SAndroid Build Coastguard Worker 714*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymGetLinePrev64(HANDLE hProcess,PIMAGEHLP_LINE64 Line); 715*61046927SAndroid Build Coastguard Worker 716*61046927SAndroid Build Coastguard Worker #ifdef _IMAGEHLP64 717*61046927SAndroid Build Coastguard Worker #define SymGetLinePrev SymGetLinePrev64 718*61046927SAndroid Build Coastguard Worker #else 719*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymGetLinePrev(HANDLE hProcess,PIMAGEHLP_LINE Line); 720*61046927SAndroid Build Coastguard Worker #endif 721*61046927SAndroid Build Coastguard Worker 722*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymMatchFileName(PSTR FileName,PSTR Match,PSTR *FileNameStop,PSTR *MatchStop); 723*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymInitialize(HANDLE hProcess,PSTR UserSearchPath,BOOL fInvadeProcess); 724*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymGetSearchPath(HANDLE hProcess,PSTR SearchPath,DWORD SearchPathLength); 725*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymSetSearchPath(HANDLE hProcess,PSTR SearchPath); 726*61046927SAndroid Build Coastguard Worker DWORD64 IMAGEAPI SymLoadModule64(HANDLE hProcess,HANDLE hFile,PSTR ImageName,PSTR ModuleName,DWORD64 BaseOfDll,DWORD SizeOfDll); 727*61046927SAndroid Build Coastguard Worker 728*61046927SAndroid Build Coastguard Worker #define SLMFLAG_VIRTUAL 0x1 729*61046927SAndroid Build Coastguard Worker 730*61046927SAndroid Build Coastguard Worker DWORD64 IMAGEAPI SymLoadModuleEx(HANDLE hProcess,HANDLE hFile,PSTR ImageName,PSTR ModuleName,DWORD64 BaseOfDll,DWORD DllSize,PMODLOAD_DATA Data,DWORD Flags); 731*61046927SAndroid Build Coastguard Worker 732*61046927SAndroid Build Coastguard Worker #ifdef _IMAGEHLP64 733*61046927SAndroid Build Coastguard Worker #define SymLoadModule SymLoadModule64 734*61046927SAndroid Build Coastguard Worker #else 735*61046927SAndroid Build Coastguard Worker DWORD IMAGEAPI SymLoadModule(HANDLE hProcess,HANDLE hFile,PSTR ImageName,PSTR ModuleName,DWORD BaseOfDll,DWORD SizeOfDll); 736*61046927SAndroid Build Coastguard Worker #endif 737*61046927SAndroid Build Coastguard Worker 738*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymUnloadModule64(HANDLE hProcess,DWORD64 BaseOfDll); 739*61046927SAndroid Build Coastguard Worker 740*61046927SAndroid Build Coastguard Worker #ifdef _IMAGEHLP64 741*61046927SAndroid Build Coastguard Worker #define SymUnloadModule SymUnloadModule64 742*61046927SAndroid Build Coastguard Worker #else 743*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymUnloadModule(HANDLE hProcess,DWORD BaseOfDll); 744*61046927SAndroid Build Coastguard Worker #endif 745*61046927SAndroid Build Coastguard Worker 746*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymUnDName64(PIMAGEHLP_SYMBOL64 sym,PSTR UnDecName,DWORD UnDecNameLength); 747*61046927SAndroid Build Coastguard Worker 748*61046927SAndroid Build Coastguard Worker #ifdef _IMAGEHLP64 749*61046927SAndroid Build Coastguard Worker #define SymUnDName SymUnDName64 750*61046927SAndroid Build Coastguard Worker #else 751*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymUnDName(PIMAGEHLP_SYMBOL sym,PSTR UnDecName,DWORD UnDecNameLength); 752*61046927SAndroid Build Coastguard Worker #endif 753*61046927SAndroid Build Coastguard Worker 754*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymRegisterCallback64(HANDLE hProcess,PSYMBOL_REGISTERED_CALLBACK64 CallbackFunction,ULONG64 UserContext); 755*61046927SAndroid Build Coastguard Worker 756*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymRegisterFunctionEntryCallback64(HANDLE hProcess,PSYMBOL_FUNCENTRY_CALLBACK64 CallbackFunction,ULONG64 UserContext); 757*61046927SAndroid Build Coastguard Worker 758*61046927SAndroid Build Coastguard Worker #ifdef _IMAGEHLP64 759*61046927SAndroid Build Coastguard Worker #define SymRegisterCallback SymRegisterCallback64 760*61046927SAndroid Build Coastguard Worker #define SymRegisterFunctionEntryCallback SymRegisterFunctionEntryCallback64 761*61046927SAndroid Build Coastguard Worker #else 762*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymRegisterCallback(HANDLE hProcess,PSYMBOL_REGISTERED_CALLBACK CallbackFunction,PVOID UserContext); 763*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymRegisterFunctionEntryCallback(HANDLE hProcess,PSYMBOL_FUNCENTRY_CALLBACK CallbackFunction,PVOID UserContext); 764*61046927SAndroid Build Coastguard Worker #endif 765*61046927SAndroid Build Coastguard Worker 766*61046927SAndroid Build Coastguard Worker typedef struct _IMAGEHLP_SYMBOL_SRC { 767*61046927SAndroid Build Coastguard Worker DWORD sizeofstruct; 768*61046927SAndroid Build Coastguard Worker DWORD type; 769*61046927SAndroid Build Coastguard Worker char file[MAX_PATH]; 770*61046927SAndroid Build Coastguard Worker } IMAGEHLP_SYMBOL_SRC,*PIMAGEHLP_SYMBOL_SRC; 771*61046927SAndroid Build Coastguard Worker 772*61046927SAndroid Build Coastguard Worker typedef struct _MODULE_TYPE_INFO { 773*61046927SAndroid Build Coastguard Worker USHORT dataLength; 774*61046927SAndroid Build Coastguard Worker USHORT leaf; 775*61046927SAndroid Build Coastguard Worker BYTE data[1]; 776*61046927SAndroid Build Coastguard Worker } MODULE_TYPE_INFO,*PMODULE_TYPE_INFO; 777*61046927SAndroid Build Coastguard Worker 778*61046927SAndroid Build Coastguard Worker typedef struct _SYMBOL_INFO { 779*61046927SAndroid Build Coastguard Worker ULONG SizeOfStruct; 780*61046927SAndroid Build Coastguard Worker ULONG TypeIndex; 781*61046927SAndroid Build Coastguard Worker ULONG64 Reserved[2]; 782*61046927SAndroid Build Coastguard Worker ULONG info; 783*61046927SAndroid Build Coastguard Worker ULONG Size; 784*61046927SAndroid Build Coastguard Worker ULONG64 ModBase; 785*61046927SAndroid Build Coastguard Worker ULONG Flags; 786*61046927SAndroid Build Coastguard Worker ULONG64 Value; 787*61046927SAndroid Build Coastguard Worker ULONG64 Address; 788*61046927SAndroid Build Coastguard Worker ULONG Register; 789*61046927SAndroid Build Coastguard Worker ULONG Scope; 790*61046927SAndroid Build Coastguard Worker ULONG Tag; 791*61046927SAndroid Build Coastguard Worker ULONG NameLen; 792*61046927SAndroid Build Coastguard Worker ULONG MaxNameLen; 793*61046927SAndroid Build Coastguard Worker CHAR Name[1]; 794*61046927SAndroid Build Coastguard Worker } SYMBOL_INFO,*PSYMBOL_INFO; 795*61046927SAndroid Build Coastguard Worker 796*61046927SAndroid Build Coastguard Worker typedef struct _SYMBOL_INFO_PACKAGE { 797*61046927SAndroid Build Coastguard Worker SYMBOL_INFO si; 798*61046927SAndroid Build Coastguard Worker CHAR name[MAX_SYM_NAME + 1]; 799*61046927SAndroid Build Coastguard Worker } SYMBOL_INFO_PACKAGE,*PSYMBOL_INFO_PACKAGE; 800*61046927SAndroid Build Coastguard Worker 801*61046927SAndroid Build Coastguard Worker typedef struct _IMAGEHLP_STACK_FRAME 802*61046927SAndroid Build Coastguard Worker { 803*61046927SAndroid Build Coastguard Worker ULONG64 InstructionOffset; 804*61046927SAndroid Build Coastguard Worker ULONG64 ReturnOffset; 805*61046927SAndroid Build Coastguard Worker ULONG64 FrameOffset; 806*61046927SAndroid Build Coastguard Worker ULONG64 StackOffset; 807*61046927SAndroid Build Coastguard Worker ULONG64 BackingStoreOffset; 808*61046927SAndroid Build Coastguard Worker ULONG64 FuncTableEntry; 809*61046927SAndroid Build Coastguard Worker ULONG64 Params[4]; 810*61046927SAndroid Build Coastguard Worker ULONG64 Reserved[5]; 811*61046927SAndroid Build Coastguard Worker BOOL Virtual; 812*61046927SAndroid Build Coastguard Worker ULONG Reserved2; 813*61046927SAndroid Build Coastguard Worker } IMAGEHLP_STACK_FRAME,*PIMAGEHLP_STACK_FRAME; 814*61046927SAndroid Build Coastguard Worker 815*61046927SAndroid Build Coastguard Worker typedef VOID IMAGEHLP_CONTEXT,*PIMAGEHLP_CONTEXT; 816*61046927SAndroid Build Coastguard Worker 817*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymSetContext(HANDLE hProcess,PIMAGEHLP_STACK_FRAME StackFrame,PIMAGEHLP_CONTEXT Context); 818*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymFromAddr(HANDLE hProcess,DWORD64 Address,PDWORD64 Displacement,PSYMBOL_INFO Symbol); 819*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymFromToken(HANDLE hProcess,DWORD64 Base,DWORD Token,PSYMBOL_INFO Symbol); 820*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymFromName(HANDLE hProcess,LPSTR Name,PSYMBOL_INFO Symbol); 821*61046927SAndroid Build Coastguard Worker 822*61046927SAndroid Build Coastguard Worker typedef BOOL (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACK)(PSYMBOL_INFO pSymInfo,ULONG SymbolSize,PVOID UserContext); 823*61046927SAndroid Build Coastguard Worker 824*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymEnumSymbols(HANDLE hProcess,ULONG64 BaseOfDll,PCSTR Mask,PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,PVOID UserContext); 825*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymEnumSymbolsForAddr(HANDLE hProcess,DWORD64 Address,PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,PVOID UserContext); 826*61046927SAndroid Build Coastguard Worker 827*61046927SAndroid Build Coastguard Worker #define SYMENUMFLAG_FULLSRCH 1 828*61046927SAndroid Build Coastguard Worker #define SYMENUMFLAG_SPEEDSRCH 2 829*61046927SAndroid Build Coastguard Worker 830*61046927SAndroid Build Coastguard Worker typedef enum _IMAGEHLP_SYMBOL_TYPE_INFO { 831*61046927SAndroid Build Coastguard Worker TI_GET_SYMTAG,TI_GET_SYMNAME,TI_GET_LENGTH,TI_GET_TYPE,TI_GET_TYPEID,TI_GET_BASETYPE,TI_GET_ARRAYINDEXTYPEID,TI_FINDCHILDREN, 832*61046927SAndroid Build Coastguard Worker TI_GET_DATAKIND,TI_GET_ADDRESSOFFSET,TI_GET_OFFSET,TI_GET_VALUE,TI_GET_COUNT,TI_GET_CHILDRENCOUNT,TI_GET_BITPOSITION,TI_GET_VIRTUALBASECLASS, 833*61046927SAndroid Build Coastguard Worker TI_GET_VIRTUALTABLESHAPEID,TI_GET_VIRTUALBASEPOINTEROFFSET,TI_GET_CLASSPARENTID,TI_GET_NESTED,TI_GET_SYMINDEX,TI_GET_LEXICALPARENT, 834*61046927SAndroid Build Coastguard Worker TI_GET_ADDRESS,TI_GET_THISADJUST,TI_GET_UDTKIND,TI_IS_EQUIV_TO,TI_GET_CALLING_CONVENTION 835*61046927SAndroid Build Coastguard Worker } IMAGEHLP_SYMBOL_TYPE_INFO; 836*61046927SAndroid Build Coastguard Worker 837*61046927SAndroid Build Coastguard Worker typedef struct _TI_FINDCHILDREN_PARAMS { 838*61046927SAndroid Build Coastguard Worker ULONG Count; 839*61046927SAndroid Build Coastguard Worker ULONG Start; 840*61046927SAndroid Build Coastguard Worker ULONG ChildId[1]; 841*61046927SAndroid Build Coastguard Worker } TI_FINDCHILDREN_PARAMS; 842*61046927SAndroid Build Coastguard Worker 843*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymGetTypeInfo(HANDLE hProcess,DWORD64 ModBase,ULONG TypeId,IMAGEHLP_SYMBOL_TYPE_INFO GetType,PVOID pInfo); 844*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymEnumTypes(HANDLE hProcess,ULONG64 BaseOfDll,PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,PVOID UserContext); 845*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymGetTypeFromName(HANDLE hProcess,ULONG64 BaseOfDll,LPSTR Name,PSYMBOL_INFO Symbol); 846*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymAddSymbol(HANDLE hProcess,ULONG64 BaseOfDll,PCSTR Name,DWORD64 Address,DWORD Size,DWORD Flags); 847*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymDeleteSymbol(HANDLE hProcess,ULONG64 BaseOfDll,PCSTR Name,DWORD64 Address,DWORD Flags); 848*61046927SAndroid Build Coastguard Worker 849*61046927SAndroid Build Coastguard Worker typedef BOOL (WINAPI *PDBGHELP_CREATE_USER_DUMP_CALLBACK)(DWORD DataType,PVOID *Data,LPDWORD DataLength,PVOID UserData); 850*61046927SAndroid Build Coastguard Worker 851*61046927SAndroid Build Coastguard Worker BOOL WINAPI DbgHelpCreateUserDump(LPSTR FileName,PDBGHELP_CREATE_USER_DUMP_CALLBACK Callback,PVOID UserData); 852*61046927SAndroid Build Coastguard Worker BOOL WINAPI DbgHelpCreateUserDumpW(LPWSTR FileName,PDBGHELP_CREATE_USER_DUMP_CALLBACK Callback,PVOID UserData); 853*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymGetSymFromAddr64(HANDLE hProcess,DWORD64 qwAddr,PDWORD64 pdwDisplacement,PIMAGEHLP_SYMBOL64 Symbol); 854*61046927SAndroid Build Coastguard Worker 855*61046927SAndroid Build Coastguard Worker #ifdef _IMAGEHLP64 856*61046927SAndroid Build Coastguard Worker #define SymGetSymFromAddr SymGetSymFromAddr64 857*61046927SAndroid Build Coastguard Worker #else 858*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymGetSymFromAddr(HANDLE hProcess,DWORD dwAddr,PDWORD pdwDisplacement,PIMAGEHLP_SYMBOL Symbol); 859*61046927SAndroid Build Coastguard Worker #endif 860*61046927SAndroid Build Coastguard Worker 861*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymGetSymFromName64(HANDLE hProcess,PSTR Name,PIMAGEHLP_SYMBOL64 Symbol); 862*61046927SAndroid Build Coastguard Worker 863*61046927SAndroid Build Coastguard Worker #ifdef _IMAGEHLP64 864*61046927SAndroid Build Coastguard Worker #define SymGetSymFromName SymGetSymFromName64 865*61046927SAndroid Build Coastguard Worker #else 866*61046927SAndroid Build Coastguard Worker BOOL IMAGEAPI SymGetSymFromName(HANDLE hProcess,PSTR Name,PIMAGEHLP_SYMBOL Symbol); 867*61046927SAndroid Build Coastguard Worker #endif 868*61046927SAndroid Build Coastguard Worker 869*61046927SAndroid Build Coastguard Worker DBHLP_DEPRECIATED BOOL IMAGEAPI FindFileInPath(HANDLE hprocess,LPSTR SearchPath,LPSTR FileName,PVOID id,DWORD two,DWORD three,DWORD flags,LPSTR FilePath); 870*61046927SAndroid Build Coastguard Worker DBHLP_DEPRECIATED BOOL IMAGEAPI FindFileInSearchPath(HANDLE hprocess,LPSTR SearchPath,LPSTR FileName,DWORD one,DWORD two,DWORD three,LPSTR FilePath); 871*61046927SAndroid Build Coastguard Worker DBHLP_DEPRECIATED BOOL IMAGEAPI SymEnumSym(HANDLE hProcess,ULONG64 BaseOfDll,PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,PVOID UserContext); 872*61046927SAndroid Build Coastguard Worker 873*61046927SAndroid Build Coastguard Worker #define SYMF_OMAP_GENERATED 0x00000001 874*61046927SAndroid Build Coastguard Worker #define SYMF_OMAP_MODIFIED 0x00000002 875*61046927SAndroid Build Coastguard Worker #define SYMF_REGISTER 0x00000008 876*61046927SAndroid Build Coastguard Worker #define SYMF_REGREL 0x00000010 877*61046927SAndroid Build Coastguard Worker #define SYMF_FRAMEREL 0x00000020 878*61046927SAndroid Build Coastguard Worker #define SYMF_PARAMETER 0x00000040 879*61046927SAndroid Build Coastguard Worker #define SYMF_LOCAL 0x00000080 880*61046927SAndroid Build Coastguard Worker #define SYMF_CONSTANT 0x00000100 881*61046927SAndroid Build Coastguard Worker #define SYMF_EXPORT 0x00000200 882*61046927SAndroid Build Coastguard Worker #define SYMF_FORWARDER 0x00000400 883*61046927SAndroid Build Coastguard Worker #define SYMF_FUNCTION 0x00000800 884*61046927SAndroid Build Coastguard Worker #define SYMF_VIRTUAL 0x00001000 885*61046927SAndroid Build Coastguard Worker #define SYMF_THUNK 0x00002000 886*61046927SAndroid Build Coastguard Worker #define SYMF_TLSREL 0x00004000 887*61046927SAndroid Build Coastguard Worker 888*61046927SAndroid Build Coastguard Worker #define IMAGEHLP_SYMBOL_INFO_VALUEPRESENT 1 889*61046927SAndroid Build Coastguard Worker #define IMAGEHLP_SYMBOL_INFO_REGISTER SYMF_REGISTER 890*61046927SAndroid Build Coastguard Worker #define IMAGEHLP_SYMBOL_INFO_REGRELATIVE SYMF_REGREL 891*61046927SAndroid Build Coastguard Worker #define IMAGEHLP_SYMBOL_INFO_FRAMERELATIVE SYMF_FRAMEREL 892*61046927SAndroid Build Coastguard Worker #define IMAGEHLP_SYMBOL_INFO_PARAMETER SYMF_PARAMETER 893*61046927SAndroid Build Coastguard Worker #define IMAGEHLP_SYMBOL_INFO_LOCAL SYMF_LOCAL 894*61046927SAndroid Build Coastguard Worker #define IMAGEHLP_SYMBOL_INFO_CONSTANT SYMF_CONSTANT 895*61046927SAndroid Build Coastguard Worker #define IMAGEHLP_SYMBOL_FUNCTION SYMF_FUNCTION 896*61046927SAndroid Build Coastguard Worker #define IMAGEHLP_SYMBOL_VIRTUAL SYMF_VIRTUAL 897*61046927SAndroid Build Coastguard Worker #define IMAGEHLP_SYMBOL_THUNK SYMF_THUNK 898*61046927SAndroid Build Coastguard Worker #define IMAGEHLP_SYMBOL_INFO_TLSRELATIVE SYMF_TLSREL 899*61046927SAndroid Build Coastguard Worker 900*61046927SAndroid Build Coastguard Worker #include <pshpack4.h> 901*61046927SAndroid Build Coastguard Worker 902*61046927SAndroid Build Coastguard Worker #define MINIDUMP_SIGNATURE ('PMDM') 903*61046927SAndroid Build Coastguard Worker #define MINIDUMP_VERSION (42899) 904*61046927SAndroid Build Coastguard Worker typedef DWORD RVA; 905*61046927SAndroid Build Coastguard Worker typedef ULONG64 RVA64; 906*61046927SAndroid Build Coastguard Worker 907*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_LOCATION_DESCRIPTOR { 908*61046927SAndroid Build Coastguard Worker ULONG32 DataSize; 909*61046927SAndroid Build Coastguard Worker RVA Rva; 910*61046927SAndroid Build Coastguard Worker } MINIDUMP_LOCATION_DESCRIPTOR; 911*61046927SAndroid Build Coastguard Worker 912*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_LOCATION_DESCRIPTOR64 { 913*61046927SAndroid Build Coastguard Worker ULONG64 DataSize; 914*61046927SAndroid Build Coastguard Worker RVA64 Rva; 915*61046927SAndroid Build Coastguard Worker } MINIDUMP_LOCATION_DESCRIPTOR64; 916*61046927SAndroid Build Coastguard Worker 917*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_MEMORY_DESCRIPTOR { 918*61046927SAndroid Build Coastguard Worker ULONG64 StartOfMemoryRange; 919*61046927SAndroid Build Coastguard Worker MINIDUMP_LOCATION_DESCRIPTOR Memory; 920*61046927SAndroid Build Coastguard Worker } MINIDUMP_MEMORY_DESCRIPTOR,*PMINIDUMP_MEMORY_DESCRIPTOR; 921*61046927SAndroid Build Coastguard Worker 922*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_MEMORY_DESCRIPTOR64 { 923*61046927SAndroid Build Coastguard Worker ULONG64 StartOfMemoryRange; 924*61046927SAndroid Build Coastguard Worker ULONG64 DataSize; 925*61046927SAndroid Build Coastguard Worker } MINIDUMP_MEMORY_DESCRIPTOR64,*PMINIDUMP_MEMORY_DESCRIPTOR64; 926*61046927SAndroid Build Coastguard Worker 927*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_HEADER { 928*61046927SAndroid Build Coastguard Worker ULONG32 Signature; 929*61046927SAndroid Build Coastguard Worker ULONG32 Version; 930*61046927SAndroid Build Coastguard Worker ULONG32 NumberOfStreams; 931*61046927SAndroid Build Coastguard Worker RVA StreamDirectoryRva; 932*61046927SAndroid Build Coastguard Worker ULONG32 CheckSum; 933*61046927SAndroid Build Coastguard Worker union { 934*61046927SAndroid Build Coastguard Worker ULONG32 Reserved; 935*61046927SAndroid Build Coastguard Worker ULONG32 TimeDateStamp; 936*61046927SAndroid Build Coastguard Worker } DUMMYUNIONNAME; 937*61046927SAndroid Build Coastguard Worker ULONG64 Flags; 938*61046927SAndroid Build Coastguard Worker } MINIDUMP_HEADER,*PMINIDUMP_HEADER; 939*61046927SAndroid Build Coastguard Worker 940*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_DIRECTORY { 941*61046927SAndroid Build Coastguard Worker ULONG32 StreamType; 942*61046927SAndroid Build Coastguard Worker MINIDUMP_LOCATION_DESCRIPTOR Location; 943*61046927SAndroid Build Coastguard Worker } MINIDUMP_DIRECTORY,*PMINIDUMP_DIRECTORY; 944*61046927SAndroid Build Coastguard Worker 945*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_STRING { 946*61046927SAndroid Build Coastguard Worker ULONG32 Length; 947*61046927SAndroid Build Coastguard Worker WCHAR Buffer [0]; 948*61046927SAndroid Build Coastguard Worker } MINIDUMP_STRING,*PMINIDUMP_STRING; 949*61046927SAndroid Build Coastguard Worker 950*61046927SAndroid Build Coastguard Worker typedef enum _MINIDUMP_STREAM_TYPE { 951*61046927SAndroid Build Coastguard Worker UnusedStream = 0,ReservedStream0 = 1,ReservedStream1 = 2,ThreadListStream = 3,ModuleListStream = 4,MemoryListStream = 5, 952*61046927SAndroid Build Coastguard Worker ExceptionStream = 6,SystemInfoStream = 7,ThreadExListStream = 8,Memory64ListStream = 9,CommentStreamA = 10,CommentStreamW = 11, 953*61046927SAndroid Build Coastguard Worker HandleDataStream = 12,FunctionTableStream = 13,UnloadedModuleListStream = 14,MiscInfoStream = 15,LastReservedStream = 0xffff 954*61046927SAndroid Build Coastguard Worker } MINIDUMP_STREAM_TYPE; 955*61046927SAndroid Build Coastguard Worker 956*61046927SAndroid Build Coastguard Worker typedef union _CPU_INFORMATION { 957*61046927SAndroid Build Coastguard Worker struct { 958*61046927SAndroid Build Coastguard Worker ULONG32 VendorId [3 ]; 959*61046927SAndroid Build Coastguard Worker ULONG32 VersionInformation; 960*61046927SAndroid Build Coastguard Worker ULONG32 FeatureInformation; 961*61046927SAndroid Build Coastguard Worker ULONG32 AMDExtendedCpuFeatures; 962*61046927SAndroid Build Coastguard Worker } X86CpuInfo; 963*61046927SAndroid Build Coastguard Worker struct { 964*61046927SAndroid Build Coastguard Worker ULONG64 ProcessorFeatures [2 ]; 965*61046927SAndroid Build Coastguard Worker } OtherCpuInfo; 966*61046927SAndroid Build Coastguard Worker } CPU_INFORMATION,*PCPU_INFORMATION; 967*61046927SAndroid Build Coastguard Worker 968*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_SYSTEM_INFO { 969*61046927SAndroid Build Coastguard Worker USHORT ProcessorArchitecture; 970*61046927SAndroid Build Coastguard Worker USHORT ProcessorLevel; 971*61046927SAndroid Build Coastguard Worker USHORT ProcessorRevision; 972*61046927SAndroid Build Coastguard Worker union { 973*61046927SAndroid Build Coastguard Worker USHORT Reserved0; 974*61046927SAndroid Build Coastguard Worker struct { 975*61046927SAndroid Build Coastguard Worker UCHAR NumberOfProcessors; 976*61046927SAndroid Build Coastguard Worker UCHAR ProductType; 977*61046927SAndroid Build Coastguard Worker } DUMMYSTRUCTNAME; 978*61046927SAndroid Build Coastguard Worker } DUMMYUNIONNAME; 979*61046927SAndroid Build Coastguard Worker ULONG32 MajorVersion; 980*61046927SAndroid Build Coastguard Worker ULONG32 MinorVersion; 981*61046927SAndroid Build Coastguard Worker ULONG32 BuildNumber; 982*61046927SAndroid Build Coastguard Worker ULONG32 PlatformId; 983*61046927SAndroid Build Coastguard Worker RVA CSDVersionRva; 984*61046927SAndroid Build Coastguard Worker union { 985*61046927SAndroid Build Coastguard Worker ULONG32 Reserved1; 986*61046927SAndroid Build Coastguard Worker struct { 987*61046927SAndroid Build Coastguard Worker USHORT SuiteMask; 988*61046927SAndroid Build Coastguard Worker USHORT Reserved2; 989*61046927SAndroid Build Coastguard Worker } DUMMYSTRUCTNAME; 990*61046927SAndroid Build Coastguard Worker } DUMMYUNIONNAME1; 991*61046927SAndroid Build Coastguard Worker CPU_INFORMATION Cpu; 992*61046927SAndroid Build Coastguard Worker } MINIDUMP_SYSTEM_INFO,*PMINIDUMP_SYSTEM_INFO; 993*61046927SAndroid Build Coastguard Worker 994*61046927SAndroid Build Coastguard Worker C_ASSERT (sizeof (((PPROCESS_INFORMATION)0)->dwThreadId)==4); 995*61046927SAndroid Build Coastguard Worker 996*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_THREAD { 997*61046927SAndroid Build Coastguard Worker ULONG32 ThreadId; 998*61046927SAndroid Build Coastguard Worker ULONG32 SuspendCount; 999*61046927SAndroid Build Coastguard Worker ULONG32 PriorityClass; 1000*61046927SAndroid Build Coastguard Worker ULONG32 Priority; 1001*61046927SAndroid Build Coastguard Worker ULONG64 Teb; 1002*61046927SAndroid Build Coastguard Worker MINIDUMP_MEMORY_DESCRIPTOR Stack; 1003*61046927SAndroid Build Coastguard Worker MINIDUMP_LOCATION_DESCRIPTOR ThreadContext; 1004*61046927SAndroid Build Coastguard Worker } MINIDUMP_THREAD,*PMINIDUMP_THREAD; 1005*61046927SAndroid Build Coastguard Worker 1006*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_THREAD_LIST { 1007*61046927SAndroid Build Coastguard Worker ULONG32 NumberOfThreads; 1008*61046927SAndroid Build Coastguard Worker MINIDUMP_THREAD Threads [0]; 1009*61046927SAndroid Build Coastguard Worker } MINIDUMP_THREAD_LIST,*PMINIDUMP_THREAD_LIST; 1010*61046927SAndroid Build Coastguard Worker 1011*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_THREAD_EX { 1012*61046927SAndroid Build Coastguard Worker ULONG32 ThreadId; 1013*61046927SAndroid Build Coastguard Worker ULONG32 SuspendCount; 1014*61046927SAndroid Build Coastguard Worker ULONG32 PriorityClass; 1015*61046927SAndroid Build Coastguard Worker ULONG32 Priority; 1016*61046927SAndroid Build Coastguard Worker ULONG64 Teb; 1017*61046927SAndroid Build Coastguard Worker MINIDUMP_MEMORY_DESCRIPTOR Stack; 1018*61046927SAndroid Build Coastguard Worker MINIDUMP_LOCATION_DESCRIPTOR ThreadContext; 1019*61046927SAndroid Build Coastguard Worker MINIDUMP_MEMORY_DESCRIPTOR BackingStore; 1020*61046927SAndroid Build Coastguard Worker } MINIDUMP_THREAD_EX,*PMINIDUMP_THREAD_EX; 1021*61046927SAndroid Build Coastguard Worker 1022*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_THREAD_EX_LIST { 1023*61046927SAndroid Build Coastguard Worker ULONG32 NumberOfThreads; 1024*61046927SAndroid Build Coastguard Worker MINIDUMP_THREAD_EX Threads [0]; 1025*61046927SAndroid Build Coastguard Worker } MINIDUMP_THREAD_EX_LIST,*PMINIDUMP_THREAD_EX_LIST; 1026*61046927SAndroid Build Coastguard Worker 1027*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_EXCEPTION { 1028*61046927SAndroid Build Coastguard Worker ULONG32 ExceptionCode; 1029*61046927SAndroid Build Coastguard Worker ULONG32 ExceptionFlags; 1030*61046927SAndroid Build Coastguard Worker ULONG64 ExceptionRecord; 1031*61046927SAndroid Build Coastguard Worker ULONG64 ExceptionAddress; 1032*61046927SAndroid Build Coastguard Worker ULONG32 NumberParameters; 1033*61046927SAndroid Build Coastguard Worker ULONG32 __unusedAlignment; 1034*61046927SAndroid Build Coastguard Worker ULONG64 ExceptionInformation [EXCEPTION_MAXIMUM_PARAMETERS ]; 1035*61046927SAndroid Build Coastguard Worker } MINIDUMP_EXCEPTION,*PMINIDUMP_EXCEPTION; 1036*61046927SAndroid Build Coastguard Worker 1037*61046927SAndroid Build Coastguard Worker typedef struct MINIDUMP_EXCEPTION_STREAM { 1038*61046927SAndroid Build Coastguard Worker ULONG32 ThreadId; 1039*61046927SAndroid Build Coastguard Worker ULONG32 __alignment; 1040*61046927SAndroid Build Coastguard Worker MINIDUMP_EXCEPTION ExceptionRecord; 1041*61046927SAndroid Build Coastguard Worker MINIDUMP_LOCATION_DESCRIPTOR ThreadContext; 1042*61046927SAndroid Build Coastguard Worker } MINIDUMP_EXCEPTION_STREAM,*PMINIDUMP_EXCEPTION_STREAM; 1043*61046927SAndroid Build Coastguard Worker 1044*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_MODULE { 1045*61046927SAndroid Build Coastguard Worker ULONG64 BaseOfImage; 1046*61046927SAndroid Build Coastguard Worker ULONG32 SizeOfImage; 1047*61046927SAndroid Build Coastguard Worker ULONG32 CheckSum; 1048*61046927SAndroid Build Coastguard Worker ULONG32 TimeDateStamp; 1049*61046927SAndroid Build Coastguard Worker RVA ModuleNameRva; 1050*61046927SAndroid Build Coastguard Worker VS_FIXEDFILEINFO VersionInfo; 1051*61046927SAndroid Build Coastguard Worker MINIDUMP_LOCATION_DESCRIPTOR CvRecord; 1052*61046927SAndroid Build Coastguard Worker MINIDUMP_LOCATION_DESCRIPTOR MiscRecord; 1053*61046927SAndroid Build Coastguard Worker ULONG64 Reserved0; 1054*61046927SAndroid Build Coastguard Worker ULONG64 Reserved1; 1055*61046927SAndroid Build Coastguard Worker } MINIDUMP_MODULE,*PMINIDUMP_MODULE; 1056*61046927SAndroid Build Coastguard Worker 1057*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_MODULE_LIST { 1058*61046927SAndroid Build Coastguard Worker ULONG32 NumberOfModules; 1059*61046927SAndroid Build Coastguard Worker MINIDUMP_MODULE Modules [0 ]; 1060*61046927SAndroid Build Coastguard Worker } MINIDUMP_MODULE_LIST,*PMINIDUMP_MODULE_LIST; 1061*61046927SAndroid Build Coastguard Worker 1062*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_MEMORY_LIST { 1063*61046927SAndroid Build Coastguard Worker ULONG32 NumberOfMemoryRanges; 1064*61046927SAndroid Build Coastguard Worker MINIDUMP_MEMORY_DESCRIPTOR MemoryRanges [0]; 1065*61046927SAndroid Build Coastguard Worker } MINIDUMP_MEMORY_LIST,*PMINIDUMP_MEMORY_LIST; 1066*61046927SAndroid Build Coastguard Worker 1067*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_MEMORY64_LIST { 1068*61046927SAndroid Build Coastguard Worker ULONG64 NumberOfMemoryRanges; 1069*61046927SAndroid Build Coastguard Worker RVA64 BaseRva; 1070*61046927SAndroid Build Coastguard Worker MINIDUMP_MEMORY_DESCRIPTOR64 MemoryRanges [0]; 1071*61046927SAndroid Build Coastguard Worker } MINIDUMP_MEMORY64_LIST,*PMINIDUMP_MEMORY64_LIST; 1072*61046927SAndroid Build Coastguard Worker 1073*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_EXCEPTION_INFORMATION { 1074*61046927SAndroid Build Coastguard Worker DWORD ThreadId; 1075*61046927SAndroid Build Coastguard Worker PEXCEPTION_POINTERS ExceptionPointers; 1076*61046927SAndroid Build Coastguard Worker BOOL ClientPointers; 1077*61046927SAndroid Build Coastguard Worker } MINIDUMP_EXCEPTION_INFORMATION,*PMINIDUMP_EXCEPTION_INFORMATION; 1078*61046927SAndroid Build Coastguard Worker 1079*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_EXCEPTION_INFORMATION64 { 1080*61046927SAndroid Build Coastguard Worker DWORD ThreadId; 1081*61046927SAndroid Build Coastguard Worker ULONG64 ExceptionRecord; 1082*61046927SAndroid Build Coastguard Worker ULONG64 ContextRecord; 1083*61046927SAndroid Build Coastguard Worker BOOL ClientPointers; 1084*61046927SAndroid Build Coastguard Worker } MINIDUMP_EXCEPTION_INFORMATION64,*PMINIDUMP_EXCEPTION_INFORMATION64; 1085*61046927SAndroid Build Coastguard Worker 1086*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_HANDLE_DESCRIPTOR { 1087*61046927SAndroid Build Coastguard Worker ULONG64 Handle; 1088*61046927SAndroid Build Coastguard Worker RVA TypeNameRva; 1089*61046927SAndroid Build Coastguard Worker RVA ObjectNameRva; 1090*61046927SAndroid Build Coastguard Worker ULONG32 Attributes; 1091*61046927SAndroid Build Coastguard Worker ULONG32 GrantedAccess; 1092*61046927SAndroid Build Coastguard Worker ULONG32 HandleCount; 1093*61046927SAndroid Build Coastguard Worker ULONG32 PointerCount; 1094*61046927SAndroid Build Coastguard Worker } MINIDUMP_HANDLE_DESCRIPTOR,*PMINIDUMP_HANDLE_DESCRIPTOR; 1095*61046927SAndroid Build Coastguard Worker 1096*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_HANDLE_DATA_STREAM { 1097*61046927SAndroid Build Coastguard Worker ULONG32 SizeOfHeader; 1098*61046927SAndroid Build Coastguard Worker ULONG32 SizeOfDescriptor; 1099*61046927SAndroid Build Coastguard Worker ULONG32 NumberOfDescriptors; 1100*61046927SAndroid Build Coastguard Worker ULONG32 Reserved; 1101*61046927SAndroid Build Coastguard Worker } MINIDUMP_HANDLE_DATA_STREAM,*PMINIDUMP_HANDLE_DATA_STREAM; 1102*61046927SAndroid Build Coastguard Worker 1103*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_FUNCTION_TABLE_DESCRIPTOR { 1104*61046927SAndroid Build Coastguard Worker ULONG64 MinimumAddress; 1105*61046927SAndroid Build Coastguard Worker ULONG64 MaximumAddress; 1106*61046927SAndroid Build Coastguard Worker ULONG64 BaseAddress; 1107*61046927SAndroid Build Coastguard Worker ULONG32 EntryCount; 1108*61046927SAndroid Build Coastguard Worker ULONG32 SizeOfAlignPad; 1109*61046927SAndroid Build Coastguard Worker } MINIDUMP_FUNCTION_TABLE_DESCRIPTOR,*PMINIDUMP_FUNCTION_TABLE_DESCRIPTOR; 1110*61046927SAndroid Build Coastguard Worker 1111*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_FUNCTION_TABLE_STREAM { 1112*61046927SAndroid Build Coastguard Worker ULONG32 SizeOfHeader; 1113*61046927SAndroid Build Coastguard Worker ULONG32 SizeOfDescriptor; 1114*61046927SAndroid Build Coastguard Worker ULONG32 SizeOfNativeDescriptor; 1115*61046927SAndroid Build Coastguard Worker ULONG32 SizeOfFunctionEntry; 1116*61046927SAndroid Build Coastguard Worker ULONG32 NumberOfDescriptors; 1117*61046927SAndroid Build Coastguard Worker ULONG32 SizeOfAlignPad; 1118*61046927SAndroid Build Coastguard Worker } MINIDUMP_FUNCTION_TABLE_STREAM,*PMINIDUMP_FUNCTION_TABLE_STREAM; 1119*61046927SAndroid Build Coastguard Worker 1120*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_UNLOADED_MODULE { 1121*61046927SAndroid Build Coastguard Worker ULONG64 BaseOfImage; 1122*61046927SAndroid Build Coastguard Worker ULONG32 SizeOfImage; 1123*61046927SAndroid Build Coastguard Worker ULONG32 CheckSum; 1124*61046927SAndroid Build Coastguard Worker ULONG32 TimeDateStamp; 1125*61046927SAndroid Build Coastguard Worker RVA ModuleNameRva; 1126*61046927SAndroid Build Coastguard Worker } MINIDUMP_UNLOADED_MODULE,*PMINIDUMP_UNLOADED_MODULE; 1127*61046927SAndroid Build Coastguard Worker 1128*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_UNLOADED_MODULE_LIST { 1129*61046927SAndroid Build Coastguard Worker ULONG32 SizeOfHeader; 1130*61046927SAndroid Build Coastguard Worker ULONG32 SizeOfEntry; 1131*61046927SAndroid Build Coastguard Worker ULONG32 NumberOfEntries; 1132*61046927SAndroid Build Coastguard Worker } MINIDUMP_UNLOADED_MODULE_LIST,*PMINIDUMP_UNLOADED_MODULE_LIST; 1133*61046927SAndroid Build Coastguard Worker 1134*61046927SAndroid Build Coastguard Worker #define MINIDUMP_MISC1_PROCESS_ID 0x00000001 1135*61046927SAndroid Build Coastguard Worker #define MINIDUMP_MISC1_PROCESS_TIMES 0x00000002 1136*61046927SAndroid Build Coastguard Worker 1137*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_MISC_INFO { 1138*61046927SAndroid Build Coastguard Worker ULONG32 SizeOfInfo; 1139*61046927SAndroid Build Coastguard Worker ULONG32 Flags1; 1140*61046927SAndroid Build Coastguard Worker ULONG32 ProcessId; 1141*61046927SAndroid Build Coastguard Worker ULONG32 ProcessCreateTime; 1142*61046927SAndroid Build Coastguard Worker ULONG32 ProcessUserTime; 1143*61046927SAndroid Build Coastguard Worker ULONG32 ProcessKernelTime; 1144*61046927SAndroid Build Coastguard Worker } MINIDUMP_MISC_INFO,*PMINIDUMP_MISC_INFO; 1145*61046927SAndroid Build Coastguard Worker 1146*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_USER_RECORD { 1147*61046927SAndroid Build Coastguard Worker ULONG32 Type; 1148*61046927SAndroid Build Coastguard Worker MINIDUMP_LOCATION_DESCRIPTOR Memory; 1149*61046927SAndroid Build Coastguard Worker } MINIDUMP_USER_RECORD,*PMINIDUMP_USER_RECORD; 1150*61046927SAndroid Build Coastguard Worker 1151*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_USER_STREAM { 1152*61046927SAndroid Build Coastguard Worker ULONG32 Type; 1153*61046927SAndroid Build Coastguard Worker ULONG BufferSize; 1154*61046927SAndroid Build Coastguard Worker PVOID Buffer; 1155*61046927SAndroid Build Coastguard Worker } MINIDUMP_USER_STREAM,*PMINIDUMP_USER_STREAM; 1156*61046927SAndroid Build Coastguard Worker 1157*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_USER_STREAM_INFORMATION { 1158*61046927SAndroid Build Coastguard Worker ULONG UserStreamCount; 1159*61046927SAndroid Build Coastguard Worker PMINIDUMP_USER_STREAM UserStreamArray; 1160*61046927SAndroid Build Coastguard Worker } MINIDUMP_USER_STREAM_INFORMATION,*PMINIDUMP_USER_STREAM_INFORMATION; 1161*61046927SAndroid Build Coastguard Worker 1162*61046927SAndroid Build Coastguard Worker typedef enum _MINIDUMP_CALLBACK_TYPE { 1163*61046927SAndroid Build Coastguard Worker ModuleCallback,ThreadCallback,ThreadExCallback,IncludeThreadCallback,IncludeModuleCallback,MemoryCallback 1164*61046927SAndroid Build Coastguard Worker } MINIDUMP_CALLBACK_TYPE; 1165*61046927SAndroid Build Coastguard Worker 1166*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_THREAD_CALLBACK { 1167*61046927SAndroid Build Coastguard Worker ULONG ThreadId; 1168*61046927SAndroid Build Coastguard Worker HANDLE ThreadHandle; 1169*61046927SAndroid Build Coastguard Worker CONTEXT Context; 1170*61046927SAndroid Build Coastguard Worker ULONG SizeOfContext; 1171*61046927SAndroid Build Coastguard Worker ULONG64 StackBase; 1172*61046927SAndroid Build Coastguard Worker ULONG64 StackEnd; 1173*61046927SAndroid Build Coastguard Worker } MINIDUMP_THREAD_CALLBACK,*PMINIDUMP_THREAD_CALLBACK; 1174*61046927SAndroid Build Coastguard Worker 1175*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_THREAD_EX_CALLBACK { 1176*61046927SAndroid Build Coastguard Worker ULONG ThreadId; 1177*61046927SAndroid Build Coastguard Worker HANDLE ThreadHandle; 1178*61046927SAndroid Build Coastguard Worker CONTEXT Context; 1179*61046927SAndroid Build Coastguard Worker ULONG SizeOfContext; 1180*61046927SAndroid Build Coastguard Worker ULONG64 StackBase; 1181*61046927SAndroid Build Coastguard Worker ULONG64 StackEnd; 1182*61046927SAndroid Build Coastguard Worker ULONG64 BackingStoreBase; 1183*61046927SAndroid Build Coastguard Worker ULONG64 BackingStoreEnd; 1184*61046927SAndroid Build Coastguard Worker } MINIDUMP_THREAD_EX_CALLBACK,*PMINIDUMP_THREAD_EX_CALLBACK; 1185*61046927SAndroid Build Coastguard Worker 1186*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_INCLUDE_THREAD_CALLBACK { 1187*61046927SAndroid Build Coastguard Worker ULONG ThreadId; 1188*61046927SAndroid Build Coastguard Worker } MINIDUMP_INCLUDE_THREAD_CALLBACK,*PMINIDUMP_INCLUDE_THREAD_CALLBACK; 1189*61046927SAndroid Build Coastguard Worker 1190*61046927SAndroid Build Coastguard Worker typedef enum _THREAD_WRITE_FLAGS { 1191*61046927SAndroid Build Coastguard Worker ThreadWriteThread = 0x0001,ThreadWriteStack = 0x0002,ThreadWriteContext = 0x0004,ThreadWriteBackingStore = 0x0008, 1192*61046927SAndroid Build Coastguard Worker ThreadWriteInstructionWindow = 0x0010,ThreadWriteThreadData = 0x0020 1193*61046927SAndroid Build Coastguard Worker } THREAD_WRITE_FLAGS; 1194*61046927SAndroid Build Coastguard Worker 1195*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_MODULE_CALLBACK { 1196*61046927SAndroid Build Coastguard Worker PWCHAR FullPath; 1197*61046927SAndroid Build Coastguard Worker ULONG64 BaseOfImage; 1198*61046927SAndroid Build Coastguard Worker ULONG SizeOfImage; 1199*61046927SAndroid Build Coastguard Worker ULONG CheckSum; 1200*61046927SAndroid Build Coastguard Worker ULONG TimeDateStamp; 1201*61046927SAndroid Build Coastguard Worker VS_FIXEDFILEINFO VersionInfo; 1202*61046927SAndroid Build Coastguard Worker PVOID CvRecord; 1203*61046927SAndroid Build Coastguard Worker ULONG SizeOfCvRecord; 1204*61046927SAndroid Build Coastguard Worker PVOID MiscRecord; 1205*61046927SAndroid Build Coastguard Worker ULONG SizeOfMiscRecord; 1206*61046927SAndroid Build Coastguard Worker } MINIDUMP_MODULE_CALLBACK,*PMINIDUMP_MODULE_CALLBACK; 1207*61046927SAndroid Build Coastguard Worker 1208*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_INCLUDE_MODULE_CALLBACK { 1209*61046927SAndroid Build Coastguard Worker ULONG64 BaseOfImage; 1210*61046927SAndroid Build Coastguard Worker } MINIDUMP_INCLUDE_MODULE_CALLBACK,*PMINIDUMP_INCLUDE_MODULE_CALLBACK; 1211*61046927SAndroid Build Coastguard Worker 1212*61046927SAndroid Build Coastguard Worker typedef enum _MODULE_WRITE_FLAGS { 1213*61046927SAndroid Build Coastguard Worker ModuleWriteModule = 0x0001,ModuleWriteDataSeg = 0x0002,ModuleWriteMiscRecord = 0x0004,ModuleWriteCvRecord = 0x0008, 1214*61046927SAndroid Build Coastguard Worker ModuleReferencedByMemory = 0x0010 1215*61046927SAndroid Build Coastguard Worker } MODULE_WRITE_FLAGS; 1216*61046927SAndroid Build Coastguard Worker 1217*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_CALLBACK_INPUT { 1218*61046927SAndroid Build Coastguard Worker ULONG ProcessId; 1219*61046927SAndroid Build Coastguard Worker HANDLE ProcessHandle; 1220*61046927SAndroid Build Coastguard Worker ULONG CallbackType; 1221*61046927SAndroid Build Coastguard Worker union { 1222*61046927SAndroid Build Coastguard Worker MINIDUMP_THREAD_CALLBACK Thread; 1223*61046927SAndroid Build Coastguard Worker MINIDUMP_THREAD_EX_CALLBACK ThreadEx; 1224*61046927SAndroid Build Coastguard Worker MINIDUMP_MODULE_CALLBACK Module; 1225*61046927SAndroid Build Coastguard Worker MINIDUMP_INCLUDE_THREAD_CALLBACK IncludeThread; 1226*61046927SAndroid Build Coastguard Worker MINIDUMP_INCLUDE_MODULE_CALLBACK IncludeModule; 1227*61046927SAndroid Build Coastguard Worker } DUMMYUNIONNAME; 1228*61046927SAndroid Build Coastguard Worker } MINIDUMP_CALLBACK_INPUT,*PMINIDUMP_CALLBACK_INPUT; 1229*61046927SAndroid Build Coastguard Worker 1230*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_CALLBACK_OUTPUT { 1231*61046927SAndroid Build Coastguard Worker union { 1232*61046927SAndroid Build Coastguard Worker ULONG ModuleWriteFlags; 1233*61046927SAndroid Build Coastguard Worker ULONG ThreadWriteFlags; 1234*61046927SAndroid Build Coastguard Worker struct { 1235*61046927SAndroid Build Coastguard Worker ULONG64 MemoryBase; 1236*61046927SAndroid Build Coastguard Worker ULONG MemorySize; 1237*61046927SAndroid Build Coastguard Worker } DUMMYSTRUCTNAME; 1238*61046927SAndroid Build Coastguard Worker } DUMMYUNIONNAME; 1239*61046927SAndroid Build Coastguard Worker } MINIDUMP_CALLBACK_OUTPUT,*PMINIDUMP_CALLBACK_OUTPUT; 1240*61046927SAndroid Build Coastguard Worker 1241*61046927SAndroid Build Coastguard Worker typedef enum _MINIDUMP_TYPE { 1242*61046927SAndroid Build Coastguard Worker MiniDumpNormal = 0x0000,MiniDumpWithDataSegs = 0x0001,MiniDumpWithFullMemory = 0x0002,MiniDumpWithHandleData = 0x0004, 1243*61046927SAndroid Build Coastguard Worker MiniDumpFilterMemory = 0x0008,MiniDumpScanMemory = 0x0010,MiniDumpWithUnloadedModules = 0x0020,MiniDumpWithIndirectlyReferencedMemory = 0x0040, 1244*61046927SAndroid Build Coastguard Worker MiniDumpFilterModulePaths = 0x0080,MiniDumpWithProcessThreadData = 0x0100,MiniDumpWithPrivateReadWriteMemory = 0x0200, 1245*61046927SAndroid Build Coastguard Worker MiniDumpWithoutOptionalData = 0x0400 1246*61046927SAndroid Build Coastguard Worker } MINIDUMP_TYPE; 1247*61046927SAndroid Build Coastguard Worker 1248*61046927SAndroid Build Coastguard Worker typedef BOOL (WINAPI *MINIDUMP_CALLBACK_ROUTINE)(PVOID CallbackParam,CONST PMINIDUMP_CALLBACK_INPUT CallbackInput,PMINIDUMP_CALLBACK_OUTPUT CallbackOutput); 1249*61046927SAndroid Build Coastguard Worker 1250*61046927SAndroid Build Coastguard Worker typedef struct _MINIDUMP_CALLBACK_INFORMATION { 1251*61046927SAndroid Build Coastguard Worker MINIDUMP_CALLBACK_ROUTINE CallbackRoutine; 1252*61046927SAndroid Build Coastguard Worker PVOID CallbackParam; 1253*61046927SAndroid Build Coastguard Worker } MINIDUMP_CALLBACK_INFORMATION,*PMINIDUMP_CALLBACK_INFORMATION; 1254*61046927SAndroid Build Coastguard Worker 1255*61046927SAndroid Build Coastguard Worker #define RVA_TO_ADDR(Mapping,Rva) ((PVOID)(((ULONG_PTR) (Mapping)) + (Rva))) 1256*61046927SAndroid Build Coastguard Worker 1257*61046927SAndroid Build Coastguard Worker BOOL 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); 1258*61046927SAndroid Build Coastguard Worker BOOL WINAPI MiniDumpReadDumpStream(PVOID BaseOfDump,ULONG StreamNumber,PMINIDUMP_DIRECTORY *Dir,PVOID *StreamPointer,ULONG *StreamSize); 1259*61046927SAndroid Build Coastguard Worker 1260*61046927SAndroid Build Coastguard Worker #include <poppack.h> 1261*61046927SAndroid Build Coastguard Worker 1262*61046927SAndroid Build Coastguard Worker #ifdef __cplusplus 1263*61046927SAndroid Build Coastguard Worker } 1264*61046927SAndroid Build Coastguard Worker #endif 1265*61046927SAndroid Build Coastguard Worker #endif 1266