0

我正在开发一个必须检测存储卷是否已安装或卸载的应用程序。我正在使用GIO它。我在听mount-addedmount-removed信号。当我安装/卸载笔式驱动器时,一切正常。但是,我在安装 iPod 时遇到了问题。我在挂载和卸载时分别收到两个回调。我假设其中一个GMount对象会被遮蔽,但g_mount_is_shadowed对两者都返回 false。我如何决定处理哪个,忽略哪个?我无法同时处理两者。我必须检测与存储设备对应的挂载/卸载并仅处理它。

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);
    ...
}
4

1 回答 1

0

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

于 2011-01-06T11:35:48.073 回答