0

ストレージボリュームがマウントされているかマウント解除されているかを検出する必要があるアプリに取り組んでいます。そのために使っGIOています。mount-addedとの信号を聞いていmount-removedます。ペンドライブをマウント/アンマウントすると、すべて正常に動作します。ただし、iPod のマウント時に問題が発生します。マウントとアンマウントでそれぞれ 2 つのコールバックを取得しています。GMountオブジェクトの 1 つがシャドウされると想定しましたが、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 には 2 つのファイル システムがあります。1 つは OS 用で、もう 1 つは音楽を保存するためです。したがって、コールバックが繰り返されます。アンマウント時も同様です。これは影付きのマウントとは関係ありません。残念ながら、私はまだ 2 つのマウントを区別する方法を知りません。唯一の違いGIOは、オブジェクトの 1 つにオブジェクトが関連付けられてGMountいないことです。GVolumeそれをどう解釈していいのかわからない。

于 2011-01-06T11:35:48.073 に答える