Windows OS 64bit or 32bit detect cpp function


bool Is64bitOS()
{
    //IsWow64Process() 사용
        //64bit OS에서 32bit App이 실행될때만 TRUE
        //32bit OS 이거나 64bit App인 경우는 FALSE
    //BOOL bRet=0; IsWow64Process(GetCurrentProcess(), &bRet);

    SYSTEM_INFO si;
    //GetSystemInfo(&si);    // 안됨 - PROCESSOR_ARCHITECTURE_INTEL 로 나옴 


    GetNativeSystemInfo(&si);//  Workded!!
    if( (si.wProcessorArchitecture & PROCESSOR_ARCHITECTURE_IA64)
        ||(si.wProcessorArchitecture & PROCESSOR_ARCHITECTURE_AMD64) )
    {
        return true;

    }else{
        return false;
    }
}



//==============

// 참고, 함수가 없다고 나오면 주소를 가져와야 한다.

// 함수포인터 사용


//GetNativeSystemInfo 함수 포인터.
typedef void ( WINAPI *LPFN_GETNATIVESYSTEMINFO )( LPSYSTEM_INFO ) ;
LPFN_GETNATIVESYSTEMINFO pfnGetNativeSystemInfo ;

//IsWow64PRocess 함수 포인터.
typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
LPFN_ISWOW64PROCESS pfnIsWow64Process;

{
    //주소 가져오기   
    pfnGetNativeSystemInfo = ( LPFN_GETNATIVESYSTEMINFO )GetProcAddress( GetModuleHandle( TEXT( "kernel32.dll" ) ), "GetNativeSystemInfo" ) ;


    pfnIsWow64Process = ( LPFN_ISWOW64PROCESS )GetProcAddress( GetModuleHandle( TEXT( "kernel32.dll" ) ), "IsWow64Process" ) ;

}


반응형
Posted by codens