我正在开发一个应用程序,它必须检测是否已安装或卸载存储卷。我正在使用GIO
。我在听mount-added
和mount-removed
信号。安装/卸载笔式驱动器时一切正常。但是,我在安装iPod时遇到了问题。我在mount和unmount上得到两个回调。我假设其中一个GMount
对象为shadowed,但g_mount_is_shadowed对两者都返回false。我如何决定要处理哪个以及忽略哪个?我无法处理这两个。我必须检测与存储设备相对应的mount / unmount并仅处理该。
int main()
{
g_type_init();
GVolumeMonitor* volume_monitor = g_volume_monitor_get();
g_signal_connect(G_OBJECT(volume_monitor), "mount-added", G_CALLBACK(mount_added), NULL);
g_signal_connect(G_OBJECT(volume_monitor), "mount-removed", G_CALLBACK(mount_removed), NULL);
GMainLoop* main_loop = g_main_loop_new(NULL, FALSE);
g_main_loop_run(main_loop);
...
}
答案 0 :(得分:0)
我已经弄清楚了。 GIO
为每个添加的文件系统发出mount-added
信号。 iPod有两个文件系统 - 一个用于操作系统,另一个用于存储音乐。因此反复回调。在卸载时也会发生同样的情况。这与阴影坐骑无关。不幸的是,我仍然不知道如何区分两个坐骑。 GIO
显示的唯一区别是其中一个GMount
对象没有与之关联的GVolume
对象。我不知道如何解释。