X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/95d328f9ca4dd6ccd2065c6c84aca83d43001804..dff9e15c44ab6340d27215957c56fa72fad246a2:/src/include/xbt/wine_dbghelp.h diff --git a/src/include/xbt/wine_dbghelp.h b/src/include/xbt/wine_dbghelp.h index df71f2aac9..25339b56a9 100644 --- a/src/include/xbt/wine_dbghelp.h +++ b/src/include/xbt/wine_dbghelp.h @@ -25,54 +25,50 @@ #ifdef __cplusplus extern "C" { -#endif /* defined(__cplusplus) */ +#endif /* defined(__cplusplus) */ #define IMAGEAPI WINAPI #define DBHLPAPI IMAGEAPI -typedef struct _LOADED_IMAGE -{ - PSTR 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; - BOOLEAN fReadOnly; - UCHAR Version; - LIST_ENTRY Links; - ULONG SizeOfImage; -} LOADED_IMAGE, *PLOADED_IMAGE; + typedef struct _LOADED_IMAGE { + PSTR 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; + BOOLEAN fReadOnly; + UCHAR Version; + LIST_ENTRY Links; + ULONG SizeOfImage; + } LOADED_IMAGE, *PLOADED_IMAGE; /************************* * IMAGEHLP equiv * *************************/ -typedef enum -{ + typedef enum { AddrMode1616, AddrMode1632, AddrModeReal, AddrModeFlat -} ADDRESS_MODE; - -typedef struct _tagADDRESS -{ - DWORD Offset; - WORD Segment; - ADDRESS_MODE Mode; -} ADDRESS, *LPADDRESS; - -typedef struct _tagADDRESS64 -{ - DWORD64 Offset; - WORD Segment; - ADDRESS_MODE Mode; -} ADDRESS64, *LPADDRESS64; + } ADDRESS_MODE; + + typedef struct _tagADDRESS { + DWORD Offset; + WORD Segment; + ADDRESS_MODE Mode; + } ADDRESS, *LPADDRESS; + + typedef struct _tagADDRESS64 { + DWORD64 Offset; + WORD Segment; + ADDRESS_MODE Mode; + } ADDRESS64, *LPADDRESS64; #define SYMF_OMAP_GENERATED 0x00000001 #define SYMF_OMAP_MODIFIED 0x00000002 @@ -90,8 +86,7 @@ typedef struct _tagADDRESS64 #define SYMF_THUNK 0x00002000 #define SYMF_TLSREL 0x00004000 -typedef enum -{ + typedef enum { SymNone = 0, SymCoff, SymCv, @@ -102,167 +97,154 @@ typedef enum SymDia, SymVirtual, 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_SYMBOL64 -{ - DWORD SizeOfStruct; - DWORD64 Address; - DWORD Size; - DWORD Flags; - DWORD MaxNameLength; - CHAR Name[1]; -} IMAGEHLP_SYMBOL64, *PIMAGEHLP_SYMBOL64; - -typedef struct _IMAGEHLP_SYMBOLW64 -{ - DWORD SizeOfStruct; - DWORD64 Address; - DWORD Size; - DWORD Flags; - DWORD MaxNameLength; - WCHAR Name[1]; -} IMAGEHLP_SYMBOLW64, *PIMAGEHLP_SYMBOLW64; - -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_MODULE64 -{ - DWORD SizeOfStruct; - DWORD64 BaseOfImage; - DWORD ImageSize; - DWORD TimeDateStamp; - DWORD CheckSum; - DWORD NumSyms; - SYM_TYPE SymType; - CHAR ModuleName[32]; - CHAR ImageName[256]; - CHAR LoadedImageName[256]; - CHAR LoadedPdbName[256]; - DWORD CVSig; - CHAR CVData[MAX_PATH*3]; - DWORD PdbSig; - GUID PdbSig70; - DWORD PdbAge; - BOOL PdbUnmatched; - BOOL DbgUnmatched; - BOOL LineNumbers; - BOOL GlobalSymbols; - BOOL TypeInfo; - BOOL SourceIndexed; - BOOL Publics; -} IMAGEHLP_MODULE64, *PIMAGEHLP_MODULE64; - -typedef struct _IMAGEHLP_MODULEW64 -{ - DWORD SizeOfStruct; - DWORD64 BaseOfImage; - DWORD ImageSize; - DWORD TimeDateStamp; - DWORD CheckSum; - DWORD NumSyms; - SYM_TYPE SymType; - WCHAR ModuleName[32]; - WCHAR ImageName[256]; - WCHAR LoadedImageName[256]; - WCHAR LoadedPdbName[256]; - DWORD CVSig; - WCHAR CVData[MAX_PATH*3]; - DWORD PdbSig; - GUID PdbSig70; - DWORD PdbAge; - BOOL PdbUnmatched; - BOOL DbgUnmatched; - BOOL LineNumbers; - BOOL GlobalSymbols; - BOOL TypeInfo; - BOOL SourceIndexed; - BOOL Publics; -} IMAGEHLP_MODULEW64, *PIMAGEHLP_MODULEW64; - -typedef struct _IMAGEHLP_LINE -{ - DWORD SizeOfStruct; - PVOID Key; - DWORD LineNumber; - PCHAR FileName; - DWORD Address; -} IMAGEHLP_LINE, *PIMAGEHLP_LINE; - -typedef struct _IMAGEHLP_LINEW -{ - DWORD SizeOfStruct; - PVOID Key; - DWORD LineNumber; - PWSTR FileName; - DWORD Address; -} IMAGEHLP_LINEW, *PIMAGEHLP_LINEW; - -typedef struct _IMAGEHLP_LINE64 -{ - DWORD SizeOfStruct; - PVOID Key; - DWORD LineNumber; - PCHAR FileName; - DWORD64 Address; -} IMAGEHLP_LINE64, *PIMAGEHLP_LINE64; - -typedef struct _IMAGEHLP_LINEW64 -{ - DWORD SizeOfStruct; - PVOID Key; - DWORD LineNumber; - PWSTR FileName; - DWORD64 Address; -} IMAGEHLP_LINEW64, *PIMAGEHLP_LINEW64; - -typedef struct _SOURCEFILE -{ - DWORD64 ModBase; - PCHAR FileName; -} SOURCEFILE, *PSOURCEFILE; - -typedef struct _SOURCEFILEW -{ - DWORD64 ModBase; - PWSTR FileName; -} SOURCEFILEW, *PSOURCEFILEW; + } 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_SYMBOL64 { + DWORD SizeOfStruct; + DWORD64 Address; + DWORD Size; + DWORD Flags; + DWORD MaxNameLength; + CHAR Name[1]; + } IMAGEHLP_SYMBOL64, *PIMAGEHLP_SYMBOL64; + + typedef struct _IMAGEHLP_SYMBOLW64 { + DWORD SizeOfStruct; + DWORD64 Address; + DWORD Size; + DWORD Flags; + DWORD MaxNameLength; + WCHAR Name[1]; + } IMAGEHLP_SYMBOLW64, *PIMAGEHLP_SYMBOLW64; + + 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_MODULE64 { + DWORD SizeOfStruct; + DWORD64 BaseOfImage; + DWORD ImageSize; + DWORD TimeDateStamp; + DWORD CheckSum; + DWORD NumSyms; + SYM_TYPE SymType; + CHAR ModuleName[32]; + CHAR ImageName[256]; + CHAR LoadedImageName[256]; + CHAR LoadedPdbName[256]; + DWORD CVSig; + CHAR CVData[MAX_PATH * 3]; + DWORD PdbSig; + GUID PdbSig70; + DWORD PdbAge; + BOOL PdbUnmatched; + BOOL DbgUnmatched; + BOOL LineNumbers; + BOOL GlobalSymbols; + BOOL TypeInfo; + BOOL SourceIndexed; + BOOL Publics; + } IMAGEHLP_MODULE64, *PIMAGEHLP_MODULE64; + + typedef struct _IMAGEHLP_MODULEW64 { + DWORD SizeOfStruct; + DWORD64 BaseOfImage; + DWORD ImageSize; + DWORD TimeDateStamp; + DWORD CheckSum; + DWORD NumSyms; + SYM_TYPE SymType; + WCHAR ModuleName[32]; + WCHAR ImageName[256]; + WCHAR LoadedImageName[256]; + WCHAR LoadedPdbName[256]; + DWORD CVSig; + WCHAR CVData[MAX_PATH * 3]; + DWORD PdbSig; + GUID PdbSig70; + DWORD PdbAge; + BOOL PdbUnmatched; + BOOL DbgUnmatched; + BOOL LineNumbers; + BOOL GlobalSymbols; + BOOL TypeInfo; + BOOL SourceIndexed; + BOOL Publics; + } IMAGEHLP_MODULEW64, *PIMAGEHLP_MODULEW64; + + typedef struct _IMAGEHLP_LINE { + DWORD SizeOfStruct; + PVOID Key; + DWORD LineNumber; + PCHAR FileName; + DWORD Address; + } IMAGEHLP_LINE, *PIMAGEHLP_LINE; + + typedef struct _IMAGEHLP_LINEW { + DWORD SizeOfStruct; + PVOID Key; + DWORD LineNumber; + PWSTR FileName; + DWORD Address; + } IMAGEHLP_LINEW, *PIMAGEHLP_LINEW; + + typedef struct _IMAGEHLP_LINE64 { + DWORD SizeOfStruct; + PVOID Key; + DWORD LineNumber; + PCHAR FileName; + DWORD64 Address; + } IMAGEHLP_LINE64, *PIMAGEHLP_LINE64; + + typedef struct _IMAGEHLP_LINEW64 { + DWORD SizeOfStruct; + PVOID Key; + DWORD LineNumber; + PWSTR FileName; + DWORD64 Address; + } IMAGEHLP_LINEW64, *PIMAGEHLP_LINEW64; + + typedef struct _SOURCEFILE { + DWORD64 ModBase; + PCHAR FileName; + } SOURCEFILE, *PSOURCEFILE; + + typedef struct _SOURCEFILEW { + DWORD64 ModBase; + PWSTR FileName; + } SOURCEFILEW, *PSOURCEFILEW; #define CBA_DEFERRED_SYMBOL_LOAD_START 0x00000001 #define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE 0x00000002 @@ -276,85 +258,77 @@ typedef struct _SOURCEFILEW #define CBA_DEFERRED_SYMBOL_LOAD_PARTIAL 0x00000020 #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; + typedef struct _IMAGEHLP_CBA_READ_MEMORY { + DWORD64 addr; + PVOID buf; + DWORD bytes; + DWORD *bytesread; + } IMAGEHLP_CBA_READ_MEMORY, *PIMAGEHLP_CBA_READ_MEMORY; -enum -{ + enum { sevInfo = 0, sevProblem, sevAttn, sevFatal, sevMax -}; + }; #define EVENT_SRCSPEW_START 100 #define EVENT_SRCSPEW 100 #define EVENT_SRCSPEW_END 199 -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; - HANDLE hFile; -} IMAGEHLP_DEFERRED_SYMBOL_LOAD, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD; - -typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD64 -{ - DWORD SizeOfStruct; - DWORD64 BaseOfImage; - DWORD CheckSum; - DWORD TimeDateStamp; - CHAR FileName[MAX_PATH]; - BOOLEAN Reparse; - HANDLE hFile; - DWORD Flags; -} IMAGEHLP_DEFERRED_SYMBOL_LOAD64, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD64; - -typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOADW64 -{ - DWORD SizeOfStruct; - DWORD64 BaseOfImage; - DWORD CheckSum; - DWORD TimeDateStamp; - WCHAR FileName[MAX_PATH + 1]; - BOOLEAN Reparse; - HANDLE hFile; - DWORD Flags; -} IMAGEHLP_DEFERRED_SYMBOL_LOADW64, *PIMAGEHLP_DEFERRED_SYMBOL_LOADW64; - -typedef struct _IMAGEHLP_DUPLICATE_SYMBOL -{ - DWORD SizeOfStruct; - DWORD NumberOfDups; - PIMAGEHLP_SYMBOL Symbol; - DWORD SelectedSymbol; -} IMAGEHLP_DUPLICATE_SYMBOL, *PIMAGEHLP_DUPLICATE_SYMBOL; - -typedef struct _IMAGEHLP_DUPLICATE_SYMBOL64 -{ - DWORD SizeOfStruct; - DWORD NumberOfDups; - PIMAGEHLP_SYMBOL64 Symbol; - DWORD SelectedSymbol; -} IMAGEHLP_DUPLICATE_SYMBOL64, *PIMAGEHLP_DUPLICATE_SYMBOL64; + 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; + HANDLE hFile; + } IMAGEHLP_DEFERRED_SYMBOL_LOAD, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD; + + typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD64 { + DWORD SizeOfStruct; + DWORD64 BaseOfImage; + DWORD CheckSum; + DWORD TimeDateStamp; + CHAR FileName[MAX_PATH]; + BOOLEAN Reparse; + HANDLE hFile; + DWORD Flags; + } IMAGEHLP_DEFERRED_SYMBOL_LOAD64, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD64; + + typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOADW64 { + DWORD SizeOfStruct; + DWORD64 BaseOfImage; + DWORD CheckSum; + DWORD TimeDateStamp; + WCHAR FileName[MAX_PATH + 1]; + BOOLEAN Reparse; + HANDLE hFile; + DWORD Flags; + } IMAGEHLP_DEFERRED_SYMBOL_LOADW64, *PIMAGEHLP_DEFERRED_SYMBOL_LOADW64; + + typedef struct _IMAGEHLP_DUPLICATE_SYMBOL { + DWORD SizeOfStruct; + DWORD NumberOfDups; + PIMAGEHLP_SYMBOL Symbol; + DWORD SelectedSymbol; + } IMAGEHLP_DUPLICATE_SYMBOL, *PIMAGEHLP_DUPLICATE_SYMBOL; + + typedef struct _IMAGEHLP_DUPLICATE_SYMBOL64 { + DWORD SizeOfStruct; + DWORD NumberOfDups; + PIMAGEHLP_SYMBOL64 Symbol; + DWORD SelectedSymbol; + } IMAGEHLP_DUPLICATE_SYMBOL64, *PIMAGEHLP_DUPLICATE_SYMBOL64; #define SYMOPT_CASE_INSENSITIVE 0x00000001 #define SYMOPT_UNDNAME 0x00000002 @@ -385,31 +359,29 @@ typedef struct _IMAGEHLP_DUPLICATE_SYMBOL64 #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; + 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; + typedef struct _DBGHELP_MODLOAD_DATA { + DWORD ssize; + DWORD ssig; + PVOID data; + DWORD size; + DWORD flags; + } MODLOAD_DATA, *PMODLOAD_DATA; /************************* * MiniDUMP * @@ -418,363 +390,324 @@ typedef struct _DBGHELP_MODLOAD_DATA #include /* DebugHelp */ -#define MINIDUMP_SIGNATURE 0x504D444D /* 'MDMP' */ +#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 -{ + 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 -{ + } 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, + } 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 -{ + ThreadWriteThreadData = 0x0020, + ThreadWriteThreadInfo = 0x0040 + } THREAD_WRITE_FLAGS; + + typedef struct _MINIDUMP_MODULE_CALLBACK { + PWCHAR FullPath; ULONG64 BaseOfImage; -} MINIDUMP_INCLUDE_MODULE_CALLBACK, *PMINIDUMP_INCLUDE_MODULE_CALLBACK; - -typedef enum _MODULE_WRITE_FLAGS -{ - ModuleWriteModule = 0x0001, - ModuleWriteDataSeg = 0x0002, - ModuleWriteMiscRecord = 0x0004, - ModuleWriteCvRecord = 0x0008, + 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; + 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; + } 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_LOCATION_DESCRIPTOR64 -{ - ULONG64 DataSize; - RVA64 Rva; -} MINIDUMP_LOCATION_DESCRIPTOR64; - -typedef struct _MINIDUMP_DIRECTORY -{ - ULONG StreamType; + } 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_LOCATION_DESCRIPTOR64 { + ULONG64 DataSize; + RVA64 Rva; + } MINIDUMP_LOCATION_DESCRIPTOR64; + + 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_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; + } 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; + ULONG64 Flags; + } MINIDUMP_HEADER, *PMINIDUMP_HEADER; -typedef struct _MINIDUMP_MEMORY_DESCRIPTOR -{ - ULONG64 StartOfMemoryRange; + typedef struct _MINIDUMP_MEMORY_DESCRIPTOR { + ULONG64 StartOfMemoryRange; MINIDUMP_LOCATION_DESCRIPTOR Memory; -} MINIDUMP_MEMORY_DESCRIPTOR, *PMINIDUMP_MEMORY_DESCRIPTOR; + } 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; + 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; + 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; + 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; + 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; + 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; + } MINIDUMP_SYSTEM_INFO, *PMINIDUMP_SYSTEM_INFO; -typedef struct _MINIDUMP_THREAD -{ - ULONG ThreadId; - ULONG SuspendCount; - ULONG PriorityClass; - ULONG Priority; - ULONG64 Teb; - MINIDUMP_MEMORY_DESCRIPTOR Stack; + 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*); + } 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 *); #include @@ -786,32 +719,44 @@ BOOL WINAPI MiniDumpReadDumpStream(PVOID, ULONG, PMINIDUMP_DIRECTORY*, PVOID*, #define SLMFLAG_VIRTUAL 0x1 #define SLMFLAG_NO_SYMBOLS 0x4 -typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK)(PSTR, ULONG, ULONG, PVOID); -BOOL WINAPI EnumerateLoadedModules(HANDLE, PENUMLOADED_MODULES_CALLBACK, PVOID); -typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACK64)(PCSTR, DWORD64, ULONG, PVOID); -BOOL WINAPI EnumerateLoadedModules64(HANDLE, PENUMLOADED_MODULES_CALLBACK64, PVOID); -typedef BOOL (CALLBACK *PENUMLOADED_MODULES_CALLBACKW64)(PCWSTR, DWORD64, ULONG, PVOID); -BOOL WINAPI EnumerateLoadedModulesW64(HANDLE, PENUMLOADED_MODULES_CALLBACKW64, PVOID); -typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK)(PCSTR, ULONG, PVOID); -BOOL WINAPI SymEnumerateModules(HANDLE, PSYM_ENUMMODULES_CALLBACK, PVOID); -typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACK64)(PCSTR, DWORD64, PVOID); -BOOL WINAPI SymEnumerateModules64(HANDLE, PSYM_ENUMMODULES_CALLBACK64, PVOID); -typedef BOOL (CALLBACK *PSYM_ENUMMODULES_CALLBACKW64)(PCWSTR, DWORD64, PVOID); -BOOL WINAPI SymEnumerateModulesW64(HANDLE, PSYM_ENUMMODULES_CALLBACKW64, PVOID); -BOOL WINAPI SymGetModuleInfo(HANDLE, DWORD, PIMAGEHLP_MODULE); -BOOL WINAPI SymGetModuleInfoW(HANDLE, DWORD, PIMAGEHLP_MODULEW); -BOOL WINAPI SymGetModuleInfo64(HANDLE, DWORD64, PIMAGEHLP_MODULE64); -BOOL WINAPI SymGetModuleInfoW64(HANDLE, DWORD64, PIMAGEHLP_MODULEW64); -DWORD WINAPI SymGetModuleBase(HANDLE, DWORD); -DWORD64 WINAPI SymGetModuleBase64(HANDLE, DWORD64); -DWORD WINAPI SymLoadModule(HANDLE, HANDLE, PCSTR, PCSTR, DWORD, DWORD); -DWORD64 WINAPI SymLoadModule64(HANDLE, HANDLE, PCSTR, PCSTR, DWORD64, DWORD); -DWORD64 WINAPI SymLoadModuleEx(HANDLE, HANDLE, PCSTR, PCSTR, DWORD64, DWORD, - PMODLOAD_DATA, DWORD); -DWORD64 WINAPI SymLoadModuleExW(HANDLE, HANDLE, PCWSTR, PCWSTR, DWORD64, DWORD, - PMODLOAD_DATA, DWORD); -BOOL WINAPI SymUnloadModule(HANDLE, DWORD); -BOOL WINAPI SymUnloadModule64(HANDLE, DWORD64); + typedef BOOL(CALLBACK * PENUMLOADED_MODULES_CALLBACK) (PSTR, ULONG, ULONG, + PVOID); + BOOL WINAPI EnumerateLoadedModules(HANDLE, PENUMLOADED_MODULES_CALLBACK, + PVOID); + typedef BOOL(CALLBACK * PENUMLOADED_MODULES_CALLBACK64) (PCSTR, DWORD64, + ULONG, PVOID); + BOOL WINAPI EnumerateLoadedModules64(HANDLE, PENUMLOADED_MODULES_CALLBACK64, + PVOID); + typedef BOOL(CALLBACK * PENUMLOADED_MODULES_CALLBACKW64) (PCWSTR, DWORD64, + ULONG, PVOID); + BOOL WINAPI EnumerateLoadedModulesW64(HANDLE, + PENUMLOADED_MODULES_CALLBACKW64, + PVOID); + typedef BOOL(CALLBACK * PSYM_ENUMMODULES_CALLBACK) (PCSTR, ULONG, PVOID); + BOOL WINAPI SymEnumerateModules(HANDLE, PSYM_ENUMMODULES_CALLBACK, PVOID); + typedef BOOL(CALLBACK * PSYM_ENUMMODULES_CALLBACK64) (PCSTR, DWORD64, + PVOID); + BOOL WINAPI SymEnumerateModules64(HANDLE, PSYM_ENUMMODULES_CALLBACK64, + PVOID); + typedef BOOL(CALLBACK * PSYM_ENUMMODULES_CALLBACKW64) (PCWSTR, DWORD64, + PVOID); + BOOL WINAPI SymEnumerateModulesW64(HANDLE, PSYM_ENUMMODULES_CALLBACKW64, + PVOID); + BOOL WINAPI SymGetModuleInfo(HANDLE, DWORD, PIMAGEHLP_MODULE); + BOOL WINAPI SymGetModuleInfoW(HANDLE, DWORD, PIMAGEHLP_MODULEW); + BOOL WINAPI SymGetModuleInfo64(HANDLE, DWORD64, PIMAGEHLP_MODULE64); + BOOL WINAPI SymGetModuleInfoW64(HANDLE, DWORD64, PIMAGEHLP_MODULEW64); + DWORD WINAPI SymGetModuleBase(HANDLE, DWORD); + DWORD64 WINAPI SymGetModuleBase64(HANDLE, DWORD64); + DWORD WINAPI SymLoadModule(HANDLE, HANDLE, PCSTR, PCSTR, DWORD, DWORD); + DWORD64 WINAPI SymLoadModule64(HANDLE, HANDLE, PCSTR, PCSTR, DWORD64, + DWORD); + DWORD64 WINAPI SymLoadModuleEx(HANDLE, HANDLE, PCSTR, PCSTR, DWORD64, DWORD, + PMODLOAD_DATA, DWORD); + DWORD64 WINAPI SymLoadModuleExW(HANDLE, HANDLE, PCWSTR, PCWSTR, DWORD64, + DWORD, PMODLOAD_DATA, DWORD); + BOOL WINAPI SymUnloadModule(HANDLE, DWORD); + BOOL WINAPI SymUnloadModule64(HANDLE, DWORD64); /************************* * Symbol Handling * @@ -819,10 +764,10 @@ BOOL WINAPI SymUnloadModule64(HANDLE, DWORD64); #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_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_LOCAL SYMF_LOCAL /* 0x80 */ #define IMAGEHLP_SYMBOL_INFO_CONSTANT SYMF_CONSTANT /* 0x100 */ #define IMAGEHLP_SYMBOL_FUNCTION SYMF_FUNCTION /* 0x800 */ @@ -843,46 +788,43 @@ BOOL WINAPI SymUnloadModule64(HANDLE, DWORD64); #define MAX_SYM_NAME 2000 -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 struct _SYMBOL_INFOW -{ - ULONG SizeOfStruct; - ULONG TypeIndex; - ULONG64 Reserved[2]; - ULONG Index; - ULONG Size; - ULONG64 ModBase; - ULONG Flags; - ULONG64 Value; - ULONG64 Address; - ULONG Register; - ULONG Scope; - ULONG Tag; - ULONG NameLen; - ULONG MaxNameLen; - WCHAR Name[1]; -} SYMBOL_INFOW, *PSYMBOL_INFOW; - -typedef enum _IMAGEHLP_SYMBOL_TYPE_INFO -{ + 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 struct _SYMBOL_INFOW { + ULONG SizeOfStruct; + ULONG TypeIndex; + ULONG64 Reserved[2]; + ULONG Index; + ULONG Size; + ULONG64 ModBase; + ULONG Flags; + ULONG64 Value; + ULONG64 Address; + ULONG Register; + ULONG Scope; + ULONG Tag; + ULONG NameLen; + ULONG MaxNameLen; + WCHAR Name[1]; + } SYMBOL_INFOW, *PSYMBOL_INFOW; + + typedef enum _IMAGEHLP_SYMBOL_TYPE_INFO { TI_GET_SYMTAG, TI_GET_SYMNAME, TI_GET_LENGTH, @@ -910,38 +852,36 @@ typedef enum _IMAGEHLP_SYMBOL_TYPE_INFO TI_GET_UDTKIND, TI_IS_EQUIV_TO, TI_GET_CALLING_CONVENTION, -} IMAGEHLP_SYMBOL_TYPE_INFO; + } IMAGEHLP_SYMBOL_TYPE_INFO; #define IMAGEHLP_GET_TYPE_INFO_UNCACHED 0x00000001 #define IMAGEHLP_GET_TYPE_INFO_CHILDREN 0x00000002 -typedef struct _IMAGEHLP_GET_TYPE_INFO_PARAMS -{ - ULONG SizeOfStruct; - ULONG Flags; - ULONG NumIds; - PULONG TypeIds; - ULONG64 TagFilter; - ULONG NumReqs; - IMAGEHLP_SYMBOL_TYPE_INFO* ReqKinds; - PULONG_PTR ReqOffsets; - PULONG ReqSizes; - ULONG_PTR ReqStride; - ULONG_PTR BufferSize; - PVOID Buffer; - ULONG EntriesMatched; - ULONG EntriesFilled; - ULONG64 TagsFound; - ULONG64 AllReqsValid; - ULONG NumReqsValid; - PULONG64 ReqsValid; -} IMAGEHLP_GET_TYPE_INFO_PARAMS, *PIMAGEHLP_GET_TYPE_INFO_PARAMS; - -typedef struct _TI_FINDCHILDREN_PARAMS -{ + typedef struct _IMAGEHLP_GET_TYPE_INFO_PARAMS { + ULONG SizeOfStruct; + ULONG Flags; + ULONG NumIds; + PULONG TypeIds; + ULONG64 TagFilter; + ULONG NumReqs; + IMAGEHLP_SYMBOL_TYPE_INFO *ReqKinds; + PULONG_PTR ReqOffsets; + PULONG ReqSizes; + ULONG_PTR ReqStride; + ULONG_PTR BufferSize; + PVOID Buffer; + ULONG EntriesMatched; + ULONG EntriesFilled; + ULONG64 TagsFound; + ULONG64 AllReqsValid; + ULONG NumReqsValid; + PULONG64 ReqsValid; + } IMAGEHLP_GET_TYPE_INFO_PARAMS, *PIMAGEHLP_GET_TYPE_INFO_PARAMS; + + typedef struct _TI_FINDCHILDREN_PARAMS { ULONG Count; ULONG Start; ULONG ChildId[1]; -} TI_FINDCHILDREN_PARAMS; + } TI_FINDCHILDREN_PARAMS; #define UNDNAME_COMPLETE (0x0000) #define UNDNAME_NO_LEADING_UNDERSCORES (0x0001) @@ -965,183 +905,231 @@ typedef struct _TI_FINDCHILDREN_PARAMS #define SYMSEARCH_RECURSE 0x02 #define SYMSEARCH_GLOBALSONLY 0x04 -BOOL WINAPI SymGetTypeInfo(HANDLE, DWORD64, ULONG, IMAGEHLP_SYMBOL_TYPE_INFO, PVOID); -BOOL WINAPI SymGetTypeInfoEx(HANDLE, DWORD64, PIMAGEHLP_GET_TYPE_INFO_PARAMS); -typedef BOOL (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACK)(PSYMBOL_INFO, ULONG, PVOID); -typedef BOOL (CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACKW)(PSYMBOL_INFOW, ULONG, PVOID); -BOOL WINAPI SymEnumTypes(HANDLE, ULONG64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID); -BOOL WINAPI SymEnumTypesW(HANDLE, ULONG64, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID); -BOOL WINAPI SymFromAddr(HANDLE, DWORD64, DWORD64*, SYMBOL_INFO*); -BOOL WINAPI SymFromAddrW(HANDLE, DWORD64, DWORD64*, SYMBOL_INFOW*); -BOOL WINAPI SymFromToken(HANDLE, DWORD64, DWORD, PSYMBOL_INFO); -BOOL WINAPI SymFromTokenW(HANDLE, DWORD64, DWORD, PSYMBOL_INFOW); -BOOL WINAPI SymFromName(HANDLE, PCSTR, PSYMBOL_INFO); -BOOL WINAPI SymFromNameW(HANDLE, PCWSTR, PSYMBOL_INFOW); -BOOL WINAPI SymGetSymFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_SYMBOL); -BOOL WINAPI SymGetSymFromAddr64(HANDLE, DWORD64, PDWORD64, PIMAGEHLP_SYMBOL64); -BOOL WINAPI SymGetSymFromName(HANDLE, PCSTR, PIMAGEHLP_SYMBOL); -BOOL WINAPI SymGetSymFromName64(HANDLE, PCSTR, PIMAGEHLP_SYMBOL64); -BOOL WINAPI SymGetTypeFromName(HANDLE, ULONG64, PCSTR, PSYMBOL_INFO); -BOOL WINAPI SymGetTypeFromNameW(HANDLE, ULONG64, PCWSTR, PSYMBOL_INFOW); -BOOL WINAPI SymGetSymNext(HANDLE, PIMAGEHLP_SYMBOL); -BOOL WINAPI SymGetSymNext64(HANDLE, PIMAGEHLP_SYMBOL64); -BOOL WINAPI SymGetSymNextW64(HANDLE, PIMAGEHLP_SYMBOLW64); -BOOL WINAPI SymGetSymPrev(HANDLE, PIMAGEHLP_SYMBOL); -BOOL WINAPI SymGetSymPrev64(HANDLE, PIMAGEHLP_SYMBOL64); -BOOL WINAPI SymGetSymPrevW64(HANDLE, PIMAGEHLP_SYMBOLW64); -BOOL WINAPI SymEnumSymbols(HANDLE, ULONG64, PCSTR, PSYM_ENUMERATESYMBOLS_CALLBACK, + BOOL WINAPI SymGetTypeInfo(HANDLE, DWORD64, ULONG, + IMAGEHLP_SYMBOL_TYPE_INFO, PVOID); + BOOL WINAPI SymGetTypeInfoEx(HANDLE, DWORD64, + PIMAGEHLP_GET_TYPE_INFO_PARAMS); + typedef BOOL(CALLBACK * PSYM_ENUMERATESYMBOLS_CALLBACK) (PSYMBOL_INFO, + ULONG, PVOID); + typedef BOOL(CALLBACK * PSYM_ENUMERATESYMBOLS_CALLBACKW) (PSYMBOL_INFOW, + ULONG, PVOID); + BOOL WINAPI SymEnumTypes(HANDLE, ULONG64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID); -BOOL WINAPI SymEnumSymbolsW(HANDLE, ULONG64, PCWSTR, PSYM_ENUMERATESYMBOLS_CALLBACKW, + BOOL WINAPI SymEnumTypesW(HANDLE, ULONG64, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID); -typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)(PCSTR, DWORD, ULONG, PVOID); -typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACKW)(PCWSTR, DWORD, ULONG, PVOID); -BOOL WINAPI SymEnumerateSymbols(HANDLE, ULONG, PSYM_ENUMSYMBOLS_CALLBACK, PVOID); -BOOL WINAPI SymEnumerateSymbolsW(HANDLE, ULONG, PSYM_ENUMSYMBOLS_CALLBACKW, PVOID); -typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64)(PCSTR, DWORD64, ULONG, PVOID); -typedef BOOL (CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64W)(PCWSTR, DWORD64, ULONG, PVOID); -BOOL WINAPI SymEnumerateSymbols64(HANDLE, ULONG64, PSYM_ENUMSYMBOLS_CALLBACK64, PVOID); -BOOL WINAPI SymEnumerateSymbolsW64(HANDLE, ULONG64, PSYM_ENUMSYMBOLS_CALLBACK64W, PVOID); -BOOL WINAPI SymEnumSymbolsForAddr(HANDLE, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID); -BOOL WINAPI SymEnumSymbolsForAddrW(HANDLE, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID); -typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK)(HANDLE, ULONG, PVOID, PVOID); -BOOL WINAPI SymRegisterCallback(HANDLE, PSYMBOL_REGISTERED_CALLBACK, PVOID); -typedef BOOL (CALLBACK *PSYMBOL_REGISTERED_CALLBACK64)(HANDLE, ULONG, ULONG64, ULONG64); -BOOL WINAPI SymRegisterCallback64(HANDLE, PSYMBOL_REGISTERED_CALLBACK64, ULONG64); -BOOL WINAPI SymRegisterCallbackW64(HANDLE, PSYMBOL_REGISTERED_CALLBACK64, ULONG64); -BOOL WINAPI SymUnDName(PIMAGEHLP_SYMBOL, PSTR, DWORD); -BOOL WINAPI SymUnDName64(PIMAGEHLP_SYMBOL64, PSTR, DWORD); -BOOL WINAPI SymMatchString(PCSTR, PCSTR, BOOL); -BOOL WINAPI SymMatchStringA(PCSTR, PCSTR, BOOL); -BOOL WINAPI SymMatchStringW(PCWSTR, PCWSTR, BOOL); -BOOL WINAPI SymSearch(HANDLE, ULONG64, DWORD, DWORD, PCSTR, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID, DWORD); -BOOL WINAPI SymSearchW(HANDLE, ULONG64, DWORD, DWORD, PCWSTR, DWORD64, PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID, DWORD); -DWORD WINAPI UnDecorateSymbolName(PCSTR, PSTR, DWORD, DWORD); -DWORD WINAPI UnDecorateSymbolNameW(PCWSTR, PWSTR, DWORD, DWORD); -BOOL WINAPI SymGetScope(HANDLE, ULONG64, DWORD, PSYMBOL_INFO); -BOOL WINAPI SymGetScopeW(HANDLE, ULONG64, DWORD, PSYMBOL_INFOW); -BOOL WINAPI SymFromIndex(HANDLE, ULONG64, DWORD, PSYMBOL_INFO); -BOOL WINAPI SymFromIndexW(HANDLE, ULONG64, DWORD, PSYMBOL_INFOW); -BOOL WINAPI SymAddSymbol(HANDLE, ULONG64, PCSTR, DWORD64, DWORD, DWORD); -BOOL WINAPI SymAddSymbolW(HANDLE, ULONG64, PCWSTR, DWORD64, DWORD, DWORD); -BOOL WINAPI SymDeleteSymbol(HANDLE, ULONG64, PCSTR, DWORD64, DWORD); -BOOL WINAPI SymDeleteSymbolW(HANDLE, ULONG64, PCWSTR, DWORD64, DWORD); + BOOL WINAPI SymFromAddr(HANDLE, DWORD64, DWORD64 *, SYMBOL_INFO *); + BOOL WINAPI SymFromAddrW(HANDLE, DWORD64, DWORD64 *, SYMBOL_INFOW *); + BOOL WINAPI SymFromToken(HANDLE, DWORD64, DWORD, PSYMBOL_INFO); + BOOL WINAPI SymFromTokenW(HANDLE, DWORD64, DWORD, PSYMBOL_INFOW); + BOOL WINAPI SymFromName(HANDLE, PCSTR, PSYMBOL_INFO); + BOOL WINAPI SymFromNameW(HANDLE, PCWSTR, PSYMBOL_INFOW); + BOOL WINAPI SymGetSymFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_SYMBOL); + BOOL WINAPI SymGetSymFromAddr64(HANDLE, DWORD64, PDWORD64, + PIMAGEHLP_SYMBOL64); + BOOL WINAPI SymGetSymFromName(HANDLE, PCSTR, PIMAGEHLP_SYMBOL); + BOOL WINAPI SymGetSymFromName64(HANDLE, PCSTR, PIMAGEHLP_SYMBOL64); + BOOL WINAPI SymGetTypeFromName(HANDLE, ULONG64, PCSTR, PSYMBOL_INFO); + BOOL WINAPI SymGetTypeFromNameW(HANDLE, ULONG64, PCWSTR, PSYMBOL_INFOW); + BOOL WINAPI SymGetSymNext(HANDLE, PIMAGEHLP_SYMBOL); + BOOL WINAPI SymGetSymNext64(HANDLE, PIMAGEHLP_SYMBOL64); + BOOL WINAPI SymGetSymNextW64(HANDLE, PIMAGEHLP_SYMBOLW64); + BOOL WINAPI SymGetSymPrev(HANDLE, PIMAGEHLP_SYMBOL); + BOOL WINAPI SymGetSymPrev64(HANDLE, PIMAGEHLP_SYMBOL64); + BOOL WINAPI SymGetSymPrevW64(HANDLE, PIMAGEHLP_SYMBOLW64); + BOOL WINAPI SymEnumSymbols(HANDLE, ULONG64, PCSTR, + PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID); + BOOL WINAPI SymEnumSymbolsW(HANDLE, ULONG64, PCWSTR, + PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID); + typedef BOOL(CALLBACK * PSYM_ENUMSYMBOLS_CALLBACK) (PCSTR, DWORD, ULONG, + PVOID); + typedef BOOL(CALLBACK * PSYM_ENUMSYMBOLS_CALLBACKW) (PCWSTR, DWORD, ULONG, + PVOID); + BOOL WINAPI SymEnumerateSymbols(HANDLE, ULONG, PSYM_ENUMSYMBOLS_CALLBACK, + PVOID); + BOOL WINAPI SymEnumerateSymbolsW(HANDLE, ULONG, PSYM_ENUMSYMBOLS_CALLBACKW, + PVOID); + typedef BOOL(CALLBACK * PSYM_ENUMSYMBOLS_CALLBACK64) (PCSTR, DWORD64, ULONG, + PVOID); + typedef BOOL(CALLBACK * PSYM_ENUMSYMBOLS_CALLBACK64W) (PCWSTR, DWORD64, + ULONG, PVOID); + BOOL WINAPI SymEnumerateSymbols64(HANDLE, ULONG64, + PSYM_ENUMSYMBOLS_CALLBACK64, PVOID); + BOOL WINAPI SymEnumerateSymbolsW64(HANDLE, ULONG64, + PSYM_ENUMSYMBOLS_CALLBACK64W, PVOID); + BOOL WINAPI SymEnumSymbolsForAddr(HANDLE, DWORD64, + PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID); + BOOL WINAPI SymEnumSymbolsForAddrW(HANDLE, DWORD64, + PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID); + typedef BOOL(CALLBACK * PSYMBOL_REGISTERED_CALLBACK) (HANDLE, ULONG, PVOID, + PVOID); + BOOL WINAPI SymRegisterCallback(HANDLE, PSYMBOL_REGISTERED_CALLBACK, PVOID); + typedef BOOL(CALLBACK * PSYMBOL_REGISTERED_CALLBACK64) (HANDLE, ULONG, + ULONG64, ULONG64); + BOOL WINAPI SymRegisterCallback64(HANDLE, PSYMBOL_REGISTERED_CALLBACK64, + ULONG64); + BOOL WINAPI SymRegisterCallbackW64(HANDLE, PSYMBOL_REGISTERED_CALLBACK64, + ULONG64); + BOOL WINAPI SymUnDName(PIMAGEHLP_SYMBOL, PSTR, DWORD); + BOOL WINAPI SymUnDName64(PIMAGEHLP_SYMBOL64, PSTR, DWORD); + BOOL WINAPI SymMatchString(PCSTR, PCSTR, BOOL); + BOOL WINAPI SymMatchStringA(PCSTR, PCSTR, BOOL); + BOOL WINAPI SymMatchStringW(PCWSTR, PCWSTR, BOOL); + BOOL WINAPI SymSearch(HANDLE, ULONG64, DWORD, DWORD, PCSTR, DWORD64, + PSYM_ENUMERATESYMBOLS_CALLBACK, PVOID, DWORD); + BOOL WINAPI SymSearchW(HANDLE, ULONG64, DWORD, DWORD, PCWSTR, DWORD64, + PSYM_ENUMERATESYMBOLS_CALLBACKW, PVOID, DWORD); + DWORD WINAPI UnDecorateSymbolName(PCSTR, PSTR, DWORD, DWORD); + DWORD WINAPI UnDecorateSymbolNameW(PCWSTR, PWSTR, DWORD, DWORD); + BOOL WINAPI SymGetScope(HANDLE, ULONG64, DWORD, PSYMBOL_INFO); + BOOL WINAPI SymGetScopeW(HANDLE, ULONG64, DWORD, PSYMBOL_INFOW); + BOOL WINAPI SymFromIndex(HANDLE, ULONG64, DWORD, PSYMBOL_INFO); + BOOL WINAPI SymFromIndexW(HANDLE, ULONG64, DWORD, PSYMBOL_INFOW); + BOOL WINAPI SymAddSymbol(HANDLE, ULONG64, PCSTR, DWORD64, DWORD, DWORD); + BOOL WINAPI SymAddSymbolW(HANDLE, ULONG64, PCWSTR, DWORD64, DWORD, DWORD); + BOOL WINAPI SymDeleteSymbol(HANDLE, ULONG64, PCSTR, DWORD64, DWORD); + BOOL WINAPI SymDeleteSymbolW(HANDLE, ULONG64, PCWSTR, DWORD64, DWORD); /************************* * Source Files * *************************/ -typedef BOOL (CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACK)(PSOURCEFILE, PVOID); -typedef BOOL (CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACKW)(PSOURCEFILEW, PVOID); - -BOOL WINAPI SymEnumSourceFiles(HANDLE, ULONG64, PCSTR, PSYM_ENUMSOURCEFILES_CALLBACK, - PVOID); -BOOL WINAPI SymEnumSourceFilesW(HANDLE, ULONG64, PCWSTR, PSYM_ENUMSOURCEFILES_CALLBACKW, PVOID); -BOOL WINAPI SymGetLineFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_LINE); -BOOL WINAPI SymGetLineFromAddrW(HANDLE, DWORD, PDWORD, PIMAGEHLP_LINEW); -BOOL WINAPI SymGetLineFromAddr64(HANDLE, DWORD64, PDWORD, PIMAGEHLP_LINE64); -BOOL WINAPI SymGetLineFromAddrW64(HANDLE, DWORD64, PDWORD, PIMAGEHLP_LINEW64); -BOOL WINAPI SymGetLinePrev(HANDLE, PIMAGEHLP_LINE); -BOOL WINAPI SymGetLinePrevW(HANDLE, PIMAGEHLP_LINEW); -BOOL WINAPI SymGetLinePrev64(HANDLE, PIMAGEHLP_LINE64); -BOOL WINAPI SymGetLinePrevW64(HANDLE, PIMAGEHLP_LINEW64); -BOOL WINAPI SymGetLineNext(HANDLE, PIMAGEHLP_LINE); -BOOL WINAPI SymGetLineNextW(HANDLE, PIMAGEHLP_LINEW); -BOOL WINAPI SymGetLineNext64(HANDLE, PIMAGEHLP_LINE64); -BOOL WINAPI SymGetLineNextW64(HANDLE, PIMAGEHLP_LINEW64); -BOOL WINAPI SymGetLineFromName(HANDLE, PCSTR, PCSTR, DWORD, PLONG, PIMAGEHLP_LINE); -BOOL WINAPI SymGetLineFromName64(HANDLE, PCSTR, PCSTR, DWORD, PLONG, PIMAGEHLP_LINE64); -BOOL WINAPI SymGetLineFromNameW64(HANDLE, PCWSTR, PCWSTR, DWORD, PLONG, PIMAGEHLP_LINEW64); -ULONG WINAPI SymGetFileLineOffsets64(HANDLE, PCSTR, PCSTR, PDWORD64, ULONG); -BOOL WINAPI SymGetSourceFile(HANDLE, ULONG64, PCSTR, PCSTR, PSTR, DWORD); -BOOL WINAPI SymGetSourceFileW(HANDLE, ULONG64, PCWSTR, PCWSTR, PWSTR, DWORD); -BOOL WINAPI SymGetSourceFileToken(HANDLE, ULONG64, PCSTR, PVOID*, DWORD*); -BOOL WINAPI SymGetSourceFileTokenW(HANDLE, ULONG64, PCWSTR, PVOID*, DWORD*); -BOOL WINAPI SymGetSourceFileFromToken(HANDLE, PVOID, PCSTR, PSTR, DWORD); -BOOL WINAPI SymGetSourceFileFromTokenW(HANDLE, PVOID, PCWSTR, PWSTR, DWORD); -BOOL WINAPI SymGetSourceVarFromToken(HANDLE, PVOID, PCSTR, PCSTR, PSTR, DWORD); -BOOL WINAPI SymGetSourceVarFromTokenW(HANDLE, PVOID, PCWSTR, PCWSTR, PWSTR, DWORD); - -typedef struct _SRCCODEINFO -{ - DWORD SizeOfStruct; - PVOID Key; - DWORD64 ModBase; - CHAR Obj[MAX_PATH+1]; - CHAR FileName[MAX_PATH+1]; - DWORD LineNumber; - DWORD64 Address; -} SRCCODEINFO, *PSRCCODEINFO; - -typedef struct _SRCCODEINFOW -{ - DWORD SizeOfStruct; - PVOID Key; - DWORD64 ModBase; - WCHAR Obj[MAX_PATH+1]; - WCHAR FileName[MAX_PATH+1]; - DWORD LineNumber; - DWORD64 Address; -} SRCCODEINFOW, *PSRCCODEINFOW; - -typedef BOOL (CALLBACK* PSYM_ENUMLINES_CALLBACK)(PSRCCODEINFO, PVOID); -typedef BOOL (CALLBACK* PSYM_ENUMLINES_CALLBACKW)(PSRCCODEINFOW, PVOID); -BOOL WINAPI SymEnumLines(HANDLE, ULONG64, PCSTR, PCSTR, PSYM_ENUMLINES_CALLBACK, PVOID); -BOOL WINAPI SymEnumLinesW(HANDLE, ULONG64, PCWSTR, PCWSTR, PSYM_ENUMLINES_CALLBACKW, PVOID); -BOOL WINAPI SymEnumSourceLines(HANDLE, ULONG64, PCSTR, PCSTR, DWORD, DWORD, PSYM_ENUMLINES_CALLBACK, PVOID); -BOOL WINAPI SymEnumSourceLinesW(HANDLE, ULONG64, PCWSTR, PCWSTR, DWORD, DWORD, PSYM_ENUMLINES_CALLBACKW, PVOID); + typedef BOOL(CALLBACK * PSYM_ENUMSOURCEFILES_CALLBACK) (PSOURCEFILE, PVOID); + typedef BOOL(CALLBACK * PSYM_ENUMSOURCEFILES_CALLBACKW) (PSOURCEFILEW, + PVOID); + + BOOL WINAPI SymEnumSourceFiles(HANDLE, ULONG64, PCSTR, + PSYM_ENUMSOURCEFILES_CALLBACK, PVOID); + BOOL WINAPI SymEnumSourceFilesW(HANDLE, ULONG64, PCWSTR, + PSYM_ENUMSOURCEFILES_CALLBACKW, PVOID); + BOOL WINAPI SymGetLineFromAddr(HANDLE, DWORD, PDWORD, PIMAGEHLP_LINE); + BOOL WINAPI SymGetLineFromAddrW(HANDLE, DWORD, PDWORD, PIMAGEHLP_LINEW); + BOOL WINAPI SymGetLineFromAddr64(HANDLE, DWORD64, PDWORD, PIMAGEHLP_LINE64); + BOOL WINAPI SymGetLineFromAddrW64(HANDLE, DWORD64, PDWORD, + PIMAGEHLP_LINEW64); + BOOL WINAPI SymGetLinePrev(HANDLE, PIMAGEHLP_LINE); + BOOL WINAPI SymGetLinePrevW(HANDLE, PIMAGEHLP_LINEW); + BOOL WINAPI SymGetLinePrev64(HANDLE, PIMAGEHLP_LINE64); + BOOL WINAPI SymGetLinePrevW64(HANDLE, PIMAGEHLP_LINEW64); + BOOL WINAPI SymGetLineNext(HANDLE, PIMAGEHLP_LINE); + BOOL WINAPI SymGetLineNextW(HANDLE, PIMAGEHLP_LINEW); + BOOL WINAPI SymGetLineNext64(HANDLE, PIMAGEHLP_LINE64); + BOOL WINAPI SymGetLineNextW64(HANDLE, PIMAGEHLP_LINEW64); + BOOL WINAPI SymGetLineFromName(HANDLE, PCSTR, PCSTR, DWORD, PLONG, + PIMAGEHLP_LINE); + BOOL WINAPI SymGetLineFromName64(HANDLE, PCSTR, PCSTR, DWORD, PLONG, + PIMAGEHLP_LINE64); + BOOL WINAPI SymGetLineFromNameW64(HANDLE, PCWSTR, PCWSTR, DWORD, PLONG, + PIMAGEHLP_LINEW64); + ULONG WINAPI SymGetFileLineOffsets64(HANDLE, PCSTR, PCSTR, PDWORD64, ULONG); + BOOL WINAPI SymGetSourceFile(HANDLE, ULONG64, PCSTR, PCSTR, PSTR, DWORD); + BOOL WINAPI SymGetSourceFileW(HANDLE, ULONG64, PCWSTR, PCWSTR, PWSTR, + DWORD); + BOOL WINAPI SymGetSourceFileToken(HANDLE, ULONG64, PCSTR, PVOID *, DWORD *); + BOOL WINAPI SymGetSourceFileTokenW(HANDLE, ULONG64, PCWSTR, PVOID *, + DWORD *); + BOOL WINAPI SymGetSourceFileFromToken(HANDLE, PVOID, PCSTR, PSTR, DWORD); + BOOL WINAPI SymGetSourceFileFromTokenW(HANDLE, PVOID, PCWSTR, PWSTR, DWORD); + BOOL WINAPI SymGetSourceVarFromToken(HANDLE, PVOID, PCSTR, PCSTR, PSTR, + DWORD); + BOOL WINAPI SymGetSourceVarFromTokenW(HANDLE, PVOID, PCWSTR, PCWSTR, PWSTR, + DWORD); + + typedef struct _SRCCODEINFO { + DWORD SizeOfStruct; + PVOID Key; + DWORD64 ModBase; + CHAR Obj[MAX_PATH + 1]; + CHAR FileName[MAX_PATH + 1]; + DWORD LineNumber; + DWORD64 Address; + } SRCCODEINFO, *PSRCCODEINFO; + + typedef struct _SRCCODEINFOW { + DWORD SizeOfStruct; + PVOID Key; + DWORD64 ModBase; + WCHAR Obj[MAX_PATH + 1]; + WCHAR FileName[MAX_PATH + 1]; + DWORD LineNumber; + DWORD64 Address; + } SRCCODEINFOW, *PSRCCODEINFOW; + + typedef BOOL(CALLBACK * PSYM_ENUMLINES_CALLBACK) (PSRCCODEINFO, PVOID); + typedef BOOL(CALLBACK * PSYM_ENUMLINES_CALLBACKW) (PSRCCODEINFOW, PVOID); + BOOL WINAPI SymEnumLines(HANDLE, ULONG64, PCSTR, PCSTR, + PSYM_ENUMLINES_CALLBACK, PVOID); + BOOL WINAPI SymEnumLinesW(HANDLE, ULONG64, PCWSTR, PCWSTR, + PSYM_ENUMLINES_CALLBACKW, PVOID); + BOOL WINAPI SymEnumSourceLines(HANDLE, ULONG64, PCSTR, PCSTR, DWORD, DWORD, + PSYM_ENUMLINES_CALLBACK, PVOID); + BOOL WINAPI SymEnumSourceLinesW(HANDLE, ULONG64, PCWSTR, PCWSTR, DWORD, + DWORD, PSYM_ENUMLINES_CALLBACKW, PVOID); /************************* * File & image handling * *************************/ -BOOL WINAPI SymInitialize(HANDLE, PCSTR, BOOL); -BOOL WINAPI SymInitializeW(HANDLE, PCWSTR, BOOL); -BOOL WINAPI SymCleanup(HANDLE); - -HANDLE WINAPI FindDebugInfoFile(PCSTR, PCSTR, PSTR); -typedef BOOL (CALLBACK *PFIND_DEBUG_FILE_CALLBACK)(HANDLE, PCSTR, PVOID); -typedef BOOL (CALLBACK *PFIND_DEBUG_FILE_CALLBACKW)(HANDLE, PCWSTR, PVOID); -HANDLE WINAPI FindDebugInfoFileEx(PCSTR, PCSTR, PSTR, PFIND_DEBUG_FILE_CALLBACK, PVOID); -HANDLE WINAPI FindDebugInfoFileExW(PCWSTR, PCWSTR, PWSTR, PFIND_DEBUG_FILE_CALLBACKW, PVOID); -HANDLE WINAPI SymFindDebugInfoFile(HANDLE, PCSTR, PSTR, PFIND_DEBUG_FILE_CALLBACK, PVOID); -HANDLE WINAPI SymFindDebugInfoFileW(HANDLE, PCWSTR, PWSTR, PFIND_DEBUG_FILE_CALLBACKW, PVOID); -typedef BOOL (CALLBACK *PFINDFILEINPATHCALLBACK)(PCSTR, PVOID); -typedef BOOL (CALLBACK *PFINDFILEINPATHCALLBACKW)(PCWSTR, PVOID); -BOOL WINAPI FindFileInPath(HANDLE, PCSTR, PCSTR, PVOID, DWORD, DWORD, DWORD, - PSTR, PFINDFILEINPATHCALLBACK, PVOID); -BOOL WINAPI SymFindFileInPath(HANDLE, PCSTR, PCSTR, PVOID, DWORD, DWORD, DWORD, - PSTR, PFINDFILEINPATHCALLBACK, PVOID); -BOOL WINAPI SymFindFileInPathW(HANDLE, PCWSTR, PCWSTR, PVOID, DWORD, DWORD, DWORD, - PWSTR, PFINDFILEINPATHCALLBACKW, PVOID); -HANDLE WINAPI FindExecutableImage(PCSTR, PCSTR, PSTR); -typedef BOOL (CALLBACK *PFIND_EXE_FILE_CALLBACK)(HANDLE, PCSTR, PVOID); -typedef BOOL (CALLBACK *PFIND_EXE_FILE_CALLBACKW)(HANDLE, PCWSTR, PVOID); -HANDLE WINAPI FindExecutableImageEx(PCSTR, PCSTR, PSTR, PFIND_EXE_FILE_CALLBACK, PVOID); -HANDLE WINAPI FindExecutableImageExW(PCWSTR, PCWSTR, PWSTR, PFIND_EXE_FILE_CALLBACKW, PVOID); -HANDLE WINAPI SymFindExecutableImage(HANDLE, PCSTR, PSTR, PFIND_EXE_FILE_CALLBACK, PVOID); -HANDLE WINAPI SymFindExecutableImageW(HANDLE, PCWSTR, PWSTR, PFIND_EXE_FILE_CALLBACKW, 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 SymGetSearchPathW(HANDLE, PWSTR, DWORD); -BOOL WINAPI SymSetSearchPath(HANDLE, PCSTR); -BOOL WINAPI SymSetSearchPathW(HANDLE, PCWSTR); -DWORD WINAPI GetTimestampForLoadedLibrary(HMODULE); -BOOL WINAPI MakeSureDirectoryPathExists(PCSTR); -BOOL WINAPI SearchTreeForFile(PCSTR, PCSTR, PSTR); -BOOL WINAPI SearchTreeForFileW(PCWSTR, PCWSTR, PWSTR); -typedef BOOL (CALLBACK *PENUMDIRTREE_CALLBACK)(PCSTR, PVOID); -typedef BOOL (CALLBACK *PENUMDIRTREE_CALLBACKW)(PCWSTR, PVOID); -BOOL WINAPI EnumDirTree(HANDLE, PCSTR, PCSTR, PSTR, PENUMDIRTREE_CALLBACK, PVOID); -BOOL WINAPI EnumDirTreeW(HANDLE, PCWSTR, PCWSTR, PWSTR, PENUMDIRTREE_CALLBACKW, PVOID); -BOOL WINAPI SymMatchFileName(PCSTR, PCSTR, PSTR*, PSTR*); -BOOL WINAPI SymMatchFileNameW(PCWSTR, PCWSTR, PWSTR*, PWSTR*); -PCHAR WINAPI SymSetHomeDirectory(HANDLE, PCSTR); -PWSTR WINAPI SymSetHomeDirectoryW(HANDLE, PCWSTR); -PCHAR WINAPI SymGetHomeDirectory(DWORD, PSTR, size_t); -PWSTR WINAPI SymGetHomeDirectoryW(DWORD, PWSTR, size_t); + BOOL WINAPI SymInitialize(HANDLE, PCSTR, BOOL); + BOOL WINAPI SymInitializeW(HANDLE, PCWSTR, BOOL); + BOOL WINAPI SymCleanup(HANDLE); + + HANDLE WINAPI FindDebugInfoFile(PCSTR, PCSTR, PSTR); + typedef BOOL(CALLBACK * PFIND_DEBUG_FILE_CALLBACK) (HANDLE, PCSTR, PVOID); + typedef BOOL(CALLBACK * PFIND_DEBUG_FILE_CALLBACKW) (HANDLE, PCWSTR, PVOID); + HANDLE WINAPI FindDebugInfoFileEx(PCSTR, PCSTR, PSTR, + PFIND_DEBUG_FILE_CALLBACK, PVOID); + HANDLE WINAPI FindDebugInfoFileExW(PCWSTR, PCWSTR, PWSTR, + PFIND_DEBUG_FILE_CALLBACKW, PVOID); + HANDLE WINAPI SymFindDebugInfoFile(HANDLE, PCSTR, PSTR, + PFIND_DEBUG_FILE_CALLBACK, PVOID); + HANDLE WINAPI SymFindDebugInfoFileW(HANDLE, PCWSTR, PWSTR, + PFIND_DEBUG_FILE_CALLBACKW, PVOID); + typedef BOOL(CALLBACK * PFINDFILEINPATHCALLBACK) (PCSTR, PVOID); + typedef BOOL(CALLBACK * PFINDFILEINPATHCALLBACKW) (PCWSTR, PVOID); + BOOL WINAPI FindFileInPath(HANDLE, PCSTR, PCSTR, PVOID, DWORD, DWORD, DWORD, + PSTR, PFINDFILEINPATHCALLBACK, PVOID); + BOOL WINAPI SymFindFileInPath(HANDLE, PCSTR, PCSTR, PVOID, DWORD, DWORD, + DWORD, PSTR, PFINDFILEINPATHCALLBACK, PVOID); + BOOL WINAPI SymFindFileInPathW(HANDLE, PCWSTR, PCWSTR, PVOID, DWORD, DWORD, + DWORD, PWSTR, PFINDFILEINPATHCALLBACKW, + PVOID); + HANDLE WINAPI FindExecutableImage(PCSTR, PCSTR, PSTR); + typedef BOOL(CALLBACK * PFIND_EXE_FILE_CALLBACK) (HANDLE, PCSTR, PVOID); + typedef BOOL(CALLBACK * PFIND_EXE_FILE_CALLBACKW) (HANDLE, PCWSTR, PVOID); + HANDLE WINAPI FindExecutableImageEx(PCSTR, PCSTR, PSTR, + PFIND_EXE_FILE_CALLBACK, PVOID); + HANDLE WINAPI FindExecutableImageExW(PCWSTR, PCWSTR, PWSTR, + PFIND_EXE_FILE_CALLBACKW, PVOID); + HANDLE WINAPI SymFindExecutableImage(HANDLE, PCSTR, PSTR, + PFIND_EXE_FILE_CALLBACK, PVOID); + HANDLE WINAPI SymFindExecutableImageW(HANDLE, PCWSTR, PWSTR, + PFIND_EXE_FILE_CALLBACKW, 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 SymGetSearchPathW(HANDLE, PWSTR, DWORD); + BOOL WINAPI SymSetSearchPath(HANDLE, PCSTR); + BOOL WINAPI SymSetSearchPathW(HANDLE, PCWSTR); + DWORD WINAPI GetTimestampForLoadedLibrary(HMODULE); + BOOL WINAPI MakeSureDirectoryPathExists(PCSTR); + BOOL WINAPI SearchTreeForFile(PCSTR, PCSTR, PSTR); + BOOL WINAPI SearchTreeForFileW(PCWSTR, PCWSTR, PWSTR); + typedef BOOL(CALLBACK * PENUMDIRTREE_CALLBACK) (PCSTR, PVOID); + typedef BOOL(CALLBACK * PENUMDIRTREE_CALLBACKW) (PCWSTR, PVOID); + BOOL WINAPI EnumDirTree(HANDLE, PCSTR, PCSTR, PSTR, PENUMDIRTREE_CALLBACK, + PVOID); + BOOL WINAPI EnumDirTreeW(HANDLE, PCWSTR, PCWSTR, PWSTR, + PENUMDIRTREE_CALLBACKW, PVOID); + BOOL WINAPI SymMatchFileName(PCSTR, PCSTR, PSTR *, PSTR *); + BOOL WINAPI SymMatchFileNameW(PCWSTR, PCWSTR, PWSTR *, PWSTR *); + PCHAR WINAPI SymSetHomeDirectory(HANDLE, PCSTR); + PWSTR WINAPI SymSetHomeDirectoryW(HANDLE, PCWSTR); + PCHAR WINAPI SymGetHomeDirectory(DWORD, PSTR, size_t); + PWSTR WINAPI SymGetHomeDirectoryW(DWORD, PWSTR, size_t); #define hdBase 0 #define hdSym 1 #define hdSrc 2 @@ -1150,97 +1138,100 @@ PWSTR WINAPI SymGetHomeDirectoryW(DWORD, PWSTR, size_t); /************************* * Context management * *************************/ -BOOL WINAPI SymSetContext(HANDLE, PIMAGEHLP_STACK_FRAME, PIMAGEHLP_CONTEXT); + 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 _KDHELP64 -{ - DWORD64 Thread; - DWORD ThCallbackStack; - DWORD ThCallbackBStore; - DWORD NextCallback; - DWORD FramePointer; - DWORD64 KiCallUserMode; - DWORD64 KeUserCallbackDispatcher; - DWORD64 SystemRangeStart; - DWORD64 Reserved[8]; -} KDHELP64, *PKDHELP64; - -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 struct _STACKFRAME64 -{ - ADDRESS64 AddrPC; - ADDRESS64 AddrReturn; - ADDRESS64 AddrFrame; - ADDRESS64 AddrStack; - ADDRESS64 AddrBStore; - PVOID FuncTableEntry; - DWORD64 Params[4]; - BOOL Far; - BOOL Virtual; - DWORD64 Reserved[3]; - KDHELP64 KdHelp; -} STACKFRAME64, *LPSTACKFRAME64; - -typedef BOOL (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE) + typedef struct _KDHELP { + DWORD Thread; + DWORD ThCallbackStack; + DWORD NextCallback; + DWORD FramePointer; + DWORD KiCallUserMode; + DWORD KeUserCallbackDispatcher; + DWORD SystemRangeStart; + } KDHELP, *PKDHELP; + + typedef struct _KDHELP64 { + DWORD64 Thread; + DWORD ThCallbackStack; + DWORD ThCallbackBStore; + DWORD NextCallback; + DWORD FramePointer; + DWORD64 KiCallUserMode; + DWORD64 KeUserCallbackDispatcher; + DWORD64 SystemRangeStart; + DWORD64 Reserved[8]; + } KDHELP64, *PKDHELP64; + + 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 struct _STACKFRAME64 { + ADDRESS64 AddrPC; + ADDRESS64 AddrReturn; + ADDRESS64 AddrFrame; + ADDRESS64 AddrStack; + ADDRESS64 AddrBStore; + PVOID FuncTableEntry; + DWORD64 Params[4]; + BOOL Far; + BOOL Virtual; + DWORD64 Reserved[3]; + KDHELP64 KdHelp; + } STACKFRAME64, *LPSTACKFRAME64; + + typedef BOOL(CALLBACK * PREAD_PROCESS_MEMORY_ROUTINE) (HANDLE, DWORD, 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); - -typedef BOOL (CALLBACK *PREAD_PROCESS_MEMORY_ROUTINE64) + 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); + + typedef BOOL(CALLBACK * PREAD_PROCESS_MEMORY_ROUTINE64) (HANDLE, DWORD64, PVOID, DWORD, PDWORD); -typedef PVOID (CALLBACK *PFUNCTION_TABLE_ACCESS_ROUTINE64)(HANDLE, DWORD64); -typedef DWORD64 (CALLBACK *PGET_MODULE_BASE_ROUTINE64)(HANDLE, DWORD64); -typedef DWORD64 (CALLBACK *PTRANSLATE_ADDRESS_ROUTINE64)(HANDLE, HANDLE, LPADDRESS64); -BOOL WINAPI StackWalk64(DWORD, HANDLE, HANDLE, LPSTACKFRAME64, PVOID, - PREAD_PROCESS_MEMORY_ROUTINE64, - PFUNCTION_TABLE_ACCESS_ROUTINE64, - PGET_MODULE_BASE_ROUTINE64, - PTRANSLATE_ADDRESS_ROUTINE64); - -PVOID WINAPI SymFunctionTableAccess(HANDLE, DWORD); -PVOID WINAPI SymFunctionTableAccess64(HANDLE, DWORD64); - -typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK)(HANDLE, DWORD, PVOID); -typedef PVOID (CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK64)(HANDLE, ULONG64, ULONG64); - -BOOL WINAPI SymRegisterFunctionEntryCallback(HANDLE, PSYMBOL_FUNCENTRY_CALLBACK, PVOID); -BOOL WINAPI SymRegisterFunctionEntryCallback64(HANDLE, PSYMBOL_FUNCENTRY_CALLBACK64, ULONG64); + typedef PVOID(CALLBACK * PFUNCTION_TABLE_ACCESS_ROUTINE64) (HANDLE, + DWORD64); + typedef DWORD64(CALLBACK * PGET_MODULE_BASE_ROUTINE64) (HANDLE, DWORD64); + typedef DWORD64(CALLBACK * PTRANSLATE_ADDRESS_ROUTINE64) (HANDLE, HANDLE, + LPADDRESS64); + BOOL WINAPI StackWalk64(DWORD, HANDLE, HANDLE, LPSTACKFRAME64, PVOID, + PREAD_PROCESS_MEMORY_ROUTINE64, + PFUNCTION_TABLE_ACCESS_ROUTINE64, + PGET_MODULE_BASE_ROUTINE64, + PTRANSLATE_ADDRESS_ROUTINE64); + + PVOID WINAPI SymFunctionTableAccess(HANDLE, DWORD); + PVOID WINAPI SymFunctionTableAccess64(HANDLE, DWORD64); + + typedef PVOID(CALLBACK * PSYMBOL_FUNCENTRY_CALLBACK) (HANDLE, DWORD, PVOID); + typedef PVOID(CALLBACK * PSYMBOL_FUNCENTRY_CALLBACK64) (HANDLE, ULONG64, + ULONG64); + + BOOL WINAPI SymRegisterFunctionEntryCallback(HANDLE, + PSYMBOL_FUNCENTRY_CALLBACK, + PVOID); + BOOL WINAPI SymRegisterFunctionEntryCallback64(HANDLE, + PSYMBOL_FUNCENTRY_CALLBACK64, + ULONG64); /************************* * Version, global stuff * @@ -1248,77 +1239,80 @@ BOOL WINAPI SymRegisterFunctionEntryCallback64(HANDLE, PSYMBOL_FUNCENTRY_CALLBAC #define API_VERSION_NUMBER 9 -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, PCSTR, PCSTR, ULONG); - -BOOL WINAPI UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION); - -DWORD WINAPI SymGetOptions(void); -DWORD WINAPI SymSetOptions(DWORD); - -BOOL WINAPI SymSetParentWindow(HWND); + 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, PCSTR, PCSTR, + ULONG); + + BOOL WINAPI UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION); + + DWORD WINAPI SymGetOptions(void); + DWORD WINAPI SymSetOptions(DWORD); + + BOOL WINAPI SymSetParentWindow(HWND); /************************* * Version, global stuff * *************************/ -typedef BOOL (WINAPI* PSYMBOLSERVERPROC)(PCSTR, PCSTR, PVOID, DWORD, DWORD, PSTR); -typedef BOOL (WINAPI* PSYMBOLSERVERPROCA)(PCSTR, PCSTR, PVOID, DWORD, DWORD, PSTR); -typedef BOOL (WINAPI* PSYMBOLSERVERPROCW)(PCWSTR, PCWSTR, PVOID, DWORD, DWORD, PWSTR); -typedef BOOL (WINAPI* PSYMBOLSERVEROPENPROC)(void); -typedef BOOL (WINAPI* PSYMBOLSERVERCLOSEPROC)(void); -typedef BOOL (WINAPI* PSYMBOLSERVERSETOPTIONSPROC)(UINT_PTR, ULONG64); -typedef BOOL (CALLBACK* PSYMBOLSERVERCALLBACKPROC)(UINT_PTR, ULONG64, ULONG64); -typedef UINT_PTR (WINAPI* PSYMBOLSERVERGETOPTIONSPROC)(void); -typedef BOOL (WINAPI* PSYMBOLSERVERPINGPROC)(PCSTR); -typedef BOOL (WINAPI* PSYMBOLSERVERPINGPROCA)(PCSTR); -typedef BOOL (WINAPI* PSYMBOLSERVERPINGPROCW)(PCWSTR); + typedef BOOL(WINAPI * PSYMBOLSERVERPROC) (PCSTR, PCSTR, PVOID, DWORD, DWORD, + PSTR); + typedef BOOL(WINAPI * PSYMBOLSERVERPROCA) (PCSTR, PCSTR, PVOID, DWORD, + DWORD, PSTR); + typedef BOOL(WINAPI * PSYMBOLSERVERPROCW) (PCWSTR, PCWSTR, PVOID, DWORD, + DWORD, PWSTR); + typedef BOOL(WINAPI * PSYMBOLSERVEROPENPROC) (void); + typedef BOOL(WINAPI * PSYMBOLSERVERCLOSEPROC) (void); + typedef BOOL(WINAPI * PSYMBOLSERVERSETOPTIONSPROC) (UINT_PTR, ULONG64); + typedef BOOL(CALLBACK * PSYMBOLSERVERCALLBACKPROC) (UINT_PTR, ULONG64, + ULONG64); + typedef UINT_PTR(WINAPI * PSYMBOLSERVERGETOPTIONSPROC) (void); + typedef BOOL(WINAPI * PSYMBOLSERVERPINGPROC) (PCSTR); + typedef BOOL(WINAPI * PSYMBOLSERVERPINGPROCA) (PCSTR); + typedef BOOL(WINAPI * PSYMBOLSERVERPINGPROCW) (PCWSTR); #define SSRVOPT_CALLBACK 0x0001 #define SSRVOPT_DWORD 0x0002 @@ -1341,7 +1335,6 @@ typedef BOOL (WINAPI* PSYMBOLSERVERPINGPROCW)(PCWSTR); #define SSRVACTION_EVENT 3 #ifdef __cplusplus -} /* extern "C" */ -#endif /* defined(__cplusplus) */ - -#endif /* __WINE_DBGHELP_H */ +} /* extern "C" */ +#endif /* defined(__cplusplus) */ +#endif /* __WINE_DBGHELP_H */