Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 以编程方式访问笔记本电脑嵌入式风扇控制器?_C_Windows_Acpi - Fatal编程技术网

C 以编程方式访问笔记本电脑嵌入式风扇控制器?

C 以编程方式访问笔记本电脑嵌入式风扇控制器?,c,windows,acpi,C,Windows,Acpi,我想访问(windows)笔记本电脑的嵌入式控制器来控制风扇速度。目前我正在使用-如何访问嵌入式控制器(例如,使用C)手动执行此操作?谢谢你的提示 请注意:我知道RW Everything可以从命令行使用,但是每秒调用它来读取一些寄存器并不是那么好…如果您使用RW Everything来简单地更改物理内存地址的位,您始终可以使用MmMapIoSpace或任何其他windows api函数将物理内存映射到处理本地内存空间,这些函数允许您对物理内存进行RW访问。映射完需要访问的空间部分后,可以直接寻

我想访问(windows)笔记本电脑的嵌入式控制器来控制风扇速度。目前我正在使用-如何访问嵌入式控制器(例如,使用C)手动执行此操作?谢谢你的提示


请注意:我知道RW Everything可以从命令行使用,但是每秒调用它来读取一些寄存器并不是那么好…

如果您使用RW Everything来简单地更改物理内存地址的位,您始终可以使用MmMapIoSpace或任何其他windows api函数将物理内存映射到处理本地内存空间,这些函数允许您对物理内存进行RW访问。映射完需要访问的空间部分后,可以直接寻址和更改它


我只在windows上使用过这种方法写入并行端口,但我在linux的其他项目中也使用过类似的解决方案。

以编程方式,您需要创建一个内核模式驱动程序,该驱动程序使用MmMapIoSpace并处理IRP_MJ_CONTROL主函数的IOCTL,然后调用StartServiceManager,在其上创建服务并启动服务,然后使用DeviceIoControl发送IOCTL以执行操作底层物理内存/IO空间/MSR的任务。请参阅:。您不能再对风扇进行编程。请注意玛格丽特的回答:

值得注意的是,9年后,SuperIOs在笔记本电脑系统中消失,取而代之的是ECs。ECs有自己的固件,使用PECI接口读取CPU的DTS。EC的PWM HW只能从EC访问,如果不设置CPU节流策略,操作系统将不再控制CPU风扇

您过去可以通过将07h写入I/O端口2Eh(索引寄存器)来选择超级逻辑设备,这会导致southbridge生成LPC循环,从而导致SIO选择LDN寄存器(在通用空间中的偏移量07h处:偏移量00h–30h),然后将LDN写入端口2Fh(数据寄存器)生成导致SIO选择该LDN的LPC循环。这将导致偏移量30h–FFh处的LDN配置空间在端口处映射,然后可以使用索引访问该配置空间,然后读取/写入数据寄存器。PCH上LPC网桥中的一个位用于选择是公开端口2F/2E还是4F/4E


在ECs中,寄存器被分为主机视图和EC视图。所有PWM和PECI寄存器不再是逻辑设备,它们的寄存器只映射到车载EC CPU的MMIO空间中,在常规IO空间中只留下少数通用寄存器对主机可见。一些LDN在自己的空间(偏移量30h–FFh)中公开IO基址寄存器,允许映射额外的寄存器。EC的固件使用PECI总线读取CPU的DTS,并在其MMIO空间中的已知寄存器偏移量下相应地调整风扇速度。

签出-似乎是一个很好的起点。谢谢david。可惜窗户上的东西太复杂了。在linux上很容易,我想我应该在我的笔记本电脑上安装linux:dp可能的副本我可以问一下为什么需要控制风扇吗?也许Speedfan会满足你的需要,你检查过了吗?