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我发现使用谷歌代码搜索

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

  1. // map the file to our address space
  2. // first,create a file mapping object
  3. hMap = CreateFileMapping(
  4. hFile,NULL,// security attrs
  5. PAGE_READONLY,// protection flags
  6. 0,// max size - high DWORD
  7. 0,// max size - low DWORD
  8. NULL ); // mapping name - not used
  9.  
  10. // next,map the file to our address space
  11. void* mapAddr = MapViewOfFileEx(
  12. hMap,// mapping object
  13. FILE_MAP_READ,// desired access
  14. 0,// loc to map - hi DWORD
  15. 0,// loc to map - lo DWORD
  16. 0,// #bytes to map - 0=all
  17. NULL ); // suggested map addr
  18.  
  19. peHdr = ImageNtHeader( mapAddr );

猜你在找的Windows相关文章