123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830 |
- /*
- * 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 0x4D444D50 /* 'PMDM' */
- #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
- } MINIDUMP_TYPE;
- typedef enum _MINIDUMP_CALLBACK_TYPE
- {
- ModuleCallback,
- ThreadCallback,
- ThreadExCallback,
- IncludeThreadCallback,
- IncludeModuleCallback,
- } MINIDUMP_CALLBACK_TYPE;
- typedef struct _MINIDUMP_THREAD_CALLBACK
- {
- ULONG ThreadId;
- HANDLE ThreadHandle;
- CONTEXT Context;
- ULONG SizeOfContext;
- ULONGLONG StackBase;
- ULONG64 StackEnd;
- } MINIDUMP_THREAD_CALLBACK, *PMINIDUMP_THREAD_CALLBACK;
- typedef struct _MINIDUMP_THREAD_EX_CALLBACK
- {
- ULONG ThreadId;
- HANDLE ThreadHandle;
- CONTEXT Context;
- ULONG SizeOfContext;
- ULONGLONG StackBase;
- ULONGLONG StackEnd;
- ULONGLONG BackingStoreBase;
- ULONGLONG 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
- } THREAD_WRITE_FLAGS;
- typedef struct _MINIDUMP_MODULE_CALLBACK
- {
- PWCHAR FullPath;
- ULONGLONG 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
- } 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;
- } u;
- } MINIDUMP_CALLBACK_INPUT, *PMINIDUMP_CALLBACK_INPUT;
- typedef struct _MINIDUMP_CALLBACK_OUTPUT
- {
- union
- {
- ULONG ModuleWriteFlags;
- ULONG ThreadWriteFlags;
- } u;
- } MINIDUMP_CALLBACK_OUTPUT, *PMINIDUMP_CALLBACK_OUTPUT;
- typedef BOOL (WINAPI* MINIDUMP_CALLBACK_ROUTINE)(PVOID CallbackParam,
- const PMINIDUMP_CALLBACK_INPUT CallbackInput,
- PMINIDUMP_CALLBACK_OUTPUT CallbackOutput);
- 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;
- ULONGLONG ExceptionRecord;
- ULONGLONG ExceptionAddress;
- ULONG NumberParameters;
- ULONG __unusedAlignment;
- ULONGLONG 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;
- } u;
- ULONGLONG Flags;
- } MINIDUMP_HEADER, *PMINIDUMP_HEADER;
- typedef struct _MINIDUMP_MEMORY_DESCRIPTOR
- {
- ULONGLONG StartOfMemoryRange;
- MINIDUMP_LOCATION_DESCRIPTOR Memory;
- } MINIDUMP_MEMORY_DESCRIPTOR, *PMINIDUMP_MEMORY_DESCRIPTOR;
- typedef struct _MINIDUMP_MODULE
- {
- ULONGLONG BaseOfImage;
- ULONG SizeOfImage;
- ULONG CheckSum;
- ULONG TimeDateStamp;
- RVA ModuleNameRva;
- VS_FIXEDFILEINFO VersionInfo;
- MINIDUMP_LOCATION_DESCRIPTOR CvRecord;
- MINIDUMP_LOCATION_DESCRIPTOR MiscRecord;
- ULONGLONG Reserved0;
- ULONGLONG 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_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,
- LastReservedStream = 0xffff
- } MINIDUMP_STREAM_TYPE;
- typedef struct _MINIDUMP_SYSTEM_INFO
- {
- USHORT ProcessorArchitecture;
- USHORT ProcessorLevel;
- USHORT ProcessorRevision;
- USHORT Reserved0;
- ULONG MajorVersion;
- ULONG MinorVersion;
- ULONG BuildNumber;
- ULONG PlatformId;
- RVA CSDVersionRva;
- ULONG Reserved1;
- union _CPU_INFORMATION
- {
- struct
- {
- ULONG VendorId[3];
- ULONG VersionInformation;
- ULONG FeatureInformation;
- ULONG AMDExtendedCpuFeatures;
- } X86CpuInfo;
- struct
- {
- ULONGLONG ProcessorFeatures[2];
- } OtherCpuInfo;
- } Cpu;
- } MINIDUMP_SYSTEM_INFO, *PMINIDUMP_SYSTEM_INFO;
- typedef struct _MINIDUMP_THREAD
- {
- ULONG ThreadId;
- ULONG SuspendCount;
- ULONG PriorityClass;
- ULONG Priority;
- ULONGLONG 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;
- 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 */
|