读 Hardware Monitor
来源:互联网 发布:淘宝好的女装店铺推荐 编辑:程序博客网 时间:2024/05/15 23:47
这几天一直在回忆HW Monitor的读取方法,因为之前的source code 被误删掉了,所以翻出ICH10和SIO的datasheet重看了一下。找到一个很好的论坛,需要了解硬体操作的可以看下 :http://bbs.2beanet.com/map.php?forum=5&news
1.AP访问底层需要通过驱动中转,常用的工具是WinIo,它通过加载内核级驱动来提供底层操作,也正因如此在使用读写函数前需要初始化。
2.SIO的型号是W83627DHG ,是通过LPT BUS连接到ICH10的,通常LPT bus的入口是0x295和0x296 ,这个是I\O map可以用inputb和ouputb直接操作。 W83627DHG也可以通过IIC连接ICH10 ,这种情况地址是0x48。如果不确定连接方式可以通过0x2E 0x2F或者0X4E 0X4F(if HEFRAS pin pulse hight) 读取CR60和CR61得到SIO的基地址。下面是一段demo code
;-----------------------------------------------------; Enter the Extended Function Mode;-----------------------------------------------------MOV DX, 2EHMOV AL, 87HOUT DX, ALOUT DX, AL;-----------------------------------------------------------------------------; Configure Logical Device 1, Configuration Register CRF0;-----------------------------------------------------------------------------MOV DX, 2EHMOV AL, 07HOUT DX, AL ; point to Logical Device Number Reg.MOV DX, 2FHMOV AL, 01HOUT DX, AL ; select Logical Device 1;MOV DX, 2EHMOV AL, F0HOUT DX, AL ; select CRF0MOV DX, 2FHMOV AL, 3CHOUT DX, AL ; update CRF0 with value 3CH;----------------------------------------------------------------------------; Exit the Extended Function Mode;----------------------------------------------------------------------------MOV DX, 2EHMOV AL, AAHOUT DX, AL
应用程序:
if (!InitializeWinIo()) { MessageBox(_T("please copy the WINIO.VXD,WinIo.dll,WinIo.sys to the forder where the .exe exist"),_T("ERRor")); return; } DWORD CPUTemperature=0; DWORD MainboardTemperature=0; DWORD CPUTemperature1,CPUTemperature2; CString str; SetPortVal(0x2E,0x87,1);//Enter the Extended Function ModeSetPortVal(0x2E,0x87,1); SetPortVal(0x295,0x48,1); SetPortVal(0x295,0x27,1);//主板温度 GetPortVal(0x296,&MainboardTemperature,1); SetPortVal(0x295,0x4E,1);//bank select SetPortVal(0x296,0x81,1); SetPortVal(0x295,0x50,1); GetPortVal(0x296,&CPUTemperature1,1); SetPortVal(0x295,0x51,1); GetPortVal(0x296,&CPUTemperature2,1); CPUTemperature=(CPUTemperature1<<1)|((CPUTemperature2>>7)&0x01); SetPortVal(0x2E,0xAA,1); cpu_t.Format(_T("%u ℃"),CPUTemperature/2); maiboard_t.Format(_T("%u ℃"),MainboardTemperature); UpdateData(FALSE); ShutdownWinIo();
- 读 Hardware Monitor
- Monitor server hardware. Tools might include Device Manager, the Hardware Troubleshooting Wizard, and appropriate Control Panel
- hardware
- monitor
- Monitor
- Monitor
- Monitor
- monitor
- Monitor
- Android TV 官方教程简读2-Handling TV Hardware
- About hardware
- Hardware overlay
- Hardware Guide
- Hardware breakpoints
- Hardware Tour
- Hardware breakpoints
- Hardware Buffers
- android - hardware
- 用户接口设计三 队列
- DesToon如何制作模板
- Android平台上抓包
- Linux IPC发展的宏观介绍
- 信号测试_信号处理函数嵌套
- 读 Hardware Monitor
- 误删VMware快照导致无法启动虚拟系统的问题
- [素材资源] 音频格式
- google chrome 快捷键
- 4Sum
- 关于 DialogFrament
- android layoutinflater
- testLib
- Android应用程序消息处理机制(Looper、Handler)分析