質問
私は、ストレージボリュームがマウントまたはマウント解除されたかどうかを検出するために持っているアプリに取り組んでいます。私はそのためGIO
を使用しています。私はmount-added
とmount-removed
信号のリスニング。すべては私が/マウントペンドライブをアンマウントするとき罰金に動作します。 iPodをマウントするときしかし、私は問題を見ています。私は、マウントとアンマウント上の2つのコールバックをそれぞれ取得しています。私は影<だろうGMount
のオブジェクトの1つを仮定しました/>しかし、 g_mount_is_shadowed に戻っています両方の場合はfalse。どのように私はどちらの方法にしている無視することにしたのですか?私は両方を処理することはできません。 Iマウント/アンマウントのみ記憶装置及び処理に対応することを検出する必要があります。
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);
...
}
解決
私はそれを考え出しました。 GIO
が追加されている各ファイルシステムのmount-added
信号を発します。 OS用と音楽を格納するための1 - iPodは2つのファイルシステムを持っています。したがって、繰り返しコールバック。同じことはアンマウントに起こります。これは、影のマウントとは何の関係もありません。残念ながら、私はまだ2つのマウントを区別するのか分かりません。唯一の違いはGIO
shows GMount
オブジェクトの一つは、それに関連付けられたGVolume
オブジェクトを持っていないということです。私はそれを解釈する方法がわからない。
所属していません StackOverflow