Надежно выбрасывать флэшки

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: Надежно выбрасывать флэшки

Сообщение McLion » 16.06.2016 21:35:57

AlphaBlend писал(а):McLion я плохо ориентируюсь в windows , но мучает вопрос - а обычным файловым потоком нельзя ?

Добавлено спустя 2 минуты 24 секунды:
хотя вы и используете поток ... и не работает ?


Все работает, просто я не знаю, остаются ли файлы в кэше или нет. Если да, то как его освободить, чтоб все на флэшке было.
Аватара пользователя
McLion
постоялец
 
Сообщения: 332
Зарегистрирован: 06.02.2015 18:41:00

Re: Надежно выбрасывать флэшки

Сообщение Pavia » 16.06.2016 21:48:17

1) Защита файловой системы идет начиная с Win Vista, хотя до ума довели в Win7.
Так что безопасное извлечение не требуется.
2) Для гарантированной записи используйте FlushFileBuffers. Это команда принудительно сбросит буферы на диск. Буфер - это массив байт в ОЗУ используемый для задержки данных.
https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa364218(v=vs.85).aspx
3) Для TStream используйте метод Flush(). А вообще читайте справку по компонентам которые используете.
Аватара пользователя
Pavia
постоялец
 
Сообщения: 290
Зарегистрирован: 07.01.2011 12:46:51

Re: Надежно выбрасывать флэшки

Сообщение McLion » 16.06.2016 21:57:19

FlushFileBuffers(T.Handle); для FileStream? Пробую, но Lazarus ругается

copyprocess.pas(164,17) Error: Identifier not found "FlushFileBuffers"
Аватара пользователя
McLion
постоялец
 
Сообщения: 332
Зарегистрирован: 06.02.2015 18:41:00

Re: Надежно выбрасывать флэшки

Сообщение pupsik » 16.06.2016 22:05:20

по идее, если через системный буфер, система сама его очищает. Т.е. в момент отсоединения.
Если да, то как его освободить, чтоб все на флэшке было.
winapi в помощь. Возможно тут что то полезное найдёте: http://stackoverflow.com/questions/1635947/how-to-make-sure-that-a-file-was-permanently-saved-on-usb-when-user-doesnt-use

AlphaBlend, судя по всему, это NIX only компонент
вроде нет: http://libusb.info/
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Надежно выбрасывать флэшки

Сообщение McLion » 16.06.2016 22:07:14

pupsik писал(а):по идее, если через системный буфер, система сама его очищает. Т.е. в момент отсоединения.


Походу это уже не надо, если я Pavia правильно понял.
Аватара пользователя
McLion
постоялец
 
Сообщения: 332
Зарегистрирован: 06.02.2015 18:41:00

Re: Надежно выбрасывать флэшки

Сообщение Sharfik » 17.06.2016 02:41:34

McLion писал(а):по идее, если через системный буфер, система сама его очищает. Т.е. в момент отсоединения.

В момент правильного отсоединения. Когда система завершает себя или ей дают команду "извлечь устройство".
Если просто выдергивают, как я делаю, то не факт. У меня сьемный жесткий диск есть с USB 3.0. Вот как на работе бывшей дали комп с 3.0 портом, так и узнал, как тяжело восстанавливать исходники. Задержка была в записи, а я выдергивал. Файл вроде есть, но он пустой. Стал использовать снова 2.0.
Возможно, проверка размера файла до записи и после записи будет являться проверкой фактического размещения данных на устройстве. Я точно не уверен.
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 809
Зарегистрирован: 20.07.2013 01:04:30

Re: Надежно выбрасывать флэшки

Сообщение AlphaBlend » 17.06.2016 10:15:10

читала про флешки в Windows . Как-то можно с ними работать через реестр . Может стоит посмотреть в сторону реестра ?
Аватара пользователя
AlphaBlend
постоялец
 
Сообщения: 207
Зарегистрирован: 22.05.2016 10:13:10

Пред.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 251

Рейтинг@Mail.ru