windows – Win32 API,用于判断给定的二进制文件(EXE或DLL)是x86,x64还是ia64

前端之家收集整理的这篇文章主要介绍了windows – Win32 API,用于判断给定的二进制文件(EXE或DLL)是x86,x64还是ia64前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图找到一种编程方式来判断二进制文件是x86,x64还是ia64.

平台:Windows.
语言:c / c.

背景:在尝试加载第三方dll之前,我需要找出它的位数.

感谢任何指针.

对于EXE

使用GetBinaryType(…)

Here is same question for manged exe.

对于DLL(和EXE)

使用ImageNtHeader(…)获取文件的PE数据,然后检查IMAGE_FILE_HEADER.Machine字段.

Here is some code我发现使用谷歌代码搜索

没有清理并且没有错误检查

// map the file to our address space
// first,create a file mapping object
hMap = CreateFileMapping( 
  hFile,NULL,// security attrs
  PAGE_READONLY,// protection flags
  0,// max size - high DWORD
  0,// max size - low DWORD      
  NULL );         // mapping name - not used

// next,map the file to our address space
void* mapAddr = MapViewOfFileEx( 
  hMap,// mapping object
  FILE_MAP_READ,// desired access
  0,// loc to map - hi DWORD
  0,// loc to map - lo DWORD
  0,// #bytes to map - 0=all
  NULL );         // suggested map addr

peHdr = ImageNtHeader( mapAddr );
原文链接:https://www.f2er.com/windows/371856.html

猜你在找的Windows相关文章