Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.09.2014, 07:57   #1
Janger
Форумчанин
 
Регистрация: 28.09.2011
Сообщений: 250
По умолчанию Безопасное извлечение флешки

У меня проблема в следующем.
В программе есть функция "Создание резервной копии на флешку", и там можно выбрать на какую флешку ты хочешь сбросить данные.
Но у меня возникла проблема...
Как сделать так, что бы можно было выполнить "Безопасное Извлечение Флешки".
Я не в том смысле что надо прям "извлекать" из системы флешку, а как сделать программо, правильное её отключение?
Что бы пользователь мог после этого спокойно вытащить флешку из системника?
Погуглив, нашёл вот такой код:
Код:
WinExec(PAnsiChar('RunDll32.exe shell32.dll,Control_RunDLL hotplug.dll'),SW_HIDE);
Но он не очень мне подходит....
В общем, кто в курсе, подскажите что делать надо
Janger вне форума Ответить с цитированием
Старый 29.09.2014, 08:04   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

А почему не подходит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.09.2014, 08:07   #3
Janger
Форумчанин
 
Регистрация: 28.09.2011
Сообщений: 250
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А почему не подходит?
Ну во первых, этот код не отключает безопасно флешку, а только предлагает извлечь пользователю флешку
А во вторых, мне бы хотелось, не так сильно нагружать пользователя новой формой, на которой он опять должен что то читать и выяснять...
Janger вне форума Ответить с цитированием
Старый 29.09.2014, 12:21   #4
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Автор, безопасное извлечение устройства - это процесс завершения операций чтения/записи на это устройства. Если случайно вытащить флешку из usb-разъема, пока туда копируется файл, то можно случайно повредить файловую систему на флешке и придется её форматировать.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 29.09.2014, 12:36   #5
blackstrip
Форумчанин
 
Аватар для blackstrip
 
Регистрация: 21.01.2012
Сообщений: 240
По умолчанию

По идее чтобы безопасно извлечь надо:
- заставить все программы завершить доступ к файлам на флешке. если какие-то программы до сих пор что-то делают с файлами на флешке - то вылезает обычно "сейчас невозможно. погодите".
- скинуть все что было запланировано на запись из кеша (винда любит откладывать запись, и даже когда все программы уже закрыты и файлы формально записаны - винда еще чего-то ждет чтоб сделать эти изменения через N минут или же мгновенно по запросу "безопасного извлечения").

Бывают же проги типа Unlocker, отслеживают все висящие обращения к файлам и показывают кто сейчас "занимает" флешку или диск, даже можно эти обращения грубо пообрывать чтоб ее вытащить. Поэтому ручное "извлечение" будет похоже на такую прогу - получает список всех, кто занимает флешку, выводит "оборвать или подождать 10 сек?". Только надо еще как то сказать винде чтоб она свой кеш сбросила заодно.
blackstrip вне форума Ответить с цитированием
Старый 16.10.2014, 07:52   #6
Janger
Форумчанин
 
Регистрация: 28.09.2011
Сообщений: 250
По умолчанию

Цитата:
Сообщение от саша40 Посмотреть сообщение
Автор, безопасное извлечение устройства - это процесс завершения операций чтения/записи на это устройства. Если случайно вытащить флешку из usb-разъема, пока туда копируется файл, то можно случайно повредить файловую систему на флешке и придется её форматировать.
Я всё это прекрасно понимаю.
Но пользователь сам производит нажатие на кнопку, это раз.
Два, сама Винда не позволит вытащить безопасно флешку, если туда идёт запись али чтение каких либо данных

Цитата:
Сообщение от blackstrip Посмотреть сообщение
По идее чтобы безопасно извлечь надо:
- заставить все программы завершить доступ к файлам на флешке. если какие-то программы до сих пор что-то делают с файлами на флешке - то вылезает обычно "сейчас невозможно. погодите".
- скинуть все что было запланировано на запись из кеша (винда любит откладывать запись, и даже когда все программы уже закрыты и файлы формально записаны - винда еще чего-то ждет чтоб сделать эти изменения через N минут или же мгновенно по запросу "безопасного извлечения").

Бывают же проги типа Unlocker, отслеживают все висящие обращения к файлам и показывают кто сейчас "занимает" флешку или диск, даже можно эти обращения грубо пообрывать чтоб ее вытащить. Поэтому ручное "извлечение" будет похоже на такую прогу - получает список всех, кто занимает флешку, выводит "оборвать или подождать 10 сек?". Только надо еще как то сказать винде чтоб она свой кеш сбросила заодно.
Слушайте, а почему всё так запутанно?
Я думал можно обойтись одной строчкой в командной строке и всё.
А вы тут прям дискус развели...

Последний раз редактировалось Stilet; 16.10.2014 в 09:20.
Janger вне форума Ответить с цитированием
Старый 16.10.2014, 08:16   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Janger Посмотреть сообщение
Слушайте, а почему всё так запутанно?
Я думал можно обойтись одной строчкой в командной строке и всё.
А вы тут прям дискус развели...
с чего вы взяли что все так просто должно быть?

http://www.codeproject.com/Articles/...r-Safe-Removal
вот вам инфа, АПИ функции те же.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 16.10.2014, 08:41   #8
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Я б ваще не стал заморачиваться. При сливе инфы на флешку показал бы модальное окошко с индикатором прогресса, кнопкой "Отмена" и предупреждения очень (большими и красными) буквами: "Выдернешь флешку - сам дурак!".
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
безопасное извлечение флешки Лонли-Локли Общие вопросы Delphi 4 22.02.2022 23:06
безопасное соединение Uavova Свободное общение 12 07.11.2013 16:31
Безопасное извлечение устройства Xardas Компьютерное железо 7 28.02.2011 00:49
Безопасное извлечение USB дисков sarvar Компоненты Delphi 2 07.01.2009 20:00
Безопасное извлечение SunKnight Win Api 1 12.01.2008 02:06