Programming/C

[VC++] 현재 Windows OS의 CPU 아키텍쳐 확인

Tribal 2019. 11. 14. 19:54

  현재 Windows OS가 32비트인지 64비트인지 확인하는데 왜 현재 프로세스 핸들로 IsWow64Process 함수를 호출하는 걸로 현재 프로세스의 아키텍쳐를 확인하는 코드만 나올까... 시스템 프로세스의 핸들이면 이해하겠는데

 

소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
BOOL
IsWin64()
{
    SYSTEM_INFO sys_info;
    GetNativeSystemInfo(&sys_info);
    
    WORD wArch = sys_info.wProcessorArchitecture;
    if (wArch == PROCESSOR_ARCHITECTURE_AMD64)
        return TRUE;
    else if(wArch == PROCESSOR_ARCHITECTURE_INTEL)
        return FALSE;
    else throw "Invalid architecture!";
}
cs

  SYSTEM_INFO.wProcessorArchitecture에 들어가는 값은 단순히 32비트와 64비트뿐만 아니라 임베디드같은 CPU 아키텍쳐도 들어가기 때문에 32비트인지 64비트인지만 확인하는 것이라면 위처럼 되어야 한다. 

 

참고

  • GetNativeSystemInfo(MSDN) : link
  • StackOverflow : link