- set_errno_from_GetLastError();
- ERROR_WITH_ERRNO("Failed to add overlay source \"%ls\" "
- "to volume \"%ls\"", wim_path, drive_path);
- ret = WIMLIB_ERR_WIMBOOT;
- goto out_close_handle;
+ DWORD err = GetLastError();
+ if (err == ERROR_INVALID_FUNCTION) {
+ if (!tried_to_attach_wof) {
+ CloseHandle(h);
+ h = INVALID_HANDLE_VALUE;
+ tried_to_attach_wof = true;
+ if (try_to_attach_wof(drive_path + 4))
+ goto retry_ioctl;
+ }
+ ERROR("The version of Windows you are running does not appear to support\n"
+ " the Windows Overlay File System Filter Driver. Therefore, wimlib\n"
+ " cannot apply WIMBoot information. Please run from Windows 8.1\n"
+ " Update 1 or later.");
+ ret = WIMLIB_ERR_UNSUPPORTED;
+ goto out_close_handle;
+ } else {
+ set_errno_from_win32_error(err);
+ ERROR_WITH_ERRNO("Failed to add overlay source \"%ls\" "
+ "to volume \"%ls\" (err=0x%08"PRIu32")",
+ wim_path, drive_path + 4, (uint32_t)err);
+ ret = WIMLIB_ERR_WIMBOOT;
+ goto out_close_handle;
+ }