h = open_file(vol_name, GENERIC_READ);
if (h == INVALID_HANDLE_VALUE) {
- ERROR("\"%ls\": Can't open volume device (err=%"PRIu32")",
- vol_name, (u32)GetLastError());
+ win32_error(GetLastError(), L"\"%ls\": Can't open volume device",
+ vol_name);
ret = WIMLIB_ERR_OPEN;
goto out;
}
if (!query_device(h, IOCTL_DISK_GET_PARTITION_INFO_EX,
part_info, sizeof(PARTITION_INFORMATION_EX)))
{
- ERROR("\"%ls\": Can't get partition info (err=%"PRIu32")",
- vol_name, (u32)GetLastError());
+ win32_error(GetLastError(),
+ L"\"%ls\": Can't get partition info", vol_name);
ret = WIMLIB_ERR_READ;
goto out;
}
extents, extents_size))
break;
if (GetLastError() != ERROR_MORE_DATA) {
- ERROR("\"%ls\": Can't get volume extent info (err=%"PRIu32")",
- vol_name, (u32)GetLastError());
+ win32_error(GetLastError(),
+ L"\"%ls\": Can't get volume extent info",
+ vol_name);
ret = WIMLIB_ERR_READ;
goto out;
}
h = open_file(disk_name, GENERIC_READ);
if (h == INVALID_HANDLE_VALUE) {
- ERROR("\"%ls\": Can't open disk device (err=%"PRIu32")",
- disk_name, (u32)GetLastError());
+ win32_error(GetLastError(),
+ L"\"%ls\": Can't open disk device", disk_name);
ret = WIMLIB_ERR_OPEN;
goto out;
}
drive_info, drive_info_size))
break;
if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) {
- ERROR("\"%ls\": Can't get disk info (err=%"PRIu32")",
- disk_name, (u32)GetLastError());
+ win32_error(GetLastError(),
+ L"\"%ls\": Can't get disk info", disk_name);
ret = WIMLIB_ERR_READ;
goto out;
}
h = CreateFile(path, GENERIC_WRITE, 0, NULL,
CREATE_ALWAYS, FILE_FLAG_BACKUP_SEMANTICS, NULL);
if (h == INVALID_HANDLE_VALUE) {
- set_errno_from_GetLastError();
- ERROR_WITH_ERRNO("\"%ls\": Can't open file for writing", path);
+ win32_error(GetLastError(),
+ L"\"%ls\": Can't open file for writing", path);
return WIMLIB_ERR_OPEN;
}
+ SetLastError(0);
if (!WriteFile(h, contents, size, &bytes_written, NULL) ||
bytes_written != size)
{
- set_errno_from_GetLastError();
- ERROR_WITH_ERRNO("\"%ls\": Can't write file", path);
+ win32_error(GetLastError(),
+ L"\"%ls\": Can't write file", path);
CloseHandle(h);
return WIMLIB_ERR_WRITE;
}
if (!CloseHandle(h)) {
- set_errno_from_GetLastError();
- ERROR_WITH_ERRNO("\"%ls\": Can't close handle", path);
+ win32_error(GetLastError(),
+ L"\"%ls\": Can't close handle", path);
return WIMLIB_ERR_WRITE;
}
err = err2;
}
}
- set_errno_from_win32_error(err);
- ERROR_WITH_ERRNO("\"%ls\": Can't open for reading", path);
+ win32_error(err, L"\"%ls\": Can't open for reading", path);
return WIMLIB_ERR_OPEN;
}
if (!GetFileInformationByHandle(h, &info)) {
- set_errno_from_GetLastError();
- ERROR_WITH_ERRNO("\"%ls\": Can't query metadata", path);
+ win32_error(GetLastError(), L"\"%ls\": Can't query metadata", path);
CloseHandle(h);
return WIMLIB_ERR_STAT;
}
return WIMLIB_ERR_NOMEM;
}
+ SetLastError(0);
if (!ReadFile(h, contents, info.nFileSizeLow, &bytes_read, NULL) ||
bytes_read != info.nFileSizeLow)
{
- set_errno_from_GetLastError();
- ERROR_WITH_ERRNO("\"%ls\": Can't read data", path);
+ win32_error(GetLastError(), L"\"%ls\": Can't read data", path);
CloseHandle(h);
ret = WIMLIB_ERR_READ;
goto out_free_contents;
h = open_file(drive_path, GENERIC_WRITE);
if (h == INVALID_HANDLE_VALUE) {
- set_errno_from_GetLastError();
- ERROR_WITH_ERRNO("Failed to open \"%ls\"", drive_path + 4);
+ win32_error(GetLastError(),
+ L"Failed to open \"%ls\"", drive_path + 4);
ret = WIMLIB_ERR_OPEN;
goto out_free_in;
}
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"PRIx32")",
- wim_path, drive_path + 4, (u32)err);
+ win32_error(err, L"Failed to add overlay source \"%ls\" "
+ "to volume \"%ls\"", wim_path, drive_path + 4);
ret = WIMLIB_ERR_WIMBOOT;
goto out_close_handle;
}
}
if (bytes_returned != sizeof(data_source_id)) {
- set_errno_from_win32_error(ERROR_INVALID_DATA);
ret = WIMLIB_ERR_WIMBOOT;
ERROR("Unexpected result size when adding "
"overlay source \"%ls\" to volume \"%ls\"",
bool wof_running)
{
DWORD bytes_returned;
- DWORD err;
if (wof_running) {
/* The WOF driver is running. We can create the reparse point