Qt безопасно удалить устройство

Я ищу способ безопасно удалить мой USB-ключ из моего приложения Qt 5.2, но я не могу найти какой-либо модуль Qt для этого.

Это способ сделать это, или я должен жестко закодировать это?

1

Решение

Если вы имеете в виду размонтирование вашего USB-устройства путем удаления, то для этого нет кроссплатформенного решения. Возможно, что-то может быть добавлено в модуль QtSystems, однако проблема в том, что для этого потребуется разрешение администратора или некоторые хитрости, например, setuid или заглавные буквы на Linux и так далее.

Вы можете сделать что-то в этом направлении, чтобы реализовать эту функцию на вашей стороне:

void MyClass::unmount() {
#ifdef Q_OS_LINUX
// See details: http://linux.die.net/man/2/umount
if (umount(myUsbKeyPath) < 0)
qDebug() << "Failed to umount";
#elif Q_OS_WIN
// See details: http://support.microsoft.com/default.aspx?scid=kb;en-us;165721
DWORD dwBytesReturned;
DeviceIoControl(hVolume,
IOCTL_STORAGE_EJECT_MEDIA,
NULL, 0,
NULL, 0,
&dwBytesReturned,
NULL);
#endif
}
1

Другие решения

Я никогда не удалял USB с помощью Qt, но этот простой код на c тоже подойдет.

#include <sys/mount.h>

int umount(const char *target);
1

По вопросам рекламы [email protected]