티스토리 뷰

  현재 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

 

댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30