| /* | |
| * Declarations for DBGHELP | |
| * | |
| * Copyright (C) 2003 Eric Pouech | |
| * | |
| * This library is free software; you can redistribute it and/or | |
| * modify it under the terms of the GNU Lesser General Public | |
| * License as published by the Free Software Foundation; either | |
| * version 2.1 of the License, or (at your option) any later version. | |
| * | |
| * This library is distributed in the hope that it will be useful, | |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| * Lesser General Public License for more details. | |
| * | |
| * You should have received a copy of the GNU Lesser General Public | |
| * License along with this library; if not, write to the Free Software | |
| * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| */ | |
| #ifndef __WINE_DBGHELP_H | |
| #define __WINE_DBGHELP_H | |
| #ifdef __cplusplus | |
| extern "C" { | |
| #endif /* defined(__cplusplus) */ | |
| typedef struct _LOADED_IMAGE | |
| { | |
| LPSTR ModuleName; | |
| HANDLE hFile; | |
| PUCHAR MappedAddress; | |
| PIMAGE_NT_HEADERS FileHeader; | |
| PIMAGE_SECTION_HEADER LastRvaSection; | |
| ULONG NumberOfSections; | |
| PIMAGE_SECTION_HEADER Sections; | |
| ULONG Characteristics; | |
| BOOLEAN fSystemImage; | |
| BOOLEAN fDOSImage; | |
| LIST_ENTRY Links; | |
| ULONG SizeOfImage; | |
| } LOADED_IMAGE, *PLOADED_IMAGE; | |
| /************************* | |
| * IMAGEHLP equiv * | |
| *************************/ | |
| typedef enum | |
| { | |
| AddrMode1616, | |
| AddrMode1632, | |
| AddrModeReal, | |
| AddrModeFlat | |
| } ADDRESS_MODE; | |
| typedef struct _tagADDRESS | |
| { | |
| DWORD Offset; | |
| WORD Segment; | |
| ADDRESS_MODE Mode; | |
| } ADDRESS, *LPADDRESS; | |
| #define SYMF_OMAP_GENERATED 0x00000001 | |
| #define SYMF_OMAP_MODIFIED 0x00000002 | |
| #define SYMF_USER_GENERATED 0x00000004 | |
| #define SYMF_REGISTER 0x00000008 | |
| #define SYMF_REGREL 0x00000010 | |
| #define SYMF_FRAMEREL 0x00000020 | |
| #define SYMF_PARAMETER 0x00000040 | |
| #define SYMF_LOCAL 0x00000080 | |
| #define SYMF_CONSTANT 0x00000100 | |
| #define SYMF_EXPORT 0x00000200 | |
| #define SYMF_FORWARDER 0x00000400 | |
| #define SYMF_FUNCTION 0x00000800 | |
| #define SYMF_VIRTUAL 0x00001000 | |
| #define SYMF_THUNK 0x00002000 | |
| #define SYMF_TLSREL 0x00004000 | |
| typedef enum | |
| { | |
| SymNone = 0, | |
| SymCoff, | |
| SymCv, | |
| SymPdb, | |
| SymExport, | |
| SymDeferred, | |
| SymSym, | |
| SymDia, | |
| NumSymTypes | |
| } SYM_TYPE; | |
| typedef struct _IMAGEHLP_SYMBOL | |
| { | |
| DWORD SizeOfStruct; | |
| DWORD Address; | |
| DWORD Size; | |
| DWORD Flags; | |
| DWORD MaxNameLength; | |
| CHAR Name[1]; | |
| } IMAGEHLP_SYMBOL, *PIMAGEHLP_SYMBOL; | |
| typedef struct _IMAGEHLP_MODULE | |
| { | |
| DWORD SizeOfStruct; | |
| DWORD BaseOfImage; | |
| DWORD ImageSize; | |
| DWORD TimeDateStamp; | |
| DWORD CheckSum; | |
| DWORD NumSyms; | |
| SYM_TYPE SymType; | |
| CHAR ModuleName[32]; | |
| CHAR ImageName[256]; | |
| CHAR LoadedImageName[256]; | |
| } IMAGEHLP_MODULE, *PIMAGEHLP_MODULE; | |
| typedef struct _IMAGEHLP_MODULEW { | |
| DWORD SizeOfStruct; | |
| DWORD BaseOfImage; | |
| DWORD ImageSize; | |
| DWORD TimeDateStamp; | |
| DWORD CheckSum; | |
| DWORD NumSyms; | |
| SYM_TYPE SymType; | |
| WCHAR ModuleName[32]; | |
| WCHAR ImageName[256]; | |
| WCHAR LoadedImageName[256]; | |
| } IMAGEHLP_MODULEW, *PIMAGEHLP_MODULEW; | |
| typedef struct _IMAGEHLP_LINE | |
| { | |
| DWORD SizeOfStruct; | |
| PVOID Key; | |
| DWORD LineNumber; | |
| PCHAR FileName; | |
| DWORD Address; | |
| } IMAGEHLP_LINE, *PIMAGEHLP_LINE; | |
| typedef struct _SOURCEFILE | |
| { | |
| DWORD64 ModBase; | |
| PCHAR FileName; | |
| } SOURCEFILE, *PSOURCEFILE; | |
| #define CBA_DEFERRED_SYMBOL_LOAD_START 0x00000001 | |
| #define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE 0x00000002 | |
| #define CBA_DEFERRED_SYMBOL_LOAD_FAILURE 0x00000003 | |
| #define CBA_SYMBOLS_UNLOADED 0x00000004 | |
| #define CBA_DUPLICATE_SYMBOL 0x00000005 | |
| #define CBA_READ_MEMORY 0x00000006 | |
| #define CBA_DEFERRED_SYMBOL_LOAD_CANCEL 0x00000007 | |
| #define CBA_SET_OPTIONS 0x00000008 | |
| #define CBA_EVENT 0x00000010 | |
| #define CBA_DEBUG_INFO 0x10000000 | |
| typedef struct _IMAGEHLP_CBA_READ_MEMORY | |
| { | |
| DWORD64 addr; | |
| PVOID buf; | |
| DWORD bytes; | |
| DWORD *bytesread; | |
| } IMAGEHLP_CBA_READ_MEMORY, *PIMAGEHLP_CBA_READ_MEMORY; | |
| enum | |
| { | |
| sevInfo = 0, | |
| sevProblem, | |
| sevAttn, | |
| sevFatal, | |
| sevMax | |
| }; | |
| typedef struct _IMAGEHLP_CBA_EVENT | |
| { | |
| DWORD severity; | |
| DWORD code; | |
| PCHAR desc; | |
| PVOID object; | |
| } IMAGEHLP_CBA_EVENT, *PIMAGEHLP_CBA_EVENT; | |
| typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD | |
| { | |
| DWORD SizeOfStruct; | |
| DWORD BaseOfImage; | |
| DWORD CheckSum; | |
| DWORD TimeDateStamp; | |
| CHAR FileName[MAX_PATH]; | |
| BOOLEAN Reparse; | |
| } IMAGEHLP_DEFERRED_SYMBOL_LOAD, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD; | |
| typedef struct _IMAGEHLP_DUPLICATE_SYMBOL | |
| { | |
| DWORD SizeOfStruct; | |
| DWORD NumberOfDups; | |
| PIMAGEHLP_SYMBOL Symbol; | |
| DWORD SelectedSymbol; | |
| } IMAGEHLP_DUPLICATE_SYMBOL, *PIMAGEHLP_DUPLICATE_SYMBOL; | |
| #define SYMOPT_CASE_INSENSITIVE 0x00000001 | |
| #define SYMOPT_UNDNAME 0x00000002 | |
| #define SYMOPT_DEFERRED_LOADS 0x00000004 | |
| #define SYMOPT_NO_CPP 0x00000008 | |
| #define SYMOPT_LOAD_LINES 0x00000010 | |
| #define SYMOPT_OMAP_FIND_NEAREST 0x00000020 | |
| #define SYMOPT_LOAD_ANYTHING 0x00000040 | |
| #define SYMOPT_IGNORE_CVREC 0x00000080 | |
| #define SYMOPT_NO_UNQUALIFIED_LOADS 0x00000100 | |
| #define SYMOPT_FAIL_CRITICAL_ERRORS 0x00000200 | |
| #define SYMOPT_EXACT_SYMBOLS 0x00000400 | |
| #define SYMOPT_WILD_UNDERSCORE 0x00000800 | |
| #define SYMOPT_USE_DEFAULTS 0x00001000 | |
| #define SYMOPT_INCLUDE_32BIT_MODULES 0x00002000 | |
| #define SYMOPT_PUBLICS_ONLY 0x00004000 | |
| #define SYMOPT_NO_PUBLICS 0x00008000 | |
| #define SYMOPT_AUTO_PUBLICS 0x00010000 | |
| #define SYMOPT_NO_IMAGE_SEARCH 0x00020000 | |
| #define SYMOPT_SECURE 0x00040000 | |
| #define SYMOPT_NO_PROMPTS 0x00080000 | |
| #define SYMOPT_DEBUG 0x80000000 | |
| typedef struct _IMAGEHLP_STACK_FRAME | |
| { | |
| ULONG64 InstructionOffset; | |
| ULONG64 ReturnOffset; | |
| ULONG64 FrameOffset; | |
| ULONG64 StackOffset; | |
| ULONG64 BackingStoreOffset; | |
| ULONG64 FuncTableEntry; | |
| ULONG64 Params[4]; | |
| ULONG64 Reserved[5]; | |
| BOOL Virtual; | |
| ULONG Reserved2; | |
| } IMAGEHLP_STACK_FRAME, *PIMAGEHLP_STACK_FRAME; | |
| typedef VOID IMAGEHLP_CONTEXT, *PIMAGEHLP_CONTEXT; | |
| #define DBHHEADER_DEBUGDIRS 0x1 | |
| typedef struct _DBGHELP_MODLOAD_DATA | |
| { | |
| DWORD ssize; | |
| DWORD ssig; | |
| PVOID data; | |
| DWORD size; | |
| DWORD flags; | |
| } MODLOAD_DATA, *PMODLOAD_DATA; | |
| /************************* | |
| * MiniDUMP * | |
| *************************/ | |
| /* DebugHelp */ | |
| #define MINIDUMP_SIGNATURE 0x504D444D /* 'MDMP' */ | |
| #define MINIDUMP_VERSION (42899) | |
| typedef DWORD RVA; | |
| typedef ULONG64 RVA64; | |
| typedef enum _MINIDUMP_TYPE | |
| { | |
| MiniDumpNormal = 0x0000, | |
| MiniDumpWithDataSegs = 0x0001, | |
| MiniDumpWithFullMemory = 0x0002, | |
| MiniDumpWithHandleData = 0x0004, | |
| MiniDumpFilterMemory = 0x0008, | |
| MiniDumpScanMemory = 0x0010, | |
| MiniDumpWithUnloadedModules = 0x0020, | |
| MiniDumpWithIndirectlyReferencedMemory = 0x0040, | |
| MiniDumpFilterModulePaths = 0x0080, | |
| MiniDumpWithProcessThreadData = 0x0100, | |
| MiniDumpWithPrivateReadWriteMemory = 0x0200, | |
| MiniDumpWithoutOptionalData = 0x0400, | |
| MiniDumpWithFullMemoryInfo = 0x0800, | |
| MiniDumpWithThreadInfo = 0x1000, | |
| MiniDumpWithCodeSegs = 0x2000 | |
| } MINIDUMP_TYPE; | |
| typedef enum _MINIDUMP_CALLBACK_TYPE | |
| { | |
| ModuleCallback, | |
| ThreadCallback, | |
| ThreadExCallback, | |
| IncludeThreadCallback, | |
| IncludeModuleCallback, | |
| MemoryCallback, | |
| } MINIDUMP_CALLBACK_TYPE; | |
| typedef struct _MINIDUMP_THREAD_CALLBACK | |
| { | |
| ULONG ThreadId; | |
| HANDLE ThreadHandle; | |
| CONTEXT Context; | |
| ULONG SizeOfContext; | |
| ULONG64 StackBase; | |
| ULONG64 StackEnd; | |
| } MINIDUMP_THREAD_CALLBACK, *PMINIDUMP_THREAD_CALLBACK; | |
| typedef struct _MINIDUMP_THREAD_EX_CALLBACK | |
| { | |
| ULONG ThreadId; | |
| HANDLE ThreadHandle; | |
| CONTEXT Context; | |
| ULONG SizeOfContext; | |
| ULONG64 StackBase; | |
| ULONG64 StackEnd; | |
| ULONG64 BackingStoreBase; | |
| ULONG64 BackingStoreEnd; | |
| } MINIDUMP_THREAD_EX_CALLBACK, *PMINIDUMP_THREAD_EX_CALLBACK; | |
| typedef struct _MINIDUMP_INCLUDE_THREAD_CALLBACK | |
| { | |
| ULONG ThreadId; | |
| } MINIDUMP_INCLUDE_THREAD_CALLBACK, *PMINIDUMP_INCLUDE_THREAD_CALLBACK; | |
| typedef enum _THREAD_WRITE_FLAGS | |
| { | |
| ThreadWriteThread = 0x0001, | |
| ThreadWriteStack = 0x0002, | |
| ThreadWriteContext = 0x0004, | |
| ThreadWriteBackingStore = 0x0008, | |
| ThreadWriteInstructionWindow = 0x0010, | |
| ThreadWriteThreadData = 0x0020, | |
| ThreadWriteThreadInfo = 0x0040 | |
| } THREAD_WRITE_FLAGS; | |
| typedef struct _MINIDUMP_MODULE_CALLBACK | |
| { | |
| PWCHAR FullPath; | |
| ULONG64 BaseOfImage; | |
| ULONG SizeOfImage; | |
| ULONG CheckSum; | |
| ULONG TimeDateStamp; | |
| VS_FIXEDFILEINFO VersionInfo; | |
| PVOID CvRecord; | |
| ULONG SizeOfCvRecord; | |
| PVOID MiscRecord; | |
| ULONG SizeOfMiscRecord; | |
| } MINIDUMP_MODULE_CALLBACK, *PMINIDUMP_MODULE_CALLBACK; | |
| typedef struct _MINIDUMP_INCLUDE_MODULE_CALLBACK | |
| { | |
| ULONG64 BaseOfImage; | |
| } MINIDUMP_INCLUDE_MODULE_CALLBACK, *PMINIDUMP_INCLUDE_MODULE_CALLBACK; | |
| typedef enum _MODULE_WRITE_FLAGS | |
| { | |
| ModuleWriteModule = 0x0001, | |
| ModuleWriteDataSeg = 0x0002, | |
| ModuleWriteMiscRecord = 0x0004, | |
| ModuleWriteCvRecord = 0x0008, | |
| ModuleReferencedByMemory = 0x0010, | |
| ModuleWriteTlsData = 0x0020, | |
| ModuleWriteCodeSegs = 0x0040, | |
| } MODULE_WRITE_FLAGS; | |
| typedef struct _MINIDUMP_CALLBACK_INPUT | |
| { | |
| ULONG ProcessId; | |
| HANDLE ProcessHandle; | |
| ULONG CallbackType; | |
| union | |
| { | |
| MINIDUMP_THREAD_CALLBACK Thread; | |
| MINIDUMP_THREAD_EX_CALLBACK ThreadEx; | |
| MINIDUMP_MODULE_CALLBACK Module; | |
| MINIDUMP_INCLUDE_THREAD_CALLBACK IncludeThread; | |
| MINIDUMP_INCLUDE_MODULE_CALLBACK IncludeModule; | |
| } DUMMYUNIONNAME; | |
| } MINIDUMP_CALLBACK_INPUT, *PMINIDUMP_CALLBACK_INPUT; | |
| typedef struct _MINIDUMP_CALLBACK_OUTPUT | |
| { | |
| union | |
| { | |
| ULONG ModuleWriteFlags; | |
| ULONG ThreadWriteFlags; | |
| struct | |
| { | |
| ULONG64 MemoryBase; | |
| ULONG MemorySize; | |
| } DUMMYSTRUCTNAME; | |
| } DUMMYUNIONNAME; | |
| } MINIDUMP_CALLBACK_OUTPUT, *PMINIDUMP_CALLBACK_OUTPUT; | |
| typedef BOOL (WINAPI* MINIDUMP_CALLBACK_ROUTINE)(PVOID, const PMINIDUMP_CALLBACK_INPUT, PMINIDUMP_CALLBACK_OUTPUT); | |
| typedef struct _MINIDUMP_CALLBACK_INFORMATION | |
| { | |
| MINIDUMP_CALLBACK_ROUTINE CallbackRoutine; | |
| void* CallbackParam; | |
| } MINIDUMP_CALLBACK_INFORMATION, *PMINIDUMP_CALLBACK_INFORMATION; | |
| typedef struct _MINIDUMP_LOCATION_DESCRIPTOR | |
| { | |
| ULONG DataSize; | |
| RVA Rva; | |
| } MINIDUMP_LOCATION_DESCRIPTOR; | |
| typedef struct _MINIDUMP_DIRECTORY | |
| { | |
| ULONG StreamType; | |
| MINIDUMP_LOCATION_DESCRIPTOR Location; | |
| } MINIDUMP_DIRECTORY, *PMINIDUMP_DIRECTORY; | |
| typedef struct _MINIDUMP_EXCEPTION | |
| { | |
| ULONG ExceptionCode; | |
| ULONG ExceptionFlags; | |
| ULONG64 ExceptionRecord; | |
| ULONG64 ExceptionAddress; | |
| ULONG NumberParameters; | |
| ULONG __unusedAlignment; | |
| ULONG64 ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; | |
| } MINIDUMP_EXCEPTION, *PMINIDUMP_EXCEPTION; | |
| typedef struct _MINIDUMP_EXCEPTION_INFORMATION | |
| { | |
| DWORD ThreadId; | |
| PEXCEPTION_POINTERS ExceptionPointers; | |
| BOOL ClientPointers; | |
| } MINIDUMP_EXCEPTION_INFORMATION, *PMINIDUMP_EXCEPTION_INFORMATION; | |
| typedef struct MINIDUMP_EXCEPTION_STREAM | |
| { | |
| ULONG ThreadId; | |
| ULONG __alignment; | |
| MINIDUMP_EXCEPTION ExceptionRecord; | |
| MINIDUMP_LOCATION_DESCRIPTOR ThreadContext; | |
| } MINIDUMP_EXCEPTION_STREAM, *PMINIDUMP_EXCEPTION_STREAM; | |
| typedef struct _MINIDUMP_HEADER | |
| { | |
| DWORD Signature; | |
| DWORD Version; | |
| DWORD NumberOfStreams; | |
| RVA StreamDirectoryRva; | |
| DWORD CheckSum; | |
| union | |
| { | |
| DWORD Reserved; | |
| DWORD TimeDateStamp; | |
| } DUMMYUNIONNAME; | |
| ULONG64 Flags; | |
| } MINIDUMP_HEADER, *PMINIDUMP_HEADER; | |
| typedef struct _MINIDUMP_MEMORY_DESCRIPTOR | |
| { | |
| ULONG64 StartOfMemoryRange; | |
| MINIDUMP_LOCATION_DESCRIPTOR Memory; | |
| } MINIDUMP_MEMORY_DESCRIPTOR, *PMINIDUMP_MEMORY_DESCRIPTOR; | |
| typedef struct _MINIDUMP_MEMORY_LIST | |
| { | |
| ULONG NumberOfMemoryRanges; | |
| MINIDUMP_MEMORY_DESCRIPTOR MemoryRanges[1]; /* FIXME: 0-sized array not supported */ | |
| } MINIDUMP_MEMORY_LIST, *PMINIDUMP_MEMORY_LIST; | |
| #define MINIDUMP_MISC1_PROCESS_ID 0x00000001 | |
| #define MINIDUMP_MISC1_PROCESS_TIMES 0x00000002 | |
| typedef struct _MINIDUMP_MISC_INFO | |
| { | |
| ULONG SizeOfInfo; | |
| ULONG Flags1; | |
| ULONG ProcessId; | |
| ULONG ProcessCreateTime; | |
| ULONG ProcessUserTime; | |
| ULONG ProcessKernelTime; | |
| } MINIDUMP_MISC_INFO, *PMINIDUMP_MISC_INFO; | |
| typedef struct _MINIDUMP_MODULE | |
| { | |
| ULONG64 BaseOfImage; | |
| ULONG SizeOfImage; | |
| ULONG CheckSum; | |
| ULONG TimeDateStamp; | |
| RVA ModuleNameRva; | |
| VS_FIXEDFILEINFO VersionInfo; | |
| MINIDUMP_LOCATION_DESCRIPTOR CvRecord; | |
| MINIDUMP_LOCATION_DESCRIPTOR MiscRecord; | |
| ULONG64 Reserved0; | |
| ULONG64 Reserved1; | |
| } MINIDUMP_MODULE, *PMINIDUMP_MODULE; | |
| typedef struct _MINIDUMP_MODULE_LIST | |
| { | |
| ULONG NumberOfModules; | |
| MINIDUMP_MODULE Modules[1]; /* FIXME: 0-sized array not supported */ | |
| } MINIDUMP_MODULE_LIST, *PMINIDUMP_MODULE_LIST; | |
| typedef struct _MINIDUMP_STRING | |
| { | |
| ULONG Length; | |
| WCHAR Buffer[1]; /* FIXME: O-sized array not supported */ | |
| } MINIDUMP_STRING, *PMINIDUMP_STRING; | |
| typedef struct _MINIDUMP_SYSTEM_INFO | |
| { | |
| USHORT ProcessorArchitecture; | |
| USHORT ProcessorLevel; | |
| USHORT ProcessorRevision; | |
| union | |
| { | |
| USHORT Reserved0; | |
| struct | |
| { | |
| UCHAR NumberOfProcessors; | |
| UCHAR ProductType; | |
| } DUMMYSTRUCTNAME; | |
| } DUMMYUNIONNAME; | |
| ULONG MajorVersion; | |
| ULONG MinorVersion; | |
| ULONG BuildNumber; | |
| ULONG PlatformId; | |
| RVA CSDVersionRva; | |
| union | |
| { | |
| ULONG Reserved1; | |
| struct | |
| { | |
| USHORT SuiteMask; | |
| USHORT Reserved2; | |
| } DUMMYSTRUCTNAME; | |
| } DUMMYUNIONNAME1; | |
| union _CPU_INFORMATION | |
| { | |
| struct | |
| { | |
| ULONG VendorId[3]; | |
| ULONG VersionInformation; | |
| ULONG FeatureInformation; | |
| ULONG AMDExtendedCpuFeatures; | |
| } X86CpuInfo; | |
| struct | |
| { | |
| ULONG64 ProcessorFeatures[2]; | |
| } OtherCpuInfo; | |
| } Cpu; | |
| } MINIDUMP_SYSTEM_INFO, *PMINIDUMP_SYSTEM_INFO; | |
| typedef struct _MINIDUMP_THREAD | |
| { | |
| ULONG ThreadId; | |
| ULONG SuspendCount; | |
| ULONG PriorityClass; | |
| ULONG Priority; | |
| ULONG64 Teb; | |
| MINIDUMP_MEMORY_DESCRIPTOR Stack; | |
| MINIDUMP_LOCATION_DESCRIPTOR ThreadContext; | |
| } MINIDUMP_THREAD, *PMINIDUMP_THREAD; | |
| typedef struct _MINIDUMP_THREAD_LIST | |
| { | |
| ULONG NumberOfThreads; | |
| MINIDUMP_THREAD Threads[1]; /* FIXME: no support of 0 sized array */ | |
| } MINIDUMP_THREAD_LIST, *PMINIDUMP_THREAD_LIST; | |
| typedef struct _MINIDUMP_USER_STREAM | |
| { | |
| ULONG Type; | |
| ULONG BufferSize; | |
| void* Buffer; | |
| } MINIDUMP_USER_STREAM, *PMINIDUMP_USER_STREAM; | |
| typedef struct _MINIDUMP_USER_STREAM_INFORMATION | |
| { | |
| ULONG UserStreamCount; | |
| PMINIDUMP_USER_STREAM UserStreamArray; | |
| } MINIDUMP_USER_STREAM_INFORMATION, *PMINIDUMP_USER_STREAM_INFORMATION; | |
| typedef enum _MINIDUMP_STREAM_TYPE | |
| { | |
| UnusedStream = 0, | |
| ReservedStream0 = 1, | |
| ReservedStream1 = 2, | |
| ThreadListStream = 3, | |
| ModuleListStream = 4, | |
| MemoryListStream = 5, | |
| ExceptionStream = 6, | |
| SystemInfoStream = 7, | |
| ThreadExListStream = 8, | |
| Memory64ListStream = 9, | |
| CommentStreamA = 10, | |
| CommentStreamW = 11, | |
| HandleDataStream = 12, | |
| FunctionTableStream = 13, | |
| UnloadedModuleListStream = 14, | |
| MiscInfoStream = 15, | |
| MemoryInfoListStream = 16, | |
| ThreadInfoListStream = 17, | |
| LastReservedStream = 0xffff | |
| } MINIDUMP_STREAM_TYPE; | |
| BOOL WINAPI MiniDumpWriteDump(HANDLE, DWORD, HANDLE, MINIDUMP_TYPE, | |
| const PMINIDUMP_EXCEPTION_INFORMATION, | |
| const PMINIDUMP_USER_STREAM_INFORMATION, | |
| const PMINIDUMP_CALLBACK_INFORMATION); | |
| BOOL WINAPI MiniDumpReadDumpStream(PVOID, ULONG, PMINIDUMP_DIRECTORY*, PVOID*, | |
| ULONG*); | |
| /************************* | |
| * MODULE handling * | |
| *************************/ | |
| typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK)(PSTR, DWORD, ULONG, PVOID); | |
| BOOL WINAPI EnumerateLoadedModules(HANDLE, PENUMLOADED_MODULES_CALLBACK, PVOID); | |
| typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK)(PSTR, DWORD, PVOID); | |
| BOOL WINAPI SymEnumerateModules(HANDLE, PSYM_ENUMMODULES_CALLBACK, PVOID); | |
| BOOL WINAPI SymGetModuleInfo(HANDLE, DWORD, PIMAGEHLP_MODULE); | |
| BOOL WINAPI SymGetModuleInfoW(HANDLE, DWORD, PIMAGEHLP_MODULEW); | |
| DWORD WINAPI SymGetModuleBase(HANDLE, DWORD); | |
| DWORD WINAPI SymLoadModule(HANDLE, HANDLE, PSTR, PSTR, DWORD, DWORD); | |
| DWORD64 WINAPI SymLoadModuleEx(HANDLE, HANDLE, PSTR, PSTR, DWORD64, DWORD, | |
| PMODLOAD_DATA, DWORD); | |
| BOOL WINAPI SymUnloadModule(HANDLE, DWORD); | |
| /************************* | |
| * Symbol Handling * | |
| *************************/ | |
| #define IMAGEHLP_SYMBOL_INFO_VALUEPRESENT 1 | |
| #define IMAGEHLP_SYMBOL_INFO_REGISTER SYMF_REGISTER /* 0x08 */ | |
| #define IMAGEHLP_SYMBOL_INFO_REGRELATIVE SYMF_REGREL /* 0x10 */ | |
| #define IMAGEHLP_SYMBOL_INFO_FRAMERELATIVE SYMF_FRAMEREL /* 0x20 */ | |
| #define IMAGEHLP_SYMBOL_INFO_PARAMETER SYMF_PARAMETER /* 0x40 */ | |
| #define IMAGEHLP_SYMBOL_INFO_LOCAL SYMF_LOCAL /* 0x80 */ | |
| #define IMAGEHLP_SYMBOL_INFO_CONSTANT SYMF_CONSTANT /* 0x100 */ | |
| #define IMAGEHLP_SYMBOL_FUNCTION SYMF_FUNCTION /* 0x800 */ | |
| #define SYMFLAG_VALUEPRESENT 0x00000001 | |
| #define SYMFLAG_REGISTER 0x00000008 | |
| #define SYMFLAG_REGREL 0x00000010 | |
| #define SYMFLAG_FRAMEREL 0x00000020 | |
| #define SYMFLAG_PARAMETER 0x00000040 | |
| #define SYMFLAG_LOCAL 0x00000080 | |
| #define SYMFLAG_CONSTANT 0x00000100 | |
| #define SYMFLAG_EXPORT 0x00000200 | |
| #define SYMFLAG_FORWARDER 0x00000400 | |
| #define SYMFLAG_FUNCTION 0x00000800 | |
| #define SYMFLAG_VIRTUAL 0x00001000 | |
| #define SYMFLAG_THUNK 0x00002000 | |
| #define SYMFLAG_TLSREL 0x00004000 | |
| typedef struct _SYMBOL_INFO | |
| { | |
| ULONG SizeOfStruct; | |
| ULONG TypeIndex; | |
| ULONG64 Reserved[2]; | |
| ULONG info; /* sdk states info, while MSDN says it's Index... */ | |
| ULONG Size; | |
| ULONG64 ModBase; | |
| ULONG Flags; | |
| ULONG64 Value; | |
| ULONG64 Address; | |
| ULONG Register; | |
| ULONG Scope; | |
| ULONG Tag; | |
| ULONG NameLen; | |
| ULONG MaxNameLen; | |
| CHAR Name[1]; | |
| } SYMBOL_INFO, *PSYMBOL_INFO; | |
| typedef enum _IMAGEHLP_SYMBOL_TYPE_INFO | |
| { | |
| TI_GET_SYMTAG, | |
| TI_GET_SYMNAME, | |
| TI_GET_LENGTH, | |
| TI_GET_TYPE, | |
| TI_GET_TYPEID, | |
| TI_GET_BASETYPE, | |
| TI_GET_ARRAYINDEXTYPEID, | |
| TI_FINDCHILDREN, | |
| TI_GET_DATAKIND, | |
| TI_GET_ADDRESSOFFSET, | |
| TI_GET_OFFSET, | |
| TI_GET_VALUE, | |
| TI_GET_COUNT, | |
| TI_GET_CHILDRENCOUNT, | |
| TI_GET_BITPOSITION, | |
| TI_GET_VIRTUALBASECLASS, | |
| TI_GET_VIRTUALTABLESHAPEID, | |
| TI_GET_VIRTUALBASEPOINTEROFFSET, | |
| TI_GET_CLASSPARENTID, | |
| TI_GET_NESTED, | |
| TI_GET_SYMINDEX, | |
| TI_GET_LEXICALPARENT, | |
| TI_GET_ADDRESS, | |
| TI_GET_THISADJUST, | |
| TI_GET_UDTKIND, | |
| TI_IS_EQUIV_TO, | |
| TI_GET_CALLING_CONVENTION, | |
| } IMAGEHLP_SYMBOL_TYPE_INFO; | |
| typedef struct _TI_FINDCHILDREN_PARAMS | |
| { | |
| ULONG Count; | |
| ULONG Start; | |
| ULONG ChildId[1]; | |
| } TI_FINDCHILDREN_PARAMS; | |
| #define UNDNAME_COMPLETE (0x0000) | |
| #define UNDNAME_NO_LEADING_UNDERSCORES (0x0001) | |
| #define UNDNAME_NO_MS_KEYWORDS (0x0002) | |
| #define UNDNAME_NO_FUNCTION_RETURNS (0x0004) | |
| #define UNDNAME_NO_ALLOCATION_MODEL (0x0008) | |
| #define UNDNAME_NO_ALLOCATION_LANGUAGE (0x0010) | |
| #define UNDNAME_NO_MS_THISTYPE (0x0020) | |
| #define UNDNAME_NO_CV_THISTYPE (0x0040) | |
| #define UNDNAME_NO_THISTYPE (0x0060) | |
| #define UNDNAME_NO_ACCESS_SPECIFIERS (0x0080) | |
| #define UNDNAME_NO_THROW_SIGNATURES (0x0100) | |
| #define UNDNAME_NO_MEMBER_TYPE (0x0200) | |
| #define UNDNAME_NO_RETURN_UDT_MODEL (0x0400) | |
| #define UNDNAME_32_BIT_DECODE (0x0800) | |
| #define UNDNAME_NAME_ONLY (0x1000) | |
| #define UNDNAME_NO_ARGUMENTS (0x2000) | |
| #define UNDNAME_NO_SPECIAL_SYMS (0x4000) | |
| BOOL WINAPI SymGetTypeInfo(HANDLE, DWORD64, ULONG, IMAGEHLP_SYMBOL_TYPE_INFO, PVOID); | |
| typedef BOOL (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACK)(PSYMBOL_INFO, ULONG, PVOID); | |
| BOOL WINAPI SymEnumTypes(HANDLE, ULONG64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID); | |
| BOOL WINAPI SymFromAddr(HANDLE, DWORD64, DWORD64*, SYMBOL_INFO*); | |
| BOOL WINAPI SymFromName(HANDLE, LPSTR, PSYMBOL_INFO); | |
| BOOL WINAPI SymGetSymFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_SYMBOL); | |
| BOOL WINAPI SymGetSymFromName(HANDLE, PSTR, PIMAGEHLP_SYMBOL); | |
| BOOL WINAPI SymGetTypeFromName(HANDLE, ULONG64, LPSTR, PSYMBOL_INFO); | |
| BOOL WINAPI SymGetSymNext(HANDLE, PIMAGEHLP_SYMBOL); | |
| BOOL WINAPI SymGetSymPrev(HANDLE, PIMAGEHLP_SYMBOL); | |
| BOOL WINAPI SymEnumSymbols(HANDLE, ULONG64, PCSTR, PSYM_ENUMERATESYMBOLS_CALLBACK, | |
| PVOID); | |
| typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)(PSTR, DWORD, ULONG, PVOID); | |
| BOOL WINAPI SymEnumerateSymbols(HANDLE, DWORD, PSYM_ENUMSYMBOLS_CALLBACK, PVOID); | |
| typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK)(HANDLE, ULONG, PVOID, PVOID); | |
| BOOL WINAPI SymRegisterCallback(HANDLE, PSYMBOL_REGISTERED_CALLBACK, PVOID); | |
| BOOL WINAPI SymUnDName(PIMAGEHLP_SYMBOL, PSTR, DWORD); | |
| DWORD WINAPI UnDecorateSymbolName(LPCSTR, LPSTR, DWORD, DWORD); | |
| /************************* | |
| * Source Files * | |
| *************************/ | |
| typedef BOOL (CALLBACK *PSYM_ENUMSOURCFILES_CALLBACK)(PSOURCEFILE, PVOID); | |
| BOOL WINAPI SymEnumSourceFiles(HANDLE, ULONG64, LPSTR, PSYM_ENUMSOURCFILES_CALLBACK, | |
| PVOID); | |
| BOOL WINAPI SymGetLineFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_LINE); | |
| BOOL WINAPI SymGetLinePrev(HANDLE, PIMAGEHLP_LINE); | |
| BOOL WINAPI SymGetLineNext(HANDLE, PIMAGEHLP_LINE); | |
| /************************* | |
| * File & image handling * | |
| *************************/ | |
| BOOL WINAPI SymInitialize(HANDLE, PSTR, BOOL); | |
| BOOL WINAPI SymCleanup(HANDLE); | |
| HANDLE WINAPI FindDebugInfoFile(PSTR, PSTR, PSTR); | |
| typedef BOOL (CALLBACK *PFIND_DEBUG_FILE_CALLBACK)(HANDLE, PSTR, PVOID); | |
| HANDLE WINAPI FindDebugInfoFileEx(PSTR, PSTR, PSTR, PFIND_DEBUG_FILE_CALLBACK, PVOID); | |
| typedef BOOL (CALLBACK *PFINDFILEINPATHCALLBACK)(PSTR, PVOID); | |
| BOOL WINAPI SymFindFileInPath(HANDLE, LPSTR, LPSTR, PVOID, DWORD, DWORD, DWORD, | |
| LPSTR, PFINDFILEINPATHCALLBACK, PVOID); | |
| HANDLE WINAPI FindExecutableImage(PSTR, PSTR, PSTR); | |
| typedef BOOL (CALLBACK *PFIND_EXE_FILE_CALLBACK)(HANDLE, PSTR, PVOID); | |
| HANDLE WINAPI FindExecutableImageEx(PSTR, PSTR, PSTR, PFIND_EXE_FILE_CALLBACK, PVOID); | |
| PIMAGE_NT_HEADERS WINAPI ImageNtHeader(PVOID); | |
| PVOID WINAPI ImageDirectoryEntryToDataEx(PVOID, BOOLEAN, USHORT, PULONG, | |
| PIMAGE_SECTION_HEADER *); | |
| PVOID WINAPI ImageDirectoryEntryToData(PVOID, BOOLEAN, USHORT, PULONG); | |
| PIMAGE_SECTION_HEADER WINAPI ImageRvaToSection(PIMAGE_NT_HEADERS, PVOID, ULONG); | |
| PVOID WINAPI ImageRvaToVa(PIMAGE_NT_HEADERS, PVOID, ULONG, PIMAGE_SECTION_HEADER*); | |
| BOOL WINAPI SymGetSearchPath(HANDLE, PSTR, DWORD); | |
| BOOL WINAPI SymSetSearchPath(HANDLE, PSTR); | |
| DWORD WINAPI GetTimestampForLoadedLibrary(HMODULE); | |
| BOOL WINAPI MakeSureDirectoryPathExists(PCSTR); | |
| BOOL WINAPI SearchTreeForFile(PSTR, PSTR, PSTR); | |
| typedef BOOL (CALLBACK *PENUMDIRTREE_CALLBACK)(LPCSTR, PVOID); | |
| BOOL WINAPI EnumDirTree(HANDLE, PCSTR, PCSTR, LPSTR, PENUMDIRTREE_CALLBACK, void*); | |
| BOOL WINAPI SymMatchFileName(LPSTR, LPSTR, LPSTR*, LPSTR*); | |
| /************************* | |
| * Context management * | |
| *************************/ | |
| BOOL WINAPI SymSetContext(HANDLE, PIMAGEHLP_STACK_FRAME, PIMAGEHLP_CONTEXT); | |
| /************************* | |
| * Stack management * | |
| *************************/ | |
| typedef struct _KDHELP | |
| { | |
| DWORD Thread; | |
| DWORD ThCallbackStack; | |
| DWORD NextCallback; | |
| DWORD FramePointer; | |
| DWORD KiCallUserMode; | |
| DWORD KeUserCallbackDispatcher; | |
| DWORD SystemRangeStart; | |
| } KDHELP, *PKDHELP; | |
| typedef struct _STACKFRAME | |
| { | |
| ADDRESS AddrPC; | |
| ADDRESS AddrReturn; | |
| ADDRESS AddrFrame; | |
| ADDRESS AddrStack; | |
| PVOID FuncTableEntry; | |
| DWORD Params[4]; | |
| BOOL Far; | |
| BOOL Virtual; | |
| DWORD Reserved[3]; | |
| KDHELP KdHelp; | |
| ADDRESS AddrBStore; | |
| } STACKFRAME, *LPSTACKFRAME; | |
| typedef BOOL (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE) | |
| (HANDLE, LPCVOID, PVOID, DWORD, PDWORD); | |
| typedef PVOID (CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE)(HANDLE, DWORD); | |
| typedef DWORD (CALLBACK *PGET_MODULE_BASE_ROUTINE)(HANDLE, DWORD); | |
| typedef DWORD (CALLBACK *PTRANSLATE_ADDRESS_ROUTINE)(HANDLE, HANDLE, LPADDRESS); | |
| BOOL WINAPI StackWalk(DWORD, HANDLE, HANDLE, LPSTACKFRAME, PVOID, | |
| PREAD_PROCESS_MEMORY_ROUTINE, | |
| PFUNCTION_TABLE_ACCESS_ROUTINE, | |
| PGET_MODULE_BASE_ROUTINE, | |
| PTRANSLATE_ADDRESS_ROUTINE); | |
| PVOID WINAPI SymFunctionTableAccess(HANDLE, DWORD); | |
| /************************* | |
| * Version, global stuff * | |
| *************************/ | |
| typedef struct API_VERSION | |
| { | |
| USHORT MajorVersion; | |
| USHORT MinorVersion; | |
| USHORT Revision; | |
| USHORT Reserved; | |
| } API_VERSION, *LPAPI_VERSION; | |
| LPAPI_VERSION WINAPI ImagehlpApiVersion(void); | |
| LPAPI_VERSION WINAPI ImagehlpApiVersionEx(LPAPI_VERSION); | |
| typedef struct _IMAGE_DEBUG_INFORMATION | |
| { | |
| LIST_ENTRY List; | |
| DWORD ReservedSize; | |
| PVOID ReservedMappedBase; | |
| USHORT ReservedMachine; | |
| USHORT ReservedCharacteristics; | |
| DWORD ReservedCheckSum; | |
| DWORD ImageBase; | |
| DWORD SizeOfImage; | |
| DWORD ReservedNumberOfSections; | |
| PIMAGE_SECTION_HEADER ReservedSections; | |
| DWORD ReservedExportedNamesSize; | |
| PSTR ReservedExportedNames; | |
| DWORD ReservedNumberOfFunctionTableEntries; | |
| PIMAGE_FUNCTION_ENTRY ReservedFunctionTableEntries; | |
| DWORD ReservedLowestFunctionStartingAddress; | |
| DWORD ReservedHighestFunctionEndingAddress; | |
| DWORD ReservedNumberOfFpoTableEntries; | |
| PFPO_DATA ReservedFpoTableEntries; | |
| DWORD SizeOfCoffSymbols; | |
| PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols; | |
| DWORD ReservedSizeOfCodeViewSymbols; | |
| PVOID ReservedCodeViewSymbols; | |
| PSTR ImageFilePath; | |
| PSTR ImageFileName; | |
| PSTR ReservedDebugFilePath; | |
| DWORD ReservedTimeDateStamp; | |
| BOOL ReservedRomImage; | |
| PIMAGE_DEBUG_DIRECTORY ReservedDebugDirectory; | |
| DWORD ReservedNumberOfDebugDirectories; | |
| DWORD ReservedOriginalFunctionTableBaseAddress; | |
| DWORD Reserved[ 2 ]; | |
| } IMAGE_DEBUG_INFORMATION, *PIMAGE_DEBUG_INFORMATION; | |
| PIMAGE_DEBUG_INFORMATION WINAPI MapDebugInformation(HANDLE, PSTR, PSTR, DWORD); | |
| BOOL WINAPI UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION); | |
| DWORD WINAPI SymGetOptions(void); | |
| DWORD WINAPI SymSetOptions(DWORD); | |
| #ifdef __cplusplus | |
| } /* extern "C" */ | |
| #endif /* defined(__cplusplus) */ | |
| #endif /* __WINE_DBGHELP_H */ |