From: Toni Wilen Date: Sun, 8 Apr 2018 10:40:12 +0000 (+0300) Subject: Unmount volume before imaging. X-Git-Tag: 4000~134 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=175991f8ff1ad6aa43fde6f98615c5752f2653eb;p=francis%2Fwinuae.git Unmount volume before imaging. --- diff --git a/od-win32/hardfile_win32.cpp b/od-win32/hardfile_win32.cpp index 5365bddd..0298d6ad 100644 --- a/od-win32/hardfile_win32.cpp +++ b/od-win32/hardfile_win32.cpp @@ -3536,12 +3536,19 @@ int harddrive_to_hdf (HWND hDlg, struct uae_prefs *p, int idx) CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN | FILE_FLAG_NO_BUFFERING, NULL); if (hdst == INVALID_HANDLE_VALUE) goto err; + + if (DeviceIoControl(h, FSCTL_LOCK_VOLUME, NULL, 0, NULL, 0, &r, NULL)) { + if (DeviceIoControl(h, FSCTL_DISMOUNT_VOLUME, NULL, 0, NULL, 0, &r, NULL)) { + write_log(_T("Volume locked and dismounted\n")); + } else { + write_log(_T("WARNING: '%s' FSCTL_DISMOUNT_VOLUME returned %d\n"), path, GetLastError()); + } + } else { + write_log(_T("WARNING: '%s' FSCTL_LOCK_VOLUME returned %d\n"), path, GetLastError()); + } if (!DeviceIoControl(h, FSCTL_ALLOW_EXTENDED_DASD_IO, NULL, 0, NULL, 0, &r, NULL)) { write_log (_T("WARNING: '%s' FSCTL_ALLOW_EXTENDED_DASD_IO returned %d\n"), path, GetLastError ()); } - if (!DeviceIoControl(h, FSCTL_LOCK_VOLUME , NULL, 0, NULL, 0, &r, NULL)) { - write_log (_T("WARNING: '%s' FSCTL_LOCK_VOLUME returned %d\n"), path, GetLastError ()); - } li.QuadPart = size; ret = SetFilePointer (hdst, li.LowPart, &li.HighPart, FILE_BEGIN); if (ret == INVALID_SET_FILE_POINTER && GetLastError () != NO_ERROR)