본문 바로가기
프로그래밍/Windows

[Windows] 프로세스/운영체제 비트 확인 (Win32API)

by Hwan,. 2015. 8. 23.
728x90
반응형

1. 코드

// 현재 프로세스 비트 구분
#if defined(_WIN64)
    return TRUE;
#else
    return FALSE;
#endif

// 운영체제 = 64bit, 프로세스 = 32bit 일 경우 TRUE
BOOL IsCurrentProcessWow64()
{
    BOOL bIsWow64 = FALSE;
    typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS)(HANDLE, PBOOL);
    LPFN_ISWOW64PROCESS fnIsWow64Process;

    fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(GetModuleHandle(TEXT("kernel32")), "IsWow64Process");
    if (!fnIsWow64Process)
        return FALSE;

    return fnIsWow64Process(GetCurrentProcess(), &bIsWow64) && bIsWow64;
}

// 프로세스의 bit에 상관없이 운영체제의 비트 확인 가능
// 프로세스 = 64 -> os = 64
// 프로세스 = 32 -> WOW64 조사 -> TRUE = 64, FALSE = 32
BOOL Is64BitWindows()
{
    if (IsCurrentProcess64bit())
        return TRUE;

    return IsCurrentProcessWow64();
}

 

2. 참고

 - WOW64 (Windows On Windows 64-bit) : 64비트 운영체제에서 32비트 프로세스가 동작하게 만들어주는 서브시스템

 

3. 출처

 - http://www.devpia.com/Maeul/Contents/Detail.aspx?BoardID=51&MAEULNO=20&no=8704&page=3

728x90
반응형

댓글