我目前正在使用 WM_DEVICECHANGE 在新的 USB 驱动器连接到计算机时收到通知。这对于像拇指驱动器这样的设备非常有用,一旦设备到达,它就可以从中读取文件。对于像 SD 读卡器这样的设备,它不会,因为当设备连接时会发送一次消息,但当用户实际将卡插入设备时不会发送任何消息。
是否可以在不使用轮询的情况下检测新媒体插入现有 USB 设备?
最佳答案
我几周前刚做过这个。从技术上讲,RegisterDeviceNotification 路由是正确的方法,但它需要大量的工作才能正确。但是,Windows 资源管理器已经为您完成了所有艰巨的工作。只需使用 SHChangeNotifyRegister使用 SHCNE_DRIVEADD/SHCNE_DRIVEREMOVED/SHCNE_MEDIAINSERTED/SHCNE_MEDIAREMOVED。请注意,此方法依赖于 Shell Hardware Detection 服务(或它的任何名称),但它比尝试自己重新实现该功能要容易得多。
关于c++ - 使用 Windows 消息检测媒体插入驱动器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2420131/