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 + -
显示快捷键?