SYSTEM_INFO[MSDN]
typedef struct _SYSTEM_INFO {
union {
DWORD dwOemId;
struct {
WORD wProcessorArchitecture;
WORD wReserved;
};
};
DWORD dwPageSize;
LPVOID lpMinimumApplicationAddress;
LPVOID lpMaximumApplicationAddress;
DWORD_PTR dwActiveProcessorMask;
DWORD dwNumberOfProcessors;
DWORD dwProcessorType;
DWORD dwAllocationGranularity;
WORD wProcessorLevel;
WORD wProcessorRevision;
} SYSTEM_INFO;
분석
… 많으니 필요한것만
dwOemId
Windows NT 3.5과 그 전버전을 위한 호환성을 유지하기 위해 사용되는 항목이다.
이후 버전은 wProcessorArchitecture 항목을 참조해야한다.
wProcessorArchitecture
프로세서의 아키텍쳐이다. 멤버는 다음값을 가질수 있다.
값 | 의미 |
PROCESSOR_ARCHITECTURE_AMD64 | x64 (AMD or Intel) |
PROCESSOR_ARCHITECTURE_IA64 | Intel Itanium Processor Family (IPF) |
PROCESSOR_ARCHITECTURE_INTEL | x86 |
PROCESSOR_ARCHITECTURE_UNKNOWN | Unknown processor. |
wReserved
나중에 사용되기 위해 예약되어있는 멤버.
dwPageSize
페이지의 크기 또는 페이지 보호와 규약의 단위.
lpMinimumApplicationAddress
가장 낮은 메모리 주소 응용 프로그램과 동적 연결 라이브러리 (DLL)에 액세스할 수에 대한 포인터.
lpMaximumApplicationAddress
가장 높은 메모리 주소 응용 프로그램 및 DLL을 액세스할 수에 대한 포인터.
dwActiveProcessorMask
마스크 프로세서의 집합을 시스템으로 구성된 대표. 비트0은 프로세서 0, 비트 31은 프로세서는 31.
dwNumberOfProcessors
시스템에 프로세서의 수
dwProcessorType
호환성을 유지하기 위해 사용된다.
dwAllocationGranularity
어떤에서 가상 메모리가 할당될수 있는 시작 주소에 대한 단위.
wProcessorLevel
아키텍처 의존 프로세서 수준. 표시 목적으로만 사용해야한다.
만약에 wProcessorArchitecture값이 PROCESSOR_ARCHITECTURE_INTEL 이라면
wProcessorLevel값은 CPU 제조사에서 정의된 값.
만약에 wProcessorArchitecture값이 PROCESSOR_ARCHITECTURE_ IA64 이라면
wProcessorLevel값은 1이다.
wProcessorRevision
호환성을 위해 폐기됨
예시코드
#include <windows.h> #include <stdio.h> #pragma comment(lib, "user32.lib") void main() { SYSTEM_INFO siSysInfo; // Copy the hardware information to the SYSTEM_INFO structure. GetSystemInfo(&siSysInfo); // Display the contents of the SYSTEM_INFO structure. printf("Hardware information: \n"); printf(" OEM ID: %u\n", siSysInfo.dwOemId); printf(" Number of processors: %u\n", siSysInfo.dwNumberOfProcessors); printf(" Page size: %u\n", siSysInfo.dwPageSize); printf(" Processor type: %u\n", siSysInfo.dwProcessorType); printf(" Minimum application address: %lx\n", siSysInfo.lpMinimumApplicationAddress); printf(" Maximum application address: %lx\n", siSysInfo.lpMaximumApplicationAddress); printf(" Active processor mask: %u\n", siSysInfo.dwActiveProcessorMask); }
GetSystemInfo[MSDN]
void GetSystemInfo( LPSYSTEM_INFO lpSystemInfo );
“[structure]SYSTEM_INFO”에 대한 한개의 댓글