私はC++のコードスニペットを使用してdbusのインターフェイスからプロパティを取得するためのアプローチ/コードスニペットを知っていただきたいと思います。C++ gdbus - gdbusライブラリを使用してインタフェースのプロパティを取得する方法は?
私はエラーで、次のアプローチを試してみました。
アプローチ#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される - この1つは言う、 "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);
入力していただきありがとうございます。 "Devices/0"のprpoerty "Interface"の出力が出てきました。出力はインターフェイス名です: - 1 \ xedI \ x89 \ XD1^H \ x89 \ xe2H \ X83 \ xe4 \ xf0PTI \ xc7 \ XC0。私はこの文字列が何を表しているのか分かりません(それは私にとってはヘキサ-10進数ではないようです)。これをASCII文字列に変換する際に私を助けてください。 –