如果标准USB设备能正常说明你的程序没问题。是不是你自己的USB设备驱动做的不标准?

解决方案 »

  1.   


    这种情况也可能有,但是还有一个情况,还有一款USB设备也是自己做的,但是用了CYPRESS提供的一个USB类对下位机进行访问,这款USB设备的拔插是可以访问的。而我前面所说的不能识别拔插的USB设备是用IOCONTROL对下位机访问的,所以我怀疑可以在PC软件上下手解决这个问题。又因为那个USB类无法在我前面提到的设备上应用,所以只能自己想办法解决。
      

  2.   

    上位机的设备处理消息,如你所述,但是也要USB设备驱动支持热插拔哦才行啊也就说,当设备插入拔出时,需要操作系统通知用户程序显然,你门的那个usb设备驱动程序没有考虑支持热插拔
      

  3.   

    afx_msg BOOL OnDeviceChange(
       UINT nEventType,
       DWORD_PTR dwData 
    )的参数是这样的。按道理系统是通过WM_DEVICECHANGE消息通知设备的PNP的。例如,
    BOOL CxxxClass::OnDeviceChange(UINT nEventType, DWORD dwData)
    {
          ......
          switch(nEventType)
          {
              ....
              case DBT_DEVICEARRIVAL
                 ....
          }
        
          PDEV_BROADCAST_DEVICEINTERFACE pdbch = (PDEV_BROADCAST_DEVICEINTERFACE)dwData;
          .....
    }
    如果设备支持热插拔,且消息进行了映射登记,应该就没有问题的。