gpt4 book ai didi

c++ - 在 WinPE 中检测交流电源连接?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:37:31 27 4
gpt4 key购买 nike

我正在尝试确定笔记本电脑是否已连接到交流电源。

我运行的操作系统是WinPE。我的应用程序是用原生 C++ 编写的。

不支持使用 Win32_Battery 的 WMI 查询,GetSystemPowerStatus API 始终为 ACLineStatus 返回“1”(是否使用交流电源运行)。

有什么想法吗?

补充调查:刚刚使用 POWER_INFORMATION_LEVEL::SystemBatteryState 尝试了 API“CallNtPowerInformation”。无论电源状态如何,SYSTEM_BATTERY_STATUS 结构元素 AcOnLine 也返回 1。可能只是调用了相同的系统级代码,但我认为我会在此处添加它。

最佳答案

我设法回答了我自己的问题,最后证明它非常简单。

在 WinPE 中,由于未识别电池,以下 noddy 脚本在执行时返回 null:

strComputer = "."设置 objWMIService = GetObject("winmgmts:\"& strComputer & "\root\CIMV2")设置 colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Battery",,48)对于 colItems 中的每个 objItem Wscript.Echo objItem.BatteryStatus Wscript.Echo objItem.Caption下一步

我在我的 PE 镜像 (\windows\inf\battery.inf) 中发现了一个电池设备驱动程序,一旦安装它就会导调用池被识别并且上述脚本返回预期值。即 BatteryStatus = 2(系统可以访问交流电,因此没有电池正在放电)或 BatteryStatus = 1(电池正在放电,即未连接交流电)。

驱动程序可以安装在 PE 镜像本身或按需加载。即 drvload

关于c++ - 在 WinPE 中检测交流电源连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1001719/

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