安装iPod时有多个挂载事件

时间:2011-01-05 14:24:09

标签: linux ipod gio

我正在开发一个应用程序,它必须检测是否已安装或卸载存储卷。我正在使用GIO。我在听mount-addedmount-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);
    ...
}

1 个答案:

答案 0 :(得分:0)

我已经弄清楚了。 GIO为每个添加的文件系统发出mount-added信号。 iPod有两个文件系统 - 一个用于操作系统,另一个用于存储音乐。因此反复回调。在卸载时也会发生同样的情况。这与阴影坐骑无关。不幸的是,我仍然不知道如何区分两个坐骑。 GIO显示的唯一区别是其中一个GMount对象没有与之关联的GVolume对象。我不知道如何解释。