Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2008.08.10;
Скачать: [xml.tar.bz2];

Вниз

Распознать подключение / отключение флешки   Найти похожие ветки 

 
_Guest_   (2007-10-17 10:25) [0]

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


 
SJay   (2007-10-17 10:51) [1]

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


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

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


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

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


 
Anatoly Podgoretsky ©   (2007-10-17 20:58) [4]


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

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


 
REA   (2007-10-18 10:48) [5]

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

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


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


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

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


 
Anatoly Podgoretsky ©   (2007-10-30 08:46) [7]

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


 
MetalFan ©   (2007-10-30 12:54) [8]

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


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

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


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

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

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


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

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

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

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

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

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


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

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

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



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2008.08.10;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.006 c
6-1191838516
Gendor
2007-10-08 14:15
2008.08.10
Второй IP и Host


6-1192002210
Rusya
2007-10-10 11:43
2008.08.10
Прогресс операции в TIdFTP


4-1194331961
MG
2007-11-06 09:52
2008.08.10
Доступ к веткам реестра всех пользователей одновременно


3-1204041756
Reindeer Moss Eater
2008-02-26 19:02
2008.08.10
MSSQL 2005 и политика паролей домена


15-1214223913
@!!ex
2008-06-23 16:25
2008.08.10
Ненене, Дэвид Блэйн, ненене!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский