home *** CD-ROM | disk | FTP | other *** search
- /*
- 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 */
-
-