imagehlp.h
来自「这是VCF框架的代码」· C头文件 代码 · 共 2,420 行 · 第 1/5 页
H
2,420 行
USHORT MinorVersion; USHORT Revision; USHORT Reserved;} API_VERSION, *LPAPI_VERSION;LPAPI_VERSIONIMAGEAPIImagehlpApiVersion( VOID );LPAPI_VERSIONIMAGEAPIImagehlpApiVersionEx( LPAPI_VERSION AppVersion );DWORDIMAGEAPIGetTimestampForLoadedLibrary( HMODULE Module );//// typedefs for function pointers//typedef BOOL(CALLBACK *PSYM_ENUMMODULES_CALLBACK64)( PSTR ModuleName, DWORD64 BaseOfDll, PVOID UserContext );typedef BOOL(CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64)( PSTR SymbolName, DWORD64 SymbolAddress, ULONG SymbolSize, PVOID UserContext );typedef BOOL(CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64W)( PWSTR SymbolName, DWORD64 SymbolAddress, ULONG SymbolSize, PVOID UserContext );typedef BOOL(CALLBACK *PENUMLOADED_MODULES_CALLBACK64)( PSTR ModuleName, DWORD64 ModuleBase, ULONG ModuleSize, PVOID UserContext );typedef BOOL(CALLBACK *PSYMBOL_REGISTERED_CALLBACK64)( HANDLE hProcess, ULONG ActionCode, ULONG64 CallbackData, ULONG64 UserContext );typedefPVOID(CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK)( HANDLE hProcess, DWORD AddrBase, PVOID UserContext );typedefPVOID(CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK64)( HANDLE hProcess, ULONG64 AddrBase, ULONG64 UserContext );#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)#define PSYM_ENUMMODULES_CALLBACK PSYM_ENUMMODULES_CALLBACK64#define PSYM_ENUMSYMBOLS_CALLBACK PSYM_ENUMSYMBOLS_CALLBACK64#define PSYM_ENUMSYMBOLS_CALLBACKW PSYM_ENUMSYMBOLS_CALLBACK64W#define PENUMLOADED_MODULES_CALLBACK PENUMLOADED_MODULES_CALLBACK64#define PSYMBOL_REGISTERED_CALLBACK PSYMBOL_REGISTERED_CALLBACK64#define PSYMBOL_FUNCENTRY_CALLBACK PSYMBOL_FUNCENTRY_CALLBACK64#elsetypedef BOOL(CALLBACK *PSYM_ENUMMODULES_CALLBACK)( PSTR ModuleName, ULONG BaseOfDll, PVOID UserContext );typedef BOOL(CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)( PSTR SymbolName, ULONG SymbolAddress, ULONG SymbolSize, PVOID UserContext );typedef BOOL(CALLBACK *PSYM_ENUMSYMBOLS_CALLBACKW)( PWSTR SymbolName, ULONG SymbolAddress, ULONG SymbolSize, PVOID UserContext );typedef BOOL(CALLBACK *PENUMLOADED_MODULES_CALLBACK)( PSTR ModuleName, ULONG ModuleBase, ULONG ModuleSize, PVOID UserContext );typedef BOOL(CALLBACK *PSYMBOL_REGISTERED_CALLBACK)( HANDLE hProcess, ULONG ActionCode, PVOID CallbackData, PVOID UserContext );#endif//// symbol flags//#define SYMF_OMAP_GENERATED 0x00000001#define SYMF_OMAP_MODIFIED 0x00000002#ifndef _DBGHELP_USER_GENERATED_SYMBOLS_NOTSUPPORTED #define SYMF_USER_GENERATED 0x00000004#endif // !_DBGHELP_USER_GENERATED_SYMBOLS_NOTSUPPORTED#define SYMF_REGISTER 0x00000008#define SYMF_REGREL 0x00000010#define SYMF_FRAMEREL 0x00000020#define SYMF_PARAMETER 0x00000040#define SYMF_LOCAL 0x00000080#define SYMF_CONSTANT 0x00000100#define SYMF_EXPORT 0x00000200#define SYMF_FORWARDER 0x00000400#define SYMF_FUNCTION 0x00000800//// symbol type enumeration//typedef enum { SymNone = 0, SymCoff, SymCv, SymPdb, SymExport, SymDeferred, SymSym, // .sym file SymDia, NumSymTypes} SYM_TYPE;//// symbol data structure//typedef struct _IMAGEHLP_SYMBOL64 { DWORD SizeOfStruct; // set to sizeof(IMAGEHLP_SYMBOL64) DWORD64 Address; // virtual address including dll base address DWORD Size; // estimated size of symbol, can be zero DWORD Flags; // info about the symbols, see the SYMF defines DWORD MaxNameLength; // maximum size of symbol name in 'Name' CHAR Name[1]; // symbol name (null terminated string)} IMAGEHLP_SYMBOL64, *PIMAGEHLP_SYMBOL64;#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)#define IMAGEHLP_SYMBOL IMAGEHLP_SYMBOL64#define PIMAGEHLP_SYMBOL PIMAGEHLP_SYMBOL64#elsetypedef struct _IMAGEHLP_SYMBOL { DWORD SizeOfStruct; // set to sizeof(IMAGEHLP_SYMBOL) DWORD Address; // virtual address including dll base address DWORD Size; // estimated size of symbol, can be zero DWORD Flags; // info about the symbols, see the SYMF defines DWORD MaxNameLength; // maximum size of symbol name in 'Name' CHAR Name[1]; // symbol name (null terminated string)} IMAGEHLP_SYMBOL, *PIMAGEHLP_SYMBOL;#endif//// module data structure//typedef struct _IMAGEHLP_MODULE64 { DWORD SizeOfStruct; // set to sizeof(IMAGEHLP_MODULE64) DWORD64 BaseOfImage; // base load address of module DWORD ImageSize; // virtual size of the loaded module DWORD TimeDateStamp; // date/time stamp from pe header DWORD CheckSum; // checksum from the pe header DWORD NumSyms; // number of symbols in the symbol table SYM_TYPE SymType; // type of symbols loaded CHAR ModuleName[32]; // module name CHAR ImageName[256]; // image name CHAR LoadedImageName[256]; // symbol file name} IMAGEHLP_MODULE64, *PIMAGEHLP_MODULE64;typedef struct _IMAGEHLP_MODULE64W { DWORD SizeOfStruct; // set to sizeof(IMAGEHLP_MODULE64) DWORD64 BaseOfImage; // base load address of module DWORD ImageSize; // virtual size of the loaded module DWORD TimeDateStamp; // date/time stamp from pe header DWORD CheckSum; // checksum from the pe header DWORD NumSyms; // number of symbols in the symbol table SYM_TYPE SymType; // type of symbols loaded WCHAR ModuleName[32]; // module name WCHAR ImageName[256]; // image name WCHAR LoadedImageName[256]; // symbol file name} IMAGEHLP_MODULEW64, *PIMAGEHLP_MODULEW64;#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)#define IMAGEHLP_MODULE IMAGEHLP_MODULE64#define PIMAGEHLP_MODULE PIMAGEHLP_MODULE64#define IMAGEHLP_MODULEW IMAGEHLP_MODULEW64#define PIMAGEHLP_MODULEW PIMAGEHLP_MODULEW64#elsetypedef struct _IMAGEHLP_MODULE { DWORD SizeOfStruct; // set to sizeof(IMAGEHLP_MODULE) DWORD BaseOfImage; // base load address of module DWORD ImageSize; // virtual size of the loaded module DWORD TimeDateStamp; // date/time stamp from pe header DWORD CheckSum; // checksum from the pe header DWORD NumSyms; // number of symbols in the symbol table SYM_TYPE SymType; // type of symbols loaded CHAR ModuleName[32]; // module name CHAR ImageName[256]; // image name CHAR LoadedImageName[256]; // symbol file name} IMAGEHLP_MODULE, *PIMAGEHLP_MODULE;typedef struct _IMAGEHLP_MODULEW { DWORD SizeOfStruct; // set to sizeof(IMAGEHLP_MODULE) DWORD BaseOfImage; // base load address of module DWORD ImageSize; // virtual size of the loaded module DWORD TimeDateStamp; // date/time stamp from pe header DWORD CheckSum; // checksum from the pe header DWORD NumSyms; // number of symbols in the symbol table SYM_TYPE SymType; // type of symbols loaded WCHAR ModuleName[32]; // module name WCHAR ImageName[256]; // image name WCHAR LoadedImageName[256]; // symbol file name} IMAGEHLP_MODULEW, *PIMAGEHLP_MODULEW;#endif//// source file line data structure//typedef struct _IMAGEHLP_LINE64 { DWORD SizeOfStruct; // set to sizeof(IMAGEHLP_LINE64) PVOID Key; // internal DWORD LineNumber; // line number in file PCHAR FileName; // full filename DWORD64 Address; // first instruction of line} IMAGEHLP_LINE64, *PIMAGEHLP_LINE64;#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)#define IMAGEHLP_LINE IMAGEHLP_LINE64#define PIMAGEHLP_LINE PIMAGEHLP_LINE64#elsetypedef struct _IMAGEHLP_LINE { DWORD SizeOfStruct; // set to sizeof(IMAGEHLP_LINE) PVOID Key; // internal DWORD LineNumber; // line number in file PCHAR FileName; // full filename DWORD Address; // first instruction of line} IMAGEHLP_LINE, *PIMAGEHLP_LINE;#endif//// source file structure//typedef struct _SOURCEFILE { DWORD64 ModBase; // base address of loaded module PCHAR FileName; // full filename of source} SOURCEFILE, *PSOURCEFILE;//// data structures used for registered symbol callbacks//#define CBA_DEFERRED_SYMBOL_LOAD_START 0x00000001#define CBA_DEFERRED_SYMBOL_LOAD_COMPLETE 0x00000002#define CBA_DEFERRED_SYMBOL_LOAD_FAILURE 0x00000003#define CBA_SYMBOLS_UNLOADED 0x00000004#define CBA_DUPLICATE_SYMBOL 0x00000005#define CBA_READ_MEMORY 0x00000006#define CBA_DEFERRED_SYMBOL_LOAD_CANCEL 0x00000007#define CBA_SET_OPTIONS 0x00000008#define CBA_EVENT 0x00000010#define CBA_DEBUG_INFO 0x10000000typedef struct _IMAGEHLP_CBA_READ_MEMORY { DWORD64 addr; // address to read from PVOID buf; // buffer to read to DWORD bytes; // amount of bytes to read DWORD *bytesread; // pointer to store amount of bytes read} IMAGEHLP_CBA_READ_MEMORY, *PIMAGEHLP_CBA_READ_MEMORY;enum { sevInfo = 0, sevProblem, sevAttn, sevFatal, sevMax // unused};typedef struct _IMAGEHLP_CBA_EVENT { DWORD severity; // values from sevInfo to sevFatal DWORD code; // numerical code IDs the error PCHAR desc; // may contain a text description of the error PVOID object; // value dependant upon the error code} IMAGEHLP_CBA_EVENT, *PIMAGEHLP_CBA_EVENT;typedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD64 { DWORD SizeOfStruct; // set to sizeof(IMAGEHLP_DEFERRED_SYMBOL_LOAD64) DWORD64 BaseOfImage; // base load address of module DWORD CheckSum; // checksum from the pe header DWORD TimeDateStamp; // date/time stamp from pe header CHAR FileName[MAX_PATH]; // symbols file or image name BOOLEAN Reparse; // load failure reparse} IMAGEHLP_DEFERRED_SYMBOL_LOAD64, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD64;#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)#define IMAGEHLP_DEFERRED_SYMBOL_LOAD IMAGEHLP_DEFERRED_SYMBOL_LOAD64#define PIMAGEHLP_DEFERRED_SYMBOL_LOAD PIMAGEHLP_DEFERRED_SYMBOL_LOAD64#elsetypedef struct _IMAGEHLP_DEFERRED_SYMBOL_LOAD { DWORD SizeOfStruct; // set to sizeof(IMAGEHLP_DEFERRED_SYMBOL_LOAD) DWORD BaseOfImage; // base load address of module DWORD CheckSum; // checksum from the pe header DWORD TimeDateStamp; // date/time stamp from pe header CHAR FileName[MAX_PATH]; // symbols file or image name BOOLEAN Reparse; // load failure reparse} IMAGEHLP_DEFERRED_SYMBOL_LOAD, *PIMAGEHLP_DEFERRED_SYMBOL_LOAD;#endiftypedef struct _IMAGEHLP_DUPLICATE_SYMBOL64 { DWORD SizeOfStruct; // set to sizeof(IMAGEHLP_DUPLICATE_SYMBOL64) DWORD NumberOfDups; // number of duplicates in the Symbol array PIMAGEHLP_SYMBOL64 Symbol; // array of duplicate symbols DWORD SelectedSymbol; // symbol selected (-1 to start)} IMAGEHLP_DUPLICATE_SYMBOL64, *PIMAGEHLP_DUPLICATE_SYMBOL64;#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)#define IMAGEHLP_DUPLICATE_SYMBOL IMAGEHLP_DUPLICATE_SYMBOL64#define PIMAGEHLP_DUPLICATE_SYMBOL PIMAGEHLP_DUPLICATE_SYMBOL64#elsetypedef struct _IMAGEHLP_DUPLICATE_SYMBOL { DWORD SizeOfStruct; // set to sizeof(IMAGEHLP_DUPLICATE_SYMBOL) DWORD NumberOfDups; // number of duplicates in the Symbol array PIMAGEHLP_SYMBOL Symbol; // array of duplicate symbols DWORD SelectedSymbol; // symbol selected (-1 to start)} IMAGEHLP_DUPLICATE_SYMBOL, *PIMAGEHLP_DUPLICATE_SYMBOL;#endif//// options that are set/returned by SymSetOptions() & SymGetOptions()// these are used as a mask//#define SYMOPT_CASE_INSENSITIVE 0x00000001#define SYMOPT_UNDNAME 0x00000002#define SYMOPT_DEFERRED_LOADS 0x00000004#define SYMOPT_NO_CPP 0x00000008#define SYMOPT_LOAD_LINES 0x00000010#define SYMOPT_OMAP_FIND_NEAREST 0x00000020#define SYMOPT_LOAD_ANYTHING 0x00000040#define SYMOPT_IGNORE_CVREC 0x00000080#define SYMOPT_NO_UNQUALIFIED_LOADS 0x00000100#define SYMOPT_FAIL_CRITICAL_ERRORS 0x00000200#define SYMOPT_EXACT_SYMBOLS 0x00000400#define SYMOPT_WILD_UNDERSCORE 0x00000800#define SYMOPT_USE_DEFAULTS 0x00001000#define SYMOPT_INCLUDE_32BIT_MODULES 0x00002000#define SYMOPT_DEBUG 0x80000000DWORDIMAGEAPISymSetOptions( IN DWORD SymOptions );DWORDIMAGEAPISymGetOptions( VOID );BOOLIMAGEAPISymCleanup( IN HANDLE hProcess );BOOLIMAGEAPISymMatchString( IN LPSTR string, IN LPSTR expression, IN BOOL fCase );typedef BOOL(CALLBACK *PSYM_ENUMSOURCFILES_CALLBACK)( PSOURCEFILE pSourceFile, PVOID UserContext );BOOLIMAGEAPISymEnumSourceFiles( IN HANDLE hProcess, IN ULONG64 ModBase, IN LPSTR Mask, IN PSYM_ENUMSOURCFILES_CALLBACK cbSrcFiles, IN PVOID UserContext );BOOLIMAGEAPISymEnumerateModules64( IN HANDLE hProcess, IN PSYM_ENUMMODULES_CALLBACK64 EnumModulesCallback, IN PVOID UserContext );#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)#define SymEnumerateModules SymEnumerateModules64#elseBOOLIMAGEAPISymEnumerateModules( IN HANDLE hProcess, IN PSYM_ENUMMODULES_CALLBACK EnumModulesCallback, IN PVOID UserContext );#endifBOOLIMAGEAPISymEnumerateSymbols64( IN HANDLE hProcess, IN DWORD64 BaseOfDll, IN PSYM_ENUMSYMBOLS_CALLBACK64 EnumSymbolsCallback, IN PVOID UserContext );BOOLIMAGEAPISymEnumerateSymbolsW64( IN HANDLE hProcess, IN DWORD64 BaseOfDll, IN PSYM_ENUMSYMBOLS_CALLBACK64W EnumSymbolsCallback, IN PVOID UserContext );#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)#define SymEnumerateSymbols SymEnumerateSymbols64#define SymEnumerateSymbolsW SymEnumerateSymbolsW64#elseBOOLIMAGEAPISymEnumerateSymbols( IN HANDLE hProcess, IN DWORD BaseOfDll, IN PSYM_ENUMSYMBOLS_CALLBACK EnumSymbolsCallback, IN PVOID UserContext );
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?