Apr. 6th, 2015

wudt

Apr. 6th, 2015 01:34 pm
metaclass: (Default)
Есть такой хитрый тул - windows usb/dvd download tool, который пишет исошники виндов на флешки для инсталляции.
И в нем есть баг - на некоторые флешки он принципиально не может записать, ругается "unable to copy files".
Лечат это таким костылем: http://www.techspot.com/community/topics/fix-windows-usb-dvd-download-tool-when-unable-to-copy-files.193386/ - форматируют с помощью diskpart, не из виндо-диско-гуя.

Тул этот опенсорсный, т.к. микрософт там использовал GPL код и я как-то решил выяснить, что же за баг такой мешает этому и почему он лечится такими костылем. Но когда я это делал, меня на что-то отвлекли и я забыл напрочь, что я это вообще делал, где делал, как делал и зачем делал.

Сегодня эта проблема опять всплыла, выкопал в архивах исходники и нашел свои исправления.
Причина косяка - в размерах буферов функции DeviceIoControl с параметрами IOCTL_DISK_GET_DRIVE_LAYOUT_EX/IOCTL_DISK_SET_DRIVE_LAYOUT_EX и их соответствии количеству разделов - неправильное форматирование флешки создает неполноценную таблицу разделов с одним разделом, а буфер заведен под 4 раздела и его размер проверяется в функции, которая делает раздел активным:

https://github.com/phrostbyte/Linux-USB-DVD-Download-Tool/blob/master/IoWrapper/UsbIOWrapper.cpp#L51

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 9th, 2025 06:17 am
Powered by Dreamwidth Studios