在 Linux 上,该模块acpi_call
可以实现此功能,但在 Windows 上我没有看到此功能。可以通过 WMI 实现吗?或者我真的需要编写一些内核模式代码吗?
请注意,我说的是已经存在,这并不是要定义新的方法。
举个例子,假设我想调用\_SB.PCI0.PEG0.PEGP._OFF
,我该怎么做?
编辑 :由于没有 Windows 中类似的方法acpi_call
,似乎唯一剩下的方法就是启用内核调试并启动调试会话,就像在MS 文档。
但是,这需要禁用安全启动,这是正常的,但当需要定期执行时,这不是一个可行的选择。
实际上,我甚至不确定 Windows 框架是否能轻易允许编写一个acpi_call
等效的程序,因为它似乎驱动程序只能评估 ACPI 设备树中设备子对象的控制方法,因此必须将等效项附加到设备树的根。Acpi.sys
驱动程序已经存在,我怀疑会发生冲突。
将范围限制在一个设备
评估\_SB_.PCI0.PEG0.PEGP._OFF
实际上相当于关闭笔记本电脑的 Nvidia dGPU。同样的问题也存在,因为 Nvidia 驱动程序已经附加\_SB_.PCI0.PEG0.PEGP
在 ACPI 设备树中。因此在同一位置编写设备驱动程序可能会发生冲突。
值得庆幸的是(如果我可以这么说的话),我想这样做是有原因的,因为我的 dGPU 坏了。坏了之后,驱动程序就无法再加载,也无法管理设备的电源状态。所以我可以删除或禁用 Nvidia 驱动程序,并将其替换为仅在系统启动期间关闭设备的驱动程序。
话虽如此,我不知道如何编写这么简单的驱动程序。
因此,只要我是正确的,我就有两个选择:
- 配置 Nvidia 驱动程序,使其自动关闭设备。
- 编写一个可以完成该任务的设备驱动程序,替换 Nvidia 驱动程序。
欢迎提出建议!
答案1
一些 ACPI 方法可以通过电源配置。例如,要生成有关电池状态的报告并使用并将其发送到 c:\Windows\System32,请以管理员身份在 CMD 提示符中输入以下内容:
powercfg /BATTERYREPORT
微软记录了电源配置命令集但我没有看到禁用 GPU 的选项。要禁用 GPU,你可能需要安装 Microsoft 的Windows 设备控制台,执行程序或免费的第三方工具,Nirsoft 的开发者视图。
使用开发者大会要禁用 GPU,请在 CMD 中输入以下内容,
devcon.exe disable "Name of GPU as Shown in Device Manager"
当然,使用使能够再次使用 GPU。