使用IsWow64Process而不是单独编译

时间:2013-10-07 08:48:17

标签: c++ winapi

只是想知道函数'IsWow64Process'的使用是否优于为64位操作系统单独编译它。仍需要更改某些地址的偏移量,以便程序实际上保持不变。

3 个答案:

答案 0 :(得分:1)

IsWow64Process()告诉您,您是一个在64位系统上运行的32位应用程序。它不会使您成为64位应用程序。

答案 1 :(得分:1)

IsWow64Process()仅对32位进程有意义,因为它说明所述进程是否在64位系统上运行。该过程仍然是完全32位的所有后果,例如,它只能加载32位DLL,并且只能使用2 GB的内存。

请注意,在许多情况下,将代码设置为64位并不值得,尤其是当您需要运送32位代码时,尤其是在几乎所有版本的Windows都允许运行32位代码时。有关详细信息,请参阅this answer

答案 2 :(得分:0)

IsWow64Process与平台无关。

我通过查看std::ptrdiff_t

的大小来确定位宽
constexpr /*remove if compiler does not support*/ unsigned long GetProcessBits()
{
    return sizeof(std::ptrdiff_t) /*size in bytes*/ * 8U;
}

如果在32位模式下运行,则返回32;如果在64位模式下运行,则返回64.