[structure]SYSTEM_INFO

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 );

분석

_Out _ lpSystemInfo

SYSTEM_INFO

“[structure]SYSTEM_INFO”에 대한 한개의 댓글

글의 문제가 있다면 댓글을 달아 주세요.

This site uses Akismet to reduce spam. Learn how your comment data is processed.