⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imagehlp.pas

📁 详细Windows API大全有关知识以及相关问题
💻 PAS
📖 第 1 页 / 共 4 页
字号:

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 + -