gpt4 book ai didi

c++ - 以编程方式访问笔记本电脑上的 CPU 风扇? ( Windows )

转载 作者:IT老高 更新时间:2023-10-28 22:02:34 39 4
gpt4 key购买 nike

在 C/C++ 中是否有 Windows 标准方法来执行“启动风扇”、“降低速度”等操作?

我怀疑它可能是 ACPI,但我是一个虚弱的凡人,无法阅读那种文档。

编辑:例如Windows 7 允许您在电源计划选项中进行选择,例如“被动冷却”(仅在温度升高时?)与“主动冷却”(保持 CPU 主动冷却?)。看来操作系统确实有办法控制风扇。

最佳答案

我目前正在从事一个项目,其中包括控制电脑风扇。基本上,风扇是由你电脑的 superIO 芯片控制的。我们使用端口映射的 IO 直接访问芯片,从那里我们可以访问逻辑风扇设备。使用端口映射 IO 需要代码在内核模式下运行,但 windows 不提供任何通用端口 IO 驱动程序(有充分的理由,因为它是一个非常强大的工具),所以我们编写了自己的驱动程序并使用了它。

如果你想走这条路,你基本上需要两个方面的知识:驱动程序开发以及如何访问和解释 superIO 芯片信息。当我们开始这个项目时,我们对这两个领域都一无所知,所以它一直在通过浏览、阅读和最终做来学习。为了获得知识,我们通过查看这些链接得到了特别的帮助:

  1. WDK ,即 Windows 驱动程序工具包。你需要这个来编译你为 Windows 编写的任何驱动程序,它附带了很多源代码,例如驱动程序,包括一个用于通用端口映射 IO 的驱动程序,称为 portio。
  2. WinIO具有 C 中驱动程序的源代码、以编程方式安装和加载该驱动程序的 C 中的 dll,以及用于 GUI 的一些 C# 代码,用于加载 dll 并读取/写入端口。驱动程序与部分中的驱动程序非常相似。
  3. lm-sensors是一个 linux 项目,除其他外,它会检测您的 superIO 芯片。/prog/detect/sensors-detect 是执行检测的 perl 程序,我们花了一些时间查看代码以了解如何与 superIO 芯片接口(interface)。
  4. 当我们浏览 lm-sensors 代码时,很高兴拥有像 RapidDriver 这样的工具。和 RW-everything ,因为它们允许我们模拟一系列传感器检测。后者功能更强大,对 IO 空间的可视化非常有帮助,而前者提供了对某些操作的更轻松访问,这些操作更好地映射到传感器检测中的操作(读/写字节到端口)
  5. 最后,您需要找到您的 superIO 芯片的数据表。从我所看到的示例中,每个芯片的环境 Controller 都提供类似的功能(读写风扇速度、读取温度、读取芯片电压),但是您必须写入哪些寄存器才能获得此功能. This这个地方已经拥有了我们目前需要的所有数据表。

关于c++ - 以编程方式访问笔记本电脑上的 CPU 风扇? ( Windows ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/485448/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com