Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Распознать подключение / отключение флешки [D6, WinXP]


_Guest_ ©   (2007-10-17 10:25:00) 

Была прога под win98, работала связка: обработчик сообщения WM_DEVICECHANGE и апишная GetDriveType, которая для флешек возвращала DRIVE_REMOVABLE. В XP же она возвращает DRIVE_FIXED, т.е. обычный локальный жесткий диск, для части флешек, по крайней мере. И это только половина беды - можно отследить количество дисков. Основная же беда в том, что при выдергивании флешки и при возникновении WM_DEVICECHANGE операционка (XP) еще некоторое время считает что отключения не было (GetDriveType возвращает все тот же DRIVE_FIXED вместо DRIVE_NO_ROOT_DIR как это было в 98-х).
Вопрос: можно ли как-либо еще отследить отключение флешки или тупо вешать таймер пока XP не успокоится.


bobby   (2007-11-05 19:58:00) [1]

Нормально написано, правда не Delphi:

http://www.codeproject.com/cs/system/DriveDetector.asp


Дмитрий Белькевич   (2007-11-03 20:20:00) [2]

>Какой Вы добрый, однако.

А в чем проблема? Неужели 15 флэшек, даже 64 мбтных, стоящих бакс/килограмм стоят дороже времени програмиста?

Я бы тоже купил за свои, если совсем нет возможности убедить шефов потратить несколько десятков зеленых.

>можно ли как-либо еще отследить отключение флешки

ИМХО проще всего - контролировать запись. Не записалось - сказать.


slow-alfamoon-com   (2007-10-31 10:44:00) [3]

Anatoly Podgoretsky ©   (30.10.07 08:46) [7]

Какой Вы добрый, однако.


_Guest_   (2007-10-31 08:55:00) [4]

Спасибо всем. Пока просто отслеживаю появление нового диска, съемный он или нет. Компьютеры включены постоянно, программа соответственно запущена тоже всегда. При сбоях заставляю включать комп без флешки, ее только потом уже подключать. Флешки использются интенсивно, периодически умирают, надеюсь остальное сделает "естественная убыль".


MetalFan   (2007-10-30 12:54:00) [5]

может копать в сторону DeviceIOControl + IOCTL_STORAGE_*
вот например IOCTL_STORAGE_GET_HOTPLUG_INFO очень может подойти


Anatoly Podgoretsky   (2007-10-30 08:46:00) [6]

Ну тогда закупай за свой счет.


_Guest_   (2007-10-30 08:25:00) [7]


> Anatoly Podgoretsky ©   (17.10.07 20:58) [4]
> Более чем реально. Достаточно указать это в системных требованиях.
>  И одинаковые не обязательно, достаточно лишь совместимые
> с твоей программой

Везет же некоторым :) В данном случае я работаю на пользователя, а не наоборот. А с работой в нашем городе не густо.


REA   (2007-10-18 10:48:00) [8]

>можно ли как-либо еще отследить отключение флешки или тупо вешать таймер пока XP не успокоится.

Думаю можно - покопай ShellApi на тему отслеживания состояния директорий и т.п.


Anatoly Podgoretsky   (2007-10-17 20:58:00) [9]


> Заставить пользователя закупить новые одинаковые - нереально.

Более чем реально. Достаточно указать это в системных требованиях. И одинаковые не обязательно, достаточно лишь совместимые с твоей программой


REA   (2007-10-17 16:17:00) [10]

А как вообще получается отличить Flash (removable) от например съемного винта? У меня для винта тоже возвращается, что и для Flash.


_Guest_   (2007-10-17 11:00:00) [11]

К сожалению используется десятка полтора старых РАЗНОТИПНЫХ флешек от 16 до 64 мб. Для части из них наблюдается описанная выше проблема. Заставить пользователя закупить новые одинаковые - нереально.


SJay   (2007-10-17 10:51:00) [12]

хм... а у меня вроде и под ХР'юшку проблем не было.


Наверх

Титульная страница Поиск, карта сайта Написать письмо