0

我正在 DBus 上观看 HAL 事件,观察交流适配器何时被移除/插入。

通过dbus-montior,这两个事件看起来完全相同:

拔出事件

signal sender=:1.85 -> dest=(null destination) serial=3698 path=/org/freedesktop/Hal/devices/computer_power_supply_ac_adapter_AC0; interface=org.freedesktop.Hal.Device; member=PropertyModified
   int32 1
   array [
      struct {
         string "ac_adapter.present"
         boolean false
         boolean false
      }
   ]

插件事件

signal sender=:1.85 -> dest=(null destination) serial=3701 path=/org/freedesktop/Hal/devices/computer_power_supply_ac_adapter_AC0; interface=org.freedesktop.Hal.Device; member=PropertyModified
   int32 1
   array [
      struct {
         string "ac_adapter.present"
         boolean false
         boolean false
      }
   ]

但是,显式查询org.freedesktop.Hal中的ac_adapter.present属性确实会正确返回设备状态。

问题:在 PropertyModified 事件中发送的布尔值是什么?是否存在我可以过滤的事件,该事件将包含有关适配器存在的信息,或者我是否必须在收到更模糊的“发生某事”消息后显式查询?

HAL DBus 文档不是特别有用,或者我找错地方了。

4

1 回答 1

0

在收到更模糊的“发生了什么事”消息后,我是否必须明确查询?

是的。如果你使用像d-feet这样的DBus浏览器,你会看到org.freedesktop.Hal.DeviceAC适配器对象上的接口有方法

  • GetProperty(String property) -> Variant
  • GetPropertyBoolean(String property) -> Boolean- 可能对ac_adapter.present
于 2012-10-17T21:49:15.803 回答