Главная страница
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.053 c
1-1138882857
DVM
2006-02-02 15:20
2006.03.05
ReportMemoryLeaksOnShutdown в Delphi2006 глюки?


1-1138909389
Piter
2006-02-02 22:43
2006.03.05
аналог TList с полем Data


3-1136903860
Silver...
2006-01-10 17:37
2006.03.05
Чтоб TADODataSet не записивал в БД но не режим ReadOnly


1-1138730854
md
2006-01-31 21:07
2006.03.05
Canvas


15-1139513697
-САша-
2006-02-09 22:34
2006.03.05
BDS2006