Я ищу способ безопасно удалить мой USB-ключ из моего приложения Qt 5.2, но я не могу найти какой-либо модуль Qt для этого.
Это способ сделать это, или я должен жестко закодировать это?
Если вы имеете в виду размонтирование вашего 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
}
Я никогда не удалял USB с помощью Qt, но этот простой код на c тоже подойдет.
#include <sys/mount.h>
int umount(const char *target);