Qt 5.2 응용 프로그램에서 안전하게 USB 키를 제거 할 수있는 방법을 찾고 있지만이를 수행 할 Qt 모듈을 찾을 수 없습니다.Qt 안전하게 장치를 제거하십시오
내가 할 수있는 방법입니까 아니면 하드 코딩해야합니까?
Qt 5.2 응용 프로그램에서 안전하게 USB 키를 제거 할 수있는 방법을 찾고 있지만이를 수행 할 Qt 모듈을 찾을 수 없습니다.Qt 안전하게 장치를 제거하십시오
내가 할 수있는 방법입니까 아니면 하드 코딩해야합니까?
제거하여 USB 장치를 마운트 해제한다는 것은 해당 장치에 대한 교차 플랫폼 솔루션이 없음을 의미합니다. 아마도 QtSystems 모듈에 무언가를 추가 할 수 있지만 문제는 관리자 권한이나 몇 가지 트릭이 필요하다는 것입니다. setuid 또는 caps on 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
}
그 소리가 훌륭합니다. Mac OS 용 코드가 있습니까? –
@ ꜱᴀᴍᴏᴛʜ : 아니요, 죄송합니다. 또한 pmount가 setuid를 사용하여 일반 사용자로 umounting을 허용하는 것과 같은 작업을 수행 할 수도 있습니다. 또한 디스크 정보 등을 반환하는 QtSystems와 함께 사용해야합니다. 경로가 반드시 교차 플랫폼은 아닙니다. 시리얼 포트 경로와 비슷합니다. – lpapp
@ ꜱᴀᴍᴏᴛʜ : 사실, 리눅스 부분도 Mac에서 작동 할 수 있습니다. 어느 쪽이든, 나는 그것을 할 수있는 방법이 있는지 또는 코드를 작성해야하는지에 대한 대답을 얻은 것 같습니다. :) – lpapp
Qt를 사용하여 USB를 제거한 적이 없지만이 간단한 c 코드도 작동합니다.
#include <sys/mount.h>
int umount(const char *target);
당신은 USB 키를 제거하여 무엇을 의미합니까? – lpapp
@ LaszloPapp 나는 [이] (http://windows.microsoft.com/ko-kr/windows7/safely-remove-devices-from-your-computer)와 같은 것을 의미합니다. –