所以,昨天我问起挂载点检测是怎么做的, 我设法让它运行一些,但有些消息似乎没有通过。
使用找到的代码in this question (click here) written by the user Aid Vllasaliu (me) 只要安装了指定的挂载点(在本例中为“E:”),Windows就会通知我的应用程序......有时......
挂载点“E:”在我的情况下是插入USB SD卡读卡器的SD卡。
问题:
在没有插入SD卡的情况下插入USB SD卡读卡器会发出GUID_IO_VOLUME_MOUNT
通知,并且每隔一两分钟就会发出一次
插入USB SD卡读卡器后,我将SD卡插入其中并收到以下通知GUID_IO_VOLUME_PHYSICAL_CONFIGURATION_CHANGE
,GUID_IO_VOLUME_FVE_STATUS_CHANGE
和GUID_IO_VOLUME_MOUNT
并且1分钟 - GUID_IO_VOLUME_MOUNT
- 更新停止。这似乎是对的。
当我弹出SD卡时,我收到GUID_IO_VOLUME_LOCK
和GUID_IO_VOLUME_UNLOCK
通知。嗯...我不应该也收到GUID_IO_VOLUME_DISMOUNT
通知吗?或者表明挂载点已卸下的东西?此外,1分钟 - GUID_IO_VOLUME_MOUNT
- 更新再次开始。
当SD卡从USB SD卡读卡器中取出并再次插入,同时保持SD卡读卡器本身插入时,不再收到有关安装点的通知。我必须物理断开SD卡读卡器并重新连接。为什么呢?
问题
为什么在卸载,弹出或以任何方式移动卷时,Windows不会发送任何通知?
到目前为止我做了什么
我已阅读,重新阅读并重新阅读有关设备事件的MSDN文章,以及在线搜索示例代码,以及有关设备事件的文章,甚至查看C ++代码以便完全理解可能会导致我遇到的问题。
答案 0 :(得分:0)
我正在研究这个问题。我的阅读(和实验)似乎表明您只能收到GUID_IO_VOLUME_DISMOUNT个通知已安装的设备。换句话说,您只能请求已挂载的特定卷的通知。它不是所有设备的一般通知。
我认为为了使其适合您的情况,您可以在安装后将其注册为挂载点,USB SD卡。我还有更多的实验要做。