怎么捕获非标准usb设备插入或拔出消息?
来源:互联网 发布:新加坡版苹果6s网络 编辑:程序博客网 时间:2024/04/29 14:52
我用mfc开发,用OnDeviceChange(UINT nEventType,DWORD_PTR dwData)消息回调函数来处理消息,但是一个奇怪的问题就是某些非标准usb设备(比如一些电子钥匙),插入或拔出的时候始终只发送DBT_DEVNODES_CHANGED消息(即nEventType== 7),而且dwData始终为0;但是如果插入一些普通U盘,就可以截获到DBT_DEVICEARRIVAL、DBT_DEVICEREMOVECOMPLETE等消息。这是怎么回事那?
另外,我想滤除其它usb设备插入与拔出时产生的DBT_DEVNODES_CHANGED消息,我该怎么办?一定要写过滤驱动程序吗?还有其它办法没有?
多谢多谢!并祝愿大家十一和中秋双节快乐!
告诉你吧,这个得自己注册事件
BOOL CRSDlg::DoRegisterDeviceInterface(GUID InterfaceClassGuid, HDEVNOTIFY *hDevNotify)
{
DEV_BROADCAST_DEVICEINTERFACE NotificationFilter;
DWORD Err;
ZeroMemory( &NotificationFilter, sizeof(NotificationFilter) );
NotificationFilter.dbcc_size = 32;
// sizeof(DEV_BROADCAST_DEVICEINTERFACE);
NotificationFilter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
NotificationFilter.dbcc_classguid = InterfaceClassGuid;
*hDevNotify = RegisterDeviceNotification(GetSafeHwnd(), &NotificationFilter,
DEVICE_NOTIFY_WINDOW_HANDLE );
if(!*hDevNotify)
{
Err = GetLastError();
CString str;
str.Format(_T("RegisterDeviceNotification failed: %lx."),Err);
DT((LPCSTR)str);
return FALSE;
}
DT("RegisterDeviceNotification Successed :)");
//UnregisterDeviceNotification(*hDevNotify);
return TRUE;
}
至于InterfaceClassGuid这个参数,你得在你的驱动文件中查看它的guid啦
上面的方法保证绝对可以,你慢慢调试吧
- 怎么捕获非标准usb设备插入或拔出消息?
- 驱动中识别Usb设备插入拔出消息
- USB设备插入/拔出时重要的windows消息值
- C# 捕获USB插入,拔出事件
- USB设备插入与拔出的响应
- USB设备插入与拔出的响应
- QT 监听 USB 设备 插入、拔出动作
- 检测USB设备的插入和拔出
- 检测USB设备的插入和拔出
- USB设备插入和拔出的波形
- 检测USB设备插入和拔出
- Windows中USB设备插入的拔出和所产生的消息值
- Windows中USB设备插入的拔出和所产生的消息值
- WINCE接收设备插入拔出消息
- WINCE接收设备插入拔出消息
- 【转】WINCE接收设备插入拔出消息
- 总线驱动程序如何捕获到相关设备插入拔出事件
- 拔出USB设备
- 技术垄断与市场竞争
- 转义字符起引的“missing right parenthesis”错误
- 寒假感闻
- 使用replaceAll()遇到的问题
- 组合查询的实现
- 怎么捕获非标准usb设备插入或拔出消息?
- 终极移动——ThinkPad X系列笔记本电脑的前生今世
- Win2000命令全集----精品
- Windows 2000 CMD命令大全
- 小心了,Skype的中奖骗局
- WinAsm Studio V5.1.4.0 has been released
- 几种分页的写法
- 思科2007面临的5大挑战
- 明天超频一下我的2800+