【问题标题】:Why is there no WMI instance for Win32_Fan, when I do have a fan?当我有风扇时,为什么没有 Win32_Fan 的 WMI 实例?
【发布时间】:2020-06-24 14:20:54
【问题描述】:

我正在使用 WMI 来监控某些硬件指标,具体来说,我正在使用 WMIExplorer.exe 来查找 WMI 类及其实例(WMIExplorer.exe 下载链接:https://www.bleepingcomputer.com/download/wmi-explorer/)。当我尝试在 Root\cimv2 命名空间中检索 Win32_Fan 类的实例时,我得到 0 个实例。我想知道为什么会这样,因为我的笔记本电脑里确实有一个风扇。是否有一些风扇/硬件不支持通过 WMI 接口检索?

请注意,我还在 PowerShell 中尝试了“Get-WmiObject -query”SELECT * FROM Win32_Fan“命令以确认没有实例;该命令没有输出。我只是想知道是否有任何原因导致实例除了硬件与 WMI 不兼容之外没有显示。或者是否有其他方法可以在不下载第三方应用程序的情况下找到风扇速度?(我想在个人 C++ 程序中获取风扇速度)。

【问题讨论】:

  • 如果你看docs.microsoft.com/en-us/windows/win32/cimwin32prov/win32-fan,有可以返回的错误码。您是否查看过返回的 ConfigManagerErrorCode
  • 您的风扇控制器(通常是 SMBus 芯片的一部分)似乎没有符合 WMI 标准的驱动程序,或者该芯片确实有符合 WMI 标准的驱动程序,但它只处理该芯片的其他功能,如电压监控和忽略风扇。无论哪种情况,更新驱动程序都可能会有所帮助。
  • 您可以下载的大多数第三方应用程序都将使用直接与 SMBus 通信的库,而不是通过 WMI 等抽象。
  • @BenVoigt 谢谢;有没有推荐的第三方应用?
  • 我曾经使用 SpeedFan,最近使用的是 OpenHardwareMonitor。我很确定两者的代码都是可用的,并且会展示如何在 I2C / SMBus 桥驱动程序的帮助下,您可以在自己的代码中读取该数据。

标签: c++ wmi


【解决方案1】:

Win32_Fan 实例由Windows\System32\wbem\cimwin32.dll 提供。如果您反汇编它,您会看到它读取 SMBIOS 数据(特别是类型 27 的条目)以获取风扇设备信息。因此,没有此类实例意味着您的系统制造商没有将风扇设备信息写入 ROM 的一部分 SMBIOS。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多