SYSTEM_INFO结构体

 SYSTEM_INFO,Win32 API函数GetSystemInfo所使用的结构体。

说明:
SYSTEM_INFO结构体包含了当前计算机的信息。这个信息包括计算机的体系结构、中央处理器的类型、系统中中央处理器的数量、页面的大小以及其他信息。

结构原型:
typedef struct _SYSTEM_INFO { // sinf  
    union {
        DWORD  dwOemId;
        struct {
            WORD wProcessorArchitecture;
            WORD wReserved;
        };
    };
    DWORD  dwPageSize;
    LPVOID lpMinimumApplicationAddress;
    LPVOID lpMaximumApplicationAddress;
    DWORD  dwActiveProcessorMask;
    DWORD  dwNumberOfProcessors;
    DWORD  dwProcessorType;
    DWORD  dwAllocationGranularity;
    WORD  wProcessorLevel;
    WORD  wProcessorRevision;

} SYSTEM_INFO;

结构成员:
dwOemId:
  已废弃的成员,保留这个成员是为了向以前版本的Windows NT保持兼容。从Windows NT 3.51和Windows 95的预发行版本开始,使用这个成员的子分支wProcessorArchitecture。
   Windows 95:系统总是把这个成员的值设为0,也就是PROCESSOR_ARCHITECTURE_INTEL的预定义值。
wProcessorArchitecture:  指定系统中的中央处理器的体系结构,可以是如下的值:
  PROCESSOR_ARCHITECTURE_INTEL
   只适用于Windows NT: PROCESSOR_ARCHITECTURE_MIPS
   只适用于Windows NT: PROCESSOR_ARCHITECTURE_ALPHA
   只适用于Windows NT: PROCESSOR_ARCHITECTURE_PPC
   只适用于Windows NT: PROCESSOR_ARCHITECTURE_UNKNOWN
wReserved:
  保留供将来使用。
dwPageSize:
  指定页面的大小和页面保护和委托的颗粒。这是被 VirtualAlloc 函数使用的页大小。
lpMinimumApplicationAddress:
  指向应用程序和动态链接库(DLL)可以访问的最低内存地址。
pMaximumApplicationAddress:
  指向应用程序和动态链接库(DLL)可以访问的最高内存地址。
dwActiveProcessorMask:
  指定一个用来代表这个系统中装配了的中央处理器的掩码。二进制0位是处理器0;31位是处理器31。
dwNumberOfProcessors:
  指定系统中的处理器的数目。
dwProcessorType:
   Windows 95:
    指定系统中中央处理器的类型。
   Windows NT:
    这个成员已经不再有用了,但是为了向Windows 95和以前版本的Windows NT保持兼容,使用 wProcessorArchitecture, wProcessorLevel, 和 wProcessorRevision 三个成员定义处理器的类型。
  这个成员的值是下面中的一个:
  PROCESSOR_INTEL_386
  PROCESSOR_INTEL_486
  PROCESSOR_INTEL_PENTIUM
   只适用于Windows NT: PROCESSOR_MIPS_R4000
   只适用于Windows NT: PROCESSOR_ALPHA_21064
dwAllocationGranularity:
  指定已经被分配的虚拟内存空间的粒度。例如,如果使用 VirtualAlloc函数请求分配1byte内存空间,那么将会保留由 dwAllocationGranularity指定大小byte的地址空间。在过去,这个值被定为64K并固化在硬件中,但是其它的硬件体系结构可能需要另外的值。
