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