[WinAPI] GetNativeSystemInfo, 윈도우 OS 몇 bit인지 확인하기

오늘은 윈도우 OS가 몇 비트인지 확인하는 함수를 알아보겠습니다.
우선 내 컴퓨터 우클릭 -> 속성에 들어가면 아래와 같이 몇비트 인지 확인 할 수 있습니다.

GetNativeSystemInfo함수를 사용하면 손쉽게 알아낼 수 있습니다. 함수 원형은 아래와 같습니다.

void GetNativeSystemInfo(
  LPSYSTEM_INFO lpSystemInfo
);

해당 함수는 최소 Windows XP, Windows Server2003부터 지원합니다. 또한 아래 헤더와 라이브러리를 포함해야합니다.

Headersysinfoapi.h(include Windows.h)
LibraryKernel32.lib

사용 방법은 아래와 같습니다.

SYSTEM_INFO SystemInfo;
memset( &SystemInfo, 0, sizeof(SystemInfo) );

::GetNativeSystemInfo( &SystemInfo );

BOOL is64bitOS = FALSE;
if ( SystemInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 )
	is64bitOS = TRUE;

만약 위 사양으로 인해 GetNativeSystemInfo를 사용할 수 없으면 아래와 같이 GetSystemInfo 함수를 사용하면 됩니다.

typedef void (WINAPI *FN_GetNativeSystemInfo)(LPSYSTEM_INFO);

HMODULE hmKernel32 = GetModuleHandle( _T( "kernel32.dll" ) );

FN_GetNativeSystemInfo fnGetNativeSystemInfo = (FN_GetNativeSystemInfo)GetProcAddress( hmKernel32, "GetNativeSystemInfo" );
if ( fnGetNativeSystemInfo )
	fnGetNativeSystemInfo( &SystemInfo );
else
	GetSystemInfo( &SystemInfo );    

BOOL is64bitOS = FALSE;
if ( SystemInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 )
	is64bitOS = TRUE;

이상으로 Windows OS 비트 확인 하는 방법 알아봤습니다.