在 WinPE 中检测交流电源连接?
Posted
技术标签:
【中文标题】在 WinPE 中检测交流电源连接?【英文标题】:Detecting AC Power connection in WinPE? 【发布时间】:2009-06-16 14:07:16 【问题描述】:我正在尝试确定笔记本电脑是否连接到交流电源。
我运行的操作系统是 WinPE。 我的应用是用原生 C++ 编写的。
不支持使用 Win32_Battery 的 WMI 查询,GetSystemPowerStatus API 始终为 ACLineStatus 返回“1”(是否在交流电源上运行)。
有什么想法吗?
补充调查: 刚刚使用 POWER_INFORMATION_LEVEL::SystemBatteryState 尝试了 API 'CallNtPowerInformation'。无论电源状态如何,SYSTEM_BATTERY_STATUS 结构元素 AcOnLine 也返回 1。可能只是调用了相同的系统级代码,但我想我会在这里添加它。
【问题讨论】:
【参考方案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 映像本身中,也可以按需加载。即驱动加载
【讨论】:
以上是关于在 WinPE 中检测交流电源连接?的主要内容,如果未能解决你的问题,请参考以下文章