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

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

typedef struct _SYSTEM_INFO { // sinf
  union {
    DWORD dwOemId;      已废弃的成员,保留这个成员是为了向以前版本的Windows NT保持兼容。从Windows NT3.51和Windows 95的预发行版本开始,使用这个成员的子分支wProcessorArchitecture。
                    Windows 95:系统总是把这个成员的值设为0,也就是PROCESSOR_ARCHITECTURE_INTEL的预定义值。
    struct {
        WORD wProcessorArchitecture;    指定系统中的中央处理器的体系结构,可以是如下的值:
        WORD wReserved;          保留供将来使用。
      };
    };
    DWORD dwPageSize;               指定页面的大小和页面保护和委托的颗粒。这是被 VirtualAlloc 函数使用的页大小。
    LPVOID lpMinimumApplicationAddress;      指向应用程序和动态链接库(DLL)可以访问的最低内存地址。
    LPVOID lpMaximumApplicationAddress;      指向应用程序和动态链接库(DLL)可以访问的最高内存地址。
    DWORD dwActiveProcessorMask;        指定一个用来代表这个系统中装配了的中央处理器的掩码。二进制0位是处理器0;31位是处理器31。
    DWORD dwNumberOfProcessors;        指定系统中的处理器的数目。
    DWORD dwProcessorType;
    DWORD dwAllocationGranularity;
    WORD wProcessorLevel;
    WORD wProcessorRevision;
  } SYSTEM_INFO;
wProcessorArchitecture: 指定系统中的中央处理器的体系结构,可以是如下的值:
PROCESSOR_ARCHITECTURE_INTEL
只适用于Windows NT: PROCESSOR_ARCHITECTURE_MIPS
只适用于Windows NT: PROCESSOR_ARCHITECTURE_ALPHA
只适用于Windows NT: PROCESSOR_ARCHITECTURE_PPC
只适用于Windows NT: PROCESSOR_ARCHITECTURE_UNKNOWN


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
注释:
从Windows NT 3.51和Windows 95的预发行版本开始,SYSTEM_INFO结构发生了如下变化:
·dwOemId 成员被更改成一个结构。这个结构提供了一条新的可以用来描述Windows NT处理器体系结构的路,同时保持了与Windows 95 以及Windows NT以前版本的兼容性。
·dwProcessorType 成员在Windows NT系统上已经被废弃,但是仍在Windows 95系统中使用。
·一个先前保留的位于结构末端的双字值被wProcessorLevel 和 wProcessorRevision 两个成员替代。Windows 95 不使用这两个成员。

SYSTEM_INFO的更多相关文章

  1. numpy.distutils.system_info.NotFoundError: no lapack/blas resources found

    python35用pip安装scipy的时候报错 numpy.distutils.system_info.NotFoundError: no lapack/blas resources found 原 ...

  2. numpy.distutils.system_info.NotFoundError: no lapack/blas resources found问题解决

    操作环境 Python3.6 + Windows7 问题现象   利用pip自动安装seaborn/numpy/scipy(pip install seaborn)模块失败,提示numpy.distu ...

  3. python3安装pandas执行pip3 install pandas命令后卡住不动的问题及安装scipy、sklearn库的numpy.distutils.system_info.NotFoundError: no lapack/blas resources found问题

    一直尝试在python3中安装pandas等一系列软件,但每次执行pip3 install pandas后就卡住不动了,一直停在那,开始以为是pip命令的版本不对,还执行过 python -m pip ...

  4. [c++] SYSTEM_INFO

    SYSTEM_INFO,Win32 API函数GetSystemInfo所使用的结构体. 说明 SYSTEM_INFO结构体包含了当前计算机的信息.这个信息包括计算机的体系结构.中央处理器的类型.系统 ...

  5. C++随笔:.NET CoreCLR之GC探索(3)

    有几天没写GC相关的文章了哈,今天我讲GC的方式是通过一个小的Sample来讲解,这个小的示例代码只有全部Build成功了才会有.地址为D:\coreclr2\coreclr\bin\obj\Wind ...

  6. [Erlang 0118] Erlang 杂记 V

       我在知乎回答问题不多,这个问题: "对你职业生涯帮助最大的习惯是什么?它是如何帮助你的?",我还是主动回答了一下.    做笔记 一开始笔记软件做的不好的时候就发邮件给自己, ...

  7. erlang 在线生成crashdump

    一般说来抓dump 4种 方式:      1. erlang:halt(“abort”).      2. 在erlang shell下输入CTRL C + “大写的A”      3.等着进程崩溃 ...

  8. erlang 故障排查工具

    系统级别perf top, dstat -tam, vtune 都能很好分析beam 瓶颈,本文主要erlang 级别排查: 1. 反编译 确认线上运行代码是否正确,reltools没掌握好,升级偶尔 ...

  9. 获取Windows操作系统的CPU使用率以及内存使用率

    此功能参考了ProcessHacker项目的代码. 声明定义 typedef struct _UINT64_DELTA { ULONG64 Value; ULONG64 Delta; } UINT64 ...

随机推荐

  1. java面向对象(三)之抽象类,接口,向上转型

    java类 java类分为普通类和抽象类,接口,上一节我大概讲了java类的一般格式,今天将抽象类和接口.同时讲一下它们是怎样存储的. 最重要的是理解为什么要有抽象和接口,这样学下来你猜不会迷茫,才能 ...

  2. 有var和没有var的本质区别

    我们创建一个变量: var a = 100: 同时,大家也知道,就是不写var关键字也可以创建.在很多教程和说法中,将没有var 的这个名称称之为“全局变量”.如果我在全局直接写一个var abc = ...

  3. memcached常用命令

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt104 一.Memcache面向对象的常用接口包括:Memcache::con ...

  4. JAVA HashMap的实现原理

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt359 1. HashMap的数据结构 数据结构中有数组和链表来实现对数据的存 ...

  5. 【C++小白成长撸】--N阶幻方(魔阵)矩阵

    解决方法:1.第一个元素放在第一行中间一列 2.下一个元素存放在当前元素的上一行.下一列. 3.如果上一行.下一列已经有内容,则下一个元素的存放位置为当前列的下一行. 在找上一行.下一行或者下一列的时 ...

  6. 入门-什么是webshell?

    webshell是什么? 顾名思义,"web" - 显然需要服务器开放web服务,"shell" - 取得对服务器某种程度上操作权限. webshell常常被称 ...

  7. [2017BUAA软工]第0次个人作业

    第一部分:结缘计算机 1.你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢? 我觉得我选择计算机系完全是误打误撞吧.当时我的分数上北航是没问题的,所以填专业时就是机械,电气,自动化,计算机等 ...

  8. 201521123055 《Java程序设计》第8周学习总结

    1. 本章学习总结 2. 书面作业 Q1.List中指定元素的删除(题目4-1) public static List<String> convertStringToList(String ...

  9. 201521123086《java程序设计》第7周

    本章学习总结 书面作业 1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 以下是ArrayList的contains源代码: public boolean con ...

  10. Java 第四周总结

    1. 本周学习总结 2. 书面作业 注释的应用: (1)源文件注释采用 /** -- */,在每个源文件的头部要有必要的注释信息,包括:文件名:文件编号:版本号:作者:创建时间:文件描述包括本文件历史 ...