📄 imagehlp.pas
字号:
function SymEnumerateModules(hProcess: HANDLE; EnumModulesCallback: PSYM_ENUMMODULES_CALLBACK;
UserContext: PVOID): BOOL; stdcall;
{$EXTERNALSYM SymEnumerateModules}
function SymEnumerateSymbols64(hProcess: HANDLE; BaseOfDll: DWORD64;
EnumSymbolsCallback: PSYM_ENUMSYMBOLS_CALLBACK64; UserContext: PVOID): BOOL; stdcall;
{$EXTERNALSYM SymEnumerateSymbols64}
function SymEnumerateSymbolsW64(hProcess: HANDLE; BaseOfDll: DWORD64;
EnumSymbolsCallback: PSYM_ENUMSYMBOLS_CALLBACK64W; UserContext: PVOID): BOOL; stdcall;
{$EXTERNALSYM SymEnumerateSymbolsW64}
function SymEnumerateSymbols(hProcess: HANDLE; BaseOfDll: DWORD;
EnumSymbolsCallback: PSYM_ENUMSYMBOLS_CALLBACK; UserContext: PVOID): BOOL; stdcall;
{$EXTERNALSYM SymEnumerateSymbols}
function SymEnumerateSymbolsW(hProcess: HANDLE; BaseOfDll: DWORD;
EnumSymbolsCallback: PSYM_ENUMSYMBOLS_CALLBACKW; UserContext: PVOID): BOOL; stdcall;
{$EXTERNALSYM SymEnumerateSymbolsW}
function EnumerateLoadedModules64(hProcess: HANDLE; EnumLoadedModulesCallback: PENUMLOADED_MODULES_CALLBACK64;
UserContext: PVOID): BOOL; stdcall;
{$EXTERNALSYM EnumerateLoadedModules64}
function EnumerateLoadedModules(hProcess: HANDLE; EnumLoadedModulesCallback: PENUMLOADED_MODULES_CALLBACK;
UserContext: PVOID): BOOL; stdcall;
{$EXTERNALSYM EnumerateLoadedModules}
function SymFunctionTableAccess64(hProcess: HANDLE; AddrBase: DWORD64): PVOID; stdcall;
{$EXTERNALSYM SymFunctionTableAccess64}
function SymFunctionTableAccess(hProcess: HANDLE; AddrBase: DWORD): PVOID; stdcall;
{$EXTERNALSYM SymFunctionTableAccess}
function SymGetModuleInfo64(hProcess: HANDLE; qwAddr: DWORD64;
var ModuleInfo: IMAGEHLP_MODULE64): BOOL; stdcall;
{$EXTERNALSYM SymGetModuleInfo64}
function SymGetModuleInfoW64(hProcess: HANDLE; qwAddr: DWORD64;
var ModuleInfo: IMAGEHLP_MODULEW64): BOOL; stdcall;
{$EXTERNALSYM SymGetModuleInfoW64}
function SymGetModuleInfo(hProcess: HANDLE; dwAddr: DWORD;
var ModuleInfo: IMAGEHLP_MODULE): BOOL; stdcall;
{$EXTERNALSYM SymGetModuleInfo}
function SymGetModuleInfoW(hProcess: HANDLE; dwAddr: DWORD;
var ModuleInfo: IMAGEHLP_MODULEW): BOOL; stdcall;
{$EXTERNALSYM SymGetModuleInfoW}
function SymGetModuleBase64(hProcess: HANDLE; qwAddr: DWORD64): DWORD64; stdcall;
{$EXTERNALSYM SymGetModuleBase64}
function SymGetModuleBase(hProcess: HANDLE; dwAddr: DWORD): DWORD; stdcall;
{$EXTERNALSYM SymGetModuleBase}
function SymGetSymFromAddr64(hProcess: HANDLE; qwAddr: DWORD64;
var pdwDisplacement: DWORD64; var Symbol: IMAGEHLP_SYMBOL64): BOOL; stdcall;
{$EXTERNALSYM SymGetSymFromAddr64}
function SymGetSymFromAddr(hProcess: HANDLE; dwAddr: DWORD;
var pdwDisplacement: DWORD; var Symbol: IMAGEHLP_SYMBOL): BOOL; stdcall;
{$EXTERNALSYM SymGetSymFromAddr}
function SymGetSymFromName64(hProcess: HANDLE; Name: PSTR; var Symbol: IMAGEHLP_SYMBOL64): BOOL; stdcall;
{$EXTERNALSYM SymGetSymFromName64}
function SymGetSymFromName(hProcess: HANDLE; Name: PSTR; var Symbol: IMAGEHLP_SYMBOL): BOOL; stdcall;
{$EXTERNALSYM SymGetSymFromName}
function SymGetSymNext64(hProcess: HANDLE; var Symbol: IMAGEHLP_SYMBOL64): BOOL; stdcall;
{$EXTERNALSYM SymGetSymNext64}
function SymGetSymNext(hProcess: HANDLE; var Symbol: IMAGEHLP_SYMBOL): BOOL; stdcall;
{$EXTERNALSYM SymGetSymNext}
function SymGetSymPrev64(hProcess: HANDLE; var Symbol: IMAGEHLP_SYMBOL64): BOOL; stdcall;
{$EXTERNALSYM SymGetSymPrev64}
function SymGetSymPrev(hProcess: HANDLE; var Symbol: IMAGEHLP_SYMBOL): BOOL; stdcall;
{$EXTERNALSYM SymGetSymPrev}
function SymGetLineFromAddr64(hProcess: HANDLE; qwAddr: DWORD64;
var pdwDisplacement: DWORD; var Line: IMAGEHLP_LINE64): BOOL; stdcall;
{$EXTERNALSYM SymGetLineFromAddr64}
function SymGetLineFromAddr(hProcess: HANDLE; dwAddr: DWORD;
var pdwDisplacement: DWORD; var Line: IMAGEHLP_LINE): BOOL; stdcall;
{$EXTERNALSYM SymGetLineFromAddr}
function SymGetLineFromName64(hProcess: HANDLE; ModuleName: PSTR; FileName: PSTR;
dwLineNumber: DWORD; var plDisplacement: LONG; var Line: IMAGEHLP_LINE64): BOOL; stdcall;
{$EXTERNALSYM SymGetLineFromName64}
function SymGetLineFromName(hProcess: HANDLE; ModuleName: PSTR; FileName: PSTR;
dwLineNumber: DWORD; var plDisplacement: LONG; var Line: IMAGEHLP_LINE): BOOL; stdcall;
{$EXTERNALSYM SymGetLineFromName}
function SymGetLineNext64(hProcess: HANDLE; var Line: IMAGEHLP_LINE64): BOOL; stdcall;
{$EXTERNALSYM SymGetLineNext64}
function SymGetLineNext(hProcess: HANDLE; var Line: IMAGEHLP_LINE): BOOL; stdcall;
{$EXTERNALSYM SymGetLineNext}
function SymGetLinePrev64(hProcess: HANDLE; var Line: IMAGEHLP_LINE64): BOOL; stdcall;
{$EXTERNALSYM SymGetLinePrev64}
function SymGetLinePrev(hProcess: HANDLE; var Line: IMAGEHLP_LINE): BOOL; stdcall;
{$EXTERNALSYM SymGetLinePrev}
function SymMatchFileName(FileName, Match: PSTR; var FileNameStop, MatchStop: PSTR): BOOL; stdcall;
{$EXTERNALSYM SymMatchFileName}
function SymInitialize(hProcess: HANDLE; UserSearchPath: PSTR; fInvadeProcess: BOOL): BOOL; stdcall;
{$EXTERNALSYM SymInitialize}
function SymGetSearchPath(hProcess: HANDLE; SearchPath: PSTR; SearchPathLength: DWORD): BOOL; stdcall;
{$EXTERNALSYM SymGetSearchPath}
function SymSetSearchPath(hProcess: HANDLE; SearchPath: PSTR): BOOL; stdcall;
{$EXTERNALSYM SymSetSearchPath}
function SymLoadModule64(hProcess, hFile: HANDLE; ImageName, ModuleName: PSTR;
BaseOfDll: DWORD64; SizeOfDll: DWORD): DWORD64; stdcall;
{$EXTERNALSYM SymLoadModule64}
function SymLoadModule(hProcess, hFile: HANDLE; ImageName, ModuleName: PSTR;
BaseOfDll: DWORD; SizeOfDll: DWORD): DWORD; stdcall;
{$EXTERNALSYM SymLoadModule}
function SymUnloadModule64(hProcess: HANDLE; BaseOfDll: DWORD64): BOOL; stdcall;
{$EXTERNALSYM SymUnloadModule64}
function SymUnloadModule(hProcess: HANDLE; BaseOfDll: DWORD): BOOL; stdcall;
{$EXTERNALSYM SymUnloadModule}
function SymUnDName64(const sym: IMAGEHLP_SYMBOL64; UnDecName: PSTR;
UnDecNameLength: DWORD): BOOL; stdcall;
{$EXTERNALSYM SymUnDName64}
function SymUnDName(const sym: IMAGEHLP_SYMBOL; UnDecName: PSTR;
UnDecNameLength: DWORD): BOOL; stdcall;
{$EXTERNALSYM SymUnDName}
function SymRegisterCallback64(hProcess: HANDLE; CallbackFunction: PSYMBOL_REGISTERED_CALLBACK64;
UserContext: ULONG64): BOOL; stdcall;
{$EXTERNALSYM SymRegisterCallback64}
function SymRegisterFunctionEntryCallback64(hProcess: HANDLE; CallbackFunction: PSYMBOL_FUNCENTRY_CALLBACK64;
UserContext: ULONG64): BOOL; stdcall;
{$EXTERNALSYM SymRegisterFunctionEntryCallback64}
function SymRegisterCallback(hProcess: HANDLE; CallbackFunction: PSYMBOL_REGISTERED_CALLBACK;
UserContext: PVOID): BOOL; stdcall;
{$EXTERNALSYM SymRegisterCallback}
function SymRegisterFunctionEntryCallback(hProcess: HANDLE; CallbackFunction: PSYMBOL_FUNCENTRY_CALLBACK;
UserContext: PVOID): BOOL; stdcall;
{$EXTERNALSYM SymRegisterFunctionEntryCallback}
// Structure types
type
IMAGEHLP_TYPES = (
IMAGEHLP_TYPEID_FILLER0,
IMAGEHLP_TYPEID_INDEX,
IMAGEHLP_TYPEID_NAME,
IMAGEHLP_TYPEID_IMAGEHLP_SYMBOL,
IMAGEHLP_TYPEID_IMAGEHLP_SYMBOL64,
IMAGEHLP_TYPEID_MODULE_TYPE_INFO,
IMAGEHLP_TYPEID_TYPE_ENUM_INFO);
{$EXTERNALSYM IMAGEHLP_TYPES}
TImageHlpTypes = IMAGEHLP_TYPES;
PMODULE_TYPE_INFO = ^MODULE_TYPE_INFO;
{$EXTERNALSYM PMODULE_TYPE_INFO}
_MODULE_TYPE_INFO = record
dataLength: USHORT;
leaf: USHORT;
data: array [0..0] of BYTE;
end;
{$EXTERNALSYM _MODULE_TYPE_INFO}
MODULE_TYPE_INFO = _MODULE_TYPE_INFO;
{$EXTERNALSYM MODULE_TYPE_INFO}
TModuleTypeInfo = MODULE_TYPE_INFO;
PModuleTypeInfo = PMODULE_TYPE_INFO;
PSYMBOL_TYPE_NAME_CALLBACK = function (MatchedName: PSTR; typeIndex: ULONG;
CallerData: PVOID): BOOL; stdcall;
{$EXTERNALSYM PSYMBOL_TYPE_NAME_CALLBACK}
PsymbolTypeNameCallback = PSYMBOL_TYPE_NAME_CALLBACK;
PTYPE_ENUM_INFO = ^TYPE_ENUM_INFO;
{$EXTERNALSYM PTYPE_ENUM_INFO}
_TYPE_ENUM_INFO = record
CallerData: PVOID;
CallbackRoutine: PSYMBOL_TYPE_NAME_CALLBACK;
end;
{$EXTERNALSYM _TYPE_ENUM_INFO}
TYPE_ENUM_INFO = _TYPE_ENUM_INFO;
{$EXTERNALSYM TYPE_ENUM_INFO}
TTypeEnumInfo = TYPE_ENUM_INFO;
PTypeEnumInfo = PTYPE_ENUM_INFO;
function SymGetModuleInfoEx64(hProcess: HANDLE; Address: DWORD64; TypeIn: IMAGEHLP_TYPES;
DataIn: PBYTE; TypeOut: IMAGEHLP_TYPES; var SizeOut: ULONG; var DataOut: BYTE): BOOL; stdcall;
{$EXTERNALSYM SymGetModuleInfoEx64}
function SymGetModuleInfoEx(hProcess: HANDLE; Address: DWORD; TypeIn: IMAGEHLP_TYPES;
DataIn: PBYTE; TypeOut: IMAGEHLP_TYPES; var SizeOut: ULONG; var DataOut: BYTE): BOOL; stdcall;
{$EXTERNALSYM SymGetModuleInfoEx}
function SymGetSymbolInfo64(hProcess: HANDLE; Address: DWORD64; TypeIn: IMAGEHLP_TYPES;
DataIn: PBYTE; TypeOut: IMAGEHLP_TYPES; var SizeOut: ULONG; var DataOut: BYTE): BOOL; stdcall;
{$EXTERNALSYM SymGetSymbolInfo64}
function SymGetSymbolInfo(hProcess: HANDLE; Address: DWORD; TypeIn: IMAGEHLP_TYPES;
DataIn: PBYTE; TypeOut: IMAGEHLP_TYPES; var SizeOut: ULONG; var DataOut: BYTE): BOOL; stdcall;
{$EXTERNALSYM SymGetSymbolInfo}
implementation
procedure Address32To64(a32: LPADDRESS; a64: LPADDRESS64);
begin
a64^.Offset := {ULONG64(LONG64(LONG(}a32^.Offset{)))};
a64^.Segment := a32^.Segment;
a64^.Mode := a32^.Mode;
end;
procedure Address64To32(a64: LPADDRESS64; a32: LPADDRESS);
begin
a32^.Offset := ULONG(a64^.Offset);
a32^.Segment := a64^.Segment;
a32^.Mode := a64^.Mode;
end;
procedure KdHelp32To64(p32: PKDHELP; p64: PKDHELP64);
begin
p64^.Thread := p32^.Thread;
p64^.ThCallbackStack := p32^.ThCallbackStack;
p64^.NextCallback := p32^.NextCallback;
p64^.FramePointer := p32^.FramePointer;
p64^.KiCallUserMode := p32^.KiCallUserMode;
p64^.KeUserCallbackDispatcher := p32^.KeUserCallbackDispatcher;
p64^.SystemRangeStart := p32^.SystemRangeStart;
end;
const
ImageHlpLib = 'imagehlp.dll';
function BindImage; external ImageHlpLib name 'BindImage';
function BindImageEx; external ImageHlpLib name 'BindImageEx';
function ReBaseImage; external ImageHlpLib name 'ReBaseImage';
function ReBaseImage64; external ImageHlpLib name 'ReBaseImage64';
function CheckSumMappedFile; external ImageHlpLib name 'CheckSumMappedFile';
function MapFileAndCheckSumA; external ImageHlpLib name 'MapFileAndCheckSumA';
function MapFileAndCheckSumW; external ImageHlpLib name 'MapFileAndCheckSumW';
{$IFDEF UNICODE}
function MapFileAndCheckSum; external ImageHlpLib name 'MapFileAndCheckSumW';
{$ELSE}
function MapFileAndCheckSum; external ImageHlpLib name 'MapFileAndCheckSumA';
{$ENDIF}
function GetImageConfigInformation; external ImageHlpLib name 'GetImageConfigInformation';
function GetImageUnusedHeaderBytes; external ImageHlpLib name 'GetImageUnusedHeaderBytes';
function SetImageConfigInformation; external ImageHlpLib name 'SetImageConfigInformation';
function ImageGetDigestStream; external ImageHlpLib name 'ImageGetDigestStream';
function ImageAddCertificate; external ImageHlpLib name 'ImageAddCertificate';
function ImageRemoveCertificate; external ImageHlpLib name 'ImageRemoveCertificate';
function ImageEnumerateCertificates; external ImageHlpLib name 'ImageEnumerateCertificates';
function ImageGetCertificateData; external ImageHlpLib name 'ImageGetCertificateData';
function ImageGetCertificateHeader; external ImageHlpLib name 'ImageGetCertificateHeader';
function ImageLoad; external ImageHlpLib name 'ImageLoad';
function ImageUnload; external ImageHlpLib name 'ImageUnload';
function MapAndLoad; external ImageHlpLib name 'MapAndLoad';
function UnMapAndLoad; external ImageHlpLib name 'UnMapAndLoad';
function TouchFileTimes; external ImageHlpLib name 'TouchFileTimes';
function SplitSymbols; external ImageHlpLib name 'SplitSymbols';
function UpdateDebugInfoFile; external ImageHlpLib name 'UpdateDebugInfoFile';
function UpdateDebugInfoFileEx; external ImageHlpLib name 'UpdateDebugInfoFileEx';
function FindDebugInfoFile; external ImageHlpLib name 'FindDebugInfoFile';
function FindDebugInfoFileEx; external ImageHlpLib name 'FindDebugInfoFileEx';
function FindFileInSearchPath; external ImageHlpLib name 'FindFileInSearchPath';
function FindExecutableImage; external ImageHlpLib name 'FindExecutableImage';
function FindExecutableImageEx; external ImageHlpLib name 'FindExecutableImageEx';
function ImageNtHeader; external ImageHlpLib name 'ImageNtHeader';
function ImageDirectoryEntryToDataEx; external ImageHlpLib name 'ImageDirectoryEntryToDataEx';
function ImageDirectoryEntryToData; external ImageHlpLib name 'ImageDirectoryEntryToData';
function ImageRvaToSection; external ImageHlpLib name 'ImageRvaToSection';
function ImageRvaToVa; external ImageHlpLib name 'ImageRvaToVa';
function MapDebugInformation; external ImageHlpLib name 'MapDebugInformation';
function UnmapDebugInformation; external ImageHlpLib name 'UnmapDebugInformation';
function SearchTreeForFile; external ImageHlpLib name 'SearchTreeForFile';
function MakeSureDirectoryPathExists; external ImageHlpLib name 'MakeSureDirectoryPathExists';
function UnDecorateSymbolName; external ImageHlpLib name 'UnDecorateSymbolName';
function StackWalk64; external ImageHlpLib name 'StackWalk64';
function StackWalk; external ImageHlpLib name 'StackWalk';
function ImagehlpApiVersion; external ImageHlpLib name 'ImagehlpApiVersion';
function ImagehlpApiVersionEx; external ImageHlpLib name 'ImagehlpApiVersionEx';
function GetTimestampForLoadedLibrary; external ImageHlpLib name 'GetTimestampForLoadedLibrary';
function SymSetOptions; external ImageHlpLib name 'SymSetOptions';
function SymGetOptions; external ImageHlpLib name 'SymGetOptions';
function SymCleanup; external ImageHlpLib name 'SymCleanup';
function SymEnumerateModules64; external ImageHlpLib name 'SymEnumerateModules64';
function SymEnumerateModules; external ImageHlpLib name 'SymEnumerateModules';
function SymEnumerateSymbols64; external ImageHlpLib name 'SymEnumerateSymbols64';
function SymEnumerateSymbolsW64; external ImageHlpLib name 'SymEnumerateSymbolsW64';
function SymEnumerateSymbols; external ImageHlpLib name 'SymEnumerateSymbols';
function SymEnumerateSymbolsW; external ImageHlpLib name 'SymEnumerateSymbolsW';
function EnumerateLoadedModules64; external ImageHlpLib name 'EnumerateLoadedModules64';
function EnumerateLoadedModules; external ImageHlpLib name 'EnumerateLoadedModules';
function SymFunctionTableAccess64; external ImageHlpLib name 'SymFunctionTableAccess64';
function SymFunctionTableAccess; external ImageHlpLib name 'SymFunctionTableAccess';
function SymGetModuleInfo64; external ImageHlpLib name 'SymGetModuleInfo64';
function SymGetModuleInfoW64; external ImageHlpLib name 'SymGetModuleInfoW64';
function SymGetModuleInfo; external ImageHlpLib name 'SymGetModuleInfo';
function SymGetModuleInfoW; external ImageHlpLib name 'SymGetModuleInfoW';
function SymGetModuleBase64; external ImageHlpLib name 'SymGetModuleBase64';
function SymGetModuleBase; external ImageHlpLib name 'SymGetModuleBase';
function SymGetSymFromAddr64; external ImageHlpLib name 'SymGetSymFromAddr64';
function SymGetSymFromAddr; external ImageHlpLib name 'SymGetSymFromAddr';
function SymGetSymFromName64; external ImageHlpLib name 'SymGetSymFromName64';
function SymGetSymFromName; external ImageHlpLib name 'SymGetSymFromName';
function SymGetSymNext64; external ImageHlpLib name 'SymGetSymNext64';
function SymGetSymNext; external ImageHlpLib name 'SymGetSymNext';
function SymGetSymPrev64; external ImageHlpLib name 'SymGetSymPrev64';
function SymGetSymPrev; external ImageHlpLib name 'SymGetSymPrev';
function SymGetLineFromAddr64; external ImageHlpLib name 'SymGetLineFromAddr64';
function SymGetLineFromAddr; external ImageHlpLib name 'SymGetLineFromAddr';
function SymGetLineFromName64; external ImageHlpLib name 'SymGetLineFromName64';
function SymGetLineFromName; external ImageHlpLib name 'SymGetLineFromName';
function SymGetLineNext64; external ImageHlpLib name 'SymGetLineNext64';
function SymGetLineNext; external ImageHlpLib name 'SymGetLineNext';
function SymGetLinePrev64; external ImageHlpLib name 'SymGetLinePrev64';
function SymGetLinePrev; external ImageHlpLib name 'SymGetLinePrev';
function SymMatchFileName; external ImageHlpLib name 'SymMatchFileName';
function SymInitialize; external ImageHlpLib name 'SymInitialize';
function SymGetSearchPath; external ImageHlpLib name 'SymGetSearchPath';
function SymSetSearchPath; external ImageHlpLib name 'SymSetSearchPath';
function SymLoadModule64; external ImageHlpLib name 'SymLoadModule64';
function SymLoadModule; external ImageHlpLib name 'SymLoadModule';
function SymUnloadModule64; external ImageHlpLib name 'SymUnloadModule64';
function SymUnloadModule; external ImageHlpLib name 'SymUnloadModule';
function SymUnDName64; external ImageHlpLib name 'SymUnDName64';
function SymUnDName; external ImageHlpLib name 'SymUnDName';
function SymRegisterCallback64; external ImageHlpLib name 'SymRegisterCallback64';
function SymRegisterFunctionEntryCallback64; external ImageHlpLib name 'SymRegisterFunctionEntryCallback64';
function SymRegisterCallback; external ImageHlpLib name 'SymRegisterCallback';
function SymRegisterFunctionEntryCallback; external ImageHlpLib name 'SymRegisterFunctionEntryCallback';
function SymGetModuleInfoEx64; external ImageHlpLib name 'SymGetModuleInfoEx64';
function SymGetModuleInfoEx; external ImageHlpLib name 'SymGetModuleInfoEx';
function SymGetSymbolInfo64; external ImageHlpLib name 'SymGetSymbolInfo64';
function SymGetSymbolInfo; external ImageHlpLib name 'SymGetSymbolInfo';
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -