C# 设备附加的消息永远不会出现
我正在尝试开发一个可以与USB HID通信的C#应用程序。我已经重写了我的WndProc方法,以便is捕获所有WM_DEVICECHANGE事件,并将DEVICECHANGE方法传递给OnDevicChange方法(此代码实际上是从Jan Axelson处借用的),如下所示C# 设备附加的消息永远不会出现,c#,usb,setupapi,C#,Usb,Setupapi,我正在尝试开发一个可以与USB HID通信的C#应用程序。我已经重写了我的WndProc方法,以便is捕获所有WM_DEVICECHANGE事件,并将DEVICECHANGE方法传递给OnDevicChange方法(此代码实际上是从Jan Axelson处借用的),如下所示 protected override void WndProc( ref Message m ) { try { // The OnDeviceChange r
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。
为什么我从来没有看到过设备附加或设备移动的事件
有USB经验的人有什么想法吗?您需要注册您的设备才能接收连接和删除的设备。看见这是一个很好的例子。在调试会话中,Visual Studio可以忽略消息 我不明白为什么
DBT\u DEVICEARRIVAL
和DBT\u devicemovecomplete
都漏掉了。只需在线上取消设置断点
if(m.Msg==DeviceManagement.WM\u DEVICECHANGE)
我已经回答了,因为邮局没有关门