-
Была прога под win98, работала связка: обработчик сообщения WM_DEVICECHANGE и апишная GetDriveType, которая для флешек возвращала DRIVE_REMOVABLE. В XP же она возвращает DRIVE_FIXED, т.е. обычный локальный жесткий диск, для части флешек, по крайней мере. И это только половина беды - можно отследить количество дисков. Основная же беда в том, что при выдергивании флешки и при возникновении WM_DEVICECHANGE операционка (XP) еще некоторое время считает что отключения не было (GetDriveType возвращает все тот же DRIVE_FIXED вместо DRIVE_NO_ROOT_DIR как это было в 98-х).
Вопрос: можно ли как-либо еще отследить отключение флешки или тупо вешать таймер пока XP не успокоится.
-
хм... а у меня вроде и под ХР'юшку проблем не было.
-
К сожалению используется десятка полтора старых РАЗНОТИПНЫХ флешек от 16 до 64 мб. Для части из них наблюдается описанная выше проблема. Заставить пользователя закупить новые одинаковые - нереально.
-
А как вообще получается отличить Flash (removable) от например съемного винта? У меня для винта тоже возвращается, что и для Flash.
-
> Заставить пользователя закупить новые одинаковые - нереально.
Более чем реально. Достаточно указать это в системных требованиях. И одинаковые не обязательно, достаточно лишь совместимые с твоей программой
-
>можно ли как-либо еще отследить отключение флешки или тупо вешать таймер пока XP не успокоится.
Думаю можно - покопай ShellApi на тему отслеживания состояния директорий и т.п.
-
> Anatoly Podgoretsky © (17.10.07 20:58) [4]
> Более чем реально. Достаточно указать это в системных требованиях.
> И одинаковые не обязательно, достаточно лишь совместимые
> с твоей программой
Везет же некоторым :) В данном случае я работаю на пользователя, а не наоборот. А с работой в нашем городе не густо.
-
Ну тогда закупай за свой счет.
-
может копать в сторону DeviceIOControl + IOCTL_STORAGE_*
вот например IOCTL_STORAGE_GET_HOTPLUG_INFO очень может подойти
-
Спасибо всем. Пока просто отслеживаю появление нового диска, съемный он или нет. Компьютеры включены постоянно, программа соответственно запущена тоже всегда. При сбоях заставляю включать комп без флешки, ее только потом уже подключать. Флешки использются интенсивно, периодически умирают, надеюсь остальное сделает "естественная убыль".
-
Anatoly Podgoretsky © (30.10.07 08:46) [7]
Какой Вы добрый, однако.
-
>Какой Вы добрый, однако.
А в чем проблема? Неужели 15 флэшек, даже 64 мбтных, стоящих бакс/килограмм стоят дороже времени програмиста?
Я бы тоже купил за свои, если совсем нет возможности убедить шефов потратить несколько десятков зеленых.
>можно ли как-либо еще отследить отключение флешки
ИМХО проще всего - контролировать запись. Не записалось - сказать.
-