Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » USB : Автоматическое обнаружение съёмных дисков

Ответить
Настройки темы
USB : Автоматическое обнаружение съёмных дисков

Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: hasherfrog
Дата: 13-12-2004
Задача уже не требует решения.

Конфигурация: Windows XP, USB-концентратор (определяется как «универсальный USB концентратор») на 4 порта, к нему цепляются 4 кард-ридера (определяются как «Запоминающее устройство для USB»). В кард-ридеры пихаем MMC-карты, виндовый проводник шустро на них реагирует, моментально открывая окошки автозапуска («Какое действие следует выполнять виндоуз?»). Теперь тоже самое нам надо определить из своей программы – как только карточку вставят, мы должны 1. узнать об этом; 2. определить букву диска. Несмотря на кажущуюся простоту, нас ждёт облом.

Решение было лобовое – отлавливаем WM_DEVICECHANGE и смотрим, что там произошло. Но оказалось, что сообщение об изменении статуса USB-устройства приходит с огромной задержкой (а иногда и вообще не приходит, например, если карточку вытащить). За это время карточку можно раз двадцать вытащить/ставить. Повторяю, виндовый проводник реагирует мгновенно.

Теоретически, траблы можно было бы списать на то, что собственно никакого изменения конфигурации не происходит, ибо диски, соответствующие USB накопителям, никуда не исчезают из системы при вытаскивании MMC (и не появляются, соответственно). Отключения-то не происходит, устройства так и числятся в «Мой компьютер», как, например, дисковод – он же там всегда есть, с дискетой или без. Но тогда бы не приходило бы вообще никаких сообщений. А так – приходят, но с огромной паузой.

В PSDK ясно написано, что
Цитата:
The system broadcasts a set of default device change events to all applications and services. You do not need to register to receive these default events. See the Remarks section in RegisterDeviceNotification for details.
Мысли есть?

Отправлено: 18:44, 09-12-2004

 

Аватара для Netscaper

Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Отправить PM | Цитировать


А HandlerEx не пробовал?

Отправлено: 21:44, 10-12-2004 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для Netscaper

Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Отправить PM | Цитировать


Ой-ой-ой... Это для сервисов. Но, там же сказано: «Any application with a top-level window can receive basic notifications by processing the WM_DEVICECHANGE message. Applications can use the RegisterDeviceNotification function to register to receive device notifications». Сообщения WM_DEVICECHANGE будут приходить в любом случае. А чтобы получать сообщения типа DBT_DEVICEARRIVAL, надо использовать RegisterDeviceNotification. Там же в примере «Registering for Device Notification» сказано: «The application will receive the WM_DEVICECHANGE message whenever a device interface event notification is sent. Currently, the only events that will be received for device interfaces are DBT_DEVICEARRIVAL and DBT_DEVICEREMOVECOMPLETE». А насколько я понял, тебе надо получать что-то вроде DBT_CONFIGCHANGED.

Отправлено: 22:18, 10-12-2004 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » USB : Автоматическое обнаружение съёмных дисков

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Автоматическое подключение сетевых дисков hoho Microsoft Windows 2000/XP 5 11-06-2012 09:08
Винда и много USB-устройств (монтирование дисков) AKiNO Microsoft Windows NT/2000/2003 1 14-11-2009 17:46
FreeBSD - Выключение питания внешних USB жестих дисков. Конкретные модели. zilia Общий по FreeBSD 0 10-09-2009 14:17
Автоматическое назначение имен дисков dushes Автоматическая установка Windows 2000/XP/2003 10 18-06-2009 20:23
Автоматическое монтирование дисков Artla_ Общий по Linux 1 24-03-2007 23:07




 
Переход