imagehlp.h
来自「这是VCF框架的代码」· C头文件 代码 · 共 2,420 行 · 第 1/5 页
H
2,420 行
BOOLIMAGEAPISymEnumerateSymbolsW( IN HANDLE hProcess, IN DWORD BaseOfDll, IN PSYM_ENUMSYMBOLS_CALLBACKW EnumSymbolsCallback, IN PVOID UserContext );#endifBOOLIMAGEAPIEnumerateLoadedModules64( IN HANDLE hProcess, IN PENUMLOADED_MODULES_CALLBACK64 EnumLoadedModulesCallback, IN PVOID UserContext );#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)#define EnumerateLoadedModules EnumerateLoadedModules64#elseBOOLIMAGEAPIEnumerateLoadedModules( IN HANDLE hProcess, IN PENUMLOADED_MODULES_CALLBACK EnumLoadedModulesCallback, IN PVOID UserContext );#endifPVOIDIMAGEAPISymFunctionTableAccess64( HANDLE hProcess, DWORD64 AddrBase );#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)#define SymFunctionTableAccess SymFunctionTableAccess64#elsePVOIDIMAGEAPISymFunctionTableAccess( HANDLE hProcess, DWORD AddrBase );#endifBOOLIMAGEAPISymGetModuleInfo64( IN HANDLE hProcess, IN DWORD64 qwAddr, OUT PIMAGEHLP_MODULE64 ModuleInfo );BOOLIMAGEAPISymGetModuleInfoW64( IN HANDLE hProcess, IN DWORD64 qwAddr, OUT PIMAGEHLP_MODULEW64 ModuleInfo );#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)#define SymGetModuleInfo SymGetModuleInfo64#define SymGetModuleInfoW SymGetModuleInfoW64#elseBOOLIMAGEAPISymGetModuleInfo( IN HANDLE hProcess, IN DWORD dwAddr, OUT PIMAGEHLP_MODULE ModuleInfo );BOOLIMAGEAPISymGetModuleInfoW( IN HANDLE hProcess, IN DWORD dwAddr, OUT PIMAGEHLP_MODULEW ModuleInfo );#endifDWORD64IMAGEAPISymGetModuleBase64( IN HANDLE hProcess, IN DWORD64 qwAddr );#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)#define SymGetModuleBase SymGetModuleBase64#elseDWORDIMAGEAPISymGetModuleBase( IN HANDLE hProcess, IN DWORD dwAddr );#endifBOOLIMAGEAPISymGetSymNext64( IN HANDLE hProcess, IN OUT PIMAGEHLP_SYMBOL64 Symbol );#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)#define SymGetSymNext SymGetSymNext64#elseBOOLIMAGEAPISymGetSymNext( IN HANDLE hProcess, IN OUT PIMAGEHLP_SYMBOL Symbol );#endifBOOLIMAGEAPISymGetSymPrev64( IN HANDLE hProcess, IN OUT PIMAGEHLP_SYMBOL64 Symbol );#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)#define SymGetSymPrev SymGetSymPrev64#elseBOOLIMAGEAPISymGetSymPrev( IN HANDLE hProcess, IN OUT PIMAGEHLP_SYMBOL Symbol );#endifBOOLIMAGEAPISymGetLineFromAddr64( IN HANDLE hProcess, IN DWORD64 qwAddr, OUT PDWORD pdwDisplacement, OUT PIMAGEHLP_LINE64 Line );#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)#define SymGetLineFromAddr SymGetLineFromAddr64#elseBOOLIMAGEAPISymGetLineFromAddr( IN HANDLE hProcess, IN DWORD dwAddr, OUT PDWORD pdwDisplacement, OUT PIMAGEHLP_LINE Line );#endifBOOLIMAGEAPISymGetLineFromName64( IN HANDLE hProcess, IN PSTR ModuleName, IN PSTR FileName, IN DWORD dwLineNumber, OUT PLONG plDisplacement, IN OUT PIMAGEHLP_LINE64 Line );#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)#define SymGetLineFromName SymGetLineFromName64#elseBOOLIMAGEAPISymGetLineFromName( IN HANDLE hProcess, IN PSTR ModuleName, IN PSTR FileName, IN DWORD dwLineNumber, OUT PLONG plDisplacement, IN OUT PIMAGEHLP_LINE Line );#endifBOOLIMAGEAPISymGetLineNext64( IN HANDLE hProcess, IN OUT PIMAGEHLP_LINE64 Line );#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)#define SymGetLineNext SymGetLineNext64#elseBOOLIMAGEAPISymGetLineNext( IN HANDLE hProcess, IN OUT PIMAGEHLP_LINE Line );#endifBOOLIMAGEAPISymGetLinePrev64( IN HANDLE hProcess, IN OUT PIMAGEHLP_LINE64 Line );#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)#define SymGetLinePrev SymGetLinePrev64#elseBOOLIMAGEAPISymGetLinePrev( IN HANDLE hProcess, IN OUT PIMAGEHLP_LINE Line );#endifBOOLIMAGEAPISymMatchFileName( IN PSTR FileName, IN PSTR Match, OUT PSTR *FileNameStop, OUT PSTR *MatchStop );BOOLIMAGEAPISymInitialize( IN HANDLE hProcess, IN PSTR UserSearchPath, IN BOOL fInvadeProcess );BOOLIMAGEAPISymGetSearchPath( IN HANDLE hProcess, OUT PSTR SearchPath, IN DWORD SearchPathLength );BOOLIMAGEAPISymSetSearchPath( IN HANDLE hProcess, IN PSTR SearchPath );DWORD64IMAGEAPISymLoadModule64( IN HANDLE hProcess, IN HANDLE hFile, IN PSTR ImageName, IN PSTR ModuleName, IN DWORD64 BaseOfDll, IN DWORD SizeOfDll );DWORD64IMAGEAPISymLoadModuleEx( IN HANDLE hProcess, IN HANDLE hFile, IN PSTR ImageName, IN PSTR ModuleName, IN DWORD64 BaseOfDll, IN DWORD DllSize, IN PMODLOAD_DATA Data, IN DWORD Flags );#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)#define SymLoadModule SymLoadModule64#elseDWORDIMAGEAPISymLoadModule( IN HANDLE hProcess, IN HANDLE hFile, IN PSTR ImageName, IN PSTR ModuleName, IN DWORD BaseOfDll, IN DWORD SizeOfDll );#endifBOOLIMAGEAPISymUnloadModule64( IN HANDLE hProcess, IN DWORD64 BaseOfDll );#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)#define SymUnloadModule SymUnloadModule64#elseBOOLIMAGEAPISymUnloadModule( IN HANDLE hProcess, IN DWORD BaseOfDll );#endifBOOLIMAGEAPISymUnDName64( IN PIMAGEHLP_SYMBOL64 sym, // Symbol to undecorate OUT PSTR UnDecName, // Buffer to store undecorated name in IN DWORD UnDecNameLength // Size of the buffer );#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)#define SymUnDName SymUnDName64#elseBOOLIMAGEAPISymUnDName( IN PIMAGEHLP_SYMBOL sym, // Symbol to undecorate OUT PSTR UnDecName, // Buffer to store undecorated name in IN DWORD UnDecNameLength // Size of the buffer );#endifBOOLIMAGEAPISymRegisterCallback64( IN HANDLE hProcess, IN PSYMBOL_REGISTERED_CALLBACK64 CallbackFunction, IN ULONG64 UserContext );BOOLIMAGEAPISymRegisterFunctionEntryCallback64( IN HANDLE hProcess, IN PSYMBOL_FUNCENTRY_CALLBACK64 CallbackFunction, IN ULONG64 UserContext );#if !defined(_IMAGEHLP_SOURCE_) && defined(_IMAGEHLP64)#define SymRegisterCallback SymRegisterCallback64#define SymRegisterFunctionEntryCallback SymRegisterFunctionEntryCallback64#elseBOOLIMAGEAPISymRegisterCallback( IN HANDLE hProcess, IN PSYMBOL_REGISTERED_CALLBACK CallbackFunction, IN PVOID UserContext );BOOLIMAGEAPISymRegisterFunctionEntryCallback( IN HANDLE hProcess, IN PSYMBOL_FUNCENTRY_CALLBACK CallbackFunction, IN PVOID UserContext );#endiftypedef struct _IMAGEHLP_SYMBOL_SRC { DWORD sizeofstruct; DWORD type; char file[MAX_PATH];} IMAGEHLP_SYMBOL_SRC, *PIMAGEHLP_SYMBOL_SRC;typedef struct _MODULE_TYPE_INFO { // AKA TYPTYP USHORT dataLength; USHORT leaf; BYTE data[1];} MODULE_TYPE_INFO, *PMODULE_TYPE_INFO;#define IMAGEHLP_SYMBOL_INFO_VALUEPRESENT 1#define IMAGEHLP_SYMBOL_INFO_REGISTER SYMF_REGISTER // 0x08#define IMAGEHLP_SYMBOL_INFO_REGRELATIVE SYMF_REGREL // 0x10#define IMAGEHLP_SYMBOL_INFO_FRAMERELATIVE SYMF_FRAMEREL // 0x20#define IMAGEHLP_SYMBOL_INFO_PARAMETER SYMF_PARAMETER // 0x40#define IMAGEHLP_SYMBOL_INFO_LOCAL SYMF_LOCAL // 0x80#define IMAGEHLP_SYMBOL_INFO_CONSTANT SYMF_CONSTANT // 0x100#define IMAGEHLP_SYMBOL_FUNCTION SYMF_FUNCTION // 0x800typedef struct _SYMBOL_INFO { ULONG SizeOfStruct; ULONG TypeIndex; // Type Index of symbol ULONG64 Reserved[2]; ULONG Reserved2; ULONG Size; ULONG64 ModBase; // Base Address of module comtaining this symbol ULONG Flags; ULONG64 Value; // Value of symbol, ValuePresent should be 1 ULONG64 Address; // Address of symbol including base address of module ULONG Register; // register holding value or pointer to value ULONG Scope; // scope of the symbol ULONG Tag; // pdb classification ULONG NameLen; // Actual length of name ULONG MaxNameLen; CHAR Name[1]; // Name of symbol} SYMBOL_INFO, *PSYMBOL_INFO;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;ULONGIMAGEAPISymSetContext( HANDLE hProcess, PIMAGEHLP_STACK_FRAME StackFrame, PIMAGEHLP_CONTEXT Context );BOOLIMAGEAPISymFromAddr( IN HANDLE hProcess, IN DWORD64 Address, OUT PDWORD64 Displacement, IN OUT PSYMBOL_INFO Symbol );// While SymFromName will provide a symbol from a name,// SymEnumSymbols can provide the same matching information// for ALL symbols with a matching name, even regular// expressions. That way you can search across modules// and differentiate between identically named symbols.BOOLIMAGEAPISymFromName( IN HANDLE hProcess, IN LPSTR Name, OUT PSYMBOL_INFO Symbol );typedef BOOL(CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACK)( PSYMBOL_INFO pSymInfo, ULONG SymbolSize, PVOID UserContext );BOOLIMAGEAPISymEnumSymbols( IN HANDLE hProcess, IN ULONG64 BaseOfDll, IN PCSTR Mask, IN PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback, IN PVOID UserContext );typedef enum _IMAGEHLP_SYMBOL_TYPE_INFO { TI_GET_SYMTAG, TI_GET_SYMNAME, TI_GET_LENGTH, TI_GET_TYPE, TI_GET_TYPEID, TI_GET_BASETYPE, TI_GET_ARRAYINDEXTYPEID, TI_FINDCHILDREN,
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?