我正在使用libhal來檢測設備事件。我能夠檢測添加或刪除的設備,但無法檢測設備的安裝點。功能libhal_volume_get_mount_point(volume)
不起作用。如何在C/C++中查找設備的掛載點?
我有一個回調函數來檢測設備添加:
static void handle_device_added(LibHalContext *ctx, const char *udi) {
dbus_bool_t is_storage;
dbus_bool_t is_volume;
is_storage = libhal_device_query_capability(ctx, udi, "storage", NULL);
is_volume = libhal_device_query_capability(ctx, udi, "volume", NULL);
if (is_storage) {
drive = libhal_drive_from_udi(ctx, udi);
if (libhal_drive_is_hotpluggable(drive) || libhal_drive_uses_removable_media(drive)) {
printf("Storage device added %s model %s\n",
libhal_drive_get_device_file(drive),
libhal_drive_get_model(drive));
}
libhal_drive_free(drive);
}
if(is_volume) {
volume = libhal_volume_from_udi(ctx, udi);
printf("Mount point = %s\n", libhal_volume_get_mount_point(volume));
libhal_volume_free(volume);
}
}
libhal_volume_from_udi,返回NULL。
您是否知道使用C檢測存儲設備掛載點的合適方法?
UPDATE
我設法找到通過搜索/etc/mtab
安裝該設備的點,但還是有一個小問題。我假設設備只有一個分區。
如何獲取存儲設備上的分區列表?所以我可以找到每個的掛載點。
我已添加我的代碼。感謝您的回答。 – 2011-12-26 19:20:21
我會嘗試搜索設備名稱的mtap。 – 2011-12-26 19:28:30
我用'/ etc/mtab'成功了,但是我仍然有一個小問題:我假設連接的設備有一個分區。我如何獲得存儲設備的分區信息? – 2011-12-27 00:22:54