#c #mount #iso #vhd
#c #монтировать #iso #vhd
Вопрос:
Я запустил функцию openvirtualdisk в соответствии с прилагаемым кодом. Однако она завершается ошибкой 1392 (ERROR_FILE_CORRUPT). Согласно msdn, ошибка возвращается в следующих случаях.
Эта функция завершится ошибкой ERROR_FILE_CORRUPT (1392), если открывается виртуальный диск ISO и размер файла не кратен 2 КБ (2048 байт), а составляет по крайней мере 34 КБ (34 816 байт), или дескриптор структуры тома не содержит известного идентификатора тома CDFS или UDFS.
Я пытаюсь смонтировать файл iso из Windows 10 с 1803 по 1809. Размер используемого в настоящее время файла iso составляет 3,19 ГБ, и дескриптор структуры тома, похоже, не является проблемой.
Что еще мне нужно проверить? Есть ли проблема с кодом?
OPEN_VIRTUAL_DISK_PARAMETERS openParameters;
openParameters.Version = OPEN_VIRTUAL_DISK_VERSION_1;
openParameters.Version1.RWDepth = OPEN_VIRTUAL_DISK_RW_DEPTH_DEFAULT;
VIRTUAL_STORAGE_TYPE storageType;
storageType.DeviceID = VIRTUAL_STORAGE_TYPE_DEVICE_VHD;
storageType.VendorId = VIRTUAL_STORAGE_TYPE_VENDOR_MICROSOFT;
ATTACH_VIRTUAL_DISK_PARAMETERS attachParameters;
attachParameters.Version = ATTACH_VIRTUAL_DISK_VERSION_1;
HANDLE vhdHandle;
if (OpenVirtualDisk(amp;openStorageType, "{VHD PATH GOES HERE}",
VIRTUAL_DISK_ACCESS_ALL, OPEN_VIRTUAL_DISK_FLAG_NONE,
amp;openParameters, amp;vhdHandle) != ERROR_SUCCESS) {
// If return value of OpenVirtualDisk isn't ERROR_SUCCESS, there was a problem opening the VHD
}
// Warning: AttachVirtualDisk requires elevation
if (AttachVirtualDisk(vhdHandle, 0, ATTACH_VIRTUAL_DISK_FLAG_PERMANENT_LIFETIME,
0, amp;attachParameters, 0) != ERROR_SUCCESS) {
// If return value of AttachVirtualDisk isn't ERROR_SUCCESS, there was a problem attach the disk
}