From 175991f8ff1ad6aa43fde6f98615c5752f2653eb Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Sun, 8 Apr 2018 13:40:12 +0300 Subject: [PATCH] Unmount volume before imaging. --- od-win32/hardfile_win32.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) 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) -- 2.47.3