OnDeviceChange这个可以检测USB接口的插拔 但是有一个问题就是一次插拔会调用很多次OnDeviceChange这个函数 有人知道原因嘛 我想让OnDeviceChange只调用一次OnDeviceChange

解决方案 »

  1.   

    根据每次通知过来的DEVICE属性,来判断是不是你需要关心的那个硬件即可,处理完后,其他通知忽略掉就行。
      

  2.   

    哈哈  我不知道  当时我遇见  USB接口插一次 我就初始化接口一次是 当时也想过OnDeviceChange 不过不好弄       后来我就  不断的向接口写入数据 写入成功会返回true 失败false  如果插好了 是可以写的  
      

  3.   

    OnDeviceChange里面有许多DBT事件,根据DBT记号来判断诸如DBT_DEVICEQUERYREMOVE和DBT_DEVNODES_CHANGE链接
      

  4.   

    参照一下 微软的usbview 源代码 不过需要开个线程来检测 USB状态
      

  5.   

    事件后面都会有wparam Lparam
    ,根据wparam来确定
    if(wparam==DBT_DEVICEARRIVAL)
    {
     
      

  6.   

    我加DBT判断了 一次插拔一样会多次调用呀if(wParam==DBT_DEVICEARRIVAL || wParam==DBT_DEVICEREMOVECOMPLETE){
    //DeviceChangeTag=false;
    monitorUSBKey.OnDeviceChange((LPVOID)this);
    //DeviceChangeTag=true;
    }