diff options
Diffstat (limited to 'winsup/w32api/include/imagehlp.h')
-rw-r--r-- | winsup/w32api/include/imagehlp.h | 326 |
1 files changed, 326 insertions, 0 deletions
diff --git a/winsup/w32api/include/imagehlp.h b/winsup/w32api/include/imagehlp.h new file mode 100644 index 000000000..2a3eb6f08 --- /dev/null +++ b/winsup/w32api/include/imagehlp.h @@ -0,0 +1,326 @@ +/* + imagehlp.h - Include file for IMAGEHLP.DLL APIs + + Written by Mumit Khan <khan@nanotech.wisc.edu> + + This file is part of a free library for the Win32 API. + + NOTE: This strictly does not belong in the Win32 API since it's + really part of Platform SDK. However,GDB needs it and we might + as well provide it here. + + 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. + +*/ + +#ifndef _IMAGEHLP_H +#define _IMAGEHLP_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define API_VERSION_NUMBER 7 +#define BIND_NO_BOUND_IMPORTS 0x00000001 +#define BIND_NO_UPDATE 0x00000002 +#define BIND_ALL_IMAGES 0x00000004 +#define BIND_CACHE_IMPORT_DLLS 0x00000008 +#define CBA_DEFERRED_SYMBOL_LOAD_START 1 +#define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE 2 +#define CBA_DEFERRED_SYMBOL_LOAD_FAILURE 3 +#define CBA_SYMBOLS_UNLOADED 4 +#define CBA_DUPLICATE_SYMBOL 5 +#define CERT_PE_IMAGE_DIGEST_DEBUG_INFO 1 +#define CERT_PE_IMAGE_DIGEST_RESOURCES 2 +#define CERT_PE_IMAGE_DIGEST_ALL_IMPORT_INFO 4 +#define CERT_PE_IMAGE_DIGEST_NON_PE_INFO 8 +#define CERT_SECTION_TYPE_ANY 255 +#define CHECKSUM_SUCCESS 0 +#define CHECKSUM_OPEN_FAILURE 1 +#define CHECKSUM_MAP_FAILURE 2 +#define CHECKSUM_MAPVIEW_FAILURE 3 +#define CHECKSUM_UNICODE_FAILURE 4 +#define IMAGE_SEPARATION 65536 +#define SPLITSYM_REMOVE_PRIVATE 1 +#define SPLITSYM_EXTRACT_ALL 2 +#define SPLITSYM_SYMBOLPATH_IS_SRC 4 +#define SYMF_OMAP_GENERATED 1 +#define SYMF_OMAP_MODIFIED 2 +#define SYMOPT_CASE_INSENSITIVE 1 +#define SYMOPT_UNDNAME 2 +#define SYMOPT_DEFERRED_LOADS 4 +#define SYMOPT_NO_CPP 8 +#define SYMOPT_LOAD_LINES 16 +#define SYMOPT_OMAP_FIND_NEAREST 32 +#define UNDNAME_COMPLETE 0 +#define UNDNAME_NO_LEADING_UNDERSCORES 1 +#define UNDNAME_NO_MS_KEYWORDS 2 +#define UNDNAME_NO_FUNCTION_RETURNS 4 +#define UNDNAME_NO_ALLOCATION_MODEL 8 +#define UNDNAME_NO_ALLOCATION_LANGUAGE 16 +#define UNDNAME_NO_MS_THISTYPE 32 +#define UNDNAME_NO_CV_THISTYPE 64 +#define UNDNAME_NO_THISTYPE 96 +#define UNDNAME_NO_ACCESS_SPECIFIERS 128 +#define UNDNAME_NO_THROW_SIGNATURES 256 +#define UNDNAME_NO_MEMBER_TYPE 512 +#define UNDNAME_NO_RETURN_UDT_MODEL 1024 +#define UNDNAME_32_BIT_DECODE 2048 +#define UNDNAME_NAME_ONLY 4096 +#define UNDNAME_NO_ARGUMENTS 8192 +#define UNDNAME_NO_SPECIAL_SYMS 16384 + +#define _IMAGEHLPAPI DECLSPEC_IMPORT WINAPI + +#ifndef RC_INVOKED + +typedef enum _IMAGEHLP_STATUS_REASON { + BindOutOfMemory, + BindRvaToVaFailed, + BindNoRoomInImage, + BindImportModuleFailed, + BindImportProcedureFailed, + BindImportModule, + BindImportProcedure, + BindForwarder, + BindForwarderNOT, + BindImageModified, + BindExpandFileHeaders, + BindImageComplete, + BindMismatchedSymbols, + BindSymbolsNotUpdated +} IMAGEHLP_STATUS_REASON; +typedef BOOL(STDCALL*PIMAGEHLP_STATUS_ROUTINE)(IMAGEHLP_STATUS_REASON,LPSTR,LPSTR,ULONG,ULONG); +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; +typedef struct _IMAGE_DEBUG_INFORMATION { + LIST_ENTRY List; + DWORD Size; + PVOID MappedBase; + USHORT Machine; + USHORT Characteristics; + DWORD CheckSum; + DWORD ImageBase; + DWORD SizeOfImage; + DWORD NumberOfSections; + PIMAGE_SECTION_HEADER Sections; + DWORD ExportedNamesSize; + LPSTR ExportedNames; + DWORD NumberOfFunctionTableEntries; + PIMAGE_FUNCTION_ENTRY FunctionTableEntries; + DWORD LowestFunctionStartingAddress; + DWORD HighestFunctionEndingAddress; + DWORD NumberOfFpoTableEntries; + PFPO_DATA FpoTableEntries; + DWORD SizeOfCoffSymbols; + PIMAGE_COFF_SYMBOLS_HEADER CoffSymbols; + DWORD SizeOfCodeViewSymbols; + PVOID CodeViewSymbols; + LPSTR ImageFilePath; + LPSTR ImageFileName; + LPSTR DebugFilePath; + DWORD TimeDateStamp; + BOOL RomImage; + PIMAGE_DEBUG_DIRECTORY DebugDirectory; + DWORD NumberOfDebugDirectories; + DWORD Reserved[3]; +} IMAGE_DEBUG_INFORMATION,*PIMAGE_DEBUG_INFORMATION; +typedef enum { + AddrMode1616, + AddrMode1632, + AddrModeReal, + AddrModeFlat +} ADDRESS_MODE; +typedef struct _tagADDRESS { + DWORD Offset; + WORD Segment; + ADDRESS_MODE Mode; +} ADDRESS,*LPADDRESS; +typedef struct _KDHELP { + DWORD Thread; + DWORD ThCallbackStack; + DWORD NextCallback; + DWORD FramePointer; + DWORD KiCallUserMode; + DWORD KeUserCallbackDispatcher; + DWORD SystemRangeStart; +} KDHELP,*PKDHELP; +typedef struct _tagSTACKFRAME { + ADDRESS AddrPC; + ADDRESS AddrReturn; + ADDRESS AddrFrame; + ADDRESS AddrStack; + LPVOID FuncTableEntry; + DWORD Params[4]; + BOOL Far; + BOOL Virtual; + DWORD Reserved[3]; + KDHELP KdHelp; +} STACKFRAME,*LPSTACKFRAME; +typedef BOOL(STDCALL*PREAD_PROCESS_MEMORY_ROUTINE)(HANDLE ,LPCVOID,LPVOID,DWORD,LPDWORD); +typedef LPVOID(STDCALL*PFUNCTION_TABLE_ACCESS_ROUTINE)(HANDLE,DWORD); +typedef DWORD(STDCALL*PGET_MODULE_BASE_ROUTINE)(HANDLE,DWORD); +typedef DWORD(STDCALL*PTRANSLATE_ADDRESS_ROUTINE)(HANDLE,HANDLE,LPADDRESS); +typedef struct API_VERSION { + USHORT MajorVersion; + USHORT MinorVersion; + USHORT Revision; + USHORT Reserved; +} API_VERSION,*LPAPI_VERSION; +typedef BOOL(CALLBACK*PSYM_ENUMMODULES_CALLBACK)(LPSTR,ULONG,PVOID); +typedef BOOL(CALLBACK*PSYM_ENUMSYMBOLS_CALLBACK)(LPSTR,ULONG,ULONG,PVOID); +typedef BOOL(CALLBACK*PENUMLOADED_MODULES_CALLBACK)(LPSTR,ULONG,ULONG,PVOID); +typedef BOOL(CALLBACK*PSYMBOL_REGISTERED_CALLBACK)(HANDLE,ULONG,PVOID,PVOID); +typedef enum { + SymNone, + SymCoff, + SymCv, + SymPdb, + SymExport, + SymDeferred, + SymSym +} 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_LINE { + DWORD SizeOfStruct; + DWORD Key; + DWORD LineNumber; + PCHAR FileName; + DWORD Address; +} IMAGEHLP_LINE,*PIMAGEHLP_LINE; +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; + ULONG SelectedSymbol; +} IMAGEHLP_DUPLICATE_SYMBOL,*PIMAGEHLP_DUPLICATE_SYMBOL; +typedef PVOID DIGEST_HANDLE; +typedef BOOL(WINAPI*DIGEST_FUNCTION)(DIGEST_HANDLE refdata,PBYTE pData,DWORD dwLength); + +PIMAGE_NT_HEADERS _IMAGEHLPAPI CheckSumMappedFile(LPVOID,DWORD,LPDWORD,LPDWORD); +DWORD _IMAGEHLPAPI MapFileAndCheckSumA(LPSTR,LPDWORD,LPDWORD); +DWORD _IMAGEHLPAPI MapFileAndCheckSumW(PWSTR,LPDWORD,LPDWORD); +BOOL _IMAGEHLPAPI TouchFileTimes(HANDLE,LPSYSTEMTIME); +BOOL _IMAGEHLPAPI SplitSymbols(LPSTR,LPSTR,LPSTR,DWORD); +HANDLE _IMAGEHLPAPI FindDebugInfoFile(LPSTR,LPSTR,LPSTR); +HANDLE _IMAGEHLPAPI FindExecutableImage(LPSTR,LPSTR,LPSTR); +BOOL _IMAGEHLPAPI UpdateDebugInfoFile(LPSTR,LPSTR,LPSTR,PIMAGE_NT_HEADERS); +BOOL _IMAGEHLPAPI UpdateDebugInfoFileEx(LPSTR,LPSTR,LPSTR,PIMAGE_NT_HEADERS,DWORD); +BOOL _IMAGEHLPAPI BindImage(IN LPSTR,IN LPSTR,IN LPSTR); +BOOL _IMAGEHLPAPI BindImageEx(IN DWORD,IN LPSTR,IN LPSTR,IN LPSTR,IN PIMAGEHLP_STATUS_ROUTINE); +BOOL _IMAGEHLPAPI ReBaseImage(IN LPSTR,IN LPSTR,IN BOOL, IN BOOL,IN BOOL, IN ULONG, OUT ULONG*, OUT ULONG*, OUT ULONG*, IN OUT ULONG*, IN ULONG); + +PLOADED_IMAGE _IMAGEHLPAPI ImageLoad(LPSTR,LPSTR); +BOOL _IMAGEHLPAPI ImageUnload(PLOADED_IMAGE); +PIMAGE_NT_HEADERS _IMAGEHLPAPI ImageNtHeader(IN PVOID); +PVOID _IMAGEHLPAPI ImageDirectoryEntryToData(IN PVOID,IN BOOLEAN,IN USHORT,OUT PULONG); +PIMAGE_SECTION_HEADER _IMAGEHLPAPI ImageRvaToSection(IN PIMAGE_NT_HEADERS,IN PVOID,IN ULONG); +PVOID _IMAGEHLPAPI ImageRvaToVa(IN PIMAGE_NT_HEADERS,IN PVOID,IN ULONG,IN OUT PIMAGE_SECTION_HEADER*); +BOOL _IMAGEHLPAPI MapAndLoad(LPSTR,LPSTR,PLOADED_IMAGE,BOOL,BOOL); +BOOL _IMAGEHLPAPI GetImageConfigInformation(PLOADED_IMAGE,PIMAGE_LOAD_CONFIG_DIRECTORY); +DWORD _IMAGEHLPAPI GetImageUnusedHeaderBytes(PLOADED_IMAGE,LPDWORD); +BOOL _IMAGEHLPAPI SetImageConfigInformation(PLOADED_IMAGE,PIMAGE_LOAD_CONFIG_DIRECTORY); +BOOL _IMAGEHLPAPI UnMapAndLoad(PLOADED_IMAGE); +PIMAGE_DEBUG_INFORMATION _IMAGEHLPAPI MapDebugInformation(HANDLE,LPSTR,LPSTR,DWORD); +BOOL _IMAGEHLPAPI UnmapDebugInformation(PIMAGE_DEBUG_INFORMATION); +HANDLE _IMAGEHLPAPI FindExecutableImage(LPSTR,LPSTR,LPSTR); +BOOL _IMAGEHLPAPI SearchTreeForFile(LPSTR,LPSTR,LPSTR); +BOOL _IMAGEHLPAPI MakeSureDirectoryPathExists(LPCSTR); +DWORD _IMAGEHLPAPI WINAPI UnDecorateSymbolName(LPCSTR,LPSTR,DWORD, DWORD); +BOOL +_IMAGEHLPAPI +StackWalk(DWORD,HANDLE,HANDLE,LPSTACKFRAME,LPVOID,PREAD_PROCESS_MEMORY_ROUTINE,PFUNCTION_TABLE_ACCESS_ROUTINE,PGET_MODULE_BASE_ROUTINE,PTRANSLATE_ADDRESS_ROUTINE); +LPAPI_VERSION _IMAGEHLPAPI ImagehlpApiVersion(VOID); +LPAPI_VERSION _IMAGEHLPAPI ImagehlpApiVersionEx(LPAPI_VERSION); +DWORD _IMAGEHLPAPI GetTimestampForLoadedLibrary(HMODULE); +BOOL _IMAGEHLPAPI RemovePrivateCvSymbolic(PCHAR,PCHAR*,ULONG*); +VOID _IMAGEHLPAPI RemoveRelocations(PCHAR); +DWORD _IMAGEHLPAPI SymSetOptions(IN DWORD); +DWORD _IMAGEHLPAPI SymGetOptions(VOID); +BOOL _IMAGEHLPAPI SymCleanup(IN HANDLE); +BOOL _IMAGEHLPAPI SymEnumerateModules(IN HANDLE,IN PSYM_ENUMMODULES_CALLBACK,IN PVOID); +BOOL _IMAGEHLPAPI SymEnumerateSymbols(IN HANDLE,IN DWORD,IN PSYM_ENUMSYMBOLS_CALLBACK,IN PVOID); +BOOL _IMAGEHLPAPI EnumerateLoadedModules(IN HANDLE,IN PENUMLOADED_MODULES_CALLBACK,IN PVOID); +LPVOID _IMAGEHLPAPI SymFunctionTableAccess(HANDLE,DWORD); +BOOL _IMAGEHLPAPI SymGetModuleInfo(IN HANDLE,IN DWORD,OUT PIMAGEHLP_MODULE); +DWORD _IMAGEHLPAPI SymGetModuleBase(IN HANDLE,IN DWORD); +BOOL _IMAGEHLPAPI SymGetSymFromAddr(IN HANDLE,IN DWORD,OUT PDWORD,OUT PIMAGEHLP_SYMBOL); +BOOL _IMAGEHLPAPI SymGetSymFromName(IN HANDLE,IN LPSTR,OUT PIMAGEHLP_SYMBOL); +BOOL _IMAGEHLPAPI SymGetSymNext(IN HANDLE,IN OUT PIMAGEHLP_SYMBOL); +BOOL _IMAGEHLPAPI SymGetSymPrev(IN HANDLE,IN OUT PIMAGEHLP_SYMBOL); +BOOL _IMAGEHLPAPI SymGetLineFromAddr(IN HANDLE,IN DWORD,OUT PDWORD,OUT PIMAGEHLP_LINE); +BOOL _IMAGEHLPAPI SymGetLineFromName(IN HANDLE,IN LPSTR,IN LPSTR,IN DWORD,OUT PLONG,IN OUT PIMAGEHLP_LINE); +BOOL _IMAGEHLPAPI SymGetLineNext(IN HANDLE,IN OUT PIMAGEHLP_LINE); +BOOL _IMAGEHLPAPI SymGetLinePrev(IN HANDLE,IN OUT PIMAGEHLP_LINE); +BOOL _IMAGEHLPAPI SymMatchFileName(IN LPSTR,IN LPSTR,OUT LPSTR*,OUT LPSTR*); +BOOL _IMAGEHLPAPI SymInitialize(IN HANDLE,IN LPSTR,IN BOOL); +BOOL _IMAGEHLPAPI SymGetSearchPath(IN HANDLE,OUT LPSTR,IN DWORD); +BOOL _IMAGEHLPAPI SymSetSearchPath(IN HANDLE,IN LPSTR); +BOOL _IMAGEHLPAPI SymLoadModule(IN HANDLE,IN HANDLE,IN PSTR,IN PSTR,IN DWORD,IN DWORD); +BOOL _IMAGEHLPAPI SymUnloadModule(IN HANDLE,IN DWORD); +BOOL _IMAGEHLPAPI SymUnDName(IN PIMAGEHLP_SYMBOL,OUT LPSTR,IN DWORD); +BOOL _IMAGEHLPAPI SymRegisterCallback(IN HANDLE,IN PSYMBOL_REGISTERED_CALLBACK,IN PVOID); +BOOL _IMAGEHLPAPI ImageGetDigestStream(IN HANDLE,IN DWORD,IN DIGEST_FUNCTION,IN DIGEST_HANDLE); +BOOL _IMAGEHLPAPI ImageAddCertificate(IN HANDLE,IN LPWIN_CERTIFICATE,OUT PDWORD); +BOOL _IMAGEHLPAPI ImageRemoveCertificate(IN HANDLE,IN DWORD); +BOOL _IMAGEHLPAPI ImageEnumerateCertificates(IN HANDLE,IN WORD,OUT PDWORD,IN OUT PDWORD OPTIONAL,IN OUT DWORD OPTIONAL); +BOOL _IMAGEHLPAPI ImageGetCertificateData(IN HANDLE,IN DWORD,OUT LPWIN_CERTIFICATE,IN OUT PDWORD); +BOOL _IMAGEHLPAPI ImageGetCertificateHeader(IN HANDLE,IN DWORD,IN OUT LPWIN_CERTIFICATE); +BOOL _IMAGEHLPAPI CopyPdb(CHAR const*,CHAR const*,BOOL); +BOOL _IMAGEHLPAPI RemovePrivateCvSymbolicEx(PCHAR,ULONG,PCHAR*,ULONG*); + +#endif /* RC_INVOKED */ + +#ifdef UNICODE +#define MapFileAndCheckSum MapFileAndCheckSumW +#else +#define MapFileAndCheckSum MapFileAndCheckSumA +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _IMAGEHLP_H */ + |