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

Вниз

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 вся ветка

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

Наверх





Память: 0.45 MB
Время: 0.013 c
1-1138627845
Opilki_Inside
2006-01-30 16:30
2006.03.05
Перевод даты в строгу с заданым форматом


2-1140001677
VitV
2006-02-15 14:07
2006.03.05
Panel


2-1139929093
Толян
2006-02-14 17:58
2006.03.05
Как разделить поле в Excel


2-1140078083
Creative
2006-02-16 11:21
2006.03.05
проблема с уничтожением поля объекта


15-1139750938
Интересующийся
2006-02-12 16:28
2006.03.05
Ограничение числа подключений к компу в реестре





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский