我想截获usb设备将要拔出的消息我用过WindowProc函数用DeviceChangede的一系列消息可以得到u盘的插入与删除的消息,但当u盘不能正常弹出时,即当弹出“通用卷无法”却无法截获这种状态的消息,
如果硬拔的话,可以截获U盘拔出的消息。 因为我用另一个程序监控U盘,所以当想拔出设备时,总是报不能正常删除。我现在想截获用户点击“安全删除USB   MASS   STORAGE”或U盘正在被拔出的消息,
然后关闭我的监控程序,U盘就可以正常被拔出了。 不知我说的是否明白?谢谢

解决方案 »

  1.   

    主要响应消息如下:... ...
    if(Message.Msg == WM_DEVICECHANGE) //帮助里面有这个消息的详细说明
    {
       switch(Message.WParam)
       {  
          case DBT_DEVICEARRIVAL:
          {
              PDEV_BROADCAST_VOLUME dbvDev = (DEV_BROADCAST_VOLUME *)Message.LParam;
              if(dbvDev->dbcv_flags == 0)
              {   
                 Message(NULL,"插入USB设备!","提醒",MB_OK);
              }
              break;
           }
           case DBT_DEVICEREMOVECOMPLETE:
                Message(NULL,"你的USB设备被拔出!","提醒",MB_OK);
           break;
           default:
           break;
    }
      

  2.   


    当USB设备被拔出后 当然会触发参数为DBT_DEVICEREMOVECOMPLETE 的WM_DEVICECHANGE消息。现在是将要弹出,而还没有弹出,当然 就不会有参数为DBT_DEVICEREMOVECOMPLETE 的WM_DEVICECHANGE消息。
      

  3.   

    头文件:#include <Dbt.h>
    http://topic.csdn.net/u/20081208/23/46fe7722-01bd-45e8-ae08-38f06d117c05.html
      

  4.   

    难道是 DBT_DEVICEREMOVEPENDING ?
      

  5.   

    在DeviceChange中响应DBT_DEVICEREMOVEPENDING
      

  6.   

    DBT_DEVICEREMOVEPENDING  
    Device is about to be removed. Cannot be denied.
    这个消息不就是将要被拔出的消息吗
      

  7.   

    感谢各位的支持。
    问题还是没能解……
    谁要是有解决方案了记得给我说一声。[email protected]谢谢。