云文件API中监控文件/文件夹的创建以及文件变化的回调

问题描述 投票:0回答:1

在云文件API中,平台针对回调类型调用相应的回调函数。 一切都有一个回调类型 - 读取、移动、删除、重命名、获取列表 - 但是我无法找到任何用于监视同步根下文件和文件夹创建的回调。

我注意到

CfConvertToPlaceholder
将普通文件/目录转换为占位符文件,但是应用程序如何知道或操作系统如何告诉应用程序已创建新文件/文件夹?

我们如何使用云文件 API 来完成此任务?

c++ winapi c++-winrt virtualfilesystem cloud-files-api
1个回答
1
投票

正如Simon在评论中提到的,CfApi在这方面是不完整的(可能微软确实计划进行相应的回调,但他们从未完成这部分)。您需要采用外部手段来监视同步根内发生的更改。这可以是 ReadDirectoryChangesW() Windows API 函数或文件系统过滤器驱动程序。 WinAPI 函数更简单,但也有一些怪癖。驱动方式更加可靠,并且在一定程度上消除了对CfApi的需要。例如,我们的 CBFS Filter 产品有一个相对较小的 Placeholder 示例,它基本上完成了 CfApi 提供的所有非视觉内容。 CfApi 的唯一好处是 Explorer 集成 -sync.root 成为命名空间的一部分并且单独可见(包括用于水合状态的自定义列)。 UI 部分不是我们想要在示例中复制的内容(尽管使用我们的 CBFS Shell 产品也可以做到这一点)。

还有一件事需要考虑 - CfApi 确实会通知您有关重命名和删除的信息,但在开发 CBFS Sync 产品时,我们发现“谢谢,但不,谢谢” - 我们更好地根据监测结果。 CfApi 发送的通知在多线程和其他方面存在一些大问题(我已经不记得细节了)。

© www.soinside.com 2019 - 2024. All rights reserved.