我想知道使用 c++ 代码片段从 dbus 接口获取属性的方法/代码片段。
我尝试了以下错误方法。
方法#1使用 g_dbus_proxy_get_cached_property但它总是返回 null
ifproxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM,
flags,
NULL,
"org.freedesktop.NetworkManager",
"org/freedesktop/NetworkManager/Device/0",
"org.freedesktop.NetworkManager.Device",
NULL,
&error);
ret = g_dbus_proxy_get_cached_property(ifproxy, "State")
方法#2 g_dbus_proxy_call_sync -这个说“org.freedesktop.networkmanager”未导出(或可能不存在),无法访问属性“接口”
ifproxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM,
G_DBUS_PROXY_FLAGS_NONE,
NULL,
"org.freedesktop.NetworkManager",
"org/freedesktop/NetworkManager/Device/0",
"org.freedesktop.DBus.Properties",
NULL, NULL);
g_assert (ifproxy);
/* Get the object path of the Connection details */
ret = g_dbus_proxy_call_sync (ifproxy,
"Get",
g_variant_new ("(ss)",
"org/freedesktop/NetworkManager/Device/0",
"Interface"),
G_DBUS_CALL_FLAGS_NONE, -1,
NULL, &error);
if (!ret) {
g_dbus_error_strip_remote_error (error);
g_warning ("Failed to get property: %s\n",
error->message);
g_error_free (error);
return;
}
name = g_variant_get_string(ret, NULL);
//g_assert(ret != NULL);
g_variant_get (ret, "s", &name);
g_variant_unref (ret);