zoukankan      html  css  js  c++  java
  • 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: }

  • 相关阅读:
    python条件判断之直接加数字
    pythontip题目解答
    twitter api取出的日期格式化
    MySQL Archive存储引擎
    Python Json序列化
    Python 装饰器
    Python 匿名函数
    Python 函数
    Python 字符编码
    Python 文件操作
  • 原文地址:https://www.cnblogs.com/mforestlaw/p/3289572.html
Copyright © 2011-2022 走看看