Ted*_*Ted 5 c++ windows winapi visual-c++
如何在C++上检测Windows 32或64位?我在.Net中看到很多例子,但我需要C++.IsWow64Process()也不适用于我,因为"如果进程在32位Windows下运行,则该值设置为FALSE.如果进程是在64位Windows下运行的64位应用程序,则值为也设为FALSE"
如果我在32位操作系统下有32位进程,如果我在64位操作系统下有64位进程,则我有假,我有假
但我不关心过程位我需要OS位
Dav*_*nan 14
用于检测有关底层系统的信息的Win32 API函数是GetNativeSystemInfo
.调用该函数并读取函数填充wProcessorArchitecture
的SYSTEM_INFO
结构的成员.
虽然实际上可以IsWow64Process
用来检测这个.如果您致电IsWow64Process
并TRUE
返回,那么您就知道您在64位系统上运行.否则,FALSE
返回.然后你只需要测试一个指针的大小.32位指针表示32位系统,64位指针表示64位系统.实际上,您可以从编译器提供的条件中获取信息,具体取决于您使用的编译器,因为指针的大小在编译时是已知的.
Raymond Chen在博客文章中描述了这种方法.他帮助我包含了我在这里重现的代码:
BOOL Is64BitWindows()
{
#if defined(_WIN64)
return TRUE; // 64-bit programs run only on Win64
#elif defined(_WIN32)
// 32-bit programs run on both 32-bit and 64-bit Windows
// so must sniff
BOOL f64 = FALSE;
return IsWow64Process(GetCurrentProcess(), &f64) && f64;
#else
return FALSE; // Win64 does not support Win16
#endif
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6714 次 |
最近记录: |