Я разрабатываю программу C++ WinAPI для записи данных на моем USB-накопителе напрямую с помощью CreateFile
функциями Volume {GUID} и WriteFile
, как это делают десятки примеров. Как уже упоминалось here в Примечания:USB-накопитель WriteFile для секторов внешнего тома
записываемый на объем ручки будет успешным, если объем не имеет смонтированную файловую систему, или если один из следующих условий:
- Секторы для записи в загрузочные сектора.
- Секторы, которые должны быть записаны для размещения вне пространства файловой системы.
- Вы явно заблокировали или демонтировали громкость, используя
FSCTL_LOCK_VOLUME
илиFSCTL_DISMOUNT_VOLUME
.- Том не имеет фактической файловой системы. (Другими словами, он имеет RAW файловой системы установлен.)
Я хочу написать 100Мб данных на USB гладко без размонтирования. Поэтому я пробовал два случая сверху.
- Второй случай: запись за пределами файловой системы (я увеличил количество секторов на раздел без расширения таблицы FAT32), но он не работает без размонтирования!
- Четвертый случай: запись на томе без какой-либо файловой системы (неформатированная). Но он также не работает без размонтирования !!!
Также я попытался создать второй раздел (невидимый для Windows) с/без файловой системы и написать прямо там по смещению от конца первого раздела, но также безуспешно: я не могу читать или написать там.
Так что, если кто-нибудь знает ответ на один из вопросов, по крайней мере:
- Как создать секторы внутри раздела вне файл системы?
- Есть ли возможность писать плавно на USB напрямую?
- Также я могу писать в Windows на второй раздел на USB без , играя с драйверами, NTCreateFile и другими глубокими функциями?
Это может быть только вредоносное ПО, не так ли? –
@DavidHeffernan нет, это просто для академических целей :) Я только что нырнул в формат USB и FAT32 и попытался проверить, правильно ли замечание msdn. – heyjohnnyfunt