Qt安全地删除设备

时间:2014-05-19 17:13:40

标签: c++ qt usb qt5 removable-drive

我正在寻找一种从Qt 5.2应用程序中安全删除USB密钥的方法,但我找不到任何Qt模块来执行此操作。

他们是这样做的,还是我必须对其进行硬编码?

2 个答案:

答案 0 :(得分:2)

我从未使用Qt删除USB,但这个简单的c代码也可以使用。

#include <sys/mount.h>

int umount(const char *target);

答案 1 :(得分:1)

如果您的意思是通过删除来卸载USB设备,那么就没有针对此的跨平台解决方案。也许在QtSystems模块中可能会添加一些内容,但问题是这需要管理员权限或一些技巧,例如: Linux上的setuid或caps等等。

您现在可以在这些方面做一些事情来实现此功能:

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
}