Я пытаюсь разработать приложение на C #, которое может взаимодействовать с USB HID. Я переопределил мой метод WndProc, чтобы он перехватывал все события WM_DEVICECHANGE и передавал метод DeviceChange методу OnDeviceChange (этот код фактически заимствован у Яна Аксельсона), который выглядит следующим образом ....
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? Есть идеи?