Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > 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 | ||
перезалейте кто-нибудь еще разик, плиз=) |