wProcessorLevel:
   Windows 95: 不使用这个成员。
   Windows NT: 指定系统体系结构依赖的处理器级别。
  
  如果 wProcessorArchitecture 的值是 PROCESSOR_ARCHITECTURE_INTEL,那么 wProcessorLevel可以使如下值中的一个:
              含义
  3          Intel 80386
  4          Intel 80486
  5          Pentium
  
  如果 wProcessorArchitecture 的值是 PROCESSOR_ARCHITECTURE_MIPS,那么 wProcessorLevel 的值会是00xx的形式,xx是一个8位的立即数。这个成员可以使如下的值:
              含义
  0004          MIPS R4000
  
  如果 wProcessorArchitecture 的值是 PROCESSOR_ARCHITECTURE_ALPHA, 那么 wProcessorLevel 的值会是xxxx的形式,xxxx是一个16位的处理器版本数(固件中版本号的低16位),它的值可以是下表中的一个:
   十进制值    含义
  21064      Alpha 21064
  21066            Alpha 21066
  21164            Alpha 21164

  如果 wProcessorArchitecture 的值是  PROCESSOR_ARCHITECTURE_PPC, 那么 wProcessorLevel 的值会是xxxx的形式,xxxx是一个16位的处理器版本数(处理器版本寄存器的高16位),它的值可以使下表中的一个:
   十进制值    含义
  1          PPC 601
  3            PPC 603
  4          PPC 604
  6          PPC 603+
  9          PPC 604+
  20         PPC 620
wProcessorRevision:
   Windows 95: 不使用这个成员。
   Windows NT: 指定系统体系结构依赖的处理器修订版本号。下表显示了对于每一种处理器体系,处理器的修订版本号是如何构成的。
   处理器体系                                       
  Intel 80386 or 80486                          类似xxyz的形式。如果xx等于0xFF,y-0xA 是型号,z 是步进表示符。例如,一个Intel 80486-D0 CPU 组成的系统返回0xFFD0。
                                                            如果xx不等于0xFF,'A'是步进表示符,yz 是次要步进表示符。
  Intel Pentium, Cyrix, or NextGen 586   类似xxyy的形式。xx是型号,yy是步进值。例如,一个0x0201的值表明这是一个Model 2,Stepping 1的CPU。
  MIPS                                                  类似00xx的形式。xx是8位的处理器修订号(PRId寄存器的低8位)。
  ALPHA                                               类似xxyy的形式。xxyy是处理器固件中的修订号的低16位。这个值被显示成这个样子:Model 'A'+xx, yy被忽略。
  PPC                                                   类似xxyy的形式。xxyy是处理器版本寄存器的低16位。这个值被显示为定点小数:xx.yy

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`SYSTEM_INFO`是Windows API中的一个结构体,用于存储系统的基本信息,包括处理器架构、处理器数量、页面大小等。 `SYSTEM_INFO`结构体的定义如下: ```cpp 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, *LPSYSTEM_INFO; ``` `SYSTEM_INFO`结构体包含了许多成员,其中比较重要的成员有: - `wProcessorArchitecture`:处理器架构,值为PROCESSOR_ARCHITECTURE_AMD64(表示x64架构)或PROCESSOR_ARCHITECTURE_INTEL(表示x86架构)。 - `dwNumberOfProcessors`:处理器数量。 - `dwPageSize`:页面大小。 - `dwAllocationGranularity`:内存分配粒度。 下面是一个示例程序,演示如何使用`SYSTEM_INFO`结构体获取系统信息: ```cpp #include <iostream> #include <windows.h> int main() { SYSTEM_INFO sysInfo; GetSystemInfo(&sysInfo); std::cout << "Processor Architecture: "; switch (sysInfo.wProcessorArchitecture) { case PROCESSOR_ARCHITECTURE_AMD64: std::cout << "x64" << std::endl; break; case PROCESSOR_ARCHITECTURE_INTEL: std::cout << "x86" << std::endl; break; default: std::cout << "Unknown" << std::endl; break; } std::cout << "Number of Processors: " << sysInfo.dwNumberOfProcessors << std::endl; std::cout << "Page Size: " << sysInfo.dwPageSize << " bytes" << std::endl; return 0; } ``` 在上述示例中,我们首先定义了一个`SYSTEM_INFO`结构体变量`sysInfo`,然后调用`GetSystemInfo`函数将系统信息写入该结构体中。最后,我们输出了一些系统信息,包括处理器架构、处理器数量、页面大小等。 需要注意的是,使用`SYSTEM_INFO`结构体需要包含Windows.h头文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值