VC++에서 WOW64에서 동작중인지 확인하는 방법

32비트 윈도우 어플리케이션이 실행되는 환경이 진짜 32비트인지, WOW64인지 확인하는 방법이 궁금해졌다.
찾아보니 역시 모든 소스는 MSDN에 있더라.

IsWow64Process()라는 함수가 있는데, 이 놈을 실행하면 자신의 환경이 진짜 32비트인지 가짜인지를 알려준다.

포함해야 하는 헤더는 windows.h 하나 뿐이다.
아래와 같이 간단하게 IsWow64() 함수를 만들어서 사용하면 된다.

#include <windows.h>

typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);

LPFN_ISWOW64PROCESS fnIsWow64Process;

BOOL IsWow64()
{
    BOOL bIsWow64 = FALSE;

    fnIsWow64Process = (LPFN_ISWOW64PROCESS) GetProcAddress(
        GetModuleHandle(TEXT("kernel32")),"IsWow64Process");
 
    if (NULL != fnIsWow64Process)
    {
        if (!fnIsWow64Process(GetCurrentProcess(),&bIsWow64))
        {
            // 핸들 오류. 알아서 오류 처리
        }
    }
    return bIsWow64;
}

참 쉽죠잉?

- 출처: IsWow64Process Function