| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Работа с флэшкой.. |
| Автор: Grol 20.3.2006, 23:31 |
| В USB втыкаю флэшку (любую), после обнаружения ее Виндой, флэшка станет как съемное устройство и займет какую-то букву латинского алфавита. Необходимо сделать программу, которая висела бы в памяти и обнаруживала подключенные флэшки и определяла какие диски (имя диска) эти съемные устройства занимали бы? Вообще как можно реализовать такую программу. Самое главное, что мне нужно знать это как обнаружить флэшку и имя диска на который флэшка встала....Спасибо заранее за ответы. |
| Автор: XbiT 20.3.2006, 23:39 |
| посмотри тут: http://forum.vingrad.ru/index.php?showtopic=84349 |
| Автор: Grol 21.3.2006, 00:03 |
| Спасибо большое, ща попробую разобраться! |
| Автор: Grol 21.3.2006, 00:56 | ||
Думал все просто...а нет! Нашел в тех ссылках, что мне дали такой код:
А что с ним делать, ума не приложу. Помогите пожалуйста неопытному программисту... |
| Автор: Grol 21.3.2006, 02:44 |
| Так что можно сделать? Хоть чуть чуть помогите... |
| Автор: Snowy 21.3.2006, 10:38 |
| Вот тебе волшебный файлик. Распакуй его в папку Lib и установи, как новый компонент. Он встанет на закладку 'System'. Брось его на форму и юзай. |
| Автор: Grol 24.3.2006, 05:33 |
| Большое пребольшое спасибо |
| Автор: Snowy 24.3.2006, 09:58 | ||
При старте программы просканируй диски на наличие съемных.
Правда если попадутся какие-нить ZIP драйвы или USB флопики, то они тоже в список попадут. Но такая вероятность невелика. Да и не особо существенна. |
| Автор: Grol 24.3.2006, 23:43 |
| Спасибо вроде бы все сделал, что хотел...вот принимайте Вот ссылка на проект http://webfile.ru/876803 (там архив Pro.rar - Pass:11111) |
| Автор: onyxx 4.8.2007, 16:53 |
| А можно последний проект выложить здесь? там уже файла нету... |
| Автор: bems 4.8.2007, 18:18 |
| а что делает? а хэндлы закрывает? |
| Автор: MetalFan 4.8.2007, 19:58 |
| onyxx, может тебе еще и ключи от квартиры, где деньги лежат? ))) |
| Автор: diablist 12.12.2007, 12:58 | ||||
Выкидывает в комбобокс правда вместе с дискетами:
Пишет в неиспользуемые части флешки:
|
| Автор: bems 12.12.2007, 18:25 |
| diablist, ord и chr в первом коде можно убрать |
| Автор: Riply 12.12.2007, 19:10 |
Если точно выражаться, то "пытается вывести из строя флешку без возможности восстановления" Без смайлика. |
| Автор: bems 13.12.2007, 17:54 |
| Riply, можно поподробнее? |
| Автор: Riply 13.12.2007, 19:30 |
Все дело в том, что я очень не люблю "сакраментальных" чисел. А если серьезно, то: Если бы человек удосужился проверить с какой файловой системой он имеет дело, то можно было бы устроить гадание куда он хотел попасть: то ли в Bad Clusters, то ли в Unused Clusters, BootStrap, или еще куда ? А без определения файловой системы все дольнейшие разговоры совершенно бессмысленны. Допустим "дух святой" просвятил его с чем он имеет дело. Но даже в этом случае гадание на кофейной гуще будет продолжаться: Что за такое хитрое смещение ( 512*4 ) используется в SetFilePointer ? На четыре сектора ? А кто сказал, что размер сектора равен 512 ? На один кластер ? А он проверял сколько секторов в кластере ? Может на размер файловой записи ? Или на 2048 папугаев ? Ни одна из этих величин не является "увековеченой в камне" и индивидуальна для каждого "партишен". Вот когда он со всем этим определиться, получит все смещения, размеры и "базовые адреса" для данного диска, то можно будет и поговорить о том насколько безопасна запись в данное конкретное место, (например в $UpCase или в $Extend) и каких правил необходимо придерживатья при записи именно сюда. Ну а запись "туда не знаю куда, того не знаю чего" в лучшем случае приведет к падению файловой системы, а может и к сообщению от Windows, что флешка(дискета или еще что) не отформатирована и система не в состоянии сделать это P.S. Дабы не спорить о фиксированности FS, сообщаю: бывают даже флоппики с NTFS P.S.S. Своими руками пока (тьфу, тьфу ) безвозвратно флешки не портила, но знаю тех, кто ухитрялся превратить их в "груду металлолома" Добавлено через 3 минуты и 35 секунд Забыла очень важную деталь: все сказанное выше - это imho |
| Автор: Riply 13.12.2007, 21:06 | ||
Сложный ворос. Инфомации очень мало. У Rouse_ на сайте есть очень неплохая книжка. Если не ошибаюсь, называется: "Криминальный анализ файловых систем". По вопорасам "уничтожения флешки как устройства" крохи информации можно подчерпнуть на сайтах компаний, занимающихся восстановлением данных (ссылки не помню, т.к. этот аспект меня особо не интересовал имеются ввиду те, которые описывают алгоритмы своей работы. Так же у "линуксоидов" можно попробовать посмотреть в исходниках ntfs_3g - драйвера, в каких случаях идет ошибка форматирования. В принципе, я могу рассказать о последовательности действй, которые приводили к потере флешки (со слов и рассказов потерпевших но мне кажется, что подобные вещи лучше не публиковать. А то в будущем, нанароком, их и на нас испытают |
| Автор: bems 13.12.2007, 21:12 |
| спасибо |
| Автор: Cashey 14.7.2008, 16:03 |
| у приведенного кода контроля подключение флэш-устройства (он же описан в DRKB) имеет существенный недостаток - дело в том, что код сразу отлавливает сообщение WM_DEVICECHANGE, система не сразу присваивает новаому устройству номер диска. проходит несколько секунд. поэтому не возможно определить, какой диск появился сразу после отлова FOnUSBArrival |
| Автор: corpsehunter 25.7.2008, 13:07 | ||
перезалейте кто-нибудь еще разик, плиз=) |