Himik писал(а):
Может провести верификацию записи? При расхождении делать несколько попыток, задействовав диалог с пользователем. При этом надо учитывать и изменившиеся данные сектора.
Верификация ничего не даёт. Всё пишется правильно, как и должно. Если после записи вынуть флешку без "Безопасного извлечения устройства", то на ней остаются записанные именно мои данные. Но вот если перед этим сделать "безопасное...", то при закрытии устройства винда перезаписывает загрузочный сектор своими данными.
Himik писал(а):
Возможно, мешает флаг FILE_FLAG_WRITE_THROUGH, нарушающий очерёдность (если она не соответствует системной политике), отсюда и коллизия.
Не, этот флаг точно ни при чём. Проверялось. Кстати, коллизий с этим флагом быть не должно. Если в кэше до этого были другие данные в записываемой области, они нормально перезаписываются новыми и тут же всё сбрасывается на диск.
Himik писал(а):
Посмотри ещё справку на слово "FSCTL_LOCK_VOLUME"
Попробую копнуть в эту сторону.
Чё-то у мну проклёвывается мысль. Вероятно, с локом всё в порядке и лок даёт ошибку именно потому, что устройство действительно занято системой. А дисковые утилиты, видимо, связываются с каким-то сервисом и ПРОСЯТ освободить диск, т.е. закрыть его. После того, как они заканчивают работу, сообщают сервису о возможности повторного открытия диска. Соответственно, сервис может отказать в просьбе, и тогда (а не в момент лока) утилита сообщает о невозможности работы с ним. Кажется надо копать сюда.