c++ - 使用 Windows 消息检测媒体插入驱动器

标签 c++ winapi usb removable-storage

我目前正在使用 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/

相关文章:

c++ - Linux C++ 库包含不同的 GCC 编译版本

c++ - 返回指向列表中对象的指针

c - BitBlt 绘制黑色方 block (Windows 7)

Android USB 主机和隐藏设备

c# - 如何在 C# 中读取 USB (PnP) 设备的 WMI 数据,在本例中为硬件 ID?

c++ - 在 pragma 并行指令中将数组声明为共享变量并稳定代码

c++ - 无法获得设备中的处理器速度

c++ - 所有者绘制的复选框

C++ lib查看器下载

c++ - 如何在 MAC OS c/c++ 中阻止 USB 存储设备