注意:(1)我在Windows 7 64位工作,(2)我已经看过How can I test a Windows DLL file to determine if it is 32 bit or 64 bit?。
我正在尝试编写一个检查DLL的位数的C程序。使用Windows API和Debug帮助库,我可以访问NT Header的FileHeader.Machine。
我的程序似乎适用于32位DLL,但错误地将C:\ Windows \ System32 \ KERNEL32.DLL识别为32位(Why do 64-bit DLLs go to System32 and 32-bit DLLs to SysWoW64 on 64-bit Windows?)。
我看过Dependency Walker,但是我得到了32位和64位版本的depends.exe之间不一致的结果 - C:\ Windows \ System32 \ KERNEL32.DLL被32位版本识别depends.exe为32位(CPU:x86),但被64位版本识别为64位(CPU:x64)。
FileHeader.Machine不是要走的路吗? 64位版本的depends.exe如何能够将DLL识别为64位?