운영체제 시스템 정보를 알아보자!
CPU 의 타입,
각 프로세스가 사용가능한 가장 큰 주소값
사용 가능항 CPU 및 코어 개수
메모리 할당에 사용하는 페이지 단위의 사이즈
등등의 기본적인 정보를 가져오는 방법을 살펴보자.
winbase.h 에 있는 기능을 사용하자..
아래와 같은 구조체가 정의 되어있고..
typedef struct _SYSTEM_INFO {
union {
DWORD dwOemId; // Obsolete field...do not use
struct {
WORD wProcessorArchitecture; // x86, x64, IA-64 등을 나타냄
WORD wReserved; //사용안함
};
};
//cpu의 페이지 크기 x86과 x64 머신에서는 4096,, IA-64머신은 8192바이트.
DWORD dwPageSize;
//각 프로세스가 사용할 수 있는 가장 작은 주소값
//모든 프로세스의 가장 작은 주소값(0)으로부터
//64KB에 해당하는 주소 공간은 항상 프리 상태를 유지해야 하기 때문에
//이값은 65536 혹은 0x00010000 이다
LPVOID lpMinimumApplicationAddress;
LPVOID lpMaximumApplicationAddress; //각 프로세스가 사용할 수 있는 가장 큰 주소 값.
DWORD_PTR dwActiveProcessorMask; // 사용 가능한 CPU를 가리키는 비트마스트 (스레드를 수행할 수 있는 CPU)
DWORD dwNumberOfProcessors; // 머신에 설치된 CPU코어 개수
DWORD dwProcessorType; // 사용안함
// 프로세스 주소 공간에서 특정 영역을 예약할 때 사용하는 단위 크기,
// 보통 65536 바이트
DWORD dwAllocationGranularity;
// 프로세서의 아키텍처를 세분화한 값.
// 펜티엄 III , 펜티엄 IV 등을 나타내기위한값
WORD wProcessorLevel;
WORD wProcessorRevision; // 프로세서의 레벨을 세부화한 값.
} SYSTEM_INFO, *LPSYSTEM_INFO;
아래의 함수에 인자로 넣어주면 정보를 알아올 수 있다..
void WINAPI GetSystemInfo(
__out LPSYSTEM_INFO lpSystemInfo
);
32비트 어플리케이션을 구동하기위해 WOW64 모드에서 어플리케이션을 호환모드로 구동시킨다.
현재 어플리케이션이 WOW64 모드 인지 알아보는 방법은
아래의 IsWow64Process 함수를 사용하면 알수있다..
BOOL WINAPI IsWow64Process(
__in HANDLE hProcess,
__out PBOOL Wow64Process
);
IsWow64Process 함수에 인자로 들어가는 프로세스 핸들은
아래의 GetCurrentProcess 함수를 이용해 가져올수 있다..
HANDLE WINAPI GetCurrentProcess(void);
위의 방법을 사용해서 WOW64 모드인지 확인했다면
2가지의 선택사항이 주어진다..
GetSystemInfo 함수를 사용하게되면 WOW64 모드의 시스템 정보를 받을수 있고.
GetNativeSystemInfo 함수를 사용하게되면 WOW64와 상관없이 오리지널 시스템의 정보를 받을수있다.
__out LPSYSTEM_INFO lpSystemInfo
);
'프로그래밍' 카테고리의 다른 글
windows 애플리케이션 가상 메모리의 상태를 확인해보자. (0) | 2011.03.04 |
---|---|
가상메모리의 상태를 알아보자! (0) | 2011.03.03 |
stl std::remove의 이해와 활용 (0) | 2011.02.18 |
std::string Ogre::String 생성자의 함수호출 낭비 (0) | 2011.02.01 |
std::string 간단히 속도 테스트를 해보았다.. (0) | 2011.02.01 |
댓글