【问题标题】:Windows Portable Device - Notify when a new file is created / copied / deletedWindows 便携式设备 - 在创建/复制/删除新文件时通知
【发布时间】:2017-03-07 12:28:06
【问题描述】:

是否可以在使用 (IPortableDeviceEventCallback) 从存储设备中删除/复制文件时收到通知。

到目前为止,我只在闪存驱动器断开连接或用户在外部更改其名称时收到通知。

编辑:我有兴趣接收WPD_EVENT_OBJECT_ADDEDevent。

IPortableDeviceCapabilities::GetSupportedEvents

显示支持所需的事件,但在新文件复制时没有发送任何内容

【问题讨论】:

    标签: c++ winapi usb wpd


    【解决方案1】:

    WPD_EVENT_OBJECT_ADDED 对应于 MTP 事件 ObjectAdded。 https://msdn.microsoft.com/en-us/microsoft-r/dn932706

    我认为真正发送的事件取决于具体便携式设备上 MTP 协议的具体实现。

    我相信 WPD API 的主要目的是管理便携式设备,如手机和音乐播放器,使用 USB 闪存驱动器的访问和方法仅作为某种兼容性层导出,可能不包含所有功能。

    如果您不想从实现 MTP 的便携式设备接收此类通知,而仅从 USB 闪存驱动器接收此类通知,则应查看文件系统微过滤器的示例 https://msdn.microsoft.com/en-us/windows/hardware/drivers/ifs/file-system-minifilter-drivers

    他们可以为您提供所需的回调。

    【讨论】:

    • 正如我的“编辑”片段所述,闪存驱动程序确实支持 Object_Added 事件。那它怎么从来不发送呢?
    • 至于“支持”在这里仅表示抽象层,我认为这取决于您如何测试它。我已经用我的闪存盘在 MS WPD API 示例上尝试过这种情况,似乎只有当您使用 WPD 方法处理它的内容时才会触发 WPD 事件:通过 IPortableDevice 方法传输内容等等。但是该闪存作为 USB 存储设备的操作没有任何事件,例如从资源管理器创建文件夹等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    • 2011-01-29
    • 2020-07-22
    • 2013-05-19
    相关资源
    最近更新 更多