В приложении нужно анализировать, если на ходу подключается USB видеокамера.
При подключении происходит специфичное для Win2k&XP событие DBT_DEVNODES_CHANGED, причем независимо от того, был ли вызов RegisterDeviceNotification или нет (при вкл.2 раза, при откл. 1 раз). Почему же не приходит общее для всех Win DBT_DEVICEARRIVAL??
B>В приложении нужно анализировать, если на ходу подключается USB видеокамера. B>При подключении происходит специфичное для Win2k&XP событие DBT_DEVNODES_CHANGED, причем независимо от того, был ли вызов RegisterDeviceNotification или нет (при вкл.2 раза, при откл. 1 раз). Почему же не приходит общее для всех Win DBT_DEVICEARRIVAL??
Да есть с этим непонятка, я тоже не смог поймать DBT_DEVICEARRIVAL и так и не понял в чем проблема. Выкручивался через WM_DEVICECHANGE.
Удачи!
... << RSDN@Home 1.1.3 beta 1 >>
Мы — маньяки, должны помогать друг другу!
Re: Событие DBT_DEVICEARRIVAL не приходит!
От:
Аноним
Дата:
27.10.06 12:08
Оценка:
Здравствуйте, Buratino, Вы писали:
B>В приложении нужно анализировать, если на ходу подключается USB видеокамера. B>При подключении происходит специфичное для Win2k&XP событие DBT_DEVNODES_CHANGED, причем независимо от того, был ли вызов RegisterDeviceNotification или нет (при вкл.2 раза, при откл. 1 раз). Почему же не приходит общее для всех Win DBT_DEVICEARRIVAL?? B>....
Та же самая проблема . Реанимирую вопрос. Может ли кто-нибудь помочь ? Кто виноват? Что делать?
Cпасибо.
Builder, говорите...
Во-первых, чему у него равно sizeof(DEV_BROADCAST_DEVINTERFACE)? Должно быть 0x20.
Во-вторых, правильный ли GUID? GUID класса устройств и GUID интерфейса драйвера, который можно открыть — это отнюдь не одно и то же.
Работает ли с этим GUID стандартный метод перечисления устройств (SetupDiClassDevs -> SetupDiEnumDeviceInterfaces -> SetupDiGetDeviceInterfaceDetail) в то время, как нужная железяка подключена?
В третьих, не нужно ловить WM_DEVICECHANGE на VCL форму. Создайте отдельное невидимое окно (можно AllocateHwnd / DeallocateHwnd)...
Re[3]: Событие DBT_DEVICEARRIVAL не приходит!
От:
Аноним
Дата:
30.10.06 08:40
Оценка:
Здравствуйте, Sergei I. Gorelkin, Вы писали:
SIG>Здравствуйте, Аноним, Вы писали:
SIG>Во-первых, чему у него равно sizeof(DEV_BROADCAST_DEVINTERFACE)? Должно быть 0x20. SIG>Во-вторых, правильный ли GUID? GUID класса устройств и GUID интерфейса драйвера, который можно открыть — это отнюдь не одно и то же. SIG>Работает ли с этим GUID стандартный метод перечисления устройств (SetupDiClassDevs -> SetupDiEnumDeviceInterfaces -> SetupDiGetDeviceInterfaceDetail) в то время, как нужная железяка подключена? SIG>В третьих, не нужно ловить WM_DEVICECHANGE на VCL форму. Создайте отдельное невидимое окно (можно AllocateHwnd / DeallocateHwnd)...
Моя проблема аналогична , но не тождественна описанной в корневом сообщении.
Мне нужно поймать появление USB устройства( WM_DEVICECHANGE в отдельном невидимом окне ), причем про само устройство априори ничего не известно. Возможно , что соответствующий драйвер не установлен. Нужная мне информация — это VID и PID устройства.
Спасибо
Здравствуйте, Аноним, Вы писали:
А>Моя проблема аналогична , но не тождественна описанной в корневом сообщении. А>Мне нужно поймать появление USB устройства( WM_DEVICECHANGE в отдельном невидимом окне ), причем про само устройство априори ничего не известно. Возможно , что соответствующий драйвер не установлен. Нужная мне информация — это VID и PID устройства. А>Спасибо
Ну а сама проблема то в чем? Что не получилось?
Re[5]: Событие DBT_DEVICEARRIVAL не приходит!
От:
Аноним
Дата:
30.10.06 13:54
Оценка:
Здравствуйте, Alexey Frolov, Вы писали:
AF>Ну а сама проблема то в чем? Что не получилось?
Приходит немерено сообщений WM_DEVICECHANGE с wParam= DBT_DEVNODES_CHANGED.
В MSDN :
Remarks
There is no additional information about which device has been added to or removed from the system. Applications that require more information should register for device notification.
Мне же нужны VID и PID устройства. Устройства различные ( нет списка ). Возможен вариант , что драйвер устройства еще не установлен.
Я не знаю в какую сторону рыть .
Спасибо
Здравствуйте, Аноним, Вы писали:
А>Мне же нужны VID и PID устройства. Устройства различные ( нет списка ). Возможен вариант , что драйвер устройства еще не установлен. А>Я не знаю в какую сторону рыть . А>Спасибо
При такой постановке задачи надо рыть в сторону DDK. В его составе есть утилита UsbView, ее исходники дают ответ на многие вопросы...