未正确检测到卷装/卸载

时间:2015-03-09 21:33:29

标签: winapi

所以,昨天我问起挂载点检测是怎么做的, 我设法让它运行一些,但有些消息似乎没有通过。

使用找到的代码in this question (click here) written by the user Aid Vllasaliu (me) 只要安装了指定的挂载点(在本例中为“E:”),Windows就会通知我的应用程序......有时......

挂载点“E:”在我的情况下是插入USB SD卡读卡器的SD卡。

问题:

  1. 在没有插入SD卡的情况下插入USB SD卡读卡器会发出GUID_IO_VOLUME_MOUNT通知,并且每隔一两分钟就会发出一次

  2. 插入USB SD卡读卡器后,我将SD卡插入其中并收到以下通知GUID_IO_VOLUME_PHYSICAL_CONFIGURATION_CHANGEGUID_IO_VOLUME_FVE_STATUS_CHANGEGUID_IO_VOLUME_MOUNT 并且1分钟 - GUID_IO_VOLUME_MOUNT - 更新停止。这似乎是对的。

  3. 当我弹出SD卡时,我收到GUID_IO_VOLUME_LOCKGUID_IO_VOLUME_UNLOCK通知。嗯...我不应该也收到GUID_IO_VOLUME_DISMOUNT通知吗?或者表明挂载点已卸下的东西?此外,1分钟 - GUID_IO_VOLUME_MOUNT - 更新再次开始。

  4. 当SD卡从USB SD卡读卡器中取出并再次插入,同时保持SD卡读卡器本身插入时,不再收到有关安装点的通知。我必须物理断开SD卡读卡器并重新连接。为什么呢?

  5. 问题

    为什么在卸载,弹出或以任何方式移动卷时,Windows不会发送任何通知?

    到目前为止我做了什么

    我已阅读,重新阅读并重新阅读有关设备事件的MSDN文章,以及在线搜索示例代码,以及有关设备事件的文章,甚至查看C ++代码以便完全理解可能会导致我遇到的问题。

1 个答案:

答案 0 :(得分:0)

我正在研究这个问题。我的阅读(和实验)似乎表明您只能收到GUID_IO_VOLUME_DISMOUNT个通知已安装的设备。换句话说,您只能请求已挂载的特定卷的通知。它不是所有设备的一般通知。

我认为为了使其适合您的情况,您可以在安装后将其注册为挂载点,USB SD卡。我还有更多的实验要做。