Я пытаюсь разработать приложение C#, которое может связываться с USB HID. Я перекрываться мой метод WndProc так что ловит все из WM_DEVICECHANGE событий и передает метод DeviceChange к методу OnDeviceChange (этот код на самом деле заимствованы из Яна Аксельсон), который выглядит следующим образом ....Сообщение DeviceAttached никогда не приходит
protected override void WndProc(ref Message m)
{
try
{
// The OnDeviceChange routine processes WM_DEVICECHANGE messages.
if (m.Msg == DeviceManagement.WM_DEVICECHANGE)
{
OnDeviceChange(m);
}
// Let the base form process the message.
base.WndProc(ref m);
}
catch (Exception ex)
{
DisplayException(this.Name, ex);
throw ;
}
}
Для по какой-то причине, каждый раз, когда я подключаю устройство, будь то мышь или клавиатура или устройство, которое я разрабатываю, все это HID, значение WParam всегда равно 0x7;
Я проверил в DBT.h и значение 0x0007 является ...
#define DBT_DEVNODES_CHANGED 0x0007
/*
* Message = WM_DEVICECHANGE
* wParam = DBT_QUERYCHANGECONFIG
* lParam = 0
*
* sent to ask if a config change is allowed
*/....
Я не просто остановиться после первого приходит сообщение или я смотрю на всех сообщениях, и для каждой величины всегда 0x0007. Почему я никогда не вижу события DeviceAttached или DeviceRemoved?
У кого-нибудь с опытом USB есть идеи?