<C/C++>USB设备注册与插拔监听
2015-07-09 16:19
555 查看
设备注册:
#include <DBT.h> #include <comdefs.h> void RegisterDevice() { const GUID GUID_DEVINTERFACE_LIST[] = { { 0xA5DCBF10, 0x6530, 0x11D2, { 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED } }, { 0x53f56307, 0xb6bf, 0x11d0, { 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b } }, { 0x4D1E55B2, 0xF16F, 0x11CF, { 0x88, 0xCB, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30 } }, /* HID */ { 0xad498944, 0x762f, 0x11d0, { 0x8d, 0xcb, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c } }}; HDEVNOTIFY hDevNotify; DEV_BROADCAST_DEVICEINTERFACE NotificationFilter; ZeroMemory( &NotificationFilter, sizeof(NotificationFilter) ); NotificationFilter.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE); NotificationFilter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE; for(int i=0; i<sizeof(GUID_DEVINTERFACE_LIST)/sizeof(GUID); i++) { NotificationFilter.dbcc_classguid = GUID_DEVINTERFACE_LIST[i]; hDevNotify = RegisterDeviceNotification(m_hWnd, &NotificationFilter, DEVICE_NOTIFY_WINDOW_HANDLE); if( !hDevNotify ) { MessageBox(m_hWnd, TEXT("注册USB设备通知失败"), TEXT("错误"), MB_ICONERROR); break; } } }
插拔监听:
LRESULT CShuajiBaoDlg::HandleCustomMessage(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)lParam; switch (uMsg) { case WM_DEVICECHANGE: if (lpdb) { bHandled = TRUE; if (wParam == DBT_DEVICEARRIVAL) { // 设备插入 } else if (wParam == DBT_DEVICEREMOVECOMPLETE) { // 设备拔出 } } break; } return 0; }
相关文章推荐
- 进程调度算法模拟程序设计C++
- 黑马程序员——C语言基础---复杂数据类型(变量,结构体,枚举)
- C/C++中常用的字符串处理函数和内存字符串函数
- C语言宏定义
- c++11版本list中sort用lambda表达式
- 数组中出现次数超过数组长度一半的值 分类: C/C++ 2015-07-09 15:38 142人阅读 评论(0) 收藏
- C++关键字大总结
- 学堂在线c++进阶编程题 11-2
- for、while循环及其变体
- C++面试题一大波
- C++ log
- C语言qsort
- c++使用ado连接 sqlserver使用注意点
- C++ 线程池
- C++ 字符函数库cctype
- VC++ 句柄要及时关闭否则经常性调用句柄会持续增加
- 【C语言 C++】简单关键字Register,Const,Static,Volatile,typedef,Define的理解
- C++ 逻辑表达式&& || !
- C++中的成员对象
- VC++ combo box控件的使用