在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例Windows系统编程 → WinRing0获取ChipName和FAN RPM

WinRing0获取ChipName和FAN RPM

Windows系统编程

下载此实例
  • 开发语言:C#
  • 实例大小:0.12M
  • 下载次数:14
  • 浏览次数:385
  • 发布时间:2021-04-20
  • 实例类别:Windows系统编程
  • 发 布 人:971884833
  • 文件格式:.zip
  • 所需积分:2
 相关标签: WinRing0_Test

实例介绍

【实例简介】

WinRing0_Test

【实例截图】

【核心代码】

using System;
using System.Collections.Generic;
using System.Text;

namespace WinRing0_Test
{
    public class TestByWinRing0
    {
        private static OpenLibSys.Ols MyOls;
        public static ushort ec_addr_port;
        public static ushort ec_data_port;

        public bool Initialize()
        {
            MyOls = new OpenLibSys.Ols();
            return MyOls.GetStatus() == (uint)OpenLibSys.Ols.Status.NO_ERROR;
        }

        private static int SuperIo_Inw(byte data)
        {
            int val;
            MyOls.WriteIoPortByte(0x2e, data );
            val = MyOls.ReadIoPortByte(0x2f) << 8;
            Console.WriteLine("SuperIo_Inw  val1:" Convert.ToString(val,16));
            MyOls.WriteIoPortByte(0x2e, data);
            val |= MyOls.ReadIoPortByte(0x2f);
            Console.WriteLine("SuperIo_Inw  val2:" Convert.ToString(val,16));
            return val;
        }

        public void InitSuperIO()
        {
            MyOls.WriteIoPortByte(0x2e, 0x87);
            MyOls.WriteIoPortByte(0x2e, 0x01);
            MyOls.WriteIoPortByte(0x2e, 0x55);
            MyOls.WriteIoPortByte(0x2e, 0x55);
        }

        public string GetChipName()
        {
            ushort chip_type;
            chip_type = (ushort)SuperIo_Inw(0x20);
            Console.WriteLine("chip type :" Convert.ToString(chip_type,16));
            return "IT" Convert.ToString(chip_type,16);
        }

        //FAN EC(LDN=04h, Index 30h=01)
        public void InitEc()
        {
            //enable ec
            MyOls.WriteIoPortByte(0x2e, 0x07);
            MyOls.WriteIoPortByte(0x2f, 0x04);
            MyOls.WriteIoPortByte(0x2e, 0x30);
            MyOls.WriteIoPortByte(0x2f, 0x01);
            //get ec base addr
            ushort ec_base = (ushort)SuperIo_Inw(0x60);
            Console.WriteLine("ec_base addr:" Convert.ToString(ec_base, 16));
            ec_addr_port = (ushort)(ec_base 0x05);
            ec_data_port = (ushort)(ec_base 0x06);
            Console.WriteLine("ec_addr_port :" Convert.ToString(ec_addr_port, 16)
                "  ec_data_port :" Convert.ToString(ec_data_port, 16));

            MyOls.WriteIoPortByte(ec_addr_port, 0x0c);
            MyOls.WriteIoPortByte(ec_data_port, 0x00);
        }

        public int GetFanRpm()
        {
            int fan_speed = 0;
            int fan_rpm = 0;
            //IT8772E
            //2-3 Reading Registers[7:0] (Index=0Eh-0Fh)
            MyOls.WriteIoPortByte(ec_addr_port, 0x0e);
            byte lval = MyOls.ReadIoPortByte(ec_data_port);
            Console.WriteLine("lval:" Convert.ToString(lval, 2));

            //2-3 Extended Reading Registers [15:8] (Index=19h-1Ah)
            MyOls.WriteIoPortByte(ec_addr_port, 0x19);
            byte mval = MyOls.ReadIoPortByte(ec_data_port);
            Console.WriteLine("mval:" Convert.ToString(mval, 2));

            fan_speed = (mval << 8) | lval;
            Console.WriteLine("fan_speed:" fan_speed);
            fan_rpm = (int)(1.35 * Math.Pow(10, 6) / (fan_speed * 2));
            Console.WriteLine("fan_rpm:" fan_rpm);

            return fan_rpm;
        }
    }

    
}



标签: WinRing0_Test

实例下载地址

WinRing0获取ChipName和FAN RPM

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警