From 0992092a0f3e120ec3fdf911a808cfe8ef93b877 Mon Sep 17 00:00:00 2001 From: Cástor Muñoz Date: Fri, 8 Jan 2016 23:40:39 +0100 Subject: rbutil: fix resolveDevicename() on Windows Solves some eject issues (FSCTL_LOCK_VOLUMEN ioctl failures) ocurring when resolveDevicename() is ejecuted prior to ejectDevice(), tested with Qt5. Change-Id: Iff9240abd9d2f71bec1a1070f4ef194916e13b65 --- rbutil/rbutilqt/base/utils.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'rbutil/rbutilqt') diff --git a/rbutil/rbutilqt/base/utils.cpp b/rbutil/rbutilqt/base/utils.cpp index 724a1553f1..6bd9e23230 100644 --- a/rbutil/rbutilqt/base/utils.cpp +++ b/rbutil/rbutilqt/base/utils.cpp @@ -502,13 +502,14 @@ QString Utils::resolveDevicename(QString path) // get the extents if(DeviceIoControl(h, IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS, NULL, 0, extents, sizeof(buffer), &written, NULL)) { - if(extents->NumberOfDiskExtents > 1) { - LOG_INFO() << "resolving device name: volume spans multiple disks!"; - return ""; + if(extents->NumberOfDiskExtents == 1) { + CloseHandle(h); + LOG_INFO() << "device name is" << extents->Extents[0].DiskNumber; + return QString("%1").arg(extents->Extents[0].DiskNumber); } - LOG_INFO() << "device name is" << extents->Extents[0].DiskNumber; - return QString("%1").arg(extents->Extents[0].DiskNumber); + LOG_INFO() << "resolving device name: volume spans multiple disks!"; } + CloseHandle(h); #endif return QString(""); -- cgit