USB 设备插拔事件处理
Windows 系统下,设备连接至电脑或从电脑移除,系统会广播一条 WM_DEVICECHANGE 消息到所有应用程序,在程序的消息处理函数中可以对事件进行相应。
1: class CMainDlg : public CDialogImpl<CMainDlg> {
2: public:
3: enum { IDD = IDD_MAINDLG };
4:
5: BEGIN_MSG_MAP(CMainDlg)
6: ......
7: MESSAGE_HANDLER(WM_DEVICECHANGE, OnDeviceChange)
8: END_MSG_MAP()
9:
10: LRESULT OnDeviceChange(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) {
11: if(wParam == DBT_DEVICEARRIVAL) {
12: PDEV_BROADCAST_HDR pHdr = (PDEV_BROADCAST_HDR)lParam;
13: if(pHdr->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE) {
14: PDEV_BROADCAST_DEVICEINTERFACE pDevInf = (PDEV_BROADCAST_DEVICEINTERFACE)pHdr;
15: CString dbcc_name = pDevInf->dbcc_name;
16: if(dbcc_name.Find(_T("VID_xxxx&PID_xxxx")) != -1) {
17: MessageBox("特定设备已插入");
18: }
19: }
20: } else if(wParam == DBT_DEVICEREMOVECOMPLETE) {
21: PDEV_BROADCAST_HDR pHdr = (PDEV_BROADCAST_HDR)lParam;
22: if(pHdr->dbch_devicetype == DBT_DEVTYP_DEVICEINTERFACE) {
23: PDEV_BROADCAST_DEVICEINTERFACE pDevInf = (PDEV_BROADCAST_DEVICEINTERFACE)pHdr;
24: CString dbcc_name = pDevInf->dbcc_name;
25: if(dbcc_name.Find(_T("Ven_USBKey&Prod_USBKey")) != -1) {
26: MessageBox("特定设备已拔出");
27: }
28: }
29: }
30: return 0;
31: }
32: }
USB 设备插拔事件处理的更多相关文章
- USB线插拔检测使用UEventObserver检测uevent事件的分析
说实话这玩样儿的代码量真的很少,大家如果能耐得住性子啃一会儿也就能撸懂了. 在这之前研究USB线插拔的时候就知道了有这么个东西,当时也就看了看,但没做什么笔记.最近想用起来,却发现就只有个名字在记忆中 ...
- Android中监控USB的插拔
一.需求 在Android应该开发过程中,用到了USB通讯,需要应用监控USB设备的插入和拔出,从而刷新USB设备列表. 二.实现 在使用时,需要register和unregister. 通过UsbD ...
- android6.0 外部存储设备插拔广播以及获取路径(U盘)【转】
本文转载自:https://blog.csdn.net/zhouchengxi/article/details/53982222 这里我将U盘作为例子来说明解析. android4.1版本时U盘插拔时 ...
- 在树莓派下对多个串口转USB设备进行设备名称绑定操作
在开发过程中,需要用一个树莓派链接多个串口转USB设备(GPS模块,数传模块等),在树莓派linux系统环境下,USB串口设备的命名规则是 /dev/ttyUSB0 ,/dev/ttyUSB1,/de ...
- C# 上位机的USB设备拔插检测
我们做USB通信时,通信成功后,往往要检测USB设备的拔插状态,这里就USB拔插进行一下说明. 参考:https://www.imooc.com/article/17438 先说明一下,我这里只是用C ...
- C#中USB转串口的拔插捕获
// usb消息定义 public const int WM_DEVICE_CHANGE = 0x219; public const int DBT_DEVICEARRIVAL = 0x8000; p ...
- QTC++监控USB插拔
#if defined(Q_OS_WIN) #include <qt_windows.h> #include <QtCore/qglobal.h> #include <d ...
- 通过解读 WPF 触摸源码,分析 WPF 插拔设备触摸失效的问题(问题篇)
在 .NET Framework 4.7 以前,WPF 程序的触摸处理是基于操作系统组件但又自成一套的,这其实也为其各种各样的触摸失效问题埋下了伏笔.再加上它出现得比较早,触摸失效问题也变得更加难以解 ...
- Linux下的硬件驱动——USB设备(转载)
usb_bulk_msg函数 当对usb设备进行一次读或者写时,usb_bulk_msg 函数是非常有用的; 然而, 当你需要连续地对设备进行读/写时,建议你建立一个自己的urbs,同时将urbs 提 ...
随机推荐
- ERRO错误解决方案整理
1.chorm访问本地数据出现跨域问题 Cross origin requests are only supported for protocol schemes: http, data, chrom ...
- ps遇到的问题及笔记
1. ps软件图层面板中不显示缩略图 打开软件后,任意打开一个文件,再打开图层面板(直接按F7也可),点图层面板右上角的小三角后有一个新的面板出现,点下面的"面板选项"弹出一个面板 ...
- 第一百二十五节,JavaScript,XML
JavaScript,XML 学习要点: 1.IE中的XML 2.DOM2中的XML 3.跨浏览器处理XML 随着互联网的发展,Web应用程序的丰富,开发人员越来越希望能够使用客户端来操作XML技术. ...
- 【锋利的Jquery】读书笔记一
封面镇楼: 读这本书应该是7月份,二周读完,经典的好书,一直没怎么复习.so....温故而知新下. 一.jquery的风格 链式风格 <div class="box"> ...
- openwrt 更改默认主题
BB 版本默认的主题为 bootstrap,想要修改为其他的主题,可以按照如下方法修改: 1.查看可以使用的主题. "make menuconfig" ---> " ...
- 每天点滴的进行,css+div简单布局...布局
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 手机浏览器wap网页点击链接触发颜色区块的问题解决办法
引子 在做HTML5 WAP网页的时候,一行内容做了2个链接,点击一个标签的时候,整个颜色块会闪一下,影响美观.需求针对这种情况来问我,能否把这个一闪的颜色去掉.我当时就想,这个怎么去?那我也不好直接 ...
- 定时帧:NSTimer和CADisplayLink
学习参考了:http://www.jianshu.com/p/c35a81c3b9ebhttps://zsisme.gitbooks.io/ios-/content/chapter11/frame-t ...
- H264中的MapUnits
1 MapUnits 在FMO(Flexible Macroblock ordering)时,从宏块到条带组的映射是以MapUnits为基本单位,MapUnits可能为宏块,也可能是上下两个宏块(见下 ...
- Android Game Examples
Game2 using UnityEngine; using System.Collections; public class Game2_Player : MonoBehaviour { publi ...