Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.05;
Скачать: CL | DM;

Вниз

WM_DEVICECHANGE - отлов подключения/отключения USB-устройства   Найти похожие ветки 

 
Nickolay ©   (2005-12-16 15:49) [0]

Цель: отловить момент подключения устройства к USB-порту, чтобы, допустим,
открыть этот порт (для FTDI-устройств), сообщить оператору, запустить
какую-либо программу и т. п...

Обрабатываю сообщение WM_DEVICECHANGE.

procedure WMDeviceChange(var Message: TMessage); message WM_DEVICECHANGE;

...

procedure TForm1.WMDeviceChange(var Message: TMessage);

begin
// смотрим что нам пришло...
 Memo1.Lines.Add("Получено сообщение с кодом " +
IntToStr(Message.wParam));
...
 Inherited;
end;

Но! Допустим, пробую подключать накопитель Flash-памяти обычный.
Приходят:
1) три сообщения с кодом 7
задержка ~1-2 сек
2) два сообщения с кодом 7
3) одно сообщение с кодом 32768 (устройство включено и доступно)
4) одно сообщение с кодом 7

Отключаю тот же накопитель.
Приходят:
1) три сообщения с кодом 7
2) одно сообщение с кодом 32772 (устройство удалено).

Далее.
Подключаем устройство на FT245BM.
Приходят:
1) одно сообщение с кодом 7
задержка ~3 сек
2) одно сообщение с кодом 7

Отключаем устройство на FT245BM.
Приходят:
1) одно сообщение с кодом 7

Почему так много сообщений?!
О чём говорит такое количество сообщений?
Что за сообщение с кодом 7? Описание его я не нашёл!

Помогите, пожалуйста! Я в замешательстве.

Спасибо!


 
clickmaker ©   (2005-12-16 16:16) [1]

/*
* Message = WM_DEVICECHANGE
* wParam  = DBT_DEVNODES_CHANGED
* lParam  = 0
*
*      send when configmg finished a process tree batch. Some devnodes
*      may have been added or removed. This is used by ring3 people which
*      need to be refreshed whenever any devnode changed occur (like
*      device manager). People specific to certain devices should use
*      DBT_DEVICE* instead.
*/

#define DBT_DEVNODES_CHANGED            0x0007


 
Nickolay ©   (2005-12-16 16:44) [2]

Да-да-да... спасибо!
Про DBT_DEVNODES_CHANGED я уже почитал. Но, непонятно, что будет с этим кодом в Win98?! Это сообщение просто не придёт или придёт с другим кодом? Т. е., если я хочу, чтобы моё приложение работало и под XP и под 98, то я не должен обрабатывать сообщение с параметром 7?

Я не понимаю почему приходит так много семёрок и что с ними делать :)

Почему для FLASH Windows помимо 7 генерит ещё 32768 и 32772, а для FT только 7?!



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

Текущий архив: 2006.03.05;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.025 c
2-1140080370
DrNemo
2006-02-16 11:59
2006.03.05
Закачка файла с интернета на ар1


2-1140026301
Корешь
2006-02-15 20:58
2006.03.05
Массив из записей как с ним работать?


15-1139650945
Yanis
2006-02-11 12:42
2006.03.05
Вот это война :)


3-1136679863
tech
2006-01-08 03:24
2006.03.05
Вызов "произвольной" процедуры в триггере


1-1138611367
WondeRu
2006-01-30 11:56
2006.03.05
Многопоточность и Property Page - не дружат?