Я занимаюсь разработкой программы WinAPI на c ++ для записи данных на USB-накопитель напрямую с CreateFile
по объему {GUID} и WriteFile
функции, как десятки примеров. Как уже упоминалось Вот в комментариях:
Запись на дескриптор тома будет успешной, если у тома нет
смонтирована файловая система, или если выполняется одно из следующих условий:
- Секторы для записи являются загрузочными секторами.
- Секторы, которые должны быть записаны, находятся вне пространства файловой системы.
- Вы явно заблокировали или отключили том с помощью
FSCTL_LOCK_VOLUME
или жеFSCTL_DISMOUNT_VOLUME
,- Том не имеет фактической файловой системы. (Другими словами, на нем смонтирована файловая система RAW.)
Я хочу беспрепятственно записать 100 МБ данных на USB. Итак, я попробовал два случая сверху.
Также я попытался создать второй раздел (который невидим для Windows) с / без файловой системы и записать туда прямо по смещению от конца первого раздела, но также безуспешно: я не могу читать или писать там.
Итак, если кто-нибудь знает ОТВЕТ НА ОДИН ИЗ ВОПРОСОВ хотя бы:
Я почти уверен, что это действительно сработало, но вы не понимаете, что обходите Windows. Это означает, что Windows не заметит, что вы сделали. Поэтому, если вы используете Windows, чтобы проверить, что вы сделали, она не сообщит об изменении.
Чтобы ответить на отдельные подвопросы: нормальная файловая система заполняет весь раздел, поэтому вы не можете. Ваши функции плавно записываются на USB, это не проблема. И нет, Windows обычно воспринимает USB как неразмеченное хранилище.
Других решений пока нет …