Windows下硬件信息获取

        到目前为止,发现在windows下相关硬件信息的获取可以有几种方法:在C/C++中嵌入汇编语言,这种方式针对CPU之类的硬件设备更为有效,因为CPU并不将其所有信息放置在内存中,需要直接读取CPU的寄存器内容;第二个是使用WinIo,也就是Yariv Kaplan编写的,这个第三方方案可以使用内核模式下设备驱动程序和其他的一些底层编程技巧绕过Windows安全保护机制,达到允许32位Windows程序直接对I/O进行操作的目的 ,到目前为止,似乎WinIo仅仅能够完成对那些拥有特定I/O地址的外设进行端口操作的功能;第三个是设法直接读取内存中对应的数据部分,在“我的电脑->属性->硬件->设备管理器”中的指定设备属性中的资源选项会给您带来一点启示。还有一种方法,是利用WMI来完成,当然了,也可以通过获取BIOS中特定的信息达到目标。但是,WMI和BIOS中获得的部分信息似乎是计算机在初次启动时获取的计算机状态信息,并不是实时的,比如CPU的温度等。

一 概念

  Model Specific Register (MSR) as the name implies is model specific and may change from processor model number (n) to processor model number (n+1).
  二 读写方法
  MSR 是CPU 的一组64 位寄存器,可以分别通过RDMSR 和WRMSR 两条指令进行读和写的操作,前提要在ECX 中写入MSR 的地址。对于RDMSR 指令,将会返回相应的MSR 中64bit 信息到(EDX:EAX)寄存器中;对于WRMSR 指令,把要写入的信息存入(EDX:EAX)中,执行写指令后,即可将相应的信息存入ECX 指定的MSR 中。MSR 的指令必须执行在level 0 或实模式下。
  三 作用
  MSR 总体来是为了设置CPU 的工作环境和标示CPU 的工作状态,包括温度控制,性能监控等,具体来说,分为以下几项:
  1. Thermal
  2. Frequency
  3. C State
  4. Microcode
  5. EIST
  6. TM
  7. Key Features Of CPU
  8. Voltage
  9. Cache Control
  10. MTRR
  11. DCA(Direct Cache Access)
  12. Machine Check
  13. 硬件联机控制
  14.other 
   Model Specific Register (MSR)
  MSR指令
  MSR指令的格式为:
  MSR{条件} 程序状态寄存器(CPSR或SPSR)_<域>,操作数
  MSR指令用于将操作数的内容传送到程序状态寄存器的特定域中。其中,操作数可以为通用寄存器或立即数。<域>用于设置程序状态寄存器中需要操作的位,32位的程序状态寄存器可分为4个域:
  位[31:24]为条件标志位域,用f表示;
  位[23:16]为状态位域,用s表示;
  位[15:8]为扩展位域,用x表示;
  位[7:0]为控制位域,用c表示;
  该指令通常用于恢复或改变程序状态寄存器的内容,在使用时,一般要在MSR指令中指明将要操作的域。
  指令示例:
  MSR CPSR,R0 ;传送R0的内容到CPSR
  MSR SPSR,R0 ;传送R0的内容到SPSR
  MSR CPSR_c,R0 ;传送R0的内容到CPSR,但仅仅修改CPSR中的控制位域

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值